@mediusinc/mng-commons 5.3.0-rc.1 → 5.3.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/core/data-list/filter-metadata.model.d.ts +20 -0
  2. package/core/helpers/number.d.ts +5 -0
  3. package/core/helpers/type-helpers.d.ts +1 -0
  4. package/core/index.d.ts +2 -0
  5. package/core/provide.d.ts +3 -2
  6. package/core/services/tokens/module-config.token.d.ts +7 -6
  7. package/esm2022/core/data-list/data-list-params-helpers.mjs +3 -1
  8. package/esm2022/core/data-list/filter-metadata.model.mjs +2 -0
  9. package/esm2022/core/helpers/date.mjs +2 -2
  10. package/esm2022/core/helpers/number.mjs +19 -0
  11. package/esm2022/core/helpers/type-helpers.mjs +1 -1
  12. package/esm2022/core/index.mjs +3 -1
  13. package/esm2022/core/pipes/boolean.pipe.mjs +7 -1
  14. package/esm2022/core/provide.mjs +4 -3
  15. package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
  16. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +2 -3
  17. package/esm2022/filter/descriptors/filter.descriptor.mjs +76 -31
  18. package/esm2022/filter/models/filter.model.mjs +6 -1
  19. package/esm2022/form/components/date-range/date-range.component.mjs +45 -14
  20. package/esm2022/form/components/dropdown/dropdown.component.mjs +77 -93
  21. package/esm2022/form/components/number-range/number-range.component.mjs +29 -12
  22. package/esm2022/table/api/descriptors/column.descriptor.mjs +2 -1
  23. package/esm2022/table/api/descriptors/table.descriptor.mjs +11 -20
  24. package/esm2022/table/api/models/table-columns.model.mjs +1 -1
  25. package/esm2022/table/api/models/table.model.mjs +1 -1
  26. package/esm2022/table/components/column-filter/column-filter.component.mjs +396 -0
  27. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +52 -0
  28. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +197 -0
  29. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +135 -0
  30. package/esm2022/table/components/table/table.component.mjs +34 -25
  31. package/esm2022/table/helpers/filters.mjs +297 -0
  32. package/esm2022/table/index.mjs +13 -2
  33. package/esm2022/table/models/filter.model.mjs +2 -0
  34. package/esm2022/table/pipes/filter-value.pipe.mjs +77 -0
  35. package/esm2022/table/provide.mjs +19 -0
  36. package/esm2022/table/services/data-list.service.mjs +1 -1
  37. package/esm2022/table/services/table-feature-config.token.mjs +3 -0
  38. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
  39. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
  40. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +1 -1
  41. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  42. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +11 -13
  43. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -2
  44. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -4
  45. package/fesm2022/mediusinc-mng-commons-core.mjs +32 -4
  46. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  47. package/fesm2022/mediusinc-mng-commons-filter.mjs +81 -32
  48. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  49. package/fesm2022/mediusinc-mng-commons-form.mjs +149 -117
  50. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  51. package/fesm2022/mediusinc-mng-commons-table-api.mjs +11 -19
  52. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  53. package/fesm2022/mediusinc-mng-commons-table.mjs +832 -359
  54. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  55. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +10 -12
  56. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  57. package/fesm2022/mediusinc-mng-commons-tableview.mjs +5 -5
  58. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  59. package/filter/descriptors/filter.descriptor.d.ts +60 -16
  60. package/filter/models/filter.model.d.ts +4 -0
  61. package/form/components/date-range/date-range.component.d.ts +9 -3
  62. package/form/components/dropdown/dropdown.component.d.ts +6 -7
  63. package/form/components/number-range/number-range.component.d.ts +8 -4
  64. package/i18n/en.json +32 -0
  65. package/i18n/sl.json +32 -0
  66. package/package.json +7 -7
  67. package/table/api/descriptors/table.descriptor.d.ts +7 -7
  68. package/table/api/models/table-columns.model.d.ts +3 -3
  69. package/table/api/models/table.model.d.ts +0 -12
  70. package/table/components/{column-filter-full/column-filter-full.component.d.ts → column-filter/column-filter.component.d.ts} +23 -38
  71. package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +20 -0
  72. package/table/components/filter/filter-form/filter-form.component.d.ts +53 -0
  73. package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +35 -0
  74. package/table/components/table/table.component.d.ts +10 -7
  75. package/table/helpers/filters.d.ts +31 -0
  76. package/table/index.d.ts +10 -1
  77. package/table/models/filter.model.d.ts +24 -0
  78. package/table/pipes/filter-value.pipe.d.ts +19 -0
  79. package/table/provide.d.ts +8 -0
  80. package/table/services/data-list.service.d.ts +3 -2
  81. package/table/services/table-feature-config.token.d.ts +6 -0
  82. package/tableview/api/editor/descriptors/field.descriptor.d.ts +3 -3
  83. package/tableview/api/editor/models/editor-fields.model.d.ts +4 -4
  84. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -6
  85. package/version-info.json +5 -5
  86. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +0 -655
@@ -0,0 +1,20 @@
1
+ import { FilterMetadata } from 'primeng/api';
2
+ import { FilterMatchModeExtendedType } from '../data-list/filter-match.model';
3
+ export interface CommonsFilterMetadata extends Omit<FilterMetadata, 'matchMode'> {
4
+ /**
5
+ * The value used for display.
6
+ */
7
+ displayValue?: any;
8
+ /**
9
+ * The match mode for display.
10
+ */
11
+ displayMatchMode?: FilterMatchModeExtendedType;
12
+ /**
13
+ * Overridden PrimeNg FilterMetadata to have more specific type.
14
+ */
15
+ matchMode?: FilterMatchModeExtendedType;
16
+ /**
17
+ * Case sensitive filter flag.
18
+ */
19
+ caseSensitive?: boolean;
20
+ }
@@ -0,0 +1,5 @@
1
+ export declare function fromAngularNumberFormatToFractions(format: string): {
2
+ integer: number;
3
+ fractionsMin: number;
4
+ fractionsMax: number;
5
+ };
@@ -6,6 +6,7 @@ export type KeyofAndOfType<Type, PropertyType> = {
6
6
  [K in keyof Type]: NonNullable<Type[K]> extends NonNullable<PropertyType> ? K : never;
7
7
  }[keyof Type];
8
8
  export type ArrayItemType<T> = NonNullable<T> extends Array<infer U> ? U : T;
9
+ export type SingleOrArrayType<T> = T | Array<T>;
9
10
  export type IdType = number | string;
10
11
  export type PrimitiveType = string | boolean | number;
11
12
  export type PropertyType = PrimitiveType | Date | EnumType;
package/core/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './components/pages/not-found/not-found.page.component';
6
6
  export * from './data-list/data-list.model';
7
7
  export * from './data-list/data-list-params-helpers';
8
8
  export * from './data-list/filter-match.model';
9
+ export * from './data-list/filter-metadata.model';
9
10
  export * from './data-providers/base.data-provider';
10
11
  export * from './data-providers/base-data-provider.factory';
11
12
  export * from './data-providers/lookup.data-provider';
@@ -28,6 +29,7 @@ export * from './error/error-helpers';
28
29
  export * from './helpers/coercion';
29
30
  export * from './helpers/date';
30
31
  export * from './helpers/notification';
32
+ export * from './helpers/number';
31
33
  export * from './helpers/object';
32
34
  export * from './helpers/route';
33
35
  export * from './helpers/string';
package/core/provide.d.ts CHANGED
@@ -2,8 +2,9 @@ import { Provider } from '@angular/core';
2
2
  import { CommonsModuleConfig } from './services/tokens/module-config.token';
3
3
  export declare enum CommonsFeatureTypeEnum {
4
4
  Layout = 0,
5
- Tableview = 1,
6
- DataApiAsClassV1 = 2
5
+ Table = 1,
6
+ Tableview = 2,
7
+ DataApiAsClassV1 = 3
7
8
  }
8
9
  export interface CommonsFeature {
9
10
  type: CommonsFeatureTypeEnum;
@@ -44,12 +44,13 @@ export interface CommonsModuleConfig {
44
44
  skipJsonSourceInit?: boolean;
45
45
  jsonSourceEnableEnvProd?: boolean;
46
46
  };
47
- serialization?: {
48
- dateTimeInUtc?: boolean;
49
- dateTimeWithTimezone?: boolean;
50
- dateTimeWithMillis?: boolean;
51
- filtersDateOnlyDisabled?: boolean;
52
- };
47
+ serialization?: CommonsSerializationConfig;
53
48
  log?: LogConfig;
54
49
  }
50
+ export interface CommonsSerializationConfig {
51
+ dateTimeInUtc?: boolean;
52
+ dateTimeWithTimezone?: boolean;
53
+ dateTimeWithMillis?: boolean;
54
+ filtersDateOnlyDisabled?: boolean;
55
+ }
55
56
  export declare const COMMONS_MODULE_CONFIG_IT: InjectionToken<CommonsModuleConfig>;
@@ -31,10 +31,12 @@ export function fromTableLoadToDataListParams(event) {
31
31
  if (Array.isArray(eventFilter)) {
32
32
  filter.value = eventFilter[0].value;
33
33
  filter.matchMode = eventFilter[0].matchMode;
34
+ filter.caseSensitive = eventFilter[0].caseSensitive;
34
35
  }
35
36
  else if (eventFilter !== undefined) {
36
37
  filter.value = eventFilter.value;
37
38
  filter.matchMode = eventFilter.matchMode;
39
+ filter.caseSensitive = eventFilter.caseSensitive;
38
40
  }
39
41
  return { ...acc, [key]: filter };
40
42
  }, {});
@@ -415,4 +417,4 @@ export function dataListParamsFilterValueToUrlString(value, allowNull = false) {
415
417
  }
416
418
  return String(value);
417
419
  }
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LXBhcmFtcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXJEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQXlCO0lBQ25FLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFbEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFL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QUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLEtBQUssWUFBWSxJQUFJO1lBQUUsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2FBQzdFLENBQUM7WUFDRixNQUFNLElBQUksb0JBQW9CLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BhcmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUYWJsZUxhenlMb2FkRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBmcm9tICcuLi9lcnJvci9lcnJvci5tb2RlbCc7XG5pbXBvcnQge2RhdGVUb0lzb1N0cmluZ30gZnJvbSAnLi4vaGVscGVycy9kYXRlJztcbmltcG9ydCB7RGF0YUxpc3RGaWx0ZXIsIERhdGFMaXN0RmlsdGVyVmFsdWVUeXBlLCBEYXRhTGlzdEZpbHRlcnNUeXBlLCBEYXRhTGlzdFBhcmFtc30gZnJvbSAnLi9kYXRhLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJNYXRjaE1vZGV9IGZyb20gJy4vZmlsdGVyLW1hdGNoLm1vZGVsJztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFRhYmxlTGF6eUxvYWRFdmVudCB0byBEYXRhTGlzdFBhcmFtcy5cbiAqXG4gKiBAcGFyYW0ge1RhYmxlTGF6eUxvYWRFdmVudH0gZXZlbnQgLSBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgZGF0YSB0byBjb252ZXJ0LlxuICogQHJldHVybiB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIGNvbnZlcnRlZCBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVGFibGVMb2FkVG9EYXRhTGlzdFBhcmFtcyhldmVudDogVGFibGVMYXp5TG9hZEV2ZW50KTogRGF0YUxpc3RQYXJhbXMge1xuICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7fTtcblxuICAgIGlmIChldmVudC5maXJzdCAhPSBudWxsKSB7XG4gICAgICAgIHBhcmFtcy5vZmZzZXQgPSBldmVudC5maXJzdDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnJvd3MgIT0gbnVsbCkge1xuICAgICAgICBwYXJhbXMubGltaXQgPSBldmVudC5yb3dzO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXZlbnQuZ2xvYmFsRmlsdGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXJhbXMuc2VhcmNoID0gZXZlbnQuZ2xvYmFsRmlsdGVyO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShldmVudC5nbG9iYWxGaWx0ZXIpICYmIGV2ZW50Lmdsb2JhbEZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcmFtcy5zZWFyY2ggPSBldmVudC5nbG9iYWxGaWx0ZXIuam9pbignLCcpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50Lm11bHRpU29ydE1ldGEpICYmIGV2ZW50Lm11bHRpU29ydE1ldGEubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc29ydCA9IGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKG0gPT4gKHtwcm9wZXJ0eTogbS5maWVsZCwgYXNjZW5kaW5nOiBtLm9yZGVyID49IDB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBPYmplY3Qua2V5cyhldmVudC5maWx0ZXJzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXI6IERhdGFMaXN0RmlsdGVyID0ge307XG4gICAgICAgICAgICBjb25zdCBldmVudEZpbHRlciA9IGV2ZW50LmZpbHRlcnM/LltrZXkgYXMga2V5b2Ygb2JqZWN0XTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50RmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGV2ZW50RmlsdGVyWzBdLnZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5tYXRjaE1vZGUgPSBldmVudEZpbHRlclswXS5tYXRjaE1vZGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBldmVudEZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIubWF0Y2hNb2RlID0gZXZlbnRGaWx0ZXIubWF0Y2hNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsuLi5hY2MsIFtrZXldOiBmaWx0ZXJ9O1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gcGFyYW1ldGVycyB0byBVUkwgcXVlcnkgcGFyYW1ldGVycy5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIHNvcnQgcXVlcnkgbGFuZ3VhZ2U6IGBhc2M6cHJvcDEsZGVzYzpwcm9wMmAsIC4uLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfG51bGx9IGRlZmF1bHRzIC0gVGhlIGRlZmF1bHQgcGFyYW1ldGVycyB1c2VkIGlmIG5vIG1hdGNoaW5nIHByb3BlcnR5IGluIHBhcmFtcyBpcyBhdmFpbGFibGUuIERlZmF1bHRzIHRvIHsgbGltaXQ6IDI1LCBvZmZzZXQ6IDAgfSBpZiBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyB7UGFyYW1zfSAtIFRoZSBVUkwgcXVlcnkgcGFyYW1ldGVycyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc1RvVXJsUXVlcnkoXG4gICAgcGFyYW1zOiBEYXRhTGlzdFBhcmFtczxhbnksIGFueT4sXG4gICAgZGVmYXVsdHM6IERhdGFMaXN0UGFyYW1zPGFueSwgYW55PiB8IG51bGwgPSB7XG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgICAgb2Zmc2V0OiAwXG4gICAgfVxuKTogUGFyYW1zIHtcbiAgICBjb25zdCB1cmxQYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHBhcmFtcy5saW1pdCAmJiBwYXJhbXMubGltaXQgIT09IGRlZmF1bHRzPy5saW1pdCkge1xuICAgICAgICB1cmxQYXJhbXNbJ2xpbWl0J10gPSBwYXJhbXMubGltaXQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMub2Zmc2V0ICYmIHBhcmFtcy5vZmZzZXQgIT09IGRlZmF1bHRzPy5vZmZzZXQpIHtcbiAgICAgICAgdXJsUGFyYW1zWydvZmZzZXQnXSA9IHBhcmFtcy5vZmZzZXQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5zZWFyY2ggIT09IGRlZmF1bHRzPy5zZWFyY2gpIHtcbiAgICAgICAgdXJsUGFyYW1zWydxJ10gPSBwYXJhbXMuc2VhcmNoO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNvcnQgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydCkgJiYgcGFyYW1zLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWZhdWx0cz8uc29ydCA9PSBudWxsIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShkZWZhdWx0cy5zb3J0KSB8fFxuICAgICAgICAgICAgZGVmYXVsdHMuc29ydC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0Lmxlbmd0aCAhPT0gZGVmYXVsdHMuc29ydC5sZW5ndGggfHxcbiAgICAgICAgICAgIGRlZmF1bHRzLnNvcnQuc29tZSgoZHMsIGlkeCkgPT4gZHMucHJvcGVydHkgIT09IHBhcmFtcy5zb3J0IVtpZHhdLnByb3BlcnR5IHx8IChkcy5hc2NlbmRpbmcgPz8gdHJ1ZSkgIT09IChwYXJhbXMuc29ydCFbaWR4XS5hc2NlbmRpbmcgPz8gdHJ1ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXJsUGFyYW1zWydzb3J0J10gPSBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1GaWx0ZXIgPSBwYXJhbXMuZmlsdGVycyFbayBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IGRlZmF1bHRzPy5maWx0ZXJzPy5bayBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgJiZcbiAgICAgICAgICAgICAgICAoKEFycmF5LmlzQXJyYXkoZGVmYXVsdEZpbHRlci52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShwYXJhbUZpbHRlci52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci52YWx1ZS5sZW5ndGggPT09IHBhcmFtRmlsdGVyLnZhbHVlLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnZhbHVlLmV2ZXJ5KCh2LCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHBhcmFtRmlsdGVyLnZhbHVlIGFzIEFycmF5PERhdGFMaXN0RmlsdGVyVmFsdWVUeXBlPilbaWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgdiBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB2YWx1ZS5nZXRUaW1lKCkgPT09IHYuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdmFsdWUgPT09IHY7XG4gICAgICAgICAgICAgICAgICAgIH0pKSB8fCAvLyBoYW5kbGUgYXJyYXlzXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIudmFsdWUgPT09IHBhcmFtRmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIubWF0Y2hNb2RlID09PSBwYXJhbUZpbHRlci5tYXRjaE1vZGUgJiZcbiAgICAgICAgICAgICAgICAoZGVmYXVsdEZpbHRlci5jYXNlU2Vuc2l0aXZlID8/IGZhbHNlKSA9PT0gKHBhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPz8gZmFsc2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcj8udmFsdWUgPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cmxQYXJhbXNba10gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywgaywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHM/LmZpbHRlcnMpIHtcbiAgICAgICAgLy8gYWRkIG90aGVyIGRlZmF1bHRzXG4gICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyS2V5cyA9IHBhcmFtcy5maWx0ZXJzID8gT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlcnMpIDogW107XG4gICAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLmZpbHRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gcGFyYW1GaWx0ZXJLZXlzLmluZGV4T2YoaykgPCAwKVxuICAgICAgICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zW2tdID0gZGF0YUxpc3RQYXJhbXNGaWx0ZXJzVG9VcmxRdWVyeShkZWZhdWx0cywgayk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsUGFyYW1zO1xufVxuXG4vKipcbiAqIE1lcmdlcyB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycyB3aXRoIGRlZmF1bHQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZSBtZXJnZWQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIG1lcmdlIHdpdGggZGVmYXVsdHMuXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBkZWZhdWx0cyAtIFRoZSBkZWZhdWx0IHZhbHVlcyB0byBtZXJnZSB3aXRoIHBhcmFtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgeyBsaW1pdDogMjUsIG9mZnNldDogMCB9KS5cbiAqIEByZXR1cm5zIHtEYXRhTGlzdFBhcmFtc30gLSBUaGUgbWVyZ2VkIHBhcmFtZXRlcnMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEYXRhTGlzdFBhcmFtc1dpdGhEZWZhdWx0czxTb3J0cyA9IGFueSwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGFueT4oXG4gICAgcGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4sXG4gICAgZGVmYXVsdHM6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgbGltaXQ6IDI1LFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICB9XG4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IG1lcmdlZDogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+ID0ge1xuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0ID8/IGRlZmF1bHRzLmxpbWl0LFxuICAgICAgICBvZmZzZXQ6IHBhcmFtcy5vZmZzZXQgPz8gZGVmYXVsdHMub2Zmc2V0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2ggPz8gZGVmYXVsdHMuc2VhcmNoLFxuICAgICAgICBzb3J0OiAocGFyYW1zLnNvcnQgPz8gZGVmYXVsdHMuc29ydCk/Lm1hcChzID0+ICh7Li4uc30pKVxuICAgIH07XG5cbiAgICBpZiAocGFyYW1zLmZpbHRlcnMpIHtcbiAgICAgICAgbWVyZ2VkLmZpbHRlcnMgPSB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+O1xuICAgICAgICBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiAobWVyZ2VkLmZpbHRlcnMhW2tleSBhcyBGaWx0ZXJzXSA9IHsuLi4odmFsdWUgYXMgRGF0YUxpc3RGaWx0ZXIpfSkpO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHMuZmlsdGVycykge1xuICAgICAgICBpZiAoIW1lcmdlZC5maWx0ZXJzKSBtZXJnZWQuZmlsdGVycyA9IHt9IGFzIERhdGFMaXN0RmlsdGVyc1R5cGU8RmlsdGVycz47XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGRlZmF1bHRzLmZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPSB7Li4uKHZhbHVlIGFzIERhdGFMaXN0RmlsdGVyKX07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZWQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHBhcmFtZXRlcnMgdG8gYSBVUkwgcXVlcnkgc3RyaW5nIGZvciBzb3J0aW5nLlxuICogU29ydHMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgc29ydCBxdWVyeSBsYW5ndWFnZTogYGFzYzpwcm9wMSxkZXNjOnByb3AyYCwgLi4uXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gcGFyYW1zIC0gQW4gb3B0aW9uYWwgb2JqZWN0IGNvbnRhaW5pbmcgc29ydCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwgcXVlcnkgb3IgdW5kZWZpbmVkIGlmIG5vIHNvcnQgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcz86IERhdGFMaXN0UGFyYW1zPGFueSwgYW55Pik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHBhcmFtcyAmJiBBcnJheS5pc0FycmF5KHBhcmFtcy5zb3J0KVxuICAgICAgICA/IHBhcmFtcy5zb3J0Lm1hcChzID0+IGAke3MuYXNjZW5kaW5nID09PSB0cnVlIHx8IHMuYXNjZW5kaW5nID09PSB1bmRlZmluZWQgPyAnYXNjJyA6ICdkZXNjJ306JHtTdHJpbmcocy5wcm9wZXJ0eSl9YCkuam9pbignLCcpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3BlY2lmaWMgZmlsdGVyIHBhcmFtZXRlciAoYnkga2V5KSBmcm9tIERhdGFMaXN0UGFyYW1zIG9iamVjdCB0byBhIFVSTCBxdWVyeSBzdHJpbmcuXG4gKiBGaWx0ZXIga2V5cyBhcmUgXCJmbGF0dGVuZWRcIiBpbiB0aGUgbmV3IG9iamVjdCwgdmFsdWVzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIGZpbHRlciBxdWVyeSBsYW5ndWFnZTogYGNzOmVxOmFzZGAsIGBpbjphc2QscXdlYCwgYGV4YCwgLi4uXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxhbnksIEZpbHRlcnM+IHwgdW5kZWZpbmVkfSBwYXJhbXMgLSBUaGUgRGF0YUxpc3RQYXJhbXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbHRlcnMuXG4gKiBAcGFyYW0ge0ZpbHRlcnN9IGtleSAtIFRoZSBrZXkgb2YgdGhlIGZpbHRlciB0byBjb252ZXJ0LlxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3dOdWxsPWZhbHNlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGFsbG93IG51bGwgdmFsdWVzIGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIFVSTCBxdWVyeSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVyLCBvciB1bmRlZmluZWQgaWYgdGhlIGZpbHRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5PEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBzdHJpbmc+KFxuICAgIHBhcmFtczogRGF0YUxpc3RQYXJhbXM8YW55LCBGaWx0ZXJzPiB8IHVuZGVmaW5lZCxcbiAgICBrZXk6IEZpbHRlcnMsXG4gICAgYWxsb3dOdWxsID0gZmFsc2Vcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGFyYW1GaWx0ZXIgPSBwYXJhbXM/LmZpbHRlcnM/LltrZXldO1xuICAgIHJldHVybiBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnkocGFyYW1GaWx0ZXIsIGFsbG93TnVsbCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWx0ZXIgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RGaWx0ZXJ9IHBhcmFtRmlsdGVyIC0gVGhlIGZpbHRlciBvYmplY3QgdG8gYmUgY29udmVydGVkLlxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3dOdWxsPWZhbHNlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGFsbG93IG51bGwgdmFsdWVzIGluIHRoZSBmaWx0ZXIuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gLSBUaGUgZmlsdGVyIGNvbnZlcnRlZCB0byBhIFVSTCBxdWVyeSBzdHJpbmcsIG9yIHVuZGVmaW5lZCBpZiBubyBmaWx0ZXIgaXMgcHJvdmlkZWQgb3IgdGhlIGZpbHRlciBoYXMgZW1wdHkgb3IgaW52YWxpZCB2YWx1ZXMuXG4gKiBAdGhyb3dzIHtDb21tb25zSW50ZXJuYWxFcnJvcn0gLSBJZiB0aGUgZmlsdGVyIGhhcyBpbnZhbGlkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVG9VcmxRdWVyeShwYXJhbUZpbHRlcj86IERhdGFMaXN0RmlsdGVyLCBhbGxvd051bGwgPSBmYWxzZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWVBc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJhbUZpbHRlcj8udmFsdWUpID8gcGFyYW1GaWx0ZXIhLnZhbHVlLmZpbHRlcih2ID0+IHYgIT09IHVuZGVmaW5lZCAmJiAoYWxsb3dOdWxsIHx8IHYgIT09IG51bGwpKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXRjaE1vZGUgPSBwYXJhbUZpbHRlcj8ubWF0Y2hNb2RlID8/IEZpbHRlck1hdGNoTW9kZS5FcXVhbHM7XG4gICAgaWYgKFxuICAgICAgICBwYXJhbUZpbHRlciA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICghYWxsb3dOdWxsICYmIG1hdGNoTW9kZSAhPT0gJ2V4aXN0cycgJiYgbWF0Y2hNb2RlICE9PSAnZG9lc05vdEV4aXN0JyAmJiBwYXJhbUZpbHRlci52YWx1ZSA9PSBudWxsKSB8fFxuICAgICAgICAodHlwZW9mIHBhcmFtRmlsdGVyLnZhbHVlID09PSAnc3RyaW5nJyAmJiBwYXJhbUZpbHRlci52YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlQXNBcnJheSkgJiYgZmlsdGVyVmFsdWVBc0FycmF5Lmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byBpbmNsdWRlIGZpbHRlcnMgZm9yIGVtcHR5IHZhbHVlc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuICYmICEoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpICYmIGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmlsdGVyIG1hdGNoIG1vZGUgYmV0d2VlbiByZXF1aXJlcyBleGFjdGx5IDIgdmFsdWVzOiAke3BhcmFtRmlsdGVyLnZhbHVlfWApO1xuICAgIH1cblxuICAgIGlmICgobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuSW4gfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuTm90SW4pICYmICghQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpIHx8IGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmlsdGVyIG1hdGNoIG1vZGUgJHttYXRjaE1vZGV9IHJlcXVpcmVzIG5vbi1lbXB0eSBhcnJheTogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoKFtGaWx0ZXJNYXRjaE1vZGUuSW4sIEZpbHRlck1hdGNoTW9kZS5Ob3RJbiwgRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW5dIGFzIHN0cmluZ1tdKS5pbmRleE9mKG1hdGNoTW9kZSkgPT09IC0xICYmIEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSBtdXN0IG5vdCBiZSBhcnJheTogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBub1ZhbCA9IHBhcmFtRmlsdGVyLm1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyB8fCBwYXJhbUZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Eb2VzTm90RXhpc3Q7XG4gICAgY29uc3QgdXJsVmFsdWVQYXJ0ID0gbm9WYWwgPyAnJyA6IGA6JHtkYXRhTGlzdFBhcmFtc0ZpbHRlclZhbHVlVG9VcmxTdHJpbmcoZmlsdGVyVmFsdWVBc0FycmF5ID8/IHBhcmFtRmlsdGVyLnZhbHVlLCBhbGxvd051bGwpfWA7XG5cbiAgICByZXR1cm4gYCR7cGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA/ICdjczonIDogcGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA9PT0gZmFsc2UgPyAnY2k6JyA6ICcnfSR7RmlsdGVyTWF0Y2hNb2RlLmdldEFiYnJldmlhdGlvbihtYXRjaE1vZGUpID8/IG1hdGNoTW9kZX0ke3VybFZhbHVlUGFydH1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIHRvIGEgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICogU29ydHMgYXJlIGZvcm1hdHRlZCBmcm9tIE1lZGl1cyBkYXRhIEFQSSBzb3J0IHF1ZXJ5IGxhbmd1YWdlOiBgYXNjOnByb3AxLGRlc2M6cHJvcDJgLCAuLi5cbiAqIEZpbHRlciBrZXlzIGFyZSBhbGwga2V5cyBpbiBQYXJhbXMgb2JqZWN0IHRoYXQgYXJlIG5vdCBtYXRjaGVkIGVsc2V3aGVyZSwgdmFsdWVzIGFyZSBmb3JtYXR0ZWQgZnJvbSBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge1BhcmFtc30gdXJsUGFyYW1zIC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLlxuICogQHJldHVybiB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIGNvbnZlcnRlZCBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVXJsUXVlcnlUb0RhdGFMaXN0UGFyYW1zKHVybFBhcmFtczogUGFyYW1zKTogRGF0YUxpc3RQYXJhbXMge1xuICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKHVybFBhcmFtcykuZm9yRWFjaCgoW3VybFBhcmFtS2V5LCB1cmxQYXJhbVZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodXJsUGFyYW1LZXkgPT09ICdsaW1pdCcpIHtcbiAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9ICt1cmxQYXJhbVZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzTmFOKHBhcmFtcy5saW1pdCkgfHwgcGFyYW1zLmxpbWl0IDwgMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMubGltaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdvZmZzZXQnKSB7XG4gICAgICAgICAgICBwYXJhbXMub2Zmc2V0ID0gK3VybFBhcmFtVmFsdWU7XG4gICAgICAgICAgICBpZiAoaXNOYU4ocGFyYW1zLm9mZnNldCkgfHwgcGFyYW1zLm9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1zLm9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1cmxQYXJhbUtleSA9PT0gJ3EnKSB7XG4gICAgICAgICAgICBwYXJhbXMuc2VhcmNoID0gdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh1cmxQYXJhbUtleSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHVybFBhcmFtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSB1cmxQYXJhbVZhbHVlLnNwbGl0KCcsJykubWFwKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbZGlyZWN0aW9uLCBwcm9wZXJ0eV0gPSBzLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7cHJvcGVydHk6IChwcm9wZXJ0eSA/PyBkaXJlY3Rpb24pIGFzIGtleW9mIG9iamVjdCwgYXNjZW5kaW5nOiBkaXJlY3Rpb24gIT09ICdkZXNjJ307XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgU3RyaW5nIGlzIGV4cGVjdGVkIGFzIHZhbHVlIGZvciAnJHt1cmxQYXJhbUtleX0nIHdoZW4gY29udmVydGluZyBmcm9tIHVybFBhcmFtc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHVybFBhcmFtVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJ0cyA9IHVybFBhcmFtVmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGxldCBwYXJ0SWR4ID0gMDtcblxuICAgICAgICAgICAgLy8gY2FzZSBzZW5zaXRpdmVcbiAgICAgICAgICAgIGxldCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY3MnIHx8IGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY2knKSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGZpbHRlclBhcnRzW3BhcnRJZHgrK10gPT09ICdjcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1hdGNoIG1vZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoTW9kZSA9IGZpbHRlclBhcnRzW3BhcnRJZHhdID8gRmlsdGVyTWF0Y2hNb2RlLmZyb21BYmJyZXZpYXRpb24oZmlsdGVyUGFydHNbcGFydElkeF0pID8/IGZpbHRlclBhcnRzW3BhcnRJZHhdIDogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgICAgIHBhcnRJZHgrKztcblxuICAgICAgICAgICAgY29uc3Qgbm9WYWwgPSBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0O1xuXG4gICAgICAgICAgICAvLyB2YWx1ZVxuICAgICAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIW5vVmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwYXJ0SWR4ID09PSBmaWx0ZXJQYXJ0cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHNbcGFydElkeF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0SWR4IDwgZmlsdGVyUGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IHRoYXQgc2hvdWxkIG5vdCBiZSBhcnJheSwgc28gam9pbiBiYWNrIHRvZ2V0aGVyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHMuc2xpY2UocGFydElkeCwgZmlsdGVyUGFydHMubGVuZ3RoKS5qb2luKCc6Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgbWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzICYmIG1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB2YWx1ZSB1bmRlZmluZWQgYW5kIG1hdGNoIG1vZGUgZXhwZWN0cyB2YWx1ZSwgdGhlbiBza2lwXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5JbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Ob3RJbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnJheVZhbDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgbWF0Y2ggbW9kZXMgZXhwZWN0IGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcIicpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHBsaWNpdFF1b3RlcyA9IGZhbHNlOyAvL3Rva2VuIGlzIHF1b3RlZCwgZS5nLiBpbjoxLDIsXCIyMlwiXCJcIixcIiwxMjNcIlwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxdW90ZXNPcGVuZWQgPSBmYWxzZTsgLy90b2tlbiBoYXMgc3RhcnRlZCBwcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcXVvdGVzRXhwbGljaXRseUNsb3NlZCA9IGZhbHNlOyAvL3Rva2VuIHByb2Nlc3NpbmcgaGFzIGZpbmlzaGVkLCBhZnRlciBzaW5nbGUgXCIgaW4gcXVvdGVkIG1vZGUsIG9yIGJlZm9yZSAsIGluIG5vdCBxdW90ZWRcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB2YWx1ZVtpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSB0b2tlbml6ZXIgd2hlbiBzZWVpbmcgdGhlIHRva2VuIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgaWYgZWl0aGVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBxdW90ZXMgaGF2ZSBub3QgYmVlbiBvcGVuZWQgeWV0ICh3aGVuIHRoZXJlIGFyZSBubyBjaGFyYWN0ZXJzIGJldHdlZW4gc2VwYXJhdG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRva2VuIGhhcyBiZWVuIGV4cGxpY2l0bHkgY2xvc2VkICh3aGVuIHdlIGFjdHVhbGx5IGhhdmUgZXhwbGljaXQgb3BlbmluZyBpLmUuLCBxdW90ZXMgYXMgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3ZSBoYXZlIGltcGxpY2l0IHF1b3RlcyAoaS5lLiwgcXVvdGVzIGFyZSBub3QgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJywnICYmICghcXVvdGVzT3BlbmVkIHx8IHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgfHwgIWV4cGxpY2l0UXVvdGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChjdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGVkIGRvdWJsZS1xdW90ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGxpY2l0UXVvdGVzICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgKyAxXSA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuICs9IGM7IC8vIEFwcGVuZCBvbmUgZG91YmxlLXF1b3RlIHRvIHRoZSBjdXJyZW50IHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7IC8vIFNraXAgdGhlIG5leHQgZG91YmxlLXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZW5jb3VudGVyIHF1b3RlcyBhZ2FpbiBhZnRlciB0aGV5IHdlcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiB3ZSBjbG9zZSB0aGUgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwbGljaXRRdW90ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGxpY2l0IHF1b3Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdW90ZXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlcyBhcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiBleHBsaWNpdGx5IG9wZW4gdGhlIHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc09wZW5lZCAmJiAhcXVvdGVzRXhwbGljaXRseUNsb3NlZCAmJiBleHBsaWNpdFF1b3Rlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBsYXN0IHRva2VuIGFmdGVyIHRoZSBsb29wIGVuZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKGN1cnJlbnRUb2tlbi50b1N0cmluZygpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlWYWwgPSB0b2tlbnM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVZhbCA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJiBhcnJheVZhbC5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYXJyYXlWYWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlIS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbHRlciB3aXRoIGVtcHR5IHZhbHVlIGlzIHRvIGJlIGlnbm9yZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzW3VybFBhcmFtS2V5IGFzIGtleW9mIG9iamVjdF0gPSB7dmFsdWU6IHZhbHVlLCBtYXRjaE1vZGU6IG1hdGNoTW9kZSwgY2FzZVNlbnNpdGl2ZTogY2FzZVNlbnNpdGl2ZX07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogTWFrZXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz59IHBhcmFtcyAtIFRoZSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYmUgY29waWVkLlxuICogQHJldHVybnMge0RhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPn0gLSBSZXR1cm5zIGEgbmV3IGNvcHkgb2YgdGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEYXRhTGlzdFBhcmFtczxTb3J0cyA9IHN0cmluZywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IHN0cmluZz4ocGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IGNvcHk6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0LFxuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2hcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5zb3J0KSB7XG4gICAgICAgIGNvcHkuc29ydCA9IHBhcmFtcy5zb3J0Py5tYXAocyA9PiAoey4uLnN9KSk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZmlsdGVycykge1xuICAgICAgICBjb3B5LmZpbHRlcnMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZS52YWx1ZSkgPyBbLi4uZmlsdGVyVmFsdWUudmFsdWVdIDogZmlsdGVyVmFsdWUudmFsdWVcbiAgICAgICAgICAgICAgICB9IGFzIERhdGFMaXN0RmlsdGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29weTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgVVJMIHF1ZXJ5IHBhcmFtIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciBudWxsIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBVUkwgcGFyYW1ldGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEB0aHJvd3Mge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBJZiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIHdpdGhvdXQgYWxsb3dOdWxsIHNldCB0byB0cnVlLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IElmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QgKGV4Y2x1ZGluZyBEYXRlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2YWx1ZTogdW5rbm93biwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBhbGxvd051bGwpIHJldHVybiAnbnVsbCc7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignVW5kZWZpbmVkIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gdXJsIHBhcmFtLicpOyAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0IGVhcmxpZXJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLm1hcCh2ID0+IGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2LCBhbGxvd051bGwpKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh2LmluZGV4T2YoJywnKSA+PSAwIHx8IHYuaW5kZXhPZignXCInKSA+PSAwID8gYFwiJHt2LnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKX1cImAgOiB2KSlcbiAgICAgICAgICAgIC5qb2luKCcsJyk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGRhdGVUb0lzb1N0cmluZyh2YWx1ZSwgJ2RhdGVUaW1lJywge3V0YzogdHJ1ZX0pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignRmlsdGVyIHZhbHVlIGNhbm5vdCBiZSBvYmplY3QnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiJdfQ==
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LXBhcmFtcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR3JEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQXlCO0lBQ25FLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFbEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFL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QzthQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksS0FBSyxZQUFZLElBQUk7WUFBRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7YUFDN0UsQ0FBQztZQUNGLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RhYmxlTGF6eUxvYWRFdmVudH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3J9IGZyb20gJy4uL2Vycm9yL2Vycm9yLm1vZGVsJztcbmltcG9ydCB7ZGF0ZVRvSXNvU3RyaW5nfSBmcm9tICcuLi9oZWxwZXJzL2RhdGUnO1xuaW1wb3J0IHtEYXRhTGlzdEZpbHRlciwgRGF0YUxpc3RGaWx0ZXJWYWx1ZVR5cGUsIERhdGFMaXN0RmlsdGVyc1R5cGUsIERhdGFMaXN0UGFyYW1zfSBmcm9tICcuL2RhdGEtbGlzdC5tb2RlbCc7XG5pbXBvcnQge0ZpbHRlck1hdGNoTW9kZX0gZnJvbSAnLi9maWx0ZXItbWF0Y2gubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRmlsdGVyTWV0YWRhdGF9IGZyb20gJy4vZmlsdGVyLW1ldGFkYXRhLm1vZGVsJztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFRhYmxlTGF6eUxvYWRFdmVudCB0byBEYXRhTGlzdFBhcmFtcy5cbiAqXG4gKiBAcGFyYW0ge1RhYmxlTGF6eUxvYWRFdmVudH0gZXZlbnQgLSBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgZGF0YSB0byBjb252ZXJ0LlxuICogQHJldHVybiB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIGNvbnZlcnRlZCBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVGFibGVMb2FkVG9EYXRhTGlzdFBhcmFtcyhldmVudDogVGFibGVMYXp5TG9hZEV2ZW50KTogRGF0YUxpc3RQYXJhbXMge1xuICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7fTtcblxuICAgIGlmIChldmVudC5maXJzdCAhPSBudWxsKSB7XG4gICAgICAgIHBhcmFtcy5vZmZzZXQgPSBldmVudC5maXJzdDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnJvd3MgIT0gbnVsbCkge1xuICAgICAgICBwYXJhbXMubGltaXQgPSBldmVudC5yb3dzO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXZlbnQuZ2xvYmFsRmlsdGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXJhbXMuc2VhcmNoID0gZXZlbnQuZ2xvYmFsRmlsdGVyO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShldmVudC5nbG9iYWxGaWx0ZXIpICYmIGV2ZW50Lmdsb2JhbEZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcmFtcy5zZWFyY2ggPSBldmVudC5nbG9iYWxGaWx0ZXIuam9pbignLCcpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50Lm11bHRpU29ydE1ldGEpICYmIGV2ZW50Lm11bHRpU29ydE1ldGEubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc29ydCA9IGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKG0gPT4gKHtwcm9wZXJ0eTogbS5maWVsZCwgYXNjZW5kaW5nOiBtLm9yZGVyID49IDB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBPYmplY3Qua2V5cyhldmVudC5maWx0ZXJzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXI6IERhdGFMaXN0RmlsdGVyID0ge307XG4gICAgICAgICAgICBjb25zdCBldmVudEZpbHRlcjogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHwgQ29tbW9uc0ZpbHRlck1ldGFkYXRhW10gfCB1bmRlZmluZWQgPSBldmVudC5maWx0ZXJzPy5ba2V5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudEZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBldmVudEZpbHRlclswXS52YWx1ZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIubWF0Y2hNb2RlID0gZXZlbnRGaWx0ZXJbMF0ubWF0Y2hNb2RlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jYXNlU2Vuc2l0aXZlID0gZXZlbnRGaWx0ZXJbMF0uY2FzZVNlbnNpdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRGaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGV2ZW50RmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5tYXRjaE1vZGUgPSBldmVudEZpbHRlci5tYXRjaE1vZGU7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNhc2VTZW5zaXRpdmUgPSBldmVudEZpbHRlci5jYXNlU2Vuc2l0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsuLi5hY2MsIFtrZXldOiBmaWx0ZXJ9O1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gcGFyYW1ldGVycyB0byBVUkwgcXVlcnkgcGFyYW1ldGVycy5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIHNvcnQgcXVlcnkgbGFuZ3VhZ2U6IGBhc2M6cHJvcDEsZGVzYzpwcm9wMmAsIC4uLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfG51bGx9IGRlZmF1bHRzIC0gVGhlIGRlZmF1bHQgcGFyYW1ldGVycyB1c2VkIGlmIG5vIG1hdGNoaW5nIHByb3BlcnR5IGluIHBhcmFtcyBpcyBhdmFpbGFibGUuIERlZmF1bHRzIHRvIHsgbGltaXQ6IDI1LCBvZmZzZXQ6IDAgfSBpZiBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyB7UGFyYW1zfSAtIFRoZSBVUkwgcXVlcnkgcGFyYW1ldGVycyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc1RvVXJsUXVlcnkoXG4gICAgcGFyYW1zOiBEYXRhTGlzdFBhcmFtczxhbnksIGFueT4sXG4gICAgZGVmYXVsdHM6IERhdGFMaXN0UGFyYW1zPGFueSwgYW55PiB8IG51bGwgPSB7XG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgICAgb2Zmc2V0OiAwXG4gICAgfVxuKTogUGFyYW1zIHtcbiAgICBjb25zdCB1cmxQYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHBhcmFtcy5saW1pdCAmJiBwYXJhbXMubGltaXQgIT09IGRlZmF1bHRzPy5saW1pdCkge1xuICAgICAgICB1cmxQYXJhbXNbJ2xpbWl0J10gPSBwYXJhbXMubGltaXQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMub2Zmc2V0ICYmIHBhcmFtcy5vZmZzZXQgIT09IGRlZmF1bHRzPy5vZmZzZXQpIHtcbiAgICAgICAgdXJsUGFyYW1zWydvZmZzZXQnXSA9IHBhcmFtcy5vZmZzZXQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5zZWFyY2ggIT09IGRlZmF1bHRzPy5zZWFyY2gpIHtcbiAgICAgICAgdXJsUGFyYW1zWydxJ10gPSBwYXJhbXMuc2VhcmNoO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNvcnQgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydCkgJiYgcGFyYW1zLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWZhdWx0cz8uc29ydCA9PSBudWxsIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShkZWZhdWx0cy5zb3J0KSB8fFxuICAgICAgICAgICAgZGVmYXVsdHMuc29ydC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0Lmxlbmd0aCAhPT0gZGVmYXVsdHMuc29ydC5sZW5ndGggfHxcbiAgICAgICAgICAgIGRlZmF1bHRzLnNvcnQuc29tZSgoZHMsIGlkeCkgPT4gZHMucHJvcGVydHkgIT09IHBhcmFtcy5zb3J0IVtpZHhdLnByb3BlcnR5IHx8IChkcy5hc2NlbmRpbmcgPz8gdHJ1ZSkgIT09IChwYXJhbXMuc29ydCFbaWR4XS5hc2NlbmRpbmcgPz8gdHJ1ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXJsUGFyYW1zWydzb3J0J10gPSBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1GaWx0ZXIgPSBwYXJhbXMuZmlsdGVycyFbayBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IGRlZmF1bHRzPy5maWx0ZXJzPy5bayBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgJiZcbiAgICAgICAgICAgICAgICAoKEFycmF5LmlzQXJyYXkoZGVmYXVsdEZpbHRlci52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShwYXJhbUZpbHRlci52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci52YWx1ZS5sZW5ndGggPT09IHBhcmFtRmlsdGVyLnZhbHVlLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnZhbHVlLmV2ZXJ5KCh2LCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHBhcmFtRmlsdGVyLnZhbHVlIGFzIEFycmF5PERhdGFMaXN0RmlsdGVyVmFsdWVUeXBlPilbaWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgdiBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB2YWx1ZS5nZXRUaW1lKCkgPT09IHYuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdmFsdWUgPT09IHY7XG4gICAgICAgICAgICAgICAgICAgIH0pKSB8fCAvLyBoYW5kbGUgYXJyYXlzXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIudmFsdWUgPT09IHBhcmFtRmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIubWF0Y2hNb2RlID09PSBwYXJhbUZpbHRlci5tYXRjaE1vZGUgJiZcbiAgICAgICAgICAgICAgICAoZGVmYXVsdEZpbHRlci5jYXNlU2Vuc2l0aXZlID8/IGZhbHNlKSA9PT0gKHBhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPz8gZmFsc2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcj8udmFsdWUgPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cmxQYXJhbXNba10gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywgaywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHM/LmZpbHRlcnMpIHtcbiAgICAgICAgLy8gYWRkIG90aGVyIGRlZmF1bHRzXG4gICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyS2V5cyA9IHBhcmFtcy5maWx0ZXJzID8gT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlcnMpIDogW107XG4gICAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLmZpbHRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gcGFyYW1GaWx0ZXJLZXlzLmluZGV4T2YoaykgPCAwKVxuICAgICAgICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zW2tdID0gZGF0YUxpc3RQYXJhbXNGaWx0ZXJzVG9VcmxRdWVyeShkZWZhdWx0cywgayk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsUGFyYW1zO1xufVxuXG4vKipcbiAqIE1lcmdlcyB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycyB3aXRoIGRlZmF1bHQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZSBtZXJnZWQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIG1lcmdlIHdpdGggZGVmYXVsdHMuXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBkZWZhdWx0cyAtIFRoZSBkZWZhdWx0IHZhbHVlcyB0byBtZXJnZSB3aXRoIHBhcmFtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgeyBsaW1pdDogMjUsIG9mZnNldDogMCB9KS5cbiAqIEByZXR1cm5zIHtEYXRhTGlzdFBhcmFtc30gLSBUaGUgbWVyZ2VkIHBhcmFtZXRlcnMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEYXRhTGlzdFBhcmFtc1dpdGhEZWZhdWx0czxTb3J0cyA9IGFueSwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGFueT4oXG4gICAgcGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4sXG4gICAgZGVmYXVsdHM6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgbGltaXQ6IDI1LFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICB9XG4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IG1lcmdlZDogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+ID0ge1xuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0ID8/IGRlZmF1bHRzLmxpbWl0LFxuICAgICAgICBvZmZzZXQ6IHBhcmFtcy5vZmZzZXQgPz8gZGVmYXVsdHMub2Zmc2V0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2ggPz8gZGVmYXVsdHMuc2VhcmNoLFxuICAgICAgICBzb3J0OiAocGFyYW1zLnNvcnQgPz8gZGVmYXVsdHMuc29ydCk/Lm1hcChzID0+ICh7Li4uc30pKVxuICAgIH07XG5cbiAgICBpZiAocGFyYW1zLmZpbHRlcnMpIHtcbiAgICAgICAgbWVyZ2VkLmZpbHRlcnMgPSB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+O1xuICAgICAgICBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiAobWVyZ2VkLmZpbHRlcnMhW2tleSBhcyBGaWx0ZXJzXSA9IHsuLi4odmFsdWUgYXMgRGF0YUxpc3RGaWx0ZXIpfSkpO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHMuZmlsdGVycykge1xuICAgICAgICBpZiAoIW1lcmdlZC5maWx0ZXJzKSBtZXJnZWQuZmlsdGVycyA9IHt9IGFzIERhdGFMaXN0RmlsdGVyc1R5cGU8RmlsdGVycz47XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGRlZmF1bHRzLmZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPSB7Li4uKHZhbHVlIGFzIERhdGFMaXN0RmlsdGVyKX07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZWQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHBhcmFtZXRlcnMgdG8gYSBVUkwgcXVlcnkgc3RyaW5nIGZvciBzb3J0aW5nLlxuICogU29ydHMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgc29ydCBxdWVyeSBsYW5ndWFnZTogYGFzYzpwcm9wMSxkZXNjOnByb3AyYCwgLi4uXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gcGFyYW1zIC0gQW4gb3B0aW9uYWwgb2JqZWN0IGNvbnRhaW5pbmcgc29ydCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwgcXVlcnkgb3IgdW5kZWZpbmVkIGlmIG5vIHNvcnQgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcz86IERhdGFMaXN0UGFyYW1zPGFueSwgYW55Pik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHBhcmFtcyAmJiBBcnJheS5pc0FycmF5KHBhcmFtcy5zb3J0KVxuICAgICAgICA/IHBhcmFtcy5zb3J0Lm1hcChzID0+IGAke3MuYXNjZW5kaW5nID09PSB0cnVlIHx8IHMuYXNjZW5kaW5nID09PSB1bmRlZmluZWQgPyAnYXNjJyA6ICdkZXNjJ306JHtTdHJpbmcocy5wcm9wZXJ0eSl9YCkuam9pbignLCcpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3BlY2lmaWMgZmlsdGVyIHBhcmFtZXRlciAoYnkga2V5KSBmcm9tIERhdGFMaXN0UGFyYW1zIG9iamVjdCB0byBhIFVSTCBxdWVyeSBzdHJpbmcuXG4gKiBGaWx0ZXIga2V5cyBhcmUgXCJmbGF0dGVuZWRcIiBpbiB0aGUgbmV3IG9iamVjdCwgdmFsdWVzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIGZpbHRlciBxdWVyeSBsYW5ndWFnZTogYGNzOmVxOmFzZGAsIGBpbjphc2QscXdlYCwgYGV4YCwgLi4uXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxhbnksIEZpbHRlcnM+IHwgdW5kZWZpbmVkfSBwYXJhbXMgLSBUaGUgRGF0YUxpc3RQYXJhbXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbHRlcnMuXG4gKiBAcGFyYW0ge0ZpbHRlcnN9IGtleSAtIFRoZSBrZXkgb2YgdGhlIGZpbHRlciB0byBjb252ZXJ0LlxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3dOdWxsPWZhbHNlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGFsbG93IG51bGwgdmFsdWVzIGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIFVSTCBxdWVyeSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVyLCBvciB1bmRlZmluZWQgaWYgdGhlIGZpbHRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5PEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBzdHJpbmc+KFxuICAgIHBhcmFtczogRGF0YUxpc3RQYXJhbXM8YW55LCBGaWx0ZXJzPiB8IHVuZGVmaW5lZCxcbiAgICBrZXk6IEZpbHRlcnMsXG4gICAgYWxsb3dOdWxsID0gZmFsc2Vcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGFyYW1GaWx0ZXIgPSBwYXJhbXM/LmZpbHRlcnM/LltrZXldO1xuICAgIHJldHVybiBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnkocGFyYW1GaWx0ZXIsIGFsbG93TnVsbCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWx0ZXIgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RGaWx0ZXJ9IHBhcmFtRmlsdGVyIC0gVGhlIGZpbHRlciBvYmplY3QgdG8gYmUgY29udmVydGVkLlxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3dOdWxsPWZhbHNlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGFsbG93IG51bGwgdmFsdWVzIGluIHRoZSBmaWx0ZXIuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gLSBUaGUgZmlsdGVyIGNvbnZlcnRlZCB0byBhIFVSTCBxdWVyeSBzdHJpbmcsIG9yIHVuZGVmaW5lZCBpZiBubyBmaWx0ZXIgaXMgcHJvdmlkZWQgb3IgdGhlIGZpbHRlciBoYXMgZW1wdHkgb3IgaW52YWxpZCB2YWx1ZXMuXG4gKiBAdGhyb3dzIHtDb21tb25zSW50ZXJuYWxFcnJvcn0gLSBJZiB0aGUgZmlsdGVyIGhhcyBpbnZhbGlkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVG9VcmxRdWVyeShwYXJhbUZpbHRlcj86IERhdGFMaXN0RmlsdGVyLCBhbGxvd051bGwgPSBmYWxzZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWVBc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJhbUZpbHRlcj8udmFsdWUpID8gcGFyYW1GaWx0ZXIhLnZhbHVlLmZpbHRlcih2ID0+IHYgIT09IHVuZGVmaW5lZCAmJiAoYWxsb3dOdWxsIHx8IHYgIT09IG51bGwpKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXRjaE1vZGUgPSBwYXJhbUZpbHRlcj8ubWF0Y2hNb2RlID8/IEZpbHRlck1hdGNoTW9kZS5FcXVhbHM7XG4gICAgaWYgKFxuICAgICAgICBwYXJhbUZpbHRlciA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICghYWxsb3dOdWxsICYmIG1hdGNoTW9kZSAhPT0gJ2V4aXN0cycgJiYgbWF0Y2hNb2RlICE9PSAnZG9lc05vdEV4aXN0JyAmJiBwYXJhbUZpbHRlci52YWx1ZSA9PSBudWxsKSB8fFxuICAgICAgICAodHlwZW9mIHBhcmFtRmlsdGVyLnZhbHVlID09PSAnc3RyaW5nJyAmJiBwYXJhbUZpbHRlci52YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlQXNBcnJheSkgJiYgZmlsdGVyVmFsdWVBc0FycmF5Lmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byBpbmNsdWRlIGZpbHRlcnMgZm9yIGVtcHR5IHZhbHVlc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuICYmICEoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpICYmIGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmlsdGVyIG1hdGNoIG1vZGUgYmV0d2VlbiByZXF1aXJlcyBleGFjdGx5IDIgdmFsdWVzOiAke3BhcmFtRmlsdGVyLnZhbHVlfWApO1xuICAgIH1cblxuICAgIGlmICgobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuSW4gfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuTm90SW4pICYmICghQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpIHx8IGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmlsdGVyIG1hdGNoIG1vZGUgJHttYXRjaE1vZGV9IHJlcXVpcmVzIG5vbi1lbXB0eSBhcnJheTogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoKFtGaWx0ZXJNYXRjaE1vZGUuSW4sIEZpbHRlck1hdGNoTW9kZS5Ob3RJbiwgRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW5dIGFzIHN0cmluZ1tdKS5pbmRleE9mKG1hdGNoTW9kZSkgPT09IC0xICYmIEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSBtdXN0IG5vdCBiZSBhcnJheTogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBub1ZhbCA9IHBhcmFtRmlsdGVyLm1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyB8fCBwYXJhbUZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Eb2VzTm90RXhpc3Q7XG4gICAgY29uc3QgdXJsVmFsdWVQYXJ0ID0gbm9WYWwgPyAnJyA6IGA6JHtkYXRhTGlzdFBhcmFtc0ZpbHRlclZhbHVlVG9VcmxTdHJpbmcoZmlsdGVyVmFsdWVBc0FycmF5ID8/IHBhcmFtRmlsdGVyLnZhbHVlLCBhbGxvd051bGwpfWA7XG5cbiAgICByZXR1cm4gYCR7cGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA/ICdjczonIDogcGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA9PT0gZmFsc2UgPyAnY2k6JyA6ICcnfSR7RmlsdGVyTWF0Y2hNb2RlLmdldEFiYnJldmlhdGlvbihtYXRjaE1vZGUpID8/IG1hdGNoTW9kZX0ke3VybFZhbHVlUGFydH1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIHRvIGEgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICogU29ydHMgYXJlIGZvcm1hdHRlZCBmcm9tIE1lZGl1cyBkYXRhIEFQSSBzb3J0IHF1ZXJ5IGxhbmd1YWdlOiBgYXNjOnByb3AxLGRlc2M6cHJvcDJgLCAuLi5cbiAqIEZpbHRlciBrZXlzIGFyZSBhbGwga2V5cyBpbiBQYXJhbXMgb2JqZWN0IHRoYXQgYXJlIG5vdCBtYXRjaGVkIGVsc2V3aGVyZSwgdmFsdWVzIGFyZSBmb3JtYXR0ZWQgZnJvbSBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge1BhcmFtc30gdXJsUGFyYW1zIC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLlxuICogQHJldHVybiB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIGNvbnZlcnRlZCBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVXJsUXVlcnlUb0RhdGFMaXN0UGFyYW1zKHVybFBhcmFtczogUGFyYW1zKTogRGF0YUxpc3RQYXJhbXMge1xuICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKHVybFBhcmFtcykuZm9yRWFjaCgoW3VybFBhcmFtS2V5LCB1cmxQYXJhbVZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodXJsUGFyYW1LZXkgPT09ICdsaW1pdCcpIHtcbiAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9ICt1cmxQYXJhbVZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzTmFOKHBhcmFtcy5saW1pdCkgfHwgcGFyYW1zLmxpbWl0IDwgMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMubGltaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdvZmZzZXQnKSB7XG4gICAgICAgICAgICBwYXJhbXMub2Zmc2V0ID0gK3VybFBhcmFtVmFsdWU7XG4gICAgICAgICAgICBpZiAoaXNOYU4ocGFyYW1zLm9mZnNldCkgfHwgcGFyYW1zLm9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1zLm9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1cmxQYXJhbUtleSA9PT0gJ3EnKSB7XG4gICAgICAgICAgICBwYXJhbXMuc2VhcmNoID0gdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh1cmxQYXJhbUtleSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHVybFBhcmFtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSB1cmxQYXJhbVZhbHVlLnNwbGl0KCcsJykubWFwKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbZGlyZWN0aW9uLCBwcm9wZXJ0eV0gPSBzLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7cHJvcGVydHk6IChwcm9wZXJ0eSA/PyBkaXJlY3Rpb24pIGFzIGtleW9mIG9iamVjdCwgYXNjZW5kaW5nOiBkaXJlY3Rpb24gIT09ICdkZXNjJ307XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgU3RyaW5nIGlzIGV4cGVjdGVkIGFzIHZhbHVlIGZvciAnJHt1cmxQYXJhbUtleX0nIHdoZW4gY29udmVydGluZyBmcm9tIHVybFBhcmFtc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHVybFBhcmFtVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJ0cyA9IHVybFBhcmFtVmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGxldCBwYXJ0SWR4ID0gMDtcblxuICAgICAgICAgICAgLy8gY2FzZSBzZW5zaXRpdmVcbiAgICAgICAgICAgIGxldCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY3MnIHx8IGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY2knKSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGZpbHRlclBhcnRzW3BhcnRJZHgrK10gPT09ICdjcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1hdGNoIG1vZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoTW9kZSA9IGZpbHRlclBhcnRzW3BhcnRJZHhdID8gRmlsdGVyTWF0Y2hNb2RlLmZyb21BYmJyZXZpYXRpb24oZmlsdGVyUGFydHNbcGFydElkeF0pID8/IGZpbHRlclBhcnRzW3BhcnRJZHhdIDogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgICAgIHBhcnRJZHgrKztcblxuICAgICAgICAgICAgY29uc3Qgbm9WYWwgPSBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0O1xuXG4gICAgICAgICAgICAvLyB2YWx1ZVxuICAgICAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIW5vVmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwYXJ0SWR4ID09PSBmaWx0ZXJQYXJ0cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHNbcGFydElkeF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0SWR4IDwgZmlsdGVyUGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IHRoYXQgc2hvdWxkIG5vdCBiZSBhcnJheSwgc28gam9pbiBiYWNrIHRvZ2V0aGVyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHMuc2xpY2UocGFydElkeCwgZmlsdGVyUGFydHMubGVuZ3RoKS5qb2luKCc6Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgbWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzICYmIG1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB2YWx1ZSB1bmRlZmluZWQgYW5kIG1hdGNoIG1vZGUgZXhwZWN0cyB2YWx1ZSwgdGhlbiBza2lwXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5JbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Ob3RJbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnJheVZhbDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgbWF0Y2ggbW9kZXMgZXhwZWN0IGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcIicpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHBsaWNpdFF1b3RlcyA9IGZhbHNlOyAvL3Rva2VuIGlzIHF1b3RlZCwgZS5nLiBpbjoxLDIsXCIyMlwiXCJcIixcIiwxMjNcIlwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxdW90ZXNPcGVuZWQgPSBmYWxzZTsgLy90b2tlbiBoYXMgc3RhcnRlZCBwcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcXVvdGVzRXhwbGljaXRseUNsb3NlZCA9IGZhbHNlOyAvL3Rva2VuIHByb2Nlc3NpbmcgaGFzIGZpbmlzaGVkLCBhZnRlciBzaW5nbGUgXCIgaW4gcXVvdGVkIG1vZGUsIG9yIGJlZm9yZSAsIGluIG5vdCBxdW90ZWRcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB2YWx1ZVtpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSB0b2tlbml6ZXIgd2hlbiBzZWVpbmcgdGhlIHRva2VuIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgaWYgZWl0aGVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBxdW90ZXMgaGF2ZSBub3QgYmVlbiBvcGVuZWQgeWV0ICh3aGVuIHRoZXJlIGFyZSBubyBjaGFyYWN0ZXJzIGJldHdlZW4gc2VwYXJhdG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRva2VuIGhhcyBiZWVuIGV4cGxpY2l0bHkgY2xvc2VkICh3aGVuIHdlIGFjdHVhbGx5IGhhdmUgZXhwbGljaXQgb3BlbmluZyBpLmUuLCBxdW90ZXMgYXMgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3ZSBoYXZlIGltcGxpY2l0IHF1b3RlcyAoaS5lLiwgcXVvdGVzIGFyZSBub3QgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJywnICYmICghcXVvdGVzT3BlbmVkIHx8IHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgfHwgIWV4cGxpY2l0UXVvdGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChjdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGVkIGRvdWJsZS1xdW90ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGxpY2l0UXVvdGVzICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgKyAxXSA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuICs9IGM7IC8vIEFwcGVuZCBvbmUgZG91YmxlLXF1b3RlIHRvIHRoZSBjdXJyZW50IHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7IC8vIFNraXAgdGhlIG5leHQgZG91YmxlLXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZW5jb3VudGVyIHF1b3RlcyBhZ2FpbiBhZnRlciB0aGV5IHdlcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiB3ZSBjbG9zZSB0aGUgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwbGljaXRRdW90ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGxpY2l0IHF1b3Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdW90ZXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlcyBhcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiBleHBsaWNpdGx5IG9wZW4gdGhlIHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc09wZW5lZCAmJiAhcXVvdGVzRXhwbGljaXRseUNsb3NlZCAmJiBleHBsaWNpdFF1b3Rlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBsYXN0IHRva2VuIGFmdGVyIHRoZSBsb29wIGVuZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKGN1cnJlbnRUb2tlbi50b1N0cmluZygpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlWYWwgPSB0b2tlbnM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVZhbCA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJiBhcnJheVZhbC5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYXJyYXlWYWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlIS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbHRlciB3aXRoIGVtcHR5IHZhbHVlIGlzIHRvIGJlIGlnbm9yZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzW3VybFBhcmFtS2V5IGFzIGtleW9mIG9iamVjdF0gPSB7dmFsdWU6IHZhbHVlLCBtYXRjaE1vZGU6IG1hdGNoTW9kZSwgY2FzZVNlbnNpdGl2ZTogY2FzZVNlbnNpdGl2ZX07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogTWFrZXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz59IHBhcmFtcyAtIFRoZSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYmUgY29waWVkLlxuICogQHJldHVybnMge0RhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPn0gLSBSZXR1cm5zIGEgbmV3IGNvcHkgb2YgdGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEYXRhTGlzdFBhcmFtczxTb3J0cyA9IHN0cmluZywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IHN0cmluZz4ocGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IGNvcHk6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0LFxuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2hcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5zb3J0KSB7XG4gICAgICAgIGNvcHkuc29ydCA9IHBhcmFtcy5zb3J0Py5tYXAocyA9PiAoey4uLnN9KSk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZmlsdGVycykge1xuICAgICAgICBjb3B5LmZpbHRlcnMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZS52YWx1ZSkgPyBbLi4uZmlsdGVyVmFsdWUudmFsdWVdIDogZmlsdGVyVmFsdWUudmFsdWVcbiAgICAgICAgICAgICAgICB9IGFzIERhdGFMaXN0RmlsdGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29weTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgVVJMIHF1ZXJ5IHBhcmFtIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciBudWxsIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBVUkwgcGFyYW1ldGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEB0aHJvd3Mge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBJZiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIHdpdGhvdXQgYWxsb3dOdWxsIHNldCB0byB0cnVlLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IElmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QgKGV4Y2x1ZGluZyBEYXRlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2YWx1ZTogdW5rbm93biwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBhbGxvd051bGwpIHJldHVybiAnbnVsbCc7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignVW5kZWZpbmVkIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gdXJsIHBhcmFtLicpOyAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0IGVhcmxpZXJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLm1hcCh2ID0+IGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2LCBhbGxvd051bGwpKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh2LmluZGV4T2YoJywnKSA+PSAwIHx8IHYuaW5kZXhPZignXCInKSA+PSAwID8gYFwiJHt2LnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKX1cImAgOiB2KSlcbiAgICAgICAgICAgIC5qb2luKCcsJyk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGRhdGVUb0lzb1N0cmluZyh2YWx1ZSwgJ2RhdGVUaW1lJywge3V0YzogdHJ1ZX0pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignRmlsdGVyIHZhbHVlIGNhbm5vdCBiZSBvYmplY3QnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW1ldGFkYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGF0YS1saXN0L2ZpbHRlci1tZXRhZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWx0ZXJNZXRhZGF0YX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0ZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZX0gZnJvbSAnLi4vZGF0YS1saXN0L2ZpbHRlci1tYXRjaC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uc0ZpbHRlck1ldGFkYXRhIGV4dGVuZHMgT21pdDxGaWx0ZXJNZXRhZGF0YSwgJ21hdGNoTW9kZSc+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgdXNlZCBmb3IgZGlzcGxheS5cbiAgICAgKi9cbiAgICBkaXNwbGF5VmFsdWU/OiBhbnk7XG4gICAgLyoqXG4gICAgICogVGhlIG1hdGNoIG1vZGUgZm9yIGRpc3BsYXkuXG4gICAgICovXG4gICAgZGlzcGxheU1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZTtcbiAgICAvKipcbiAgICAgKiBPdmVycmlkZGVuIFByaW1lTmcgRmlsdGVyTWV0YWRhdGEgdG8gaGF2ZSBtb3JlIHNwZWNpZmljIHR5cGUuXG4gICAgICovXG4gICAgbWF0Y2hNb2RlPzogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlO1xuICAgIC8qKlxuICAgICAqIENhc2Ugc2Vuc2l0aXZlIGZpbHRlciBmbGFnLlxuICAgICAqL1xuICAgIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xufVxuIl19
@@ -82,7 +82,7 @@ export function dateToIsoString(value, type = 'date-time', dateTimeOpts = {}) {
82
82
  ':' +
83
83
  padNumber(value.getSeconds());
84
84
  if (!dateTimeOpts.noMillis) {
85
- base += '.' + padNumber(value.getMilliseconds());
85
+ base += '.' + padNumber(value.getMilliseconds(), 3);
86
86
  }
87
87
  if (!dateTimeOpts.noTimezone) {
88
88
  const tzo = -value.getTimezoneOffset(), dif = tzo >= 0 ? '+' : '-';
@@ -116,4 +116,4 @@ export function angularDateFormatHasTime(ngDateFormat) {
116
116
  export function angularDateFormatHasSeconds(ngDateFormat) {
117
117
  return /[sS]/.test(ngDateFormat);
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2hlbHBlcnMvZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqTCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE9BQU87SUFDUCxDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsR0FBRztJQUNQLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsU0FBUztJQUNULENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixJQUFJLEVBQUUsSUFBSTtJ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QUFDLENBQUM7Z0JBQzFCLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFFBQXdCLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLGVBQWUsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekksQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVELGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV6RCxPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFlBQW9CO0lBQ3pELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFlBQW9CO0lBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgdG9Jc29TdHJpbmdUeXBlT3B0VHlwZSA9ICdkYXRlJyB8ICdkYXRlLXRpbWUnIHwgJ2RhdGVUaW1lJztcbmV4cG9ydCB0eXBlIHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSA9IHt1dGM/OiBib29sZWFuOyBub1RpbWV6b25lPzogYm9vbGVhbjsgbm9NaWxsaXM/OiBib29sZWFufTtcblxuY29uc3QgbmdQcmltZXJGb3JtYXRTdXBwb3J0ZWQgPSBbL2R7MSwyfS9nLCAvRXsxLDV9L2csIC9jezEsNX0vZywgL017MSw1fS9nLCAvTHsxLDV9L2csIC95ezEsNH0vZywgL1l7MSw0fS9nXTtcbmNvbnN0IG5nUHJpbWVGb3JtYXRPdGhlciA9IFsvR3sxLDV9L2csIC93ezEsMn0vZywgL1cvZywgL2F7MSw1fS9nLCAvQnsxLDV9L2csIC9iezEsNX0vZywgL2h7MSwyfS9nLCAvSHsxLDJ9L2csIC9tezEsMn0vZywgL3N7MSwyfS9nLCAvU3sxLDN9L2csIC96ezEsNH0vZywgL1p7MSw1fS9nLCAvT3sxLDR9L2ddO1xuY29uc3QgbmdQcmltZXJGb3JtYXRNYXAgPSB7XG4gICAgLy8gZGF5c1xuICAgIGQ6ICdkJyxcbiAgICBkZDogJ2RkJyxcbiAgICBFOiAnRCcsXG4gICAgRUU6ICdEJyxcbiAgICBFRUU6ICdEJyxcbiAgICBFRUVFOiAnREQnLFxuICAgIEVFRUVFOiAnRCcsXG4gICAgRUVFRUVFOiAnRCcsXG4gICAgYzogJ2QnLFxuICAgIGNjOiAnZGQnLFxuICAgIGNjYzogJ0QnLFxuICAgIGNjY2M6ICdERCcsXG4gICAgY2NjY2M6ICdEJyxcbiAgICBjY2NjY2M6ICdEJyxcbiAgICAvLyBtb250aHNcbiAgICBNOiAnbScsXG4gICAgTU06ICdtbScsXG4gICAgTU1NOiAnTScsXG4gICAgTU1NTTogJ01NJyxcbiAgICBNTU1NTTogJ00nLFxuICAgIEw6ICdtJyxcbiAgICBMTDogJ21tJyxcbiAgICBMTEw6ICdNJyxcbiAgICBMTExMOiAnTU0nLFxuICAgIExMTExMOiAnTScsXG4gICAgLy8geWVhclxuICAgIHk6ICd5JyxcbiAgICB5eTogJ3knLFxuICAgIHl5eTogJ3l5JyxcbiAgICB5eXl5OiAneXknLFxuICAgIFk6ICd5JyxcbiAgICBZWTogJ3knLFxuICAgIFlZWTogJ3l5JyxcbiAgICBZWVlZOiAneXknXG59O1xuXG5mdW5jdGlvbiBwYWROdW1iZXIobnVtOiBudW1iZXIsIHNpemUgPSAyKSB7XG4gICAgbGV0IHN0ciA9IFN0cmluZyhudW0pO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgICBzdHIgPSAnMCcgKyBzdHI7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHR5cGU/OiAnZGF0ZScpOiBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCB0eXBlOiAnZGF0ZS10aW1lJyB8ICdkYXRlVGltZScsIGRhdGVUaW1lT3B0cz86IHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSk6IHN0cmluZztcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duLCB0eXBlPzogJ2RhdGUnKTogbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duLCB0eXBlOiAnZGF0ZS10aW1lJyB8ICdkYXRlVGltZScsIGRhdGVUaW1lT3B0cz86IHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSk6IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiB1bmtub3duLCB0eXBlPzogdG9Jc29TdHJpbmdUeXBlT3B0VHlwZSwgZGF0ZVRpbWVPcHRzPzogdG9Jc29TdHJpbmdEYXRlVGltZU9wdHNUeXBlKTogc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVua25vd24sIHR5cGU6IHRvSXNvU3RyaW5nVHlwZU9wdFR5cGUgPSAnZGF0ZS10aW1lJywgZGF0ZVRpbWVPcHRzOiB0b0lzb1N0cmluZ0RhdGVUaW1lT3B0c1R5cGUgPSB7fSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAvLyBkYXRlIG9ubHksIG5vIHRpbWUgcGFydCAoYW5kIHRpbWV6b25lLCBtaWxsaXMsIHV0YyBkb2VzIG5vdCBtYXR0ZXIgLi4uKVxuICAgICAgICByZXR1cm4gdmFsdWUuZ2V0RnVsbFllYXIoKSArICctJyArIHBhZE51bWJlcih2YWx1ZS5nZXRNb250aCgpICsgMSkgKyAnLScgKyBwYWROdW1iZXIodmFsdWUuZ2V0RGF0ZSgpKTtcbiAgICB9XG4gICAgaWYgKGRhdGVUaW1lT3B0cy51dGMpIHtcbiAgICAgICAgbGV0IHN0ciA9IHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGlmIChkYXRlVGltZU9wdHMubm9NaWxsaXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvdElkeCA9IHN0ci5sYXN0SW5kZXhPZignLicpO1xuICAgICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBkb3RJZHgpICsgc3RyLnN1YnN0cmluZyhkb3RJZHggKyA0LCBzdHIubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZVRpbWVPcHRzLm5vVGltZXpvbmUpIHtcbiAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJhc2UgPVxuICAgICAgICAgICAgdmFsdWUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldERhdGUoKSkgK1xuICAgICAgICAgICAgJ1QnICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRIb3VycygpKSArXG4gICAgICAgICAgICAnOicgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldE1pbnV0ZXMoKSkgK1xuICAgICAgICAgICAgJzonICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRTZWNvbmRzKCkpO1xuXG4gICAgICAgIGlmICghZGF0ZVRpbWVPcHRzLm5vTWlsbGlzKSB7XG4gICAgICAgICAgICBiYXNlICs9ICcuJyArIHBhZE51bWJlcih2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRlVGltZU9wdHMubm9UaW1lem9uZSkge1xuICAgICAgICAgICAgY29uc3QgdHpvID0gLXZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAgICAgICAgICAgICAgZGlmID0gdHpvID49IDAgPyAnKycgOiAnLSc7XG5cbiAgICAgICAgICAgIGJhc2UgPSBiYXNlICsgKGRpZiArIHBhZE51bWJlcihNYXRoLmZsb29yKE1hdGguYWJzKHR6bykgLyA2MCkpICsgJzonICsgcGFkTnVtYmVyKE1hdGguYWJzKHR6bykgJSA2MCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZShuZ0RhdGVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHByaW1lRGF0ZUZvcm1hdCA9IG5nRGF0ZUZvcm1hdDtcbiAgICBmb3IgKGNvbnN0IHJlZ2V4IG9mIG5nUHJpbWVGb3JtYXRPdGhlcikge1xuICAgICAgICBwcmltZURhdGVGb3JtYXQgPSBwcmltZURhdGVGb3JtYXQucmVwbGFjZShyZWdleCwgJyAnKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZWdleCBvZiBuZ1ByaW1lckZvcm1hdFN1cHBvcnRlZCkge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gWy4uLnByaW1lRGF0ZUZvcm1hdC5tYXRjaEFsbChyZWdleCldLnJldmVyc2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2guaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaFN0ciA9IG1hdGNoWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gbmdQcmltZXJGb3JtYXRNYXBbbWF0Y2hTdHIgYXMga2V5b2Ygb2JqZWN0XSA/PyBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICBwcmltZURhdGVGb3JtYXQgPSBwcmltZURhdGVGb3JtYXQuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KSArIHJlcGxhY2VtZW50ICsgcHJpbWVEYXRlRm9ybWF0LnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoU3RyLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnJlcGxhY2UoL1xccytcXFdcXHMrL2csICcgJyk7XG4gICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnJlcGxhY2UoL1xcc1xccysvZywgJyAnKTtcblxuICAgIHJldHVybiBwcmltZURhdGVGb3JtYXQudHJpbSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5ndWxhckRhdGVGb3JtYXRIYXNUaW1lKG5nRGF0ZUZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9baEhtc1NdLy50ZXN0KG5nRGF0ZUZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmd1bGFyRGF0ZUZvcm1hdEhhc1NlY29uZHMobmdEYXRlRm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL1tzU10vLnRlc3QobmdEYXRlRm9ybWF0KTtcbn1cbiJdfQ==
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2hlbHBlcnMvZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqTCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE9BQU87SUFDUCxDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsR0FBRztJQUNQLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsU0FBUztJQUNULENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixJQUFJLEVBQUUsSUFBSTtJ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QUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxRQUF3QixDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RSxlQUFlLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pJLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNELGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RCxlQUFlLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFekQsT0FBTyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxZQUFvQjtJQUN6RCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxZQUFvQjtJQUM1RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHRvSXNvU3RyaW5nVHlwZU9wdFR5cGUgPSAnZGF0ZScgfCAnZGF0ZS10aW1lJyB8ICdkYXRlVGltZSc7XG5leHBvcnQgdHlwZSB0b0lzb1N0cmluZ0RhdGVUaW1lT3B0c1R5cGUgPSB7dXRjPzogYm9vbGVhbjsgbm9UaW1lem9uZT86IGJvb2xlYW47IG5vTWlsbGlzPzogYm9vbGVhbn07XG5cbmNvbnN0IG5nUHJpbWVyRm9ybWF0U3VwcG9ydGVkID0gWy9kezEsMn0vZywgL0V7MSw1fS9nLCAvY3sxLDV9L2csIC9NezEsNX0vZywgL0x7MSw1fS9nLCAveXsxLDR9L2csIC9ZezEsNH0vZ107XG5jb25zdCBuZ1ByaW1lRm9ybWF0T3RoZXIgPSBbL0d7MSw1fS9nLCAvd3sxLDJ9L2csIC9XL2csIC9hezEsNX0vZywgL0J7MSw1fS9nLCAvYnsxLDV9L2csIC9oezEsMn0vZywgL0h7MSwyfS9nLCAvbXsxLDJ9L2csIC9zezEsMn0vZywgL1N7MSwzfS9nLCAvensxLDR9L2csIC9aezEsNX0vZywgL097MSw0fS9nXTtcbmNvbnN0IG5nUHJpbWVyRm9ybWF0TWFwID0ge1xuICAgIC8vIGRheXNcbiAgICBkOiAnZCcsXG4gICAgZGQ6ICdkZCcsXG4gICAgRTogJ0QnLFxuICAgIEVFOiAnRCcsXG4gICAgRUVFOiAnRCcsXG4gICAgRUVFRTogJ0REJyxcbiAgICBFRUVFRTogJ0QnLFxuICAgIEVFRUVFRTogJ0QnLFxuICAgIGM6ICdkJyxcbiAgICBjYzogJ2RkJyxcbiAgICBjY2M6ICdEJyxcbiAgICBjY2NjOiAnREQnLFxuICAgIGNjY2NjOiAnRCcsXG4gICAgY2NjY2NjOiAnRCcsXG4gICAgLy8gbW9udGhzXG4gICAgTTogJ20nLFxuICAgIE1NOiAnbW0nLFxuICAgIE1NTTogJ00nLFxuICAgIE1NTU06ICdNTScsXG4gICAgTU1NTU06ICdNJyxcbiAgICBMOiAnbScsXG4gICAgTEw6ICdtbScsXG4gICAgTExMOiAnTScsXG4gICAgTExMTDogJ01NJyxcbiAgICBMTExMTDogJ00nLFxuICAgIC8vIHllYXJcbiAgICB5OiAneScsXG4gICAgeXk6ICd5JyxcbiAgICB5eXk6ICd5eScsXG4gICAgeXl5eTogJ3l5JyxcbiAgICBZOiAneScsXG4gICAgWVk6ICd5JyxcbiAgICBZWVk6ICd5eScsXG4gICAgWVlZWTogJ3l5J1xufTtcblxuZnVuY3Rpb24gcGFkTnVtYmVyKG51bTogbnVtYmVyLCBzaXplID0gMikge1xuICAgIGxldCBzdHIgPSBTdHJpbmcobnVtKTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgICAgc3RyID0gJzAnICsgc3RyO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCB0eXBlPzogJ2RhdGUnKTogc3RyaW5nO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUb0lzb1N0cmluZyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSwgdHlwZTogJ2RhdGUtdGltZScgfCAnZGF0ZVRpbWUnLCBkYXRlVGltZU9wdHM/OiB0b0lzb1N0cmluZ0RhdGVUaW1lT3B0c1R5cGUpOiBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiB1bmRlZmluZWQgfCBudWxsIHwgdW5rbm93biwgdHlwZT86ICdkYXRlJyk6IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiB1bmRlZmluZWQgfCBudWxsIHwgdW5rbm93biwgdHlwZTogJ2RhdGUtdGltZScgfCAnZGF0ZVRpbWUnLCBkYXRlVGltZU9wdHM/OiB0b0lzb1N0cmluZ0RhdGVUaW1lT3B0c1R5cGUpOiBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUb0lzb1N0cmluZyh2YWx1ZTogdW5rbm93biwgdHlwZT86IHRvSXNvU3RyaW5nVHlwZU9wdFR5cGUsIGRhdGVUaW1lT3B0cz86IHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSk6IHN0cmluZyB8IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiB1bmtub3duLCB0eXBlOiB0b0lzb1N0cmluZ1R5cGVPcHRUeXBlID0gJ2RhdGUtdGltZScsIGRhdGVUaW1lT3B0czogdG9Jc29TdHJpbmdEYXRlVGltZU9wdHNUeXBlID0ge30pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgLy8gZGF0ZSBvbmx5LCBubyB0aW1lIHBhcnQgKGFuZCB0aW1lem9uZSwgbWlsbGlzLCB1dGMgZG9lcyBub3QgbWF0dGVyIC4uLilcbiAgICAgICAgcmV0dXJuIHZhbHVlLmdldEZ1bGxZZWFyKCkgKyAnLScgKyBwYWROdW1iZXIodmFsdWUuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgcGFkTnVtYmVyKHZhbHVlLmdldERhdGUoKSk7XG4gICAgfVxuICAgIGlmIChkYXRlVGltZU9wdHMudXRjKSB7XG4gICAgICAgIGxldCBzdHIgPSB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgICAgICBpZiAoZGF0ZVRpbWVPcHRzLm5vTWlsbGlzKSB7XG4gICAgICAgICAgICBjb25zdCBkb3RJZHggPSBzdHIubGFzdEluZGV4T2YoJy4nKTtcbiAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgZG90SWR4KSArIHN0ci5zdWJzdHJpbmcoZG90SWR4ICsgNCwgc3RyLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVUaW1lT3B0cy5ub1RpbWV6b25lKSB7XG4gICAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBiYXNlID1cbiAgICAgICAgICAgIHZhbHVlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXREYXRlKCkpICtcbiAgICAgICAgICAgICdUJyArXG4gICAgICAgICAgICBwYWROdW1iZXIodmFsdWUuZ2V0SG91cnMoKSkgK1xuICAgICAgICAgICAgJzonICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRNaW51dGVzKCkpICtcbiAgICAgICAgICAgICc6JyArXG4gICAgICAgICAgICBwYWROdW1iZXIodmFsdWUuZ2V0U2Vjb25kcygpKTtcblxuICAgICAgICBpZiAoIWRhdGVUaW1lT3B0cy5ub01pbGxpcykge1xuICAgICAgICAgICAgYmFzZSArPSAnLicgKyBwYWROdW1iZXIodmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0ZVRpbWVPcHRzLm5vVGltZXpvbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHR6byA9IC12YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpLFxuICAgICAgICAgICAgICAgIGRpZiA9IHR6byA+PSAwID8gJysnIDogJy0nO1xuXG4gICAgICAgICAgICBiYXNlID0gYmFzZSArIChkaWYgKyBwYWROdW1iZXIoTWF0aC5mbG9vcihNYXRoLmFicyh0em8pIC8gNjApKSArICc6JyArIHBhZE51bWJlcihNYXRoLmFicyh0em8pICUgNjApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBiYXNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Bbmd1bGFyRGF0ZUZvcm1hdFRvUHJpbWUobmdEYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBwcmltZURhdGVGb3JtYXQgPSBuZ0RhdGVGb3JtYXQ7XG4gICAgZm9yIChjb25zdCByZWdleCBvZiBuZ1ByaW1lRm9ybWF0T3RoZXIpIHtcbiAgICAgICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnJlcGxhY2UocmVnZXgsICcgJyk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVnZXggb2YgbmdQcmltZXJGb3JtYXRTdXBwb3J0ZWQpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5wcmltZURhdGVGb3JtYXQubWF0Y2hBbGwocmVnZXgpXS5yZXZlcnNlKCk7XG4gICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgICAgICAgaWYgKG1hdGNoLmluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hTdHIgPSBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IG5nUHJpbWVyRm9ybWF0TWFwW21hdGNoU3RyIGFzIGtleW9mIG9iamVjdF0gPz8gbWF0Y2hbMF07XG4gICAgICAgICAgICAgICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleCkgKyByZXBsYWNlbWVudCArIHByaW1lRGF0ZUZvcm1hdC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyBtYXRjaFN0ci5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaW1lRGF0ZUZvcm1hdCA9IHByaW1lRGF0ZUZvcm1hdC5yZXBsYWNlKC9cXHMrXFxXXFxzKy9nLCAnICcpO1xuICAgIHByaW1lRGF0ZUZvcm1hdCA9IHByaW1lRGF0ZUZvcm1hdC5yZXBsYWNlKC9cXHNcXHMrL2csICcgJyk7XG5cbiAgICByZXR1cm4gcHJpbWVEYXRlRm9ybWF0LnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFuZ3VsYXJEYXRlRm9ybWF0SGFzVGltZShuZ0RhdGVGb3JtYXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvW2hIbXNTXS8udGVzdChuZ0RhdGVGb3JtYXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzKG5nRGF0ZUZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9bc1NdLy50ZXN0KG5nRGF0ZUZvcm1hdCk7XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ export function fromAngularNumberFormatToFractions(format) {
2
+ const hasDot = format.indexOf('.') >= 0;
3
+ const hasDash = format.indexOf('-') >= 0;
4
+ const [intPart, decPart] = format.split('.');
5
+ let int = hasDot || (!hasDot && !hasDash) ? +intPart : 1;
6
+ if (!int || isNaN(int))
7
+ int = 1;
8
+ let [fractionsMin, fractionsMax] = !hasDot && !hasDash ? [0, 0] : (hasDot ? decPart : intPart).split('-').map(f => +f);
9
+ if (isNaN(fractionsMin))
10
+ fractionsMin = 0;
11
+ if (fractionsMax == null || isNaN(fractionsMax))
12
+ fractionsMax = fractionsMin;
13
+ return {
14
+ integer: int,
15
+ fractionsMin: fractionsMin,
16
+ fractionsMax: fractionsMax
17
+ };
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLE1BQWM7SUFLN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkgsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUMxQyxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQztRQUFFLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDN0UsT0FBTztRQUNILE9BQU8sRUFBRSxHQUFHO1FBQ1osWUFBWSxFQUFFLFlBQVk7UUFDMUIsWUFBWSxFQUFFLFlBQVk7S0FDN0IsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZnJvbUFuZ3VsYXJOdW1iZXJGb3JtYXRUb0ZyYWN0aW9ucyhmb3JtYXQ6IHN0cmluZyk6IHtcbiAgICBpbnRlZ2VyOiBudW1iZXI7XG4gICAgZnJhY3Rpb25zTWluOiBudW1iZXI7XG4gICAgZnJhY3Rpb25zTWF4OiBudW1iZXI7XG59IHtcbiAgICBjb25zdCBoYXNEb3QgPSBmb3JtYXQuaW5kZXhPZignLicpID49IDA7XG4gICAgY29uc3QgaGFzRGFzaCA9IGZvcm1hdC5pbmRleE9mKCctJykgPj0gMDtcbiAgICBjb25zdCBbaW50UGFydCwgZGVjUGFydF0gPSBmb3JtYXQuc3BsaXQoJy4nKTtcbiAgICBsZXQgaW50ID0gaGFzRG90IHx8ICghaGFzRG90ICYmICFoYXNEYXNoKSA/ICtpbnRQYXJ0IDogMTtcbiAgICBpZiAoIWludCB8fCBpc05hTihpbnQpKSBpbnQgPSAxO1xuICAgIGxldCBbZnJhY3Rpb25zTWluLCBmcmFjdGlvbnNNYXhdID0gIWhhc0RvdCAmJiAhaGFzRGFzaCA/IFswLCAwXSA6IChoYXNEb3QgPyBkZWNQYXJ0IDogaW50UGFydCkuc3BsaXQoJy0nKS5tYXAoZiA9PiArZik7XG4gICAgaWYgKGlzTmFOKGZyYWN0aW9uc01pbikpIGZyYWN0aW9uc01pbiA9IDA7XG4gICAgaWYgKGZyYWN0aW9uc01heCA9PSBudWxsIHx8IGlzTmFOKGZyYWN0aW9uc01heCkpIGZyYWN0aW9uc01heCA9IGZyYWN0aW9uc01pbjtcbiAgICByZXR1cm4ge1xuICAgICAgICBpbnRlZ2VyOiBpbnQsXG4gICAgICAgIGZyYWN0aW9uc01pbjogZnJhY3Rpb25zTWluLFxuICAgICAgICBmcmFjdGlvbnNNYXg6IGZyYWN0aW9uc01heFxuICAgIH07XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy90eXBlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEtleU9mVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbDtcblxuZXhwb3J0IHR5cGUgTnVsbGFibGU8VD4gPSBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0T3B0UHJvcFR5cGU8T1QsIFAgZXh0ZW5kcyBrZXlvZiBPVCwgUFQ+ID0gUCBleHRlbmRzIGtleW9mIE9UID8gKE9UW1BdIGV4dGVuZHMgTnVsbGFibGU8UFQ+ID8gUCA6IG5ldmVyKSA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBLZXlvZkFuZE9mVHlwZTxUeXBlLCBQcm9wZXJ0eVR5cGU+ID0ge1xuICAgIFtLIGluIGtleW9mIFR5cGVdOiBOb25OdWxsYWJsZTxUeXBlW0tdPiBleHRlbmRzIE5vbk51bGxhYmxlPFByb3BlcnR5VHlwZT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFR5cGVdO1xuXG5leHBvcnQgdHlwZSBBcnJheUl0ZW1UeXBlPFQ+ID0gTm9uTnVsbGFibGU8VD4gZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IFUgOiBUO1xuXG5leHBvcnQgdHlwZSBJZFR5cGUgPSBudW1iZXIgfCBzdHJpbmc7XG5leHBvcnQgdHlwZSBQcmltaXRpdmVUeXBlID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9IFByaW1pdGl2ZVR5cGUgfCBEYXRlIHwgRW51bVR5cGU7XG5cbmV4cG9ydCB0eXBlIEl0ZW1Pck9ic2VydmFibGU8VD4gPSBUIHwgT2JzZXJ2YWJsZTxUPjtcblxuZXhwb3J0IHR5cGUgRW51bUNvbnN0YW50VHlwZSA9IHN0cmluZyB8IG51bWJlcjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtVHlwZTxWID0gRW51bUNvbnN0YW50VHlwZT4ge1xuICAgIFtrZXk6IHN0cmluZ106IFY7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy90eXBlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEtleU9mVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbDtcblxuZXhwb3J0IHR5cGUgTnVsbGFibGU8VD4gPSBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0T3B0UHJvcFR5cGU8T1QsIFAgZXh0ZW5kcyBrZXlvZiBPVCwgUFQ+ID0gUCBleHRlbmRzIGtleW9mIE9UID8gKE9UW1BdIGV4dGVuZHMgTnVsbGFibGU8UFQ+ID8gUCA6IG5ldmVyKSA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBLZXlvZkFuZE9mVHlwZTxUeXBlLCBQcm9wZXJ0eVR5cGU+ID0ge1xuICAgIFtLIGluIGtleW9mIFR5cGVdOiBOb25OdWxsYWJsZTxUeXBlW0tdPiBleHRlbmRzIE5vbk51bGxhYmxlPFByb3BlcnR5VHlwZT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFR5cGVdO1xuXG5leHBvcnQgdHlwZSBBcnJheUl0ZW1UeXBlPFQ+ID0gTm9uTnVsbGFibGU8VD4gZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IFUgOiBUO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVPckFycmF5VHlwZTxUPiA9IFQgfCBBcnJheTxUPjtcblxuZXhwb3J0IHR5cGUgSWRUeXBlID0gbnVtYmVyIHwgc3RyaW5nO1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlVHlwZSA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG5leHBvcnQgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQcmltaXRpdmVUeXBlIHwgRGF0ZSB8IEVudW1UeXBlO1xuXG5leHBvcnQgdHlwZSBJdGVtT3JPYnNlcnZhYmxlPFQ+ID0gVCB8IE9ic2VydmFibGU8VD47XG5cbmV4cG9ydCB0eXBlIEVudW1Db25zdGFudFR5cGUgPSBzdHJpbmcgfCBudW1iZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bVR5cGU8ViA9IEVudW1Db25zdGFudFR5cGU+IHtcbiAgICBba2V5OiBzdHJpbmddOiBWO1xufVxuIl19
@@ -9,6 +9,7 @@ export * from './components/pages/not-found/not-found.page.component';
9
9
  export * from './data-list/data-list.model';
10
10
  export * from './data-list/data-list-params-helpers';
11
11
  export * from './data-list/filter-match.model';
12
+ export * from './data-list/filter-metadata.model';
12
13
  // data-providers
13
14
  export * from './data-providers/base.data-provider';
14
15
  export * from './data-providers/base-data-provider.factory';
@@ -37,6 +38,7 @@ export * from './error/error-helpers';
37
38
  export * from './helpers/coercion';
38
39
  export * from './helpers/date';
39
40
  export * from './helpers/notification';
41
+ export * from './helpers/number';
40
42
  export * from './helpers/object';
41
43
  export * from './helpers/route';
42
44
  export * from './helpers/string';
@@ -102,4 +104,4 @@ export * from './styles/style.model';
102
104
  export * from './styles/style-constants';
103
105
  // provide
104
106
  export * from './provide';
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTO0FBQ1QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGFBQWE7QUFDYixjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUV0RSxZQUFZO0FBQ1osY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsaUJBQWlCO0FBQ2pCLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWM7QUFDZCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxhQUFhO0FBQ2IsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELFFBQVE7QUFDUixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsUUFBUTtBQUNSLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTztBQUNQLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLE1BQU07QUFDTixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxTQUFTO0FBQ1QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxRQUFRO0FBQ1IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxVQUFVO0FBQ1YsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLFdBQVc7QUFDWCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsU0FBUztBQUNULGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLE9BQU87QUFDUCxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELFdBQVc7QUFDWCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLFdBQVc7QUFDWCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFNBQVM7QUFDVCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsVUFBVTtBQUNWLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYWN0aW9uXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9hY3Rpb24tZGF0YS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9hY3Rpb24tcGFyYW1ldGVycy5tb2RlbCc7XG5cbi8vIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wYWdlcy9lcnJvci9lcnJvci5wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcGFnZXMvbm90LWZvdW5kL25vdC1mb3VuZC5wYWdlLmNvbXBvbmVudCc7XG5cbi8vIGRhdGEtbGlzdFxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWxpc3QvZGF0YS1saXN0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtbGlzdC9maWx0ZXItbWF0Y2gubW9kZWwnO1xuXG4vLyBkYXRhLXByb3ZpZGVyc1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLXByb3ZpZGVycy9iYXNlLmRhdGEtcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLXByb3ZpZGVycy9iYXNlLWRhdGEtcHJvdmlkZXIuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtcHJvdmlkZXJzL2xvb2t1cC5kYXRhLXByb3ZpZGVyJztcblxuLy8gZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9jb2x1bW4uZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvZW51bS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvZmlsdGVyLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9sb29rdXAuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL21vZGVsLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy90YWJsZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3InO1xuXG4vLyBkaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvY29tcG9uZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuLy8gZW51bXNcbmV4cG9ydCAqIGZyb20gJy4vZW51bS9lbnVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bS9lbnVtLWhlbHBlcnMnO1xuXG4vLyBlcnJvclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL2Vycm9yLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci1oZWxwZXJzJztcblxuLy8gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2NvZXJjaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL29iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvcm91dGUnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3N0cmluZyc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvdHlwZS1oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy90ZW1wbGF0ZXMnO1xuXG4vLyBpMThuXG5leHBvcnQgKiBmcm9tICcuL2kxOG4vaTE4bi1jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuL2kxOG4tZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuL2kxOG4tdHlwZSc7XG5cbi8vIGxvZ1xuZXhwb3J0ICogZnJvbSAnLi9sb2cvbG9nLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbG9nL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9nL2xvZ2dlci5zZXJ2aWNlJztcblxuLy8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jbGFzcy1hdHRyaWJ1dGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY2xhc3Mtc2VydmljZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9nZXR0ZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvaTE4bi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9tZW51Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3VzZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdmVyc2lvbi5tb2RlbCc7XG5cbi8vIHBpcGVzXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Jvb2xlYW4ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2NsYXNzLW1hcC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZW51bS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZW51bWVyYXRlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbnVtZXJhdGUtYXN5bmMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2dldHRlci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvaTE4bi1wcm9wZXJ0eS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvanNvbi1wYXRoLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9wYXJhbWV0cml6ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdGVtcGxhdGUucGlwZSc7XG5cbi8vIHJlZmxlY3RcbmV4cG9ydCAqIGZyb20gJy4vcmVmbGVjdC90eXBlLWVudW0tZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcmVmbGVjdC90eXBlLWVudW0tbWV0YWRhdGEnO1xuXG4vLyByZWdpc3RyeVxuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3RyeS9yZWdpc3RyeS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdHJ5L3R5cGUtcmVnaXN0cnknO1xuXG4vLyByb3V0ZXJcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyL3JvdXRlLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIvcm91dGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyL3JvdXRlcy1idWlsZGVyJztcblxuLy8gcnhqc1xuZXhwb3J0ICogZnJvbSAnLi9yeGpzL21hcC1kYXRhLWxpc3QtcmVzdWx0LW9wZXJhdG9yJztcblxuLy8gc2VjdXJpdHlcbmV4cG9ydCAqIGZyb20gJy4vc2VjdXJpdHkvcGVybWlzc2lvbi5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24taGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb25zLm1vZGVsJztcblxuLy8gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvcHJvdmlkZXJzL2NvbW1vbnMtaW5pdC5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvY29tbW9ucy1pbml0LnRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdG9rZW5zL2xvZy1wdWJsaXNoZXIudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1pbml0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLXJvdXRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1zdG9yYWdlLnNlcnZpY2UnO1xuXG4vLyBzdHlsZXNcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGVzL3N0eWxlLWNvbnN0YW50cyc7XG5cbi8vIHByb3ZpZGVcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZSc7XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTO0FBQ1QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGFBQWE7QUFDYixjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUV0RSxZQUFZO0FBQ1osY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxpQkFBaUI7QUFDakIsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYztBQUNkLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGFBQWE7QUFDYixjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsUUFBUTtBQUNSLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxRQUFRO0FBQ1IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsVUFBVTtBQUNWLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLE9BQU87QUFDUCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxNQUFNO0FBQ04sY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0JBQXNCLENBQUM7QUFFckMsU0FBUztBQUNULGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsUUFBUTtBQUNSLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsVUFBVTtBQUNWLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxXQUFXO0FBQ1gsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLFNBQVM7QUFDVCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxPQUFPO0FBQ1AsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxXQUFXO0FBQ1gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxXQUFXO0FBQ1gsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxTQUFTO0FBQ1QsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLFVBQVU7QUFDVixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFjdGlvblxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vYWN0aW9uLWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vYWN0aW9uLXBhcmFtZXRlcnMubW9kZWwnO1xuXG4vLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi13cmFwcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcGFnZXMvZXJyb3IvZXJyb3IucGFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BhZ2VzL25vdC1mb3VuZC9ub3QtZm91bmQucGFnZS5jb21wb25lbnQnO1xuXG4vLyBkYXRhLWxpc3RcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1saXN0L2RhdGEtbGlzdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtbGlzdC9kYXRhLWxpc3QtcGFyYW1zLWhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWxpc3QvZmlsdGVyLW1hdGNoLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1saXN0L2ZpbHRlci1tZXRhZGF0YS5tb2RlbCc7XG5cbi8vIGRhdGEtcHJvdmlkZXJzXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtcHJvdmlkZXJzL2Jhc2UuZGF0YS1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtcHJvdmlkZXJzL2Jhc2UtZGF0YS1wcm92aWRlci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1wcm92aWRlcnMvbG9va3VwLmRhdGEtcHJvdmlkZXInO1xuXG4vLyBkZXNjcmlwdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2NvbHVtbi5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9lbnVtLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9maWx0ZXIuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2xvb2t1cC5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvbW9kZWwuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL3RhYmxlLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5cbi8vIGRpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9jb21wb25lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG4vLyBlbnVtc1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtL2VudW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtL2VudW0taGVscGVycyc7XG5cbi8vIGVycm9yXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL2Vycm9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvZXJyb3ItaGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL2Vycm9yLWhlbHBlcnMnO1xuXG4vLyBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvY29lcmNpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL25vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvbnVtYmVyJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9vYmplY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3JvdXRlJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9zdHJpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3R5cGUtaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvdGVtcGxhdGVzJztcblxuLy8gaTE4blxuZXhwb3J0ICogZnJvbSAnLi9pMThuL2kxOG4tY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pMThuLWVycm9yJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pMThuLXR5cGUnO1xuXG4vLyBsb2dcbmV4cG9ydCAqIGZyb20gJy4vbG9nL2xvZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xvZy9sb2ctcHVibGlzaGVyLWNvbnNvbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZy9sb2dnZXIuc2VydmljZSc7XG5cbi8vIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY2xhc3MtYXR0cmlidXRlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NsYXNzLXNlcnZpY2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZ2V0dGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2kxOG4ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvbWVudS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy91c2VyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3ZlcnNpb24ubW9kZWwnO1xuXG4vLyBwaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9ib29sZWFuLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9jbGFzcy1tYXAucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2VudW0ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2VudW1lcmF0ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZW51bWVyYXRlLWFzeW5jLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9nZXR0ZXIucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2kxOG4tcHJvcGVydHkucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2pzb24tcGF0aC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcGFyYW1ldHJpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RlbXBsYXRlLnBpcGUnO1xuXG4vLyByZWZsZWN0XG5leHBvcnQgKiBmcm9tICcuL3JlZmxlY3QvdHlwZS1lbnVtLWRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3JlZmxlY3QvdHlwZS1lbnVtLW1ldGFkYXRhJztcblxuLy8gcmVnaXN0cnlcbmV4cG9ydCAqIGZyb20gJy4vcmVnaXN0cnkvcmVnaXN0cnkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3RyeS90eXBlLXJlZ2lzdHJ5JztcblxuLy8gcm91dGVyXG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci9yb3V0ZS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyL3JvdXRlci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci9yb3V0ZXMtYnVpbGRlcic7XG5cbi8vIHJ4anNcbmV4cG9ydCAqIGZyb20gJy4vcnhqcy9tYXAtZGF0YS1saXN0LXJlc3VsdC1vcGVyYXRvcic7XG5cbi8vIHNlY3VyaXR5XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cml0eS9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cml0eS9wZXJtaXNzaW9uLWhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cml0eS9wZXJtaXNzaW9ucy5tb2RlbCc7XG5cbi8vIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Byb3ZpZGVycy9jb21tb25zLWluaXQucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvYnJvd3Nlci1zdG9yYWdlLnRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdG9rZW5zL2NvbW1vbnMtaW5pdC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9sb2ctcHVibGlzaGVyLnRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdG9rZW5zL21vZHVsZS1jb25maWcudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtaW5pdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1yb3V0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtc3RvcmFnZS5zZXJ2aWNlJztcblxuLy8gc3R5bGVzXG5leHBvcnQgKiBmcm9tICcuL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0eWxlcy9zdHlsZS1jb25zdGFudHMnO1xuXG4vLyBwcm92aWRlXG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGUnO1xuIl19
@@ -2,6 +2,12 @@ import { Pipe } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class BooleanPipe {
4
4
  transform(value, yes, no, icon = false) {
5
+ if (typeof value === 'string') {
6
+ value = value.toLowerCase() === 'true';
7
+ }
8
+ else if (typeof value === 'number') {
9
+ value = value === 1;
10
+ }
5
11
  if (typeof value === 'boolean') {
6
12
  if (icon) {
7
13
  return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';
@@ -25,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
25
31
  pure: true
26
32
  }]
27
33
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvcGlwZXMvYm9vbGVhbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQUMsS0FBVSxFQUFFLEdBQVksRUFBRSxFQUFXLEVBQUUsSUFBSSxHQUFHLEtBQUs7UUFDekQsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDO1lBQzlELENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQztZQUM3RCxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQzs4R0FYUSxXQUFXOzRHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBTHZCLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsSUFBSTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdtbmdCb29sZWFuJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJvb2xlYW5QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHllcz86IHN0cmluZywgbm8/OiBzdHJpbmcsIGljb24gPSBmYWxzZSk6IGFueSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPyB5ZXMgPz8gJ3BpIHBpLWNoZWNrJyA6IG5vID8/ICdwaSBwaS10aW1lcyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IHllcyA/PyAnZ2VuZXJhbC55ZXMnIDogbm8gPz8gJ2dlbmVyYWwubm8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvcGlwZXMvYm9vbGVhbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQUMsS0FBVSxFQUFFLEdBQVksRUFBRSxFQUFXLEVBQUUsSUFBSSxHQUFHLEtBQUs7UUFDekQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDO1lBQzlELENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQztZQUM3RCxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQzs4R0FoQlEsV0FBVzs0R0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUx2QixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLElBQUk7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnbW5nQm9vbGVhbicsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCB5ZXM/OiBzdHJpbmcsIG5vPzogc3RyaW5nLCBpY29uID0gZmFsc2UpOiBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8geWVzID8/ICdwaSBwaS1jaGVjaycgOiBubyA/PyAncGkgcGktdGltZXMnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPyB5ZXMgPz8gJ2dlbmVyYWwueWVzJyA6IG5vID8/ICdnZW5lcmFsLm5vJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -19,8 +19,9 @@ import { COMMONS_MODULE_CONFIG_IT } from './services/tokens/module-config.token'
19
19
  export var CommonsFeatureTypeEnum;
20
20
  (function (CommonsFeatureTypeEnum) {
21
21
  CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["Layout"] = 0] = "Layout";
22
- CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["Tableview"] = 1] = "Tableview";
23
- CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["DataApiAsClassV1"] = 2] = "DataApiAsClassV1";
22
+ CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["Table"] = 1] = "Table";
23
+ CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["Tableview"] = 2] = "Tableview";
24
+ CommonsFeatureTypeEnum[CommonsFeatureTypeEnum["DataApiAsClassV1"] = 3] = "DataApiAsClassV1";
24
25
  })(CommonsFeatureTypeEnum || (CommonsFeatureTypeEnum = {}));
25
26
  export function provideCommons(config, ...features) {
26
27
  const providers = [
@@ -75,4 +76,4 @@ export function provideCommons(config, ...features) {
75
76
  });
76
77
  return providers;
77
78
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvc3JjL3Byb3ZpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsd0JBQXdCLEVBQXNCLE1BQU0sdUNBQXVDLENBQUM7QUFFcEcsTUFBTSxDQUFOLElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUM5Qix1RUFBTSxDQUFBO0lBQ04sNkVBQVMsQ0FBQTtJQUNULDJGQUFnQixDQUFBO0FBQ3BCLENBQUMsRUFKVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBSWpDO0FBT0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUE0QixFQUFFLEdBQUcsUUFBMEI7SUFDdEYsTUFBTSxTQUFTLEdBQWU7UUFDMUIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixjQUFjO1FBQ2QsbUJBQW1CO1FBRW5CLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIscUJBQXFCO1FBRXJCO1lBQ0ksT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxRQUFRLEVBQUUsTUFBTTtTQUNuQjtRQUNEO1lBQ0ksT0FBTyxFQUFFLFlBQVk7WUFDckIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7U0FDdkM7UUFDRDtZQUNJLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsRUFBRTtTQUN0RDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLDBCQUEwQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUM7WUFDdkMsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGFBQWE7WUFDdEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUU7U0FDeEM7UUFDRDtZQUNJLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWTtTQUNqQztRQUNEO1lBQ0ksT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLG1CQUFtQjtTQUNoQztLQUNKLENBQUM7SUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQmFja2VuZH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIEVycm9ySGFuZGxlciwgUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5cbmltcG9ydCB7Q29tbW9uc0Vycm9ySGFuZGxlcn0gZnJvbSAnLi9lcnJvci9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7TG9nUHVibGlzaGVyQ29uc29sZVNlcnZpY2V9IGZyb20gJy4vbG9nL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtUeXBlUmVnaXN0cnl9IGZyb20gJy4vcmVnaXN0cnkvdHlwZS1yZWdpc3RyeSc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNJbml0U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLWluaXQuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNSb3V0ZXJTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtjb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcn0gZnJvbSAnLi9zZXJ2aWNlcy9wcm92aWRlcnMvY29tbW9ucy1pbml0LnByb3ZpZGVyJztcbmltcG9ydCB7QlJPV1NFUl9TVE9SQUdFX0lUfSBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuaW1wb3J0IHtMT0dfUFVCTElTSEVSU30gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbG9nLXB1Ymxpc2hlci50b2tlbic7XG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwgQ29tbW9uc01vZHVsZUNvbmZpZ30gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5cbmV4cG9ydCBlbnVtIENvbW1vbnNGZWF0dXJlVHlwZUVudW0ge1xuICAgIExheW91dCxcbiAgICBUYWJsZXZpZXcsXG4gICAgRGF0YUFwaUFzQ2xhc3NWMVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNGZWF0dXJlIHtcbiAgICB0eXBlOiBDb21tb25zRmVhdHVyZVR5cGVFbnVtO1xuICAgIHByb3ZpZGVyczogUHJvdmlkZXJbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDb21tb25zKGNvbmZpZz86IENvbW1vbnNNb2R1bGVDb25maWcsIC4uLmZlYXR1cmVzOiBDb21tb25zRmVhdHVyZVtdKTogUHJvdmlkZXJbXSB7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgICAgICAvLyBwcmltZW5nIHNlcnZpY2VzXG4gICAgICAgIERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBDb25maXJtYXRpb25TZXJ2aWNlLFxuXG4gICAgICAgIC8vIHNlcnZpY2VzXG4gICAgICAgIENvbW1vbnNJbml0U2VydmljZSxcbiAgICAgICAgQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIENvbW1vbnNSb3V0ZXJTZXJ2aWNlLFxuICAgICAgICBQZXJtaXNzaW9uU2VydmljZSxcbiAgICAgICAgQ29tbW9uc1N0b3JhZ2VTZXJ2aWNlLFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCxcbiAgICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVHlwZVJlZ2lzdHJ5LFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gVHlwZVJlZ2lzdHJ5LmdldCgpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBjb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcixcbiAgICAgICAgICAgIGRlcHM6IFtIdHRwQmFja2VuZCwgQ29tbW9uc0luaXRTZXJ2aWNlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBMb2dnZXJTZXJ2aWNlLmdldCgpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExPR19QVUJMSVNIRVJTLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IExvZ1B1Ymxpc2hlckNvbnNvbGVTZXJ2aWNlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQlJPV1NFUl9TVE9SQUdFX0lULFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbG9jYWxTdG9yYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEVycm9ySGFuZGxlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBDb21tb25zRXJyb3JIYW5kbGVyXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgZmVhdHVyZXMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgcHJvdmlkZXJzLnB1c2goLi4uZi5wcm92aWRlcnMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3ZpZGVycztcbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvc3JjL3Byb3ZpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsd0JBQXdCLEVBQXNCLE1BQU0sdUNBQXVDLENBQUM7QUFFcEcsTUFBTSxDQUFOLElBQVksc0JBS1g7QUFMRCxXQUFZLHNCQUFzQjtJQUM5Qix1RUFBTSxDQUFBO0lBQ04scUVBQUssQ0FBQTtJQUNMLDZFQUFTLENBQUE7SUFDVCwyRkFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBTFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUtqQztBQU9ELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBNEIsRUFBRSxHQUFHLFFBQTBCO0lBQ3RGLE1BQU0sU0FBUyxHQUFlO1FBQzFCLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsY0FBYztRQUNkLG1CQUFtQjtRQUVuQixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUVyQjtZQUNJLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsUUFBUSxFQUFFLE1BQU07U0FDbkI7UUFDRDtZQUNJLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1NBQ3ZDO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLEVBQUU7U0FDdEQ7UUFDRDtZQUNJLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSwwQkFBMEI7WUFDdEMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDO1lBQ3ZDLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFO1NBQ3hDO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVk7U0FDakM7UUFDRDtZQUNJLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFFBQVEsRUFBRSxtQkFBbUI7U0FDaEM7S0FDSixDQUFDO0lBRUYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEJhY2tlbmR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBFcnJvckhhbmRsZXIsIFByb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuXG5pbXBvcnQge0NvbW1vbnNFcnJvckhhbmRsZXJ9IGZyb20gJy4vZXJyb3IvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQge0xvZ1B1Ymxpc2hlckNvbnNvbGVTZXJ2aWNlfSBmcm9tICcuL2xvZy9sb2ctcHVibGlzaGVyLWNvbnNvbGUuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4vbG9nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VHlwZVJlZ2lzdHJ5fSBmcm9tICcuL3JlZ2lzdHJ5L3R5cGUtcmVnaXN0cnknO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnLi9zZWN1cml0eS9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zSW5pdFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1pbml0LnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zUm91dGVyU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc1N0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc1NlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7Y29tbW9uc0luaXRpYWxpemVyUHJvdmlkZXJ9IGZyb20gJy4vc2VydmljZXMvcHJvdmlkZXJzL2NvbW1vbnMtaW5pdC5wcm92aWRlcic7XG5pbXBvcnQge0JST1dTRVJfU1RPUkFHRV9JVH0gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvYnJvd3Nlci1zdG9yYWdlLnRva2VuJztcbmltcG9ydCB7TE9HX1BVQkxJU0hFUlN9IGZyb20gJy4vc2VydmljZXMvdG9rZW5zL2xvZy1wdWJsaXNoZXIudG9rZW4nO1xuaW1wb3J0IHtDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIENvbW1vbnNNb2R1bGVDb25maWd9IGZyb20gJy4vc2VydmljZXMvdG9rZW5zL21vZHVsZS1jb25maWcudG9rZW4nO1xuXG5leHBvcnQgZW51bSBDb21tb25zRmVhdHVyZVR5cGVFbnVtIHtcbiAgICBMYXlvdXQsXG4gICAgVGFibGUsXG4gICAgVGFibGV2aWV3LFxuICAgIERhdGFBcGlBc0NsYXNzVjFcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25zRmVhdHVyZSB7XG4gICAgdHlwZTogQ29tbW9uc0ZlYXR1cmVUeXBlRW51bTtcbiAgICBwcm92aWRlcnM6IFByb3ZpZGVyW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29tbW9ucyhjb25maWc/OiBDb21tb25zTW9kdWxlQ29uZmlnLCAuLi5mZWF0dXJlczogQ29tbW9uc0ZlYXR1cmVbXSk6IFByb3ZpZGVyW10ge1xuICAgIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICAgICAgLy8gcHJpbWVuZyBzZXJ2aWNlc1xuICAgICAgICBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgQ29uZmlybWF0aW9uU2VydmljZSxcblxuICAgICAgICAvLyBzZXJ2aWNlc1xuICAgICAgICBDb21tb25zSW5pdFNlcnZpY2UsXG4gICAgICAgIENvbW1vbnNTZXJ2aWNlLFxuICAgICAgICBDb21tb25zUm91dGVyU2VydmljZSxcbiAgICAgICAgUGVybWlzc2lvblNlcnZpY2UsXG4gICAgICAgIENvbW1vbnNTdG9yYWdlU2VydmljZSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDT01NT05TX01PRFVMRV9DT05GSUdfSVQsXG4gICAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFR5cGVSZWdpc3RyeSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IFR5cGVSZWdpc3RyeS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogY29tbW9uc0luaXRpYWxpemVyUHJvdmlkZXIsXG4gICAgICAgICAgICBkZXBzOiBbSHR0cEJhY2tlbmQsIENvbW1vbnNJbml0U2VydmljZV0sXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gTG9nZ2VyU2VydmljZS5nZXQoKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMT0dfUFVCTElTSEVSUyxcbiAgICAgICAgICAgIHVzZUNsYXNzOiBMb2dQdWJsaXNoZXJDb25zb2xlU2VydmljZSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEJST1dTRVJfU1RPUkFHRV9JVCxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGxvY2FsU3RvcmFnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFcnJvckhhbmRsZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogQ29tbW9uc0Vycm9ySGFuZGxlclxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGZlYXR1cmVzLmZvckVhY2goZiA9PiB7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKC4uLmYucHJvdmlkZXJzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm92aWRlcnM7XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const COMMONS_MODULE_CONFIG_IT = new InjectionToken('COMMONS_MODULE_CONFIG');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUEwRDdDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TG9nQ29uZmlnfSBmcm9tICcuLi8uLi9sb2cvbG9nLm1vZGVsJztcbmltcG9ydCB7VmVyc2lvbkNvbmZpZ1R5cGV9IGZyb20gJy4uLy4uL21vZGVscy92ZXJzaW9uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ29sb3JTY2hlbWUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ2F1dG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNNb2R1bGVDb25maWcge1xuICAgIGFwcD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgb3duZXI/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29QYXRoTGlnaHQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGg/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGhMaWdodD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29OYW1lUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIGxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgZGF0YUxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgdmVyc2lvbj86IFZlcnNpb25Db25maWdUeXBlO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlcHJlY2F0ZWQgVXNlIGxheW91dCBjb25maWcgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgY29sb3JTY2hlbWU/OiBDb2xvclNjaGVtZTtcbiAgICB9O1xuICAgIGNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAgIHByb2plY3RFbnZpcm9ubWVudD86IGFueTtcbiAgICAgICAganNvblNvdXJjZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgICAgIHNraXBKc29uU291cmNlSW5pdD86IGJvb2xlYW47XG4gICAgICAgIGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNlcmlhbGl6YXRpb24/OiB7XG4gICAgICAgIGRhdGVUaW1lSW5VdGM/OiBib29sZWFuO1xuICAgICAgICBkYXRlVGltZVdpdGhUaW1lem9uZT86IGJvb2xlYW47XG4gICAgICAgIGRhdGVUaW1lV2l0aE1pbGxpcz86IGJvb2xlYW47XG4gICAgICAgIGZpbHRlcnNEYXRlT25seURpc2FibGVkPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIGxvZz86IExvZ0NvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21tb25zTW9kdWxlQ29uZmlnPignQ09NTU9OU19NT0RVTEVfQ09ORklHJyk7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUE0RDdDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TG9nQ29uZmlnfSBmcm9tICcuLi8uLi9sb2cvbG9nLm1vZGVsJztcbmltcG9ydCB7VmVyc2lvbkNvbmZpZ1R5cGV9IGZyb20gJy4uLy4uL21vZGVscy92ZXJzaW9uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ29sb3JTY2hlbWUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ2F1dG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNNb2R1bGVDb25maWcge1xuICAgIGFwcD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgb3duZXI/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29QYXRoTGlnaHQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGg/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGhMaWdodD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29OYW1lUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIGxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgZGF0YUxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgdmVyc2lvbj86IFZlcnNpb25Db25maWdUeXBlO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlcHJlY2F0ZWQgVXNlIGxheW91dCBjb25maWcgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgY29sb3JTY2hlbWU/OiBDb2xvclNjaGVtZTtcbiAgICB9O1xuICAgIGNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAgIHByb2plY3RFbnZpcm9ubWVudD86IGFueTtcbiAgICAgICAganNvblNvdXJjZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgICAgIHNraXBKc29uU291cmNlSW5pdD86IGJvb2xlYW47XG4gICAgICAgIGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNlcmlhbGl6YXRpb24/OiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZztcbiAgICBsb2c/OiBMb2dDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uc1NlcmlhbGl6YXRpb25Db25maWcge1xuICAgIGRhdGVUaW1lSW5VdGM/OiBib29sZWFuO1xuICAgIGRhdGVUaW1lV2l0aFRpbWV6b25lPzogYm9vbGVhbjtcbiAgICBkYXRlVGltZVdpdGhNaWxsaXM/OiBib29sZWFuO1xuICAgIGZpbHRlcnNEYXRlT25seURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21tb25zTW9kdWxlQ29uZmlnPignQ09NTU9OU19NT0RVTEVfQ09ORklHJyk7XG4iXX0=