@envive-ai/react-hooks 0.3.10 → 0.3.12

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 (215) hide show
  1. package/dist/application/commerce-api.cjs +26 -22
  2. package/dist/application/commerce-api.d.cts +58 -0
  3. package/dist/application/commerce-api.d.ts +59 -0
  4. package/dist/application/commerce-api.js +16 -12
  5. package/dist/application/models/api/widgetText.d.cts +14 -0
  6. package/dist/application/models/api/widgetText.d.ts +14 -0
  7. package/dist/application/models/api/widgetTextRequest.d.cts +16 -0
  8. package/dist/application/models/api/widgetTextRequest.d.ts +16 -0
  9. package/dist/application/models/chatElementDisplayLocationV3.cjs +4 -1
  10. package/dist/application/models/chatElementDisplayLocationV3.d.cts +4 -1
  11. package/dist/application/models/chatElementDisplayLocationV3.d.ts +4 -1
  12. package/dist/application/models/chatElementDisplayLocationV3.js +4 -1
  13. package/dist/application/models/guards/api/index.cjs +7 -7
  14. package/dist/application/models/guards/api/index.js +7 -7
  15. package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
  16. package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
  17. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
  18. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
  19. package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +1 -1
  20. package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +1 -1
  21. package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
  22. package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
  23. package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
  24. package/dist/application/models/guards/api/isApiResponse.js +1 -1
  25. package/dist/application/models/index.cjs +29 -29
  26. package/dist/application/models/index.d.cts +25 -25
  27. package/dist/application/models/index.d.ts +25 -25
  28. package/dist/application/models/index.js +29 -29
  29. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
  30. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
  31. package/dist/application/models/validators/validateResponse.cjs +3 -3
  32. package/dist/application/models/validators/validateResponse.js +3 -3
  33. package/dist/application/models/validators/validateUserEvent.cjs +2 -2
  34. package/dist/application/models/validators/validateUserEvent.js +2 -2
  35. package/dist/application/models/variantInfo/variantInfo.cjs +2 -1
  36. package/dist/application/models/variantInfo/variantInfo.d.cts +6 -1
  37. package/dist/application/models/variantInfo/variantInfo.d.ts +6 -1
  38. package/dist/application/models/variantInfo/variantInfo.js +2 -1
  39. package/dist/application/utils/analyticsUtils.cjs +1 -1
  40. package/dist/application/utils/analyticsUtils.js +1 -1
  41. package/dist/application/utils/nodeSelector.cjs +12 -14
  42. package/dist/application/utils/nodeSelector.js +12 -14
  43. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +3 -1
  44. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +3 -1
  45. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +4 -1
  46. package/dist/application/utils/widgetTextRequestToApiRequest.js +4 -1
  47. package/dist/atoms/app/index.cjs +7 -7
  48. package/dist/atoms/app/index.d.cts +1 -1
  49. package/dist/atoms/app/index.d.ts +8 -8
  50. package/dist/atoms/app/index.js +1 -1
  51. package/dist/atoms/app/variant.cjs +44 -4
  52. package/dist/atoms/app/variant.d.cts +8 -8
  53. package/dist/atoms/app/variant.d.ts +8 -8
  54. package/dist/atoms/app/variant.js +44 -5
  55. package/dist/atoms/chat/chatState.d.cts +18 -18
  56. package/dist/atoms/chat/chatState.d.ts +17 -17
  57. package/dist/atoms/chat/form.cjs +1 -1
  58. package/dist/atoms/chat/form.d.cts +2 -2
  59. package/dist/atoms/chat/form.d.ts +2 -2
  60. package/dist/atoms/chat/form.js +1 -1
  61. package/dist/atoms/chat/index.d.cts +3 -3
  62. package/dist/atoms/chat/index.d.ts +2 -2
  63. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  64. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  65. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  66. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  67. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  68. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  69. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  70. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  71. package/dist/atoms/chat/replies.d.cts +3 -3
  72. package/dist/atoms/chat/replies.d.ts +3 -3
  73. package/dist/atoms/chat/suggestions.d.cts +2 -2
  74. package/dist/atoms/chat/suggestions.d.ts +2 -2
  75. package/dist/atoms/envive/enviveConfig.d.cts +19 -0
  76. package/dist/atoms/envive/enviveConfig.d.ts +19 -0
  77. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  78. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  79. package/dist/atoms/org/customerService.d.cts +6 -6
  80. package/dist/atoms/org/customerService.d.ts +6 -6
  81. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  82. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  83. package/dist/atoms/org/index.cjs +1 -1
  84. package/dist/atoms/org/index.js +1 -1
  85. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  86. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  87. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  88. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  89. package/dist/atoms/search/chatSearch.cjs +1 -1
  90. package/dist/atoms/search/chatSearch.d.cts +17 -17
  91. package/dist/atoms/search/chatSearch.d.ts +17 -17
  92. package/dist/atoms/search/chatSearch.js +1 -1
  93. package/dist/atoms/search/searchAPI.d.cts +13 -13
  94. package/dist/atoms/search/searchAPI.d.ts +13 -13
  95. package/dist/atoms/search/types.d.cts +1 -1
  96. package/dist/atoms/search/types.d.ts +1 -1
  97. package/dist/atoms/search/utils.d.cts +1 -1
  98. package/dist/atoms/search/utils.d.ts +1 -1
  99. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  100. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  101. package/dist/config/locators/components/search/index.d.cts +1 -1
  102. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +9 -7
  103. package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +2 -2
  104. package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +2 -2
  105. package/dist/contexts/amplitudeContext/amplitudeContext.js +5 -3
  106. package/dist/contexts/amplitudeContext/index.cjs +1 -0
  107. package/dist/contexts/amplitudeContext/index.d.cts +2 -2
  108. package/dist/contexts/amplitudeContext/index.d.ts +2 -2
  109. package/dist/contexts/amplitudeContext/index.js +2 -2
  110. package/dist/contexts/cdnContext/cdnContext.cjs +3 -3
  111. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -5
  112. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -1
  113. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -1
  114. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +3 -2
  115. package/dist/contexts/enviveContext/WindowChatToggleBinder.cjs +4 -3
  116. package/dist/contexts/enviveContext/WindowChatToggleBinder.js +4 -3
  117. package/dist/contexts/enviveContext/enviveContext.cjs +23 -16
  118. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  119. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  120. package/dist/contexts/enviveContext/enviveContext.js +23 -16
  121. package/dist/contexts/enviveContext/types.d.cts +1 -1
  122. package/dist/contexts/enviveContext/types.d.ts +1 -1
  123. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +23 -2
  124. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +11 -2
  125. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +11 -2
  126. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +23 -2
  127. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -2
  128. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -2
  129. package/dist/contexts/graphqlContext/graphqlContext.cjs +7 -7
  130. package/dist/contexts/graphqlContext/graphqlContext.d.cts +1 -1
  131. package/dist/contexts/graphqlContext/graphqlContext.d.ts +1 -1
  132. package/dist/contexts/graphqlContext/graphqlContext.js +3 -3
  133. package/dist/contexts/graphqlContext/mockV3Config.cjs +10 -4
  134. package/dist/contexts/graphqlContext/mockV3Config.js +10 -4
  135. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +60 -6
  136. package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +8 -3
  137. package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +8 -3
  138. package/dist/contexts/hardcopyContext/hardcopyContext.js +58 -4
  139. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +3 -3
  140. package/dist/contexts/pageContext/mapping.cjs +6 -2
  141. package/dist/contexts/pageContext/mapping.js +6 -2
  142. package/dist/contexts/pageContext/pageContext.cjs +12 -7
  143. package/dist/contexts/pageContext/pageContext.js +10 -5
  144. package/dist/contexts/pageContext/types.d.cts +7 -3
  145. package/dist/contexts/pageContext/types.d.ts +7 -3
  146. package/dist/contexts/salesAgentContext/chatAPI.cjs +101 -12
  147. package/dist/contexts/salesAgentContext/chatAPI.d.cts +8 -4
  148. package/dist/contexts/salesAgentContext/chatAPI.d.ts +8 -4
  149. package/dist/contexts/salesAgentContext/chatAPI.js +103 -14
  150. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +1 -1
  151. package/dist/contexts/salesAgentContext/salesAgentContext.js +1 -1
  152. package/dist/contexts/salesAgentContext/salesAgentService.cjs +52 -10
  153. package/dist/contexts/salesAgentContext/salesAgentService.js +50 -8
  154. package/dist/contexts/searchContext/searchContext.cjs +4 -4
  155. package/dist/contexts/searchContext/searchContext.js +1 -1
  156. package/dist/contexts/systemSettingsContext/systemSettingsContext.cjs +3 -3
  157. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  158. package/dist/contexts/types.cjs +1 -1
  159. package/dist/contexts/types.d.cts +10 -3
  160. package/dist/contexts/types.d.ts +10 -3
  161. package/dist/contexts/types.js +1 -1
  162. package/dist/contexts/typesV3.cjs +2 -1
  163. package/dist/contexts/typesV3.d.cts +28 -7
  164. package/dist/contexts/typesV3.d.ts +26 -5
  165. package/dist/contexts/typesV3.js +2 -1
  166. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +3 -3
  167. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +1 -1
  168. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +1 -1
  169. package/dist/hooks/AppDetails/useAppDetails.cjs +6 -6
  170. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  171. package/dist/hooks/ImageResolver/useImageResolver.cjs +3 -3
  172. package/dist/hooks/Search/useSearch.cjs +4 -4
  173. package/dist/hooks/Search/useSearch.d.cts +1 -1
  174. package/dist/hooks/Search/useSearch.d.ts +1 -1
  175. package/dist/hooks/Search/useSearch.js +1 -1
  176. package/dist/services/amplitudeService/amplitudeService.cjs +49 -11
  177. package/dist/services/amplitudeService/amplitudeService.d.cts +18 -3
  178. package/dist/services/amplitudeService/amplitudeService.d.ts +18 -3
  179. package/dist/services/amplitudeService/amplitudeService.js +49 -12
  180. package/dist/services/amplitudeService/index.cjs +1 -0
  181. package/dist/services/amplitudeService/index.d.cts +2 -2
  182. package/dist/services/amplitudeService/index.d.ts +2 -2
  183. package/dist/services/amplitudeService/index.js +2 -2
  184. package/dist/types/customerService.d.cts +3 -1
  185. package/dist/types/customerService.d.ts +1 -1
  186. package/dist/types/enviveConfig.d.cts +4 -1
  187. package/dist/types/enviveConfig.d.ts +4 -1
  188. package/package.json +10 -2
  189. package/src/application/commerce-api.ts +25 -20
  190. package/src/application/models/api/widgetText.ts +2 -0
  191. package/src/application/models/api/widgetTextRequest.ts +2 -0
  192. package/src/application/models/chatElementDisplayLocationV3.ts +3 -0
  193. package/src/application/models/variantInfo/variantInfo.ts +5 -0
  194. package/src/application/utils/nodeSelector.ts +15 -14
  195. package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +2 -0
  196. package/src/application/utils/widgetTextRequestToApiRequest.ts +5 -0
  197. package/src/atoms/app/variant.ts +56 -2
  198. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +2 -0
  199. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -1
  200. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -0
  201. package/src/contexts/enviveContext/WindowChatToggleBinder.tsx +5 -1
  202. package/src/contexts/enviveContext/enviveContext.tsx +10 -3
  203. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +36 -0
  204. package/src/contexts/graphqlContext/mockV3Config.ts +13 -7
  205. package/src/contexts/hardcopyContext/hardcopyContext.tsx +67 -4
  206. package/src/contexts/pageContext/mapping.ts +13 -1
  207. package/src/contexts/pageContext/pageContext.tsx +9 -4
  208. package/src/contexts/pageContext/types.ts +7 -1
  209. package/src/contexts/salesAgentContext/chatAPI.ts +105 -13
  210. package/src/contexts/salesAgentContext/salesAgentService.ts +66 -4
  211. package/src/contexts/types.ts +11 -2
  212. package/src/contexts/typesV3.ts +42 -16
  213. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +80 -0
  214. package/src/services/amplitudeService/amplitudeService.ts +55 -11
  215. package/src/types/enviveConfig.ts +3 -0
@@ -1,9 +1,10 @@
1
- import { ProductExperiment } from "./models/productExperiment.js";
2
1
  import logger_default from "./logging/logger.js";
2
+ import { ProductExperiment } from "./models/productExperiment.js";
3
3
  import { validateOrgConfigResults } from "./models/validators/validateOrgConfigResults.js";
4
4
  import { validateResponse } from "./models/validators/validateResponse.js";
5
5
  import { validateSuggestion } from "./models/validators/validateSuggestion.js";
6
6
  import { validateUserEvent } from "./models/validators/validateUserEvent.js";
7
+ import { getQueryParam } from "./utils/urlsParser.js";
7
8
  import { baseUrlAtom, contextSourceAtom, envAtom, orgIdAtom, orgLevelApiKeyAtom, orgShortNameAtom, reactAppNameAtom } from "../atoms/envive/enviveConfig.js";
8
9
  import { getAtomStore } from "../atoms/atomStore/atomStore.js";
9
10
  import { chatIdAtom, userIdAtom } from "../atoms/app/index.js";
@@ -17,8 +18,8 @@ import "./utils/index.js";
17
18
  import { featureFlagServiceAtom } from "../atoms/org/graphqlConfig.js";
18
19
  import { SessionRestartRequired } from "../types/exceptions/sessionExceptions.js";
19
20
  import { UnsupportedProductException } from "../types/exceptions/unsupportedProductExceptions.js";
20
- import { coreWidgetTextRequestToApiRequest } from "./utils/widgetTextRequestToApiRequest.js";
21
21
  import { apiWidgetTextResponseToCoreWidgetText } from "./utils/widgetTextFromApiWidgetTextResponse.js";
22
+ import { coreWidgetTextRequestToApiRequest } from "./utils/widgetTextRequestToApiRequest.js";
22
23
  import { Configuration, ContextEnvEnum, ContextSourceEnum, CustomerServiceApi, DefaultApi, FormType, InferenceApi, ResponseCategory, ResponseError, UserEventCategory, V1OrgConfigGetSourceEnum } from "@spiffy-ai/commerce-api-client";
23
24
 
24
25
  //#region src/application/commerce-api.ts
@@ -77,17 +78,20 @@ var CommerceApiClient = class CommerceApiClient {
77
78
  const source = atomStore.get(contextSourceAtom);
78
79
  const env = atomStore.get(envAtom);
79
80
  const featureFlagService = atomStore.get(featureFlagServiceAtom);
81
+ const context = {
82
+ user_id: userId ?? "",
83
+ org_id: orgId ?? "",
84
+ org_short_name: orgShortName ?? "",
85
+ chat_id: chatId ?? "",
86
+ source: source ?? ContextSourceEnum.App,
87
+ env: env ?? ContextEnvEnum.Dev
88
+ };
89
+ const overrideConfigVersion = getQueryParam("spiffy_config_version") || getQueryParam("envive_config_version") || void 0;
80
90
  const urlResolvingRequest = {
81
91
  url,
82
- context: {
83
- user_id: userId ?? "",
84
- org_id: orgId ?? "",
85
- org_short_name: orgShortName ?? "",
86
- chat_id: chatId ?? "",
87
- source: source ?? ContextSourceEnum.App,
88
- env: env ?? ContextEnvEnum.Dev
89
- },
90
- feature_gates: featureFlagService?.featureFlagService?.getFeatureFlags() || {}
92
+ context,
93
+ feature_gates: featureFlagService?.featureFlagService?.getFeatureFlags() || {},
94
+ override_config_version: overrideConfigVersion
91
95
  };
92
96
  return await (await CommerceApiClient.getInstance().inferenceApi.v1UrlResolvingPostRaw({ UrlResolvingRequest: urlResolvingRequest })).raw.json();
93
97
  };
@@ -325,4 +329,4 @@ var commerce_api_default = CommerceApiClient;
325
329
 
326
330
  //#endregion
327
331
  export { commerce_api_default as default };
328
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2UtYXBpLmpzIiwibmFtZXMiOlsiY29uZmlnOiBDb25maWd1cmF0aW9uIiwiZXJyOiB1bmtub3duIiwiZXJyb3I6IHVua25vd24iLCJkYXRhOiBWMUdldFNlc3Npb25NZXNzYWdlczIwMFJlc3BvbnNlIiwicmVzcG9uc2VzOiBSZXNwb25zZVtdW10iLCJzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdIiwidXNlckV2ZW50czogVXNlckV2ZW50W10iLCJhc3Npc3RhbnRNZXNzYWdlczogTWVzc2FnZVtdW10iLCJ1c2VyTWVzc2FnZXM6IE1lc3NhZ2VbXVtdIiwicmVxdWVzdDogVjFPcmdDb25maWdHZXRSZXF1ZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uLFxuICBDb250ZXh0RW52RW51bSxcbiAgQ29udGV4dFNvdXJjZUVudW0sXG4gIEN1c3RvbWVyU2VydmljZUFwaSxcbiAgQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXIsXG4gIERlZmF1bHRBcGksXG4gIEZvcm1UeXBlLFxuICBJbmZlcmVuY2VBcGksXG4gIFJlcG9ydFNlc3Npb25SZXF1ZXN0LFxuICBSZXNwb25zZUNhdGVnb3J5LFxuICBSZXNwb25zZUVycm9yLFxuICBVc2VyRXZlbnRDYXRlZ29yeSxcbiAgVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSxcbiAgVjFPcmdDb25maWdHZXRSZXF1ZXN0LFxuICBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0sXG59IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVTdWdnZXN0aW9uJztcbmltcG9ydCB7IHZhbGlkYXRlVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlVXNlckV2ZW50JztcbmltcG9ydCB7XG4gIG1lc3NhZ2VGcm9tUXVlcnlFdmVudCxcbiAgbWVzc2FnZUZyb21SZXNwb25zZSxcbiAgbWVzc2FnZUZyb21TdWdnZXN0aW9uRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gIFJlc3BvbnNlLFxuICBTdWdnZXN0aW9uLFxuICBTdXBwb3J0ZWRFdmVudFJlcXVlc3QsXG4gIFVzZXJFdmVudCxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBtZXNzYWdlUmVxdWVzdFRvQ29tbWVyY2VNZXNzYWdlUmVxdWVzdCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscy9uZXh0TWVzc2FnZVJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuaW1wb3J0IHsgdmFsaWRhdGVSZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVJlc3BvbnNlJztcbmltcG9ydCB7IGNvcmVTdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvc3VwcG9ydGVkRXZlbnRSZXF1ZXN0VG9BcGlSZXF1ZXN0JztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZFByb2R1Y3RFeGNlcHRpb24gfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy91bnN1cHBvcnRlZFByb2R1Y3RFeGNlcHRpb25zJztcbmltcG9ydCB7IENsaWVudERldGFpbHMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NsaWVudERldGFpbHMnO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSAnc3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdEV4cGVyaW1lbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3Byb2R1Y3RFeHBlcmltZW50JztcbmltcG9ydCB7IHZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRFdmVudCB9IGZyb20gJ3NyYy9hdG9tcy9hcHAvdmFyaWFudCc7XG5pbXBvcnQgeyBtZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscy9tZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudCc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQvZGlzdC9tb2RlbHMvQ29udGV4dCc7XG5pbXBvcnQge1xuICBiYXNlVXJsQXRvbSxcbiAgY29udGV4dFNvdXJjZUF0b20sXG4gIGVudkF0b20sXG4gIG9yZ0lkQXRvbSxcbiAgb3JnTGV2ZWxBcGlLZXlBdG9tLFxuICBvcmdTaG9ydE5hbWVBdG9tLFxuICByZWFjdEFwcE5hbWVBdG9tLCAvLyBJbXBvcnQgZW52QXRvbVxufSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7IC8vIEltcG9ydCB1c2VySWRBdG9tIGFuZCBjaGF0SWRBdG9tXG5pbXBvcnQgeyBmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tIH0gZnJvbSAnc3JjL2F0b21zL29yZy9ncmFwaHFsQ29uZmlnJzsgLy8gSW1wb3J0IG5ldyBvcmdJZEF0b20gYW5kIGZlYXR1cmVGbGFnU2VydmljZUF0b21cbmltcG9ydCB7IGNvcmVXaWRnZXRUZXh0UmVxdWVzdFRvQXBpUmVxdWVzdCB9IGZyb20gJy4vdXRpbHMvd2lkZ2V0VGV4dFJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuaW1wb3J0IHsgV2lkZ2V0VGV4dFJlcXVlc3QgfSBmcm9tICcuL21vZGVscy9hcGkvd2lkZ2V0VGV4dFJlcXVlc3QnO1xuaW1wb3J0IHsgYXBpV2lkZ2V0VGV4dFJlc3BvbnNlVG9Db3JlV2lkZ2V0VGV4dCB9IGZyb20gJy4vdXRpbHMvd2lkZ2V0VGV4dEZyb21BcGlXaWRnZXRUZXh0UmVzcG9uc2UnO1xuaW1wb3J0IHsgV2lkZ2V0VGV4dCB9IGZyb20gJy4vbW9kZWxzL2FwaS93aWRnZXRUZXh0JztcblxuYXN5bmMgZnVuY3Rpb24gZXJyb3JSZXNwb25zZUJvZHkoZXJyb3I6IFJlc3BvbnNlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZXJyb3IucmVzcG9uc2UuanNvbigpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoZXJyb3JNc2c6IHN0cmluZywgZXJyb3I6IHVua25vd24pIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZUVycm9yKSkge1xuICAgIExvZ2dlci5sb2dJbmZvKGVycm9yTXNnLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBjb25zdCBlcnJvclJlc3BvbnNlID0gYXdhaXQgZXJyb3JSZXNwb25zZUJvZHkoZXJyb3IpO1xuICBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3Vuc3VwcG9ydGVkIHByb2R1Y3QnIHx8IC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgQVBJIHJldHVybiBzdWJfY29kZSBpbnN0ZWFkIG9mIG1lc3NhZ2VcbiAgICBlcnJvclJlc3BvbnNlPy5hcHBfY29kZT8udG9VcHBlckNhc2UoKSA9PT0gJ1BST0RVQ1RfTk9UX0ZPVU5EJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRQcm9kdWN0RXhjZXB0aW9uKCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8uYXBwX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdSRVNUQVJUX1NFU1NJT04nIHx8XG4gICAgZXJyb3JSZXNwb25zZT8uc3ViX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdOT1RfRk9VTkQnIC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXcgQVBJIHJlc3BvbnNlcyB3aWxsIGNvbnRhaW4gXCJhcHBfY29kZVwiXG4gICkge1xuICAgIExvZ2dlci5sb2dJbmZvKFxuICAgICAgJ1Nlc3Npb24gZG9lcyBub3QgZXhpc3QuIFJlLXN0YXJ0IHNlc3Npb24nLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvci5yZXNwb25zZSxcbiAgICAgIGVycm9yUmVzcG9uc2UsXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCgpO1xuICB9XG5cbiAgTG9nZ2VyLmxvZ0luZm8oZXJyb3JNc2csIGVycm9yKTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmNsYXNzIENvbW1lcmNlQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBpOiBEZWZhdWx0QXBpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tZXJTZXJ2aWNlQXBpOiBDdXN0b21lclNlcnZpY2VBcGk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbmZlcmVuY2VBcGk6IEluZmVyZW5jZUFwaTtcblxuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQ29tbWVyY2VBcGlDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHJlc3BvbnNlc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHN0YXRpYyBnZXRJbnN0YW5jZSA9ICgpOiBDb21tZXJjZUFwaUNsaWVudCA9PiB7XG4gICAgaWYgKCFDb21tZXJjZUFwaUNsaWVudC5pbnN0YW5jZSkge1xuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2UgPSBuZXcgQ29tbWVyY2VBcGlDbGllbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2U7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihiYXNlUGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBhdG9tU3RvcmUuZ2V0KGJhc2VVcmxBdG9tKTtcbiAgICBjb25zdCBhcGlLZXkgPSBhdG9tU3RvcmUuZ2V0KG9yZ0xldmVsQXBpS2V5QXRvbSk7XG4gICAgY29uc3QgcGF0aCA9IGJhc2VQYXRoIHx8IGJhc2VVcmw7XG4gICAgLy8gQVBJIEtleSBpcyBub3cgaGFuZGxlZCBhdCB0aGUgRW52aXZlQ29uZmlnUHJvdmlkZXIgbGV2ZWxcbiAgICBjb25zdCBjb25maWc6IENvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbih7XG4gICAgICBhY2Nlc3NUb2tlbjogYXBpS2V5LFxuICAgICAgYmFzZVBhdGg6IHBhdGgsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlZmF1bHRBcGkgPSBuZXcgRGVmYXVsdEFwaShjb25maWcpO1xuICAgIHRoaXMuaW5mZXJlbmNlQXBpID0gbmV3IEluZmVyZW5jZUFwaShjb25maWcpO1xuICAgIHRoaXMuY3VzdG9tZXJTZXJ2aWNlQXBpID0gbmV3IEN1c3RvbWVyU2VydmljZUFwaShjb25maWcpO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmVVcmwgPSBhc3luYyAodXJsOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICAgIGNvbnN0IG9yZ0lkID0gYXRvbVN0b3JlLmdldChvcmdJZEF0b20pO1xuICAgIGNvbnN0IHVzZXJJZCA9IGF0b21TdG9yZS5nZXQodXNlcklkQXRvbSk7XG4gICAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgICBjb25zdCBzb3VyY2UgPSBhdG9tU3RvcmUuZ2V0KGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgICBjb25zdCBlbnYgPSBhdG9tU3RvcmUuZ2V0KGVudkF0b20pO1xuXG4gICAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSB7XG4gICAgICB1c2VyX2lkOiB1c2VySWQgPz8gJycsXG4gICAgICBvcmdfaWQ6IG9yZ0lkID8/ICcnLFxuICAgICAgb3JnX3Nob3J0X25hbWU6IG9yZ1Nob3J0TmFtZSA/PyAnJyxcbiAgICAgIGNoYXRfaWQ6IGNoYXRJZCA/PyAnJyxcbiAgICAgIHNvdXJjZTogc291cmNlID8/IENvbnRleHRTb3VyY2VFbnVtLkFwcCxcbiAgICAgIGVudjogKGVudiBhcyBDb250ZXh0RW52RW51bSkgPz8gQ29udGV4dEVudkVudW0uRGV2LCAvLyBDYXN0IGVudiB0byBDb250ZXh0RW52RW51bVxuICAgIH07XG5cbiAgICBjb25zdCBmZWF0dXJlR2F0ZXMgPSBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG4gICAgY29uc3QgdXJsUmVzb2x2aW5nUmVxdWVzdCA9IHtcbiAgICAgIHVybCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBmZWF0dXJlX2dhdGVzOiBmZWF0dXJlR2F0ZXMsXG4gICAgfTtcblxuICAgIGNvbnN0IHJhd1Jlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFVcmxSZXNvbHZpbmdQb3N0UmF3KHtcbiAgICAgIFVybFJlc29sdmluZ1JlcXVlc3Q6IHVybFJlc29sdmluZ1JlcXVlc3QsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUJvZHkgPSBhd2FpdCByYXdSZXNwb25zZS5yYXcuanNvbigpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlQm9keTtcbiAgfTtcblxuICBzdGF0aWMgcmVwb3J0U2Vzc2lvbiA9IGFzeW5jIChyZXBvcnRSZXF1ZXN0OiBSZXBvcnRTZXNzaW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuZGVmYXVsdEFwaS52MUNoYXRzUmVwb3J0U2Vzc2lvbklkUG9zdCh7XG4gICAgICBSZXBvcnRTZXNzaW9uUmVxdWVzdDogcmVwb3J0UmVxdWVzdCxcbiAgICB9KTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0TmV4dFJlc3BvbnNlcyA9IGFzeW5jIChwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPE1lc3NhZ2VbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxTmV4dFJlc3BvbnNlc1Bvc3Qoe1xuICAgICAgICBOZXh0TWVzc2FnZVJlcXVlc3Q6IG1lc3NhZ2VSZXF1ZXN0VG9Db21tZXJjZU1lc3NhZ2VSZXF1ZXN0KHBheWxvYWQpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHJlc3BvbnNlXG4gICAgICAgIC5tYXAocmVzcCA9PiB2YWxpZGF0ZVJlc3BvbnNlKHJlc3ApKVxuICAgICAgICAubWFwKHJlc3AgPT4gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwKSk7XG5cbiAgICAgIHJldHVybiBtZXNzYWdlcy5maWx0ZXIoKG0pOiBtIGlzIE1lc3NhZ2UgPT4gbSAhPSBudWxsKTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIExvZ2dlci5sb2dJbmZvKCdGYWlsZWQgdG8gZ2V0IG5leHQgcmVzcG9uc2VzJywgZXJyLCB7XG4gICAgICAgIHBheWxvYWRDb250ZXh0OiBwYXlsb2FkPy5jb250ZXh0LFxuICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkPy51c2VyRXZlbnRzLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBuZXh0IHJlc3BvbnNlcycsIGVycik7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXROZXh0UmVzcG9uc2VTdHJlYW1pbmcgPSAoXG4gICAgcGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICApOiBBc3luY0dlbmVyYXRvcjxSZXNwb25zZSwgdm9pZCwgdW5rbm93bj4gPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uKiBnZW5lcmF0ZShpbmZlcmVuY2VBcGk6IEluZmVyZW5jZUFwaSwgYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgIC8vIG1ha2Ugc3VyZSBzdHJlYW1pbmcgaXMgZW5hYmxlZFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBpbmZlcmVuY2VBcGkudjFOZXh0UmVzcG9uc2VzUG9zdFJhdyhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBOZXh0TWVzc2FnZVJlcXVlc3Q6IG1lc3NhZ2VSZXF1ZXN0VG9Db21tZXJjZU1lc3NhZ2VSZXF1ZXN0KHBheWxvYWQpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwgfSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZWFkIHRoZSByZXNwb25zZSBhcyBhIHN0cmVhbSBvZiBkYXRhXG4gICAgICAgIGlmICghcmVzcG9uc2UucmF3LmJvZHkpIHtcbiAgICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIE5vIGJvZHkgaW4gdGhlIHN0cmVhbWVkIHJlc3BvbnNlJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UucmF3LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLnJhdy5ib2R5LmdldFJlYWRlcigpO1xuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpO1xuXG4gICAgICAgIGxldCBwYXJ0aWFsID0gJyc7XG4gICAgICAgIC8vIFRPRE8gdGhpcyBmdW5jdGlvbiBpcyByZWNyZWF0ZWQgZXZlcnkgdGltZSBuZXcgZGF0YSBjb21lcyBmcm9tIHRoZSBzdHJlYW0gLSBkZWZpbmUgaXQgb3V0c2lkZSBvZiB0aGUgZ2VuZXJhdG9yXG4gICAgICAgIGNvbnN0IHNhZmVQYXJzZSA9IChsaW5lOiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobGluZSk7IC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZ1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciBwYXJzaW5nIHN0cmVhbWVkIGxpbmUnLCBlcnIsIHtcbiAgICAgICAgICAgICAgbGluZSxcbiAgICAgICAgICAgICAgcGFydGlhbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gc3dhbGxvdyB0aGUgZXJyb3IgYW5kIHNldCB0aGUgcGFydGlhbCB0byBvdXIgY3VycmVudCBjaHVua1xuICAgICAgICAgICAgcGFydGlhbCA9IGxpbmU7XG4gICAgICAgICAgICByZXR1cm4gcGFydGlhbDtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVE9ETyB0aGlzIGZ1bmN0aW9uIGlzIHJlY3JlYXRlZCBldmVyeSB0aW1lIG5ldyBkYXRhIGNvbWVzIGZyb20gdGhlIHN0cmVhbSAtIGRlZmluZSBpdCBvdXRzaWRlIG9mIHRoZSBnZW5lcmF0b3JcbiAgICAgICAgY29uc3QgcHJvY2Vzc0NodW5rID0gKGNodW5rOiBzdHJpbmcpOiB1bmtub3duW10gPT4ge1xuICAgICAgICAgIC8vIG1lcmdlIHRoZSBwYXJ0aWFsIHdpdGggdGhlIGluY29taW5nIGNodW5rXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBgJHtwYXJ0aWFsfSR7Y2h1bmt9YC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgICBjb25zdCBwYXJzZWRMaW5lcyA9IGxpbmVzXG4gICAgICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eZGF0YTogLywgJycpLnRyaW0oKSkgLy8gUmVtb3ZlIHRoZSBcImRhdGE6IFwiIHByZWZpeFxuICAgICAgICAgICAgLmZpbHRlcihsaW5lID0+IGxpbmUgIT09ICcnICYmIGxpbmUgIT09ICdbRE9ORV0nKSAvLyBSZW1vdmUgZW1wdHkgbGluZXMgYW5kIFwiW0RPTkVdXCJcbiAgICAgICAgICAgIC5tYXAoc2FmZVBhcnNlKVxuICAgICAgICAgICAgLmZpbHRlcih2ID0+IHYpOyAvLyBhbmQgZmlsdGVyIG91dCB0aGUgdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgICAgIHJldHVybiBwYXJzZWRMaW5lcztcbiAgICAgICAgfTtcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcblxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBNYXNzYWdlIGFuZCBwYXJzZSB0aGUgY2h1bmsgb2YgZGF0YVxuICAgICAgICAgIGNvbnN0IGNodW5rID0gZGVjb2Rlci5kZWNvZGUodmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZExpbmVzID0gcHJvY2Vzc0NodW5rKGNodW5rKTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcGFyc2VkTGluZSBvZiBwYXJzZWRMaW5lcykge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkUmVzcG9uc2UgPSB2YWxpZGF0ZVJlc3BvbnNlKHBhcnNlZExpbmUpO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVkUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgeWllbGQgdmFsaWRhdGVkUmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIEZhaWxlZCB0byBnZXQgbmV4dCBzdHJlYW1pbmcgcmVzcG9uc2VzJywgZXJyb3IsIHtcbiAgICAgICAgICBwYXlsb2FkQ29udGV4dDogcGF5bG9hZD8uY29udGV4dCxcbiAgICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkPy51c2VyRXZlbnRzLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byBnZXQgbmV4dCBzdHJlYW1pbmcgcmVzcG9uc2VzJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkucmVzcG9uc2VzQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5yZXNwb25zZXNBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdGUoXG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaSxcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkucmVzcG9uc2VzQWJvcnRDb250cm9sbGVyLFxuICAgICk7XG4gIH07XG5cbiAgc3RhdGljIGdldE5leHRTdWdnZXN0aW9ucyA9IGFzeW5jIChwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPFN1Z2dlc3Rpb25bXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnN1Z2dlc3Rpb25zQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnN1Z2dlc3Rpb25zQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxTmV4dFN1Z2dlc3Rpb25zUG9zdChcbiAgICAgICAge1xuICAgICAgICAgIE5leHRNZXNzYWdlUmVxdWVzdDogbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QocGF5bG9hZCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuc3VnZ2VzdGlvbnNBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSByZXNwb25zZVxuICAgICAgICAubWFwKHJlc3AgPT4gdmFsaWRhdGVTdWdnZXN0aW9uKHJlc3ApKVxuICAgICAgICAuZmlsdGVyKChzdWdnZXN0aW9uKTogc3VnZ2VzdGlvbiBpcyBTdWdnZXN0aW9uID0+IHN1Z2dlc3Rpb24gIT0gbnVsbCk7XG5cbiAgICAgIHJldHVybiBzdWdnZXN0aW9ucztcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oJ0ZhaWxlZCB0byBnZXQgc3VnZ2VzdGlvbnMnLCBlcnJvciwge1xuICAgICAgICBwYXlsb2FkQ29udGV4dDogcGF5bG9hZD8uY29udGV4dCxcbiAgICAgICAgdXNlckV2ZW50czogcGF5bG9hZD8udXNlckV2ZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBzdWdnZXN0aW9ucycsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGV4aXN0aW5nIGNoYXQgZGF0YSBmb3IgYSBnaXZlbiBzZXNzaW9uIGFuZCB0cmFuc2Zvcm1zIHRoZW0gdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYXQgaGlzdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIFRoZSBvcmdhbml6YXRpb24gSWRcbiAgICogQHBhcmFtIGNoYXRJZCBUaGUgZXhpc3RpbmcgY2hhdCBJZFxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VyIElkXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbGlzdCBvZiBtZXNzYWdlcyB0aGF0IHdlcmUgZXhjaGFuZ2VkIGluIHRoZSBjaGF0LCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNoYXQgc2Vzc2lvbiBoYXMgZXhwaXJlZC5cbiAgICovXG4gIHN0YXRpYyBnZXRSZXNwb25zZXMgPSBhc3luYyAoXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBjaGF0SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7XG4gICAgcmVzcG9uc2VzOiBSZXNwb25zZVtdW107XG4gICAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gICAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXTtcbiAgICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gIH0+ID0+IHtcbiAgICBsZXQgZGF0YTogVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSA9IHtcbiAgICAgIHJlc3BvbnNlczogW10sXG4gICAgICBzdWdnZXN0aW9uczogW10sXG4gICAgICB1c2VyX2V2ZW50czogW10sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgb3JnX2lkOiBvcmdJZCxcbiAgICAgIGNoYXRfaWQ6IGNoYXRJZCxcbiAgICAgIHVzZXJfaWQ6IHVzZXJJZCxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBkYXRhID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5kZWZhdWx0QXBpLnYxR2V0U2Vzc2lvbk1lc3NhZ2VzKHJlcXVlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBjaGF0IHJlc3BvbnNlcycsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZXM6IFJlc3BvbnNlW11bXSA9IGRhdGE/LnJlc3BvbnNlcz8ubWFwKHR1cm4gPT5cbiAgICAgIHR1cm5cbiAgICAgICAgLm1hcChyZXNwb25zZSA9PiB2YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSlcbiAgICAgICAgLmZpbHRlcigocmVzcG9uc2UpOiByZXNwb25zZSBpcyBSZXNwb25zZSA9PiByZXNwb25zZSAhPSBudWxsKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXSA9IGRhdGE/LnN1Z2dlc3Rpb25zXG4gICAgICAubWFwKHN1Z2dlc3Rpb24gPT4gdmFsaWRhdGVTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pKVxuICAgICAgLmZpbHRlcigoc3VnZ2VzdGlvbik6IHN1Z2dlc3Rpb24gaXMgU3VnZ2VzdGlvbiA9PiBzdWdnZXN0aW9uICE9IG51bGwpO1xuXG4gICAgY29uc3QgdXNlckV2ZW50czogVXNlckV2ZW50W10gPSBkYXRhPy51c2VyX2V2ZW50c1xuICAgICAgLm1hcChldmVudCA9PiB2YWxpZGF0ZVVzZXJFdmVudChldmVudCkpXG4gICAgICAuZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIFVzZXJFdmVudCA9PiBldmVudCAhPSBudWxsKTtcblxuICAgIC8vIGlmIGEgZm9ybSBoYXMgYWxyZWFkeSBiZWVuIHN1Ym1pdHRlZCwgZG9uJ3Qgc2hvdyBpdCBpbiB0aGUgY2hhdCBoaXN0b3J5XG4gICAgY29uc3QgZm9ybVN1Ym1pdHRlZFVzZXJFdmVudHNGb3JtSWRzID0gdXNlckV2ZW50c1xuICAgICAgLmZpbHRlcihldmVudCA9PiBldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZClcbiAgICAgIC5tYXAoZXZlbnQgPT4gZXZlbnQuYXR0cmlidXRlcy5mb3JtUmVzcG9uc2VJZCk7XG5cbiAgICBjb25zdCBhc3Npc3RhbnRNZXNzYWdlczogTWVzc2FnZVtdW10gPSByZXNwb25zZXNcbiAgICAgIC5tYXAodHVybiA9PlxuICAgICAgICB0dXJuXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuY2F0ZWdvcnkgPT09IFJlc3BvbnNlQ2F0ZWdvcnkuRm9ybSAmJlxuICAgICAgICAgICAgICAgIGZvcm1TdWJtaXR0ZWRVc2VyRXZlbnRzRm9ybUlkcy5pbmNsdWRlcyhyZXNwb25zZS5pZClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChyZXNwb25zZSA9PiBtZXNzYWdlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKSlcbiAgICAgICAgICAuZmlsdGVyKChtZXNzYWdlKTogbWVzc2FnZSBpcyBNZXNzYWdlID0+IG1lc3NhZ2UgIT0gbnVsbCksXG4gICAgICApXG4gICAgICAuZmlsdGVyKHR1cm4gPT4gdHVybi5sZW5ndGggPiAwKTtcblxuICAgIGNvbnN0IHVzZXJNZXNzYWdlczogTWVzc2FnZVtdW10gPSB1c2VyRXZlbnRzXG4gICAgICAubWFwKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKFtVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLCBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2hdLmluY2x1ZGVzKGV2ZW50LmNhdGVnb3J5KSkge1xuICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21RdWVyeUV2ZW50KGV2ZW50KV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkKSB7XG4gICAgICAgICAgcmV0dXJuIFttZXNzYWdlRnJvbVN1Z2dlc3Rpb25FdmVudChldmVudCwgc3VnZ2VzdGlvbnMpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1SZXNwb25zZSA9IHJlc3BvbnNlc1xuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuaWQgPT09IGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVJlc3BvbnNlSWQgJiZcbiAgICAgICAgICAgICAgICBldmVudC5hdHRyaWJ1dGVzLmZvcm1UeXBlICE9PSBGb3JtVHlwZS5Fc2NhbGF0aW9uLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChmb3JtUmVzcG9uc2UgJiYgZm9ybVJlc3BvbnNlLmNhdGVnb3J5ID09PSBSZXNwb25zZUNhdGVnb3J5LkZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQoZXZlbnQsIGZvcm1SZXNwb25zZS5hdHRyaWJ1dGVzKV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpOiBtZXNzYWdlIGlzIE1lc3NhZ2VbXSA9PiBtZXNzYWdlLmxlbmd0aCA+IDApO1xuXG4gICAgLy8gU29ydCB0aGUgbWVzc2FnZXMgY2hyb25vbG9naWNhbGx5IHRvIHJlY29uc3RydWN0IHRoZSBjaGF0IGhpc3RvcnlcbiAgICBjb25zdCBzb3J0ZWRNZXNzYWdlcyA9IFsuLi5hc3Npc3RhbnRNZXNzYWdlcywgLi4udXNlck1lc3NhZ2VzXS5zb3J0KFxuICAgICAgKGEsIGIpID0+IG5ldyBEYXRlKGFbMF0uY3JlYXRlZEF0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShiWzBdLmNyZWF0ZWRBdCkuZ2V0VGltZSgpLFxuICAgICk7XG5cbiAgICByZXR1cm4geyByZXNwb25zZXMsIHVzZXJFdmVudHMsIHN1Z2dlc3Rpb25zLCBtZXNzYWdlczogc29ydGVkTWVzc2FnZXMgfTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SGFyZGNvcHkgPSBhc3luYyAocmVxdWVzdDogV2lkZ2V0VGV4dFJlcXVlc3QpOiBQcm9taXNlPFdpZGdldFRleHQ+ID0+IHtcbiAgICBjb25zdCBhcGlSZXF1ZXN0ID0gY29yZVdpZGdldFRleHRSZXF1ZXN0VG9BcGlSZXF1ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFXaWRnZXRUZXh0UG9zdCh7XG4gICAgICBXaWRnZXRUZXh0UmVxdWVzdDogYXBpUmVxdWVzdCxcbiAgICB9KTtcbiAgICByZXR1cm4gYXBpV2lkZ2V0VGV4dFJlc3BvbnNlVG9Db3JlV2lkZ2V0VGV4dChhcGlSZXF1ZXN0LCByZXNwb25zZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgaXNTdXBwb3J0ZWRFdmVudCA9IGFzeW5jIChwYXlsb2FkOiBTdXBwb3J0ZWRFdmVudFJlcXVlc3QpOiBQcm9taXNlPFN1cHBvcnRlZEV2ZW50PiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd1Jlc3BvbnNlID1cbiAgICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFTdXBwb3J0ZWRFdmVudFBvc3RSYXcoe1xuICAgICAgICAgIFN1cHBvcnRlZEV2ZW50UmVxdWVzdDogY29yZVN1cHBvcnRlZEV2ZW50UmVxdWVzdFRvQXBpUmVxdWVzdChwYXlsb2FkKSxcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0dWFsIEhUVFAgcmVzcG9uc2UgSlNPTlxuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlVGV4dCA9IGF3YWl0IHJhd1Jlc3BvbnNlLnJhdy50ZXh0KCk7XG4gICAgICBjb25zdCBodHRwUmVzcG9uc2VKc29uID0gSlNPTi5wYXJzZShodHRwUmVzcG9uc2VUZXh0KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaHR0cFJlc3BvbnNlSnNvbixcbiAgICAgICAgbnVtYmVyT2ZSZXZpZXdzOiBodHRwUmVzcG9uc2VKc29uLm51bV9vZl9yZXZpZXdzLFxuICAgICAgICBtZXJjaGFudF90YWdzOiBodHRwUmVzcG9uc2VKc29uLm1lcmNoYW50X3RhZ3MgfHwgW10sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gZ2V0IHJlc3BvbnNlIGZvciB2MVN1cHBvcnRlZEV2ZW50UG9zdCcsIHtcbiAgICAgICAgZXJyLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdXBwb3J0ZWQ6IGZhbHNlLFxuICAgICAgICByZWFkeTogZmFsc2UsXG4gICAgICAgIGNhdGVnb3J5OiB1bmRlZmluZWQsXG4gICAgICAgIGNvbGxlY3Rpb25zOiBbXSxcbiAgICAgICAgbnVtYmVyT2ZSZXZpZXdzOiB1bmRlZmluZWQsXG4gICAgICAgIHRvcF9jYXRlZ29yeTogdW5kZWZpbmVkLFxuICAgICAgICBtZXJjaGFudF90YWdzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBpZGVudGlmeVVzZXIgPSBhc3luYyAoXG4gICAgc3BpZmZ5VXNlcklkOiBzdHJpbmcsXG4gICAgbWVyY2hhbnRVc2VySWQ6IHN0cmluZyxcbiAgICB1YURldGFpbHM6IENsaWVudERldGFpbHMsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFBbmFseXRpY3NJZGVudGlmeVBvc3Qoe1xuICAgICAgICBBbmFseXRpY3NJZGVudGlmeVJlcXVlc3Q6IHtcbiAgICAgICAgICB1c2VyX2lkOiBzcGlmZnlVc2VySWQsXG4gICAgICAgICAgb3NfbmFtZTogdWFEZXRhaWxzLm9zLFxuICAgICAgICAgIG9zX3ZlcnNpb246IHVhRGV0YWlscy5vc1ZlcnNpb24sXG4gICAgICAgICAgcGxhdGZvcm06IHVhRGV0YWlscy5vcyxcbiAgICAgICAgICBkZXZpY2VfaWQ6IHVhRGV0YWlscy5kZXZpY2VNb2RlbCxcbiAgICAgICAgICBkZXZpY2VfYnJhbmQ6IHVhRGV0YWlscy5kZXZpY2VCcmFuZCxcbiAgICAgICAgICBkZXZpY2VfbWFudWZhY3R1cmVyOiB1YURldGFpbHMuZGV2aWNlTWFudWZhY3R1cmVyLFxuICAgICAgICAgIGRldmljZV9tb2RlbDogdWFEZXRhaWxzLmRldmljZU1vZGVsLFxuICAgICAgICAgIHVzZXJfcHJvcGVydGllczoge1xuICAgICAgICAgICAgY2RwX3VzZXJfaWQ6IG1lcmNoYW50VXNlcklkLFxuICAgICAgICAgICAgYnJvd3NlcjogdWFEZXRhaWxzLmJyb3dzZXIsXG4gICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IHVhRGV0YWlscy5icm93c2VyVmVyc2lvbixcbiAgICAgICAgICAgIHVzZXJfYWdlbnQ6IHVhRGV0YWlscy51c2VyQWdlbnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gaWRlbnRpZnkgdXNlcicsIGVycik7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIG1hcENvbnRleHRTb3VyY2VUb1YxT3JnQ29uZmlnR2V0U291cmNlID0gKFxuICAgIHNvdXJjZTogQ29udGV4dFNvdXJjZUVudW0gfCB1bmRlZmluZWQsXG4gICk6IFYxT3JnQ29uZmlnR2V0U291cmNlRW51bSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAoc291cmNlKSB7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLkZvcms6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uRm9yaztcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uUGxheWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bS5QbGF5Z3JvdW5kO1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5BcHA6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uQXBwO1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5UZXN0OlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLlRlc3Q7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLkV2YWw6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uVGVzdDtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgaWYgbmV3IHZhbHVlcyBhcmUgYWRkZWQgdG8gQ29udGV4dFNvdXJjZUVudW0sIHdlIGNhdGNoIGl0XG4gICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjazogbmV2ZXIgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXRPcmdDb25maWcgPSBhc3luYyAodXNlcl9pZDogc3RyaW5nKTogUHJvbWlzZTxPcmdDb25maWcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gICAgICBjb25zdCByZWFjdEFwcE5hbWUgPSBhdG9tU3RvcmUuZ2V0KHJlYWN0QXBwTmFtZUF0b20pO1xuICAgICAgY29uc3QgY29udGV4dFNvdXJjZSA9IGF0b21TdG9yZS5nZXQoY29udGV4dFNvdXJjZUF0b20pO1xuICAgICAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTsgLy8gR2V0IGZlYXR1cmVGbGFnU2VydmljZVxuICAgICAgY29uc3QgcmVxdWVzdDogVjFPcmdDb25maWdHZXRSZXF1ZXN0ID0ge1xuICAgICAgICBuYW1lc3BhY2U6IHJlYWN0QXBwTmFtZSxcbiAgICAgICAgdXNlcl9pZCxcbiAgICAgICAgc291cmNlOiB0aGlzLm1hcENvbnRleHRTb3VyY2VUb1YxT3JnQ29uZmlnR2V0U291cmNlKGNvbnRleHRTb3VyY2UpLFxuICAgICAgICBpbmNsdWRlX2V4cGVyaW1lbnRzOiBPYmplY3QudmFsdWVzKFByb2R1Y3RFeHBlcmltZW50KSxcbiAgICAgICAgaW5jbHVkZV9mZWF0dXJlX2dhdGVzOiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge30sXG4gICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgICAgICAgLm1hcCgoW2ZlYXR1cmVHYXRlTmFtZV0pID0+IGZlYXR1cmVHYXRlTmFtZSksIC8vIFVzZSBmZWF0dXJlRmxhZ1NlcnZpY2VcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuZGVmYXVsdEFwaS52MU9yZ0NvbmZpZ0dldChyZXF1ZXN0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cyhyZXNwb25zZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoYEZhaWxlZCB0byBnZXQgb3JnIGNvbmZpZ2AsIGVyciwgeyBlcnIgfSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgYWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uID0gYXN5bmMgKFxuICAgIHNwaWZmeVVzZXJJZDogc3RyaW5nLFxuICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgY3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXI6IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICApID0+IHtcbiAgICBMb2dnZXIubG9nSW5mbyhcbiAgICAgIGBhZGROb3RlVG9MYXRlc3RDb252ZXJzYXRpb24gLSB1c2VyX2lkPSR7c3BpZmZ5VXNlcklkfSBlbWFpbD0ke2VtYWlsfSBjdXN0b21lcl9zZXJ2aWNlX3Byb3ZpZGVyPSR7Y3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXJ9YCxcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmN1c3RvbWVyU2VydmljZUFwaS52MUN1c3RzZXJ2aWNlQWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uUG9zdChcbiAgICAgICAge1xuICAgICAgICAgIEFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvblJlcXVlc3Q6IHtcbiAgICAgICAgICAgIHNwaWZmeV91c2VyX2lkOiBzcGlmZnlVc2VySWQsXG4gICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgIGN1c3RvbWVyX3NlcnZpY2VfcHJvdmlkZXI6IGN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gYWRkIG5vdGUgdG8gbGF0ZXN0IGNvbnZlcnNhdGlvbicsIHsgZXJyIH0pO1xuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0Q3VzdG9tZXJTZXJ2aWNlQXBpID0gKCkgPT4gQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5jdXN0b21lclNlcnZpY2VBcGk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1lcmNlQXBpQ2xpZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4REEsZUFBZSxrQkFBa0IsT0FBc0I7QUFDckQsS0FBSTtBQUNGLFNBQU8sTUFBTSxNQUFNLFNBQVMsTUFBTTtTQUM1QjtBQUNOLFNBQU8sRUFBRTs7O0FBSWIsZUFBZSw4QkFBOEIsVUFBa0IsT0FBZ0I7QUFDN0UsS0FBSSxFQUFFLGlCQUFpQixnQkFB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
332
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2UtYXBpLmpzIiwibmFtZXMiOlsiY29uZmlnOiBDb25maWd1cmF0aW9uIiwiY29udGV4dDogQ29udGV4dCIsImVycjogdW5rbm93biIsImVycm9yOiB1bmtub3duIiwiZGF0YTogVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSIsInJlc3BvbnNlczogUmVzcG9uc2VbXVtdIiwic3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXSIsInVzZXJFdmVudHM6IFVzZXJFdmVudFtdIiwiYXNzaXN0YW50TWVzc2FnZXM6IE1lc3NhZ2VbXVtdIiwidXNlck1lc3NhZ2VzOiBNZXNzYWdlW11bXSIsInJlcXVlc3Q6IFYxT3JnQ29uZmlnR2V0UmVxdWVzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbixcbiAgQ29udGV4dEVudkVudW0sXG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDdXN0b21lclNlcnZpY2VBcGksXG4gIEN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICBEZWZhdWx0QXBpLFxuICBGb3JtVHlwZSxcbiAgSW5mZXJlbmNlQXBpLFxuICBSZXBvcnRTZXNzaW9uUmVxdWVzdCxcbiAgUmVzcG9uc2VDYXRlZ29yeSxcbiAgUmVzcG9uc2VFcnJvcixcbiAgVXNlckV2ZW50Q2F0ZWdvcnksXG4gIFYxR2V0U2Vzc2lvbk1lc3NhZ2VzMjAwUmVzcG9uc2UsXG4gIFYxT3JnQ29uZmlnR2V0UmVxdWVzdCxcbiAgVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLFxufSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50L2Rpc3QvbW9kZWxzL0NvbnRleHQnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICBSZXNwb25zZSxcbiAgU3VnZ2VzdGlvbixcbiAgU3VwcG9ydGVkRXZlbnRSZXF1ZXN0LFxuICBVc2VyRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBDbGllbnREZXRhaWxzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jbGllbnREZXRhaWxzJztcbmltcG9ydCB7IFByb2R1Y3RFeHBlcmltZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9wcm9kdWN0RXhwZXJpbWVudCc7XG5pbXBvcnQgeyB2YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IHZhbGlkYXRlUmVzcG9uc2UgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVSZXNwb25zZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZVN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVTdWdnZXN0aW9uJztcbmltcG9ydCB7IHZhbGlkYXRlVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlVXNlckV2ZW50JztcbmltcG9ydCB7XG4gIGdldFF1ZXJ5UGFyYW0sXG4gIG1lc3NhZ2VGcm9tUXVlcnlFdmVudCxcbiAgbWVzc2FnZUZyb21SZXNwb25zZSxcbiAgbWVzc2FnZUZyb21TdWdnZXN0aW9uRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBtZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscy9tZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudCc7XG5pbXBvcnQgeyBtZXNzYWdlUmVxdWVzdFRvQ29tbWVyY2VNZXNzYWdlUmVxdWVzdCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscy9uZXh0TWVzc2FnZVJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuaW1wb3J0IHsgY29yZVN1cHBvcnRlZEV2ZW50UmVxdWVzdFRvQXBpUmVxdWVzdCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscy9zdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuaW1wb3J0IHsgY2hhdElkQXRvbSwgdXNlcklkQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAnOyAvLyBJbXBvcnQgdXNlcklkQXRvbSBhbmQgY2hhdElkQXRvbVxuaW1wb3J0IHsgU3VwcG9ydGVkRXZlbnQgfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSAnc3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmUnO1xuaW1wb3J0IHtcbiAgYmFzZVVybEF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBlbnZBdG9tLFxuICBvcmdJZEF0b20sXG4gIG9yZ0xldmVsQXBpS2V5QXRvbSxcbiAgb3JnU2hvcnROYW1lQXRvbSxcbiAgcmVhY3RBcHBOYW1lQXRvbSwgLy8gSW1wb3J0IGVudkF0b21cbn0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IHsgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9vcmcvZ3JhcGhxbENvbmZpZyc7IC8vIEltcG9ydCBuZXcgb3JnSWRBdG9tIGFuZCBmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tXG5pbXBvcnQgeyBTZXNzaW9uUmVzdGFydFJlcXVpcmVkIH0gZnJvbSAnc3JjL3R5cGVzL2V4Y2VwdGlvbnMvc2Vzc2lvbkV4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRQcm9kdWN0RXhjZXB0aW9uIH0gZnJvbSAnc3JjL3R5cGVzL2V4Y2VwdGlvbnMvdW5zdXBwb3J0ZWRQcm9kdWN0RXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBXaWRnZXRUZXh0IH0gZnJvbSAnLi9tb2RlbHMvYXBpL3dpZGdldFRleHQnO1xuaW1wb3J0IHsgV2lkZ2V0VGV4dFJlcXVlc3QgfSBmcm9tICcuL21vZGVscy9hcGkvd2lkZ2V0VGV4dFJlcXVlc3QnO1xuaW1wb3J0IHsgYXBpV2lkZ2V0VGV4dFJlc3BvbnNlVG9Db3JlV2lkZ2V0VGV4dCB9IGZyb20gJy4vdXRpbHMvd2lkZ2V0VGV4dEZyb21BcGlXaWRnZXRUZXh0UmVzcG9uc2UnO1xuaW1wb3J0IHsgY29yZVdpZGdldFRleHRSZXF1ZXN0VG9BcGlSZXF1ZXN0IH0gZnJvbSAnLi91dGlscy93aWRnZXRUZXh0UmVxdWVzdFRvQXBpUmVxdWVzdCc7XG5cbmFzeW5jIGZ1bmN0aW9uIGVycm9yUmVzcG9uc2VCb2R5KGVycm9yOiBSZXNwb25zZUVycm9yKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGVycm9yLnJlc3BvbnNlLmpzb24oKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKGVycm9yTXNnOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKSB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgUmVzcG9uc2VFcnJvcikpIHtcbiAgICBMb2dnZXIubG9nSW5mbyhlcnJvck1zZywgZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGF3YWl0IGVycm9yUmVzcG9uc2VCb2R5KGVycm9yKTtcbiAgaWYgKFxuICAgIGVycm9yUmVzcG9uc2U/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgPT09ICd1bnN1cHBvcnRlZCBwcm9kdWN0JyB8fCAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gbmV3ZXIgdmVyc2lvbnMgb2YgdGhlIEFQSSByZXR1cm4gc3ViX2NvZGUgaW5zdGVhZCBvZiBtZXNzYWdlXG4gICAgZXJyb3JSZXNwb25zZT8uYXBwX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdQUk9EVUNUX05PVF9GT1VORCdcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkUHJvZHVjdEV4Y2VwdGlvbigpO1xuICB9IGVsc2UgaWYgKFxuICAgIGVycm9yUmVzcG9uc2U/LmFwcF9jb2RlPy50b1VwcGVyQ2FzZSgpID09PSAnUkVTVEFSVF9TRVNTSU9OJyB8fFxuICAgIGVycm9yUmVzcG9uc2U/LnN1Yl9jb2RlPy50b1VwcGVyQ2FzZSgpID09PSAnTk9UX0ZPVU5EJyAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gbmV3IEFQSSByZXNwb25zZXMgd2lsbCBjb250YWluIFwiYXBwX2NvZGVcIlxuICApIHtcbiAgICBMb2dnZXIubG9nSW5mbyhcbiAgICAgICdTZXNzaW9uIGRvZXMgbm90IGV4aXN0LiBSZS1zdGFydCBzZXNzaW9uJyxcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3IucmVzcG9uc2UsXG4gICAgICBlcnJvclJlc3BvbnNlLFxuICAgICk7XG4gICAgdGhyb3cgbmV3IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQoKTtcbiAgfVxuXG4gIExvZ2dlci5sb2dJbmZvKGVycm9yTXNnLCBlcnJvcik7XG4gIHRocm93IGVycm9yO1xufVxuXG5jbGFzcyBDb21tZXJjZUFwaUNsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwaTogRGVmYXVsdEFwaTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbWVyU2VydmljZUFwaTogQ3VzdG9tZXJTZXJ2aWNlQXBpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5mZXJlbmNlQXBpOiBJbmZlcmVuY2VBcGk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IENvbW1lcmNlQXBpQ2xpZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc3VnZ2VzdGlvbnNBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHJpdmF0ZSByZXNwb25zZXNBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0SW5zdGFuY2UgPSAoKTogQ29tbWVyY2VBcGlDbGllbnQgPT4ge1xuICAgIGlmICghQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2UpIHtcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50Lmluc3RhbmNlID0gbmV3IENvbW1lcmNlQXBpQ2xpZW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbW1lcmNlQXBpQ2xpZW50Lmluc3RhbmNlO1xuICB9O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgICBjb25zdCBiYXNlVXJsID0gYXRvbVN0b3JlLmdldChiYXNlVXJsQXRvbSk7XG4gICAgY29uc3QgYXBpS2V5ID0gYXRvbVN0b3JlLmdldChvcmdMZXZlbEFwaUtleUF0b20pO1xuICAgIGNvbnN0IHBhdGggPSBiYXNlUGF0aCB8fCBiYXNlVXJsO1xuICAgIC8vIEFQSSBLZXkgaXMgbm93IGhhbmRsZWQgYXQgdGhlIEVudml2ZUNvbmZpZ1Byb3ZpZGVyIGxldmVsXG4gICAgY29uc3QgY29uZmlnOiBDb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oe1xuICAgICAgYWNjZXNzVG9rZW46IGFwaUtleSxcbiAgICAgIGJhc2VQYXRoOiBwYXRoLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5kZWZhdWx0QXBpID0gbmV3IERlZmF1bHRBcGkoY29uZmlnKTtcbiAgICB0aGlzLmluZmVyZW5jZUFwaSA9IG5ldyBJbmZlcmVuY2VBcGkoY29uZmlnKTtcbiAgICB0aGlzLmN1c3RvbWVyU2VydmljZUFwaSA9IG5ldyBDdXN0b21lclNlcnZpY2VBcGkoY29uZmlnKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlVXJsID0gYXN5bmMgKHVybDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gICAgY29uc3Qgb3JnU2hvcnROYW1lID0gYXRvbVN0b3JlLmdldChvcmdTaG9ydE5hbWVBdG9tKTtcbiAgICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgICBjb25zdCB1c2VySWQgPSBhdG9tU3RvcmUuZ2V0KHVzZXJJZEF0b20pO1xuICAgIGNvbnN0IGNoYXRJZCA9IGF0b21TdG9yZS5nZXQoY2hhdElkQXRvbSk7XG4gICAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gICAgY29uc3QgZW52ID0gYXRvbVN0b3JlLmdldChlbnZBdG9tKTtcblxuICAgIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IGF0b21TdG9yZS5nZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7XG5cbiAgICBjb25zdCBjb250ZXh0OiBDb250ZXh0ID0ge1xuICAgICAgdXNlcl9pZDogdXNlcklkID8/ICcnLFxuICAgICAgb3JnX2lkOiBvcmdJZCA/PyAnJyxcbiAgICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gJycsXG4gICAgICBjaGF0X2lkOiBjaGF0SWQgPz8gJycsXG4gICAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgICBlbnY6IChlbnYgYXMgQ29udGV4dEVudkVudW0pID8/IENvbnRleHRFbnZFbnVtLkRldiwgLy8gQ2FzdCBlbnYgdG8gQ29udGV4dEVudkVudW1cbiAgICB9O1xuXG4gICAgY29uc3Qgb3ZlcnJpZGVDb25maWdWZXJzaW9uID1cbiAgICAgIGdldFF1ZXJ5UGFyYW0oJ3NwaWZmeV9jb25maWdfdmVyc2lvbicpIHx8IGdldFF1ZXJ5UGFyYW0oJ2Vudml2ZV9jb25maWdfdmVyc2lvbicpIHx8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGZlYXR1cmVHYXRlcyA9IGZlYXR1cmVGbGFnU2VydmljZT8uZmVhdHVyZUZsYWdTZXJ2aWNlPy5nZXRGZWF0dXJlRmxhZ3MoKSB8fCB7fTtcbiAgICBjb25zdCB1cmxSZXNvbHZpbmdSZXF1ZXN0ID0ge1xuICAgICAgdXJsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGZlYXR1cmVfZ2F0ZXM6IGZlYXR1cmVHYXRlcyxcbiAgICAgIG92ZXJyaWRlX2NvbmZpZ192ZXJzaW9uOiBvdmVycmlkZUNvbmZpZ1ZlcnNpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IHJhd1Jlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFVcmxSZXNvbHZpbmdQb3N0UmF3KHtcbiAgICAgIFVybFJlc29sdmluZ1JlcXVlc3Q6IHVybFJlc29sdmluZ1JlcXVlc3QsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUJvZHkgPSBhd2FpdCByYXdSZXNwb25zZS5yYXcuanNvbigpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlQm9keTtcbiAgfTtcblxuICBzdGF0aWMgcmVwb3J0U2Vzc2lvbiA9IGFzeW5jIChyZXBvcnRSZXF1ZXN0OiBSZXBvcnRTZXNzaW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuZGVmYXVsdEFwaS52MUNoYXRzUmVwb3J0U2Vzc2lvbklkUG9zdCh7XG4gICAgICBSZXBvcnRTZXNzaW9uUmVxdWVzdDogcmVwb3J0UmVxdWVzdCxcbiAgICB9KTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0TmV4dFJlc3BvbnNlcyA9IGFzeW5jIChwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPE1lc3NhZ2VbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxTmV4dFJlc3BvbnNlc1Bvc3Qoe1xuICAgICAgICBOZXh0TWVzc2FnZVJlcXVlc3Q6IG1lc3NhZ2VSZXF1ZXN0VG9Db21tZXJjZU1lc3NhZ2VSZXF1ZXN0KHBheWxvYWQpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHJlc3BvbnNlXG4gICAgICAgIC5tYXAocmVzcCA9PiB2YWxpZGF0ZVJlc3BvbnNlKHJlc3ApKVxuICAgICAgICAubWFwKHJlc3AgPT4gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwKSk7XG5cbiAgICAgIHJldHVybiBtZXNzYWdlcy5maWx0ZXIoKG0pOiBtIGlzIE1lc3NhZ2UgPT4gbSAhPSBudWxsKTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIExvZ2dlci5sb2dJbmZvKCdGYWlsZWQgdG8gZ2V0IG5leHQgcmVzcG9uc2VzJywgZXJyLCB7XG4gICAgICAgIHBheWxvYWRDb250ZXh0OiBwYXlsb2FkPy5jb250ZXh0LFxuICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkPy51c2VyRXZlbnRzLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBuZXh0IHJlc3BvbnNlcycsIGVycik7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXROZXh0UmVzcG9uc2VTdHJlYW1pbmcgPSAoXG4gICAgcGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICApOiBBc3luY0dlbmVyYXRvcjxSZXNwb25zZSwgdm9pZCwgdW5rbm93bj4gPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uKiBnZW5lcmF0ZShpbmZlcmVuY2VBcGk6IEluZmVyZW5jZUFwaSwgYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgIC8vIG1ha2Ugc3VyZSBzdHJlYW1pbmcgaXMgZW5hYmxlZFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBpbmZlcmVuY2VBcGkudjFOZXh0UmVzcG9uc2VzUG9zdFJhdyhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBOZXh0TWVzc2FnZVJlcXVlc3Q6IG1lc3NhZ2VSZXF1ZXN0VG9Db21tZXJjZU1lc3NhZ2VSZXF1ZXN0KHBheWxvYWQpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwgfSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZWFkIHRoZSByZXNwb25zZSBhcyBhIHN0cmVhbSBvZiBkYXRhXG4gICAgICAgIGlmICghcmVzcG9uc2UucmF3LmJvZHkpIHtcbiAgICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIE5vIGJvZHkgaW4gdGhlIHN0cmVhbWVkIHJlc3BvbnNlJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UucmF3LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLnJhdy5ib2R5LmdldFJlYWRlcigpO1xuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcpO1xuXG4gICAgICAgIGxldCBwYXJ0aWFsID0gJyc7XG4gICAgICAgIC8vIFRPRE8gdGhpcyBmdW5jdGlvbiBpcyByZWNyZWF0ZWQgZXZlcnkgdGltZSBuZXcgZGF0YSBjb21lcyBmcm9tIHRoZSBzdHJlYW0gLSBkZWZpbmUgaXQgb3V0c2lkZSBvZiB0aGUgZ2VuZXJhdG9yXG4gICAgICAgIGNvbnN0IHNhZmVQYXJzZSA9IChsaW5lOiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobGluZSk7IC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZ1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciBwYXJzaW5nIHN0cmVhbWVkIGxpbmUnLCBlcnIsIHtcbiAgICAgICAgICAgICAgbGluZSxcbiAgICAgICAgICAgICAgcGFydGlhbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gc3dhbGxvdyB0aGUgZXJyb3IgYW5kIHNldCB0aGUgcGFydGlhbCB0byBvdXIgY3VycmVudCBjaHVua1xuICAgICAgICAgICAgcGFydGlhbCA9IGxpbmU7XG4gICAgICAgICAgICByZXR1cm4gcGFydGlhbDtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVE9ETyB0aGlzIGZ1bmN0aW9uIGlzIHJlY3JlYXRlZCBldmVyeSB0aW1lIG5ldyBkYXRhIGNvbWVzIGZyb20gdGhlIHN0cmVhbSAtIGRlZmluZSBpdCBvdXRzaWRlIG9mIHRoZSBnZW5lcmF0b3JcbiAgICAgICAgY29uc3QgcHJvY2Vzc0NodW5rID0gKGNodW5rOiBzdHJpbmcpOiB1bmtub3duW10gPT4ge1xuICAgICAgICAgIC8vIG1lcmdlIHRoZSBwYXJ0aWFsIHdpdGggdGhlIGluY29taW5nIGNodW5rXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBgJHtwYXJ0aWFsfSR7Y2h1bmt9YC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgICBjb25zdCBwYXJzZWRMaW5lcyA9IGxpbmVzXG4gICAgICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eZGF0YTogLywgJycpLnRyaW0oKSkgLy8gUmVtb3ZlIHRoZSBcImRhdGE6IFwiIHByZWZpeFxuICAgICAgICAgICAgLmZpbHRlcihsaW5lID0+IGxpbmUgIT09ICcnICYmIGxpbmUgIT09ICdbRE9ORV0nKSAvLyBSZW1vdmUgZW1wdHkgbGluZXMgYW5kIFwiW0RPTkVdXCJcbiAgICAgICAgICAgIC5tYXAoc2FmZVBhcnNlKVxuICAgICAgICAgICAgLmZpbHRlcih2ID0+IHYpOyAvLyBhbmQgZmlsdGVyIG91dCB0aGUgdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgICAgIHJldHVybiBwYXJzZWRMaW5lcztcbiAgICAgICAgfTtcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcblxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBNYXNzYWdlIGFuZCBwYXJzZSB0aGUgY2h1bmsgb2YgZGF0YVxuICAgICAgICAgIGNvbnN0IGNodW5rID0gZGVjb2Rlci5kZWNvZGUodmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZExpbmVzID0gcHJvY2Vzc0NodW5rKGNodW5rKTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcGFyc2VkTGluZSBvZiBwYXJzZWRMaW5lcykge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkUmVzcG9uc2UgPSB2YWxpZGF0ZVJlc3BvbnNlKHBhcnNlZExpbmUpO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVkUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgeWllbGQgdmFsaWRhdGVkUmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIEZhaWxlZCB0byBnZXQgbmV4dCBzdHJlYW1pbmcgcmVzcG9uc2VzJywgZXJyb3IsIHtcbiAgICAgICAgICBwYXlsb2FkQ29udGV4dDogcGF5bG9hZD8uY29udGV4dCxcbiAgICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkPy51c2VyRXZlbnRzLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byBnZXQgbmV4dCBzdHJlYW1pbmcgcmVzcG9uc2VzJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkucmVzcG9uc2VzQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5yZXNwb25zZXNBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdGUoXG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaSxcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkucmVzcG9uc2VzQWJvcnRDb250cm9sbGVyLFxuICAgICk7XG4gIH07XG5cbiAgc3RhdGljIGdldE5leHRTdWdnZXN0aW9ucyA9IGFzeW5jIChwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPFN1Z2dlc3Rpb25bXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnN1Z2dlc3Rpb25zQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnN1Z2dlc3Rpb25zQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxTmV4dFN1Z2dlc3Rpb25zUG9zdChcbiAgICAgICAge1xuICAgICAgICAgIE5leHRNZXNzYWdlUmVxdWVzdDogbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QocGF5bG9hZCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuc3VnZ2VzdGlvbnNBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSByZXNwb25zZVxuICAgICAgICAubWFwKHJlc3AgPT4gdmFsaWRhdGVTdWdnZXN0aW9uKHJlc3ApKVxuICAgICAgICAuZmlsdGVyKChzdWdnZXN0aW9uKTogc3VnZ2VzdGlvbiBpcyBTdWdnZXN0aW9uID0+IHN1Z2dlc3Rpb24gIT0gbnVsbCk7XG5cbiAgICAgIHJldHVybiBzdWdnZXN0aW9ucztcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ0luZm8oJ0ZhaWxlZCB0byBnZXQgc3VnZ2VzdGlvbnMnLCBlcnJvciwge1xuICAgICAgICBwYXlsb2FkQ29udGV4dDogcGF5bG9hZD8uY29udGV4dCxcbiAgICAgICAgdXNlckV2ZW50czogcGF5bG9hZD8udXNlckV2ZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBzdWdnZXN0aW9ucycsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGV4aXN0aW5nIGNoYXQgZGF0YSBmb3IgYSBnaXZlbiBzZXNzaW9uIGFuZCB0cmFuc2Zvcm1zIHRoZW0gdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYXQgaGlzdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIFRoZSBvcmdhbml6YXRpb24gSWRcbiAgICogQHBhcmFtIGNoYXRJZCBUaGUgZXhpc3RpbmcgY2hhdCBJZFxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VyIElkXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbGlzdCBvZiBtZXNzYWdlcyB0aGF0IHdlcmUgZXhjaGFuZ2VkIGluIHRoZSBjaGF0LCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNoYXQgc2Vzc2lvbiBoYXMgZXhwaXJlZC5cbiAgICovXG4gIHN0YXRpYyBnZXRSZXNwb25zZXMgPSBhc3luYyAoXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBjaGF0SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7XG4gICAgcmVzcG9uc2VzOiBSZXNwb25zZVtdW107XG4gICAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gICAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXTtcbiAgICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gIH0+ID0+IHtcbiAgICBsZXQgZGF0YTogVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSA9IHtcbiAgICAgIHJlc3BvbnNlczogW10sXG4gICAgICBzdWdnZXN0aW9uczogW10sXG4gICAgICB1c2VyX2V2ZW50czogW10sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgb3JnX2lkOiBvcmdJZCxcbiAgICAgIGNoYXRfaWQ6IGNoYXRJZCxcbiAgICAgIHVzZXJfaWQ6IHVzZXJJZCxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBkYXRhID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5kZWZhdWx0QXBpLnYxR2V0U2Vzc2lvbk1lc3NhZ2VzKHJlcXVlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBjaGF0IHJlc3BvbnNlcycsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZXM6IFJlc3BvbnNlW11bXSA9IGRhdGE/LnJlc3BvbnNlcz8ubWFwKHR1cm4gPT5cbiAgICAgIHR1cm5cbiAgICAgICAgLm1hcChyZXNwb25zZSA9PiB2YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSlcbiAgICAgICAgLmZpbHRlcigocmVzcG9uc2UpOiByZXNwb25zZSBpcyBSZXNwb25zZSA9PiByZXNwb25zZSAhPSBudWxsKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXSA9IGRhdGE/LnN1Z2dlc3Rpb25zXG4gICAgICAubWFwKHN1Z2dlc3Rpb24gPT4gdmFsaWRhdGVTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pKVxuICAgICAgLmZpbHRlcigoc3VnZ2VzdGlvbik6IHN1Z2dlc3Rpb24gaXMgU3VnZ2VzdGlvbiA9PiBzdWdnZXN0aW9uICE9IG51bGwpO1xuXG4gICAgY29uc3QgdXNlckV2ZW50czogVXNlckV2ZW50W10gPSBkYXRhPy51c2VyX2V2ZW50c1xuICAgICAgLm1hcChldmVudCA9PiB2YWxpZGF0ZVVzZXJFdmVudChldmVudCkpXG4gICAgICAuZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIFVzZXJFdmVudCA9PiBldmVudCAhPSBudWxsKTtcblxuICAgIC8vIGlmIGEgZm9ybSBoYXMgYWxyZWFkeSBiZWVuIHN1Ym1pdHRlZCwgZG9uJ3Qgc2hvdyBpdCBpbiB0aGUgY2hhdCBoaXN0b3J5XG4gICAgY29uc3QgZm9ybVN1Ym1pdHRlZFVzZXJFdmVudHNGb3JtSWRzID0gdXNlckV2ZW50c1xuICAgICAgLmZpbHRlcihldmVudCA9PiBldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZClcbiAgICAgIC5tYXAoZXZlbnQgPT4gZXZlbnQuYXR0cmlidXRlcy5mb3JtUmVzcG9uc2VJZCk7XG5cbiAgICBjb25zdCBhc3Npc3RhbnRNZXNzYWdlczogTWVzc2FnZVtdW10gPSByZXNwb25zZXNcbiAgICAgIC5tYXAodHVybiA9PlxuICAgICAgICB0dXJuXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuY2F0ZWdvcnkgPT09IFJlc3BvbnNlQ2F0ZWdvcnkuRm9ybSAmJlxuICAgICAgICAgICAgICAgIGZvcm1TdWJtaXR0ZWRVc2VyRXZlbnRzRm9ybUlkcy5pbmNsdWRlcyhyZXNwb25zZS5pZClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChyZXNwb25zZSA9PiBtZXNzYWdlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKSlcbiAgICAgICAgICAuZmlsdGVyKChtZXNzYWdlKTogbWVzc2FnZSBpcyBNZXNzYWdlID0+IG1lc3NhZ2UgIT0gbnVsbCksXG4gICAgICApXG4gICAgICAuZmlsdGVyKHR1cm4gPT4gdHVybi5sZW5ndGggPiAwKTtcblxuICAgIGNvbnN0IHVzZXJNZXNzYWdlczogTWVzc2FnZVtdW10gPSB1c2VyRXZlbnRzXG4gICAgICAubWFwKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKFtVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLCBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2hdLmluY2x1ZGVzKGV2ZW50LmNhdGVnb3J5KSkge1xuICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21RdWVyeUV2ZW50KGV2ZW50KV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkKSB7XG4gICAgICAgICAgcmV0dXJuIFttZXNzYWdlRnJvbVN1Z2dlc3Rpb25FdmVudChldmVudCwgc3VnZ2VzdGlvbnMpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1SZXNwb25zZSA9IHJlc3BvbnNlc1xuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuaWQgPT09IGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVJlc3BvbnNlSWQgJiZcbiAgICAgICAgICAgICAgICBldmVudC5hdHRyaWJ1dGVzLmZvcm1UeXBlICE9PSBGb3JtVHlwZS5Fc2NhbGF0aW9uLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChmb3JtUmVzcG9uc2UgJiYgZm9ybVJlc3BvbnNlLmNhdGVnb3J5ID09PSBSZXNwb25zZUNhdGVnb3J5LkZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQoZXZlbnQsIGZvcm1SZXNwb25zZS5hdHRyaWJ1dGVzKV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpOiBtZXNzYWdlIGlzIE1lc3NhZ2VbXSA9PiBtZXNzYWdlLmxlbmd0aCA+IDApO1xuXG4gICAgLy8gU29ydCB0aGUgbWVzc2FnZXMgY2hyb25vbG9naWNhbGx5IHRvIHJlY29uc3RydWN0IHRoZSBjaGF0IGhpc3RvcnlcbiAgICBjb25zdCBzb3J0ZWRNZXNzYWdlcyA9IFsuLi5hc3Npc3RhbnRNZXNzYWdlcywgLi4udXNlck1lc3NhZ2VzXS5zb3J0KFxuICAgICAgKGEsIGIpID0+IG5ldyBEYXRlKGFbMF0uY3JlYXRlZEF0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShiWzBdLmNyZWF0ZWRBdCkuZ2V0VGltZSgpLFxuICAgICk7XG5cbiAgICByZXR1cm4geyByZXNwb25zZXMsIHVzZXJFdmVudHMsIHN1Z2dlc3Rpb25zLCBtZXNzYWdlczogc29ydGVkTWVzc2FnZXMgfTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SGFyZGNvcHkgPSBhc3luYyAocmVxdWVzdDogV2lkZ2V0VGV4dFJlcXVlc3QpOiBQcm9taXNlPFdpZGdldFRleHQ+ID0+IHtcbiAgICBjb25zdCBhcGlSZXF1ZXN0ID0gY29yZVdpZGdldFRleHRSZXF1ZXN0VG9BcGlSZXF1ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFXaWRnZXRUZXh0UG9zdCh7XG4gICAgICBXaWRnZXRUZXh0UmVxdWVzdDogYXBpUmVxdWVzdCxcbiAgICB9KTtcbiAgICByZXR1cm4gYXBpV2lkZ2V0VGV4dFJlc3BvbnNlVG9Db3JlV2lkZ2V0VGV4dChhcGlSZXF1ZXN0LCByZXNwb25zZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgaXNTdXBwb3J0ZWRFdmVudCA9IGFzeW5jIChwYXlsb2FkOiBTdXBwb3J0ZWRFdmVudFJlcXVlc3QpOiBQcm9taXNlPFN1cHBvcnRlZEV2ZW50PiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd1Jlc3BvbnNlID1cbiAgICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFTdXBwb3J0ZWRFdmVudFBvc3RSYXcoe1xuICAgICAgICAgIFN1cHBvcnRlZEV2ZW50UmVxdWVzdDogY29yZVN1cHBvcnRlZEV2ZW50UmVxdWVzdFRvQXBpUmVxdWVzdChwYXlsb2FkKSxcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0dWFsIEhUVFAgcmVzcG9uc2UgSlNPTlxuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlVGV4dCA9IGF3YWl0IHJhd1Jlc3BvbnNlLnJhdy50ZXh0KCk7XG4gICAgICBjb25zdCBodHRwUmVzcG9uc2VKc29uID0gSlNPTi5wYXJzZShodHRwUmVzcG9uc2VUZXh0KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaHR0cFJlc3BvbnNlSnNvbixcbiAgICAgICAgbnVtYmVyT2ZSZXZpZXdzOiBodHRwUmVzcG9uc2VKc29uLm51bV9vZl9yZXZpZXdzLFxuICAgICAgICBtZXJjaGFudF90YWdzOiBodHRwUmVzcG9uc2VKc29uLm1lcmNoYW50X3RhZ3MgfHwgW10sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gZ2V0IHJlc3BvbnNlIGZvciB2MVN1cHBvcnRlZEV2ZW50UG9zdCcsIHtcbiAgICAgICAgZXJyLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdXBwb3J0ZWQ6IGZhbHNlLFxuICAgICAgICByZWFkeTogZmFsc2UsXG4gICAgICAgIGNhdGVnb3J5OiB1bmRlZmluZWQsXG4gICAgICAgIGNvbGxlY3Rpb25zOiBbXSxcbiAgICAgICAgbnVtYmVyT2ZSZXZpZXdzOiB1bmRlZmluZWQsXG4gICAgICAgIHRvcF9jYXRlZ29yeTogdW5kZWZpbmVkLFxuICAgICAgICBtZXJjaGFudF90YWdzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBpZGVudGlmeVVzZXIgPSBhc3luYyAoXG4gICAgc3BpZmZ5VXNlcklkOiBzdHJpbmcsXG4gICAgbWVyY2hhbnRVc2VySWQ6IHN0cmluZyxcbiAgICB1YURldGFpbHM6IENsaWVudERldGFpbHMsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFBbmFseXRpY3NJZGVudGlmeVBvc3Qoe1xuICAgICAgICBBbmFseXRpY3NJZGVudGlmeVJlcXVlc3Q6IHtcbiAgICAgICAgICB1c2VyX2lkOiBzcGlmZnlVc2VySWQsXG4gICAgICAgICAgb3NfbmFtZTogdWFEZXRhaWxzLm9zLFxuICAgICAgICAgIG9zX3ZlcnNpb246IHVhRGV0YWlscy5vc1ZlcnNpb24sXG4gICAgICAgICAgcGxhdGZvcm06IHVhRGV0YWlscy5vcyxcbiAgICAgICAgICBkZXZpY2VfaWQ6IHVhRGV0YWlscy5kZXZpY2VNb2RlbCxcbiAgICAgICAgICBkZXZpY2VfYnJhbmQ6IHVhRGV0YWlscy5kZXZpY2VCcmFuZCxcbiAgICAgICAgICBkZXZpY2VfbWFudWZhY3R1cmVyOiB1YURldGFpbHMuZGV2aWNlTWFudWZhY3R1cmVyLFxuICAgICAgICAgIGRldmljZV9tb2RlbDogdWFEZXRhaWxzLmRldmljZU1vZGVsLFxuICAgICAgICAgIHVzZXJfcHJvcGVydGllczoge1xuICAgICAgICAgICAgY2RwX3VzZXJfaWQ6IG1lcmNoYW50VXNlcklkLFxuICAgICAgICAgICAgYnJvd3NlcjogdWFEZXRhaWxzLmJyb3dzZXIsXG4gICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IHVhRGV0YWlscy5icm93c2VyVmVyc2lvbixcbiAgICAgICAgICAgIHVzZXJfYWdlbnQ6IHVhRGV0YWlscy51c2VyQWdlbnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gaWRlbnRpZnkgdXNlcicsIGVycik7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIG1hcENvbnRleHRTb3VyY2VUb1YxT3JnQ29uZmlnR2V0U291cmNlID0gKFxuICAgIHNvdXJjZTogQ29udGV4dFNvdXJjZUVudW0gfCB1bmRlZmluZWQsXG4gICk6IFYxT3JnQ29uZmlnR2V0U291cmNlRW51bSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAoc291cmNlKSB7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLkZvcms6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uRm9yaztcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uUGxheWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bS5QbGF5Z3JvdW5kO1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5BcHA6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uQXBwO1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5UZXN0OlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLlRlc3Q7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLkV2YWw6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uVGVzdDtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgaWYgbmV3IHZhbHVlcyBhcmUgYWRkZWQgdG8gQ29udGV4dFNvdXJjZUVudW0sIHdlIGNhdGNoIGl0XG4gICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjazogbmV2ZXIgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXRPcmdDb25maWcgPSBhc3luYyAodXNlcl9pZDogc3RyaW5nKTogUHJvbWlzZTxPcmdDb25maWcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gICAgICBjb25zdCByZWFjdEFwcE5hbWUgPSBhdG9tU3RvcmUuZ2V0KHJlYWN0QXBwTmFtZUF0b20pO1xuICAgICAgY29uc3QgY29udGV4dFNvdXJjZSA9IGF0b21TdG9yZS5nZXQoY29udGV4dFNvdXJjZUF0b20pO1xuICAgICAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTsgLy8gR2V0IGZlYXR1cmVGbGFnU2VydmljZVxuICAgICAgY29uc3QgcmVxdWVzdDogVjFPcmdDb25maWdHZXRSZXF1ZXN0ID0ge1xuICAgICAgICBuYW1lc3BhY2U6IHJlYWN0QXBwTmFtZSxcbiAgICAgICAgdXNlcl9pZCxcbiAgICAgICAgc291cmNlOiB0aGlzLm1hcENvbnRleHRTb3VyY2VUb1YxT3JnQ29uZmlnR2V0U291cmNlKGNvbnRleHRTb3VyY2UpLFxuICAgICAgICBpbmNsdWRlX2V4cGVyaW1lbnRzOiBPYmplY3QudmFsdWVzKFByb2R1Y3RFeHBlcmltZW50KSxcbiAgICAgICAgaW5jbHVkZV9mZWF0dXJlX2dhdGVzOiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge30sXG4gICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgICAgICAgLm1hcCgoW2ZlYXR1cmVHYXRlTmFtZV0pID0+IGZlYXR1cmVHYXRlTmFtZSksIC8vIFVzZSBmZWF0dXJlRmxhZ1NlcnZpY2VcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuZGVmYXVsdEFwaS52MU9yZ0NvbmZpZ0dldChyZXF1ZXN0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cyhyZXNwb25zZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoYEZhaWxlZCB0byBnZXQgb3JnIGNvbmZpZ2AsIGVyciwgeyBlcnIgfSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgYWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uID0gYXN5bmMgKFxuICAgIHNwaWZmeVVzZXJJZDogc3RyaW5nLFxuICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgY3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXI6IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICApID0+IHtcbiAgICBMb2dnZXIubG9nSW5mbyhcbiAgICAgIGBhZGROb3RlVG9MYXRlc3RDb252ZXJzYXRpb24gLSB1c2VyX2lkPSR7c3BpZmZ5VXNlcklkfSBlbWFpbD0ke2VtYWlsfSBjdXN0b21lcl9zZXJ2aWNlX3Byb3ZpZGVyPSR7Y3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXJ9YCxcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmN1c3RvbWVyU2VydmljZUFwaS52MUN1c3RzZXJ2aWNlQWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uUG9zdChcbiAgICAgICAge1xuICAgICAgICAgIEFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvblJlcXVlc3Q6IHtcbiAgICAgICAgICAgIHNwaWZmeV91c2VyX2lkOiBzcGlmZnlVc2VySWQsXG4gICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgIGN1c3RvbWVyX3NlcnZpY2VfcHJvdmlkZXI6IGN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gYWRkIG5vdGUgdG8gbGF0ZXN0IGNvbnZlcnNhdGlvbicsIHsgZXJyIH0pO1xuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0Q3VzdG9tZXJTZXJ2aWNlQXBpID0gKCkgPT4gQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5jdXN0b21lclNlcnZp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
@@ -0,0 +1,14 @@
1
+ //#region src/application/models/api/widgetText.d.ts
2
+ type WidgetString = {
3
+ id: string;
4
+ value: string;
5
+ };
6
+ type WidgetText = {
7
+ responseId: string;
8
+ requestId: string;
9
+ language: string;
10
+ values: Record<string, WidgetString[]>;
11
+ };
12
+ //#endregion
13
+ export { WidgetString, WidgetText };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0VGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS93aWRnZXRUZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgV2lkZ2V0U3RyaW5nID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBXaWRnZXRUZXh0ID0ge1xuICAgIHJlc3BvbnNlSWQ6IHN0cmluZztcbiAgICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIHZhbHVlczogUmVjb3JkPHN0cmluZywgV2lkZ2V0U3RyaW5nW10+O1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVcsZUFBZSxDQUFDLElBQUE7QUFDM0IsSUFBVyxhQUFHO0NBQUE7T0FBQTtPQUFBO0NBQUEifQ==
@@ -0,0 +1,14 @@
1
+ //#region src/application/models/api/widgetText.d.ts
2
+ type WidgetString = {
3
+ id: string;
4
+ value: string;
5
+ };
6
+ type WidgetText = {
7
+ responseId: string;
8
+ requestId: string;
9
+ language: string;
10
+ values: Record<string, WidgetString[]>;
11
+ };
12
+ //#endregion
13
+ export { WidgetString, WidgetText };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0VGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3dpZGdldFRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBXaWRnZXRTdHJpbmcgPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFdpZGdldFRleHQgPSB7XG4gICAgcmVzcG9uc2VJZDogc3RyaW5nO1xuICAgIHJlcXVlc3RJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRTdHJpbmdbXT47XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBVyxlQUFlLENBQUMsSUFBQTtBQUMzQixJQUFXLGFBQUc7Q0FBQTtPQUFBO09BQUE7Q0FBQSJ9
@@ -0,0 +1,16 @@
1
+ import { WidgetTypeV3 } from "../../../contexts/typesV3.cjs";
2
+ import { Context } from "./context.cjs";
3
+
4
+ //#region src/application/models/api/widgetTextRequest.d.ts
5
+ type WidgetTextRequest = {
6
+ requestId: string;
7
+ widgetType: WidgetTypeV3;
8
+ context: Context;
9
+ featureFlags: Record<string, boolean>;
10
+ language: string;
11
+ overrideConfigVersion?: string;
12
+ url: string;
13
+ };
14
+ //#endregion
15
+ export { WidgetTextRequest };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0VGV4dFJlcXVlc3QuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvd2lkZ2V0VGV4dFJlcXVlc3QuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmV4cG9ydCB0eXBlIFdpZGdldFRleHRSZXF1ZXN0ID0ge1xuICAgIHJlcXVlc3RJZDogc3RyaW5nO1xuICAgIHdpZGdldFR5cGU6IFdpZGdldFR5cGVWMztcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIGZlYXR1cmVGbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgICBvdmVycmlkZUNvbmZpZ1ZlcnNpb24/OiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVyxvQkFBb0I7Q0FBQztPQUFBO09BQUE7T0FBQTtDQUFBIn0=
@@ -0,0 +1,16 @@
1
+ import { WidgetTypeV3 } from "../../../contexts/typesV3.js";
2
+ import { Context } from "./context.js";
3
+
4
+ //#region src/application/models/api/widgetTextRequest.d.ts
5
+ type WidgetTextRequest = {
6
+ requestId: string;
7
+ widgetType: WidgetTypeV3;
8
+ context: Context;
9
+ featureFlags: Record<string, boolean>;
10
+ language: string;
11
+ overrideConfigVersion?: string;
12
+ url: string;
13
+ };
14
+ //#endregion
15
+ export { WidgetTextRequest };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0VGV4dFJlcXVlc3QuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS93aWRnZXRUZXh0UmVxdWVzdC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdpZGdldFR5cGVWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuZXhwb3J0IHR5cGUgV2lkZ2V0VGV4dFJlcXVlc3QgPSB7XG4gICAgcmVxdWVzdElkOiBzdHJpbmc7XG4gICAgd2lkZ2V0VHlwZTogV2lkZ2V0VHlwZVYzO1xuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgZmVhdHVyZUZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIG92ZXJyaWRlQ29uZmlnVmVyc2lvbj86IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLG9CQUFvQjtDQUFDO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
@@ -17,12 +17,15 @@ let ChatElementDisplayLocationV3 = /* @__PURE__ */ function(ChatElementDisplayLo
17
17
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_OVERLAY"] = "floating_chat_overlay";
18
18
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_CLOSE_BUTTON"] = "floating_chat_close_button";
19
19
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_PROMPT_BUTTON"] = "floating_chat_prompt_button";
20
+ ChatElementDisplayLocationV3$1["FLOATING_CHAT_TEXT_INPUT"] = "floating_chat_text_input";
20
21
  ChatElementDisplayLocationV3$1["PRODUCT_CARD_PROMPT_BUTTON"] = "product_card_prompt_button";
21
22
  ChatElementDisplayLocationV3$1["PRODUCT_CARD_TEXT_FIELD"] = "product_card_text_field";
22
23
  ChatElementDisplayLocationV3$1["WINDOW_API_CALL"] = "window_api_call";
24
+ ChatElementDisplayLocationV3$1["REFERRER_BASED_PROMPT"] = "referrer_based_prompt";
25
+ ChatElementDisplayLocationV3$1["AUTOMATIC_PROMPT"] = "automatic_popup";
23
26
  return ChatElementDisplayLocationV3$1;
24
27
  }({});
25
28
 
26
29
  //#endregion
27
30
  exports.ChatElementDisplayLocationV3 = ChatElementDisplayLocationV3;
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENoYXQgZWxlbWVudCBkaXNwbGF5IGxvY2F0aW9uIGVudW1cbmV4cG9ydCBlbnVtIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMge1xuICBQUk9NUFRfQ0FST1VTRUwgPSAncHJvbXB0X2Nhcm91c2VsJyxcbiAgVElUTEVEX1BST01QVF9DQVJPVVNFTCA9ICd0aXRsZWRfcHJvbXB0X2Nhcm91c2VsJyxcbiAgVFlQSU5HX0FOSU1BVElPTiA9ICd0eXBpbmdfYW5pbWF0aW9uJyxcbiAgU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OID0gJ3NvY2lhbF9wcm9vZl9wcmltYXJ5X2J1dHRvbicsXG4gIFNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OID0gJ3NvY2lhbF9wcm9vZl9zZWNvbmRhcnlfYnV0dG9uJyxcbiAgU09DSUFMX1BST09GX1RFWFRfRklFTEQgPSAnc29jaWFsX3Byb29mX3RleHRfZmllbGQnLFxuICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9QUk9NUFRfQlVUVE9OID0gJ2NoYXRfcHJldmlld19jb21wYXJpc29uX3Byb21wdF9idXR0b24nLFxuICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEID0gJ2NoYXRfcHJldmlld19jb21wYXJpc29uX3RleHRfZmllbGQnLFxuICBDSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTiA9ICdjaGF0X3ByZXZpZXdfcHJvbXB0X2J1dHRvbicsXG4gIENIQVRfUFJFVklFV19URVhUX0ZJRUxEID0gJ2NoYXRfcHJldmlld190ZXh0X2ZpZWxkJyxcbiAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1BST01QVF9CVVRUT04gPSAncHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3Byb21wdF9idXR0b24nLFxuICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfVEVYVF9GSUVMRCA9ICdwcm9tcHRfYnV0dG9uX2Nhcm91c2VsX3dpdGhfaW1hZ2VfdGV4dF9maWVsZCcsXG4gIEZMT0FUSU5HX0JVVFRPTiA9ICdmbG9hdGluZ19idXR0b24nLFxuICBGTE9BVElOR19DSEFUX09WRVJMQVkgPSAnZmxvYXRpbmdfY2hhdF9vdmVybGF5JyxcbiAgRkxPQVRJTkdfQ0hBVF9DTE9TRV9CVVRUT04gPSAnZmxvYXRpbmdfY2hhdF9jbG9zZV9idXR0b24nLFxuICBGTE9BVElOR19DSEFUX1BST01QVF9CVVRUT04gPSAnZmxvYXRpbmdfY2hhdF9wcm9tcHRfYnV0dG9uJyxcbiAgUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT04gPSAncHJvZHVjdF9jYXJkX3Byb21wdF9idXR0b24nLFxuICBQUk9EVUNUX0NBUkRfVEVYVF9GSUVMRCA9ICdwcm9kdWN0X2NhcmRfdGV4dF9maWVsZCcsXG4gIFdJTkRPV19BUElfQ0FMTCA9ICd3aW5kb3dfYXBpX2NhbGwnLFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQVksd0ZBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSJ9
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENoYXQgZWxlbWVudCBkaXNwbGF5IGxvY2F0aW9uIGVudW1cbmV4cG9ydCBlbnVtIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMge1xuICBQUk9NUFRfQ0FST1VTRUwgPSAncHJvbXB0X2Nhcm91c2VsJyxcbiAgVElUTEVEX1BST01QVF9DQVJPVVNFTCA9ICd0aXRsZWRfcHJvbXB0X2Nhcm91c2VsJyxcbiAgVFlQSU5HX0FOSU1BVElPTiA9ICd0eXBpbmdfYW5pbWF0aW9uJyxcbiAgU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OID0gJ3NvY2lhbF9wcm9vZl9wcmltYXJ5X2J1dHRvbicsXG4gIFNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OID0gJ3NvY2lhbF9wcm9vZl9zZWNvbmRhcnlfYnV0dG9uJyxcbiAgU09DSUFMX1BST09GX1RFWFRfRklFTEQgPSAnc29jaWFsX3Byb29mX3RleHRfZmllbGQnLFxuICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9QUk9NUFRfQlVUVE9OID0gJ2NoYXRfcHJldmlld19jb21wYXJpc29uX3Byb21wdF9idXR0b24nLFxuICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEID0gJ2NoYXRfcHJldmlld19jb21wYXJpc29uX3RleHRfZmllbGQnLFxuICBDSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTiA9ICdjaGF0X3ByZXZpZXdfcHJvbXB0X2J1dHRvbicsXG4gIENIQVRfUFJFVklFV19URVhUX0ZJRUxEID0gJ2NoYXRfcHJldmlld190ZXh0X2ZpZWxkJyxcbiAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1BST01QVF9CVVRUT04gPSAncHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3Byb21wdF9idXR0b24nLFxuICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfVEVYVF9GSUVMRCA9ICdwcm9tcHRfYnV0dG9uX2Nhcm91c2VsX3dpdGhfaW1hZ2VfdGV4dF9maWVsZCcsXG4gIEZMT0FUSU5HX0JVVFRPTiA9ICdmbG9hdGluZ19idXR0b24nLFxuICBGTE9BVElOR19DSEFUX09WRVJMQVkgPSAnZmxvYXRpbmdfY2hhdF9vdmVybGF5JyxcbiAgRkxPQVRJTkdfQ0hBVF9DTE9TRV9CVVRUT04gPSAnZmxvYXRpbmdfY2hhdF9jbG9zZV9idXR0b24nLFxuICBGTE9BVElOR19DSEFUX1BST01QVF9CVVRUT04gPSAnZmxvYXRpbmdfY2hhdF9wcm9tcHRfYnV0dG9uJyxcbiAgRkxPQVRJTkdfQ0hBVF9URVhUX0lOUFVUID0gJ2Zsb2F0aW5nX2NoYXRfdGV4dF9pbnB1dCcsXG4gIFBST0RVQ1RfQ0FSRF9QUk9NUFRfQlVUVE9OID0gJ3Byb2R1Y3RfY2FyZF9wcm9tcHRfYnV0dG9uJyxcbiAgUFJPRFVDVF9DQVJEX1RFWFRfRklFTEQgPSAncHJvZHVjdF9jYXJkX3RleHRfZmllbGQnLFxuICBXSU5ET1dfQVBJX0NBTEwgPSAnd2luZG93X2FwaV9jYWxsJyxcbiAgUkVGRVJSRVJfQkFTRURfUFJPTVBUID0gJ3JlZmVycmVyX2Jhc2VkX3Byb21wdCcsXG4gIEFVVE9NQVRJQ19QUk9NUFQgPSAnYXV0b21hdGljX3BvcHVwJyxcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFZLHdGQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EifQ==
@@ -16,10 +16,13 @@ declare enum ChatElementDisplayLocationV3 {
16
16
  FLOATING_CHAT_OVERLAY = "floating_chat_overlay",
17
17
  FLOATING_CHAT_CLOSE_BUTTON = "floating_chat_close_button",
18
18
  FLOATING_CHAT_PROMPT_BUTTON = "floating_chat_prompt_button",
19
+ FLOATING_CHAT_TEXT_INPUT = "floating_chat_text_input",
19
20
  PRODUCT_CARD_PROMPT_BUTTON = "product_card_prompt_button",
20
21
  PRODUCT_CARD_TEXT_FIELD = "product_card_text_field",
21
22
  WINDOW_API_CALL = "window_api_call",
23
+ REFERRER_BASED_PROMPT = "referrer_based_prompt",
24
+ AUTOMATIC_PROMPT = "automatic_popup",
22
25
  }
23
26
  //#endregion
24
27
  export { ChatElementDisplayLocationV3 };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSBlbnVtIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMge1xuICAgIFBST01QVF9DQVJPVVNFTCA9IFwicHJvbXB0X2Nhcm91c2VsXCIsXG4gICAgVElUTEVEX1BST01QVF9DQVJPVVNFTCA9IFwidGl0bGVkX3Byb21wdF9jYXJvdXNlbFwiLFxuICAgIFRZUElOR19BTklNQVRJT04gPSBcInR5cGluZ19hbmltYXRpb25cIixcbiAgICBTT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT04gPSBcInNvY2lhbF9wcm9vZl9wcmltYXJ5X2J1dHRvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OID0gXCJzb2NpYWxfcHJvb2Zfc2Vjb25kYXJ5X2J1dHRvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEID0gXCJzb2NpYWxfcHJvb2ZfdGV4dF9maWVsZFwiLFxuICAgIENIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT04gPSBcImNoYXRfcHJldmlld19jb21wYXJpc29uX3Byb21wdF9idXR0b25cIixcbiAgICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEID0gXCJjaGF0X3ByZXZpZXdfY29tcGFyaXNvbl90ZXh0X2ZpZWxkXCIsXG4gICAgQ0hBVF9QUkVWSUVXX1BST01QVF9CVVRUT04gPSBcImNoYXRfcHJldmlld19wcm9tcHRfYnV0dG9uXCIsXG4gICAgQ0hBVF9QUkVWSUVXX1RFWFRfRklFTEQgPSBcImNoYXRfcHJldmlld190ZXh0X2ZpZWxkXCIsXG4gICAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1BST01QVF9CVVRUT04gPSBcInByb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV9wcm9tcHRfYnV0dG9uXCIsXG4gICAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1RFWFRfRklFTEQgPSBcInByb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV90ZXh0X2ZpZWxkXCIsXG4gICAgRkxPQVRJTkdfQlVUVE9OID0gXCJmbG9hdGluZ19idXR0b25cIixcbiAgICBGTE9BVElOR19DSEFUX09WRVJMQVkgPSBcImZsb2F0aW5nX2NoYXRfb3ZlcmxheVwiLFxuICAgIEZMT0FUSU5HX0NIQVRfQ0xPU0VfQlVUVE9OID0gXCJmbG9hdGluZ19jaGF0X2Nsb3NlX2J1dHRvblwiLFxuICAgIEZMT0FUSU5HX0NIQVRfUFJPTVBUX0JVVFRPTiA9IFwiZmxvYXRpbmdfY2hhdF9wcm9tcHRfYnV0dG9uXCIsXG4gICAgUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT04gPSBcInByb2R1Y3RfY2FyZF9wcm9tcHRfYnV0dG9uXCIsXG4gICAgUFJPRFVDVF9DQVJEX1RFWFRfRklFTEQgPSBcInByb2R1Y3RfY2FyZF90ZXh0X2ZpZWxkXCIsXG4gICAgV0lORE9XX0FQSV9DQUxMID0gXCJ3aW5kb3dfYXBpX2NhbGxcIlxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBVywrQkFBK0IsQ0FBQyxJQUFJIn0=
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSBlbnVtIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMge1xuICAgIFBST01QVF9DQVJPVVNFTCA9IFwicHJvbXB0X2Nhcm91c2VsXCIsXG4gICAgVElUTEVEX1BST01QVF9DQVJPVVNFTCA9IFwidGl0bGVkX3Byb21wdF9jYXJvdXNlbFwiLFxuICAgIFRZUElOR19BTklNQVRJT04gPSBcInR5cGluZ19hbmltYXRpb25cIixcbiAgICBTT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT04gPSBcInNvY2lhbF9wcm9vZl9wcmltYXJ5X2J1dHRvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OID0gXCJzb2NpYWxfcHJvb2Zfc2Vjb25kYXJ5X2J1dHRvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEID0gXCJzb2NpYWxfcHJvb2ZfdGV4dF9maWVsZFwiLFxuICAgIENIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT04gPSBcImNoYXRfcHJldmlld19jb21wYXJpc29uX3Byb21wdF9idXR0b25cIixcbiAgICBDSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEID0gXCJjaGF0X3ByZXZpZXdfY29tcGFyaXNvbl90ZXh0X2ZpZWxkXCIsXG4gICAgQ0hBVF9QUkVWSUVXX1BST01QVF9CVVRUT04gPSBcImNoYXRfcHJldmlld19wcm9tcHRfYnV0dG9uXCIsXG4gICAgQ0hBVF9QUkVWSUVXX1RFWFRfRklFTEQgPSBcImNoYXRfcHJldmlld190ZXh0X2ZpZWxkXCIsXG4gICAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1BST01QVF9CVVRUT04gPSBcInByb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV9wcm9tcHRfYnV0dG9uXCIsXG4gICAgUFJPTVBUX0JVVFRPTl9DQVJPVVNFTF9XSVRIX0lNQUdFX1RFWFRfRklFTEQgPSBcInByb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV90ZXh0X2ZpZWxkXCIsXG4gICAgRkxPQVRJTkdfQlVUVE9OID0gXCJmbG9hdGluZ19idXR0b25cIixcbiAgICBGTE9BVElOR19DSEFUX09WRVJMQVkgPSBcImZsb2F0aW5nX2NoYXRfb3ZlcmxheVwiLFxuICAgIEZMT0FUSU5HX0NIQVRfQ0xPU0VfQlVUVE9OID0gXCJmbG9hdGluZ19jaGF0X2Nsb3NlX2J1dHRvblwiLFxuICAgIEZMT0FUSU5HX0NIQVRfUFJPTVBUX0JVVFRPTiA9IFwiZmxvYXRpbmdfY2hhdF9wcm9tcHRfYnV0dG9uXCIsXG4gICAgRkxPQVRJTkdfQ0hBVF9URVhUX0lOUFVUID0gXCJmbG9hdGluZ19jaGF0X3RleHRfaW5wdXRcIixcbiAgICBQUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTiA9IFwicHJvZHVjdF9jYXJkX3Byb21wdF9idXR0b25cIixcbiAgICBQUk9EVUNUX0NBUkRfVEVYVF9GSUVMRCA9IFwicHJvZHVjdF9jYXJkX3RleHRfZmllbGRcIixcbiAgICBXSU5ET1dfQVBJX0NBTEwgPSBcIndpbmRvd19hcGlfY2FsbFwiLFxuICAgIFJFRkVSUkVSX0JBU0VEX1BST01QVCA9IFwicmVmZXJyZXJfYmFzZWRfcHJvbXB0XCIsXG4gICAgQVVUT01BVElDX1BST01QVCA9IFwiYXV0b21hdGljX3BvcHVwXCJcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVcsK0JBQStCLENBQUMsSUFBSSJ9
@@ -16,10 +16,13 @@ declare enum ChatElementDisplayLocationV3 {
16
16
  FLOATING_CHAT_OVERLAY = "floating_chat_overlay",
17
17
  FLOATING_CHAT_CLOSE_BUTTON = "floating_chat_close_button",
18
18
  FLOATING_CHAT_PROMPT_BUTTON = "floating_chat_prompt_button",
19
+ FLOATING_CHAT_TEXT_INPUT = "floating_chat_text_input",
19
20
  PRODUCT_CARD_PROMPT_BUTTON = "product_card_prompt_button",
20
21
  PRODUCT_CARD_TEXT_FIELD = "product_card_text_field",
21
22
  WINDOW_API_CALL = "window_api_call",
23
+ REFERRER_BASED_PROMPT = "referrer_based_prompt",
24
+ AUTOMATIC_PROMPT = "automatic_popup",
22
25
  }
23
26
  //#endregion
24
27
  export { ChatElementDisplayLocationV3 };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIGVudW0gQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB7XG4gICAgUFJPTVBUX0NBUk9VU0VMID0gXCJwcm9tcHRfY2Fyb3VzZWxcIixcbiAgICBUSVRMRURfUFJPTVBUX0NBUk9VU0VMID0gXCJ0aXRsZWRfcHJvbXB0X2Nhcm91c2VsXCIsXG4gICAgVFlQSU5HX0FOSU1BVElPTiA9IFwidHlwaW5nX2FuaW1hdGlvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9QUklNQVJZX0JVVFRPTiA9IFwic29jaWFsX3Byb29mX3ByaW1hcnlfYnV0dG9uXCIsXG4gICAgU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT04gPSBcInNvY2lhbF9wcm9vZl9zZWNvbmRhcnlfYnV0dG9uXCIsXG4gICAgU09DSUFMX1BST09GX1RFWFRfRklFTEQgPSBcInNvY2lhbF9wcm9vZl90ZXh0X2ZpZWxkXCIsXG4gICAgQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fUFJPTVBUX0JVVFRPTiA9IFwiY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fcHJvbXB0X2J1dHRvblwiLFxuICAgIENIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTEQgPSBcImNoYXRfcHJldmlld19jb21wYXJpc29uX3RleHRfZmllbGRcIixcbiAgICBDSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTiA9IFwiY2hhdF9wcmV2aWV3X3Byb21wdF9idXR0b25cIixcbiAgICBDSEFUX1BSRVZJRVdfVEVYVF9GSUVMRCA9IFwiY2hhdF9wcmV2aWV3X3RleHRfZmllbGRcIixcbiAgICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfUFJPTVBUX0JVVFRPTiA9IFwicHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3Byb21wdF9idXR0b25cIixcbiAgICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfVEVYVF9GSUVMRCA9IFwicHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3RleHRfZmllbGRcIixcbiAgICBGTE9BVElOR19CVVRUT04gPSBcImZsb2F0aW5nX2J1dHRvblwiLFxuICAgIEZMT0FUSU5HX0NIQVRfT1ZFUkxBWSA9IFwiZmxvYXRpbmdfY2hhdF9vdmVybGF5XCIsXG4gICAgRkxPQVRJTkdfQ0hBVF9DTE9TRV9CVVRUT04gPSBcImZsb2F0aW5nX2NoYXRfY2xvc2VfYnV0dG9uXCIsXG4gICAgRkxPQVRJTkdfQ0hBVF9QUk9NUFRfQlVUVE9OID0gXCJmbG9hdGluZ19jaGF0X3Byb21wdF9idXR0b25cIixcbiAgICBQUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTiA9IFwicHJvZHVjdF9jYXJkX3Byb21wdF9idXR0b25cIixcbiAgICBQUk9EVUNUX0NBUkRfVEVYVF9GSUVMRCA9IFwicHJvZHVjdF9jYXJkX3RleHRfZmllbGRcIixcbiAgICBXSU5ET1dfQVBJX0NBTEwgPSBcIndpbmRvd19hcGlfY2FsbFwiXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFXLCtCQUErQixDQUFDLElBQUkifQ==
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIGVudW0gQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB7XG4gICAgUFJPTVBUX0NBUk9VU0VMID0gXCJwcm9tcHRfY2Fyb3VzZWxcIixcbiAgICBUSVRMRURfUFJPTVBUX0NBUk9VU0VMID0gXCJ0aXRsZWRfcHJvbXB0X2Nhcm91c2VsXCIsXG4gICAgVFlQSU5HX0FOSU1BVElPTiA9IFwidHlwaW5nX2FuaW1hdGlvblwiLFxuICAgIFNPQ0lBTF9QUk9PRl9QUklNQVJZX0JVVFRPTiA9IFwic29jaWFsX3Byb29mX3ByaW1hcnlfYnV0dG9uXCIsXG4gICAgU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT04gPSBcInNvY2lhbF9wcm9vZl9zZWNvbmRhcnlfYnV0dG9uXCIsXG4gICAgU09DSUFMX1BST09GX1RFWFRfRklFTEQgPSBcInNvY2lhbF9wcm9vZl90ZXh0X2ZpZWxkXCIsXG4gICAgQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fUFJPTVBUX0JVVFRPTiA9IFwiY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fcHJvbXB0X2J1dHRvblwiLFxuICAgIENIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTEQgPSBcImNoYXRfcHJldmlld19jb21wYXJpc29uX3RleHRfZmllbGRcIixcbiAgICBDSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTiA9IFwiY2hhdF9wcmV2aWV3X3Byb21wdF9idXR0b25cIixcbiAgICBDSEFUX1BSRVZJRVdfVEVYVF9GSUVMRCA9IFwiY2hhdF9wcmV2aWV3X3RleHRfZmllbGRcIixcbiAgICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfUFJPTVBUX0JVVFRPTiA9IFwicHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3Byb21wdF9idXR0b25cIixcbiAgICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfVEVYVF9GSUVMRCA9IFwicHJvbXB0X2J1dHRvbl9jYXJvdXNlbF93aXRoX2ltYWdlX3RleHRfZmllbGRcIixcbiAgICBGTE9BVElOR19CVVRUT04gPSBcImZsb2F0aW5nX2J1dHRvblwiLFxuICAgIEZMT0FUSU5HX0NIQVRfT1ZFUkxBWSA9IFwiZmxvYXRpbmdfY2hhdF9vdmVybGF5XCIsXG4gICAgRkxPQVRJTkdfQ0hBVF9DTE9TRV9CVVRUT04gPSBcImZsb2F0aW5nX2NoYXRfY2xvc2VfYnV0dG9uXCIsXG4gICAgRkxPQVRJTkdfQ0hBVF9QUk9NUFRfQlVUVE9OID0gXCJmbG9hdGluZ19jaGF0X3Byb21wdF9idXR0b25cIixcbiAgICBGTE9BVElOR19DSEFUX1RFWFRfSU5QVVQgPSBcImZsb2F0aW5nX2NoYXRfdGV4dF9pbnB1dFwiLFxuICAgIFBST0RVQ1RfQ0FSRF9QUk9NUFRfQlVUVE9OID0gXCJwcm9kdWN0X2NhcmRfcHJvbXB0X2J1dHRvblwiLFxuICAgIFBST0RVQ1RfQ0FSRF9URVhUX0ZJRUxEID0gXCJwcm9kdWN0X2NhcmRfdGV4dF9maWVsZFwiLFxuICAgIFdJTkRPV19BUElfQ0FMTCA9IFwid2luZG93X2FwaV9jYWxsXCIsXG4gICAgUkVGRVJSRVJfQkFTRURfUFJPTVBUID0gXCJyZWZlcnJlcl9iYXNlZF9wcm9tcHRcIixcbiAgICBBVVRPTUFUSUNfUFJPTVBUID0gXCJhdXRvbWF0aWNfcG9wdXBcIlxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBVywrQkFBK0IsQ0FBQyxJQUFJIn0=
@@ -16,12 +16,15 @@ let ChatElementDisplayLocationV3 = /* @__PURE__ */ function(ChatElementDisplayLo
16
16
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_OVERLAY"] = "floating_chat_overlay";
17
17
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_CLOSE_BUTTON"] = "floating_chat_close_button";
18
18
  ChatElementDisplayLocationV3$1["FLOATING_CHAT_PROMPT_BUTTON"] = "floating_chat_prompt_button";
19
+ ChatElementDisplayLocationV3$1["FLOATING_CHAT_TEXT_INPUT"] = "floating_chat_text_input";
19
20
  ChatElementDisplayLocationV3$1["PRODUCT_CARD_PROMPT_BUTTON"] = "product_card_prompt_button";
20
21
  ChatElementDisplayLocationV3$1["PRODUCT_CARD_TEXT_FIELD"] = "product_card_text_field";
21
22
  ChatElementDisplayLocationV3$1["WINDOW_API_CALL"] = "window_api_call";
23
+ ChatElementDisplayLocationV3$1["REFERRER_BASED_PROMPT"] = "referrer_based_prompt";
24
+ ChatElementDisplayLocationV3$1["AUTOMATIC_PROMPT"] = "automatic_popup";
22
25
  return ChatElementDisplayLocationV3$1;
23
26
  }({});
24
27
 
25
28
  //#endregion
26
29
  export { ChatElementDisplayLocationV3 };
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2hhdCBlbGVtZW50IGRpc3BsYXkgbG9jYXRpb24gZW51bVxuZXhwb3J0IGVudW0gQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB7XG4gIFBST01QVF9DQVJPVVNFTCA9ICdwcm9tcHRfY2Fyb3VzZWwnLFxuICBUSVRMRURfUFJPTVBUX0NBUk9VU0VMID0gJ3RpdGxlZF9wcm9tcHRfY2Fyb3VzZWwnLFxuICBUWVBJTkdfQU5JTUFUSU9OID0gJ3R5cGluZ19hbmltYXRpb24nLFxuICBTT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT04gPSAnc29jaWFsX3Byb29mX3ByaW1hcnlfYnV0dG9uJyxcbiAgU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT04gPSAnc29jaWFsX3Byb29mX3NlY29uZGFyeV9idXR0b24nLFxuICBTT0NJQUxfUFJPT0ZfVEVYVF9GSUVMRCA9ICdzb2NpYWxfcHJvb2ZfdGV4dF9maWVsZCcsXG4gIENIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT04gPSAnY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fcHJvbXB0X2J1dHRvbicsXG4gIENIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTEQgPSAnY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fdGV4dF9maWVsZCcsXG4gIENIQVRfUFJFVklFV19QUk9NUFRfQlVUVE9OID0gJ2NoYXRfcHJldmlld19wcm9tcHRfYnV0dG9uJyxcbiAgQ0hBVF9QUkVWSUVXX1RFWFRfRklFTEQgPSAnY2hhdF9wcmV2aWV3X3RleHRfZmllbGQnLFxuICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfUFJPTVBUX0JVVFRPTiA9ICdwcm9tcHRfYnV0dG9uX2Nhcm91c2VsX3dpdGhfaW1hZ2VfcHJvbXB0X2J1dHRvbicsXG4gIFBST01QVF9CVVRUT05fQ0FST1VTRUxfV0lUSF9JTUFHRV9URVhUX0ZJRUxEID0gJ3Byb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV90ZXh0X2ZpZWxkJyxcbiAgRkxPQVRJTkdfQlVUVE9OID0gJ2Zsb2F0aW5nX2J1dHRvbicsXG4gIEZMT0FUSU5HX0NIQVRfT1ZFUkxBWSA9ICdmbG9hdGluZ19jaGF0X292ZXJsYXknLFxuICBGTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTiA9ICdmbG9hdGluZ19jaGF0X2Nsb3NlX2J1dHRvbicsXG4gIEZMT0FUSU5HX0NIQVRfUFJPTVBUX0JVVFRPTiA9ICdmbG9hdGluZ19jaGF0X3Byb21wdF9idXR0b24nLFxuICBQUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTiA9ICdwcm9kdWN0X2NhcmRfcHJvbXB0X2J1dHRvbicsXG4gIFBST0RVQ1RfQ0FSRF9URVhUX0ZJRUxEID0gJ3Byb2R1Y3RfY2FyZF90ZXh0X2ZpZWxkJyxcbiAgV0lORE9XX0FQSV9DQUxMID0gJ3dpbmRvd19hcGlfY2FsbCcsXG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxJQUFZLHdGQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EifQ==
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2hhdCBlbGVtZW50IGRpc3BsYXkgbG9jYXRpb24gZW51bVxuZXhwb3J0IGVudW0gQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB7XG4gIFBST01QVF9DQVJPVVNFTCA9ICdwcm9tcHRfY2Fyb3VzZWwnLFxuICBUSVRMRURfUFJPTVBUX0NBUk9VU0VMID0gJ3RpdGxlZF9wcm9tcHRfY2Fyb3VzZWwnLFxuICBUWVBJTkdfQU5JTUFUSU9OID0gJ3R5cGluZ19hbmltYXRpb24nLFxuICBTT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT04gPSAnc29jaWFsX3Byb29mX3ByaW1hcnlfYnV0dG9uJyxcbiAgU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT04gPSAnc29jaWFsX3Byb29mX3NlY29uZGFyeV9idXR0b24nLFxuICBTT0NJQUxfUFJPT0ZfVEVYVF9GSUVMRCA9ICdzb2NpYWxfcHJvb2ZfdGV4dF9maWVsZCcsXG4gIENIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT04gPSAnY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fcHJvbXB0X2J1dHRvbicsXG4gIENIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTEQgPSAnY2hhdF9wcmV2aWV3X2NvbXBhcmlzb25fdGV4dF9maWVsZCcsXG4gIENIQVRfUFJFVklFV19QUk9NUFRfQlVUVE9OID0gJ2NoYXRfcHJldmlld19wcm9tcHRfYnV0dG9uJyxcbiAgQ0hBVF9QUkVWSUVXX1RFWFRfRklFTEQgPSAnY2hhdF9wcmV2aWV3X3RleHRfZmllbGQnLFxuICBQUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfUFJPTVBUX0JVVFRPTiA9ICdwcm9tcHRfYnV0dG9uX2Nhcm91c2VsX3dpdGhfaW1hZ2VfcHJvbXB0X2J1dHRvbicsXG4gIFBST01QVF9CVVRUT05fQ0FST1VTRUxfV0lUSF9JTUFHRV9URVhUX0ZJRUxEID0gJ3Byb21wdF9idXR0b25fY2Fyb3VzZWxfd2l0aF9pbWFnZV90ZXh0X2ZpZWxkJyxcbiAgRkxPQVRJTkdfQlVUVE9OID0gJ2Zsb2F0aW5nX2J1dHRvbicsXG4gIEZMT0FUSU5HX0NIQVRfT1ZFUkxBWSA9ICdmbG9hdGluZ19jaGF0X292ZXJsYXknLFxuICBGTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTiA9ICdmbG9hdGluZ19jaGF0X2Nsb3NlX2J1dHRvbicsXG4gIEZMT0FUSU5HX0NIQVRfUFJPTVBUX0JVVFRPTiA9ICdmbG9hdGluZ19jaGF0X3Byb21wdF9idXR0b24nLFxuICBGTE9BVElOR19DSEFUX1RFWFRfSU5QVVQgPSAnZmxvYXRpbmdfY2hhdF90ZXh0X2lucHV0JyxcbiAgUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT04gPSAncHJvZHVjdF9jYXJkX3Byb21wdF9idXR0b24nLFxuICBQUk9EVUNUX0NBUkRfVEVYVF9GSUVMRCA9ICdwcm9kdWN0X2NhcmRfdGV4dF9maWVsZCcsXG4gIFdJTkRPV19BUElfQ0FMTCA9ICd3aW5kb3dfYXBpX2NhbGwnLFxuICBSRUZFUlJFUl9CQVNFRF9QUk9NUFQgPSAncmVmZXJyZXJfYmFzZWRfcHJvbXB0JyxcbiAgQVVUT01BVElDX1BST01QVCA9ICdhdXRvbWF0aWNfcG9wdXAnLFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBWSx3RkFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIn0=
@@ -1,15 +1,15 @@
1
- const require_isApiPDPEventAttributes = require('./isApiPDPEventAttributes.cjs');
2
- const require_isApiQueryTypedEventAttributes = require('./isApiQueryTypedEventAttributes.cjs');
3
- const require_isApiResponse = require('./isApiResponse.cjs');
4
1
  const require_isApiProductResponseAttributes = require('./isApiProductResponseAttributes.cjs');
2
+ const require_isApiResponse = require('./isApiResponse.cjs');
5
3
  const require_isApiReviewRichInformation = require('./isApiReviewRichInformation.cjs');
6
4
  const require_isApiReviewResponseAttributes = require('./isApiReviewResponseAttributes.cjs');
7
- const require_isApiSearchEventAttributes = require('./isApiSearchEventAttributes.cjs');
8
- const require_isApiSuggestion = require('./isApiSuggestion.cjs');
9
- const require_isApiSuggestionClickedEventAttributes = require('./isApiSuggestionClickedEventAttributes.cjs');
10
5
  const require_isApiTextResponseAttributes = require('./isApiTextResponseAttributes.cjs');
11
- const require_isApiUserEvent = require('./isApiUserEvent.cjs');
12
6
  const require_isApiProductSearchAttributes = require('./isApiProductSearchAttributes.cjs');
7
+ const require_isApiSuggestion = require('./isApiSuggestion.cjs');
8
+ const require_isApiUserEvent = require('./isApiUserEvent.cjs');
9
+ const require_isApiPDPEventAttributes = require('./isApiPDPEventAttributes.cjs');
10
+ const require_isApiQueryTypedEventAttributes = require('./isApiQueryTypedEventAttributes.cjs');
11
+ const require_isApiSearchEventAttributes = require('./isApiSearchEventAttributes.cjs');
12
+ const require_isApiSuggestionClickedEventAttributes = require('./isApiSuggestionClickedEventAttributes.cjs');
13
13
 
14
14
  exports.isApiPDPAttributes = require_isApiPDPEventAttributes.isApiPDPAttributes;
15
15
  exports.isApiProductResponseAttributes = require_isApiProductResponseAttributes.isApiProductResponseAttributes;
@@ -1,14 +1,14 @@
1
- import { isApiPDPAttributes } from "./isApiPDPEventAttributes.js";
2
- import { isApiQueryTypedAttributes } from "./isApiQueryTypedEventAttributes.js";
3
- import { isApiResponse } from "./isApiResponse.js";
4
1
  import { isApiProductResponseAttributes } from "./isApiProductResponseAttributes.js";
2
+ import { isApiResponse } from "./isApiResponse.js";
5
3
  import { isApiReviewRichInformation } from "./isApiReviewRichInformation.js";
6
4
  import { isApiReviewResponseAttributes } from "./isApiReviewResponseAttributes.js";
7
- import { isApiSearchAttributes } from "./isApiSearchEventAttributes.js";
8
- import { isSuggestion } from "./isApiSuggestion.js";
9
- import { isApiSuggestionClickedAttributes } from "./isApiSuggestionClickedEventAttributes.js";
10
5
  import { isApiTextResponseAttributes } from "./isApiTextResponseAttributes.js";
11
- import { isApiUserEvent } from "./isApiUserEvent.js";
12
6
  import { isApiProductSearchResponseAttributes } from "./isApiProductSearchAttributes.js";
7
+ import { isSuggestion } from "./isApiSuggestion.js";
8
+ import { isApiUserEvent } from "./isApiUserEvent.js";
9
+ import { isApiPDPAttributes } from "./isApiPDPEventAttributes.js";
10
+ import { isApiQueryTypedAttributes } from "./isApiQueryTypedEventAttributes.js";
11
+ import { isApiSearchAttributes } from "./isApiSearchEventAttributes.js";
12
+ import { isApiSuggestionClickedAttributes } from "./isApiSuggestionClickedEventAttributes.js";
13
13
 
14
14
  export { isApiPDPAttributes, isApiProductResponseAttributes, isApiProductSearchResponseAttributes, isApiQueryTypedAttributes, isApiResponse, isApiReviewResponseAttributes, isApiReviewRichInformation, isApiSearchAttributes, isApiSuggestionClickedAttributes, isApiTextResponseAttributes, isApiUserEvent, isSuggestion };
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.cjs');
2
- const require_application_models_guards_utils = require('../utils.cjs');
3
2
  const require_logger = require('../../../logging/logger.cjs');
3
+ const require_application_models_guards_utils = require('../utils.cjs');
4
4
  let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
5
 
6
6
  //#region src/application/models/guards/api/isApiFormResponse.ts
@@ -1,5 +1,5 @@
1
- import { hasPropertyOfType } from "../utils.js";
2
1
  import logger_default from "../../../logging/logger.js";
2
+ import { hasPropertyOfType } from "../utils.js";
3
3
  import { FormType } from "@spiffy-ai/commerce-api-client";
4
4
 
5
5
  //#region src/application/models/guards/api/isApiFormResponse.ts
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.cjs');
2
- const require_application_models_guards_utils = require('../utils.cjs');
3
2
  const require_logger = require('../../../logging/logger.cjs');
3
+ const require_application_models_guards_utils = require('../utils.cjs');
4
4
  let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
5
 
6
6
  //#region src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts
@@ -1,5 +1,5 @@
1
- import { hasPropertyOfType } from "../utils.js";
2
1
  import logger_default from "../../../logging/logger.js";
2
+ import { hasPropertyOfType } from "../utils.js";
3
3
  import { FormType } from "@spiffy-ai/commerce-api-client";
4
4
 
5
5
  //#region src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts
@@ -1,5 +1,5 @@
1
- const require_application_models_guards_utils = require('../utils.cjs');
2
1
  const require_logger = require('../../../logging/logger.cjs');
2
+ const require_application_models_guards_utils = require('../utils.cjs');
3
3
 
4
4
  //#region src/application/models/guards/api/isApiOrderResponseAttributes.ts
5
5
  const isApiOrderItemInfo = (data) => {
@@ -1,5 +1,5 @@
1
- import { hasPropertyOfType } from "../utils.js";
2
1
  import logger_default from "../../../logging/logger.js";
2
+ import { hasPropertyOfType } from "../utils.js";
3
3
 
4
4
  //#region src/application/models/guards/api/isApiOrderResponseAttributes.ts
5
5
  const isApiOrderItemInfo = (data) => {
@@ -1,5 +1,5 @@
1
- const require_application_models_guards_utils = require('../utils.cjs');
2
1
  const require_logger = require('../../../logging/logger.cjs');
2
+ const require_application_models_guards_utils = require('../utils.cjs');
3
3
 
4
4
  //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
5
5
  const isApiProductResponseAttributes = (attributes) => {
@@ -1,5 +1,5 @@
1
- import { hasPropertyOfType } from "../utils.js";
2
1
  import logger_default from "../../../logging/logger.js";
2
+ import { hasPropertyOfType } from "../utils.js";
3
3
 
4
4
  //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
5
5
  const isApiProductResponseAttributes = (attributes) => {
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.cjs');
2
- const require_application_models_guards_utils = require('../utils.cjs');
3
2
  const require_logger = require('../../../logging/logger.cjs');
3
+ const require_application_models_guards_utils = require('../utils.cjs');
4
4
  let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
5
 
6
6
  //#region src/application/models/guards/api/isApiResponse.ts
@@ -1,5 +1,5 @@
1
- import { hasPropertyOfType } from "../utils.js";
2
1
  import logger_default from "../../../logging/logger.js";
2
+ import { hasPropertyOfType } from "../utils.js";
3
3
  import { ResponseCategory } from "@spiffy-ai/commerce-api-client";
4
4
 
5
5
  //#region src/application/models/guards/api/isApiResponse.ts