@eo-sdk/client 9.3.0-rc.1 → 9.4.0-rc.1

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 (53) hide show
  1. package/app/eo-framework/actions/action.module.d.ts +3 -1
  2. package/app/eo-framework/actions/actions/delete-action/delete/delete.component.d.ts +2 -1
  3. package/app/eo-framework/actions/actions/signature-action/signature/signature.component.d.ts +96 -0
  4. package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts +19 -0
  5. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +4 -3
  6. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -0
  7. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -0
  8. package/app/eo-framework-core/search/app-search.service.d.ts +5 -0
  9. package/assets/_default/i18n/de.json +23 -6
  10. package/assets/_default/i18n/en.json +35 -18
  11. package/assets/_default/svg/ic_signature.svg +1 -0
  12. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +168 -61
  13. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  14. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  15. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  16. package/bundles/eo-sdk-client.umd.js +208 -27
  17. package/bundles/eo-sdk-client.umd.js.map +1 -1
  18. package/bundles/eo-sdk-client.umd.min.js +1 -1
  19. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  20. package/eo-sdk-client.d.ts +12 -10
  21. package/eo-sdk-client.metadata.json +1 -1
  22. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  23. package/esm2015/app/eo-framework/actions/action.module.js +9 -3
  24. package/esm2015/app/eo-framework/actions/actions/delete-action/delete/delete.component.js +14 -6
  25. package/esm2015/app/eo-framework/actions/actions/signature-action/signature/signature.component.js +109 -0
  26. package/esm2015/app/eo-framework/actions/actions/signature-action/signature-action.component.js +38 -0
  27. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +10 -4
  28. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +3 -2
  29. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.js +3 -2
  30. package/esm2015/app/eo-framework/object-form/object-form.module.js +2 -2
  31. package/esm2015/app/eo-framework/tree/tree.component.js +2 -2
  32. package/esm2015/app/eo-framework/ui/signature-tab/signature-tab.component.js +3 -3
  33. package/esm2015/app/eo-framework/upload-overlay/upload-overlay.component.js +2 -2
  34. package/esm2015/app/eo-framework-core/search/app-search.service.js +15 -1
  35. package/esm2015/eo-sdk-client.js +13 -11
  36. package/esm2015/projects/eo-sdk/core/lib/eo-core.module.js +3 -1
  37. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +6 -2
  38. package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +64 -62
  39. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +5 -2
  40. package/esm2015/projects/eo-sdk/core/lib/service/signing/signing.service.js +97 -0
  41. package/esm2015/projects/eo-sdk/core/public_api.js +2 -1
  42. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +167 -63
  43. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  44. package/fesm2015/eo-sdk-client.js +190 -19
  45. package/fesm2015/eo-sdk-client.js.map +1 -1
  46. package/package.json +2 -2
  47. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  48. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +2 -1
  49. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +3 -1
  50. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +83 -0
  51. package/projects/eo-sdk/core/package.json +1 -1
  52. package/projects/eo-sdk/core/public_api.d.ts +1 -0
  53. package/proxy.config.json +5 -0
@@ -142,7 +142,10 @@ export class SearchService {
142
142
  ? res.aggregations[baseParam].buckets
143
143
  : [];
144
144
  aggregations.forEach(aggregation => {
145
- const { key, doc_count, contextfoldertype } = aggregation;
145
+ let { key, doc_count, contextfoldertype } = aggregation;
146
+ if (baseParam === 'filesize') {
147
+ doc_count = aggregation['filter#documents'].doc_count;
148
+ }
146
149
  state.addAggregations(baseParam, key, doc_count, aggregation);
147
150
  /**
148
151
  * type aggregations may also contain buckets for their context types
@@ -464,4 +467,4 @@ SearchService.ctorParameters = () => [
464
467
  { type: BackendService },
465
468
  { type: Config }
466
469
  ];
467
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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QUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUMzQjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDBCQUEwQixDQUFDLE9BQXVCLEVBQUUsYUFBYTtRQUMvRCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLElBQUksR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDL0QsSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDOzs7WUEvbEJGLFVBQVU7OztZQWRILGFBQWE7WUFGYixjQUFjO1lBQ2QsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xuaW1wb3J0IHtSYW5nZVZhbHVlfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWFyY2hGaWx0ZXJUeXBlfSBmcm9tICcuL3NlYXJjaC1maWx0ZXItdHlwZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRmllbGREZWZpbml0aW9uLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFF1ZXJ5LFxuICBTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJy4vc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIFNlYXJjaCBTZXJ2aWNlc1xuICogU2VlIHtAbGluayBTZWFyY2hRdWVyeX0gZm9yIFF1ZXJ5IERlZmluaXRpb25cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUmFuZ2VWYWx1ZSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgb2JqZWN0IHRvIGJlXG4gICAqIEByZXR1cm5zIFJhbmdlVmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdG9SYW5nZVZhbHVlKHZhbHVlOiBhbnkpOiBSYW5nZVZhbHVlIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdmFsdWUuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykgJiZcbiAgICAgICAgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2ZpcnN0VmFsdWUnKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShcbiAgICAgICAgICB2YWx1ZS5vcGVyYXRvcixcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgIHZhbHVlLnNlY29uZFZhbHVlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnJvbWF0ZWQgc2VhcmNoIFF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeVxuICAgKiBAcmV0dXJucyBTZWFyY2hRdWVyeVxuICAgKi9cbiAgcHVibGljIGJ1aWxkUXVlcnkocXVlcnk6IGFueSk6IFNlYXJjaFF1ZXJ5IHtcbiAgICBsZXQgcTogU2VhcmNoUXVlcnk7XG4gICAgaWYgKHF1ZXJ5IGluc3RhbmNlb2YgU2VhcmNoUXVlcnkpIHtcbiAgICAgIHEgPSBxdWVyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHFPYmo7XG4gICAgICAvKipcbiAgICAgICAqIGlmIHdlIGdvdCBhIHN0cmluZywgd2UnbGwgYXNzdW1lIHRoYXQgaXQncyBhIEpTT05cbiAgICAgICAqL1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcU9iaiA9IEpTT04ucGFyc2UocXVlcnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcU9iaiA9IHF1ZXJ5O1xuICAgICAgfVxuXG4gICAgICBxID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XG4gICAgICBxLnRlcm0gPSBxT2JqLnRlcm07XG4gICAgICBpZiAocU9iai5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHFPYmouZmlsdGVycykuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICBxLmZpbHRlcnMucHVzaChcbiAgICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXG4gICAgICAgICAgICAgIGssXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS5vLFxuICAgICAgICAgICAgICBxT2JqLmZpbHRlcnNba10udjEsXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MlxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHFPYmoudHlwZXMpIHtcbiAgICAgICAgcU9iai50eXBlcy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKSB7XG4gICAgICAgICAgICBxLnR5cGVzLnB1c2godGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZSh0KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHFPYmouY29udGV4dGZvbGRlcnR5cGVzKSB7XG4gICAgICAgIHFPYmouY29udGV4dGZvbGRlcnR5cGVzLmZvckVhY2godCA9PiB7XG4gICAgICAgICAgaWYgKHQgPT09ICdzeXNyb290Jykge1xuICAgICAgICAgICAgLy8gJ3N5c3Jvb3QnIGlzIG5vdCBhIHJlYWwgb2JqZWN0IHR5cGUsIHNvIHdlIGhhdmUgdG8gY3JlYXRlIGEgZmFrZSB0eXBlLlxuICAgICAgICAgICAgY29uc3Qgc3lzcm9vdEZha2VPYmplY3RUeXBlID0gbmV3IE9iamVjdFR5cGUoe1xuICAgICAgICAgICAgICBpZDogJ2EnLFxuICAgICAgICAgICAgICBmb2xkZXI6IHRydWUsXG4gICAgICAgICAgICAgIG5hbWU6ICdzeXNyb290JyxcbiAgICAgICAgICAgICAgcW5hbWU6ICdzeXNyb290JyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdzeXNyb290JyxcbiAgICAgICAgICAgICAgaXNjb250ZXh0Zm9sZGVyOiB0cnVlLFxuICAgICAgICAgICAgICBhYnN0cmFjdDogZmFsc2UsXG4gICAgICAgICAgICAgIGVsZW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICBzaGFyZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICBtaW5maWxlczogMCxcbiAgICAgICAgICAgICAgbWF4ZmlsZXM6IDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcS5jb250ZXh0Rm9sZGVyVHlwZXMucHVzaChzeXNyb290RmFrZU9iamVjdFR5cGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBxLmZpZWxkcyA9IHFPYmouZmllbGRzO1xuICAgICAgaWYgKHFPYmoub3B0aW9ucykge1xuICAgICAgICBxLnN1Z2dlc3QgPSBxT2JqLm9wdGlvbnMuc3VnZ2VzdCB8fCBmYWxzZTtcbiAgICAgICAgcS5leHBlcnRNb2RlID0gcU9iai5vcHRpb25zLmV4cGVydG1vZGUgfHwgZmFsc2U7XG4gICAgICAgIHEuc2NvcGUgPSBxT2JqLm9wdGlvbnMuc2NvcGU7XG4gICAgICAgIC8vIFwifHxcIiBkb2VzIG5vdCB3b3JrIGZvciByZWNvZ25pemluZyBcImZhbHNlXCIgd2l0aCBwcmlvcml0eSBvdmVyIFwiZGVmYXVsdCB0cnVlXCJcbiAgICAgICAgcS5yZXNvbHZlUmVmZXJlbmNlID0gKHFPYmoub3B0aW9ucy5yZXNvbHZlcmVmZXJlbmNlICE9PSBudWxsKSA/IHFPYmoub3B0aW9ucy5yZXNvbHZlcmVmZXJlbmNlIDpcbiAgICAgICAgICAoIHFPYmoub3B0aW9ucy5yZXNvbHZlUmVmZXJlbmNlICE9PSBudWxsID8gcU9iai5vcHRpb25zLnJlc29sdmVSZWZlcmVuY2UgOiB0cnVlKTtcbiAgICAgICAgLy8gd2l0aENvbnRleHQgd2FzIG9sZCBhbmQgXCJ3cm9uZ1wiIG5hbWUgb2YgcGFyYW1ldGVyXG4gICAgICAgIHEud2l0aENvbnRleHQgPSBxT2JqLm9wdGlvbnMud2l0aGNvbnRleHQgfHwgcU9iai5vcHRpb25zLndpdGhDb250ZXh0IHx8IGZhbHNlO1xuICAgICAgICBxLnNlYXJjaE1vZGUgPVxuICAgICAgICAgIHFPYmoub3B0aW9ucy5zZWFyY2htb2RlIHx8IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHE7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBleGVjdXRlZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2gocXVlcnk6IFNlYXJjaFF1ZXJ5KTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUXVlcnkocXVlcnkuZ2V0UXVlcnlKc29uKCkpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBTZWFyY2ggcmVzdWx0c1xuICAgKi9cbiAgcHVibGljIGdldFNlYXJjaFN0YXRlKHF1ZXJ5OiBhbnkpOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiB7XG5cbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xuICAgICAgcXVlcnkgPSBxdWVyeS5nZXRRdWVyeUpzb24oKTtcbiAgICB9XG4gICAgZGVsZXRlIHF1ZXJ5Lm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LCB0cnVlKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBTZWFyY2hTdGF0ZSgpO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IHJlcy5oaXRzLnRvdGFsO1xuICAgICAgICBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICBjb25zdCBiYXNlUGFyYW0gPSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXTtcbiAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbnMgPSByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV1cbiAgICAgICAgICAgID8gcmVzLmFnZ3JlZ2F0aW9uc1tiYXNlUGFyYW1dLmJ1Y2tldHNcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgYWdncmVnYXRpb25zLmZvckVhY2goYWdncmVnYXRpb24gPT4ge1xuICAgICAgICAgICAgY29uc3Qge2tleSwgZG9jX2NvdW50LCBjb250ZXh0Zm9sZGVydHlwZX0gPSBhZ2dyZWdhdGlvbjtcbiAgICAgICAgICAgIHN0YXRlLmFkZEFnZ3JlZ2F0aW9ucyhiYXNlUGFyYW0sIGtleSwgZG9jX2NvdW50LCBhZ2dyZWdhdGlvbik7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHR5cGUgYWdncmVnYXRpb25zIG1heSBhbHNvIGNvbnRhaW4gYnVja2V0cyBmb3IgdGhlaXIgY29udGV4dCB0eXBlc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGJhc2VQYXJhbSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSAmJlxuICAgICAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlLmJ1Y2tldHMuZm9yRWFjaChjdHhBZ2cgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLmFkZEFnZ3JlZ2F0aW9ucyhcbiAgICAgICAgICAgICAgICAgICdjb250ZXh0dHlwZScsXG4gICAgICAgICAgICAgICAgICBjdHhBZ2cua2V5LFxuICAgICAgICAgICAgICAgICAgY3R4QWdnLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgICAgIGN0eEFnZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIHBhcnQgb2YgYSBxdWVyaWVzIHJlc3VsdC4gVGhpcyBjYW4gYmUgdXNlZCBmb3IgcGFnaW5nIG9mIHJlc3VsdHNcbiAgICogb3IgbGF6eSBsb2FkaW5nIGxhcmdlIHJlc3VsdHMuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gYmUgZXhlY3V0ZWRcbiAgICogQHBhcmFtIGZyb21JbmRleCBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byBmZXRjaCByZXN1bHRzXG4gICAqIEBwYXJhbSBjaHVua1NpemUgU2l6ZSBvZiB0aGUgY2h1bmsgdG8gYmUgZmV0Y2hlZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD5cbiAgICovXG4gIHB1YmxpYyBnZXRDaHVua2VkUmVzdWx0KFxuICAgIHF1ZXJ5OiBTZWFyY2hRdWVyeSxcbiAgICBmcm9tSW5kZXg6IG51bWJlcixcbiAgICBjaHVua1NpemU6IG51bWJlclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xuICAgIGNvbnN0IHEgPSBxdWVyeS5nZXRRdWVyeUpzb24oKTtcblxuICAgIHEuZnJvbSA9IGZyb21JbmRleDtcbiAgICBjb25zdCBxdWVyeVVyaSA9IGBzZWFyY2ghY2h1bms6JHtjaHVua1NpemV9ISR7SlNPTi5zdHJpbmdpZnkocSl9YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShxdWVyeVVyaSwgKCkgPT5cbiAgICAgIHRoaXMuZXhlY3V0ZVF1ZXJ5KHEsIGZhbHNlLCBjaHVua1NpemUpLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gdGhpcy5jcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UocmVzKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcXVlcnlcbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5SnNvbiBUaGUgcXVlcnkgSlNPTiB0byBiZSBleGVjdXRlZFxuICAgKiBAcGFyYW0gYWdncmVnYXRlU2VhcmNoIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBleGVjdXRlIGFuIGFnZ3JlZ2F0aW9uIHNlYXJjaCAobm8gYWN0dWFsIHJlc3VsdHMpXG4gICAqIEBwYXJhbSBjdXN0b21TaXplIEN1c3RvbSBudW1iZXIgb2YgcmVzdWx0cyB0byBiZSBmZXRjaGVkLCBpZiBub3Qgc2V0IHRoZSBkZWZhdWx0IHNpemUgd2lsbCBiZSBhcHBsaWVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcHVibGljIGV4ZWN1dGVRdWVyeShcbiAgICBxdWVyeUpzb246IGFueSxcbiAgICBhZ2dyZWdhdGVTZWFyY2g/OiBib29sZWFuLFxuICAgIGN1c3RvbVNpemU/OiBudW1iZXJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgdXJpOiBzdHJpbmc7XG4gICAgbGV0IHF1ZXJ5ID0gcXVlcnlKc29uO1xuICAgIGlmIChhZ2dyZWdhdGVTZWFyY2gpIHtcbiAgICAgIHVyaSA9IGAvYWdncmVnYXRlYDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2l6ZSA9IGN1c3RvbVNpemUgfHwgdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKTtcbiAgICAgIHVyaSA9IGAvP3NpemU9JHtzaXplfWA7XG4gICAgfVxuICAgIHF1ZXJ5Lm9wdGlvbnMgPSB7Li4ucXVlcnkub3B0aW9ucywgdHJhY2t0b3RhbGhpdHM6IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnRyYWNrVG90YWxIaXRzJykgfHwgZmFsc2UsIHRpbWV6b25lOiBVdGlscy5nZXRUaW1lem9uZU9mZnNldCgpfTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSArIEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSwgKCkgPT4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBxdWVyeSwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkcyBhIGNzdi1maWxlIG9mIHRoZSByZXN1bHRzIG9mIGEgZ2l2ZW4gc2VhcmNoLXF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeUpzb24gVGhlIHF1ZXJ5IEpTT04gdG8gYmUgZXhlY3V0ZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBwdWJsaWMgZG93bmxvYWRDc3ZGcm9tUXVlcnkocXVlcnlKc29uOiBvYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5wb3N0KCcvZXhwb3J0JywgcXVlcnlKc29uLCB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpLCB7XG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzLmJvZHldLCB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIHRoaXMuZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlcyksIHthdXRvQm9tOiB0cnVlfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzOiBIdHRwUmVzcG9uc2U8YW55Pikge1xuICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlciA9XG4gICAgICByZXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcbiAgICByZXR1cm4gY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLnNwbGl0KCdmaWxlbmFtZT0nKVsxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHNlYXJjaCBmb3IgZmV0Y2hpbmcgc3VnZ2VzdGlvbnMgb24gYSBnaXZlbiBzZWFyY2ggdGVybS5cbiAgICpcbiAgICogQHBhcmFtIHRlcm0gVGhlIHNlYXJjaCB0ZXJtXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKFxuICAgICAgYC9hdXRvY29tcGxldGU/cHJlZml4PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pfWAsXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gY3JlYXRlIGEgU2VhcmNoRmlsdGVyIGZvciBhIGZvcm0gZWxlbWVudC4gQmFzZWQgb24gdGhlIHRhcmdldCB0eXBlc1xuICAgKiBpdCdsbCBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2YgZmlsdGVyIHRoYXQgeW91IHRoZW4gY2FuIGFkZCB0byBhIFNlYXJjaFF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlc1xuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnROYW1lXG4gICAqIEBwYXJhbSBlbGVtZW50VmFsdWVcbiAgICogQHJldHVybnMgU2VhcmNoRmlsdGVyW10gQW4gYXJyYXkgb2Ygc2VhcmNoIGZpbHRlcnMgbW9zdCBvZiB0aGUgdGltZSBjb250YWluaW5nIG9ubHkgb25lIGVudHJ5LCBidXRcbiAgICogZm9yIHRhYmxlIGVsZW1lbnRzIHRoaXMgY291bGQgYmUgbW9yZVxuICAgKi9cbiAgcHVibGljIGdldFNlYXJjaEZpbHRlcihcbiAgICB0YXJnZXRUeXBlczogT2JqZWN0VHlwZVtdLFxuICAgIGZvcm1FbGVtZW50TmFtZTogc3RyaW5nLFxuICAgIGVsZW1lbnRWYWx1ZTogYW55XG4gICk6IFNlYXJjaEZpbHRlcltdIHtcbiAgICBjb25zdCBmaWx0ZXI6IFNlYXJjaEZpbHRlcltdID0gW107XG4gICAgY29uc3QgZmlsdGVyVHlwZTogU2VhcmNoRmlsdGVyVHlwZSA9IHRoaXMuaWRlbnRpZnlTZWFyY2hGaWx0ZXIoXG4gICAgICB0YXJnZXRUeXBlcyxcbiAgICAgIGZvcm1FbGVtZW50TmFtZVxuICAgICk7XG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSB0YXJnZXRUeXBlc1swXS5lbGVtZW50cy5maW5kKGVsID0+IGVsLnFuYW1lID09PSBmb3JtRWxlbWVudE5hbWUpO1xuXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgZmlsdGVyLnB1c2goXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoZm9ybUVsZW1lbnROYW1lLCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsIG51bGwpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoZm9ybUVsZW1lbnQgJiYgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdwYXRoJykge1xuICAgICAgZmlsdGVyLnB1c2goXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXG4gICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5NQVRDSCxcbiAgICAgICAgICBlbGVtZW50VmFsdWVcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRWYWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcbiAgICAgIC8qKlxuICAgICAgICogY3JlYXRlIGZpbHRlciBmb3IgZWxlbWVudHMgdGhhdCBzdXBwb3J0IHJhbmdlcyBsaWtlIERBVEVUSU1FIGFuZCBOVU1CRVJcbiAgICAgICAqL1xuICAgICAgaWYgKFxuICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgZmlsdGVyLnB1c2goXG4gICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcbiAgICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcbiAgICAgICAgICAgIGVsZW1lbnRWYWx1ZS5vcGVyYXRvcixcbiAgICAgICAgICAgIGVsZW1lbnRWYWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFZhbHVlLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgZmlsdGVyVHlwZS5kYXRldGltZSA/IHt0aW1lOiBmaWx0ZXJUeXBlLndpdGh0aW1lfSA6IHVuZGVmaW5lZFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChmaWx0ZXJUeXBlLm11bHRpc2VsZWN0IHx8IEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSkgJiYgIWZpbHRlclR5cGUudGFibGUpIHtcbiAgICAgIC8qKlxuICAgICAgICogY3JlYXRlIGZpbHRlciBmb3IgbXVsdGlzZWxlY3QgZWxlbWVudHMgbGlrZSBDT0RFU1lTVEVNIGFuZCBPUkdBTklaQVRJT05cbiAgICAgICAqL1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSAmJiBlbGVtZW50VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXG4gICAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXG4gICAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4sXG4gICAgICAgICAgICBlbGVtZW50VmFsdWVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlLnRhYmxlKSB7XG4gICAgICAvKipcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIocykgZm9yIHRhYmxlIGVsZW1lbnRzXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHF1ZXJ5Um93ID0gZWxlbWVudFZhbHVlWzBdO1xuICAgICAgT2JqZWN0LmtleXMocXVlcnlSb3cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZihxdWVyeVJvd1trZXldICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGAke2Zvcm1FbGVtZW50TmFtZX0uJHtrZXl9YDtcbiAgICAgICAgICBpZiAocXVlcnlSb3dba2V5XSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgIHF1ZXJ5Um93W2tleV0uZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLnNlY29uZFZhbHVlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHF1ZXJ5Um93W2tleV0pID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOIDogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLFxuICAgICAgICAgICAgICAgIHF1ZXJ5Um93W2tleV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIGRlZmF1bHQgd2lsbCB1c2UgZXF1YWxpdHkgb3BlcmF0b3JcbiAgICAgICAqL1xuICAgICAgZmlsdGVyLnB1c2goXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXG4gICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCxcbiAgICAgICAgICBlbGVtZW50VmFsdWVcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xuICAgKiB0cnkgdG8gZmluZCB0aGUgZm9ybSBlbGVtZW50IGluc2lkZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0IHR5cGVzIHRvIGdldCBpdHMgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZVtdIHRhcmdldFR5cGVzXG4gICAqIEBwYXJhbSBzdHJpbmcgZm9ybUVsZW1lbnROYW1lXG4gICAqIEByZXR1cm4gU2VhcmNoRmlsdGVyVHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBpZGVudGlmeVNlYXJjaEZpbHRlcihcbiAgICB0YXJnZXRUeXBlczogT2JqZWN0VHlwZVtdLFxuICAgIGZvcm1FbGVtZW50TmFtZTogc3RyaW5nXG4gICk6IFNlYXJjaEZpbHRlclR5cGUge1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKCFtYXRjaCAmJiBpIDwgdGFyZ2V0VHlwZXMubGVuZ3RoKSB7XG4gICAgICBtYXRjaCA9IHRhcmdldFR5cGVzW2ldLmVsZW1lbnRzLmZpbmQoXG4gICAgICAgIGVsZW1lbnQgPT4gZWxlbWVudC5xbmFtZSA9PT0gZm9ybUVsZW1lbnROYW1lXG4gICAgICApO1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtdWx0aXNlbGVjdDogdGhpcy5pc011bHRpc2VsZWN0U2VhcmNoRmlsdGVyKG1hdGNoKSxcbiAgICAgIHRhYmxlOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnVEFCTEUnLFxuICAgICAgZGF0ZXRpbWU6IG1hdGNoICYmIG1hdGNoLnR5cGUgPT09ICdEQVRFVElNRScsXG4gICAgICB3aXRodGltZTogbWF0Y2ggJiYgbWF0Y2gud2l0aHRpbWVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIGlkZW50aWZpZXMgZm9ybSBlbGVtZW50cyB0aGF0IGFyZSBlbmFibGVkIHRvIGNvbnRhaW4gbXVsdGlwbGUgdmFsdWVzXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFxuICAgKiBAcmV0dXJuIGJvb2xlYW5cbiAgICovXG4gIHByaXZhdGUgaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihmb3JtRWxlbWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGZvcm1FbGVtZW50ICYmXG4gICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHxcbiAgICAgICAgZm9ybUVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nIHx8XG4gICAgICAgIC8vIC4uLlxuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiZcbiAgICAgICAgICBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykgfHxcbiAgICAgICAgLy8gbXVsdGlzZWxlY3QgcmVmZXJlbmNlIGZpZWxkc1xuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiYgZm9ybUVsZW1lbnQubXVsdGlzZWxlY3QpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFNlYXJjaFJlc3VsdCBmcm9tIHRoZSByZXNwb25zZSBzZW50IGJ5IHRoZSBzZXJ2ZXJcbiAgICpcbiAgICogQHBhcmFtIGJhY2tlbmRSZXNwb25zZSBTZXJ2ZXIgcmVzcG9uc2VcbiAgICogQHJldHVyblRoZSBTZWFyY2hSZXN1bHQgU2VhcmNoUmVzdWx0IG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVJlc3VsdEZyb21SZXNwb25zZShiYWNrZW5kUmVzcG9uc2UpOiBTZWFyY2hSZXN1bHQge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQoKTtcbiAgICByZXN1bHQuc3VnZ2VzdHMgPSBiYWNrZW5kUmVzcG9uc2Uuc3VnZ2VzdDtcbiAgICByZXN1bHQuZmllbGRzID0gYmFja2VuZFJlc3BvbnNlLmNvbmZpZztcblxuICAgIC8qKlxuICAgICAqIHVzZSBoaXRzIF9pZCBmaWVsZCBhcyBpZCBwcm9wZXJ0eSwgYmVjYXVzZSBvdGhlcndpc2UgZW1wdHkgcmVzdWx0IGhpdHMgd291bGQgbm90IGNvbnRhaW4gYW4gaWRcbiAgICAgKi9cbiAgICBjb25zdCBoaXRzID0gYmFja2VuZFJlc3BvbnNlLmhpdHMuaGl0cy5tYXAoaCA9PiAoe1xuICAgICAgLi4uaC5fc291cmNlLFxuICAgICAgaWQ6IGguX2lkLFxuICAgICAgLi4uKGguc25pcHBldHMgJiYge3NuaXBwZXRzOiBoLnNuaXBwZXRzfSksXG4gICAgICAvLyBoYXZpbmcgcmVxdWVzdGVkIGEgcmVzb2x2ZWQgcmVmZXJlbmNlIChvcHRpb25zKSB3ZSBhbHNvIHBhc3MgYF9yZWZlcmVuY2VgIGluIHRoZSByZXN1bHQgaXRlbVxuICAgICAgLi4uKGgucmVmZXJlbmNlcyAmJiB7X3JlZmVyZW5jZXM6IGgucmVmZXJlbmNlc30pLFxuICAgICAgLi4uKGguY29udGV4dCAmJiB7Y29udGV4dDogaC5jb250ZXh0fSlcbiAgICB9KSk7XG5cbiAgICByZXN1bHQuY291bnQgPSBiYWNrZW5kUmVzcG9uc2UuaGl0cy50b3RhbDtcbiAgICByZXN1bHQuaGl0cyA9IGhpdHMgfHwgW107XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgUmVzdWwgdEZpZWxkIERlZmluaXRpb24gQ29uZmlnXG4gICAqXG4gICAqIEBwYXJhbSBTZWFyY2hRdWVyeSBxdWVyeVxuICAgKiBAcmV0dXJuICh7dHlwZTogT2JqZWN0VHlwZTsgY29udGV4dFR5cGU6IE9iamVjdFR5cGV9KVxuICAgKi9cbiAgZ2V0UmVzdWx0RmllbGREZWZpbml0aW9uQ29uZmlnKHF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xuICAgIGNvbnN0IHR5cGUgPSAocXVlcnkudHlwZXMgfHwgW10pLmxlbmd0aCA9PT0gMSA/IHF1ZXJ5LnR5cGVzWzBdIDogbnVsbDtcbiAgICBjb25zdCBjb250ZXh0VHlwZSA9XG4gICAgICAocXVlcnkuY29udGV4dEZvbGRlclR5cGVzIHx8IFtdKS5sZW5ndGggPT09IDFcbiAgICAgICAgPyBxdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF1cbiAgICAgICAgOiBudWxsO1xuICAgIHJldHVybiB7dHlwZSwgY29udGV4dFR5cGV9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxuICAgIGNvbnRleHRUeXBlOiBPYmplY3RUeXBlIHwgbnVsbFxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZU5hbWU6IHR5cGUgPyB0eXBlLnFuYW1lIDogJ3N5c29iamVjdCcsXG4gICAgICBjb250ZXh0VHlwZU5hbWU6IHR5cGUgJiYgY29udGV4dFR5cGUgPyBjb250ZXh0VHlwZS5xbmFtZSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgcmVzdWx0IGZpZWxkIGRlZmluaXRpb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGVcbiAgICogVVNFUjogKGRlZmF1bHQpIHRoZSByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIHNhdmVkIGJ5IHRoZSBjdXJyZW50IHVzZXJcbiAgICogREVGQVVMVDogdGhlIGRlZmF1bHQgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiAoYWxzbyByZXR1cm5lZCB3aGVuIHRoZXJlIGlzIG5vIHVzZXIgY29uZmlndXJhdGlvbilcbiAgICogQUxMOiBhbGwgYXZhaWxhYmxlIHJlc3VsdCBmaWVsZHMgZm9yIHRoZSBnaXZlbiB0eXBlIChhbmQgY29udGV4dClcbiAgICpcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIHR5cGUgVGhlIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCBjb250ZXh0VHlwZSBPYmplY3QgdHlwZSB0YXJnZXQgdHlwZXMgYWxsb3dlZCBjb250ZXh0IHR5cGVcbiAgICogQHBhcmFtIG1vZGUgVGhlIHJlc3VsdCBsaXN0cyBjb25maWd1cmF0aW9uIG1vZGU6XG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxGaWVsZERlZmluaXRpb24+XG4gICAqL1xuICBmZXRjaFJlc3VsdEZpZWxkRGVmaW5pdGlvbihcbiAgICB0eXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXG4gICAgbW9kZVxuICApIHtcbiAgICBjb25zdCB7dHlwZU5hbWUsIGNvbnRleHRUeXBlTmFtZX0gPSB0aGlzLnJlc29sdmVDb25maWdUeXBlTmFtZXMoXG4gICAgICB0eXBlLFxuICAgICAgY29udGV4dFR5cGVcbiAgICApO1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvdXNlci9jb25maWcvcmVzdWx0LyR7dHlwZU5hbWV9YCwge1xuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZSxcbiAgICAgIG1vZGVcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0SnNvbih1cmwpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChyZXM6IGFueSkgPT5cbiAgICAgICAgICAgIG5ldyBGaWVsZERlZmluaXRpb24oXG4gICAgICAgICAgICAgIHJlcy5lbGVtZW50cyxcbiAgICAgICAgICAgICAgcmVzLnNvcnRvcmRlcixcbiAgICAgICAgICAgICAgcmVzLmdyb3Vwb3JkZXIsXG4gICAgICAgICAgICAgIHJlcy5waW5uZWQsXG4gICAgICAgICAgICAgIHJlcy5hbGlnbm1lbnR4LFxuICAgICAgICAgICAgICByZXMubW9kZVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY29sdW1uIGRlZmluaXRpb24gYXMgcmVzdWx0IG9yIGNvbW1vbiByZXN1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXG4gICAqIEBwYXJhbSBGaWVsZERlZmluaXRpb24gZGF0YSBUaGUgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiB0byBiZSBwZXJzaXN0ZWRcbiAgICogQHBhcmFtIGJvb2xlYW4gY29tbW9uIEZsYWcgZW5hYmxlcyB0byBzZXQgY29uZmlnIGFzIGRlZmF1bHQgLyBjb21tb24gcmVzdWx0XG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBzYXZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxuICAgIGNvbnRleHRUeXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcbiAgICBkYXRhOiBGaWVsZERlZmluaXRpb24sXG4gICAgY29tbW9uID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgYmFzZVVyaSA9IGNvbW1vblxuICAgICAgPyAnL3VzZXIvY29uZmlnL2NvbW1vbnJlc3VsdC8nXG4gICAgICA6ICcvdXNlci9jb25maWcvcmVzdWx0Lyc7XG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxuICAgICAgdHlwZSxcbiAgICAgIGNvbnRleHRUeXBlXG4gICAgKTtcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShiYXNlVXJpICsgdHlwZU5hbWUsIHtcbiAgICAgIGNvbnRleHR0eXBlOiBjb250ZXh0VHlwZU5hbWVcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJsLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY29sdW1uIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVSZXN1bHRGaWVsZERlZmluaXRpb24oXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsXG4gICkge1xuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcbiAgICAgIHR5cGUsXG4gICAgICBjb250ZXh0VHlwZVxuICAgICk7XG4gICAgY29uc3QgdXJsID0gVXRpbHMuYnVpbGRVcmkoYC91c2VyL2NvbmZpZy9yZXN1bHQvJHt0eXBlTmFtZX1gLCB7XG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSB0byBiZSBhZGRlZCB0byBhIGZvcm0gZWxlbWVudCBieSBleHRyYWN0aW5nIGl0IGZyb20gYVxuICAgKiBzZWFyY2ggZmlsdGVyLiBUaGUga2luZCBvZiB2YWx1ZSBkaWZmZXJzIGJhc2VkIG9uIHRoZSBmb3JtIGVsZW1lbnRzIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXIgVGhlIGZpbHRlciB0byBleHRyYWN0IHZhbHVlIGZyb21cbiAgICogQHBhcmFtIGZvcm1FbGVtZW50VHlwZSBGb3JtIGVsZW1lbnRzIHR5cGUgKCdTVFJJTkcnLCAnREFURScsICdDT0RFU1lTVEVNJywgLi4uKVxuICAgKiBAcmV0dXJucyB0aGUgZXh0cmFjdGVkIHZhbHVlXG4gICAqL1xuICBmaWx0ZXJUb0VsZW1lbnRWYWx1ZShmaWx0ZXI6IFNlYXJjaEZpbHRlciwgZm9ybUVsZW1lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgLy8gdHlwZXMgdGhhdCBzdXBwb3J0IHJhbmdlc1xuICAgICAgaWYgKChmb3JtRWxlbWVudFR5cGUgPT09ICdOVU1CRVInIHx8IGZvcm1FbGVtZW50VHlwZSA9PT0gJ0RBVEVUSU1FJykgJiYgZmlsdGVyLmZpcnN0VmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgUmFuZ2VWYWx1ZShcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IsXG4gICAgICAgICAgZmlsdGVyLmZpcnN0VmFsdWUsXG4gICAgICAgICAgZmlsdGVyLnNlY29uZFZhbHVlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGZpbHRlci5maXJzdFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhYmxlIHZhbHVlIGJ5IGV4dHJhY3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUgY29ycmVzcG9uZGluZ1xuICAgKiBzZWFyY2ggZmlsdGVycy5cbiAgICpcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGZpbHRlcnMgdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4gICAqIEBwYXJhbSB0YWJsZUVsZW1lbnRzIHRoZSBmb3JtIGVsZW1lbnRzIG9mIHRoZSB0YWJsZVxuICAgKiBAcmV0dXJucyB0aGUgdGFibGUgdmFsdWUgZXh0cmFjdGVkIGZyb20gYWxsIGZpbHRlcnNcbiAgICovXG4gIHRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCB0YWJsZUVsZW1lbnRzKXtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgICBsZXQga2V5ID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkubmFtZTtcbiAgICAgIGxldCB0eXBlID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkudHlwZTtcbiAgICAgIHZhbHVlW2tleV0gPSB0aGlzLmZpbHRlclRvRWxlbWVudFZhbHVlKGYsIHR5cGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBbdmFsdWVdO1xuICB9XG59XG4iXX0=
470
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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LENBQ3BCLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLFVBQVUsRUFDakIsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO2FBQzNCO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsMEJBQTBCLENBQUMsT0FBdUIsRUFBRSxhQUFhO1FBQy9ELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMvRCxJQUFJLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2hFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7OztZQWxtQkYsVUFBVTs7O1lBZEgsYUFBYTtZQUZiLGNBQWM7WUFDZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtPYmplY3RUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbCc7XG5pbXBvcnQge1JhbmdlVmFsdWV9IGZyb20gJy4uLy4uL21vZGVsL3JhbmdlLXZhbHVlLm1vZGVsJztcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQge1NlYXJjaEZpbHRlclR5cGV9IGZyb20gJy4vc2VhcmNoLWZpbHRlci10eXBlLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBGaWVsZERlZmluaXRpb24sXG4gIFNlYXJjaEZpbHRlcixcbiAgU2VhcmNoUXVlcnksXG4gIFNlYXJjaFJlc3VsdCxcbiAgU2VhcmNoU3RhdGVcbn0gZnJvbSAnLi9zZWFyY2gtcXVlcnkubW9kZWwnO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgU2VhcmNoIFNlcnZpY2VzXG4gKiBTZWUge0BsaW5rIFNlYXJjaFF1ZXJ5fSBmb3IgUXVlcnkgRGVmaW5pdGlvblxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1xuICApIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBSYW5nZVZhbHVlIGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIHZhbHVlIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gYmVcbiAgICogQHJldHVybnMgUmFuZ2VWYWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0b1JhbmdlVmFsdWUodmFsdWU6IGFueSk6IFJhbmdlVmFsdWUge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSAmJlxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnZmlyc3RWYWx1ZScpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxuICAgICAgICAgIHZhbHVlLm9wZXJhdG9yLFxuICAgICAgICAgIHZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmcm9tYXRlZCBzZWFyY2ggUXVlcnlcbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5XG4gICAqIEByZXR1cm5zIFNlYXJjaFF1ZXJ5XG4gICAqL1xuICBwdWJsaWMgYnVpbGRRdWVyeShxdWVyeTogYW55KTogU2VhcmNoUXVlcnkge1xuICAgIGxldCBxOiBTZWFyY2hRdWVyeTtcbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xuICAgICAgcSA9IHF1ZXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcU9iajtcbiAgICAgIC8qKlxuICAgICAgICogaWYgd2UgZ290IGEgc3RyaW5nLCB3ZSdsbCBhc3N1bWUgdGhhdCBpdCdzIGEgSlNPTlxuICAgICAgICovXG4gICAgICBpZiAodHlwZW9mIHF1ZXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICBxT2JqID0gSlNPTi5wYXJzZShxdWVyeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxT2JqID0gcXVlcnk7XG4gICAgICB9XG5cbiAgICAgIHEgPSBuZXcgU2VhcmNoUXVlcnkoKTtcbiAgICAgIHEudGVybSA9IHFPYmoudGVybTtcbiAgICAgIGlmIChxT2JqLmZpbHRlcnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMocU9iai5maWx0ZXJzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgIHEuZmlsdGVycy5wdXNoKFxuICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcbiAgICAgICAgICAgICAgayxcbiAgICAgICAgICAgICAgcU9iai5maWx0ZXJzW2tdLm8sXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MSxcbiAgICAgICAgICAgICAgcU9iai5maWx0ZXJzW2tdLnYyXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocU9iai50eXBlcykge1xuICAgICAgICBxT2JqLnR5cGVzLmZvckVhY2godCA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpIHtcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcS50eXBlcy5wdXNoKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocU9iai5jb250ZXh0Zm9sZGVydHlwZXMpIHtcbiAgICAgICAgcU9iai5jb250ZXh0Zm9sZGVydHlwZXMuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgICBpZiAodCA9PT0gJ3N5c3Jvb3QnKSB7XG4gICAgICAgICAgICAvLyAnc3lzcm9vdCcgaXMgbm90IGEgcmVhbCBvYmplY3QgdHlwZSwgc28gd2UgaGF2ZSB0byBjcmVhdGUgYSBmYWtlIHR5cGUuXG4gICAgICAgICAgICBjb25zdCBzeXNyb290RmFrZU9iamVjdFR5cGUgPSBuZXcgT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICAgIGlkOiAnYScsXG4gICAgICAgICAgICAgIGZvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgbmFtZTogJ3N5c3Jvb3QnLFxuICAgICAgICAgICAgICBxbmFtZTogJ3N5c3Jvb3QnLFxuICAgICAgICAgICAgICBsYWJlbDogJ3N5c3Jvb3QnLFxuICAgICAgICAgICAgICBpc2NvbnRleHRmb2xkZXI6IHRydWUsXG4gICAgICAgICAgICAgIGFic3RyYWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgIHNoYXJlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIG1pbmZpbGVzOiAwLFxuICAgICAgICAgICAgICBtYXhmaWxlczogMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHEuY29udGV4dEZvbGRlclR5cGVzLnB1c2godGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZSh0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHEuZmllbGRzID0gcU9iai5maWVsZHM7XG4gICAgICBpZiAocU9iai5vcHRpb25zKSB7XG4gICAgICAgIHEuc3VnZ2VzdCA9IHFPYmoub3B0aW9ucy5zdWdnZXN0IHx8IGZhbHNlO1xuICAgICAgICBxLmV4cGVydE1vZGUgPSBxT2JqLm9wdGlvbnMuZXhwZXJ0bW9kZSB8fCBmYWxzZTtcbiAgICAgICAgcS5zY29wZSA9IHFPYmoub3B0aW9ucy5zY29wZTtcbiAgICAgICAgLy8gXCJ8fFwiIGRvZXMgbm90IHdvcmsgZm9yIHJlY29nbml6aW5nIFwiZmFsc2VcIiB3aXRoIHByaW9yaXR5IG92ZXIgXCJkZWZhdWx0IHRydWVcIlxuICAgICAgICBxLnJlc29sdmVSZWZlcmVuY2UgPSAocU9iai5vcHRpb25zLnJlc29sdmVyZWZlcmVuY2UgIT09IG51bGwpID8gcU9iai5vcHRpb25zLnJlc29sdmVyZWZlcmVuY2UgOlxuICAgICAgICAgICggcU9iai5vcHRpb25zLnJlc29sdmVSZWZlcmVuY2UgIT09IG51bGwgPyBxT2JqLm9wdGlvbnMucmVzb2x2ZVJlZmVyZW5jZSA6IHRydWUpO1xuICAgICAgICAvLyB3aXRoQ29udGV4dCB3YXMgb2xkIGFuZCBcIndyb25nXCIgbmFtZSBvZiBwYXJhbWV0ZXJcbiAgICAgICAgcS53aXRoQ29udGV4dCA9IHFPYmoub3B0aW9ucy53aXRoY29udGV4dCB8fCBxT2JqLm9wdGlvbnMud2l0aENvbnRleHQgfHwgZmFsc2U7XG4gICAgICAgIHEuc2VhcmNoTW9kZSA9XG4gICAgICAgICAgcU9iai5vcHRpb25zLnNlYXJjaG1vZGUgfHwgU2VhcmNoUXVlcnkuREVGQVVMVF9TRUFSQ0hfTU9ERTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PlxuICAgKi9cbiAgcHVibGljIHNlYXJjaChxdWVyeTogU2VhcmNoUXVlcnkpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWVyeShxdWVyeS5nZXRRdWVyeUpzb24oKSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gdGhpcy5jcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UocmVzKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIFNlYXJjaCByZXN1bHRzXG4gICAqL1xuICBwdWJsaWMgZ2V0U2VhcmNoU3RhdGUocXVlcnk6IGFueSk6IE9ic2VydmFibGU8U2VhcmNoU3RhdGU+IHtcblxuICAgIGlmIChxdWVyeSBpbnN0YW5jZW9mIFNlYXJjaFF1ZXJ5KSB7XG4gICAgICBxdWVyeSA9IHF1ZXJ5LmdldFF1ZXJ5SnNvbigpO1xuICAgIH1cbiAgICBkZWxldGUgcXVlcnkubmFtZTtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUXVlcnkocXVlcnksIHRydWUpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gICAgICAgIHN0YXRlLmNvdW50ID0gcmVzLmhpdHMudG90YWw7XG4gICAgICAgIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgIGNvbnN0IGJhc2VQYXJhbSA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdO1xuICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHJlcy5hZ2dyZWdhdGlvbnNbYmFzZVBhcmFtXVxuICAgICAgICAgICAgPyByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV0uYnVja2V0c1xuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBhZ2dyZWdhdGlvbnMuZm9yRWFjaChhZ2dyZWdhdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQge2tleSwgZG9jX2NvdW50LCBjb250ZXh0Zm9sZGVydHlwZX0gPSBhZ2dyZWdhdGlvbjtcbiAgICAgICAgICAgIGlmIChiYXNlUGFyYW0gPT09ICdmaWxlc2l6ZScpIHtcbiAgICAgICAgICAgICAgZG9jX2NvdW50ID0gYWdncmVnYXRpb25bJ2ZpbHRlciNkb2N1bWVudHMnXS5kb2NfY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoYmFzZVBhcmFtLCBrZXksIGRvY19jb3VudCwgYWdncmVnYXRpb24pO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB0eXBlIGFnZ3JlZ2F0aW9ucyBtYXkgYWxzbyBjb250YWluIGJ1Y2tldHMgZm9yIHRoZWlyIGNvbnRleHQgdHlwZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBiYXNlUGFyYW0gPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUgJiZcbiAgICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZS5idWNrZXRzLmZvckVhY2goY3R4QWdnID0+IHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoXG4gICAgICAgICAgICAgICAgICAnY29udGV4dHR5cGUnLFxuICAgICAgICAgICAgICAgICAgY3R4QWdnLmtleSxcbiAgICAgICAgICAgICAgICAgIGN0eEFnZy5kb2NfY291bnQsXG4gICAgICAgICAgICAgICAgICBjdHhBZ2dcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBwYXJ0IG9mIGEgcXVlcmllcyByZXN1bHQuIFRoaXMgY2FuIGJlIHVzZWQgZm9yIHBhZ2luZyBvZiByZXN1bHRzXG4gICAqIG9yIGxhenkgbG9hZGluZyBsYXJnZSByZXN1bHRzLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBmcm9tSW5kZXggVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gZmV0Y2ggcmVzdWx0c1xuICAgKiBAcGFyYW0gY2h1bmtTaXplIFNpemUgb2YgdGhlIGNodW5rIHRvIGJlIGZldGNoZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+XG4gICAqL1xuICBwdWJsaWMgZ2V0Q2h1bmtlZFJlc3VsdChcbiAgICBxdWVyeTogU2VhcmNoUXVlcnksXG4gICAgZnJvbUluZGV4OiBudW1iZXIsXG4gICAgY2h1bmtTaXplOiBudW1iZXJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICBjb25zdCBxID0gcXVlcnkuZ2V0UXVlcnlKc29uKCk7XG5cbiAgICBxLmZyb20gPSBmcm9tSW5kZXg7XG4gICAgY29uc3QgcXVlcnlVcmkgPSBgc2VhcmNoIWNodW5rOiR7Y2h1bmtTaXplfSEke0pTT04uc3RyaW5naWZ5KHEpfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUocXVlcnlVcmksICgpID0+XG4gICAgICB0aGlzLmV4ZWN1dGVRdWVyeShxLCBmYWxzZSwgY2h1bmtTaXplKS5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeUpzb24gVGhlIHF1ZXJ5IEpTT04gdG8gYmUgZXhlY3V0ZWRcbiAgICogQHBhcmFtIGFnZ3JlZ2F0ZVNlYXJjaCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gZXhlY3V0ZSBhbiBhZ2dyZWdhdGlvbiBzZWFyY2ggKG5vIGFjdHVhbCByZXN1bHRzKVxuICAgKiBAcGFyYW0gY3VzdG9tU2l6ZSBDdXN0b20gbnVtYmVyIG9mIHJlc3VsdHMgdG8gYmUgZmV0Y2hlZCwgaWYgbm90IHNldCB0aGUgZGVmYXVsdCBzaXplIHdpbGwgYmUgYXBwbGllZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHB1YmxpYyBleGVjdXRlUXVlcnkoXG4gICAgcXVlcnlKc29uOiBhbnksXG4gICAgYWdncmVnYXRlU2VhcmNoPzogYm9vbGVhbixcbiAgICBjdXN0b21TaXplPzogbnVtYmVyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVyaTogc3RyaW5nO1xuICAgIGxldCBxdWVyeSA9IHF1ZXJ5SnNvbjtcbiAgICBpZiAoYWdncmVnYXRlU2VhcmNoKSB7XG4gICAgICB1cmkgPSBgL2FnZ3JlZ2F0ZWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNpemUgPSBjdXN0b21TaXplIHx8IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLmxpbWl0Jyk7XG4gICAgICB1cmkgPSBgLz9zaXplPSR7c2l6ZX1gO1xuICAgIH1cbiAgICBxdWVyeS5vcHRpb25zID0gey4uLnF1ZXJ5Lm9wdGlvbnMsIHRyYWNrdG90YWxoaXRzOiB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC50cmFja1RvdGFsSGl0cycpIHx8IGZhbHNlLCB0aW1lem9uZTogVXRpbHMuZ2V0VGltZXpvbmVPZmZzZXQoKX07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmkgKyBKU09OLnN0cmluZ2lmeShxdWVyeSksICgpID0+IHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgcXVlcnksIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZHMgYSBjc3YtZmlsZSBvZiB0aGUgcmVzdWx0cyBvZiBhIGdpdmVuIHNlYXJjaC1xdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlKc29uIFRoZSBxdWVyeSBKU09OIHRvIGJlIGV4ZWN1dGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcHVibGljIGRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHF1ZXJ5SnNvbjogb2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAucG9zdCgnL2V4cG9ydCcsIHF1ZXJ5SnNvbiwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSwge1xuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlcy5ib2R5XSwge1xuICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCB0aGlzLmdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXMpLCB7YXV0b0JvbTogdHJ1ZX0pO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlczogSHR0cFJlc3BvbnNlPGFueT4pIHtcbiAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIgPVxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XG4gICAgcmV0dXJuIGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlci5zcGxpdCgnZmlsZW5hbWU9JylbMV07XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSBzZWFyY2ggZm9yIGZldGNoaW5nIHN1Z2dlc3Rpb25zIG9uIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXJtIFRoZSBzZWFyY2ggdGVybVxuICAgKiBAcmV0dXJuXG4gICAqL1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlKHRlcm06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihcbiAgICAgIGAvYXV0b2NvbXBsZXRlP3ByZWZpeD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXJtKX1gLFxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIFNlYXJjaEZpbHRlciBmb3IgYSBmb3JtIGVsZW1lbnQuIEJhc2VkIG9uIHRoZSB0YXJnZXQgdHlwZXNcbiAgICogaXQnbGwgY3JlYXRlIHRoZSByaWdodCBraW5kIG9mIGZpbHRlciB0aGF0IHlvdSB0aGVuIGNhbiBhZGQgdG8gYSBTZWFyY2hRdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZXNcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50TmFtZVxuICAgKiBAcGFyYW0gZWxlbWVudFZhbHVlXG4gICAqIEByZXR1cm5zIFNlYXJjaEZpbHRlcltdIEFuIGFycmF5IG9mIHNlYXJjaCBmaWx0ZXJzIG1vc3Qgb2YgdGhlIHRpbWUgY29udGFpbmluZyBvbmx5IG9uZSBlbnRyeSwgYnV0XG4gICAqIGZvciB0YWJsZSBlbGVtZW50cyB0aGlzIGNvdWxkIGJlIG1vcmVcbiAgICovXG4gIHB1YmxpYyBnZXRTZWFyY2hGaWx0ZXIoXG4gICAgdGFyZ2V0VHlwZXM6IE9iamVjdFR5cGVbXSxcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50VmFsdWU6IGFueVxuICApOiBTZWFyY2hGaWx0ZXJbXSB7XG4gICAgY29uc3QgZmlsdGVyOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlclR5cGU6IFNlYXJjaEZpbHRlclR5cGUgPSB0aGlzLmlkZW50aWZ5U2VhcmNoRmlsdGVyKFxuICAgICAgdGFyZ2V0VHlwZXMsXG4gICAgICBmb3JtRWxlbWVudE5hbWVcbiAgICApO1xuICAgIGNvbnN0IGZvcm1FbGVtZW50ID0gdGFyZ2V0VHlwZXNbMF0uZWxlbWVudHMuZmluZChlbCA9PiBlbC5xbmFtZSA9PT0gZm9ybUVsZW1lbnROYW1lKTtcblxuICAgIGlmIChlbGVtZW50VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKGZvcm1FbGVtZW50TmFtZSwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLCBudWxsKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1FbGVtZW50ICYmIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAncGF0aCcpIHtcbiAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxuICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTUFUQ0gsXG4gICAgICAgICAgZWxlbWVudFZhbHVlXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50VmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICAvKipcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIGVsZW1lbnRzIHRoYXQgc3VwcG9ydCByYW5nZXMgbGlrZSBEQVRFVElNRSBhbmQgTlVNQkVSXG4gICAgICAgKi9cbiAgICAgIGlmIChcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXG4gICAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUub3BlcmF0b3IsXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIGVsZW1lbnRWYWx1ZS5zZWNvbmRWYWx1ZSxcbiAgICAgICAgICAgIGZpbHRlclR5cGUuZGF0ZXRpbWUgPyB7dGltZTogZmlsdGVyVHlwZS53aXRodGltZX0gOiB1bmRlZmluZWRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgoZmlsdGVyVHlwZS5tdWx0aXNlbGVjdCB8fCBBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkpICYmICFmaWx0ZXJUeXBlLnRhYmxlKSB7XG4gICAgICAvKipcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIG11bHRpc2VsZWN0IGVsZW1lbnRzIGxpa2UgQ09ERVNZU1RFTSBhbmQgT1JHQU5JWkFUSU9OXG4gICAgICAgKi9cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkgJiYgZWxlbWVudFZhbHVlLmxlbmd0aCkge1xuICAgICAgICBmaWx0ZXIucHVzaChcbiAgICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxuICAgICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxuICAgICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOLFxuICAgICAgICAgICAgZWxlbWVudFZhbHVlXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZS50YWJsZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyKHMpIGZvciB0YWJsZSBlbGVtZW50c1xuICAgICAgICovXG4gICAgICBjb25zdCBxdWVyeVJvdyA9IGVsZW1lbnRWYWx1ZVswXTtcbiAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5Um93KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYocXVlcnlSb3dba2V5XSAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgJHtmb3JtRWxlbWVudE5hbWV9LiR7a2V5fWA7XG4gICAgICAgICAgaWYgKHF1ZXJ5Um93W2tleV0gaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICAgICAgICBmaWx0ZXIucHVzaChcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5zZWNvbmRWYWx1ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXIucHVzaChcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShxdWVyeVJvd1trZXldKSA/IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTiA6IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCxcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBkZWZhdWx0IHdpbGwgdXNlIGVxdWFsaXR5IG9wZXJhdG9yXG4gICAgICAgKi9cbiAgICAgIGZpbHRlci5wdXNoKFxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxuICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsXG4gICAgICAgICAgZWxlbWVudFZhbHVlXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICAvKipcbiAgICogaWRlbnRpZmllcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIGVuYWJsZWQgdG8gY29udGFpbiBtdWx0aXBsZSB2YWx1ZXNcbiAgICogdHJ5IHRvIGZpbmQgdGhlIGZvcm0gZWxlbWVudCBpbnNpZGUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdCB0eXBlcyB0byBnZXQgaXRzIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIE9iamVjdFR5cGVbXSB0YXJnZXRUeXBlc1xuICAgKiBAcGFyYW0gc3RyaW5nIGZvcm1FbGVtZW50TmFtZVxuICAgKiBAcmV0dXJuIFNlYXJjaEZpbHRlclR5cGVcbiAgICovXG4gIHByaXZhdGUgaWRlbnRpZnlTZWFyY2hGaWx0ZXIoXG4gICAgdGFyZ2V0VHlwZXM6IE9iamVjdFR5cGVbXSxcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZ1xuICApOiBTZWFyY2hGaWx0ZXJUeXBlIHtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICghbWF0Y2ggJiYgaSA8IHRhcmdldFR5cGVzLmxlbmd0aCkge1xuICAgICAgbWF0Y2ggPSB0YXJnZXRUeXBlc1tpXS5lbGVtZW50cy5maW5kKFxuICAgICAgICBlbGVtZW50ID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZVxuICAgICAgKTtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbXVsdGlzZWxlY3Q6IHRoaXMuaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihtYXRjaCksXG4gICAgICB0YWJsZTogbWF0Y2ggJiYgbWF0Y2gudHlwZSA9PT0gJ1RBQkxFJyxcbiAgICAgIGRhdGV0aW1lOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnREFURVRJTUUnLFxuICAgICAgd2l0aHRpbWU6IG1hdGNoICYmIG1hdGNoLndpdGh0aW1lXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xuICAgKlxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnRcbiAgICogQHJldHVybiBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIGlzTXVsdGlzZWxlY3RTZWFyY2hGaWx0ZXIoZm9ybUVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBmb3JtRWxlbWVudCAmJlxuICAgICAgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdPUkdBTklaQVRJT04nIHx8XG4gICAgICAgIGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyB8fFxuICAgICAgICAvLyAuLi5cbiAgICAgICAgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmXG4gICAgICAgICAgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcicpIHx8XG4gICAgICAgIC8vIG11bHRpc2VsZWN0IHJlZmVyZW5jZSBmaWVsZHNcbiAgICAgICAgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmIGZvcm1FbGVtZW50Lm11bHRpc2VsZWN0KSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBTZWFyY2hSZXN1bHQgZnJvbSB0aGUgcmVzcG9uc2Ugc2VudCBieSB0aGUgc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSBiYWNrZW5kUmVzcG9uc2UgU2VydmVyIHJlc3BvbnNlXG4gICAqIEByZXR1cm5UaGUgU2VhcmNoUmVzdWx0IFNlYXJjaFJlc3VsdCBvYmplY3QgY3JlYXRlZCBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2VcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UoYmFja2VuZFJlc3BvbnNlKTogU2VhcmNoUmVzdWx0IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0KCk7XG4gICAgcmVzdWx0LnN1Z2dlc3RzID0gYmFja2VuZFJlc3BvbnNlLnN1Z2dlc3Q7XG4gICAgcmVzdWx0LmZpZWxkcyA9IGJhY2tlbmRSZXNwb25zZS5jb25maWc7XG5cbiAgICAvKipcbiAgICAgKiB1c2UgaGl0cyBfaWQgZmllbGQgYXMgaWQgcHJvcGVydHksIGJlY2F1c2Ugb3RoZXJ3aXNlIGVtcHR5IHJlc3VsdCBoaXRzIHdvdWxkIG5vdCBjb250YWluIGFuIGlkXG4gICAgICovXG4gICAgY29uc3QgaGl0cyA9IGJhY2tlbmRSZXNwb25zZS5oaXRzLmhpdHMubWFwKGggPT4gKHtcbiAgICAgIC4uLmguX3NvdXJjZSxcbiAgICAgIGlkOiBoLl9pZCxcbiAgICAgIC4uLihoLnNuaXBwZXRzICYmIHtzbmlwcGV0czogaC5zbmlwcGV0c30pLFxuICAgICAgLy8gaGF2aW5nIHJlcXVlc3RlZCBhIHJlc29sdmVkIHJlZmVyZW5jZSAob3B0aW9ucykgd2UgYWxzbyBwYXNzIGBfcmVmZXJlbmNlYCBpbiB0aGUgcmVzdWx0IGl0ZW1cbiAgICAgIC4uLihoLnJlZmVyZW5jZXMgJiYge19yZWZlcmVuY2VzOiBoLnJlZmVyZW5jZXN9KSxcbiAgICAgIC4uLihoLmNvbnRleHQgJiYge2NvbnRleHQ6IGguY29udGV4dH0pXG4gICAgfSkpO1xuXG4gICAgcmVzdWx0LmNvdW50ID0gYmFja2VuZFJlc3BvbnNlLmhpdHMudG90YWw7XG4gICAgcmVzdWx0LmhpdHMgPSBoaXRzIHx8IFtdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgdGhlIFJlc3VsIHRGaWVsZCBEZWZpbml0aW9uIENvbmZpZ1xuICAgKlxuICAgKiBAcGFyYW0gU2VhcmNoUXVlcnkgcXVlcnlcbiAgICogQHJldHVybiAoe3R5cGU6IE9iamVjdFR5cGU7IGNvbnRleHRUeXBlOiBPYmplY3RUeXBlfSlcbiAgICovXG4gIGdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyhxdWVyeTogU2VhcmNoUXVlcnkpIHtcbiAgICBjb25zdCB0eXBlID0gKHF1ZXJ5LnR5cGVzIHx8IFtdKS5sZW5ndGggPT09IDEgPyBxdWVyeS50eXBlc1swXSA6IG51bGw7XG4gICAgY29uc3QgY29udGV4dFR5cGUgPVxuICAgICAgKHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcyB8fCBbXSkubGVuZ3RoID09PSAxXG4gICAgICAgID8gcXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdXG4gICAgICAgIDogbnVsbDtcbiAgICByZXR1cm4ge3R5cGUsIGNvbnRleHRUeXBlfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcbiAgICB0eXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGxcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGVOYW1lOiB0eXBlID8gdHlwZS5xbmFtZSA6ICdzeXNvYmplY3QnLFxuICAgICAgY29udGV4dFR5cGVOYW1lOiB0eXBlICYmIGNvbnRleHRUeXBlID8gY29udGV4dFR5cGUucW5hbWUgOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHJlc3VsdCBmaWVsZCBkZWZpbml0aW9uIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlXG4gICAqIFVTRVI6IChkZWZhdWx0KSB0aGUgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiBzYXZlZCBieSB0aGUgY3VycmVudCB1c2VyXG4gICAqIERFRkFVTFQ6IHRoZSBkZWZhdWx0IHJlc3VsdCBsaXN0IGNvbmZpZ3VyYXRpb24gKGFsc28gcmV0dXJuZWQgd2hlbiB0aGVyZSBpcyBubyB1c2VyIGNvbmZpZ3VyYXRpb24pXG4gICAqIEFMTDogYWxsIGF2YWlsYWJsZSByZXN1bHQgZmllbGRzIGZvciB0aGUgZ2l2ZW4gdHlwZSAoYW5kIGNvbnRleHQpXG4gICAqXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXG4gICAqIEBwYXJhbSBtb2RlIFRoZSByZXN1bHQgbGlzdHMgY29uZmlndXJhdGlvbiBtb2RlOlxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8RmllbGREZWZpbml0aW9uPlxuICAgKi9cbiAgZmV0Y2hSZXN1bHRGaWVsZERlZmluaXRpb24oXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxuICAgIG1vZGVcbiAgKSB7XG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxuICAgICAgdHlwZSxcbiAgICAgIGNvbnRleHRUeXBlXG4gICAgKTtcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL3VzZXIvY29uZmlnL3Jlc3VsdC8ke3R5cGVOYW1lfWAsIHtcbiAgICAgIGNvbnRleHR0eXBlOiBjb250ZXh0VHlwZU5hbWUsXG4gICAgICBtb2RlXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAocmVzOiBhbnkpID0+XG4gICAgICAgICAgICBuZXcgRmllbGREZWZpbml0aW9uKFxuICAgICAgICAgICAgICByZXMuZWxlbWVudHMsXG4gICAgICAgICAgICAgIHJlcy5zb3J0b3JkZXIsXG4gICAgICAgICAgICAgIHJlcy5ncm91cG9yZGVyLFxuICAgICAgICAgICAgICByZXMucGlubmVkLFxuICAgICAgICAgICAgICByZXMuYWxpZ25tZW50eCxcbiAgICAgICAgICAgICAgcmVzLm1vZGVcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBhIGNvbHVtbiBkZWZpbml0aW9uIGFzIHJlc3VsdCBvciBjb21tb24gcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxuICAgKiBAcGFyYW0gRmllbGREZWZpbml0aW9uIGRhdGEgVGhlIHJlc3VsdCBsaXN0IGNvbmZpZ3VyYXRpb24gdG8gYmUgcGVyc2lzdGVkXG4gICAqIEBwYXJhbSBib29sZWFuIGNvbW1vbiBGbGFnIGVuYWJsZXMgdG8gc2V0IGNvbmZpZyBhcyBkZWZhdWx0IC8gY29tbW9uIHJlc3VsdFxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgc2F2ZVJlc3VsdEZpZWxkRGVmaW5pdGlvbihcbiAgICB0eXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXG4gICAgZGF0YTogRmllbGREZWZpbml0aW9uLFxuICAgIGNvbW1vbiA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGJhc2VVcmkgPSBjb21tb25cbiAgICAgID8gJy91c2VyL2NvbmZpZy9jb21tb25yZXN1bHQvJ1xuICAgICAgOiAnL3VzZXIvY29uZmlnL3Jlc3VsdC8nO1xuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcbiAgICAgIHR5cGUsXG4gICAgICBjb250ZXh0VHlwZVxuICAgICk7XG4gICAgY29uc3QgdXJsID0gVXRpbHMuYnVpbGRVcmkoYmFzZVVyaSArIHR5cGVOYW1lLCB7XG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVybCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbHVtbiBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxuICAgIGNvbnRleHRUeXBlOiBPYmplY3RUeXBlIHwgbnVsbFxuICApIHtcbiAgICBjb25zdCB7dHlwZU5hbWUsIGNvbnRleHRUeXBlTmFtZX0gPSB0aGlzLnJlc29sdmVDb25maWdUeXBlTmFtZXMoXG4gICAgICB0eXBlLFxuICAgICAgY29udGV4dFR5cGVcbiAgICApO1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvdXNlci9jb25maWcvcmVzdWx0LyR7dHlwZU5hbWV9YCwge1xuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKHVybCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgdG8gYmUgYWRkZWQgdG8gYSBmb3JtIGVsZW1lbnQgYnkgZXh0cmFjdGluZyBpdCBmcm9tIGFcbiAgICogc2VhcmNoIGZpbHRlci4gVGhlIGtpbmQgb2YgdmFsdWUgZGlmZmVycyBiYXNlZCBvbiB0aGUgZm9ybSBlbGVtZW50cyB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFR5cGUgRm9ybSBlbGVtZW50cyB0eXBlICgnU1RSSU5HJywgJ0RBVEUnLCAnQ09ERVNZU1RFTScsIC4uLilcbiAgICogQHJldHVybnMgdGhlIGV4dHJhY3RlZCB2YWx1ZVxuICAgKi9cbiAgZmlsdGVyVG9FbGVtZW50VmFsdWUoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIGZvcm1FbGVtZW50VHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIC8vIHR5cGVzIHRoYXQgc3VwcG9ydCByYW5nZXNcbiAgICAgIGlmICgoZm9ybUVsZW1lbnRUeXBlID09PSAnTlVNQkVSJyB8fCBmb3JtRWxlbWVudFR5cGUgPT09ICdEQVRFVElNRScpICYmIGZpbHRlci5maXJzdFZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IFJhbmdlVmFsdWUoXG4gICAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxuICAgICAgICAgIGZpbHRlci5maXJzdFZhbHVlLFxuICAgICAgICAgIGZpbHRlci5zZWNvbmRWYWx1ZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBmaWx0ZXIuZmlyc3RWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0YWJsZSB2YWx1ZSBieSBleHRyYWN0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGNvcnJlc3BvbmRpbmdcbiAgICogc2VhcmNoIGZpbHRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJzIFRoZSBmaWx0ZXJzIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuICAgKiBAcGFyYW0gdGFibGVFbGVtZW50cyB0aGUgZm9ybSBlbGVtZW50cyBvZiB0aGUgdGFibGVcbiAgICogQHJldHVybnMgdGhlIHRhYmxlIHZhbHVlIGV4dHJhY3RlZCBmcm9tIGFsbCBmaWx0ZXJzXG4gICAqL1xuICB0YWJsZUZpbHRlcnNUb0VsZW1lbnRWYWx1ZShmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgdGFibGVFbGVtZW50cyl7XG4gICAgbGV0IHZhbHVlID0ge307XG4gICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgbGV0IGtleSA9IHRhYmxlRWxlbWVudHMuZmluZChlID0+IGUucW5hbWUgPT09IGYucHJvcGVydHkpLm5hbWU7XG4gICAgICBsZXQgdHlwZSA9IHRhYmxlRWxlbWVudHMuZmluZChlID0+IGUucW5hbWUgPT09IGYucHJvcGVydHkpLnR5cGU7XG4gICAgICB2YWx1ZVtrZXldID0gdGhpcy5maWx0ZXJUb0VsZW1lbnRWYWx1ZShmLCB0eXBlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW3ZhbHVlXTtcbiAgfVxufVxuIl19
@@ -0,0 +1,97 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BackendService } from '../backend/backend.service';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ /**
5
+ * Collection of Signing Services
6
+ */
7
+ export class SigningService {
8
+ constructor(backend, translate) {
9
+ this.backend = backend;
10
+ this.translate = translate;
11
+ }
12
+ /**
13
+ * Sign the document of a DMS Object
14
+ * @param id the id of the dms object
15
+ * @param signingData the signing informations
16
+ * @returns Observable<any>
17
+ */
18
+ signDocument(id, signingData) {
19
+ const uri = `/request/${id}`;
20
+ return this.backend.post(uri, signingData, '/signing');
21
+ }
22
+ getLocalizedSigningForm() {
23
+ return {
24
+ 'size': 'small',
25
+ 'readonly': false,
26
+ 'name': 'yuvsigners',
27
+ 'qname': 'yuvsigning.yuvsigners',
28
+ 'hitname': 'yuvsigning.yuvsigners',
29
+ 'label': 'Signers',
30
+ 'type': 'TABLE',
31
+ 'indexname': 'tab_yuvsigning_yuvsigners',
32
+ 'required': false,
33
+ 'elements': [
34
+ {
35
+ 'readonly': false,
36
+ 'name': 'yuvsignerorder',
37
+ 'qname': 'yuvsigning.yuvsigners.yuvsignerorder',
38
+ 'hitname': 'yuvsigning.yuvsigners.yuvsignerorder',
39
+ 'label': this.translate.instant('eo.action.signature.yuvsigners.yuvsignerorder'),
40
+ 'type': 'NUMBER',
41
+ 'indexname': 'num_yuvsignerorder',
42
+ 'scale': 0,
43
+ 'precision': 10,
44
+ 'grouping': false,
45
+ 'selectedforenrichment': false,
46
+ 'required': false,
47
+ 'sortable': true,
48
+ 'searchable': true
49
+ },
50
+ {
51
+ 'size': 'small',
52
+ 'multiline': false,
53
+ 'readonly': false,
54
+ 'name': 'yuvsignername',
55
+ 'qname': 'yuvsigning.yuvsigners.yuvsignername',
56
+ 'hitname': 'yuvsigning.yuvsigners.yuvsignername',
57
+ 'label': this.translate.instant('eo.action.signature.yuvsigners.yuvsignername'),
58
+ 'type': 'STRING',
59
+ 'indexname': 'str_yuvsignername',
60
+ 'autocomplete': true,
61
+ 'selectedforenrichment': false,
62
+ 'maxlen': 50,
63
+ 'minlen': 0,
64
+ 'required': false,
65
+ 'sortable': true,
66
+ 'searchable': true
67
+ },
68
+ {
69
+ 'size': 'small',
70
+ 'multiline': false,
71
+ 'readonly': false,
72
+ 'name': 'yuvsigneremail',
73
+ 'qname': 'yuvsigning.yuvsigners.yuvsigneremail',
74
+ 'hitname': 'yuvsigning.yuvsigners.yuvsigneremail',
75
+ 'label': this.translate.instant('eo.action.signature.yuvsigners.yuvsigneremail'),
76
+ 'type': 'STRING',
77
+ 'indexname': 'str_yuvsigneremail',
78
+ 'autocomplete': true,
79
+ 'selectedforenrichment': false,
80
+ 'maxlen': 200,
81
+ 'minlen': 0,
82
+ 'required': false,
83
+ 'sortable': true,
84
+ 'searchable': true
85
+ }
86
+ ]
87
+ };
88
+ }
89
+ }
90
+ SigningService.decorators = [
91
+ { type: Injectable }
92
+ ];
93
+ SigningService.ctorParameters = () => [
94
+ { type: BackendService },
95
+ { type: TranslateService }
96
+ ];
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3NpZ25pbmcvc2lnbmluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBaUJyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLE9BQXVCLEVBQVUsU0FBMkI7UUFBNUQsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFcEY7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLFdBQTJCO1FBQ2xELE1BQU0sR0FBRyxHQUFHLFlBQVksRUFBRSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTztZQUNMLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxTQUFTLEVBQUUsdUJBQXVCO1lBQ2xDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsV0FBVyxFQUFFLDJCQUEyQjtZQUN4QyxVQUFVLEVBQUUsS0FBSztZQUNqQixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLE1BQU0sRUFBRSxnQkFBZ0I7b0JBQ3hCLE9BQU8sRUFBRSxzQ0FBc0M7b0JBQy9DLFNBQVMsRUFBRSxzQ0FBc0M7b0JBQ2pELE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQztvQkFDaEYsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDO29CQUNWLFdBQVcsRUFBRSxFQUFFO29CQUNmLFVBQVUsRUFBRSxLQUFLO29CQUNqQix1QkFBdUIsRUFBRSxLQUFLO29CQUM5QixVQUFVLEVBQUUsS0FBSztvQkFDakIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFlBQVksRUFBRSxJQUFJO2lCQUNuQjtnQkFDRDtvQkFDRSxNQUFNLEVBQUUsT0FBTztvQkFDZixXQUFXLEVBQUUsS0FBSztvQkFDbEIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLE1BQU0sRUFBRSxlQUFlO29CQUN2QixPQUFPLEVBQUUscUNBQXFDO29CQUM5QyxTQUFTLEVBQUUscUNBQXFDO29CQUNoRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsOENBQThDLENBQUM7b0JBQy9FLE1BQU0sRUFBRSxRQUFRO29CQUNoQixXQUFXLEVBQUUsbUJBQW1CO29CQUNoQyxjQUFjLEVBQUUsSUFBSTtvQkFDcEIsdUJBQXVCLEVBQUUsS0FBSztvQkFDOUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixZQUFZLEVBQUUsSUFBSTtpQkFDbkI7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFLE9BQU87b0JBQ2YsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixNQUFNLEVBQUUsZ0JBQWdCO29CQUN4QixPQUFPLEVBQUUsc0NBQXNDO29CQUMvQyxTQUFTLEVBQUUsc0NBQXNDO29CQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUM7b0JBQ2hGLE1BQU0sRUFBRSxRQUFRO29CQUNoQixXQUFXLEVBQUUsb0JBQW9CO29CQUNqQyxjQUFjLEVBQUUsSUFBSTtvQkFDcEIsdUJBQXVCLEVBQUUsS0FBSztvQkFDOUIsUUFBUSxFQUFFLEdBQUc7b0JBQ2IsUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixZQUFZLEVBQUUsSUFBSTtpQkFDbkI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFsRkYsVUFBVTs7O1lBckJILGNBQWM7WUFDZCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Rtc09iamVjdH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluZ1JlcXVlc3Qge1xuICBzaWduaW5nUGxhdGZvcm06IHN0cmluZztcbiAgZW1haWxTdWJqZWN0OiBzdHJpbmc7XG4gIGVtYWlsQm9keTogc3RyaW5nO1xuICBzaWduZXJzOiBbXG4gICAge1xuICAgICAgc2lnbmVyTmFtZTogc3RyaW5nLFxuICAgICAgc2lnbmVyRW1haWw6IHN0cmluZyxcbiAgICAgIHNpZ25lclBob25lPzogc3RyaW5nLFxuICAgICAgc2lnbmVyT3JkZXI6IHN0cmluZ1xuICAgIH1cbiAgXTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIFNpZ25pbmcgU2VydmljZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNpZ25pbmdTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAvKipcbiAgICogU2lnbiB0aGUgZG9jdW1lbnQgb2YgYSBETVMgT2JqZWN0XG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGRtcyBvYmplY3RcbiAgICogQHBhcmFtIHNpZ25pbmdEYXRhIHRoZSBzaWduaW5nIGluZm9ybWF0aW9uc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHNpZ25Eb2N1bWVudChpZDogc3RyaW5nLCBzaWduaW5nRGF0YTogU2lnbmluZ1JlcXVlc3QpIHtcbiAgICBjb25zdCB1cmkgPSBgL3JlcXVlc3QvJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmksIHNpZ25pbmdEYXRhLCAnL3NpZ25pbmcnKTtcbiAgfVxuXG4gIGdldExvY2FsaXplZFNpZ25pbmdGb3JtKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnc2l6ZSc6ICdzbWFsbCcsXG4gICAgICAncmVhZG9ubHknOiBmYWxzZSxcbiAgICAgICduYW1lJzogJ3l1dnNpZ25lcnMnLFxuICAgICAgJ3FuYW1lJzogJ3l1dnNpZ25pbmcueXV2c2lnbmVycycsXG4gICAgICAnaGl0bmFtZSc6ICd5dXZzaWduaW5nLnl1dnNpZ25lcnMnLFxuICAgICAgJ2xhYmVsJzogJ1NpZ25lcnMnLFxuICAgICAgJ3R5cGUnOiAnVEFCTEUnLFxuICAgICAgJ2luZGV4bmFtZSc6ICd0YWJfeXV2c2lnbmluZ195dXZzaWduZXJzJyxcbiAgICAgICdyZXF1aXJlZCc6IGZhbHNlLFxuICAgICAgJ2VsZW1lbnRzJzogW1xuICAgICAgICB7XG4gICAgICAgICAgJ3JlYWRvbmx5JzogZmFsc2UsXG4gICAgICAgICAgJ25hbWUnOiAneXV2c2lnbmVyb3JkZXInLFxuICAgICAgICAgICdxbmFtZSc6ICd5dXZzaWduaW5nLnl1dnNpZ25lcnMueXV2c2lnbmVyb3JkZXInLFxuICAgICAgICAgICdoaXRuYW1lJzogJ3l1dnNpZ25pbmcueXV2c2lnbmVycy55dXZzaWduZXJvcmRlcicsXG4gICAgICAgICAgJ2xhYmVsJzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYWN0aW9uLnNpZ25hdHVyZS55dXZzaWduZXJzLnl1dnNpZ25lcm9yZGVyJyksXG4gICAgICAgICAgJ3R5cGUnOiAnTlVNQkVSJyxcbiAgICAgICAgICAnaW5kZXhuYW1lJzogJ251bV95dXZzaWduZXJvcmRlcicsXG4gICAgICAgICAgJ3NjYWxlJzogMCxcbiAgICAgICAgICAncHJlY2lzaW9uJzogMTAsXG4gICAgICAgICAgJ2dyb3VwaW5nJzogZmFsc2UsXG4gICAgICAgICAgJ3NlbGVjdGVkZm9yZW5yaWNobWVudCc6IGZhbHNlLFxuICAgICAgICAgICdyZXF1aXJlZCc6IGZhbHNlLFxuICAgICAgICAgICdzb3J0YWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3NlYXJjaGFibGUnOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAnc2l6ZSc6ICdzbWFsbCcsXG4gICAgICAgICAgJ211bHRpbGluZSc6IGZhbHNlLFxuICAgICAgICAgICdyZWFkb25seSc6IGZhbHNlLFxuICAgICAgICAgICduYW1lJzogJ3l1dnNpZ25lcm5hbWUnLFxuICAgICAgICAgICdxbmFtZSc6ICd5dXZzaWduaW5nLnl1dnNpZ25lcnMueXV2c2lnbmVybmFtZScsXG4gICAgICAgICAgJ2hpdG5hbWUnOiAneXV2c2lnbmluZy55dXZzaWduZXJzLnl1dnNpZ25lcm5hbWUnLFxuICAgICAgICAgICdsYWJlbCc6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmFjdGlvbi5zaWduYXR1cmUueXV2c2lnbmVycy55dXZzaWduZXJuYW1lJyksXG4gICAgICAgICAgJ3R5cGUnOiAnU1RSSU5HJyxcbiAgICAgICAgICAnaW5kZXhuYW1lJzogJ3N0cl95dXZzaWduZXJuYW1lJyxcbiAgICAgICAgICAnYXV0b2NvbXBsZXRlJzogdHJ1ZSxcbiAgICAgICAgICAnc2VsZWN0ZWRmb3JlbnJpY2htZW50JzogZmFsc2UsXG4gICAgICAgICAgJ21heGxlbic6IDUwLFxuICAgICAgICAgICdtaW5sZW4nOiAwLFxuICAgICAgICAgICdyZXF1aXJlZCc6IGZhbHNlLFxuICAgICAgICAgICdzb3J0YWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3NlYXJjaGFibGUnOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAnc2l6ZSc6ICdzbWFsbCcsXG4gICAgICAgICAgJ211bHRpbGluZSc6IGZhbHNlLFxuICAgICAgICAgICdyZWFkb25seSc6IGZhbHNlLFxuICAgICAgICAgICduYW1lJzogJ3l1dnNpZ25lcmVtYWlsJyxcbiAgICAgICAgICAncW5hbWUnOiAneXV2c2lnbmluZy55dXZzaWduZXJzLnl1dnNpZ25lcmVtYWlsJyxcbiAgICAgICAgICAnaGl0bmFtZSc6ICd5dXZzaWduaW5nLnl1dnNpZ25lcnMueXV2c2lnbmVyZW1haWwnLFxuICAgICAgICAgICdsYWJlbCc6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmFjdGlvbi5zaWduYXR1cmUueXV2c2lnbmVycy55dXZzaWduZXJlbWFpbCcpLFxuICAgICAgICAgICd0eXBlJzogJ1NUUklORycsXG4gICAgICAgICAgJ2luZGV4bmFtZSc6ICdzdHJfeXV2c2lnbmVyZW1haWwnLFxuICAgICAgICAgICdhdXRvY29tcGxldGUnOiB0cnVlLFxuICAgICAgICAgICdzZWxlY3RlZGZvcmVucmljaG1lbnQnOiBmYWxzZSxcbiAgICAgICAgICAnbWF4bGVuJzogMjAwLFxuICAgICAgICAgICdtaW5sZW4nOiAwLFxuICAgICAgICAgICdyZXF1aXJlZCc6IGZhbHNlLFxuICAgICAgICAgICdzb3J0YWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3NlYXJjaGFibGUnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -31,6 +31,7 @@ export * from './lib/service/upload/upload.service';
31
31
  export * from './lib/service/upload-registry/upload-registry.service';
32
32
  export * from './lib/service/user/user.service';
33
33
  export * from './lib/service/environment/environment.service';
34
+ export * from './lib/service/signing/signing.service';
34
35
  /**
35
36
  * Models
36
37
  */
@@ -82,4 +83,4 @@ export * from './lib/service/clipboard/clipboard-action.enum';
82
83
  export * from './lib/service/system-status/system.status.enum';
83
84
  export * from './lib/service/config/config.enum';
84
85
  export * from './lib/util/utils';
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VvLXNkay9jb3JlL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qzs7R0FFRztBQUNILGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RDs7R0FFRztBQUNILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaURBQWlELENBQUM7QUFFaEU7O0dBRUc7QUFDSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBEOztHQUVHO0FBQ0gsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuZXhwb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZUxvYWRlcn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lby1jb3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lby1jb3JlLXNoYXJlZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQuZW5haW8nO1xuXG4vKipcbiAqIFNlcnZpY2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvYXV0aC9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2JwbS9icG0uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NhY2hlL2FwcC1jYWNoZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2FwYWJpbGl0aWVzL2NhcGFiaWxpdGllcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2FwYWJpbGl0aWVzL2NhcGFiaWxpdGllcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NsaXBib2FyZC9jbGlwYm9hcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2Rtcy9kbXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2V2ZW50cy9ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2luYm94L2luYm94LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9sb2dnZXIvbG9nZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3N0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc3RvcmVkLXF1ZXJpZXMvc3RvcmVkLXF1ZXJpZXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3VwbG9hZC1yZWdpc3RyeS91cGxvYWQtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3VzZXIvdXNlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XG5cbi8qKlxuICogTW9kZWxzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2Jhc2VwYXJhbXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvY3VzdG9tLWFjdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2VvLWVycm9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2VvLXVzZXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvaW5ib3gtaXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvb3JnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3ByZXBhcmVkLWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvYnBtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3JhbmdlLXZhbHVlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3dvcmstaXRlbS1oaXN0b3J5Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3VwbG9hZC1maWxlLWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvdXBsb2FkLXRhcmdldC5tb2RlbCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC1xdWVyeS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC91cGxvYWQtZmlsZS1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3VwbG9hZC10YXJnZXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9zdG9yZWQtcXVlcmllcy9zdG9yZWQtcXVlcnkubW9kZWwnO1xuXG4vKipcbiAqIEludGVyZmFjZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9hdXRoL2F1dGguY2xvdWQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvZG1zL2Rtc1BhcmFtcy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9jbGlwYm9hcmQvY2xpcGJvYXJkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3N5c3RlbS1zdGF0dXMvc3lzdGVtLnN0YXR1cy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL2xvZ2dlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL2NoYW5nZS1wYXNzd29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL2V2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2UvaHR0cC1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2Uvb3JnYW5pemF0aW9uLW9iamVjdHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZS90cmVlLW5vZGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb25maWdcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL2NvcmUtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy9jb3JlLWluaXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWcvaW5pdGlhbGl6ZS1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL21pc3NpbmctdHJhbnNsYXRpb24taGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWcvdHJhbnNsYXRlLWpzb24tbG9hZGVyJztcblxuLyoqXG4gKiBNaXNjZWxsYW5lb3VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3N5c3RlbS1zdGF0dXMvc3lzdGVtLnN0YXR1cy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY29uZmlnL2NvbmZpZy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWwvdXRpbHMnO1xuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VvLXNkay9jb3JlL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qzs7R0FFRztBQUNILGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXREOztHQUVHO0FBQ0gsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpREFBaUQsQ0FBQztBQUVoRTs7R0FFRztBQUNILGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMscUNBQXFDLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRDs7R0FFRztBQUNILGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvcmVcbiAqL1xuXG5leHBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTG9hZGVyfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VvLWNvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VvLWNvcmUtc2hhcmVkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC5lbmFpbyc7XG5cbi8qKlxuICogU2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9hdXRoL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2xpcGJvYXJkL2NsaXBib2FyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvZXZlbnRzL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2V2ZW50cy9ldmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaW5ib3gvaW5ib3guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2xvZ2dlci9sb2dnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9zdG9yZWQtcXVlcmllcy9zdG9yZWQtcXVlcmllcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXBsb2FkL3VwbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXBsb2FkLXJlZ2lzdHJ5L3VwbG9hZC1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXNlci91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc2lnbmluZy9zaWduaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIE1vZGVsc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9iYXNlcGFyYW1zLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2N1c3RvbS1hY3Rpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9lby1lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9lby11c2VyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2luYm94LWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL29yZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9wcmVwYXJlZC1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2JwbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC91cGxvYWQtZmlsZS1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3VwbG9hZC10YXJnZXQubW9kZWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvdXBsb2FkLWZpbGUtaXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC91cGxvYWQtdGFyZ2V0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvc3RvcmVkLXF1ZXJpZXMvc3RvcmVkLXF1ZXJ5Lm1vZGVsJztcblxuLyoqXG4gKiBJbnRlcmZhY2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvYXV0aC9hdXRoLmNsb3VkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2Rtcy9kbXNQYXJhbXMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9zeXN0ZW0tc3RhdHVzL3N5c3RlbS5zdGF0dXMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZS9sb2dnZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZS9jaGFuZ2UtcGFzc3dvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZS9ldmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL2h0dHAtb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL29yZ2FuaXphdGlvbi1vYmplY3RzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2UvdHJlZS1ub2RlLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29uZmlnXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy9jb3JlLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWcvY29yZS1pbml0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL2luaXRpYWxpemUtbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy9taXNzaW5nLXRyYW5zbGF0aW9uLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL3RyYW5zbGF0ZS1qc29uLWxvYWRlcic7XG5cbi8qKlxuICogTWlzY2VsbGFuZW91c1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NsaXBib2FyZC9jbGlwYm9hcmQtYWN0aW9uLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9zeXN0ZW0tc3RhdHVzL3N5c3RlbS5zdGF0dXMuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NvbmZpZy9jb25maWcuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsL3V0aWxzJztcbiJdfQ==