@messaia/cdk 18.0.0-rc03 → 18.0.0-rc05

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 (26) hide show
  1. package/esm2022/lib/common/functions/functions.mjs +17 -5
  2. package/esm2022/lib/common/functions/utils.mjs +10 -1
  3. package/esm2022/lib/common/models/enum-item.mjs +1 -1
  4. package/esm2022/lib/common/models/enum-metadata.mjs +14 -0
  5. package/esm2022/lib/common/public_api.mjs +2 -1
  6. package/esm2022/lib/common/services/enum.service.mjs +32 -1
  7. package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +3 -3
  8. package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +10 -3
  9. package/esm2022/lib/forms/models/form-field-definition.mjs +6 -1
  10. package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +3 -3
  11. package/esm2022/lib/table/components/filter-select.component.mjs +10 -3
  12. package/esm2022/lib/table/models/table-column.mjs +6 -1
  13. package/fesm2022/messaia-cdk.mjs +102 -12
  14. package/fesm2022/messaia-cdk.mjs.map +1 -1
  15. package/lib/common/functions/functions.d.ts +11 -3
  16. package/lib/common/functions/utils.d.ts +7 -0
  17. package/lib/common/models/enum-item.d.ts +9 -0
  18. package/lib/common/models/enum-metadata.d.ts +13 -0
  19. package/lib/common/public_api.d.ts +1 -0
  20. package/lib/common/services/enum.service.d.ts +26 -0
  21. package/lib/common/styles/colors/_colors-dark.scss +342 -342
  22. package/lib/forms/helpers/abstract-select-form-field.component.d.ts +9 -1
  23. package/lib/forms/models/form-field-definition.d.ts +8 -0
  24. package/lib/table/components/filter-select.component.d.ts +9 -1
  25. package/lib/table/models/table-column.d.ts +8 -0
  26. package/package.json +1 -1
@@ -1,10 +1,22 @@
1
- import { endpointMetadataKey } from "../constants/constants";
1
+ import { endpointMetadataKey, headerMetadataKey } from "../constants/constants";
2
2
  /**
3
- * Gets endpoint from classes decorated with @Api
4
- * @param origin
5
- * @returns
3
+ * Gets the endpoint metadata from a class decorated with @Api.
4
+ *
5
+ * @param origin - The class from which to retrieve the endpoint metadata.
6
+ * @returns The endpoint as a string.
6
7
  */
7
8
  export function getEndpoint(origin) {
9
+ /* Retrieve and return the endpoint metadata associated with the given class */
8
10
  return Reflect.getMetadata(endpointMetadataKey, origin);
9
11
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL2Z1bmN0aW9ucy9mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0Q7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBYztJQUN0QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuZHBvaW50TWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgZW5kcG9pbnQgZnJvbSBjbGFzc2VzIGRlY29yYXRlZCB3aXRoIEBBcGlcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5kcG9pbnQob3JpZ2luOiBvYmplY3QpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoZW5kcG9pbnRNZXRhZGF0YUtleSwgb3JpZ2luKTtcclxufSJdfQ==
12
+ /**
13
+ * Gets the display header metadata from a class.
14
+ *
15
+ * @param origin - The class from which to retrieve the header metadata.
16
+ * @returns The display header as a string.
17
+ */
18
+ export function getDisplay(origin) {
19
+ /* Retrieve and return the display header metadata associated with the given class */
20
+ return Reflect.getMetadata(headerMetadataKey, origin);
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL2Z1bmN0aW9ucy9mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWM7SUFDdEMsK0VBQStFO0lBQy9FLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWM7SUFDckMscUZBQXFGO0lBQ3JGLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5kcG9pbnRNZXRhZGF0YUtleSwgaGVhZGVyTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIGVuZHBvaW50IG1ldGFkYXRhIGZyb20gYSBjbGFzcyBkZWNvcmF0ZWQgd2l0aCBAQXBpLlxyXG4gKiBcclxuICogQHBhcmFtIG9yaWdpbiAtIFRoZSBjbGFzcyBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBlbmRwb2ludCBtZXRhZGF0YS5cclxuICogQHJldHVybnMgVGhlIGVuZHBvaW50IGFzIGEgc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVuZHBvaW50KG9yaWdpbjogb2JqZWN0KTogc3RyaW5nIHtcclxuICAgIC8qIFJldHJpZXZlIGFuZCByZXR1cm4gdGhlIGVuZHBvaW50IG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY2xhc3MgKi9cclxuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKGVuZHBvaW50TWV0YWRhdGFLZXksIG9yaWdpbik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBkaXNwbGF5IGhlYWRlciBtZXRhZGF0YSBmcm9tIGEgY2xhc3MuXHJcbiAqIFxyXG4gKiBAcGFyYW0gb3JpZ2luIC0gVGhlIGNsYXNzIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlIGhlYWRlciBtZXRhZGF0YS5cclxuICogQHJldHVybnMgVGhlIGRpc3BsYXkgaGVhZGVyIGFzIGEgc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXkob3JpZ2luOiBvYmplY3QpOiBzdHJpbmcge1xyXG4gICAgLyogUmV0cmlldmUgYW5kIHJldHVybiB0aGUgZGlzcGxheSBoZWFkZXIgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjbGFzcyAqL1xyXG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoaGVhZGVyTWV0YWRhdGFLZXksIG9yaWdpbik7XHJcbn1cclxuIl19
@@ -253,10 +253,19 @@ export class Utils {
253
253
  return { url: url, params: null, hash: undefined };
254
254
  }
255
255
  }
256
+ /**
257
+ * Checks if the given object is a class.
258
+ *
259
+ * @param obj - The object to check.
260
+ * @returns `true` if the object is a class, otherwise `false`.
261
+ */
262
+ static isClass(obj) {
263
+ return typeof obj === 'function' && typeof obj.prototype === 'object';
264
+ }
256
265
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: Utils, deps: [], target: i0.ɵɵFactoryTarget.Directive });
257
266
  /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: Utils, ngImport: i0 });
258
267
  }
259
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: Utils, decorators: [{
260
269
  type: Directive
261
270
  }] });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFFZDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBbUM7UUFDN0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDMUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDeEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDM0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDL0IsQ0FBQztJQUVGOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsSUFBWTtRQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7YUFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7YUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFVLEVBQUUsV0FBVyxHQUFHLENBQUM7UUFDckQsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFXLEVBQUUsUUFBZ0I7UUFDeEQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWpDLDBDQUEwQztRQUMxQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxDQUFDO1FBRUQsNEJBQTRCO1FBQzVCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUksS0FBVSxFQUFFLFFBQWdCLEVBQUUsT0FBaUI7UUFDdEUsSUFBSSxPQUFPLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFJLEVBQUUsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQVMsQ0FBQyxRQUFRLENBQUMsR0FBSSxDQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFJLENBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBTyxJQUFjLEVBQUUsU0FBMEI7UUFDdkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNkLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLE1BQWM7UUFDbkQscURBQXFEO1FBQ3JELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLHlCQUF5QjtRQUN6QixJQUFJLGFBQWEsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVuRCw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLGFBQWEsR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBZ0IsRUFBRSxZQUFvQixDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFTO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0ksT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQXNCO1FBQ25ELDhEQUE4RDtRQUM5RCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFFdkIsNENBQTRDO1FBQzVDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsMENBQTBDO1lBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLGdFQUFnRTtnQkFDaEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHdFQUF3RTtnQkFDeEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQixFQUFFLGtCQUEwQixTQUFTO1FBQ25GLDJDQUEyQztRQUMzQyxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRWxDLHFEQUFxRDtRQUNyRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDaEMsNkNBQTZDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekMsMEJBQTBCO1lBQzFCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2QyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxtREFBbUQ7Z0JBQ25ELFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsZUFBZSxJQUFJLFNBQVMsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCw4Q0FBOEM7UUFDOUMsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVE7UUFDOUIsSUFBSSxDQUFDO1lBQ0QsS0FBSyxJQUFJLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNoRixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQVMsRUFBRSxJQUFTO1FBQ3JDLElBQUksQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUM3RCxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQUMsT0FBTyxLQUFLLENBQUM7UUFBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQ2pDLElBQUksQ0FBQztZQUNELG9CQUFvQjtZQUNwQixJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV6QyxjQUFjO1lBQ2QsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUV0QyxxQkFBcUI7WUFDckIsSUFBSSxhQUFhLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVoRCxnQ0FBZ0M7WUFDaEMsSUFBSSxTQUFTLEdBQVcsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLElBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1lBRWYsT0FBTyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQzswSEF2UlEsS0FBSzs4R0FBTCxLQUFLOzsyRkFBTCxLQUFLO2tCQURqQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vL0BkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9udGggbmFtZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXJtYW5Nb250aE5hbWVzOiB7IG5hbWU6IHN0cmluZywgaWQ6IG51bWJlciB9W10gPSBbXHJcbiAgICAgICAgeyBuYW1lOiAnSmFudWFyJywgaWQ6IDEgfSxcclxuICAgICAgICB7IG5hbWU6ICdGZWJydWFyJywgaWQ6IDIgfSxcclxuICAgICAgICB7IG5hbWU6ICdNw6RyeicsIGlkOiAzIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnQXByaWwnLCBpZDogNCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ01haScsIGlkOiA1IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnSnVuaScsIGlkOiA2IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnSnVsaScsIGlkOiA3IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnQXVndXN0JywgaWQ6IDggfSxcclxuICAgICAgICB7IG5hbWU6ICdTZXB0ZW1iZXInLCBpZDogOSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ09rdG9iZXInLCBpZDogMTAgfSxcclxuICAgICAgICB7IG5hbWU6ICdOb3ZlbWJlcicsIGlkOiAxMSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0RlemVtYmVyJywgaWQ6IDEyIH1cclxuICAgIF07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgcmFuZ2VcclxuICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICogQHBhcmFtIHN0YXJ0QXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZ2Uoc3RhcnQ6IG51bWJlciwgc3RvcDogbnVtYmVyLCBzdGVwOiBudW1iZXIpOiBSZWFkb25seUFycmF5PG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAoc3RvcCAtIHN0YXJ0KSAvIHN0ZXAgKyAxIH0sIChfLCBpKSA9PiBzdGFydCArIChpICogc3RlcCkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGVtcHR5IHZhbHVlcyBmcm9tIHRoZSBzcGVjaWZpZWQgb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0gb2JqIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUVtcHR5VmFsdWVzKG9iajogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxyXG4gICAgICAgICAgICAuZmlsdGVyKChbXywgdl0pID0+IHYgIT0gbnVsbClcclxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBbaywgdl0pID0+ICh7IC4uLmFjYywgW2tdOiB2IH0pLCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG51bWJlciBvZiBkYXlzIGxlZnQgaW4gdGhlIHNwZWNpZmllZCBtb250aFxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcGFyYW0gbW9udGhPZmZzZXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZGF5c0xlZnRJbk1vbnRoKGRhdGU6IERhdGUsIG1vbnRoT2Zmc2V0ID0gMCk6IG51bWJlciB7XHJcbiAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcbiAgICAgICAgdGltZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aE9mZnNldCk7XHJcbiAgICAgICAgdGltZS5zZXREYXRlKDApO1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heCgwLCB0aW1lLmdldERhdGUoKSA+IGRhdGUuZ2V0RGF0ZSgpID8gdGltZS5nZXREYXRlKCkgLSBkYXRlLmdldERhdGUoKSA6IDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmVkIG9iamVjdCBhbmQgcHJvcGVydHlcclxuICAgICAqIEBwYXJhbSBvYmplY3QgXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eVZhbHVlKG9iamVjdDogYW55LCBwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICAvKiBQcm9wZXJ0eSBub3QgZm91bmQgKi9cclxuICAgICAgICBpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ID09PSAndW5kZWZpbmVkJyB8fCAhcHJvcGVydHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBJbmRleCBvZiBuZXh0IHByb3BlcnR5IHNwbGl0ICovXHJcbiAgICAgICAgdmFyIGluZGV4ID0gcHJvcGVydHkuaW5kZXhPZignLicpXHJcblxyXG4gICAgICAgIC8qIFByb3BlcnR5IHNwbGl0IGZvdW5kOyByZWN1cnNpdmUgY2FsbCAqL1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFByb3BlcnR5VmFsdWUob2JqZWN0W3Byb3BlcnR5LnN1YnN0cmluZygwLCBpbmRleCldLCBwcm9wZXJ0eS5zdWJzdHIoaW5kZXggKyAxKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBObyBzcGxpdDsgZ2V0IHByb3BlcnR5ICovXHJcbiAgICAgICAgcmV0dXJuIG9iamVjdFtwcm9wZXJ0eV07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTb3J0cyBhbiBhcnJheSBvZiBvYmplY3QgYnkgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIGFycmF5IFxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5IFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgc29ydEFycmF5PFQ+KGFycmF5OiBUW10sIHByb3BlcnR5OiBzdHJpbmcsIHJldmVyc2U/OiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IHNvcnREaXIgPSByZXZlcnNlID09PSB0cnVlID8gLTEgOiAxO1xyXG4gICAgICAgIHJldHVybiBhcnJheSA9IChhcnJheT8uc29ydCgoYTogVCwgYjogVCkgPT4gKChhIGFzIGFueSlbcHJvcGVydHldID4gKGIgYXMgYW55KVtwcm9wZXJ0eV0pID8gc29ydERpciA6ICgoKGIgYXMgYW55KVtwcm9wZXJ0eV0gPiAoYSBhcyBhbnkpW3Byb3BlcnR5XSkgPyAoc29ydERpciAqIC0xKSA6IDApKSB8fCBbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFRha2VzIGFuIEFycmF5PFY+LCBhbmQgYSBncm91cGluZyBmdW5jdGlvbixcclxuICAgICAqIGFuZCByZXR1cm5zIGEgTWFwIG9mIHRoZSBhcnJheSBncm91cGVkIGJ5IHRoZSBncm91cGluZyBmdW5jdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbGlzdCBBbiBhcnJheSBvZiB0eXBlIFYuXHJcbiAgICAgKiBAcGFyYW0ga2V5R2V0dGVyIEEgRnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgdGhlIEFycmF5IHR5cGUgViBhcyBhbiBpbnB1dCwgYW5kIHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIEsuXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgIEsgaXMgZ2VuZXJhbGx5IGludGVuZGVkIHRvIGJlIGEgcHJvcGVydHkga2V5IG9mIFYuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgTWFwIG9mIHRoZSBhcnJheSBncm91cGVkIGJ5IHRoZSBncm91cGluZyBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBncm91cEFycmF5Qnk8SywgVj4obGlzdDogQXJyYXk8Vj4sIGtleUdldHRlcjogKGlucHV0OiBWKSA9PiBLKTogTWFwPEssIEFycmF5PFY+PiB7XHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxLLCBBcnJheTxWPj4oKTtcclxuICAgICAgICBsaXN0Py5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleUdldHRlcihpdGVtKTtcclxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG1hcC5nZXQoa2V5KTtcclxuICAgICAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGtleSwgW2l0ZW1dKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gbWFwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJ1bmNhdGVzIGEgdGV4dFxyXG4gICAgICogQHBhcmFtIHRleHQgXHJcbiAgICAgKiBAcGFyYW0gbGVuZ3RoIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUZXh0KHRleHQ6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIC8qIElmIHRleHQgaXMgbm90IGEgc3RyaW5nLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nICovXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZW1vdmUgaHRtbCB0YWdzICovXHJcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xyXG5cclxuICAgICAgICAvKiBUcnVuY2F0ZSB0aGUgc3RyaW5nICovXHJcbiAgICAgICAgbGV0IHRydW5jYXRlZFRleHQ6IHN0cmluZyA9IHRleHQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcblxyXG4gICAgICAgIC8qIEFkZCBlbGxpcHNpcyB0byB0aGUgdGV4dCAqL1xyXG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IGxlbmd0aCkge1xyXG4gICAgICAgICAgICB0cnVuY2F0ZWRUZXh0ID0gYCR7dHJ1bmNhdGVkVGV4dC50cmltKCl9Li4uYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVuY2F0ZWRUZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSm9pbnMgdGV4dCBhcnJheSBmcm8gdGFibGUgY29sdW1uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgam9pbkFycmF5KHZhbHVlczogc3RyaW5nW10sIG1heExlbmd0aDogbnVtYmVyID0gMik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICghdmFsdWVzIHx8IHZhbHVlcz8ubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgZmlyc3QgMiBuYW1lcyAqL1xyXG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5zbGljZSgwLCBtYXhMZW5ndGgpO1xyXG4gICAgICAgICAgICB2YWx1ZXNbMV0gPSBgJHt2YWx1ZXNbMV19LCAuLi5gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGA8c21hbGw+JHsodmFsdWVzLmpvaW4oJzxiclxcPicpKX08L3NtYWxsPmA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwUGFyYW1zXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBib2R5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9IdHRwUGFyYW1zKGJvZHk6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4gKGJvZHlba2V5XSA9PSBudWxsIHx8IGJvZHlba2V5XSA9PSAnJyB8fCBib2R5W2tleV0gPT0gJ3VuZGVmaW5lZCcpICYmIGJvZHlba2V5XSAhPSAwICYmIGRlbGV0ZSBib2R5W2tleV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGJvZHkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyBIdHRwUGFyYW1zIHRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gaHR0cFBhcmFtcyBIdHRwUGFyYW1zIG9iamVjdCB0byBjb252ZXJ0LlxyXG4gICAgICogQHJldHVybnMgQ29udmVydGVkIEphdmFTY3JpcHQgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGh0dHBQYXJhbXNUb09iamVjdChodHRwUGFyYW1zOiBIdHRwUGFyYW1zKTogYW55IHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGFuIGVtcHR5IG9iamVjdCB0byBzdG9yZSBjb252ZXJ0ZWQgcGFyYW1ldGVycyAqL1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGtleSBpbiBIdHRwUGFyYW1zICovXHJcbiAgICAgICAgaHR0cFBhcmFtcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUga2V5IGhhcyBtdWx0aXBsZSB2YWx1ZXMgKi9cclxuICAgICAgICAgICAgaWYgKGh0dHBQYXJhbXMuZ2V0QWxsKGtleSk/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgLyogZiBvbmx5IG9uZSB2YWx1ZSBleGlzdHMsIGFzc2lnbiBpdCBkaXJlY3RseSB0byBwYXJhbXNba2V5XSAqL1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zW2tleV0gPSBodHRwUGFyYW1zLmdldChrZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLyogSWYgbXVsdGlwbGUgdmFsdWVzIGV4aXN0LCBhc3NpZ24gYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHBhcmFtc1trZXldICovXHJcbiAgICAgICAgICAgICAgICBwYXJhbXNba2V5XSA9IGh0dHBQYXJhbXMuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjb252ZXJ0ZWQgSmF2YVNjcmlwdCBvYmplY3QgKi9cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgZmlsdGVyIG9iamVjdHMgdG8gYW4gSHR0cFBhcmFtcyBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyQXJyYXkgVGhlIGFycmF5IG9mIGZpbHRlciBvYmplY3RzLlxyXG4gICAgICogQHBhcmFtIHBhcmFtTmFtZVByZWZpeCBUaGUgcHJlZml4IGZvciB0aGUgcXVlcnkgcGFyYW1ldGVyIG5hbWVzIChkZWZhdWx0IGlzICdGaWx0ZXJzJykuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgSHR0cFBhcmFtcyBvYmplY3QgY29udGFpbmluZyB0aGUgY29uc3RydWN0ZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0b0FycmF5SHR0cFBhcmFtcyhmaWx0ZXJBcnJheTogYW55W10sIHBhcmFtTmFtZVByZWZpeDogc3RyaW5nID0gJ0ZpbHRlcnMnKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgLyogSW5pdGlhbGl6ZSBhbiBlbXB0eSBIdHRwUGFyYW1zIG9iamVjdCAqL1xyXG4gICAgICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIGVhY2ggZmlsdGVyIGluIHRoZSBmaWx0ZXIgYXJyYXkgKi9cclxuICAgICAgICBmaWx0ZXJBcnJheS5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvKiBHZXQgdGhlIGtleSBvZiB0aGUgZmlsdGVyIChlLmcuLCAnY2F0JykgKi9cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyS2V5ID0gT2JqZWN0LmtleXMoZmlsdGVyKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCB0aGUgdmFsdWVzIGFycmF5ICovXHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlcyA9IGZpbHRlcltmaWx0ZXJLZXldO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlcyAmJiBmaWx0ZXJWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgLyogSm9pbiB2YWx1ZXMgd2l0aCBjb21tYXMgYW5kIGFkZCB0byBIdHRwUGFyYW1zICovXHJcbiAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoYCR7cGFyYW1OYW1lUHJlZml4fVske2ZpbHRlcktleX1dYCwgZmlsdGVyVmFsdWVzLmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjb25zdHJ1Y3RlZCBIdHRwUGFyYW1zIG9iamVjdCAqL1xyXG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYW5zIHRoZSBvYmplY3RzXHJcbiAgICAgKiBSZW1vdmVzIGVtcHR5IHByb3BlcnRpZXNcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2xlYW5PYmplY3Qob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkIHx8IG9ialtwcm9wTmFtZV0gPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIG9iamVjdHMgYXJlIGVxdWFsXHJcbiAgICAgKiBAcGFyYW0gb2JqMSBcclxuICAgICAqIEBwYXJhbSBvYmoyIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKG9iajE6IGFueSwgb2JqMjogYW55KSB7XHJcbiAgICAgICAgdHJ5IHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iajEpID09PSBKU09OLnN0cmluZ2lmeShvYmoyKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHF1ZXJ5IHBhcmFtcyBhbmQgdGhlIGhhc2ggZnJvbSB0aGUgc3BlY2lmaWVkIHVybFxyXG4gICAgICogQHBhcmFtIHVybCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFVybFBhcnRzKHVybDogc3RyaW5nKTogeyB1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIGhhc2g/OiBzdHJpbmcgfSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLyogR2V0IHVybHMgcGFydHMgKi9cclxuICAgICAgICAgICAgdmFyIHVybEhhc2hQYXJ0cyA9IHVybD8uc3BsaXQoJyMnKSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCBoYXNoICovXHJcbiAgICAgICAgICAgIHZhciB1cmxIYXNoID0gdXJsSGFzaFBhcnRzWzFdID8/IG51bGw7XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgcXVlcnkgcGFydHMgKi9cclxuICAgICAgICAgICAgdmFyIHVybFF1ZXJ5UGFydHMgPSB1cmxIYXNoUGFydHNbMF0/LnNwbGl0KCc/Jyk7XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgcXVlcnkgcGFyYW1zIGFzIG9iamVjdCAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsUGFyYW1zOiBPYmplY3QgPSB1cmxRdWVyeVBhcnRzWzFdPy5zcGxpdChcIiZcIikucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IGN1cnIuc3BsaXQoXCI9XCIpO1xyXG4gICAgICAgICAgICAgICAgKHByZXYgYXMgYW55KVtkZWNvZGVVUklDb21wb25lbnQocFswXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KHBbMV0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgICAgICAgIH0sIHt9KSA/PyBudWxsO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiB1cmxRdWVyeVBhcnRzWzBdLCBwYXJhbXM6IHVybFBhcmFtcywgaGFzaDogdXJsSGFzaCB9O1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsLCBwYXJhbXM6IG51bGwsIGhhc2g6IHVuZGVmaW5lZCB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFFZDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBbUM7UUFDN0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDMUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDeEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDdkIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDM0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUs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QUFTLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFRO1FBQzFCLE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxJQUFJLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUM7SUFDMUUsQ0FBQzswSEFqU1EsS0FBSzs4R0FBTCxLQUFLOzsyRkFBTCxLQUFLO2tCQURqQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vL0BkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9udGggbmFtZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXJtYW5Nb250aE5hbWVzOiB7IG5hbWU6IHN0cmluZywgaWQ6IG51bWJlciB9W10gPSBbXHJcbiAgICAgICAgeyBuYW1lOiAnSmFudWFyJywgaWQ6IDEgfSxcclxuICAgICAgICB7IG5hbWU6ICdGZWJydWFyJywgaWQ6IDIgfSxcclxuICAgICAgICB7IG5hbWU6ICdNw6RyeicsIGlkOiAzIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnQXByaWwnLCBpZDogNCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ01haScsIGlkOiA1IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnSnVuaScsIGlkOiA2IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnSnVsaScsIGlkOiA3IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnQXVndXN0JywgaWQ6IDggfSxcclxuICAgICAgICB7IG5hbWU6ICdTZXB0ZW1iZXInLCBpZDogOSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ09rdG9iZXInLCBpZDogMTAgfSxcclxuICAgICAgICB7IG5hbWU6ICdOb3ZlbWJlcicsIGlkOiAxMSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0RlemVtYmVyJywgaWQ6IDEyIH1cclxuICAgIF07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgcmFuZ2VcclxuICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICogQHBhcmFtIHN0YXJ0QXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZ2Uoc3RhcnQ6IG51bWJlciwgc3RvcDogbnVtYmVyLCBzdGVwOiBudW1iZXIpOiBSZWFkb25seUFycmF5PG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAoc3RvcCAtIHN0YXJ0KSAvIHN0ZXAgKyAxIH0sIChfLCBpKSA9PiBzdGFydCArIChpICogc3RlcCkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGVtcHR5IHZhbHVlcyBmcm9tIHRoZSBzcGVjaWZpZWQgb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0gb2JqIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUVtcHR5VmFsdWVzKG9iajogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxyXG4gICAgICAgICAgICAuZmlsdGVyKChbXywgdl0pID0+IHYgIT0gbnVsbClcclxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBbaywgdl0pID0+ICh7IC4uLmFjYywgW2tdOiB2IH0pLCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG51bWJlciBvZiBkYXlzIGxlZnQgaW4gdGhlIHNwZWNpZmllZCBtb250aFxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcGFyYW0gbW9udGhPZmZzZXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZGF5c0xlZnRJbk1vbnRoKGRhdGU6IERhdGUsIG1vbnRoT2Zmc2V0ID0gMCk6IG51bWJlciB7XHJcbiAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcbiAgICAgICAgdGltZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aE9mZnNldCk7XHJcbiAgICAgICAgdGltZS5zZXREYXRlKDApO1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heCgwLCB0aW1lLmdldERhdGUoKSA+IGRhdGUuZ2V0RGF0ZSgpID8gdGltZS5nZXREYXRlKCkgLSBkYXRlLmdldERhdGUoKSA6IDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmVkIG9iamVjdCBhbmQgcHJvcGVydHlcclxuICAgICAqIEBwYXJhbSBvYmplY3QgXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eVZhbHVlKG9iamVjdDogYW55LCBwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICAvKiBQcm9wZXJ0eSBub3QgZm91bmQgKi9cclxuICAgICAgICBpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ID09PSAndW5kZWZpbmVkJyB8fCAhcHJvcGVydHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBJbmRleCBvZiBuZXh0IHByb3BlcnR5IHNwbGl0ICovXHJcbiAgICAgICAgdmFyIGluZGV4ID0gcHJvcGVydHkuaW5kZXhPZignLicpXHJcblxyXG4gICAgICAgIC8qIFByb3BlcnR5IHNwbGl0IGZvdW5kOyByZWN1cnNpdmUgY2FsbCAqL1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFByb3BlcnR5VmFsdWUob2JqZWN0W3Byb3BlcnR5LnN1YnN0cmluZygwLCBpbmRleCldLCBwcm9wZXJ0eS5zdWJzdHIoaW5kZXggKyAxKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBObyBzcGxpdDsgZ2V0IHByb3BlcnR5ICovXHJcbiAgICAgICAgcmV0dXJuIG9iamVjdFtwcm9wZXJ0eV07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTb3J0cyBhbiBhcnJheSBvZiBvYmplY3QgYnkgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIGFycmF5IFxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5IFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgc29ydEFycmF5PFQ+KGFycmF5OiBUW10sIHByb3BlcnR5OiBzdHJpbmcsIHJldmVyc2U/OiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IHNvcnREaXIgPSByZXZlcnNlID09PSB0cnVlID8gLTEgOiAxO1xyXG4gICAgICAgIHJldHVybiBhcnJheSA9IChhcnJheT8uc29ydCgoYTogVCwgYjogVCkgPT4gKChhIGFzIGFueSlbcHJvcGVydHldID4gKGIgYXMgYW55KVtwcm9wZXJ0eV0pID8gc29ydERpciA6ICgoKGIgYXMgYW55KVtwcm9wZXJ0eV0gPiAoYSBhcyBhbnkpW3Byb3BlcnR5XSkgPyAoc29ydERpciAqIC0xKSA6IDApKSB8fCBbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFRha2VzIGFuIEFycmF5PFY+LCBhbmQgYSBncm91cGluZyBmdW5jdGlvbixcclxuICAgICAqIGFuZCByZXR1cm5zIGEgTWFwIG9mIHRoZSBhcnJheSBncm91cGVkIGJ5IHRoZSBncm91cGluZyBmdW5jdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbGlzdCBBbiBhcnJheSBvZiB0eXBlIFYuXHJcbiAgICAgKiBAcGFyYW0ga2V5R2V0dGVyIEEgRnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgdGhlIEFycmF5IHR5cGUgViBhcyBhbiBpbnB1dCwgYW5kIHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIEsuXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgIEsgaXMgZ2VuZXJhbGx5IGludGVuZGVkIHRvIGJlIGEgcHJvcGVydHkga2V5IG9mIFYuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgTWFwIG9mIHRoZSBhcnJheSBncm91cGVkIGJ5IHRoZSBncm91cGluZyBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBncm91cEFycmF5Qnk8SywgVj4obGlzdDogQXJyYXk8Vj4sIGtleUdldHRlcjogKGlucHV0OiBWKSA9PiBLKTogTWFwPEssIEFycmF5PFY+PiB7XHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxLLCBBcnJheTxWPj4oKTtcclxuICAgICAgICBsaXN0Py5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleUdldHRlcihpdGVtKTtcclxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG1hcC5nZXQoa2V5KTtcclxuICAgICAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGtleSwgW2l0ZW1dKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gbWFwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJ1bmNhdGVzIGEgdGV4dFxyXG4gICAgICogQHBhcmFtIHRleHQgXHJcbiAgICAgKiBAcGFyYW0gbGVuZ3RoIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUZXh0KHRleHQ6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIC8qIElmIHRleHQgaXMgbm90IGEgc3RyaW5nLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nICovXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZW1vdmUgaHRtbCB0YWdzICovXHJcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xyXG5cclxuICAgICAgICAvKiBUcnVuY2F0ZSB0aGUgc3RyaW5nICovXHJcbiAgICAgICAgbGV0IHRydW5jYXRlZFRleHQ6IHN0cmluZyA9IHRleHQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcblxyXG4gICAgICAgIC8qIEFkZCBlbGxpcHNpcyB0byB0aGUgdGV4dCAqL1xyXG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IGxlbmd0aCkge1xyXG4gICAgICAgICAgICB0cnVuY2F0ZWRUZXh0ID0gYCR7dHJ1bmNhdGVkVGV4dC50cmltKCl9Li4uYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVuY2F0ZWRUZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSm9pbnMgdGV4dCBhcnJheSBmcm8gdGFibGUgY29sdW1uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgam9pbkFycmF5KHZhbHVlczogc3RyaW5nW10sIG1heExlbmd0aDogbnVtYmVyID0gMik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICghdmFsdWVzIHx8IHZhbHVlcz8ubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgZmlyc3QgMiBuYW1lcyAqL1xyXG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5zbGljZSgwLCBtYXhMZW5ndGgpO1xyXG4gICAgICAgICAgICB2YWx1ZXNbMV0gPSBgJHt2YWx1ZXNbMV19LCAuLi5gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGA8c21hbGw+JHsodmFsdWVzLmpvaW4oJzxiclxcPicpKX08L3NtYWxsPmA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwUGFyYW1zXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBib2R5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9IdHRwUGFyYW1zKGJvZHk6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4gKGJvZHlba2V5XSA9PSBudWxsIHx8IGJvZHlba2V5XSA9PSAnJyB8fCBib2R5W2tleV0gPT0gJ3VuZGVmaW5lZCcpICYmIGJvZHlba2V5XSAhPSAwICYmIGRlbGV0ZSBib2R5W2tleV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGJvZHkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyBIdHRwUGFyYW1zIHRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gaHR0cFBhcmFtcyBIdHRwUGFyYW1zIG9iamVjdCB0byBjb252ZXJ0LlxyXG4gICAgICogQHJldHVybnMgQ29udmVydGVkIEphdmFTY3JpcHQgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGh0dHBQYXJhbXNUb09iamVjdChodHRwUGFyYW1zOiBIdHRwUGFyYW1zKTogYW55IHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGFuIGVtcHR5IG9iamVjdCB0byBzdG9yZSBjb252ZXJ0ZWQgcGFyYW1ldGVycyAqL1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGtleSBpbiBIdHRwUGFyYW1zICovXHJcbiAgICAgICAgaHR0cFBhcmFtcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUga2V5IGhhcyBtdWx0aXBsZSB2YWx1ZXMgKi9cclxuICAgICAgICAgICAgaWYgKGh0dHBQYXJhbXMuZ2V0QWxsKGtleSk/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgLyogZiBvbmx5IG9uZSB2YWx1ZSBleGlzdHMsIGFzc2lnbiBpdCBkaXJlY3RseSB0byBwYXJhbXNba2V5XSAqL1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zW2tleV0gPSBodHRwUGFyYW1zLmdldChrZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLyogSWYgbXVsdGlwbGUgdmFsdWVzIGV4aXN0LCBhc3NpZ24gYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHBhcmFtc1trZXldICovXHJcbiAgICAgICAgICAgICAgICBwYXJhbXNba2V5XSA9IGh0dHBQYXJhbXMuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjb252ZXJ0ZWQgSmF2YVNjcmlwdCBvYmplY3QgKi9cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgZmlsdGVyIG9iamVjdHMgdG8gYW4gSHR0cFBhcmFtcyBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyQXJyYXkgVGhlIGFycmF5IG9mIGZpbHRlciBvYmplY3RzLlxyXG4gICAgICogQHBhcmFtIHBhcmFtTmFtZVByZWZpeCBUaGUgcHJlZml4IGZvciB0aGUgcXVlcnkgcGFyYW1ldGVyIG5hbWVzIChkZWZhdWx0IGlzICdGaWx0ZXJzJykuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgSHR0cFBhcmFtcyBvYmplY3QgY29udGFpbmluZyB0aGUgY29uc3RydWN0ZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0b0FycmF5SHR0cFBhcmFtcyhmaWx0ZXJBcnJheTogYW55W10sIHBhcmFtTmFtZVByZWZpeDogc3RyaW5nID0gJ0ZpbHRlcnMnKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgLyogSW5pdGlhbGl6ZSBhbiBlbXB0eSBIdHRwUGFyYW1zIG9iamVjdCAqL1xyXG4gICAgICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIGVhY2ggZmlsdGVyIGluIHRoZSBmaWx0ZXIgYXJyYXkgKi9cclxuICAgICAgICBmaWx0ZXJBcnJheS5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvKiBHZXQgdGhlIGtleSBvZiB0aGUgZmlsdGVyIChlLmcuLCAnY2F0JykgKi9cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyS2V5ID0gT2JqZWN0LmtleXMoZmlsdGVyKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCB0aGUgdmFsdWVzIGFycmF5ICovXHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlcyA9IGZpbHRlcltmaWx0ZXJLZXldO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlcyAmJiBmaWx0ZXJWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgLyogSm9pbiB2YWx1ZXMgd2l0aCBjb21tYXMgYW5kIGFkZCB0byBIdHRwUGFyYW1zICovXHJcbiAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoYCR7cGFyYW1OYW1lUHJlZml4fVske2ZpbHRlcktleX1dYCwgZmlsdGVyVmFsdWVzLmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjb25zdHJ1Y3RlZCBIdHRwUGFyYW1zIG9iamVjdCAqL1xyXG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYW5zIHRoZSBvYmplY3RzXHJcbiAgICAgKiBSZW1vdmVzIGVtcHR5IHByb3BlcnRpZXNcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2xlYW5PYmplY3Qob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkIHx8IG9ialtwcm9wTmFtZV0gPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIG9iamVjdHMgYXJlIGVxdWFsXHJcbiAgICAgKiBAcGFyYW0gb2JqMSBcclxuICAgICAqIEBwYXJhbSBvYmoyIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKG9iajE6IGFueSwgb2JqMjogYW55KSB7XHJcbiAgICAgICAgdHJ5IHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iajEpID09PSBKU09OLnN0cmluZ2lmeShvYmoyKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHF1ZXJ5IHBhcmFtcyBhbmQgdGhlIGhhc2ggZnJvbSB0aGUgc3BlY2lmaWVkIHVybFxyXG4gICAgICogQHBhcmFtIHVybCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFVybFBhcnRzKHVybDogc3RyaW5nKTogeyB1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIGhhc2g/OiBzdHJpbmcgfSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLyogR2V0IHVybHMgcGFydHMgKi9cclxuICAgICAgICAgICAgdmFyIHVybEhhc2hQYXJ0cyA9IHVybD8uc3BsaXQoJyMnKSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCBoYXNoICovXHJcbiAgICAgICAgICAgIHZhciB1cmxIYXNoID0gdXJsSGFzaFBhcnRzWzFdID8/IG51bGw7XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgcXVlcnkgcGFydHMgKi9cclxuICAgICAgICAgICAgdmFyIHVybFF1ZXJ5UGFydHMgPSB1cmxIYXNoUGFydHNbMF0/LnNwbGl0KCc/Jyk7XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgcXVlcnkgcGFyYW1zIGFzIG9iamVjdCAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsUGFyYW1zOiBPYmplY3QgPSB1cmxRdWVyeVBhcnRzWzFdPy5zcGxpdChcIiZcIikucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IGN1cnIuc3BsaXQoXCI9XCIpO1xyXG4gICAgICAgICAgICAgICAgKHByZXYgYXMgYW55KVtkZWNvZGVVUklDb21wb25lbnQocFswXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KHBbMV0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgICAgICAgIH0sIHt9KSA/PyBudWxsO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiB1cmxRdWVyeVBhcnRzWzBdLCBwYXJhbXM6IHVybFBhcmFtcywgaGFzaDogdXJsSGFzaCB9O1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsLCBwYXJhbXM6IG51bGwsIGhhc2g6IHVuZGVmaW5lZCB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgY2xhc3MuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3QgaXMgYSBjbGFzcywgb3RoZXJ3aXNlIGBmYWxzZWAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNDbGFzcyhvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmoucHJvdG90eXBlID09PSAnb2JqZWN0JztcclxuICAgIH1cclxufSJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL21vZGVscy9lbnVtLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRW51bUl0ZW08RT4geyBpZDogRTsgbmFtZToga2V5b2YgRTsgfSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL21vZGVscy9lbnVtLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGFuIGl0ZW0gaW4gYW4gZW51bSwgcHJvdmlkaW5nIElEIGFuZCBuYW1lIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JdGVtPEU+IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIElEIG9mIHRoZSBlbnVtIGl0ZW0sIHdoaWNoIGlzIHR5cGljYWxseSBpdHMgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGlkOiBFO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGVudW0gaXRlbSwgd2hpY2ggaXMgdHlwaWNhbGx5IG9uZSBvZiBpdHMga2V5cy5cclxuICAgICAqL1xyXG4gICAgbmFtZToga2V5b2YgRTtcclxufVxyXG4iXX0=
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Metadata class for enum values, containing display information and ordering.
3
+ */
4
+ export class EnumMetadata {
5
+ /**
6
+ * Optional display string associated with the enum value.
7
+ */
8
+ display;
9
+ /**
10
+ * Optional order number used for sorting enum values.
11
+ */
12
+ order;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2NvbW1vbi9tb2RlbHMvZW51bS1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3JCOztPQUVHO0lBQ0ksT0FBTyxDQUFVO0lBRXhCOztPQUVHO0lBQ0ksS0FBSyxDQUFVO0NBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE1ldGFkYXRhIGNsYXNzIGZvciBlbnVtIHZhbHVlcywgY29udGFpbmluZyBkaXNwbGF5IGluZm9ybWF0aW9uIGFuZCBvcmRlcmluZy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBFbnVtTWV0YWRhdGEge1xyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25hbCBkaXNwbGF5IHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGVudW0gdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNwbGF5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3B0aW9uYWwgb3JkZXIgbnVtYmVyIHVzZWQgZm9yIHNvcnRpbmcgZW51bSB2YWx1ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcmRlcj86IG51bWJlcjtcclxufSJdfQ==
@@ -6,6 +6,7 @@ export * from './enums/salutation';
6
6
  export * from './models/app-event';
7
7
  export * from './models/displayname-number-projection';
8
8
  export * from './models/displayname-projection';
9
+ export * from './models/enum-metadata';
9
10
  export * from './models/name-number-projection';
10
11
  export * from './models/name-projection';
11
12
  export * from './models/title-projection';
@@ -31,4 +32,4 @@ export * from './pipes/truncate.pipe';
31
32
  export * from './pipes/values';
32
33
  export * from './services/event-queue.service';
33
34
  export * from './templates/templates';
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2NvbW1vbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kZWxheWVkLWhvdmVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kaXNhYmxlLWNvbnRyb2wuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9hcHAtZXZlbnQtdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvc2FsdXRhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2FwcC1ldmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2Rpc3BsYXluYW1lLW51bWJlci1wcm9qZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGlzcGxheW5hbWUtcHJvamVjdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL25hbWUtbnVtYmVyLXByb2plY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9uYW1lLXByb2plY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90aXRsZS1wcm9qZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9kYXRhLXNvdXJjZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbnVtLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9maWx0ZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZmlyc3QtbGV0dGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9mb3JtLWFycmF5LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Zvcm0tY29udHJvbC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9mb3JtLWdyb3VwLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Z1bmMucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMva2V5cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvbW9udGgtbmFtZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9vbmx5LW51bWJlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvb3JkZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcGxhY2Vob2xkZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3NwbGl0LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RpbWUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdGl0bGVjYXNlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RydW5jYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3ZhbHVlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZXZlbnQtcXVldWUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVzL3RlbXBsYXRlcyc7XHJcblxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2NvbW1vbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21tb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RlbGF5ZWQtaG92ZXIuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2Rpc2FibGUtY29udHJvbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2FwcC1ldmVudC10eXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9zYWx1dGF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvYXBwLWV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGlzcGxheW5hbWUtbnVtYmVyLXByb2plY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9kaXNwbGF5bmFtZS1wcm9qZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZW51bS1tZXRhZGF0YSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL25hbWUtbnVtYmVyLXByb2plY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9uYW1lLXByb2plY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90aXRsZS1wcm9qZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9kYXRhLXNvdXJjZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbnVtLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9maWx0ZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZmlyc3QtbGV0dGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9mb3JtLWFycmF5LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Zvcm0tY29udHJvbC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9mb3JtLWdyb3VwLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2Z1bmMucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMva2V5cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvbW9udGgtbmFtZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9vbmx5LW51bWJlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvb3JkZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcGxhY2Vob2xkZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3NwbGl0LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RpbWUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdGl0bGVjYXNlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RydW5jYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3ZhbHVlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZXZlbnQtcXVldWUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVzL3RlbXBsYXRlcyc7XHJcblxyXG4iXX0=
@@ -35,10 +35,41 @@ export class EnumService {
35
35
  .filter(v => typeof v === "string")
36
36
  .map(key => ({ id: enumType[key], name: `${prefix}${key}` }));
37
37
  }
38
+ /**
39
+ * Function to get ordered enum values based on metadata
40
+ * @param enumObj
41
+ * @param metadataObj
42
+ * @returns
43
+ */
44
+ static getOrderedValues2(enumObj, metadataObj) {
45
+ const orderedValues = Object.keys(enumObj)
46
+ .map(key => parseInt(key, 10))
47
+ .filter(key => !isNaN(key))
48
+ .sort((a, b) => (metadataObj[a]?.order ?? 0) - (metadataObj[b]?.order ?? 0))
49
+ .map(key => ({ key, value: enumObj[key] }));
50
+ return orderedValues;
51
+ }
52
+ /**
53
+ * Function to get ordered enum values based on metadata
54
+ * @param enumObj The enum object
55
+ * @param metadataObj Metadata object containing enum metadata
56
+ * @returns An array of EnumItem objects representing ordered enum values
57
+ */
58
+ static getOrderedValues(enumObj, metadataObj) {
59
+ const orderedValues = Object.keys(enumObj)
60
+ .map(key => parseInt(key, 10))
61
+ .filter(key => !isNaN(key))
62
+ .sort((a, b) => (metadataObj[a]?.order ?? 0) - (metadataObj[b]?.order ?? 0))
63
+ .map(key => ({
64
+ id: key,
65
+ name: metadataObj[key]?.display ?? enumObj[key],
66
+ }));
67
+ return orderedValues;
68
+ }
38
69
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EnumService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
70
  /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EnumService });
40
71
  }
41
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EnumService, decorators: [{
42
73
  type: Injectable
43
74
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL3NlcnZpY2VzL2VudW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxVQUFVO0FBRVYsTUFBTSxPQUFPLFdBQVc7SUFFdkI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQVEsUUFBZSxFQUFFLEtBQWE7UUFDeEQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQVEsUUFBZTtRQUM5QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLFFBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNSLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRyxRQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFjLENBQUE7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBUSxRQUFlLEVBQUUsU0FBaUIsRUFBRTtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLFFBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUcsUUFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQXNCLENBQUEsQ0FBQyxDQUFDO0lBQzVGLENBQUM7MEhBcENXLFdBQVc7OEhBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW51bUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZW51bS1pdGVtJztcclxuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi9tb2RlbHMva2V5LXZhbHVlJztcclxuXHJcbi8vQGR5bmFtaWNcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRW51bVNlcnZpY2Uge1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXJzZXMgYSBzdHJpbmcgdG8gYW4gZW51bSB2YWx1ZVxyXG5cdCAqIEBwYXJhbSBlbnVtVHlwZSBUaGUgdHlwZSBvZiB0aGUgZW51bVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGFyc2VcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIHBhcnNlPFRFbnVtPihlbnVtVHlwZTogVEVudW0sIHZhbHVlOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0bGV0IGtleVZhbHVlID0gdGhpcy50b0tleVZhbHVlKGVudW1UeXBlKS5maWx0ZXIoeCA9PiB4LmtleT8udG9Mb3dlckNhc2UoKSA9PSAodmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkpWzBdO1xyXG5cdFx0aWYgKGtleVZhbHVlKSB7XHJcblx0XHRcdHJldHVybiBrZXlWYWx1ZS52YWx1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlcyBhbiBlbnVtIHRvIGEgbGlzdCBvZiBrZXktdmFsdWUgb2JqZWN0c1xyXG5cdCAqIEBwYXJhbSBlbnVtVHlwZSBUaGUgdHlwZSBvZiB0aGUgZW51bVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgdG9LZXlWYWx1ZTxURW51bT4oZW51bVR5cGU6IFRFbnVtKTogQXJyYXk8S2V5VmFsdWU+IHtcclxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhlbnVtVHlwZSBhcyBhbnkpXHJcblx0XHRcdC5tYXAoayA9PiAoZW51bVR5cGUgYXMgYW55KVtrXSlcclxuXHRcdFx0LmZpbHRlcih2ID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHQubWFwKHggPT4ge1xyXG5cdFx0XHRcdHJldHVybiB7IGtleTogeCwgdmFsdWU6IChlbnVtVHlwZSBhcyBhbnkpW3hdIH0gYXMgS2V5VmFsdWVcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0cyBlbnVtIHR5cGUgdG8gQXJyYXk8RW51bUl0ZW0+XHJcblx0ICogQHBhcmFtIGVudW1UeXBlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgdG9BcnJheTxURW51bT4oZW51bVR5cGU6IFRFbnVtLCBwcmVmaXg6IHN0cmluZyA9ICcnKTogRW51bUl0ZW08VEVudW0+W10ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKGVudW1UeXBlIGFzIGFueSlcclxuXHRcdFx0Lm1hcChrID0+IChlbnVtVHlwZSBhcyBhbnkpW2tdKVxyXG5cdFx0XHQuZmlsdGVyKHYgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdC5tYXAoa2V5ID0+ICh7IGlkOiAoZW51bVR5cGUgYXMgYW55KVtrZXldLCBuYW1lOiBgJHtwcmVmaXh9JHtrZXl9YCB9IGFzIEVudW1JdGVtPFRFbnVtPikpO1xyXG5cdH1cclxufSJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL3NlcnZpY2VzL2VudW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxVQUFVO0FBRVYsTUFBTSxPQUFPLFdBQVc7SUFFdkI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQVEsUUFBZSxFQUFFLEtBQWE7UUFDeEQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQVEsUUFBZTtRQUM5QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLFFBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNSLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRyxRQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFjLENBQUE7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBUSxRQUFlLEVBQUUsU0FBaUIsRUFBRTtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLFFBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO2FBQ2xDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUcsUUFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQXNCLENBQUEsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBbUIsT0FBNEIsRUFBRSxXQUEwQztRQUN6SCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN4QyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBTSxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQVUsQ0FBQyxDQUFDO2FBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDM0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBbUIsT0FBNEIsRUFBRSxXQUEwQztRQUN4SCxNQUFNLGFBQWEsR0FBa0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdkQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQU0sQ0FBQzthQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFVLENBQUMsQ0FBQzthQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzNFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDWixFQUFFLEVBQUUsR0FBRztZQUNQLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQVE7U0FDdEQsQ0FBQyxDQUFrQixDQUFDO1FBRXRCLE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUM7MEhBdkVXLFdBQVc7OEhBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW51bUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZW51bS1pdGVtJztcclxuaW1wb3J0IHsgRW51bU1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2VudW0tbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJy4uL21vZGVscy9rZXktdmFsdWUnO1xyXG5cclxuLy9AZHluYW1pY1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFbnVtU2VydmljZSB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlcyBhIHN0cmluZyB0byBhbiBlbnVtIHZhbHVlXHJcblx0ICogQHBhcmFtIGVudW1UeXBlIFRoZSB0eXBlIG9mIHRoZSBlbnVtXHJcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBwYXJzZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0aWMgcGFyc2U8VEVudW0+KGVudW1UeXBlOiBURW51bSwgdmFsdWU6IHN0cmluZyk6IGFueSB7XHJcblx0XHRsZXQga2V5VmFsdWUgPSB0aGlzLnRvS2V5VmFsdWUoZW51bVR5cGUpLmZpbHRlcih4ID0+IHgua2V5Py50b0xvd2VyQ2FzZSgpID09ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKSlbMF07XHJcblx0XHRpZiAoa2V5VmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuIGtleVZhbHVlLnZhbHVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2VzIGFuIGVudW0gdG8gYSBsaXN0IG9mIGtleS12YWx1ZSBvYmplY3RzXHJcblx0ICogQHBhcmFtIGVudW1UeXBlIFRoZSB0eXBlIG9mIHRoZSBlbnVtXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyB0b0tleVZhbHVlPFRFbnVtPihlbnVtVHlwZTogVEVudW0pOiBBcnJheTxLZXlWYWx1ZT4ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKGVudW1UeXBlIGFzIGFueSlcclxuXHRcdFx0Lm1hcChrID0+IChlbnVtVHlwZSBhcyBhbnkpW2tdKVxyXG5cdFx0XHQuZmlsdGVyKHYgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdC5tYXAoeCA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHsga2V5OiB4LCB2YWx1ZTogKGVudW1UeXBlIGFzIGFueSlbeF0gfSBhcyBLZXlWYWx1ZVxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnZlcnRzIGVudW0gdHlwZSB0byBBcnJheTxFbnVtSXRlbT5cclxuXHQgKiBAcGFyYW0gZW51bVR5cGUgXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyB0b0FycmF5PFRFbnVtPihlbnVtVHlwZTogVEVudW0sIHByZWZpeDogc3RyaW5nID0gJycpOiBFbnVtSXRlbTxURW51bT5bXSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMoZW51bVR5cGUgYXMgYW55KVxyXG5cdFx0XHQubWFwKGsgPT4gKGVudW1UeXBlIGFzIGFueSlba10pXHJcblx0XHRcdC5maWx0ZXIodiA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0Lm1hcChrZXkgPT4gKHsgaWQ6IChlbnVtVHlwZSBhcyBhbnkpW2tleV0sIG5hbWU6IGAke3ByZWZpeH0ke2tleX1gIH0gYXMgRW51bUl0ZW08VEVudW0+KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGdW5jdGlvbiB0byBnZXQgb3JkZXJlZCBlbnVtIHZhbHVlcyBiYXNlZCBvbiBtZXRhZGF0YVxyXG5cdCAqIEBwYXJhbSBlbnVtT2JqIFxyXG5cdCAqIEBwYXJhbSBtZXRhZGF0YU9iaiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGljIGdldE9yZGVyZWRWYWx1ZXMyPFQgZXh0ZW5kcyBudW1iZXI+KGVudW1PYmo6IHsgW2tleSBpbiBUXTogYW55IH0sIG1ldGFkYXRhT2JqOiB7IFtrZXkgaW4gVF0/OiBFbnVtTWV0YWRhdGEgfSk6IEFycmF5PHsga2V5OiBULCB2YWx1ZTogYW55IH0+IHtcclxuXHRcdGNvbnN0IG9yZGVyZWRWYWx1ZXMgPSBPYmplY3Qua2V5cyhlbnVtT2JqKVxyXG5cdFx0XHQubWFwKGtleSA9PiBwYXJzZUludChrZXksIDEwKSBhcyBUKVxyXG5cdFx0XHQuZmlsdGVyKGtleSA9PiAhaXNOYU4oa2V5IGFzIGFueSkpXHJcblx0XHRcdC5zb3J0KChhLCBiKSA9PiAobWV0YWRhdGFPYmpbYV0/Lm9yZGVyID8/IDApIC0gKG1ldGFkYXRhT2JqW2JdPy5vcmRlciA/PyAwKSlcclxuXHRcdFx0Lm1hcChrZXkgPT4gKHsga2V5LCB2YWx1ZTogZW51bU9ialtrZXldIH0pKTtcclxuXHJcblx0XHRyZXR1cm4gb3JkZXJlZFZhbHVlcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCBvcmRlcmVkIGVudW0gdmFsdWVzIGJhc2VkIG9uIG1ldGFkYXRhXHJcblx0ICogQHBhcmFtIGVudW1PYmogVGhlIGVudW0gb2JqZWN0XHJcblx0ICogQHBhcmFtIG1ldGFkYXRhT2JqIE1ldGFkYXRhIG9iamVjdCBjb250YWluaW5nIGVudW0gbWV0YWRhdGFcclxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBFbnVtSXRlbSBvYmplY3RzIHJlcHJlc2VudGluZyBvcmRlcmVkIGVudW0gdmFsdWVzXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBnZXRPcmRlcmVkVmFsdWVzPFQgZXh0ZW5kcyBudW1iZXI+KGVudW1PYmo6IHsgW2tleSBpbiBUXTogYW55IH0sIG1ldGFkYXRhT2JqOiB7IFtrZXkgaW4gVF0/OiBFbnVtTWV0YWRhdGEgfSk6IEVudW1JdGVtPFQ+W10ge1xyXG5cdFx0Y29uc3Qgb3JkZXJlZFZhbHVlczogRW51bUl0ZW08VD5bXSA9IE9iamVjdC5rZXlzKGVudW1PYmopXHJcblx0XHRcdC5tYXAoa2V5ID0+IHBhcnNlSW50KGtleSwgMTApIGFzIFQpXHJcblx0XHRcdC5maWx0ZXIoa2V5ID0+ICFpc05hTihrZXkgYXMgYW55KSlcclxuXHRcdFx0LnNvcnQoKGEsIGIpID0+IChtZXRhZGF0YU9ialthXT8ub3JkZXIgPz8gMCkgLSAobWV0YWRhdGFPYmpbYl0/Lm9yZGVyID8/IDApKVxyXG5cdFx0XHQubWFwKGtleSA9PiAoe1xyXG5cdFx0XHRcdGlkOiBrZXksXHJcblx0XHRcdFx0bmFtZTogbWV0YWRhdGFPYmpba2V5XT8uZGlzcGxheSA/PyBlbnVtT2JqW2tleV0gYXMgYW55LFxyXG5cdFx0XHR9KSkgYXMgRW51bUl0ZW08VD5bXTtcclxuXHJcblx0XHRyZXR1cm4gb3JkZXJlZFZhbHVlcztcclxuXHR9XHJcbn0iXX0=