@smarterplan/ngx-smarterplan-core 1.4.21 → 1.4.22

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 (114) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/splat-viewer/splat-viewer.component.mjs +361 -0
  10. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  11. package/esm2022/lib/config.mjs +1 -1
  12. package/esm2022/lib/helpers.service.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  19. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  20. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  21. package/esm2022/lib/mattertagData.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.module.mjs +9 -4
  23. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  24. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  29. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  30. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  31. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  32. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  33. package/esm2022/lib/services/content.service.mjs +1 -1
  34. package/esm2022/lib/services/filter.service.mjs +1 -1
  35. package/esm2022/lib/services/intervention.service.mjs +1 -1
  36. package/esm2022/lib/services/locale.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport-tag.service.mjs +12 -7
  43. package/esm2022/lib/services/matterport.service.mjs +17 -17
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/obj-to-glb.mjs +649 -0
  72. package/esm2022/lib/services/s3.service.mjs +43 -3
  73. package/esm2022/lib/services/search.service.mjs +1 -1
  74. package/esm2022/lib/services/support.service.mjs +1 -1
  75. package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
  76. package/esm2022/lib/services/tag.service.mjs +16 -16
  77. package/esm2022/lib/services/threejs-import.service.mjs +6 -4
  78. package/esm2022/lib/services/threejs.service.mjs +867 -95
  79. package/esm2022/lib/services/user.service.mjs +1 -1
  80. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  81. package/esm2022/lib/services/validators.service.mjs +1 -1
  82. package/esm2022/lib/services/viewer.service.mjs +189 -7
  83. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  84. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  85. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  86. package/esm2022/lib/validators/email.directive.mjs +1 -1
  87. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  88. package/esm2022/lib/validators/number.directive.mjs +1 -1
  89. package/esm2022/lib/validators/text.directive.mjs +1 -1
  90. package/esm2022/public-api.mjs +3 -1
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2239 -233
  92. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  93. package/lib/components/splat-viewer/splat-viewer.component.d.ts +98 -0
  94. package/lib/ngx-smarterplan-core.module.d.ts +7 -6
  95. package/lib/services/matterport-tag.service.d.ts +5 -5
  96. package/lib/services/obj-to-glb.d.ts +66 -0
  97. package/lib/services/s3.service.d.ts +7 -0
  98. package/lib/services/threejs.service.d.ts +336 -16
  99. package/lib/services/viewer.service.d.ts +110 -8
  100. package/package.json +1 -1
  101. package/public-api.d.ts +2 -0
  102. package/src/assets/viewers/splat/chunk-BYLI4YBI.js +17037 -0
  103. package/src/assets/viewers/splat/chunk-LDV6YPMG.js +1 -0
  104. package/src/assets/viewers/splat/chunk-WZ5Z4TU3.js +105719 -0
  105. package/src/assets/viewers/splat/convert-4DRLH77X.js +1 -0
  106. package/src/assets/viewers/splat/convert.html +11 -0
  107. package/src/assets/viewers/splat/converter-SLBB5MHG.js +1 -0
  108. package/src/assets/viewers/splat/index.html +90 -0
  109. package/src/assets/viewers/splat/spz-DEYRea_v-QE6YSGIB.js +5292 -0
  110. package/src/assets/viewers/splat/viewer-W4X3FWQJ.js +2704 -0
  111. package/src/assets/viewers/splat/viewer.css +1096 -0
  112. package/src/assets/viewers/splat/webp.wasm +0 -0
  113. package/src/assets/viewers/splat/worker.mjs +1383 -0
  114. package/src/assets/vs-app.json +67 -67
@@ -1,4 +1,4 @@
1
- import { Storage } from "aws-amplify";
1
+ import { Auth, Storage } from "aws-amplify";
2
2
  export const deleteFromS3 = async (path) => {
3
3
  await Storage.remove(path, { level: "public" })
4
4
  .then((result) => console.log("Successfully deleted =>", result))
@@ -17,22 +17,62 @@ export const uploadFileToS3 = async (path, file, objectId) => {
17
17
  return result.key;
18
18
  });
19
19
  };
20
+ /**
21
+ * Fetches fresh credentials, and says in the console how long the ones held had left: when an
22
+ * upload is refused, this is what tells why.
23
+ */
24
+ const renewCredentials = async () => {
25
+ try {
26
+ const held = await Auth.currentCredentials();
27
+ const left = held?.expiration ? new Date(held.expiration).getTime() - Date.now() : 0;
28
+ console.info(`[upload] credentials held expire in ${Math.round(left / 60000)} min, fetching new ones`);
29
+ // What Amplify itself does on signing in. Nobody signs in here through a federated provider,
30
+ // whose stored sign-in this would also drop.
31
+ await Auth.Credentials.clear();
32
+ await Auth.currentCredentials();
33
+ }
34
+ catch (error) {
35
+ // The upload will say what is wrong, if anything is.
36
+ console.warn("[upload] could not renew the credentials:", error);
37
+ }
38
+ };
39
+ const isExpiredTokenError = (error) => /ExpiredToken|token has expired/i.test(`${error?.name ?? ""} ${error?.Code ?? ""} ${error?.message ?? error ?? ""}`);
20
40
  /**
21
41
  * Uploads a file, reporting progress as a 0-1 fraction.
22
42
  *
23
43
  * uploadFileToS3 above swallows progress, which is fine for a photo and unusable for a 3D model:
24
44
  * these run to hundreds of megabytes, and an upload with no feedback is indistinguishable from a
25
45
  * frozen page. Returns the stored key, which is what gets saved on the record.
46
+ *
47
+ * A large file is sent in parts, each signed when it is sent. Left to itself, Storage.put signs
48
+ * them all with whatever credentials Amplify last handed the S3 provider, for any call - credentials
49
+ * that last an hour at most, and an upload of a few gigabytes takes longer: every part after they
50
+ * expire is refused with "The provided token has expired", and fetching new ones does not help, the
51
+ * upload never asks for them. Passing no credentials at all makes it ask Amplify for them part by
52
+ * part, and Amplify renews them as they age. Should they run out anyway, it starts once more.
26
53
  */
27
54
  export const uploadFileToS3WithProgress = async (path, file, onProgress) => {
28
- return Storage.put(path + file.name, file, {
55
+ const put = () => Storage.put(path + file.name, file, {
29
56
  contentType: file.type || "application/octet-stream",
57
+ // Present and empty, so that it replaces the provider's own; see above.
58
+ credentials: undefined,
30
59
  progressCallback(progress) {
31
60
  if (onProgress && progress.total > 0) {
32
61
  onProgress(progress.loaded / progress.total);
33
62
  }
34
63
  },
35
64
  }).then((result) => result.key);
65
+ try {
66
+ return await put();
67
+ }
68
+ catch (error) {
69
+ if (!isExpiredTokenError(error)) {
70
+ throw error;
71
+ }
72
+ console.warn("[upload] refused, the token had expired; starting again with new credentials", error);
73
+ await renewCredentials();
74
+ return put();
75
+ }
36
76
  };
37
77
  export const getSignedImageUrlForEquipment = async (equip) => {
38
78
  if (!equip.photo) {
@@ -190,4 +230,4 @@ export const copyFileInS3ViaDownload = async (sourceKey, destKey) => {
190
230
  });
191
231
  return result.key;
192
232
  };
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLEVBQzNDLElBQVksRUFDWixJQUFVLEVBQ1YsVUFBdUMsRUFDeEIsRUFBRTtJQUNqQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLDBCQUEwQjtRQUNwRCxnQkFBZ0IsQ0FBQyxRQUEyQztZQUN4RCxJQUFJLFVBQVUsSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNMLENBQUM7S0FDSixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUM5QyxLQUFnQixFQUNNLEVBQUU7SUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7U0FDL0MsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDYixPQUFPLE1BQWdCLENBQUM7SUFDNUIsQ0FBQyxDQUFDO1NBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBRVgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM1QyxPQUFPLEVBQ2UsRUFBRTtJQUN4QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUNsRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLE9BQU8sTUFBZ0IsQ0FBQztJQUM1QixDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLEVBQzFDLEtBQUssRUFDaUIsRUFBRTtJQUN4QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLE9BQU8sTUFBZ0IsQ0FBQztJQUM1QixDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQ2xDLEdBQVcsRUFDWCxRQUF1QixFQUN2QixJQUFZLEVBQ1osZ0JBQXdCLEVBQ1QsRUFBRTtJQUNqQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDWixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsT0FBTyxFQUFFO1lBQ3RELElBQUksRUFBRSxZQUFZO1NBQ3JCLENBQUMsQ0FBQztRQUNILE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLEVBQzNDLEdBQVcsRUFDWCxRQUF1QixFQUN2QixJQUFZLEVBQ1osZ0JBQXdCLEVBQ3hCLEtBQWEsRUFDRSxFQUFFO0lBRWpCLE9BQU8sSUFBSSxPQUFPLENBQVMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNqRCxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3pFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxPQUFPO1lBQ1gsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNMLENBQUM7UUFBQSxDQUFDO1FBRUYsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLEVBQzNDLFVBQWtCLEVBQ04sRUFBRTtJQUNkLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4QyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFnQixFQUFFO0lBQ3hFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNWLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQTBCLEVBQUU7SUFDaEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4QyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLE9BQU8sTUFBZ0IsQ0FBQztJQUM1QixDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFFWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUEwQixFQUFFO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4RCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLE9BQU8sTUFBZ0IsQ0FBQztJQUM1QixDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUF3QixFQUFFO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNULGFBQWE7UUFDYixPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQy9CLElBQVksRUFDWixJQUFZLEVBQ1osUUFBZ0IsRUFDRCxFQUFFO0lBQ2pCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRTtRQUN0QyxXQUFXLEVBQUUsa0JBQWtCO0tBQ2xDLENBQUM7U0FDRyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdEIsQ0FBQyxDQUFDO1NBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQzdCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDQSxFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFRLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FDbEMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFDbkMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FDcEMsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQ3hDLFNBQWlCLEVBQ2pCLE9BQWUsRUFDQSxFQUFFO0lBQ2pCLE1BQU0sVUFBVSxHQUFRLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDakQsUUFBUSxFQUFFLElBQUk7UUFDZCxLQUFLLEVBQUUsUUFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsd0JBQXdCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDakQsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsSUFBSSxTQUFTO0tBQ25ELENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVsZXRlRnJvbVMzID0gYXN5bmMgKHBhdGgpID0+IHtcclxuICAgIGF3YWl0IFN0b3JhZ2UucmVtb3ZlKHBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NmdWxseSBkZWxldGVkID0+XCIsIHJlc3VsdCkpXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coXCJEZWxldGluZyBmcm9tIFMzIGVycm9yOlwiLCBlcnJvcikpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzID0gYXN5bmMgKFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgcHJlZml4ID0gb2JqZWN0SWQgPyBgJHtvYmplY3RJZC5zbGljZSgwLCA4KX1fYCA6IFwiXCI7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIHByZWZpeCArIGZpbGUubmFtZSwgZmlsZSwge1xyXG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2socHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1VwbG9hZGVkIDogJywgcHJvZ3Jlc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSxcclxuICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2VzcyA9PlwiLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBVcGxvYWRzIGEgZmlsZSwgcmVwb3J0aW5nIHByb2dyZXNzIGFzIGEgMC0xIGZyYWN0aW9uLlxyXG4gKlxyXG4gKiB1cGxvYWRGaWxlVG9TMyBhYm92ZSBzd2FsbG93cyBwcm9ncmVzcywgd2hpY2ggaXMgZmluZSBmb3IgYSBwaG90byBhbmQgdW51c2FibGUgZm9yIGEgM0QgbW9kZWw6XHJcbiAqIHRoZXNlIHJ1biB0byBodW5kcmVkcyBvZiBtZWdhYnl0ZXMsIGFuZCBhbiB1cGxvYWQgd2l0aCBubyBmZWVkYmFjayBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFcclxuICogZnJvemVuIHBhZ2UuIFJldHVybnMgdGhlIHN0b3JlZCBrZXksIHdoaWNoIGlzIHdoYXQgZ2V0cyBzYXZlZCBvbiB0aGUgcmVjb3JkLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzV2l0aFByb2dyZXNzID0gYXN5bmMgKFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIG9uUHJvZ3Jlc3M/OiAoZnJhY3Rpb246IG51bWJlcikgPT4gdm9pZCxcclxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZS5uYW1lLCBmaWxlLCB7XHJcbiAgICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSB8fCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxyXG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2socHJvZ3Jlc3M6IHsgbG9hZGVkOiBudW1iZXI7IHRvdGFsOiBudW1iZXIgfSkge1xyXG4gICAgICAgICAgICBpZiAob25Qcm9ncmVzcyAmJiBwcm9ncmVzcy50b3RhbCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MocHJvZ3Jlc3MubG9hZGVkIC8gcHJvZ3Jlc3MudG90YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH0pLnRoZW4oKHJlc3VsdDogYW55KSA9PiByZXN1bHQua2V5KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudCA9IGFzeW5jIChcclxuICAgIGVxdWlwOiBFcXVpcG1lbnQsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xyXG4gICAgaWYgKCFlcXVpcC5waG90bykge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQoZXF1aXAucGhvdG8sIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG5cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUgPSBhc3luYyAoXHJcbiAgICBwcm9maWxlLFxyXG4pOiBQcm9taXNlPHN0cmluZyB8IHZvaWQ+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmdldChwcm9maWxlLmF2YXRhciwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlID0gYXN5bmMgKFxyXG4gICAgc3BhY2UsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHNwYWNlLmFubmV4ZXMsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2UgPSBhc3luYyAoXHJcbiAgICB1cmk6IHN0cmluZyxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZnJpZW5kbHlGaWxlTmFtZTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgcmV0dXJuIGZldGNoKHVyaSlcclxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuYmxvYigpKVxyXG4gICAgICAgIC50aGVuKChibG9iKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGAke2ZyaWVuZGx5RmlsZU5hbWV9LmpwZWdgLCB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImltYWdlL2pwZWdcIixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwYXRoLCBmaWxlLCBvYmplY3RJZCk7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnkgPSBhc3luYyAoXHJcbiAgICB1cmk6IHN0cmluZyxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZnJpZW5kbHlGaWxlTmFtZTogc3RyaW5nLFxyXG4gICAgcmV0cnk6IG51bWJlclxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICB3aGlsZSAocmV0cnkgPiAwKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByID0gYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UodXJpLCBvYmplY3RJZCwgcGF0aCwgZnJpZW5kbHlGaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRyeS0tO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVXBsb2FkIGVycm9yLCByZXRyeSBuwrAgJHtyZXRyeX0gOiBgLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJlamVjdChcIk1heCByZXRyeSBleGNlZWRlZFwiKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVBbGxGaWxlc0Zyb21Gb2xkZXJTMyA9IGFzeW5jIChcclxuICAgIGZvbGRlclBhdGg6IHN0cmluZyxcclxuKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIGNvbnN0IGFycmF5T2ZQcm9taXNlcyA9IFtdO1xyXG4gICAgU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcykubWFwKGFzeW5jIChrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSByZXNba2V5XTtcclxuICAgICAgICAgICAgICAgIGFycmF5T2ZQcm9taXNlcy5wdXNoKGRlbGV0ZUZyb21TMyhmaWxlLmtleSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoXCJMaXN0IGZhaWx1cmVcIiwgZXJyb3IpKTtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChhcnJheU9mUHJvbWlzZXMpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGxpc3RGaWxlc0luRm9sZGVyID0gYXN5bmMgKGZvbGRlclBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIsIHBhZ2VTaXplOiAnQUxMJyB9KVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5yZXN1bHRzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihcIkxpc3QgZmFpbHVyZVwiLCBlcnJvcikpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEZpbGUgPSBhc3luYyAocGF0aCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG5cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEZpbGVBc09iamVjdCA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxPYmplY3QgfCB2b2lkPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBkb3dubG9hZDogdHJ1ZSwgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgT2JqZWN0O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0QnVmZmVyRm9yRmlsZUZyb21TMyA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4gPT4ge1xyXG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QocGF0aCk7XHJcbiAgICBpZiAob2JqZWN0KSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIob2JqZWN0LkJvZHksIFwiYmluYXJ5XCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkSnNvblRvUzMgPSBhc3luYyAoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBqc29uOiBzdHJpbmcsXHJcbiAgICBmaWxlbmFtZTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UucHV0KHBhdGggKyBmaWxlbmFtZSwganNvbiwge1xyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2VzcyA9PlwiLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFBoeXNpY2FsbHkgZHVwbGljYXRlcyBhbiBTMyBvYmplY3QgdG8gYSBuZXcga2V5LiBVc2VkIHdoZW4gY29weWluZyBhdHRhY2htZW50c1xyXG4gKiBiZXR3ZWVuIGZlYXR1cmVzL3RpY2tldHMvZXRjLiBzbyB0aGUgY29weSBpcyBmdWxseSBpbmRlcGVuZGVudDogZGVsZXRpbmcgdGhlXHJcbiAqIG9yaWdpbmFsIGZpbGUgbGF0ZXIgbXVzdCBub3QgYWZmZWN0IHRoZSBjb3B5LlxyXG4gKiBJTVBPUlRBTlQ6IGRvZXMgTk9UIHN3YWxsb3cgZXJyb3JzIOKAlCBjYWxsZXJzIG5lZWQgdGhlIHJlYWwgZXJyb3IgKGUuZy4gTm9TdWNoS2V5KVxyXG4gKiB0byBkaXN0aW5ndWlzaCBhbiBvcnBoYW5lZCBEQiByZWZlcmVuY2UgZnJvbSBhIGdlbnVpbmUgY29weSBmYWlsdXJlLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TMyA9IGFzeW5jIChcclxuICAgIHNvdXJjZUtleTogc3RyaW5nLFxyXG4gICAgZGVzdEtleTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSBhd2FpdCBTdG9yYWdlLmNvcHkoXHJcbiAgICAgICAgeyBrZXk6IHNvdXJjZUtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcclxuICAgICAgICB7IGtleTogZGVzdEtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcclxuICAgICk7XHJcbiAgICByZXR1cm4gcmVzdWx0LmtleTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBGYWxsYmFjayBkdXBsaWNhdGlvbjogZG93bmxvYWRzIHRoZSBvYmplY3QgYW5kIHJlLXVwbG9hZHMgaXQgdW5kZXIgdGhlIG5ldyBrZXkuXHJcbiAqXHJcbiAqIFN0b3JhZ2UuY29weSgpIGJ1aWxkcyB0aGUgUzMgYHgtYW16LWNvcHktc291cmNlYCBoZWFkZXIgYnkgcGxhaW4gc3RyaW5nIGNvbmNhdGVuYXRpb25cclxuICogKHNlZSBAYXdzLWFtcGxpZnkvc3RvcmFnZSBBV1NTM1Byb3ZpZGVyLmNvcHk6IGAke2J1Y2tldH0vJHtzcmNQcmVmaXh9JHtzcmNLZXl9YCksIHdpdGggbm9cclxuICogVVJMLWVuY29kaW5nIG9mIHRoZSBrZXkuIEEga2V5IGhvbGRpbmcgYSBzcGFjZSwgYW4gYWNjZW50IG9yIGEgcGFyZW50aGVzaXMgdGhlcmVmb3JlXHJcbiAqIHlpZWxkcyBhIGhlYWRlciB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduZWQgY2Fub25pY2FsIHJlcXVlc3QsIGFuZCBTMyBhbnN3ZXJzXHJcbiAqIFwiVGhlIHJlcXVlc3Qgc2lnbmF0dXJlIHdlIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSB5b3UgcHJvdmlkZWRcIi5cclxuICpcclxuICogUm91bmQtdHJpcHBpbmcgdGhlIGJ5dGVzIGF2b2lkcyB0aGF0IGhlYWRlciBlbnRpcmVseSBhbmQgd29ya3MgZm9yIGFueSBrZXksIGF0IHRoZSBjb3N0XHJcbiAqIG9mIHRyYW5zZmVycmluZyB0aGUgZmlsZSB0aHJvdWdoIHRoZSBicm93c2VyIOKAlCBoZW5jZSBpdHMgdXNlIGFzIGEgZmFsbGJhY2sgb25seS5cclxuICogSU1QT1JUQU5UOiBsaWtlIGNvcHlGaWxlSW5TMywgdGhpcyBtdXN0IE5PVCBzd2FsbG93IGVycm9ycy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBjb3B5RmlsZUluUzNWaWFEb3dubG9hZCA9IGFzeW5jIChcclxuICAgIHNvdXJjZUtleTogc3RyaW5nLFxyXG4gICAgZGVzdEtleTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgZG93bmxvYWRlZDogYW55ID0gYXdhaXQgU3RvcmFnZS5nZXQoc291cmNlS2V5LCB7XHJcbiAgICAgICAgZG93bmxvYWQ6IHRydWUsXHJcbiAgICAgICAgbGV2ZWw6IFwicHVibGljXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gZG93bmxvYWRlZD8uQm9keTtcclxuICAgIGlmICghYm9keSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRW1wdHkgZG93bmxvYWQgZm9yIFwiJHtzb3VyY2VLZXl9XCIsIGNhbm5vdCBkdXBsaWNhdGUgaXRgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UucHV0KGRlc3RLZXksIGJvZHksIHtcclxuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcclxuICAgICAgICBjb250ZW50VHlwZTogZG93bmxvYWRlZC5Db250ZW50VHlwZSB8fCB1bmRlZmluZWQsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQua2V5O1xyXG59O1xyXG5cclxuIl19
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7U0FDMUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2hFLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQy9CLElBQVksRUFDWixJQUFVLEVBQ1YsUUFBdUIsRUFDUixFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7UUFDaEQsZ0JBQWdCLENBQUMsUUFBUTtZQUNyQix3Q0FBd0M7UUFDNUMsQ0FBQztRQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtLQUN6QixDQUFD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RUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ25DLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQ3BDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUN4QyxTQUFpQixFQUNqQixPQUFlLEVBQ0EsRUFBRTtJQUNqQixNQUFNLFVBQVUsR0FBUSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO1FBQ2pELFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFLFFBQVE7S0FDbEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQztJQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixTQUFTLHdCQUF3QixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFRLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO1FBQ2pELEtBQUssRUFBRSxRQUFRO1FBQ2YsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksU0FBUztLQUNuRCxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aCwgU3RvcmFnZSB9IGZyb20gXCJhd3MtYW1wbGlmeVwiO1xuaW1wb3J0IHsgRXF1aXBtZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUZyb21TMyA9IGFzeW5jIChwYXRoKSA9PiB7XG4gICAgYXdhaXQgU3RvcmFnZS5yZW1vdmUocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NmdWxseSBkZWxldGVkID0+XCIsIHJlc3VsdCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUubG9nKFwiRGVsZXRpbmcgZnJvbSBTMyBlcnJvcjpcIiwgZXJyb3IpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlVG9TMyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSxcbiAgICBvYmplY3RJZDogc3RyaW5nIHwgbnVsbCxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgY29uc3QgcHJlZml4ID0gb2JqZWN0SWQgPyBgJHtvYmplY3RJZC5zbGljZSgwLCA4KX1fYCA6IFwiXCI7XG4gICAgcmV0dXJuIFN0b3JhZ2UucHV0KHBhdGggKyBwcmVmaXggKyBmaWxlLm5hbWUsIGZpbGUsIHtcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzcykge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1VwbG9hZGVkIDogJywgcHJvZ3Jlc3MpO1xuICAgICAgICB9LFxuICAgICAgICBjb250ZW50VHlwZTogZmlsZS50eXBlLFxuICAgIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcbiAgICAgICAgfSk7XG59O1xuXG4vKipcbiAqIEZldGNoZXMgZnJlc2ggY3JlZGVudGlhbHMsIGFuZCBzYXlzIGluIHRoZSBjb25zb2xlIGhvdyBsb25nIHRoZSBvbmVzIGhlbGQgaGFkIGxlZnQ6IHdoZW4gYW5cbiAqIHVwbG9hZCBpcyByZWZ1c2VkLCB0aGlzIGlzIHdoYXQgdGVsbHMgd2h5LlxuICovXG5jb25zdCByZW5ld0NyZWRlbnRpYWxzID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGhlbGQ6IGFueSA9IGF3YWl0IEF1dGguY3VycmVudENyZWRlbnRpYWxzKCk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBoZWxkPy5leHBpcmF0aW9uID8gbmV3IERhdGUoaGVsZC5leHBpcmF0aW9uKS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpIDogMDtcbiAgICAgICAgY29uc29sZS5pbmZvKGBbdXBsb2FkXSBjcmVkZW50aWFscyBoZWxkIGV4cGlyZSBpbiAke01hdGgucm91bmQobGVmdCAvIDYwMDAwKX0gbWluLCBmZXRjaGluZyBuZXcgb25lc2ApO1xuICAgICAgICAvLyBXaGF0IEFtcGxpZnkgaXRzZWxmIGRvZXMgb24gc2lnbmluZyBpbi4gTm9ib2R5IHNpZ25zIGluIGhlcmUgdGhyb3VnaCBhIGZlZGVyYXRlZCBwcm92aWRlcixcbiAgICAgICAgLy8gd2hvc2Ugc3RvcmVkIHNpZ24taW4gdGhpcyB3b3VsZCBhbHNvIGRyb3AuXG4gICAgICAgIGF3YWl0IEF1dGguQ3JlZGVudGlhbHMuY2xlYXIoKTtcbiAgICAgICAgYXdhaXQgQXV0aC5jdXJyZW50Q3JlZGVudGlhbHMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGUgdXBsb2FkIHdpbGwgc2F5IHdoYXQgaXMgd3JvbmcsIGlmIGFueXRoaW5nIGlzLlxuICAgICAgICBjb25zb2xlLndhcm4oXCJbdXBsb2FkXSBjb3VsZCBub3QgcmVuZXcgdGhlIGNyZWRlbnRpYWxzOlwiLCBlcnJvcik7XG4gICAgfVxufTtcblxuY29uc3QgaXNFeHBpcmVkVG9rZW5FcnJvciA9IChlcnJvcjogYW55KTogYm9vbGVhbiA9PlxuICAgIC9FeHBpcmVkVG9rZW58dG9rZW4gaGFzIGV4cGlyZWQvaS50ZXN0KGAke2Vycm9yPy5uYW1lID8/IFwiXCJ9ICR7ZXJyb3I/LkNvZGUgPz8gXCJcIn0gJHtlcnJvcj8ubWVzc2FnZSA/PyBlcnJvciA/PyBcIlwifWApO1xuXG4vKipcbiAqIFVwbG9hZHMgYSBmaWxlLCByZXBvcnRpbmcgcHJvZ3Jlc3MgYXMgYSAwLTEgZnJhY3Rpb24uXG4gKlxuICogdXBsb2FkRmlsZVRvUzMgYWJvdmUgc3dhbGxvd3MgcHJvZ3Jlc3MsIHdoaWNoIGlzIGZpbmUgZm9yIGEgcGhvdG8gYW5kIHVudXNhYmxlIGZvciBhIDNEIG1vZGVsOlxuICogdGhlc2UgcnVuIHRvIGh1bmRyZWRzIG9mIG1lZ2FieXRlcywgYW5kIGFuIHVwbG9hZCB3aXRoIG5vIGZlZWRiYWNrIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYVxuICogZnJvemVuIHBhZ2UuIFJldHVybnMgdGhlIHN0b3JlZCBrZXksIHdoaWNoIGlzIHdoYXQgZ2V0cyBzYXZlZCBvbiB0aGUgcmVjb3JkLlxuICpcbiAqIEEgbGFyZ2UgZmlsZSBpcyBzZW50IGluIHBhcnRzLCBlYWNoIHNpZ25lZCB3aGVuIGl0IGlzIHNlbnQuIExlZnQgdG8gaXRzZWxmLCBTdG9yYWdlLnB1dCBzaWduc1xuICogdGhlbSBhbGwgd2l0aCB3aGF0ZXZlciBjcmVkZW50aWFscyBBbXBsaWZ5IGxhc3QgaGFuZGVkIHRoZSBTMyBwcm92aWRlciwgZm9yIGFueSBjYWxsIC0gY3JlZGVudGlhbHNcbiAqIHRoYXQgbGFzdCBhbiBob3VyIGF0IG1vc3QsIGFuZCBhbiB1cGxvYWQgb2YgYSBmZXcgZ2lnYWJ5dGVzIHRha2VzIGxvbmdlcjogZXZlcnkgcGFydCBhZnRlciB0aGV5XG4gKiBleHBpcmUgaXMgcmVmdXNlZCB3aXRoIFwiVGhlIHByb3ZpZGVkIHRva2VuIGhhcyBleHBpcmVkXCIsIGFuZCBmZXRjaGluZyBuZXcgb25lcyBkb2VzIG5vdCBoZWxwLCB0aGVcbiAqIHVwbG9hZCBuZXZlciBhc2tzIGZvciB0aGVtLiBQYXNzaW5nIG5vIGNyZWRlbnRpYWxzIGF0IGFsbCBtYWtlcyBpdCBhc2sgQW1wbGlmeSBmb3IgdGhlbSBwYXJ0IGJ5XG4gKiBwYXJ0LCBhbmQgQW1wbGlmeSByZW5ld3MgdGhlbSBhcyB0aGV5IGFnZS4gU2hvdWxkIHRoZXkgcnVuIG91dCBhbnl3YXksIGl0IHN0YXJ0cyBvbmNlIG1vcmUuXG4gKi9cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlVG9TM1dpdGhQcm9ncmVzcyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSxcbiAgICBvblByb2dyZXNzPzogKGZyYWN0aW9uOiBudW1iZXIpID0+IHZvaWQsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHB1dCA9ICgpID0+IFN0b3JhZ2UucHV0KHBhdGggKyBmaWxlLm5hbWUsIGZpbGUsIHtcbiAgICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSB8fCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxuICAgICAgICAvLyBQcmVzZW50IGFuZCBlbXB0eSwgc28gdGhhdCBpdCByZXBsYWNlcyB0aGUgcHJvdmlkZXIncyBvd247IHNlZSBhYm92ZS5cbiAgICAgICAgY3JlZGVudGlhbHM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzczogeyBsb2FkZWQ6IG51bWJlcjsgdG90YWw6IG51bWJlciB9KSB7XG4gICAgICAgICAgICBpZiAob25Qcm9ncmVzcyAmJiBwcm9ncmVzcy50b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzKHByb2dyZXNzLmxvYWRlZCAvIHByb2dyZXNzLnRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9IGFzIGFueSkudGhlbigocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5rZXkpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHB1dCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICghaXNFeHBpcmVkVG9rZW5FcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihcIlt1cGxvYWRdIHJlZnVzZWQsIHRoZSB0b2tlbiBoYWQgZXhwaXJlZDsgc3RhcnRpbmcgYWdhaW4gd2l0aCBuZXcgY3JlZGVudGlhbHNcIiwgZXJyb3IpO1xuICAgICAgICBhd2FpdCByZW5ld0NyZWRlbnRpYWxzKCk7XG4gICAgICAgIHJldHVybiBwdXQoKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQgPSBhc3luYyAoXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICAgIGlmICghZXF1aXAucGhvdG8pIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KGVxdWlwLnBob3RvLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG5cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUgPSBhc3luYyAoXG4gICAgcHJvZmlsZSxcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwcm9maWxlLmF2YXRhciwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlID0gYXN5bmMgKFxuICAgIHNwYWNlLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHNwYWNlLmFubmV4ZXMsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2UgPSBhc3luYyAoXG4gICAgdXJpOiBzdHJpbmcsXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGZyaWVuZGx5RmlsZU5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIGZldGNoKHVyaSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmJsb2IoKSlcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGAke2ZyaWVuZGx5RmlsZU5hbWV9LmpwZWdgLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbWFnZS9qcGVnXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwYXRoLCBmaWxlLCBvYmplY3RJZCk7XG4gICAgICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEJhc2U2NEltYWdlV2l0aFJldHJ5ID0gYXN5bmMgKFxuICAgIHVyaTogc3RyaW5nLFxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV0cnk6IG51bWJlclxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgd2hpbGUgKHJldHJ5ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UodXJpLCBvYmplY3RJZCwgcGF0aCwgZnJpZW5kbHlGaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0cnktLTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlamVjdChcIk1heCByZXRyeSBleGNlZWRlZFwiKTtcbiAgICB9KTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxuICAgIGZvbGRlclBhdGg6IHN0cmluZyxcbik6IFByb21pc2U8YW55PiA9PiB7XG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XG4gICAgU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSByZXNba2V5XTtcbiAgICAgICAgICAgICAgICBhcnJheU9mUHJvbWlzZXMucHVzaChkZWxldGVGcm9tUzMoZmlsZS5rZXkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIsIHBhZ2VTaXplOiAnQUxMJyB9KVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoXCJMaXN0IGZhaWx1cmVcIiwgZXJyb3IpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRGaWxlID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuXG59O1xuXG5leHBvcnQgY29uc3QgZG93bmxvYWRGaWxlQXNPYmplY3QgPSBhc3luYyAocGF0aCk6IFByb21pc2U8T2JqZWN0IHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIE9iamVjdDtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QocGF0aCk7XG4gICAgaWYgKG9iamVjdCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIob2JqZWN0LkJvZHksIFwiYmluYXJ5XCIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAganNvbjogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZW5hbWUsIGpzb24sIHtcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG59O1xuXG4vKipcbiAqIFBoeXNpY2FsbHkgZHVwbGljYXRlcyBhbiBTMyBvYmplY3QgdG8gYSBuZXcga2V5LiBVc2VkIHdoZW4gY29weWluZyBhdHRhY2htZW50c1xuICogYmV0d2VlbiBmZWF0dXJlcy90aWNrZXRzL2V0Yy4gc28gdGhlIGNvcHkgaXMgZnVsbHkgaW5kZXBlbmRlbnQ6IGRlbGV0aW5nIHRoZVxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXG4gKiBJTVBPUlRBTlQ6IGRvZXMgTk9UIHN3YWxsb3cgZXJyb3JzIOKAlCBjYWxsZXJzIG5lZWQgdGhlIHJlYWwgZXJyb3IgKGUuZy4gTm9TdWNoS2V5KVxuICogdG8gZGlzdGluZ3Vpc2ggYW4gb3JwaGFuZWQgREIgcmVmZXJlbmNlIGZyb20gYSBnZW51aW5lIGNvcHkgZmFpbHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TMyA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5jb3B5KFxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxuICAgICAgICB7IGtleTogZGVzdEtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuLyoqXG4gKiBGYWxsYmFjayBkdXBsaWNhdGlvbjogZG93bmxvYWRzIHRoZSBvYmplY3QgYW5kIHJlLXVwbG9hZHMgaXQgdW5kZXIgdGhlIG5ldyBrZXkuXG4gKlxuICogU3RvcmFnZS5jb3B5KCkgYnVpbGRzIHRoZSBTMyBgeC1hbXotY29weS1zb3VyY2VgIGhlYWRlciBieSBwbGFpbiBzdHJpbmcgY29uY2F0ZW5hdGlvblxuICogKHNlZSBAYXdzLWFtcGxpZnkvc3RvcmFnZSBBV1NTM1Byb3ZpZGVyLmNvcHk6IGAke2J1Y2tldH0vJHtzcmNQcmVmaXh9JHtzcmNLZXl9YCksIHdpdGggbm9cbiAqIFVSTC1lbmNvZGluZyBvZiB0aGUga2V5LiBBIGtleSBob2xkaW5nIGEgc3BhY2UsIGFuIGFjY2VudCBvciBhIHBhcmVudGhlc2lzIHRoZXJlZm9yZVxuICogeWllbGRzIGEgaGVhZGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25lZCBjYW5vbmljYWwgcmVxdWVzdCwgYW5kIFMzIGFuc3dlcnNcbiAqIFwiVGhlIHJlcXVlc3Qgc2lnbmF0dXJlIHdlIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSB5b3UgcHJvdmlkZWRcIi5cbiAqXG4gKiBSb3VuZC10cmlwcGluZyB0aGUgYnl0ZXMgYXZvaWRzIHRoYXQgaGVhZGVyIGVudGlyZWx5IGFuZCB3b3JrcyBmb3IgYW55IGtleSwgYXQgdGhlIGNvc3RcbiAqIG9mIHRyYW5zZmVycmluZyB0aGUgZmlsZSB0aHJvdWdoIHRoZSBicm93c2VyIOKAlCBoZW5jZSBpdHMgdXNlIGFzIGEgZmFsbGJhY2sgb25seS5cbiAqIElNUE9SVEFOVDogbGlrZSBjb3B5RmlsZUluUzMsIHRoaXMgbXVzdCBOT1Qgc3dhbGxvdyBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZUluUzNWaWFEb3dubG9hZCA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IGRvd25sb2FkZWQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuZ2V0KHNvdXJjZUtleSwge1xuICAgICAgICBkb3dubG9hZDogdHJ1ZSxcbiAgICAgICAgbGV2ZWw6IFwicHVibGljXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBib2R5ID0gZG93bmxvYWRlZD8uQm9keTtcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSBkb3dubG9hZCBmb3IgXCIke3NvdXJjZUtleX1cIiwgY2Fubm90IGR1cGxpY2F0ZSBpdGApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5wdXQoZGVzdEtleSwgYm9keSwge1xuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcbiAgICAgICAgY29udGVudFR5cGU6IGRvd25sb2FkZWQuQ29udGVudFR5cGUgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuIl19
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
123
123
  providedIn: "root",
124
124
  }]
125
125
  }], ctorParameters: () => [{ type: i1.FilterService }, { type: i2.EquipmentService }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztv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QUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuL2ZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBlbnVtIFNlYXJjaE9iamVjdFR5cGUge1xyXG4gICAgVVNFUiA9IFwiVVNFUlwiLFxyXG4gICAgRVFVSVBNRU5UID0gXCJFUVVJUE1FTlRcIixcclxuICAgIFRJQ0tFVCA9IFwiVElDS0VUXCIsXHJcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcclxuICAgIEZFQVRVUkUgPSBcIkZFQVRVUkVcIixcclxuICAgIFRFTVBMQVRFID0gXCJURU1QTEFURVwiLFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXF1aXBtZW50U2VydmljZTogRXF1aXBtZW50U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbk1hcChcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcclxuICAgICAgICBzZWFyY2hhYmxlOiBhbnksXHJcbiAgICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCByZXN1bHRzO1xyXG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBlcXVpcHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEVxdWlwcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgdGlja2V0c10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVxdWlwbWVudFNlcnZpY2UuZ2V0RXF1aXBtZW50c0ZvclRpY2tldChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1aXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRpY2tldHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnT2JqZWN0IG9mIHNlYXJjaGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9yZ2FuaXNhdGlvbnNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZ09iamVjdC5vcmddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3JnUmVzdWx0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gb2JqZWN0LnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJVc2Vyc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVXNlck1pc3Npb25zID0gb3JnT2JqZWN0LnVzZXJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnOiBvcmdPYmplY3Qub3JnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzOiBmaWx0ZXJlZFVzZXJNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZlYXR1cmVzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3pvbmUsIHRlbXBsYXRlc10gb2Ygc2VhcmNoYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzIGFzIE1pc3Npb25bXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBsYXRlUmVzdWx0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbkxpc3QoXHJcbiAgICAgICAgdGVybTogc3RyaW5nLFxyXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXHJcbiAgICAgICAgc2VhcmNoYWJsZTogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdHM7XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwZW1lbnRzID0gZXF1aXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTG9jYXRpb25zRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztv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QUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWlzc2lvbiB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcblxuZXhwb3J0IGVudW0gU2VhcmNoT2JqZWN0VHlwZSB7XG4gICAgVVNFUiA9IFwiVVNFUlwiLFxuICAgIEVRVUlQTUVOVCA9IFwiRVFVSVBNRU5UXCIsXG4gICAgVElDS0VUID0gXCJUSUNLRVRcIixcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcbiAgICBGRUFUVVJFID0gXCJGRUFUVVJFXCIsXG4gICAgVEVNUExBVEUgPSBcIlRFTVBMQVRFXCIsXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueSxcbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgcmVzdWx0cztcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGVxdWlwc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoc3BhY2UsIGZpbHRlcmVkRXF1aXBzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIHRpY2tldHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRUaWNrZXRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcmdPYmplY3Qgb2Ygc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JnT2JqZWN0Lm9yZ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmdSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IG9iamVjdC51c2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVXNlcnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRVc2VyTWlzc2lvbnMgPSBvcmdPYmplY3QudXNlcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlclJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZzogb3JnT2JqZWN0Lm9yZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnM6IGZpbHRlcmVkVXNlck1pc3Npb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGZWF0dXJlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbem9uZSwgdGVtcGxhdGVzXSBvZiBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGVtcGxhdGVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMgYXMgTWlzc2lvbltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGVSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIGFzeW5jIHNlYXJjaEZvclRlcm1Gb3JUeXBlSW5MaXN0KFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueVtdLFxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgbGV0IHJlc3VsdHM7XG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkVRVUlQTUVOVDpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcGVtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG59XG4iXX0=
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
41
41
  providedIn: 'root'
42
42
  }]
43
43
  }], ctorParameters: () => [{ type: i1.NgbModal }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQVBJIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdXBwb3J0U2VydmljZSB7XHJcbiAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiB0aGUgc3VwcG9ydCBmb3JtXHJcbiAgICovXHJcbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcclxuICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGZvcm1Db21wb25lbnQsIHtcclxuICAgICAgbW9kYWxEaWFsb2dDbGFzczogJ21vZGFsLXBhZGRpbmcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIHN1cHBvcnQgcmVxdWVzdCB0byBqaXJhXHJcbiAgICovXHJcbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSk9PntcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBBUEkucG9zdChcImhlbHBFbWFpbFwiLCBcIi9qaXJhLWVtYWlsL25ld1wiLCB7XHJcbiAgICAgICAgYm9keSA6IGRhdGEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZihyZXNwb25zZS5lcnIpe1xyXG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmVzb2x2ZSgnc2VuZCcpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgIEFQSSB9IGZyb20gXCJhd3MtYW1wbGlmeVwiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydFNlcnZpY2Uge1xuICBtb2RhbFJlZmVyZW5jZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkgeyB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1cHBvcnQgZm9ybVxuICAgKi9cbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcbiAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihmb3JtQ29tcG9uZW50LCB7XG4gICAgICBtb2RhbERpYWxvZ0NsYXNzOiAnbW9kYWwtcGFkZGluZycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBzdXBwb3J0IHJlcXVlc3QgdG8gamlyYVxuICAgKi9cbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpPT57XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEFQSS5wb3N0KFwiaGVscEVtYWlsXCIsIFwiL2ppcmEtZW1haWwvbmV3XCIsIHtcbiAgICAgICAgYm9keSA6IGRhdGEsXG4gICAgICB9KTtcbiAgICAgIGlmKHJlc3BvbnNlLmVycil7XG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcbiAgICAgIH1lbHNle1xuICAgICAgICByZXNvbHZlKCdzZW5kJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iXX0=
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
111
111
  providedIn: 'root',
112
112
  }]
113
113
  }], ctorParameters: () => [{ type: i1.CaptureService }, { type: i2.NavigationService }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zd2VlcC1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFXakQ7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBYXBCO0lBQ0E7SUFiVjs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFFakQsZ0dBQWdHO0lBQy9FLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztJQUU3RSxZQUNVLGNBQThCLEVBQzlCLGlCQUFvQztRQURwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUMzQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEtBQTBDLEVBQzFDLE9BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7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SUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsT0FBTyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7d0JBQ3JDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUNkLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx1RUFBdUU7WUFDekUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQXJHVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYXB0dXJlVmlld2VyIH0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvY2FwdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuaW50ZXJmYWNlIFN3ZWVwUG9zaXRpb24ge1xyXG4gIHN3ZWVwSUQ6IHN0cmluZztcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG4gIHo6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbmRzIHRoZSBNYXR0ZXJwb3J0IHN3ZWVwIGEgcG9pbnQgaW4gYSBzcGFjZSBzaXRzIGNsb3Nlc3QgdG8uXHJcbiAqXHJcbiAqIEEgdGFnIHBsYWNlZCBpbiBNYXR0ZXJwb3J0IGlzIHJlY29yZGVkIHdpdGggdGhlIHN3ZWVwIGl0IHdhcyBwbGFjZWQgZnJvbSwgYW5kIG11Y2ggb2YgdGhlXHJcbiAqIE1hdHRlcnBvcnQgc2lkZSBrZXlzIG9uIHRoYXQ6IHdoaWNoIGZsb29yIHBsYW4gZHJhd3MgdGhlIHRhZywgd2hpY2ggem9uZSBpdCBiZWxvbmdzIHRvLCB3aGljaFxyXG4gKiBmbG9vciBpdCBzaG93cyBvbi4gQSB0YWcgcGxhY2VkIGluIHRoZSBUaHJlZS5qcyB2aWV3ZXIgaGFzIG5vIHN3ZWVwLCBzbyBpdCB3YXMgbWlzc2luZyBmcm9tIGFsbFxyXG4gKiBvZiB0aGVtLiBSZXNvbHZpbmcgdGhlIG5lYXJlc3Qgb25lIGF0IGNyZWF0aW9uIC0gd2hhdCB0aGUgdGFnIGNvcHkgdG9vbCBhbHJlYWR5IGRvZXMgZm9yIGNvcGllZFxyXG4gKiB0YWdzIC0gbGV0cyBldmVyeSBvbmUgb2YgdGhvc2UgcmVhZGVycyB3b3JrIHVuY2hhbmdlZCBpbnN0ZWFkIG9mIGVhY2ggZ3Jvd2luZyBpdHMgb3duIGV4Y2VwdGlvbi5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTd2VlcExvY2F0b3JTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBTd2VlcHMgc2l0IGEgZmV3IG1ldHJlcyBhcGFydCwgc28gYSBwb2ludCBvbiBhIHNjYW5uZWQgc3VyZmFjZSBhbHdheXMgaGFzIG9uZSBuZWFyYnkuIEFueXRoaW5nXHJcbiAgICogZnVydGhlciBtZWFucyB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBpbiB0aGUgTWF0dGVycG9ydCBjYXB0dXJlJ3Mgc3BhY2UgLSBhIG1vZGVsIHRoYXQgd2FzXHJcbiAgICogbmV2ZXIgY2FsaWJyYXRlZCAtIGFuZCBhIHN3ZWVwIHBpY2tlZCBmcm9tIHRoYXQgZmFyIHdvdWxkIGZpbGUgdGhlIHRhZyB1bmRlciBhbiBhcmJpdHJhcnlcclxuICAgKiBmbG9vci4gTGVhdmluZyBpdCB3aXRob3V0IG9uZSBpcyB0aGUgaG9uZXN0IGFuc3dlciB0aGVyZS5cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfRElTVEFOQ0VfTUVUUkVTID0gMTA7XHJcblxyXG4gIC8qKiBTd2VlcCBwb3NpdGlvbnMgcGVyIHNwYWNlLiBUaGV5IG9ubHkgY2hhbmdlIG9uIGltcG9ydCwgc28gb25lIGxvYWQgcGVyIHNlc3Npb24gaXMgZW5vdWdoLiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3dlZXBzQnlTcGFjZSA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXB0dXJlU2VydmljZTogQ2FwdHVyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzd2VlcCBuZWFyZXN0IHRvIGEgcG9pbnQsIG9yIG51bGwgd2hlbiB0aGUgc3BhY2UgaGFzIG5vbmUgd2l0aGluIHJlYWNoLlxyXG4gICAqXHJcbiAgICogTmV2ZXIgdGhyb3dzOiB0aGlzIG9ubHkgcmVmaW5lcyB3aGVyZSBhIHRhZyBpcyBmaWxlZCwgYW5kIGEgdGFnIHRoYXQgY2Fubm90IGJlIGZpbGVkIGlzIHN0aWxsXHJcbiAgICogYmV0dGVyIHNhdmVkIHdpdGhvdXQgYSBzd2VlcCB0aGFuIG5vdCBzYXZlZCBhdCBhbGwuXHJcbiAgICovXHJcbiAgYXN5bmMgZmluZE5lYXJlc3RTd2VlcChcclxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuICAgIGlmICghcG9pbnQgfHwgIXNwYWNlSUQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5uZWFyZXN0U3dlZXAocG9pbnQsIGF3YWl0IHRoaXMubG9hZFN3ZWVwcyhzcGFjZUlEKSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFN3ZWVwTG9jYXRvclNlcnZpY2U6IGNvdWxkIG5vdCByZXNvbHZlIGEgc3dlZXAgaW4gc3BhY2UgJHtzcGFjZUlEfWAsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHN3ZWVwIGNsb3Nlc3QgdG8gYSBwb2ludCwgb3IgbnVsbCB3aGVuIG5vbmUgaXMgd2l0aGluIHJlYWNoLiAqL1xyXG4gIG5lYXJlc3RTd2VlcChcclxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcclxuICAgIHN3ZWVwczogU3dlZXBQb3NpdGlvbltdLFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgbGV0IG5lYXJlc3Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IG5lYXJlc3REaXN0YW5jZSA9IFN3ZWVwTG9jYXRvclNlcnZpY2UuTUFYX0RJU1RBTkNFX01FVFJFUztcclxuICAgIGZvciAoY29uc3Qgc3dlZXAgb2Ygc3dlZXBzKSB7XHJcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5oeXBvdChzd2VlcC54IC0gcG9pbnQueCwgc3dlZXAueSAtIHBvaW50LnksIHN3ZWVwLnogLSBwb2ludC56KTtcclxuICAgICAgaWYgKGRpc3RhbmNlIDw9IG5lYXJlc3REaXN0YW5jZSkge1xyXG4gICAgICAgIG5lYXJlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICAgIG5lYXJlc3QgPSBzd2VlcC5zd2VlcElEO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmVhcmVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xyXG4gICAgbGV0IHN3ZWVwcyA9IHRoaXMuc3dlZXBzQnlTcGFjZS5nZXQoc3BhY2VJRCk7XHJcbiAgICBpZiAoIXN3ZWVwcykge1xyXG4gICAgICBzd2VlcHMgPSB0aGlzLmZldGNoU3dlZXBzKHNwYWNlSUQpO1xyXG4gICAgICB0aGlzLnN3ZWVwc0J5U3BhY2Uuc2V0KHNwYWNlSUQsIHN3ZWVwcyk7XHJcbiAgICAgIC8vIEEgZmFpbGVkIGxvYWQgbXVzdCBub3QgYmUgcmVtZW1iZXJlZCBhcyBcInRoaXMgc3BhY2UgaGFzIG5vIHN3ZWVwc1wiLlxyXG4gICAgICBzd2VlcHMuY2F0Y2goKCkgPT4gdGhpcy5zd2VlcHNCeVNwYWNlLmRlbGV0ZShzcGFjZUlEKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3dlZXBzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xyXG4gICAgY29uc3QgY2FwdHVyZXMgPSBhd2FpdCB0aGlzLmNhcHR1cmVTZXJ2aWNlLmdldENhcHR1cmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIC8vIEEgM0QgbW9kZWwgaXMgaW1wb3J0ZWQgd2l0aCBvbmUgbmF2aWdhdGlvbiBlbnRyeSBvZiBpdHMgb3duLCBhIHBsYWNlaG9sZGVyIHNpdHRpbmcgYXQgdGhlXHJcbiAgICAvLyBvcmlnaW4uIEl0IGlzIG5vdCBhIHN3ZWVwLCBhbmQgY291bnRpbmcgaXQgd291bGQgbWFrZSBpdCB0aGUgXCJuZWFyZXN0XCIgZm9yIGFueSB0YWcgY2xvc2UgdG9cclxuICAgIC8vIHRoZSBvcmlnaW4uXHJcbiAgICBjb25zdCBub2RlSURzID0gKGNhcHR1cmVzID8/IFtdKVxyXG4gICAgICAuZmlsdGVyKChjYXB0dXJlKSA9PiBjYXB0dXJlLnZpZXdlciAhPT0gQ2FwdHVyZVZpZXdlci5USFJFRUpTKVxyXG4gICAgICAucmVkdWNlKChhbGwsIGNhcHR1cmUpID0+IGFsbC5jb25jYXQoY2FwdHVyZS5ub2Rlcz8uaXRlbXMgPz8gW10pLCBbXSlcclxuICAgICAgLm1hcCgobm9kZSkgPT4gbm9kZT8uaWQpXHJcbiAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKTtcclxuXHJcbiAgICBjb25zdCBuYXZpZ2F0aW9ucyA9IChcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9kZUlEcy5tYXAoKGlkKSA9PiB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTm9kZShpZCkpKVxyXG4gICAgKS5yZWR1Y2UoKGFsbCwgbGlzdCkgPT4gYWxsLmNvbmNhdChsaXN0KSwgW10pO1xyXG5cclxuICAgIGNvbnN0IHN3ZWVwczogU3dlZXBQb3NpdGlvbltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG5hdmlnYXRpb24gb2YgbmF2aWdhdGlvbnMpIHtcclxuICAgICAgaWYgKCFuYXZpZ2F0aW9uPy5tYXR0ZXJwb3J0U3dlZXBJRCB8fCAhbmF2aWdhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChbcG9zaXRpb24/LngsIHBvc2l0aW9uPy55LCBwb3NpdGlvbj8uel0uZXZlcnkoKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSkge1xyXG4gICAgICAgICAgc3dlZXBzLnB1c2goe1xyXG4gICAgICAgICAgICBzd2VlcElEOiBuYXZpZ2F0aW9uLm1hdHRlcnBvcnRTd2VlcElELFxyXG4gICAgICAgICAgICB4OiBwb3NpdGlvbi54LFxyXG4gICAgICAgICAgICB5OiBwb3NpdGlvbi55LFxyXG4gICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICAvLyBPbmUgdW5yZWFkYWJsZSBwb3NpdGlvbiBzaG91bGQgbm90IGNvc3QgdGhlIHNwYWNlIGFsbCBvZiBpdHMgc3dlZXBzLlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3dlZXBzO1xyXG4gIH1cclxufVxyXG4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zd2VlcC1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFXakQ7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBYXBCO0lBQ0E7SUFiVjs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFFakQsZ0dBQWdHO0lBQy9FLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztJQUU3RSxZQUNVLGNBQThCLEVBQzlCLGlCQUFvQztRQURwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUMzQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEtBQTBDLEVBQzFDLE9BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7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SUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsT0FBTyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7d0JBQ3JDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUNkLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx1RUFBdUU7WUFDekUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQXJHVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FwdHVyZVZpZXdlciB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FwdHVyZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9jYXB0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgU3dlZXBQb3NpdGlvbiB7XG4gIHN3ZWVwSUQ6IHN0cmluZztcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHo6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgTWF0dGVycG9ydCBzd2VlcCBhIHBvaW50IGluIGEgc3BhY2Ugc2l0cyBjbG9zZXN0IHRvLlxuICpcbiAqIEEgdGFnIHBsYWNlZCBpbiBNYXR0ZXJwb3J0IGlzIHJlY29yZGVkIHdpdGggdGhlIHN3ZWVwIGl0IHdhcyBwbGFjZWQgZnJvbSwgYW5kIG11Y2ggb2YgdGhlXG4gKiBNYXR0ZXJwb3J0IHNpZGUga2V5cyBvbiB0aGF0OiB3aGljaCBmbG9vciBwbGFuIGRyYXdzIHRoZSB0YWcsIHdoaWNoIHpvbmUgaXQgYmVsb25ncyB0bywgd2hpY2hcbiAqIGZsb29yIGl0IHNob3dzIG9uLiBBIHRhZyBwbGFjZWQgaW4gdGhlIFRocmVlLmpzIHZpZXdlciBoYXMgbm8gc3dlZXAsIHNvIGl0IHdhcyBtaXNzaW5nIGZyb20gYWxsXG4gKiBvZiB0aGVtLiBSZXNvbHZpbmcgdGhlIG5lYXJlc3Qgb25lIGF0IGNyZWF0aW9uIC0gd2hhdCB0aGUgdGFnIGNvcHkgdG9vbCBhbHJlYWR5IGRvZXMgZm9yIGNvcGllZFxuICogdGFncyAtIGxldHMgZXZlcnkgb25lIG9mIHRob3NlIHJlYWRlcnMgd29yayB1bmNoYW5nZWQgaW5zdGVhZCBvZiBlYWNoIGdyb3dpbmcgaXRzIG93biBleGNlcHRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTd2VlcExvY2F0b3JTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFN3ZWVwcyBzaXQgYSBmZXcgbWV0cmVzIGFwYXJ0LCBzbyBhIHBvaW50IG9uIGEgc2Nhbm5lZCBzdXJmYWNlIGFsd2F5cyBoYXMgb25lIG5lYXJieS4gQW55dGhpbmdcbiAgICogZnVydGhlciBtZWFucyB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBpbiB0aGUgTWF0dGVycG9ydCBjYXB0dXJlJ3Mgc3BhY2UgLSBhIG1vZGVsIHRoYXQgd2FzXG4gICAqIG5ldmVyIGNhbGlicmF0ZWQgLSBhbmQgYSBzd2VlcCBwaWNrZWQgZnJvbSB0aGF0IGZhciB3b3VsZCBmaWxlIHRoZSB0YWcgdW5kZXIgYW4gYXJiaXRyYXJ5XG4gICAqIGZsb29yLiBMZWF2aW5nIGl0IHdpdGhvdXQgb25lIGlzIHRoZSBob25lc3QgYW5zd2VyIHRoZXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX0RJU1RBTkNFX01FVFJFUyA9IDEwO1xuXG4gIC8qKiBTd2VlcCBwb3NpdGlvbnMgcGVyIHNwYWNlLiBUaGV5IG9ubHkgY2hhbmdlIG9uIGltcG9ydCwgc28gb25lIGxvYWQgcGVyIHNlc3Npb24gaXMgZW5vdWdoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN3ZWVwc0J5U3BhY2UgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxTd2VlcFBvc2l0aW9uW10+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2FwdHVyZVNlcnZpY2U6IENhcHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBzd2VlcCBuZWFyZXN0IHRvIGEgcG9pbnQsIG9yIG51bGwgd2hlbiB0aGUgc3BhY2UgaGFzIG5vbmUgd2l0aGluIHJlYWNoLlxuICAgKlxuICAgKiBOZXZlciB0aHJvd3M6IHRoaXMgb25seSByZWZpbmVzIHdoZXJlIGEgdGFnIGlzIGZpbGVkLCBhbmQgYSB0YWcgdGhhdCBjYW5ub3QgYmUgZmlsZWQgaXMgc3RpbGxcbiAgICogYmV0dGVyIHNhdmVkIHdpdGhvdXQgYSBzd2VlcCB0aGFuIG5vdCBzYXZlZCBhdCBhbGwuXG4gICAqL1xuICBhc3luYyBmaW5kTmVhcmVzdFN3ZWVwKFxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcbiAgICBzcGFjZUlEOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmICghcG9pbnQgfHwgIXNwYWNlSUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubmVhcmVzdFN3ZWVwKHBvaW50LCBhd2FpdCB0aGlzLmxvYWRTd2VlcHMoc3BhY2VJRCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFN3ZWVwTG9jYXRvclNlcnZpY2U6IGNvdWxkIG5vdCByZXNvbHZlIGEgc3dlZXAgaW4gc3BhY2UgJHtzcGFjZUlEfWAsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc3dlZXAgY2xvc2VzdCB0byBhIHBvaW50LCBvciBudWxsIHdoZW4gbm9uZSBpcyB3aXRoaW4gcmVhY2guICovXG4gIG5lYXJlc3RTd2VlcChcbiAgICBwb2ludDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyIH0sXG4gICAgc3dlZXBzOiBTd2VlcFBvc2l0aW9uW10sXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGxldCBuZWFyZXN0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbmVhcmVzdERpc3RhbmNlID0gU3dlZXBMb2NhdG9yU2VydmljZS5NQVhfRElTVEFOQ0VfTUVUUkVTO1xuICAgIGZvciAoY29uc3Qgc3dlZXAgb2Ygc3dlZXBzKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguaHlwb3Qoc3dlZXAueCAtIHBvaW50LngsIHN3ZWVwLnkgLSBwb2ludC55LCBzd2VlcC56IC0gcG9pbnQueik7XG4gICAgICBpZiAoZGlzdGFuY2UgPD0gbmVhcmVzdERpc3RhbmNlKSB7XG4gICAgICAgIG5lYXJlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICBuZWFyZXN0ID0gc3dlZXAuc3dlZXBJRDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5lYXJlc3Q7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTd2VlcHMoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxTd2VlcFBvc2l0aW9uW10+IHtcbiAgICBsZXQgc3dlZXBzID0gdGhpcy5zd2VlcHNCeVNwYWNlLmdldChzcGFjZUlEKTtcbiAgICBpZiAoIXN3ZWVwcykge1xuICAgICAgc3dlZXBzID0gdGhpcy5mZXRjaFN3ZWVwcyhzcGFjZUlEKTtcbiAgICAgIHRoaXMuc3dlZXBzQnlTcGFjZS5zZXQoc3BhY2VJRCwgc3dlZXBzKTtcbiAgICAgIC8vIEEgZmFpbGVkIGxvYWQgbXVzdCBub3QgYmUgcmVtZW1iZXJlZCBhcyBcInRoaXMgc3BhY2UgaGFzIG5vIHN3ZWVwc1wiLlxuICAgICAgc3dlZXBzLmNhdGNoKCgpID0+IHRoaXMuc3dlZXBzQnlTcGFjZS5kZWxldGUoc3BhY2VJRCkpO1xuICAgIH1cbiAgICByZXR1cm4gc3dlZXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYXdhaXQgdGhpcy5jYXB0dXJlU2VydmljZS5nZXRDYXB0dXJlc0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgLy8gQSAzRCBtb2RlbCBpcyBpbXBvcnRlZCB3aXRoIG9uZSBuYXZpZ2F0aW9uIGVudHJ5IG9mIGl0cyBvd24sIGEgcGxhY2Vob2xkZXIgc2l0dGluZyBhdCB0aGVcbiAgICAvLyBvcmlnaW4uIEl0IGlzIG5vdCBhIHN3ZWVwLCBhbmQgY291bnRpbmcgaXQgd291bGQgbWFrZSBpdCB0aGUgXCJuZWFyZXN0XCIgZm9yIGFueSB0YWcgY2xvc2UgdG9cbiAgICAvLyB0aGUgb3JpZ2luLlxuICAgIGNvbnN0IG5vZGVJRHMgPSAoY2FwdHVyZXMgPz8gW10pXG4gICAgICAuZmlsdGVyKChjYXB0dXJlKSA9PiBjYXB0dXJlLnZpZXdlciAhPT0gQ2FwdHVyZVZpZXdlci5USFJFRUpTKVxuICAgICAgLnJlZHVjZSgoYWxsLCBjYXB0dXJlKSA9PiBhbGwuY29uY2F0KGNhcHR1cmUubm9kZXM/Lml0ZW1zID8/IFtdKSwgW10pXG4gICAgICAubWFwKChub2RlKSA9PiBub2RlPy5pZClcbiAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKTtcblxuICAgIGNvbnN0IG5hdmlnYXRpb25zID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9kZUlEcy5tYXAoKGlkKSA9PiB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTm9kZShpZCkpKVxuICAgICkucmVkdWNlKChhbGwsIGxpc3QpID0+IGFsbC5jb25jYXQobGlzdCksIFtdKTtcblxuICAgIGNvbnN0IHN3ZWVwczogU3dlZXBQb3NpdGlvbltdID0gW107XG4gICAgZm9yIChjb25zdCBuYXZpZ2F0aW9uIG9mIG5hdmlnYXRpb25zKSB7XG4gICAgICBpZiAoIW5hdmlnYXRpb24/Lm1hdHRlcnBvcnRTd2VlcElEIHx8ICFuYXZpZ2F0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xuICAgICAgICBpZiAoW3Bvc2l0aW9uPy54LCBwb3NpdGlvbj8ueSwgcG9zaXRpb24/LnpdLmV2ZXJ5KCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICBzd2VlcHMucHVzaCh7XG4gICAgICAgICAgICBzd2VlcElEOiBuYXZpZ2F0aW9uLm1hdHRlcnBvcnRTd2VlcElELFxuICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgICAgICAgIHk6IHBvc2l0aW9uLnksXG4gICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gT25lIHVucmVhZGFibGUgcG9zaXRpb24gc2hvdWxkIG5vdCBjb3N0IHRoZSBzcGFjZSBhbGwgb2YgaXRzIHN3ZWVwcy5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN3ZWVwcztcbiAgfVxufVxuIl19
@@ -56,27 +56,27 @@ export class BaseTagService {
56
56
  throw new Error('updatePoiMetadata is not implemented in the base class.');
57
57
  }*/
58
58
  async prepareEquipmentHtml(equip) {
59
- throw new Error(`prepareEquipmentHtml is not implemented in the base class.
59
+ throw new Error(`prepareEquipmentHtml is not implemented in the base class.
60
60
  Please override this method in your extended class.`);
61
61
  }
62
62
  async prepareTicketHtml(ticket) {
63
- throw new Error(`prepareTicketHtml is not implemented in the base class.
63
+ throw new Error(`prepareTicketHtml is not implemented in the base class.
64
64
  Please override this method in your extended class.`);
65
65
  }
66
66
  async prepareFeatureHtml(feature) {
67
- throw new Error(`prepareFeatureHtml is not implemented in the base class.
67
+ throw new Error(`prepareFeatureHtml is not implemented in the base class.
68
68
  Please override this method in your extended class.`);
69
69
  }
70
70
  async prepareMeasurementHtml(measure) {
71
- throw new Error(`prepareMeasurementHtml is not implemented in the base class.
71
+ throw new Error(`prepareMeasurementHtml is not implemented in the base class.
72
72
  Please override this method in your extended class.`);
73
73
  }
74
74
  async prepareDeskHtml(feature) {
75
- throw new Error(`prepareDeskHtml is not implemented in the base class.
75
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
76
76
  Please override this method in your extended class.`);
77
77
  }
78
78
  async prepareIndicatorHtml(feature) {
79
- throw new Error(`prepareDeskHtml is not implemented in the base class.
79
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
80
80
  Please override this method in your extended class.`);
81
81
  }
82
82
  async getSignedTagIconSource(tagIconSrc) {
@@ -85,15 +85,15 @@ export class BaseTagService {
85
85
  getIconTagImageForFeature(feature, poi) {
86
86
  // const tagIcon = JSON.parse(poi.tagIcon);
87
87
  // return tagIcon.src;
88
- throw new Error(`getIconTagImageForFeature is not implemented in the base class.
88
+ throw new Error(`getIconTagImageForFeature is not implemented in the base class.
89
89
  Please override this method in your extended class.`);
90
90
  }
91
91
  getScriptForTag(object, tagType) {
92
- throw new Error(`getScriptForTag is not implemented in the base class.
92
+ throw new Error(`getScriptForTag is not implemented in the base class.
93
93
  Please override this method in your extended class.`);
94
94
  }
95
95
  getAnnexeForCommentTypeInFeature(feature, commentType) {
96
- throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
96
+ throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
97
97
  Please override this method in your extended class.`);
98
98
  }
99
99
  getBillboardMediaToEmbed(object) {
@@ -102,27 +102,27 @@ export class BaseTagService {
102
102
  return { comment: null, tagDescription: '' };
103
103
  }
104
104
  onActionDetailClick(url) {
105
- throw new Error(`onActionDetailClick is not implemented in the base class.
105
+ throw new Error(`onActionDetailClick is not implemented in the base class.
106
106
  Please override this method in your extended class.`);
107
107
  }
108
108
  onActionAudioClick(audioCommentID) {
109
- throw new Error(`onActionDetailClick is not implemented in the base class.
109
+ throw new Error(`onActionDetailClick is not implemented in the base class.
110
110
  Please override this method in your extended class.`);
111
111
  }
112
112
  onActionVideoClick(url) {
113
- throw new Error(`onActionVideoClick is not implemented in the base class.
113
+ throw new Error(`onActionVideoClick is not implemented in the base class.
114
114
  Please override this method in your extended class.`);
115
115
  }
116
116
  onActionImageClick(imageCommentID) {
117
- throw new Error(`onActionImageClick is not implemented in the base class.
117
+ throw new Error(`onActionImageClick is not implemented in the base class.
118
118
  Please override this method in your extended class.`);
119
119
  }
120
120
  onActionDocClick(url) {
121
- throw new Error(`onActionDocClick is not implemented in the base class.
121
+ throw new Error(`onActionDocClick is not implemented in the base class.
122
122
  Please override this method in your extended class.`);
123
123
  }
124
124
  onActionYoutubeClick(url) {
125
- throw new Error(`onActionYoutubeClick is not implemented in the base class.
125
+ throw new Error(`onActionYoutubeClick is not implemented in the base class.
126
126
  Please override this method in your extended class.`);
127
127
  }
128
128
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
134
134
  providedIn: 'root',
135
135
  }]
136
136
  }], ctorParameters: () => [] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFnQixDQUFDO0lBRWpCLGdGQUFnRjtJQUNoRixLQUFLLENBQUMsZUFBZSxDQUNuQixPQUFnQixFQUNoQixNQUFvQjtRQUVwQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFzQixFQUFFLE9BQWdCLEVBQUUsTUFBb0I7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxTQUFTLEdBQUcsaUdBQWlHLE9BQU8sUUFBUSxDQUFDO1lBQ3pJLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDO1FB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LGdEQUFnRDtRQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVc7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO3dHQXRKVSxjQUFjOzRHQUFkLGNBQWMsY0FIYixNQUFNOzs0RkFHUCxjQUFjO2tCQUoxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbW1lbnQsXHJcbiAgRGJPYmplY3RUeXBlLFxyXG4gIEVxdWlwbWVudCxcclxuICBGZWF0dXJlLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIFRhZ0FjdGlvbixcclxuICBUaWNrZXQsXHJcbiAgQ29tbWVudFR5cGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VUYWdTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKiogQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2VuZXJhdGluZyB0YWcgSFRNTC4gT3ZlcnJpZGUgaW4gZGVyaXZlZCBjbGFzc2VzLiAqL1xyXG4gIGFzeW5jIGdldEh0bWxUb0luamVjdChcclxuICAgIHRhZ1R5cGU6IFBvaVR5cGUsXHJcbiAgICBvYmplY3Q6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKiBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBpbmplY3RpbmcgSFRNTCBpbnRvIGEgdGFnIGNvbnRhaW5lci4gKi9cclxuICBhc3luYyBpbmplY3RIdG1sKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHRhZ1R5cGU6IFBvaVR5cGUsIG9iamVjdDogRGJPYmplY3RUeXBlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ2luamVjdEh0bWw6IGNvbnRhaW5lciBpcyBudWxsJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLmdldEh0bWxUb0luamVjdCh0YWdUeXBlLCBvYmplY3QpO1xyXG4gICAgICBpZiAoIWh0bWwgfHwgaHRtbC50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBFbXB0eSBIVE1MIHJldHVybmVkIGZvciAke3RhZ1R5cGV9YCk7XHJcbiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwidGFnLWRpdlwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAxMHB4O1wiPkJhc2UgaW1wbGVtZW50YXRpb246IE5vIGNvbnRlbnQgZm9yICR7dGFnVHlwZX08L2Rpdj5gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluamVjdEh0bWw6JywgZXJyb3IpO1xyXG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJ0YWctZGl2XCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDEwcHg7XCI+RXJyb3I6ICR7ZXJyb3IubWVzc2FnZX08L2Rpdj5gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIG5hdmlnYXRpb24gVVJMIGZvciB2aWV3aW5nIGRldGFpbHMgb2YgYSBzcGVjaWZpYyBvYmplY3QgdHlwZS4gKi9cclxuICBnZXRVcmxGb3JTZWVEZXRhaWxzKG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGFnVHlwZSkge1xyXG4gICAgICBjYXNlIFBvaVR5cGUuVElDS0VUOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9kZXRhaWwvJHtvYmplY3QuaWR9YDtcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9lcXVpcC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9tZWFzdXJlbWVudC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9mZWF0dXJlLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6IHtcclxuICAgICAgICByZXR1cm4gYHZpc2l0LyR7b2JqZWN0LnNwYWNlSUR9L2FkZF9ib29raW5nLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKmFzeW5jIHVwZGF0ZVBvaU1ldGFkYXRhKHBvaUlkOiBzdHJpbmcsIG1ldGFkYXRhOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcigndXBkYXRlUG9pTWV0YWRhdGEgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLicpO1xyXG4gIH0qL1xyXG5cclxuICBhc3luYyBwcmVwYXJlRXF1aXBtZW50SHRtbChlcXVpcDogRXF1aXBtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUVxdWlwbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZVRpY2tldEh0bWwodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlVGlja2V0SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVGZWF0dXJlSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUZlYXR1cmVIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZU1lYXN1cmVtZW50SHRtbChtZWFzdXJlOiBDb21tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZU1lYXN1cmVtZW50SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVEZXNrSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZURlc2tIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZUluZGljYXRvckh0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVEZXNrSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFNpZ25lZFRhZ0ljb25Tb3VyY2UodGFnSWNvblNyYzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgIGBnZXRTaWduZWRUYWdJY29uU291cmNlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZShmZWF0dXJlOiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKTogc3RyaW5nIHtcclxuICAgIC8vIGNvbnN0IHRhZ0ljb24gPSBKU09OLnBhcnNlKHBvaS50YWdJY29uKTtcclxuICAgIC8vIHJldHVybiB0YWdJY29uLnNyYztcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGdldFNjcmlwdEZvclRhZyhvYmplY3QsIHRhZ1R5cGU6IFBvaVR5cGUpOiBzdHJpbmcge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRTY3JpcHRGb3JUYWcgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuICBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZShcclxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICBjb21tZW50VHlwZTogQ29tbWVudFR5cGVcclxuICApOiBzdHJpbmcge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWxsYm9hcmRNZWRpYVRvRW1iZWQob2JqZWN0OiBEYk9iamVjdFR5cGUpOiB7XHJcbiAgICBjb21tZW50OiBDb21tZW50O1xyXG4gICAgdGFnRGVzY3JpcHRpb246IHN0cmluZztcclxuICB9IHtcclxuICAgIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gdG8gcHJldmVudCBjcmFzaCBpZiBiYXNlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCBkaXJlY3RseS5cclxuICAgIC8vIEV4dGVuZGVkIGNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kLlxyXG4gICAgcmV0dXJuIHsgY29tbWVudDogbnVsbCwgdGFnRGVzY3JpcHRpb246ICcnIH07XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRldGFpbENsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRGV0YWlsQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25BdWRpb0NsaWNrKGF1ZGlvQ29tbWVudElEOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25EZXRhaWxDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvblZpZGVvQ2xpY2sodXJsOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25WaWRlb0NsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uSW1hZ2VDbGljayhpbWFnZUNvbW1lbnRJRDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uSW1hZ2VDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvY0NsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRG9jQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25Zb3V0dWJlQ2xpY2sodXJsOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25Zb3V0dWJlQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxufVxyXG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFnQixDQUFDO0lBRWpCLGdGQUFnRjtJQUNoRixLQUFLLENBQUMsZUFBZSxDQUNuQixPQUFnQixFQUNoQixNQUFvQjtRQUVwQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFzQixFQUFFLE9BQWdCLEVBQUUsTUFBb0I7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxTQUFTLEdBQUcsaUdBQWlHLE9BQU8sUUFBUSxDQUFDO1lBQ3pJLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDO1FB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LGdEQUFnRDtRQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVc7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO3dHQXRKVSxjQUFjOzRHQUFkLGNBQWMsY0FIYixNQUFNOzs0RkFHUCxjQUFjO2tCQUoxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21tZW50LFxuICBEYk9iamVjdFR5cGUsXG4gIEVxdWlwbWVudCxcbiAgRmVhdHVyZSxcbiAgUE9JLFxuICBQb2lUeXBlLFxuICBUYWdBY3Rpb24sXG4gIFRpY2tldCxcbiAgQ29tbWVudFR5cGUsXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5cbmV4cG9ydCBjbGFzcyBCYXNlVGFnU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGdlbmVyYXRpbmcgdGFnIEhUTUwuIE92ZXJyaWRlIGluIGRlcml2ZWQgY2xhc3Nlcy4gKi9cbiAgYXN5bmMgZ2V0SHRtbFRvSW5qZWN0KFxuICAgIHRhZ1R5cGU6IFBvaVR5cGUsXG4gICAgb2JqZWN0OiBEYk9iamVjdFR5cGVcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKiBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBpbmplY3RpbmcgSFRNTCBpbnRvIGEgdGFnIGNvbnRhaW5lci4gKi9cbiAgYXN5bmMgaW5qZWN0SHRtbChjb250YWluZXI6IEhUTUxFbGVtZW50LCB0YWdUeXBlOiBQb2lUeXBlLCBvYmplY3Q6IERiT2JqZWN0VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2luamVjdEh0bWw6IGNvbnRhaW5lciBpcyBudWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBodG1sID0gYXdhaXQgdGhpcy5nZXRIdG1sVG9JbmplY3QodGFnVHlwZSwgb2JqZWN0KTtcbiAgICAgIGlmICghaHRtbCB8fCBodG1sLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBFbXB0eSBIVE1MIHJldHVybmVkIGZvciAke3RhZ1R5cGV9YCk7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz1cInRhZy1kaXZcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTBweDtcIj5CYXNlIGltcGxlbWVudGF0aW9uOiBObyBjb250ZW50IGZvciAke3RhZ1R5cGV9PC9kaXY+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluamVjdEh0bWw6JywgZXJyb3IpO1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwidGFnLWRpdlwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAxMHB4O1wiPkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9PC9kaXY+YDtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbmF2aWdhdGlvbiBVUkwgZm9yIHZpZXdpbmcgZGV0YWlscyBvZiBhIHNwZWNpZmljIG9iamVjdCB0eXBlLiAqL1xuICBnZXRVcmxGb3JTZWVEZXRhaWxzKG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRhZ1R5cGUpIHtcbiAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9kZXRhaWwvJHtvYmplY3QuaWR9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9lcXVpcC8ke29iamVjdC5pZH1gO1xuICAgICAgfVxuICAgICAgY2FzZSBQb2lUeXBlLk1FQVNVUkU6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9tZWFzdXJlbWVudC8ke29iamVjdC5pZH1gO1xuICAgICAgfVxuICAgICAgY2FzZSBQb2lUeXBlLkRBVEE6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9mZWF0dXJlLyR7b2JqZWN0LmlkfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFBvaVR5cGUuREVTSzoge1xuICAgICAgICByZXR1cm4gYHZpc2l0LyR7b2JqZWN0LnNwYWNlSUR9L2FkZF9ib29raW5nLyR7b2JqZWN0LmlkfWA7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyphc3luYyB1cGRhdGVQb2lNZXRhZGF0YShwb2lJZDogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1cGRhdGVQb2lNZXRhZGF0YSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuJyk7XG4gIH0qL1xuXG4gIGFzeW5jIHByZXBhcmVFcXVpcG1lbnRIdG1sKGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUVxdWlwbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVUaWNrZXRIdG1sKHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVUaWNrZXRIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVGZWF0dXJlSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVGZWF0dXJlSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlTWVhc3VyZW1lbnRIdG1sKG1lYXN1cmU6IENvbW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZU1lYXN1cmVtZW50SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlRGVza0h0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRGVza0h0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgYXN5bmMgcHJlcGFyZUluZGljYXRvckh0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRGVza0h0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2lnbmVkVGFnSWNvblNvdXJjZSh0YWdJY29uU3JjOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgZ2V0U2lnbmVkVGFnSWNvblNvdXJjZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuYFxuICAgICk7XG4gIH1cblxuICBnZXRJY29uVGFnSW1hZ2VGb3JGZWF0dXJlKGZlYXR1cmU6IERiT2JqZWN0VHlwZSwgcG9pOiBQT0kpOiBzdHJpbmcge1xuICAgIC8vIGNvbnN0IHRhZ0ljb24gPSBKU09OLnBhcnNlKHBvaS50YWdJY29uKTtcbiAgICAvLyByZXR1cm4gdGFnSWNvbi5zcmM7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRJY29uVGFnSW1hZ2VGb3JGZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGdldFNjcmlwdEZvclRhZyhvYmplY3QsIHRhZ1R5cGU6IFBvaVR5cGUpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0U2NyaXB0Rm9yVGFnIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cbiAgZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcbiAgICBjb21tZW50VHlwZTogQ29tbWVudFR5cGVcbiAgKTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEFubmV4ZUZvckNvbW1lbnRUeXBlSW5GZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBnZXRCaWxsYm9hcmRNZWRpYVRvRW1iZWQob2JqZWN0OiBEYk9iamVjdFR5cGUpOiB7XG4gICAgY29tbWVudDogQ29tbWVudDtcbiAgICB0YWdEZXNjcmlwdGlvbjogc3RyaW5nO1xuICB9IHtcbiAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgY3Jhc2ggaWYgYmFzZSBjbGFzcyBpcyBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuXG4gICAgLy8gRXh0ZW5kZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAgcmV0dXJuIHsgY29tbWVudDogbnVsbCwgdGFnRGVzY3JpcHRpb246ICcnIH07XG4gIH1cblxuICBvbkFjdGlvbkRldGFpbENsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkRldGFpbENsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBvbkFjdGlvbkF1ZGlvQ2xpY2soYXVkaW9Db21tZW50SUQ6IHN0cmluZykge1xuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25EZXRhaWxDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgb25BY3Rpb25WaWRlb0NsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvblZpZGVvQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uSW1hZ2VDbGljayhpbWFnZUNvbW1lbnRJRDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkltYWdlQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uRG9jQ2xpY2sodXJsOiBzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRG9jQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uWW91dHViZUNsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbllvdXR1YmVDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG59XG4iXX0=
@@ -9,7 +9,8 @@ import * as i3 from "./models/layer.service";
9
9
  import * as i4 from "./user.service";
10
10
  import * as i5 from "./models/plan.service";
11
11
  /** File extensions the Three.js viewer can load as a base model. */
12
- const SUPPORTED_MODEL_EXTENSIONS = ['.glb', '.gltf'];
12
+ // The splat formats open in the splat viewer, which runs in an iframe.
13
+ const SUPPORTED_MODEL_EXTENSIONS = ['.glb', '.gltf', '.splat.ply', '.spz', '.splat', '.ksplat', '.sog', 'lod-meta.json'];
13
14
  export class ThreeJsImportService {
14
15
  navigationService;
15
16
  zoneService;
@@ -39,11 +40,12 @@ export class ThreeJsImportService {
39
40
  */
40
41
  validateModelKey(key) {
41
42
  if (!key || !key.trim()) {
42
- return 'A 3D model file (.glb) is required for a Three.js visit.';
43
+ return 'A 3D model file is required.';
43
44
  }
44
45
  const trimmed = key.trim();
45
46
  if (!SUPPORTED_MODEL_EXTENSIONS.some((extension) => trimmed.toLowerCase().endsWith(extension))) {
46
- return `The 3D model must be a ${SUPPORTED_MODEL_EXTENSIONS.join(' or ')} file.`;
47
+ const listed = SUPPORTED_MODEL_EXTENSIONS.slice(0, -1).join(', ');
48
+ return `The 3D model must be a ${listed} or ${SUPPORTED_MODEL_EXTENSIONS[SUPPORTED_MODEL_EXTENSIONS.length - 1]} file.`;
47
49
  }
48
50
  // A full https:// URL is a signed link that expires; the stored value has to be the key itself
49
51
  // so a fresh URL can be signed on every visit.
@@ -148,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
148
150
  providedIn: 'root',
149
151
  }]
150
152
  }], ctorParameters: () => [{ type: i1.NavigationService }, { type: i2.ZoneService }, { type: i3.LayerService }, { type: i4.BaseUserService }, { type: i5.PlanService }] });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVqcy1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdGhyZWVqcy1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxXQUFXLEdBTVosTUFBTSxrQkFBa0IsQ0FBQztBQU0xQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQUVwQyxvRUFBb0U7QUFDcEUsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUtyRCxNQUFNLE9BQU8sb0JBQW9CO0lBWXJCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFmRixRQUFRLENBQVM7SUFFekIsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFDVSxpQkFBb0MsRUFDcEMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsV0FBd0I7UUFKeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDL0IsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEdBQVc7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QUNELGdDQUFnQztRQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFFLENBQUM7d0dBeEtVLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHJlbW92ZU51bGxLZXlzRnJvbU9iamVjdCwgcGFyc2VUaHJlZUpzUGxhY2VtZW50IH0gZnJvbSAnLi4vaGVscGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMZXZlbFN0YXR1cyxcclxuICBMYXllcixcclxuICBOb2RlLFxyXG4gIFpvbmUsXHJcbiAgTmF2aWdhdGlvbixcclxuICBQbGFuLFxyXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXllclNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9sYXllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGFuU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL3BsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuXHJcbi8qKiBGaWxlIGV4dGVuc2lvbnMgdGhlIFRocmVlLmpzIHZpZXdlciBjYW4gbG9hZCBhcyBhIGJhc2UgbW9kZWwuICovXHJcbmNvbnN0IFNVUFBPUlRFRF9NT0RFTF9FWFRFTlNJT05TID0gWycuZ2xiJywgJy5nbHRmJ107XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhyZWVKc0ltcG9ydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX3NwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBzcGFjZUlEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BhY2VJRDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc3BhY2VJRCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zcGFjZUlEID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB0aGF0IGFuIFMzIGtleSBwb2ludHMgYXQgc29tZXRoaW5nIHRoZSB2aWV3ZXIgY2FuIGFjdHVhbGx5IGxvYWQuXHJcbiAgICpcclxuICAgKiBSZXR1cm5zIHRoZSByZWFzb24gaXQgY2FuJ3QsIG9yIG51bGwgd2hlbiBpdCdzIGZpbmUuIFRoaXMgcnVucyBiZWZvcmUgYW55dGhpbmcgaXMgd3JpdHRlbiwgc28gYVxyXG4gICAqIG1pc3R5cGVkIGtleSBmYWlscyBvbiB0aGUgZm9ybSByYXRoZXIgdGhhbiBjcmVhdGluZyB6b25lcyBhbmQgbmF2aWdhdGlvbiBmb3IgYSBtb2RlbCB0aGF0IHdpbGxcclxuICAgKiA0MDQgdGhlIGZpcnN0IHRpbWUgc29tZW9uZSBvcGVucyB0aGUgdmlzaXQuXHJcbiAgICovXHJcbiAgdmFsaWRhdGVNb2RlbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKCFrZXkgfHwgIWtleS50cmltKCkpIHtcclxuICAgICAgcmV0dXJuICdBIDNEIG1vZGVsIGZpbGUgKC5nbGIpIGlzIHJlcXVpcmVkIGZvciBhIFRocmVlLmpzIHZpc2l0Lic7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0cmltbWVkID0ga2V5LnRyaW0oKTtcclxuICAgIGlmICghU1VQUE9SVEVEX01PREVMX0VYVEVOU0lPTlMuc29tZSgoZXh0ZW5zaW9uKSA9PiB0cmltbWVkLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkpIHtcclxuICAgICAgcmV0dXJuIGBUaGUgM0QgbW9kZWwgbXVzdCBiZSBhICR7U1VQUE9SVEVEX01PREVMX0VYVEVOU0lPTlMuam9pbignIG9yICcpfSBmaWxlLmA7XHJcbiAgICB9XHJcbiAgICAvLyBBIGZ1bGwgaHR0cHM6Ly8gVVJMIGlzIGEgc2lnbmVkIGxpbmsgdGhhdCBleHBpcmVzOyB0aGUgc3RvcmVkIHZhbHVlIGhhcyB0byBiZSB0aGUga2V5IGl0c2VsZlxyXG4gICAgLy8gc28gYSBmcmVzaCBVUkwgY2FuIGJlIHNpZ25lZCBvbiBldmVyeSB2aXNpdC5cclxuICAgIGlmICgvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHRyaW1tZWQpKSB7XHJcbiAgICAgIHJldHVybiAnRW50ZXIgdGhlIFMzIGtleSBvZiB0aGUgZmlsZSAoZS5nLiB2aXNpdHMvbXktbW9kZWwuZ2xiKSwgbm90IGEgZnVsbCBVUkwuJztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW1wb3J0RGF0YShcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgIHN1cmZhY2U6IG51bWJlcixcclxuICAgIHJlbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICBvdmVycmlkZUV4aXN0aW5nID0gdHJ1ZSxcclxuICAgIHBsYWNlbWVudE1ldGFkYXRhOiBzdHJpbmcgPSBudWxsXHJcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAocmVsb2FkaW5nKSB7XHJcbiAgICAgIC8vIFJlbG9hZGluZyBpcyBub3QgZnVsbHkgYXBwbGljYWJsZSB0byBzdGF0aWMgM0QgbW9kZWxzIHRoZSBzYW1lIHdheSBhcyBNYXR0ZXJwb3J0XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qga2V5RXJyb3IgPSB0aGlzLnZhbGlkYXRlTW9kZWxLZXkobm9kZT8ubW9kZWwzRCk7XHJcbiAgICBpZiAoa2V5RXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihrZXlFcnJvcikpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgY29uc3QgbWFpblpvbmUgPSB6b25lcy5maW5kKCh6KSA9PiAhei5wYXJlbnRJRCk7XHJcbiAgICBpZiAoIW1haW5ab25lKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ01pc3NpbmcgZGF0YSAobm8gbWFpbiBCdWlsZGluZyBab25lKScpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygnW1RocmVlSnNJbXBvcnRTZXJ2aWNlXSBJbXBvcnRpbmcgZGF0YSBmb3IgVGhyZWUuanMgbW9kZWwnKTtcclxuXHJcbiAgICAvLyAxLiBDaGVjay9jcmVhdGUgbGF5ZXIgb2YgYnVpbGRpbmcgdHlwZVxyXG4gICAgY29uc3QgbGF5ZXJCdWlsZGluZyA9IGF3YWl0IHRoaXMuZ2V0TGF5ZXJCeU5hbWUoJ0JVSUxESU5HJyk7XHJcbiAgICBcclxuICAgIC8vIFdlIGdlbmVyYXRlIGEgZHVtbXkgSUQgdG8gYWN0IGFzIG91ciBzaW5nbGUgXCJzd2VlcFwiIGVxdWl2YWxlbnRcclxuICAgIGNvbnN0IGR1bW15U3dlZXBJRCA9IHV1aWR2NCgpO1xyXG5cclxuICAgIC8vIDIuIENyZWF0ZSB0aGUgZGVmYXVsdCBab25lXHJcbiAgICBjb25zdCBjcmVhdGVkRGVmYXVsdFpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgIG5vZGUubWV0YWRhdGEgfHwgJ1RocmVlLmpzIDNEIE1vZGVsJyxcclxuICAgICAgbGF5ZXJCdWlsZGluZy5pZCxcclxuICAgICAgc3VyZmFjZSxcclxuICAgICAgbWFpblpvbmUuaWQsXHJcbiAgICAgIFtkdW1teVN3ZWVwSURdLFxyXG4gICAgICBub2RlXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghY3JlYXRlZERlZmF1bHRab25lKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDMuIENyZWF0ZSBhIGJsYW5rIFBsYW4gZm9yIHRoZSBtb2RlbCAodG8gZW5zdXJlIGNvbnNpc3RlbmN5IGluIHRoZSBhcHAgc3RydWN0dXJlKVxyXG4gICAgY29uc3QgcGxhbiA9IHtcclxuICAgICAgbmFtZTogYHBsYW5fdGhyZWVqc18ke25vZGUuaWR9YCxcclxuICAgICAgYW5uZXhlOiAnJywgLy8gTm8gZmxvb3JwbGFuIGltYWdlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IHlldFxyXG4gICAgICB6b25lSUQ6IGNyZWF0ZWREZWZhdWx0Wm9uZS5pZCxcclxuICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICBpc0N1cnJlbnRGb3Jab25lOiB0cnVlLFxyXG4gICAgICBpc01vZGlmaWVkOiBmYWxzZSxcclxuICAgICAgaXNJbXBvcnRlZE1hdHRlcnBvcnQ6IGZhbHNlLCAvLyBFeHBsaWNpdGx5IG5vdCBtYXR0ZXJwb3J0XHJcbiAgICB9IGFzIFBsYW47XHJcbiAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmNyZWF0ZVBsYW4ocGxhbik7XHJcblxyXG4gICAgLy8gNC4gQ3JlYXRlIHRoZSBzaW5nbGUgTmF2aWdhdGlvbiBlbnRyeSB0aGlzIG1vZGVsIGlzIHZpZXdlZCBmcm9tLlxyXG4gICAgLy8gTWF0dGVycG9ydCBkZXJpdmVzIHRoZXNlIGZyb20gaXRzIHN3ZWVwczsgYSBzdGF0aWMgbW9kZWwgaGFzIG5vIHN3ZWVwcywgc28gdGhlIHBsYWNlbWVudFxyXG4gICAgLy8gY29tZXMgZnJvbSB0aGUgbWV0YWRhdGEgZW50ZXJlZCBvbiB0aGUgZm9ybSwgZmFsbGluZyBiYWNrIHRvIHRoZSBvcmlnaW4uXHJcbiAgICBjb25zdCBwbGFjZW1lbnQgPSBwYXJzZVRocmVlSnNQbGFjZW1lbnQocGxhY2VtZW50TWV0YWRhdGEpO1xyXG4gICAgY29uc3Qgb3JpZ2luID0geyB4OiAwLCB5OiAwLCB6OiAwIH07XHJcbiAgICBjb25zdCBuYXZpZ2F0aW9uSW5wdXQgPSB7XHJcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBkdW1teVN3ZWVwSUQsXHJcbiAgICAgIHBvc2l0aW9uOiBKU09OLnN0cmluZ2lmeShwbGFjZW1lbnQ/LmNhbWVyYVBvc2l0aW9uID8/IG9yaWdpbiksXHJcbiAgICAgIHJvdGF0aW9uOiBKU09OLnN0cmluZ2lmeShwbGFjZW1lbnQ/LnJvdGF0aW9uID8/IG9yaWdpbiksXHJcbiAgICAgIGxldmVsOiBMZXZlbFN0YXR1cy5MT1csXHJcbiAgICAgIG5vZGVJRDogbm9kZS5pZCxcclxuICAgICAgc3BhY2VJRCxcclxuICAgIH0gYXMgTmF2aWdhdGlvbjtcclxuICAgIFxyXG4gICAgY29uc3QgbmF2ID0gYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5jcmVhdGVOYXZpZ2F0aW9uKG5hdmlnYXRpb25JbnB1dCk7XHJcbiAgICBpZiAoIW5hdikge1xyXG4gICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGNyZWF0ZSBuYXZpZ2F0aW9uIGZvcicsIG5hdmlnYXRpb25JbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2coJ1tUaHJlZUpzSW1wb3J0U2VydmljZV0gSW1wb3J0IGRvbmUuJyk7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlWm9uZShcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGxheWVySUQ6IHN0cmluZyxcclxuICAgIHN1cmZhY2U6IG51bWJlciA9IG51bGwsXHJcbiAgICBwYXJlbnRJRDogc3RyaW5nID0gbnVsbCxcclxuICAgIHN3ZWVwczogc3RyaW5nW10gPSBbXSxcclxuICAgIG5vZGU6IE5vZGUgPSBudWxsLFxyXG4gICAgbWV0YWRhdGE6IHN0cmluZyA9IG51bGxcclxuICApOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIGNvbnN0IHpvbmVJbnB1dCA9IHtcclxuICAgICAgbmFtZSxcclxuICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICBsYXllcklELFxyXG4gICAgICBzd2VlcElEczogc3dlZXBzLFxyXG4gICAgICBub2RlSURzOiBub2RlID8gW25vZGUuaWRdIDogbnVsbCxcclxuICAgIH0gYXMgWm9uZTtcclxuICAgIFxyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHpvbmVJbnB1dCk7XHJcbiAgICBpZiAoc3VyZmFjZSkge1xyXG4gICAgICB6b25lSW5wdXQuc3VyZmFjZSA9IHN1cmZhY2U7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyZW50SUQpIHtcclxuICAgICAgem9uZUlucHV0LnBhcmVudElEID0gcGFyZW50SUQ7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0YWRhdGEpIHtcclxuICAgICAgem9uZUlucHV0Lm1ldGFkYXRhID0gbWV0YWRhdGE7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IG5ld0xvY2FsID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5jcmVhdGUoem9uZUlucHV0KTtcclxuICAgIHJldHVybiBuZXdMb2NhbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldExheWVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRoaXMuc3BhY2VJRCk7XHJcbiAgICBjb25zdCBjdXJyZW50T3JnSWQgPSBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEO1xyXG4gICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGN1cnJlbnRPcmdJZFxyXG4gICAgKTtcclxuICAgIGlmIChsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gbGF5ZXJzWzBdO1xyXG4gICAgfVxyXG4gICAgLy8gQ3JlYXRlIGl0IGlmIGl0IGRvZXNuJ3QgZXhpc3RcclxuICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xyXG4gIH1cclxufVxyXG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVqcy1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdGhyZWVqcy1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxXQUFXLEdBTVosTUFBTSxrQkFBa0IsQ0FBQztBQU0xQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQUVwQyxvRUFBb0U7QUFDcEUsdUVBQXVFO0FBQ3ZFLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFLekgsTUFBTSxPQUFPLG9CQUFvQjtJQVlyQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZkYsUUFBUSxDQUFTO0lBRXpCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQ1UsaUJBQW9DLEVBQ3BDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFdBQTRCLEVBQzVCLFdBQXdCO1FBSnhCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FB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LENBQUMsY0FBYyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FDbEUsSUFBSSxFQUNKLFlBQVksQ0FDYixDQUFDO1FBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxnQ0FBZ0M7UUFDaEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDO3dHQXpLVSxvQkFBb0I7NEdBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0LCBwYXJzZVRocmVlSnNQbGFjZW1lbnQgfSBmcm9tICcuLi9oZWxwZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTGV2ZWxTdGF0dXMsXG4gIExheWVyLFxuICBOb2RlLFxuICBab25lLFxuICBOYXZpZ2F0aW9uLFxuICBQbGFuLFxufSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL2xheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9wbGFuLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy96b25lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbi8qKiBGaWxlIGV4dGVuc2lvbnMgdGhlIFRocmVlLmpzIHZpZXdlciBjYW4gbG9hZCBhcyBhIGJhc2UgbW9kZWwuICovXG4vLyBUaGUgc3BsYXQgZm9ybWF0cyBvcGVuIGluIHRoZSBzcGxhdCB2aWV3ZXIsIHdoaWNoIHJ1bnMgaW4gYW4gaWZyYW1lLlxuY29uc3QgU1VQUE9SVEVEX01PREVMX0VYVEVOU0lPTlMgPSBbJy5nbGInLCAnLmdsdGYnLCAnLnNwbGF0LnBseScsICcuc3B6JywgJy5zcGxhdCcsICcua3NwbGF0JywgJy5zb2cnLCAnbG9kLW1ldGEuanNvbiddO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGhyZWVKc0ltcG9ydFNlcnZpY2Uge1xuICBwcml2YXRlIF9zcGFjZUlEOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBzcGFjZUlEKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NwYWNlSUQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNwYWNlSUQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NwYWNlSUQgPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIHRoYXQgYW4gUzMga2V5IHBvaW50cyBhdCBzb21ldGhpbmcgdGhlIHZpZXdlciBjYW4gYWN0dWFsbHkgbG9hZC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgcmVhc29uIGl0IGNhbid0LCBvciBudWxsIHdoZW4gaXQncyBmaW5lLiBUaGlzIHJ1bnMgYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4sIHNvIGFcbiAgICogbWlzdHlwZWQga2V5IGZhaWxzIG9uIHRoZSBmb3JtIHJhdGhlciB0aGFuIGNyZWF0aW5nIHpvbmVzIGFuZCBuYXZpZ2F0aW9uIGZvciBhIG1vZGVsIHRoYXQgd2lsbFxuICAgKiA0MDQgdGhlIGZpcnN0IHRpbWUgc29tZW9uZSBvcGVucyB0aGUgdmlzaXQuXG4gICAqL1xuICB2YWxpZGF0ZU1vZGVsS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFrZXkgfHwgIWtleS50cmltKCkpIHtcbiAgICAgIHJldHVybiAnQSAzRCBtb2RlbCBmaWxlIGlzIHJlcXVpcmVkLic7XG4gICAgfVxuICAgIGNvbnN0IHRyaW1tZWQgPSBrZXkudHJpbSgpO1xuICAgIGlmICghU1VQUE9SVEVEX01PREVMX0VYVEVOU0lPTlMuc29tZSgoZXh0ZW5zaW9uKSA9PiB0cmltbWVkLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkpIHtcbiAgICAgIGNvbnN0IGxpc3RlZCA9IFNVUFBPUlRFRF9NT0RFTF9FWFRFTlNJT05TLnNsaWNlKDAsIC0xKS5qb2luKCcsICcpO1xuICAgICAgcmV0dXJuIGBUaGUgM0QgbW9kZWwgbXVzdCBiZSBhICR7bGlzdGVkfSBvciAke1NVUFBPUlRFRF9NT0RFTF9FWFRFTlNJT05TW1NVUFBPUlRFRF9NT0RFTF9FWFRFTlNJT05TLmxlbmd0aCAtIDFdfSBmaWxlLmA7XG4gICAgfVxuICAgIC8vIEEgZnVsbCBodHRwczovLyBVUkwgaXMgYSBzaWduZWQgbGluayB0aGF0IGV4cGlyZXM7IHRoZSBzdG9yZWQgdmFsdWUgaGFzIHRvIGJlIHRoZSBrZXkgaXRzZWxmXG4gICAgLy8gc28gYSBmcmVzaCBVUkwgY2FuIGJlIHNpZ25lZCBvbiBldmVyeSB2aXNpdC5cbiAgICBpZiAoL15odHRwcz86XFwvXFwvL2kudGVzdCh0cmltbWVkKSkge1xuICAgICAgcmV0dXJuICdFbnRlciB0aGUgUzMga2V5IG9mIHRoZSBmaWxlIChlLmcuIHZpc2l0cy9teS1tb2RlbC5nbGIpLCBub3QgYSBmdWxsIFVSTC4nO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGltcG9ydERhdGEoXG4gICAgc3BhY2VJRDogc3RyaW5nLFxuICAgIHN1cmZhY2U6IG51bWJlcixcbiAgICByZWxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBub2RlOiBOb2RlID0gbnVsbCxcbiAgICBvdmVycmlkZUV4aXN0aW5nID0gdHJ1ZSxcbiAgICBwbGFjZW1lbnRNZXRhZGF0YTogc3RyaW5nID0gbnVsbFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAocmVsb2FkaW5nKSB7XG4gICAgICAvLyBSZWxvYWRpbmcgaXMgbm90IGZ1bGx5IGFwcGxpY2FibGUgdG8gc3RhdGljIDNEIG1vZGVscyB0aGUgc2FtZSB3YXkgYXMgTWF0dGVycG9ydFxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlFcnJvciA9IHRoaXMudmFsaWRhdGVNb2RlbEtleShub2RlPy5tb2RlbDNEKTtcbiAgICBpZiAoa2V5RXJyb3IpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3Ioa2V5RXJyb3IpKTtcbiAgICB9XG5cbiAgICB0aGlzLnNwYWNlSUQgPSBzcGFjZUlEO1xuICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgY29uc3QgbWFpblpvbmUgPSB6b25lcy5maW5kKCh6KSA9PiAhei5wYXJlbnRJRCk7XG4gICAgaWYgKCFtYWluWm9uZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignTWlzc2luZyBkYXRhIChubyBtYWluIEJ1aWxkaW5nIFpvbmUpJykpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdbVGhyZWVKc0ltcG9ydFNlcnZpY2VdIEltcG9ydGluZyBkYXRhIGZvciBUaHJlZS5qcyBtb2RlbCcpO1xuXG4gICAgLy8gMS4gQ2hlY2svY3JlYXRlIGxheWVyIG9mIGJ1aWxkaW5nIHR5cGVcbiAgICBjb25zdCBsYXllckJ1aWxkaW5nID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZSgnQlVJTERJTkcnKTtcbiAgICBcbiAgICAvLyBXZSBnZW5lcmF0ZSBhIGR1bW15IElEIHRvIGFjdCBhcyBvdXIgc2luZ2xlIFwic3dlZXBcIiBlcXVpdmFsZW50XG4gICAgY29uc3QgZHVtbXlTd2VlcElEID0gdXVpZHY0KCk7XG5cbiAgICAvLyAyLiBDcmVhdGUgdGhlIGRlZmF1bHQgWm9uZVxuICAgIGNvbnN0IGNyZWF0ZWREZWZhdWx0Wm9uZSA9IGF3YWl0IHRoaXMuY3JlYXRlWm9uZShcbiAgICAgIG5vZGUubWV0YWRhdGEgfHwgJ1RocmVlLmpzIDNEIE1vZGVsJyxcbiAgICAgIGxheWVyQnVpbGRpbmcuaWQsXG4gICAgICBzdXJmYWNlLFxuICAgICAgbWFpblpvbmUuaWQsXG4gICAgICBbZHVtbXlTd2VlcElEXSxcbiAgICAgIG5vZGVcbiAgICApO1xuXG4gICAgaWYgKCFjcmVhdGVkRGVmYXVsdFpvbmUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIDMuIENyZWF0ZSBhIGJsYW5rIFBsYW4gZm9yIHRoZSBtb2RlbCAodG8gZW5zdXJlIGNvbnNpc3RlbmN5IGluIHRoZSBhcHAgc3RydWN0dXJlKVxuICAgIGNvbnN0IHBsYW4gPSB7XG4gICAgICBuYW1lOiBgcGxhbl90aHJlZWpzXyR7bm9kZS5pZH1gLFxuICAgICAgYW5uZXhlOiAnJywgLy8gTm8gZmxvb3JwbGFuIGltYWdlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IHlldFxuICAgICAgem9uZUlEOiBjcmVhdGVkRGVmYXVsdFpvbmUuaWQsXG4gICAgICBzcGFjZUlEOiB0aGlzLnNwYWNlSUQsXG4gICAgICBpc0N1cnJlbnRGb3Jab25lOiB0cnVlLFxuICAgICAgaXNNb2RpZmllZDogZmFsc2UsXG4gICAgICBpc0ltcG9ydGVkTWF0dGVycG9ydDogZmFsc2UsIC8vIEV4cGxpY2l0bHkgbm90IG1hdHRlcnBvcnRcbiAgICB9IGFzIFBsYW47XG4gICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS5jcmVhdGVQbGFuKHBsYW4pO1xuXG4gICAgLy8gNC4gQ3JlYXRlIHRoZSBzaW5nbGUgTmF2aWdhdGlvbiBlbnRyeSB0aGlzIG1vZGVsIGlzIHZpZXdlZCBmcm9tLlxuICAgIC8vIE1hdHRlcnBvcnQgZGVyaXZlcyB0aGVzZSBmcm9tIGl0cyBzd2VlcHM7IGEgc3RhdGljIG1vZGVsIGhhcyBubyBzd2VlcHMsIHNvIHRoZSBwbGFjZW1lbnRcbiAgICAvLyBjb21lcyBmcm9tIHRoZSBtZXRhZGF0YSBlbnRlcmVkIG9uIHRoZSBmb3JtLCBmYWxsaW5nIGJhY2sgdG8gdGhlIG9yaWdpbi5cbiAgICBjb25zdCBwbGFjZW1lbnQgPSBwYXJzZVRocmVlSnNQbGFjZW1lbnQocGxhY2VtZW50TWV0YWRhdGEpO1xuICAgIGNvbnN0IG9yaWdpbiA9IHsgeDogMCwgeTogMCwgejogMCB9O1xuICAgIGNvbnN0IG5hdmlnYXRpb25JbnB1dCA9IHtcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBkdW1teVN3ZWVwSUQsXG4gICAgICBwb3NpdGlvbjogSlNPTi5zdHJpbmdpZnkocGxhY2VtZW50Py5jYW1lcmFQb3NpdGlvbiA/PyBvcmlnaW4pLFxuICAgICAgcm90YXRpb246IEpTT04uc3RyaW5naWZ5KHBsYWNlbWVudD8ucm90YXRpb24gPz8gb3JpZ2luKSxcbiAgICAgIGxldmVsOiBMZXZlbFN0YXR1cy5MT1csXG4gICAgICBub2RlSUQ6IG5vZGUuaWQsXG4gICAgICBzcGFjZUlELFxuICAgIH0gYXMgTmF2aWdhdGlvbjtcbiAgICBcbiAgICBjb25zdCBuYXYgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmNyZWF0ZU5hdmlnYXRpb24obmF2aWdhdGlvbklucHV0KTtcbiAgICBpZiAoIW5hdikge1xuICAgICAgY29uc29sZS5sb2coJ0NvdWxkIG5vdCBjcmVhdGUgbmF2aWdhdGlvbiBmb3InLCBuYXZpZ2F0aW9uSW5wdXQpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdbVGhyZWVKc0ltcG9ydFNlcnZpY2VdIEltcG9ydCBkb25lLicpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVab25lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBsYXllcklEOiBzdHJpbmcsXG4gICAgc3VyZmFjZTogbnVtYmVyID0gbnVsbCxcbiAgICBwYXJlbnRJRDogc3RyaW5nID0gbnVsbCxcbiAgICBzd2VlcHM6IHN0cmluZ1tdID0gW10sXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXG4gICAgbWV0YWRhdGE6IHN0cmluZyA9IG51bGxcbiAgKTogUHJvbWlzZTxab25lPiB7XG4gICAgY29uc3Qgem9uZUlucHV0ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHNwYWNlSUQ6IHRoaXMuc3BhY2VJRCxcbiAgICAgIGxheWVySUQsXG4gICAgICBzd2VlcElEczogc3dlZXBzLFxuICAgICAgbm9kZUlEczogbm9kZSA/IFtub2RlLmlkXSA6IG51bGwsXG4gICAgfSBhcyBab25lO1xuICAgIFxuICAgIHJlbW92ZU51bGxLZXlzRnJvbU9iamVjdCh6b25lSW5wdXQpO1xuICAgIGlmIChzdXJmYWNlKSB7XG4gICAgICB6b25lSW5wdXQuc3VyZmFjZSA9IHN1cmZhY2U7XG4gICAgfVxuICAgIGlmIChwYXJlbnRJRCkge1xuICAgICAgem9uZUlucHV0LnBhcmVudElEID0gcGFyZW50SUQ7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YSkge1xuICAgICAgem9uZUlucHV0Lm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG5ld0xvY2FsID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5jcmVhdGUoem9uZUlucHV0KTtcbiAgICByZXR1cm4gbmV3TG9jYWw7XG4gIH1cblxuICBhc3luYyBnZXRMYXllckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPExheWVyPiB7XG4gICAgY29uc3QgbWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGhpcy5zcGFjZUlEKTtcbiAgICBjb25zdCBjdXJyZW50T3JnSWQgPSBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEO1xuICAgIGNvbnN0IGxheWVycyA9IGF3YWl0IHRoaXMubGF5ZXJTZXJ2aWNlLmdldExheWVyQnlOYW1lRm9yT3JnYW5pc2F0aW9uKFxuICAgICAgbmFtZSxcbiAgICAgIGN1cnJlbnRPcmdJZFxuICAgICk7XG4gICAgaWYgKGxheWVycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbGF5ZXJzWzBdO1xuICAgIH1cbiAgICAvLyBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xuICB9XG59XG4iXX0=