@envive-ai/react-hooks 0.3.56 → 0.3.58

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 (95) hide show
  1. package/dist/application/commerce-api.cjs +11 -12
  2. package/dist/application/commerce-api.js +11 -12
  3. package/dist/application/logging/index.cjs +13 -0
  4. package/dist/application/logging/index.d.cts +3 -0
  5. package/dist/application/logging/index.d.ts +3 -0
  6. package/dist/application/logging/index.js +4 -0
  7. package/dist/application/logging/logLevel.cjs +123 -0
  8. package/dist/application/logging/logLevel.d.cts +47 -0
  9. package/dist/application/logging/logLevel.d.ts +47 -0
  10. package/dist/application/logging/logLevel.js +115 -0
  11. package/dist/application/logging/logger.cjs +6 -1
  12. package/dist/application/logging/logger.d.cts +13 -0
  13. package/dist/application/logging/logger.d.ts +13 -0
  14. package/dist/application/logging/logger.js +7 -1
  15. package/dist/atoms/app/index.d.cts +7 -7
  16. package/dist/atoms/app/index.d.ts +6 -6
  17. package/dist/atoms/app/variant.d.ts +6 -6
  18. package/dist/atoms/chat/chatState.d.cts +18 -18
  19. package/dist/atoms/chat/chatState.d.ts +19 -19
  20. package/dist/atoms/chat/form.d.cts +2 -2
  21. package/dist/atoms/chat/form.d.ts +2 -2
  22. package/dist/atoms/chat/index.d.ts +2 -2
  23. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  24. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  25. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  26. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  27. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  28. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  29. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  30. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  31. package/dist/atoms/chat/replies.d.cts +1 -1
  32. package/dist/atoms/chat/replies.d.ts +3 -3
  33. package/dist/atoms/chat/suggestions.d.cts +2 -2
  34. package/dist/atoms/chat/suggestions.d.ts +2 -2
  35. package/dist/atoms/envive/enviveConfig.d.ts +14 -14
  36. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  37. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  38. package/dist/atoms/org/customerService.d.cts +6 -6
  39. package/dist/atoms/org/customerService.d.ts +6 -6
  40. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  41. package/dist/atoms/org/graphqlConfig.d.ts +5 -5
  42. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  43. package/dist/atoms/org/newOrgConfigAtom.d.ts +3 -3
  44. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  45. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  46. package/dist/atoms/search/chatSearch.d.cts +17 -17
  47. package/dist/atoms/search/chatSearch.d.ts +17 -17
  48. package/dist/atoms/search/searchAPI.d.cts +13 -13
  49. package/dist/atoms/search/searchAPI.d.ts +13 -13
  50. package/dist/atoms/search/types.d.cts +1 -1
  51. package/dist/atoms/search/types.d.ts +1 -1
  52. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  53. package/dist/contexts/salesAgentContext/salesAgentService.cjs +2 -2
  54. package/dist/contexts/salesAgentContext/salesAgentService.js +2 -2
  55. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  56. package/dist/contexts/types.d.cts +1 -1
  57. package/dist/contexts/types.d.ts +1 -1
  58. package/dist/contexts/typesV3.d.cts +1 -1
  59. package/dist/contexts/typesV3.d.ts +1 -1
  60. package/dist/hooks/ChatToggle/useChatToggle.cjs +10 -8
  61. package/dist/hooks/ChatToggle/useChatToggle.d.cts +4 -3
  62. package/dist/hooks/ChatToggle/useChatToggle.d.ts +4 -3
  63. package/dist/hooks/ChatToggle/useChatToggle.js +11 -9
  64. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  65. package/dist/hooks/Intersection/useIntersection.cjs +7 -5
  66. package/dist/hooks/Intersection/useIntersection.js +7 -5
  67. package/dist/hooks/Search/useSearchInput.cjs +1 -1
  68. package/dist/hooks/Search/useSearchInput.js +1 -1
  69. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +8 -6
  70. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +8 -6
  71. package/dist/hooks/WidgetInteraction/types.cjs +40 -1
  72. package/dist/hooks/WidgetInteraction/types.d.cts +16 -2
  73. package/dist/hooks/WidgetInteraction/types.d.ts +16 -2
  74. package/dist/hooks/WidgetInteraction/types.js +41 -2
  75. package/dist/hooks/utils.d.cts +1 -1
  76. package/dist/hooks/utils.d.ts +1 -1
  77. package/dist/services/amplitudeService/amplitudeService.cjs +14 -5
  78. package/dist/services/amplitudeService/amplitudeService.js +14 -5
  79. package/package.json +5 -1
  80. package/src/application/__tests__/commerceApiStreaming.test.ts +171 -0
  81. package/src/application/commerce-api.ts +21 -21
  82. package/src/application/logging/__tests__/logger.test.ts +159 -0
  83. package/src/application/logging/index.ts +12 -0
  84. package/src/application/logging/logLevel.ts +162 -0
  85. package/src/application/logging/logger.ts +13 -0
  86. package/src/contexts/salesAgentContext/salesAgentService.ts +1 -1
  87. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +4 -5
  88. package/src/hooks/ChatToggle/__tests__/useChatToggle.test.ts +273 -0
  89. package/src/hooks/ChatToggle/useChatToggle.ts +39 -12
  90. package/src/hooks/Intersection/useIntersection.ts +7 -4
  91. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +8 -5
  92. package/src/hooks/WidgetInteraction/__tests__/chatTriggerWidget.test.ts +51 -0
  93. package/src/hooks/WidgetInteraction/types.ts +53 -0
  94. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +76 -0
  95. package/src/services/amplitudeService/amplitudeService.ts +37 -5
@@ -1,3 +1,4 @@
1
+ import { ChatElementDisplayLocationV3 } from "../../application/models/chatElementDisplayLocationV3.js";
1
2
  import { EnviveMetricsEventName, SpiffyMetricsEventName } from "../../services/amplitudeService/eventNames.js";
2
3
 
3
4
  //#region src/hooks/WidgetInteraction/types.d.ts
@@ -77,6 +78,19 @@ declare enum InteractionClass {
77
78
  INTENTIONAL = "intentional",
78
79
  }
79
80
  declare const INTERACTION_TYPE_CLASS: Record<WidgetInteractionType, InteractionClass>;
81
+ /**
82
+ * Attribution map: which widget a chat open/close should be credited to, given the surface that
83
+ * triggered it.
84
+ *
85
+ * `null` marks a *system-initiated* trigger — the auto-popup timer, a referrer-based prompt, or a
86
+ * merchant `window` API call. Those are not user clicks, so they must not emit an intentional
87
+ * WIDGET_CLICKED. The chat's own WIDGET_EXPANDED still records that the chat opened, so no signal
88
+ * is lost by skipping them.
89
+ *
90
+ * Keyed exhaustively on purpose: adding a ChatElementDisplayLocationV3 member is a compile error
91
+ * until it is given an attribution here, rather than silently defaulting to the wrong widget.
92
+ */
93
+ declare const CHAT_TRIGGER_WIDGET: Record<ChatElementDisplayLocationV3, WidgetInteractionComponent | null>;
80
94
  type URL = {
81
95
  url: string;
82
96
  };
@@ -157,5 +171,5 @@ type VariantSelectorDismissed = {
157
171
  };
158
172
  type WidgetInteractionData = SuggestionScrolled | SuggestionClicked | SuggestionHovered | LinkClicked | WidgetCollapsed | TextLinkClicked | AsfLinkButton | ArticleLinkClicked | ProductCardClicked | AddToCartClicked | AddToCartFailed | ReviewCardClicked | MessageSubmitted | VoiceTranscription | VariantSelectorOpened | VariantOptionSelected | VariantSelectorDismissed;
159
173
  //#endregion
160
- export { AddToCartClicked, AddToCartFailed, ArticleLinkClicked, AsfLinkButton, Collapse, INTERACTION_TYPE_CLASS, InteractionClass, InternalWidgetInteraction, LinkClicked, MessageSubmitted, Product, ProductCardClicked, ProductWithLocation, Request, Review, ReviewCardClicked, SelectedVariantOption, Suggestion, SuggestionClicked, SuggestionHovered, SuggestionScrolled, TextLinkClicked, URL, VariantOptionSelected, VariantSelectorDismissed, VariantSelectorOpened, VoiceTranscription, WidgetCollapsed, WidgetInteraction, WidgetInteractionComponent, WidgetInteractionContext, WidgetInteractionData, WidgetInteractionPageType, WidgetInteractionTrigger, WidgetInteractionType, WidgetLocation };
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdHlwZXMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi4vLi4vY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dCc7XG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldEludGVyYWN0aW9uQ29udGV4dCB7XG4gICAgcGFnZV90eXBlOiBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlO1xuICAgIHBhZ2VfaWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb25UcmlnZ2VyIHtcbiAgICBpbnRlcmFjdGlvbl9pZD86IHN0cmluZztcbiAgICB3aWRnZXQ6IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50O1xuICAgIHdpZGdldF9pbnRlcmFjdGlvbjogV2lkZ2V0SW50ZXJhY3Rpb25UeXBlO1xuICAgIHdpZGdldF9pbnRlcmFjdGlvbl9kYXRhPzogV2lkZ2V0SW50ZXJhY3Rpb25EYXRhIHwgbnVsbDtcbiAgICBpbnRlcmFjdGlvbl9jbGFzcz86IEludGVyYWN0aW9uQ2xhc3M7XG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsV2lkZ2V0SW50ZXJhY3Rpb24ge1xuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWU7XG4gICAgY29udGV4dDogV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0O1xuICAgIHRyaWdnZXI6IFdpZGdldEludGVyYWN0aW9uVHJpZ2dlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb24ge1xuICAgIGV2ZW50TmFtZTogSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvblsnZXZlbnROYW1lJ107XG4gICAgdHJpZ2dlcjogSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvblsndHJpZ2dlciddO1xufVxuZXhwb3J0IGRlY2xhcmUgZW51bSBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlIHtcbiAgICBQRFAgPSBcInBkcFwiLFxuICAgIFBMUCA9IFwicGxwXCIsXG4gICAgSE9NRVBBR0UgPSBcImhvbWVwYWdlXCIsXG4gICAgU0VBUkNIID0gXCJzZWFyY2hcIixcbiAgICBPVEhFUiA9IFwib3RoZXJcIixcbiAgICBBREFQVElWRV9TVE9SRUZST05UID0gXCJhZGFwdGl2ZV9zdG9yZWZyb250XCJcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQge1xuICAgIEVNQkVEREVEX1dJREdFVCA9IFwiZW1iZWRkZWRfd2lkZ2V0XCIsXG4gICAgU1VHR0VTVElPTl9CQVIgPSBcInN1Z2dlc3Rpb25fYmFyXCIsXG4gICAgRkxPQVRJTkdfQlVUVE9OID0gXCJmbG9hdGluZ19idXR0b25cIixcbiAgICBGVUxMX1BBR0VfU0FMRVNfQUdFTlQgPSBcImZ1bGxfcGFnZV9zYWxlc19hZ2VudFwiLFxuICAgIEZVTExfUEFHRV9TQUxFU19BR0VOVF9SRUNPTU1FTkRBVElPTlMgPSBcImZ1bGxfcGFnZV9zYWxlc19hZ2VudF9yZWNvbW1lbmRhdGlvbnNcIixcbiAgICBGVUxMX1BBR0VfU0FMRVNfQUdFTlRfUkVDT01NRU5EQVRJT05TX0FUQ19GQUxMQkFDSyA9IFwiZnVsbF9wYWdlX3NhbGVzX2FnZW50X3JlY29tbWVuZGF0aW9uc19hdGNfZmFsbGJhY2tcIixcbiAgICBTT0NJQUxfUFJPT0YgPSBcInNvY2lhbF9wcm9vZlwiLFxuICAgIENIQVRfUFJFVklFVyA9IFwiY2hhdF9wcmV2aWV3XCIsXG4gICAgRkxPQVRJTkdfQ0hBVCA9IFwiZmxvYXRpbmdfY2hhdFwiLFxuICAgIFNJTkdMRV9JTUFHRV9QUk9NUFQgPSBcInNpbmdsZV9pbWFnZV9wcm9tcHRcIixcbiAgICBJTUFHRV9QUk9NUFRfQ0FSRCA9IFwiaW1hZ2VfcHJvbXB0X2NhcmRcIixcbiAgICBQT1NUX0lOVEVSQUNUSU9OX0NPTVBBUklTT04gPSBcInBvc3RfaW50ZXJhY3Rpb25fY29tcGFyaXNvblwiLFxuICAgIFBPU1RfSU5URVJBQ1RJT05fRU1CRURERUQgPSBcInBvc3RfaW50ZXJhY3Rpb25fZW1iZWRkZWRcIlxufVxuZXhwb3J0IGRlY2xhcmUgZW51bSBXaWRnZXRJbnRlcmFjdGlvblR5cGUge1xuICAgIFFVRVJZX0lOUFVUX0NMSUNLRUQgPSBcInF1ZXJ5X2lucHV0X2NsaWNrZWRcIixcbiAgICBTVUdHRVNUSU9OX0NMSUNLRUQgPSBcInN1Z2dlc3Rpb25fY2xpY2tlZFwiLFxuICAgIFdJREdFVF9DTElDS0VEID0gXCJ3aWRnZXRfY2xpY2tlZFwiLFxuICAgIFdJREdFVF9IT1ZFUkVEID0gXCJ3aWRnZXRfaG92ZXJlZFwiLFxuICAgIFdJREdFVF9FWFBBTkRFRCA9IFwid2lkZ2V0X2V4cGFuZGVkXCIsXG4gICAgV0lER0VUX0NPTExBUFNFRCA9IFwid2lkZ2V0X2NvbGxhcHNlZFwiLFxuICAgIFNVR0dFU1RJT05fU0NST0xMRUQgPSBcInN1Z2dlc3Rpb25fc2Nyb2xsZWRcIixcbiAgICBMSU5LX0NMSUNLRUQgPSBcImxpbmtfY2xpY2tlZFwiLFxuICAgIFBST0RVQ1RfQ0FSRF9DTElDS0VEID0gXCJwcm9kdWN0X2NhcmRfY2xpY2tlZFwiLFxuICAgIEFERF9UT19DQVJUX0NMSUNLRUQgPSBcImFkZF90b19jYXJ0X2NsaWNrZWRcIixcbiAgICBBRERfVE9fQ0FSVF9GQUlMRUQgPSBcImFkZF90b19jYXJ0X2ZhaWxlZFwiLFxuICAgIFRFWFRfTElOS19DTElDS0VEID0gXCJ0ZXh0X2xpbmtfY2xpY2tlZFwiLFxuICAgIEFTRl9MSU5LX0JVVFRPTiA9IFwiYXNmX2xpbmtfYnV0dG9uXCIsXG4gICAgQVJUSUNMRV9MSU5LX0NMSUNLRUQgPSBcImFydGljbGVfbGlua19jbGlja2VkXCIsXG4gICAgUkVWSUVXX0NBUkRfQ0xJQ0tFRCA9IFwicmV2aWV3X2NhcmRfY2xpY2tlZFwiLFxuICAgIE1FU1NBR0VfU1VCTUlUVEVEID0gXCJtZXNzYWdlX3N1Ym1pdHRlZFwiLFxuICAgIE1BTlVBTF9TQ1JPTExfVE9fQk9UVE9NID0gXCJtYW51YWxfc2Nyb2xsX3RvX2JvdHRvbVwiLFxuICAgIFZPSUNFX1RSQU5TQ1JJUFRJT05fU1RBUlRFRCA9IFwidm9pY2VfdHJhbnNjcmlwdGlvbl9zdGFydGVkXCIsXG4gICAgVk9JQ0VfVFJBTlNDUklQVElPTl9DT01QTEVURUQgPSBcInZvaWNlX3RyYW5zY3JpcHRpb25fY29tcGxldGVkXCIsXG4gICAgT1ZFUkxBWV9ESVNNSVNTRUQgPSBcIm92ZXJsYXlfZGlzbWlzc2VkXCIsXG4gICAgVkFSSUFOVF9TRUxFQ1RPUl9PUEVORUQgPSBcInZhcmlhbnRfc2VsZWN0b3Jfb3BlbmVkXCIsXG4gICAgVkFSSUFOVF9PUFRJT05fU0VMRUNURUQgPSBcInZhcmlhbnRfb3B0aW9uX3NlbGVjdGVkXCIsXG4gICAgVkFSSUFOVF9TRUxFQ1RPUl9ESVNNSVNTRUQgPSBcInZhcmlhbnRfc2VsZWN0b3JfZGlzbWlzc2VkXCJcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gSW50ZXJhY3Rpb25DbGFzcyB7XG4gICAgUEFTU0lWRSA9IFwicGFzc2l2ZVwiLC8vIE5vIHVzZXIgY29tbWl0bWVudCDigJQgaG92ZXIsIHNjcm9sbCwgdmlzaWJpbGl0eSB0cmlnZ2Vyc1xuICAgIE5BVklHQVRJT05BTCA9IFwibmF2aWdhdGlvbmFsXCIsLy8gT3BlbnMvY2xvc2VzIHNvbWV0aGluZyDigJQgb2Z0ZW4gYSBzaWRlIGVmZmVjdCBvZiBpbnRlbnRcbiAgICBJTlRFTlRJT05BTCA9IFwiaW50ZW50aW9uYWxcIlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgSU5URVJBQ1RJT05fVFlQRV9DTEFTUzogUmVjb3JkPFdpZGdldEludGVyYWN0aW9uVHlwZSwgSW50ZXJhY3Rpb25DbGFzcz47XG5leHBvcnQgdHlwZSBVUkwgPSB7XG4gICAgdXJsOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUHJvZHVjdCA9IHtcbiAgICBwcm9kdWN0X2lkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgV2lkZ2V0TG9jYXRpb24gPSAnY2hhdCcgfCAnb3ZlcmxheScgfCAndmFyaWFudF9zZWxlY3Rvcic7XG5leHBvcnQgdHlwZSBQcm9kdWN0V2l0aExvY2F0aW9uID0gUHJvZHVjdCAmIHtcbiAgICB3aWRnZXRfbG9jYXRpb246IFdpZGdldExvY2F0aW9uO1xufTtcbmV4cG9ydCB0eXBlIFJldmlldyA9IHtcbiAgICByZXZpZXdfaWQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uID0ge1xuICAgIHN1Z2dlc3Rpb25faWQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXF1ZXN0ID0ge1xuICAgIHJlcXVlc3RfdGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENvbGxhcHNlID0ge1xuICAgIGNvbGxhcHNlX3NvdXJjZTogJ2Nsb3NlX2J1dHRvbicgfCAnc3dpcGUnIHwgJ2JvZHlfY2xpY2snO1xufTtcbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb25TY3JvbGxlZCA9IHtcbiAgICBzdWdnZXN0aW9uX3Njcm9sbGVkOiBTdWdnZXN0aW9uO1xufTtcbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb25DbGlja2VkID0ge1xuICAgIHN1Z2dlc3Rpb25fY2xpY2tlZDogU3VnZ2VzdGlvbjtcbn07XG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uSG92ZXJlZCA9IHtcbiAgICBzdWdnZXN0aW9uX2hvdmVyZWQ6IFN1Z2dlc3Rpb247XG59O1xuZXhwb3J0IHR5cGUgTGlua0NsaWNrZWQgPSB7XG4gICAgbGlua19jbGlja2VkOiBVUkw7XG59O1xuZXhwb3J0IHR5cGUgV2lkZ2V0Q29sbGFwc2VkID0ge1xuICAgIHdpZGdldF9jb2xsYXBzZWQ6IENvbGxhcHNlO1xufTtcbmV4cG9ydCB0eXBlIFRleHRMaW5rQ2xpY2tlZCA9IHtcbiAgICB0ZXh0X2xpbmtfY2xpY2tlZDogVVJMO1xufTtcbmV4cG9ydCB0eXBlIEFzZkxpbmtCdXR0b24gPSB7XG4gICAgYXNmX2xpbmtfYnV0dG9uOiBVUkw7XG59O1xuZXhwb3J0IHR5cGUgQXJ0aWNsZUxpbmtDbGlja2VkID0ge1xuICAgIGFydGljbGVfbGlua19jbGlja2VkOiBVUkw7XG59O1xuZXhwb3J0IHR5cGUgUHJvZHVjdENhcmRDbGlja2VkID0ge1xuICAgIHByb2R1Y3RfY2FyZF9jbGlja2VkOiBQcm9kdWN0O1xufTtcbmV4cG9ydCB0eXBlIEFkZFRvQ2FydENsaWNrZWQgPSB7XG4gICAgYWRkX3RvX2NhcnRfY2xpY2tlZDogUHJvZHVjdFdpdGhMb2NhdGlvbjtcbn07XG5leHBvcnQgdHlwZSBBZGRUb0NhcnRGYWlsZWQgPSB7XG4gICAgYWRkX3RvX2NhcnRfZmFpbGVkOiBQcm9kdWN0V2l0aExvY2F0aW9uO1xufTtcbmV4cG9ydCB0eXBlIFJldmlld0NhcmRDbGlja2VkID0ge1xuICAgIHJldmlld19jYXJkX2NsaWNrZWQ6IFJldmlldztcbn07XG5leHBvcnQgdHlwZSBNZXNzYWdlU3VibWl0dGVkID0ge1xuICAgIG1lc3NhZ2Vfc3VibWl0dGVkOiBSZXF1ZXN0O1xufTtcbmV4cG9ydCB0eXBlIFZvaWNlVHJhbnNjcmlwdGlvbiA9IHtcbiAgICB0cmFuc2NyaXB0aW9uOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgU2VsZWN0ZWRWYXJpYW50T3B0aW9uID0ge1xuICAgIHByb2R1Y3RfaWQ6IHN0cmluZztcbiAgICBvcHRpb25fbmFtZTogc3RyaW5nO1xuICAgIG9wdGlvbl92YWx1ZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFZhcmlhbnRTZWxlY3Rvck9wZW5lZCA9IHtcbiAgICB2YXJpYW50X3NlbGVjdG9yX29wZW5lZDogUHJvZHVjdDtcbn07XG5leHBvcnQgdHlwZSBWYXJpYW50T3B0aW9uU2VsZWN0ZWQgPSB7XG4gICAgdmFyaWFudF9vcHRpb25fc2VsZWN0ZWQ6IFNlbGVjdGVkVmFyaWFudE9wdGlvbjtcbn07XG5leHBvcnQgdHlwZSBWYXJpYW50U2VsZWN0b3JEaXNtaXNzZWQgPSB7XG4gICAgdmFyaWFudF9zZWxlY3Rvcl9kaXNtaXNzZWQ6IFByb2R1Y3Q7XG59O1xuZXhwb3J0IHR5cGUgV2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gU3VnZ2VzdGlvblNjcm9sbGVkIHwgU3VnZ2VzdGlvbkNsaWNrZWQgfCBTdWdnZXN0aW9uSG92ZXJlZCB8IExpbmtDbGlja2VkIHwgV2lkZ2V0Q29sbGFwc2VkIHwgVGV4dExpbmtDbGlja2VkIHwgQXNmTGlua0J1dHRvbiB8IEFydGljbGVMaW5rQ2xpY2tlZCB8IFByb2R1Y3RDYXJkQ2xpY2tlZCB8IEFkZFRvQ2FydENsaWNrZWQgfCBBZGRUb0NhcnRGYWlsZWQgfCBSZXZpZXdDYXJkQ2xpY2tlZCB8IE1lc3NhZ2VTdWJtaXR0ZWQgfCBWb2ljZVRyYW5zY3JpcHRpb24gfCBWYXJpYW50U2VsZWN0b3JPcGVuZWQgfCBWYXJpYW50T3B0aW9uU2VsZWN0ZWQgfCBWYXJpYW50U2VsZWN0b3JEaXNtaXNzZWQ7XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcsMkJBQTJCLENBQUMsV0FBRywwQkFBQTtBQUMxQyxJQUFXLDJCQUEyQjtDQUFDO09BQUM7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUN4QyxJQUFXLDRCQUFRO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ25CLElBQUEsb0JBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsNEJBQTRCLENBQUMsSUFBRTtBQUMxQyxJQUFXLDZCQUFnQixDQUFBLElBQUE7QUFDM0IsSUFBVyx3QkFBd0IsQ0FBQyxJQUFFO0FBQ3RDLElBQVcsbUJBQW1CLENBQUMsSUFBSTtBQUNuQyxJQUFXLHlCQUF5QjtDQUFDO09BQVc7T0FBVTtPQUFBO0NBQUE7QUFDMUQsSUFBVyxNQUFNLENBQUMsSUFBSTtBQUN0QixJQUFBLFVBQUEsQ0FBQSxJQUFBO0FBQ0EsSUFBVyxpQkFBaUIsQ0FBQyxJQUFJO0FBQ2pDLElBQVcsc0JBQXNCO0NBQUM7T0FBVztPQUFlO0NBQUU7QUFDOUQsSUFBVyxTQUFTLENBQUMsSUFBSTtBQUN6QixJQUFXLGFBQWEsQ0FBQyxJQUFJO0FBQzdCLElBQUEsVUFBQSxDQUFBLElBQUE7QUFDQSxJQUFXLFdBQVcsQ0FBQyxJQUFJO0FBQzNCLElBQVcscUJBQXFCLENBQUMsV0FBVyxXQUFTO0FBQ3JELElBQVcsb0JBQW9CLENBQUMsV0FBVyxXQUFNO0FBQ2pELElBQUEsb0JBQUEsQ0FBQSxXQUFBLFdBQUE7QUFDQSxJQUFXLGNBQWMsQ0FBQyxXQUFXLElBQUk7QUFDekMsSUFBVyxrQkFBSSxDQUFBLFdBQUEsU0FBQTtBQUNmLElBQVcsa0JBQUksQ0FBQSxXQUFBLElBQUE7QUFDZixJQUFXLGdCQUFjLENBQUEsV0FBQSxJQUFBO0FBQ3pCLElBQVcscUJBQVUsQ0FBQSxXQUFBLElBQUE7QUFDckIsSUFBVyxxQkFBUSxDQUFBLFdBQUEsUUFBQTtBQUNuQixJQUFXLG1CQUFtQixDQUFDLFdBQVcsb0JBQUk7QUFDOUMsSUFBQSxrQkFBQSxDQUFBLFdBQUEsb0JBQUE7QUFDQSxJQUFXLG9CQUFvQixDQUFDLFdBQVcsT0FBSTtBQUMvQyxJQUFXLG1CQUFtQixDQUFDLFdBQVEsUUFBQTtBQUN2QyxJQUFXLHFCQUFxQixDQUFDLElBQUk7QUFDckMsSUFBVyx3QkFBd0IsQ0FBQyxJQUFHO0FBQ3ZDLElBQVcsd0JBQXdCLENBQUMsV0FBVyxRQUFJO0FBQ25ELElBQVcsd0JBQXdCLENBQUMsV0FBVyxzQkFBc0I7QUFDckUsSUFBVywyQkFBMkIsQ0FBQyxXQUFXLFFBQVE7QUFDMUQsSUFBVyx3QkFBc0I7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
174
+ export { AddToCartClicked, AddToCartFailed, ArticleLinkClicked, AsfLinkButton, CHAT_TRIGGER_WIDGET, Collapse, INTERACTION_TYPE_CLASS, InteractionClass, InternalWidgetInteraction, LinkClicked, MessageSubmitted, Product, ProductCardClicked, ProductWithLocation, Request, Review, ReviewCardClicked, SelectedVariantOption, Suggestion, SuggestionClicked, SuggestionHovered, SuggestionScrolled, TextLinkClicked, URL, VariantOptionSelected, VariantSelectorDismissed, VariantSelectorOpened, VoiceTranscription, WidgetCollapsed, WidgetInteraction, WidgetInteractionComponent, WidgetInteractionContext, WidgetInteractionData, WidgetInteractionPageType, WidgetInteractionTrigger, WidgetInteractionType, WidgetLocation };
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdHlwZXMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi8uLi9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0JztcbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGU7XG4gICAgcGFnZV9pZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRJbnRlcmFjdGlvblRyaWdnZXIge1xuICAgIGludGVyYWN0aW9uX2lkPzogc3RyaW5nO1xuICAgIHdpZGdldDogV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQ7XG4gICAgd2lkZ2V0X2ludGVyYWN0aW9uOiBXaWRnZXRJbnRlcmFjdGlvblR5cGU7XG4gICAgd2lkZ2V0X2ludGVyYWN0aW9uX2RhdGE/OiBXaWRnZXRJbnRlcmFjdGlvbkRhdGEgfCBudWxsO1xuICAgIGludGVyYWN0aW9uX2NsYXNzPzogSW50ZXJhY3Rpb25DbGFzcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvbiB7XG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZTtcbiAgICBjb250ZXh0OiBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgdHJpZ2dlcjogV2lkZ2V0SW50ZXJhY3Rpb25UcmlnZ2VyO1xufVxuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRJbnRlcmFjdGlvbiB7XG4gICAgZXZlbnROYW1lOiBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uWydldmVudE5hbWUnXTtcbiAgICB0cmlnZ2VyOiBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uWyd0cmlnZ2VyJ107XG59XG5leHBvcnQgZGVjbGFyZSBlbnVtIFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUge1xuICAgIFBEUCA9IFwicGRwXCIsXG4gICAgUExQID0gXCJwbHBcIixcbiAgICBIT01FUEFHRSA9IFwiaG9tZXBhZ2VcIixcbiAgICBTRUFSQ0ggPSBcInNlYXJjaFwiLFxuICAgIE9USEVSID0gXCJvdGhlclwiLFxuICAgIEFEQVBUSVZFX1NUT1JFRlJPTlQgPSBcImFkYXB0aXZlX3N0b3JlZnJvbnRcIlxufVxuZXhwb3J0IGRlY2xhcmUgZW51bSBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudCB7XG4gICAgRU1CRURERURfV0lER0VUID0gXCJlbWJlZGRlZF93aWRnZXRcIixcbiAgICBTVUdHRVNUSU9OX0JBUiA9IFwic3VnZ2VzdGlvbl9iYXJcIixcbiAgICBGTE9BVElOR19CVVRUT04gPSBcImZsb2F0aW5nX2J1dHRvblwiLFxuICAgIEZVTExfUEFHRV9TQUxFU19BR0VOVCA9IFwiZnVsbF9wYWdlX3NhbGVzX2FnZW50XCIsXG4gICAgRlVMTF9QQUdFX1NBTEVTX0FHRU5UX1JFQ09NTUVOREFUSU9OUyA9IFwiZnVsbF9wYWdlX3NhbGVzX2FnZW50X3JlY29tbWVuZGF0aW9uc1wiLFxuICAgIEZVTExfUEFHRV9TQUxFU19BR0VOVF9SRUNPTU1FTkRBVElPTlNfQVRDX0ZBTExCQUNLID0gXCJmdWxsX3BhZ2Vfc2FsZXNfYWdlbnRfcmVjb21tZW5kYXRpb25zX2F0Y19mYWxsYmFja1wiLFxuICAgIFNPQ0lBTF9QUk9PRiA9IFwic29jaWFsX3Byb29mXCIsXG4gICAgQ0hBVF9QUkVWSUVXID0gXCJjaGF0X3ByZXZpZXdcIixcbiAgICBGTE9BVElOR19DSEFUID0gXCJmbG9hdGluZ19jaGF0XCIsXG4gICAgU0lOR0xFX0lNQUdFX1BST01QVCA9IFwic2luZ2xlX2ltYWdlX3Byb21wdFwiLFxuICAgIElNQUdFX1BST01QVF9DQVJEID0gXCJpbWFnZV9wcm9tcHRfY2FyZFwiLFxuICAgIFBPU1RfSU5URVJBQ1RJT05fQ09NUEFSSVNPTiA9IFwicG9zdF9pbnRlcmFjdGlvbl9jb21wYXJpc29uXCIsXG4gICAgUE9TVF9JTlRFUkFDVElPTl9FTUJFRERFRCA9IFwicG9zdF9pbnRlcmFjdGlvbl9lbWJlZGRlZFwiXG59XG5leHBvcnQgZGVjbGFyZSBlbnVtIFdpZGdldEludGVyYWN0aW9uVHlwZSB7XG4gICAgUVVFUllfSU5QVVRfQ0xJQ0tFRCA9IFwicXVlcnlfaW5wdXRfY2xpY2tlZFwiLFxuICAgIFNVR0dFU1RJT05fQ0xJQ0tFRCA9IFwic3VnZ2VzdGlvbl9jbGlja2VkXCIsXG4gICAgV0lER0VUX0NMSUNLRUQgPSBcIndpZGdldF9jbGlja2VkXCIsXG4gICAgV0lER0VUX0hPVkVSRUQgPSBcIndpZGdldF9ob3ZlcmVkXCIsXG4gICAgV0lER0VUX0VYUEFOREVEID0gXCJ3aWRnZXRfZXhwYW5kZWRcIixcbiAgICBXSURHRVRfQ09MTEFQU0VEID0gXCJ3aWRnZXRfY29sbGFwc2VkXCIsXG4gICAgU1VHR0VTVElPTl9TQ1JPTExFRCA9IFwic3VnZ2VzdGlvbl9zY3JvbGxlZFwiLFxuICAgIExJTktfQ0xJQ0tFRCA9IFwibGlua19jbGlja2VkXCIsXG4gICAgUFJPRFVDVF9DQVJEX0NMSUNLRUQgPSBcInByb2R1Y3RfY2FyZF9jbGlja2VkXCIsXG4gICAgQUREX1RPX0NBUlRfQ0xJQ0tFRCA9IFwiYWRkX3RvX2NhcnRfY2xpY2tlZFwiLFxuICAgIEFERF9UT19DQVJUX0ZBSUxFRCA9IFwiYWRkX3RvX2NhcnRfZmFpbGVkXCIsXG4gICAgVEVYVF9MSU5LX0NMSUNLRUQgPSBcInRleHRfbGlua19jbGlja2VkXCIsXG4gICAgQVNGX0xJTktfQlVUVE9OID0gXCJhc2ZfbGlua19idXR0b25cIixcbiAgICBBUlRJQ0xFX0xJTktfQ0xJQ0tFRCA9IFwiYXJ0aWNsZV9saW5rX2NsaWNrZWRcIixcbiAgICBSRVZJRVdfQ0FSRF9DTElDS0VEID0gXCJyZXZpZXdfY2FyZF9jbGlja2VkXCIsXG4gICAgTUVTU0FHRV9TVUJNSVRURUQgPSBcIm1lc3NhZ2Vfc3VibWl0dGVkXCIsXG4gICAgTUFOVUFMX1NDUk9MTF9UT19CT1RUT00gPSBcIm1hbnVhbF9zY3JvbGxfdG9fYm90dG9tXCIsXG4gICAgVk9JQ0VfVFJBTlNDUklQVElPTl9TVEFSVEVEID0gXCJ2b2ljZV90cmFuc2NyaXB0aW9uX3N0YXJ0ZWRcIixcbiAgICBWT0lDRV9UUkFOU0NSSVBUSU9OX0NPTVBMRVRFRCA9IFwidm9pY2VfdHJhbnNjcmlwdGlvbl9jb21wbGV0ZWRcIixcbiAgICBPVkVSTEFZX0RJU01JU1NFRCA9IFwib3ZlcmxheV9kaXNtaXNzZWRcIixcbiAgICBWQVJJQU5UX1NFTEVDVE9SX09QRU5FRCA9IFwidmFyaWFudF9zZWxlY3Rvcl9vcGVuZWRcIixcbiAgICBWQVJJQU5UX09QVElPTl9TRUxFQ1RFRCA9IFwidmFyaWFudF9vcHRpb25fc2VsZWN0ZWRcIixcbiAgICBWQVJJQU5UX1NFTEVDVE9SX0RJU01JU1NFRCA9IFwidmFyaWFudF9zZWxlY3Rvcl9kaXNtaXNzZWRcIlxufVxuZXhwb3J0IGRlY2xhcmUgZW51bSBJbnRlcmFjdGlvbkNsYXNzIHtcbiAgICBQQVNTSVZFID0gXCJwYXNzaXZlXCIsLy8gTm8gdXNlciBjb21taXRtZW50IOKAlCBob3Zlciwgc2Nyb2xsLCB2aXNpYmlsaXR5IHRyaWdnZXJzXG4gICAgTkFWSUdBVElPTkFMID0gXCJuYXZpZ2F0aW9uYWxcIiwvLyBPcGVucy9jbG9zZXMgc29tZXRoaW5nIOKAlCBvZnRlbiBhIHNpZGUgZWZmZWN0IG9mIGludGVudFxuICAgIElOVEVOVElPTkFMID0gXCJpbnRlbnRpb25hbFwiXG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBJTlRFUkFDVElPTl9UWVBFX0NMQVNTOiBSZWNvcmQ8V2lkZ2V0SW50ZXJhY3Rpb25UeXBlLCBJbnRlcmFjdGlvbkNsYXNzPjtcbi8qKlxuICogQXR0cmlidXRpb24gbWFwOiB3aGljaCB3aWRnZXQgYSBjaGF0IG9wZW4vY2xvc2Ugc2hvdWxkIGJlIGNyZWRpdGVkIHRvLCBnaXZlbiB0aGUgc3VyZmFjZSB0aGF0XG4gKiB0cmlnZ2VyZWQgaXQuXG4gKlxuICogYG51bGxgIG1hcmtzIGEgKnN5c3RlbS1pbml0aWF0ZWQqIHRyaWdnZXIg4oCUIHRoZSBhdXRvLXBvcHVwIHRpbWVyLCBhIHJlZmVycmVyLWJhc2VkIHByb21wdCwgb3IgYVxuICogbWVyY2hhbnQgYHdpbmRvd2AgQVBJIGNhbGwuIFRob3NlIGFyZSBub3QgdXNlciBjbGlja3MsIHNvIHRoZXkgbXVzdCBub3QgZW1pdCBhbiBpbnRlbnRpb25hbFxuICogV0lER0VUX0NMSUNLRUQuIFRoZSBjaGF0J3Mgb3duIFdJREdFVF9FWFBBTkRFRCBzdGlsbCByZWNvcmRzIHRoYXQgdGhlIGNoYXQgb3BlbmVkLCBzbyBubyBzaWduYWxcbiAqIGlzIGxvc3QgYnkgc2tpcHBpbmcgdGhlbS5cbiAqXG4gKiBLZXllZCBleGhhdXN0aXZlbHkgb24gcHVycG9zZTogYWRkaW5nIGEgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyBtZW1iZXIgaXMgYSBjb21waWxlIGVycm9yXG4gKiB1bnRpbCBpdCBpcyBnaXZlbiBhbiBhdHRyaWJ1dGlvbiBoZXJlLCByYXRoZXIgdGhhbiBzaWxlbnRseSBkZWZhdWx0aW5nIHRvIHRoZSB3cm9uZyB3aWRnZXQuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IENIQVRfVFJJR0dFUl9XSURHRVQ6IFJlY29yZDxDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLCBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudCB8IG51bGw+O1xuZXhwb3J0IHR5cGUgVVJMID0ge1xuICAgIHVybDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3QgPSB7XG4gICAgcHJvZHVjdF9pZDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFdpZGdldExvY2F0aW9uID0gJ2NoYXQnIHwgJ292ZXJsYXknIHwgJ3ZhcmlhbnRfc2VsZWN0b3InO1xuZXhwb3J0IHR5cGUgUHJvZHVjdFdpdGhMb2NhdGlvbiA9IFByb2R1Y3QgJiB7XG4gICAgd2lkZ2V0X2xvY2F0aW9uOiBXaWRnZXRMb2NhdGlvbjtcbn07XG5leHBvcnQgdHlwZSBSZXZpZXcgPSB7XG4gICAgcmV2aWV3X2lkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbiA9IHtcbiAgICBzdWdnZXN0aW9uX2lkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUmVxdWVzdCA9IHtcbiAgICByZXF1ZXN0X3RleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBDb2xsYXBzZSA9IHtcbiAgICBjb2xsYXBzZV9zb3VyY2U6ICdjbG9zZV9idXR0b24nIHwgJ3N3aXBlJyB8ICdib2R5X2NsaWNrJztcbn07XG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uU2Nyb2xsZWQgPSB7XG4gICAgc3VnZ2VzdGlvbl9zY3JvbGxlZDogU3VnZ2VzdGlvbjtcbn07XG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uQ2xpY2tlZCA9IHtcbiAgICBzdWdnZXN0aW9uX2NsaWNrZWQ6IFN1Z2dlc3Rpb247XG59O1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbkhvdmVyZWQgPSB7XG4gICAgc3VnZ2VzdGlvbl9ob3ZlcmVkOiBTdWdnZXN0aW9uO1xufTtcbmV4cG9ydCB0eXBlIExpbmtDbGlja2VkID0ge1xuICAgIGxpbmtfY2xpY2tlZDogVVJMO1xufTtcbmV4cG9ydCB0eXBlIFdpZGdldENvbGxhcHNlZCA9IHtcbiAgICB3aWRnZXRfY29sbGFwc2VkOiBDb2xsYXBzZTtcbn07XG5leHBvcnQgdHlwZSBUZXh0TGlua0NsaWNrZWQgPSB7XG4gICAgdGV4dF9saW5rX2NsaWNrZWQ6IFVSTDtcbn07XG5leHBvcnQgdHlwZSBBc2ZMaW5rQnV0dG9uID0ge1xuICAgIGFzZl9saW5rX2J1dHRvbjogVVJMO1xufTtcbmV4cG9ydCB0eXBlIEFydGljbGVMaW5rQ2xpY2tlZCA9IHtcbiAgICBhcnRpY2xlX2xpbmtfY2xpY2tlZDogVVJMO1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3RDYXJkQ2xpY2tlZCA9IHtcbiAgICBwcm9kdWN0X2NhcmRfY2xpY2tlZDogUHJvZHVjdDtcbn07XG5leHBvcnQgdHlwZSBBZGRUb0NhcnRDbGlja2VkID0ge1xuICAgIGFkZF90b19jYXJ0X2NsaWNrZWQ6IFByb2R1Y3RXaXRoTG9jYXRpb247XG59O1xuZXhwb3J0IHR5cGUgQWRkVG9DYXJ0RmFpbGVkID0ge1xuICAgIGFkZF90b19jYXJ0X2ZhaWxlZDogUHJvZHVjdFdpdGhMb2NhdGlvbjtcbn07XG5leHBvcnQgdHlwZSBSZXZpZXdDYXJkQ2xpY2tlZCA9IHtcbiAgICByZXZpZXdfY2FyZF9jbGlja2VkOiBSZXZpZXc7XG59O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVN1Ym1pdHRlZCA9IHtcbiAgICBtZXNzYWdlX3N1Ym1pdHRlZDogUmVxdWVzdDtcbn07XG5leHBvcnQgdHlwZSBWb2ljZVRyYW5zY3JpcHRpb24gPSB7XG4gICAgdHJhbnNjcmlwdGlvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFNlbGVjdGVkVmFyaWFudE9wdGlvbiA9IHtcbiAgICBwcm9kdWN0X2lkOiBzdHJpbmc7XG4gICAgb3B0aW9uX25hbWU6IHN0cmluZztcbiAgICBvcHRpb25fdmFsdWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBWYXJpYW50U2VsZWN0b3JPcGVuZWQgPSB7XG4gICAgdmFyaWFudF9zZWxlY3Rvcl9vcGVuZWQ6IFByb2R1Y3Q7XG59O1xuZXhwb3J0IHR5cGUgVmFyaWFudE9wdGlvblNlbGVjdGVkID0ge1xuICAgIHZhcmlhbnRfb3B0aW9uX3NlbGVjdGVkOiBTZWxlY3RlZFZhcmlhbnRPcHRpb247XG59O1xuZXhwb3J0IHR5cGUgVmFyaWFudFNlbGVjdG9yRGlzbWlzc2VkID0ge1xuICAgIHZhcmlhbnRfc2VsZWN0b3JfZGlzbWlzc2VkOiBQcm9kdWN0O1xufTtcbmV4cG9ydCB0eXBlIFdpZGdldEludGVyYWN0aW9uRGF0YSA9IFN1Z2dlc3Rpb25TY3JvbGxlZCB8IFN1Z2dlc3Rpb25DbGlja2VkIHwgU3VnZ2VzdGlvbkhvdmVyZWQgfCBMaW5rQ2xpY2tlZCB8IFdpZGdldENvbGxhcHNlZCB8IFRleHRMaW5rQ2xpY2tlZCB8IEFzZkxpbmtCdXR0b24gfCBBcnRpY2xlTGlua0NsaWNrZWQgfCBQcm9kdWN0Q2FyZENsaWNrZWQgfCBBZGRUb0NhcnRDbGlja2VkIHwgQWRkVG9DYXJ0RmFpbGVkIHwgUmV2aWV3Q2FyZENsaWNrZWQgfCBNZXNzYWdlU3VibWl0dGVkIHwgVm9pY2VUcmFuc2NyaXB0aW9uIHwgVmFyaWFudFNlbGVjdG9yT3BlbmVkIHwgVmFyaWFudE9wdGlvblNlbGVjdGVkIHwgVmFyaWFudFNlbGVjdG9yRGlzbWlzc2VkO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVywyQkFBMkIsQ0FBQyxXQUFHLDBCQUFBO0FBQzFDLElBQVcsMkJBQTJCO0NBQUM7T0FBQztPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ3hDLElBQVcsNEJBQVE7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDbkIsSUFBQSxvQkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyw0QkFBNEIsQ0FBQyxJQUFFO0FBQzFDLElBQVcsNkJBQWdCLENBQUEsSUFBQTtBQUMzQixJQUFXLHdCQUF3QixDQUFDLElBQUU7QUFDdEMsSUFBVyxtQkFBbUIsQ0FBQyxJQUFJO0FBQ25DLElBQVcseUJBQXlCO0NBQUM7T0FBVztPQUFVO09BQUE7Q0FBQTtBQUMxRCxJQUFXLHNCQUFzQjtDQUFDO09BQU07T0FBQTtPQUFBO0NBQUE7QUFDeEMsSUFBQSxNQUFBLENBQUEsSUFBQTtBQUNBLElBQVcsVUFBVSxDQUFDLElBQUk7QUFDMUIsSUFBVyxpQkFBaUIsQ0FBQyxJQUFJO0FBQ2pDLElBQVcsc0JBQXNCO0NBQUM7T0FBRztPQUFBO0NBQUE7QUFDckMsSUFBVyxTQUFTLENBQUMsSUFBSTtBQUN6QixJQUFBLGFBQUEsQ0FBQSxJQUFBO0FBQ0EsSUFBVyxVQUFVLENBQUMsSUFBSTtBQUMxQixJQUFXLFdBQVcsQ0FBQyxJQUFJO0FBQzNCLElBQVcscUJBQXFCLENBQUMsV0FBVyxXQUFLO0FBQ2pELElBQUEsb0JBQUEsQ0FBQSxXQUFBLFdBQUE7QUFDQSxJQUFXLG9CQUFvQixDQUFDLFdBQVcsV0FBRztBQUM5QyxJQUFXLGNBQUksQ0FBQSxXQUFBLElBQUE7QUFDZixJQUFXLGtCQUFJLENBQUEsV0FBQSxTQUFBO0FBQ2YsSUFBVyxrQkFBYyxDQUFBLFdBQUEsSUFBQTtBQUN6QixJQUFXLGdCQUFVLENBQUEsV0FBQSxJQUFBO0FBQ3JCLElBQVcscUJBQVEsQ0FBQSxXQUFBLElBQUE7QUFDbkIsSUFBVyxxQkFBcUIsQ0FBQyxXQUFXLFFBQUU7QUFDOUMsSUFBQSxtQkFBQSxDQUFBLFdBQUEsb0JBQUE7QUFDQSxJQUFXLGtCQUFrQixDQUFDLFdBQVcsb0JBQU07QUFDL0MsSUFBVyxvQkFBb0IsQ0FBQyxXQUFPLE9BQUE7QUFDdkMsSUFBVyxtQkFBbUIsQ0FBQyxXQUFNLFFBQUE7QUFDckMsSUFBVyxxQkFBcUIsQ0FBQyxJQUFJO0FBQ3JDLElBQVcsd0JBQXdCLENBQUMsSUFBSTtBQUN4QyxJQUFXLHdCQUF3QixDQUFDLFdBQVcsUUFBUTtBQUN2RCxJQUFXLHdCQUF3QixDQUFDLFdBQVcsc0JBQXNCO0FBQ3JFLElBQVcsMkJBQXNCLENBQUEsV0FBQSxRQUFBO0FBQ2pDLElBQVcsd0JBQXNCO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
@@ -1,3 +1,6 @@
1
+ import { ChatElementDisplayLocationV3 } from "../../application/models/chatElementDisplayLocationV3.js";
2
+ import "../../application/models/index.js";
3
+
1
4
  //#region src/hooks/WidgetInteraction/types.ts
2
5
  let WidgetInteractionPageType = /* @__PURE__ */ function(WidgetInteractionPageType$1) {
3
6
  WidgetInteractionPageType$1["PDP"] = "pdp";
@@ -81,7 +84,43 @@ const INTERACTION_TYPE_CLASS = {
81
84
  [WidgetInteractionType.VARIANT_OPTION_SELECTED]: InteractionClass.INTENTIONAL,
82
85
  [WidgetInteractionType.VARIANT_SELECTOR_DISMISSED]: InteractionClass.NAVIGATIONAL
83
86
  };
87
+ /**
88
+ * Attribution map: which widget a chat open/close should be credited to, given the surface that
89
+ * triggered it.
90
+ *
91
+ * `null` marks a *system-initiated* trigger — the auto-popup timer, a referrer-based prompt, or a
92
+ * merchant `window` API call. Those are not user clicks, so they must not emit an intentional
93
+ * WIDGET_CLICKED. The chat's own WIDGET_EXPANDED still records that the chat opened, so no signal
94
+ * is lost by skipping them.
95
+ *
96
+ * Keyed exhaustively on purpose: adding a ChatElementDisplayLocationV3 member is a compile error
97
+ * until it is given an attribution here, rather than silently defaulting to the wrong widget.
98
+ */
99
+ const CHAT_TRIGGER_WIDGET = {
100
+ [ChatElementDisplayLocationV3.PROMPT_CAROUSEL]: WidgetInteractionComponent.SUGGESTION_BAR,
101
+ [ChatElementDisplayLocationV3.TITLED_PROMPT_CAROUSEL]: WidgetInteractionComponent.EMBEDDED_WIDGET,
102
+ [ChatElementDisplayLocationV3.TYPING_ANIMATION]: WidgetInteractionComponent.EMBEDDED_WIDGET,
103
+ [ChatElementDisplayLocationV3.SOCIAL_PROOF_PRIMARY_BUTTON]: WidgetInteractionComponent.SOCIAL_PROOF,
104
+ [ChatElementDisplayLocationV3.SOCIAL_PROOF_SECONDARY_BUTTON]: WidgetInteractionComponent.SOCIAL_PROOF,
105
+ [ChatElementDisplayLocationV3.SOCIAL_PROOF_TEXT_FIELD]: WidgetInteractionComponent.SOCIAL_PROOF,
106
+ [ChatElementDisplayLocationV3.CHAT_PREVIEW_COMPARISON_PROMPT_BUTTON]: WidgetInteractionComponent.POST_INTERACTION_COMPARISON,
107
+ [ChatElementDisplayLocationV3.CHAT_PREVIEW_COMPARISON_TEXT_FIELD]: WidgetInteractionComponent.POST_INTERACTION_COMPARISON,
108
+ [ChatElementDisplayLocationV3.CHAT_PREVIEW_PROMPT_BUTTON]: WidgetInteractionComponent.CHAT_PREVIEW,
109
+ [ChatElementDisplayLocationV3.CHAT_PREVIEW_TEXT_FIELD]: WidgetInteractionComponent.CHAT_PREVIEW,
110
+ [ChatElementDisplayLocationV3.PROMPT_BUTTON_CAROUSEL_WITH_IMAGE_PROMPT_BUTTON]: WidgetInteractionComponent.SINGLE_IMAGE_PROMPT,
111
+ [ChatElementDisplayLocationV3.PROMPT_BUTTON_CAROUSEL_WITH_IMAGE_TEXT_FIELD]: WidgetInteractionComponent.SINGLE_IMAGE_PROMPT,
112
+ [ChatElementDisplayLocationV3.FLOATING_BUTTON]: WidgetInteractionComponent.FLOATING_BUTTON,
113
+ [ChatElementDisplayLocationV3.FLOATING_CHAT_OVERLAY]: WidgetInteractionComponent.FLOATING_CHAT,
114
+ [ChatElementDisplayLocationV3.FLOATING_CHAT_CLOSE_BUTTON]: WidgetInteractionComponent.FLOATING_CHAT,
115
+ [ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON]: WidgetInteractionComponent.FLOATING_CHAT,
116
+ [ChatElementDisplayLocationV3.FLOATING_CHAT_TEXT_INPUT]: WidgetInteractionComponent.FLOATING_CHAT,
117
+ [ChatElementDisplayLocationV3.PRODUCT_CARD_PROMPT_BUTTON]: WidgetInteractionComponent.IMAGE_PROMPT_CARD,
118
+ [ChatElementDisplayLocationV3.PRODUCT_CARD_TEXT_FIELD]: WidgetInteractionComponent.IMAGE_PROMPT_CARD,
119
+ [ChatElementDisplayLocationV3.WINDOW_API_CALL]: null,
120
+ [ChatElementDisplayLocationV3.REFERRER_BASED_PROMPT]: null,
121
+ [ChatElementDisplayLocationV3.AUTOMATIC_PROMPT]: null
122
+ };
84
123
 
85
124
  //#endregion
86
- export { INTERACTION_TYPE_CLASS, InteractionClass, WidgetInteractionComponent, WidgetInteractionPageType, WidgetInteractionType };
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJuYW1lcyI6WyJJTlRFUkFDVElPTl9UWVBFX0NMQVNTOiBSZWNvcmQ8V2lkZ2V0SW50ZXJhY3Rpb25UeXBlLCBJbnRlcmFjdGlvbkNsYXNzPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi4vLi4vY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgcGFnZV90eXBlOiBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlO1xuICBwYWdlX2lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb25UcmlnZ2VyIHtcbiAgaW50ZXJhY3Rpb25faWQ/OiBzdHJpbmc7XG4gIHdpZGdldDogV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQ7XG4gIHdpZGdldF9pbnRlcmFjdGlvbjogV2lkZ2V0SW50ZXJhY3Rpb25UeXBlO1xuICB3aWRnZXRfaW50ZXJhY3Rpb25fZGF0YT86IFdpZGdldEludGVyYWN0aW9uRGF0YSB8IG51bGw7XG4gIGludGVyYWN0aW9uX2NsYXNzPzogSW50ZXJhY3Rpb25DbGFzcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uIHtcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZTtcbiAgY29udGV4dDogV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0O1xuICB0cmlnZ2VyOiBXaWRnZXRJbnRlcmFjdGlvblRyaWdnZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SW50ZXJhY3Rpb24ge1xuICBldmVudE5hbWU6IEludGVybmFsV2lkZ2V0SW50ZXJhY3Rpb25bJ2V2ZW50TmFtZSddO1xuICB0cmlnZ2VyOiBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uWyd0cmlnZ2VyJ107XG59XG5cbmV4cG9ydCBlbnVtIFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUge1xuICBQRFAgPSAncGRwJyxcbiAgUExQID0gJ3BscCcsXG4gIEhPTUVQQUdFID0gJ2hvbWVwYWdlJyxcbiAgU0VBUkNIID0gJ3NlYXJjaCcsXG4gIE9USEVSID0gJ290aGVyJyxcbiAgQURBUFRJVkVfU1RPUkVGUk9OVCA9ICdhZGFwdGl2ZV9zdG9yZWZyb250Jyxcbn1cblxuZXhwb3J0IGVudW0gV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQge1xuICBFTUJFRERFRF9XSURHRVQgPSAnZW1iZWRkZWRfd2lkZ2V0JyxcbiAgU1VHR0VTVElPTl9CQVIgPSAnc3VnZ2VzdGlvbl9iYXInLFxuICBGTE9BVElOR19CVVRUT04gPSAnZmxvYXRpbmdfYnV0dG9uJyxcbiAgRlVMTF9QQUdFX1NBTEVTX0FHRU5UID0gJ2Z1bGxfcGFnZV9zYWxlc19hZ2VudCcsXG4gIC8vIERlZmF1bHQtdmlldyBwcm9kdWN0IHN1Z2dlc3Rpb24gLyByZWNvbW1lbmRhdGlvbnMgd2lkZ2V0ICh3ZWxjb21lIG92ZXJsYXkpIG9uIHRoZSBBZGFwdGl2ZVxuICAvLyBTdG9yZWZyb250LiBEaXN0aW5jdCBmcm9tIEZVTExfUEFHRV9TQUxFU19BR0VOVCAoaW4tY2hhdCBwcm9kdWN0IGNhcmRzKSBzbyBhbmFseXRpY3MgY2FuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdGF0aWMgc3VnZ2VzdGlvbiBzdXJmYWNlIGZyb20gdGhlIGNvbnZlcnNhdGlvbmFsIHJlY29tbWVuZGVyLlxuICBGVUxMX1BBR0VfU0FMRVNfQUdFTlRfUkVDT01NRU5EQVRJT05TID0gJ2Z1bGxfcGFnZV9zYWxlc19hZ2VudF9yZWNvbW1lbmRhdGlvbnMnLFxuICAvLyBBIGNsaWNrIG9uIHRoZSBBZGQgdG8gQ2FydCBidXR0b24gb2YgYSBGVUxMX1BBR0VfU0FMRVNfQUdFTlRfUkVDT01NRU5EQVRJT05TIGNhcmQgdGhhdFxuICAvLyBmYWxscyBiYWNrIHRvIHRoZSBQRFAgYmVjYXVzZSBubyBtZXJjaGFudCBBZGQgdG8gQ2FydCBpbnRlZ3JhdGlvbiBpcyBhdmFpbGFibGUuIFN0aWxsXG4gIC8vIGZpcmVzIGFzIGEgUFJPRFVDVF9DQVJEX0NMSUNLRUQgZXZlbnQsIGJ1dCB0YWdnZWQgZGlzdGluY3RseSBmcm9tIGEgZGlyZWN0IGNhcmQtYm9keVxuICAvLyBjbGljayBzbyBhbmFseXRpY3MgY2FuIHRlbGwgdGhlIHR3byBhcGFydC5cbiAgRlVMTF9QQUdFX1NBTEVTX0FHRU5UX1JFQ09NTUVOREFUSU9OU19BVENfRkFMTEJBQ0sgPSAnZnVsbF9wYWdlX3NhbGVzX2FnZW50X3JlY29tbWVuZGF0aW9uc19hdGNfZmFsbGJhY2snLFxuICBTT0NJQUxfUFJPT0YgPSAnc29jaWFsX3Byb29mJyxcbiAgQ0hBVF9QUkVWSUVXID0gJ2NoYXRfcHJldmlldycsXG4gIEZMT0FUSU5HX0NIQVQgPSAnZmxvYXRpbmdfY2hhdCcsXG4gIFNJTkdMRV9JTUFHRV9QUk9NUFQgPSAnc2luZ2xlX2ltYWdlX3Byb21wdCcsXG4gIElNQUdFX1BST01QVF9DQVJEID0gJ2ltYWdlX3Byb21wdF9jYXJkJyxcbiAgUE9TVF9JTlRFUkFDVElPTl9DT01QQVJJU09OID0gJ3Bvc3RfaW50ZXJhY3Rpb25fY29tcGFyaXNvbicsXG4gIFBPU1RfSU5URVJBQ1RJT05fRU1CRURERUQgPSAncG9zdF9pbnRlcmFjdGlvbl9lbWJlZGRlZCcsXG59XG5cbmV4cG9ydCBlbnVtIFdpZGdldEludGVyYWN0aW9uVHlwZSB7XG4gIFFVRVJZX0lOUFVUX0NMSUNLRUQgPSAncXVlcnlfaW5wdXRfY2xpY2tlZCcsXG4gIFNVR0dFU1RJT05fQ0xJQ0tFRCA9ICdzdWdnZXN0aW9uX2NsaWNrZWQnLFxuICBXSURHRVRfQ0xJQ0tFRCA9ICd3aWRnZXRfY2xpY2tlZCcsXG4gIFdJREdFVF9IT1ZFUkVEID0gJ3dpZGdldF9ob3ZlcmVkJyxcbiAgV0lER0VUX0VYUEFOREVEID0gJ3dpZGdldF9leHBhbmRlZCcsXG4gIFdJREdFVF9DT0xMQVBTRUQgPSAnd2lkZ2V0X2NvbGxhcHNlZCcsXG4gIFNVR0dFU1RJT05fU0NST0xMRUQgPSAnc3VnZ2VzdGlvbl9zY3JvbGxlZCcsXG4gIExJTktfQ0xJQ0tFRCA9ICdsaW5rX2NsaWNrZWQnLFxuICBQUk9EVUNUX0NBUkRfQ0xJQ0tFRCA9ICdwcm9kdWN0X2NhcmRfY2xpY2tlZCcsXG4gIEFERF9UT19DQVJUX0NMSUNLRUQgPSAnYWRkX3RvX2NhcnRfY2xpY2tlZCcsXG4gIEFERF9UT19DQVJUX0ZBSUxFRCA9ICdhZGRfdG9fY2FydF9mYWlsZWQnLFxuICBURVhUX0xJTktfQ0xJQ0tFRCA9ICd0ZXh0X2xpbmtfY2xpY2tlZCcsXG4gIEFTRl9MSU5LX0JVVFRPTiA9ICdhc2ZfbGlua19idXR0b24nLFxuICBBUlRJQ0xFX0xJTktfQ0xJQ0tFRCA9ICdhcnRpY2xlX2xpbmtfY2xpY2tlZCcsXG4gIFJFVklFV19DQVJEX0NMSUNLRUQgPSAncmV2aWV3X2NhcmRfY2xpY2tlZCcsXG4gIE1FU1NBR0VfU1VCTUlUVEVEID0gJ21lc3NhZ2Vfc3VibWl0dGVkJyxcbiAgTUFOVUFMX1NDUk9MTF9UT19CT1RUT00gPSAnbWFudWFsX3Njcm9sbF90b19ib3R0b20nLFxuICBWT0lDRV9UUkFOU0NSSVBUSU9OX1NUQVJURUQgPSAndm9pY2VfdHJhbnNjcmlwdGlvbl9zdGFydGVkJyxcbiAgVk9JQ0VfVFJBTlNDUklQVElPTl9DT01QTEVURUQgPSAndm9pY2VfdHJhbnNjcmlwdGlvbl9jb21wbGV0ZWQnLFxuICBPVkVSTEFZX0RJU01JU1NFRCA9ICdvdmVybGF5X2Rpc21pc3NlZCcsXG4gIFZBUklBTlRfU0VMRUNUT1JfT1BFTkVEID0gJ3ZhcmlhbnRfc2VsZWN0b3Jfb3BlbmVkJyxcbiAgVkFSSUFOVF9PUFRJT05fU0VMRUNURUQgPSAndmFyaWFudF9vcHRpb25fc2VsZWN0ZWQnLFxuICBWQVJJQU5UX1NFTEVDVE9SX0RJU01JU1NFRCA9ICd2YXJpYW50X3NlbGVjdG9yX2Rpc21pc3NlZCcsXG59XG5cbmV4cG9ydCBlbnVtIEludGVyYWN0aW9uQ2xhc3Mge1xuICBQQVNTSVZFID0gJ3Bhc3NpdmUnLCAvLyBObyB1c2VyIGNvbW1pdG1lbnQg4oCUIGhvdmVyLCBzY3JvbGwsIHZpc2liaWxpdHkgdHJpZ2dlcnNcbiAgTkFWSUdBVElPTkFMID0gJ25hdmlnYXRpb25hbCcsIC8vIE9wZW5zL2Nsb3NlcyBzb21ldGhpbmcg4oCUIG9mdGVuIGEgc2lkZSBlZmZlY3Qgb2YgaW50ZW50XG4gIElOVEVOVElPTkFMID0gJ2ludGVudGlvbmFsJywgLy8gRGVsaWJlcmF0ZSB1c2VyIGFjdGlvbiDigJQgY2xpY2tzLCBzdWJtaXRzLCB0eXBlZCBxdWVyaWVzXG59XG5cbmV4cG9ydCBjb25zdCBJTlRFUkFDVElPTl9UWVBFX0NMQVNTOiBSZWNvcmQ8V2lkZ2V0SW50ZXJhY3Rpb25UeXBlLCBJbnRlcmFjdGlvbkNsYXNzPiA9IHtcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5RVUVSWV9JTlBVVF9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5TVUdHRVNUSU9OX0NMSUNLRURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLldJREdFVF9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5XSURHRVRfSE9WRVJFRF06IEludGVyYWN0aW9uQ2xhc3MuUEFTU0lWRSxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5XSURHRVRfRVhQQU5ERURdOiBJbnRlcmFjdGlvbkNsYXNzLk5BVklHQVRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5XSURHRVRfQ09MTEFQU0VEXTogSW50ZXJhY3Rpb25DbGFzcy5OQVZJR0FUSU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuU1VHR0VTVElPTl9TQ1JPTExFRF06IEludGVyYWN0aW9uQ2xhc3MuUEFTU0lWRSxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5MSU5LX0NMSUNLRURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlBST0RVQ1RfQ0FSRF9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5BRERfVE9fQ0FSVF9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5BRERfVE9fQ0FSVF9GQUlMRURdOiBJbnRlcmFjdGlvbkNsYXNzLlBBU1NJVkUsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuVEVYVF9MSU5LX0NMSUNLRURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLkFTRl9MSU5LX0JVVFRPTl06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuQVJUSUNMRV9MSU5LX0NMSUNLRURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlJFVklFV19DQVJEX0NMSUNLRURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLk1FU1NBR0VfU1VCTUlUVEVEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5NQU5VQUxfU0NST0xMX1RPX0JPVFRPTV06IEludGVyYWN0aW9uQ2xhc3MuUEFTU0lWRSxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5WT0lDRV9UUkFOU0NSSVBUSU9OX1NUQVJURURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlZPSUNFX1RSQU5TQ1JJUFRJT05fQ09NUExFVEVEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5PVkVSTEFZX0RJU01JU1NFRF06IEludGVyYWN0aW9uQ2xhc3MuTkFWSUdBVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlZBUklBTlRfU0VMRUNUT1JfT1BFTkVEXTogSW50ZXJhY3Rpb25DbGFzcy5OQVZJR0FUSU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuVkFSSUFOVF9PUFRJT05fU0VMRUNURURdOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlZBUklBTlRfU0VMRUNUT1JfRElTTUlTU0VEXTogSW50ZXJhY3Rpb25DbGFzcy5OQVZJR0FUSU9OQUwsXG59O1xuXG5leHBvcnQgdHlwZSBVUkwgPSB7XG4gIHVybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvZHVjdCA9IHtcbiAgcHJvZHVjdF9pZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgV2lkZ2V0TG9jYXRpb24gPSAnY2hhdCcgfCAnb3ZlcmxheScgfCAndmFyaWFudF9zZWxlY3Rvcic7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RXaXRoTG9jYXRpb24gPSBQcm9kdWN0ICYge1xuICB3aWRnZXRfbG9jYXRpb246IFdpZGdldExvY2F0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgUmV2aWV3ID0ge1xuICByZXZpZXdfaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb24gPSB7XG4gIHN1Z2dlc3Rpb25faWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3QgPSB7XG4gIHJlcXVlc3RfdGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sbGFwc2UgPSB7XG4gIGNvbGxhcHNlX3NvdXJjZTogJ2Nsb3NlX2J1dHRvbicgfCAnc3dpcGUnIHwgJ2JvZHlfY2xpY2snO1xufTtcblxuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvblNjcm9sbGVkID0ge1xuICBzdWdnZXN0aW9uX3Njcm9sbGVkOiBTdWdnZXN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbkNsaWNrZWQgPSB7XG4gIHN1Z2dlc3Rpb25fY2xpY2tlZDogU3VnZ2VzdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb25Ib3ZlcmVkID0ge1xuICBzdWdnZXN0aW9uX2hvdmVyZWQ6IFN1Z2dlc3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBMaW5rQ2xpY2tlZCA9IHtcbiAgbGlua19jbGlja2VkOiBVUkw7XG59O1xuXG5leHBvcnQgdHlwZSBXaWRnZXRDb2xsYXBzZWQgPSB7XG4gIHdpZGdldF9jb2xsYXBzZWQ6IENvbGxhcHNlO1xufTtcblxuZXhwb3J0IHR5cGUgVGV4dExpbmtDbGlja2VkID0ge1xuICB0ZXh0X2xpbmtfY2xpY2tlZDogVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgQXNmTGlua0J1dHRvbiA9IHtcbiAgYXNmX2xpbmtfYnV0dG9uOiBVUkw7XG59O1xuXG5leHBvcnQgdHlwZSBBcnRpY2xlTGlua0NsaWNrZWQgPSB7XG4gIGFydGljbGVfbGlua19jbGlja2VkOiBVUkw7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0Q2FyZENsaWNrZWQgPSB7XG4gIHByb2R1Y3RfY2FyZF9jbGlja2VkOiBQcm9kdWN0O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkVG9DYXJ0Q2xpY2tlZCA9IHtcbiAgYWRkX3RvX2NhcnRfY2xpY2tlZDogUHJvZHVjdFdpdGhMb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFkZFRvQ2FydEZhaWxlZCA9IHtcbiAgYWRkX3RvX2NhcnRfZmFpbGVkOiBQcm9kdWN0V2l0aExvY2F0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgUmV2aWV3Q2FyZENsaWNrZWQgPSB7XG4gIHJldmlld19jYXJkX2NsaWNrZWQ6IFJldmlldztcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VTdWJtaXR0ZWQgPSB7XG4gIG1lc3NhZ2Vfc3VibWl0dGVkOiBSZXF1ZXN0O1xufTtcblxuZXhwb3J0IHR5cGUgVm9pY2VUcmFuc2NyaXB0aW9uID0ge1xuICB0cmFuc2NyaXB0aW9uOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RlZFZhcmlhbnRPcHRpb24gPSB7XG4gIHByb2R1Y3RfaWQ6IHN0cmluZztcbiAgb3B0aW9uX25hbWU6IHN0cmluZztcbiAgb3B0aW9uX3ZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYXJpYW50U2VsZWN0b3JPcGVuZWQgPSB7XG4gIHZhcmlhbnRfc2VsZWN0b3Jfb3BlbmVkOiBQcm9kdWN0O1xufTtcblxuZXhwb3J0IHR5cGUgVmFyaWFudE9wdGlvblNlbGVjdGVkID0ge1xuICB2YXJpYW50X29wdGlvbl9zZWxlY3RlZDogU2VsZWN0ZWRWYXJpYW50T3B0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVmFyaWFudFNlbGVjdG9yRGlzbWlzc2VkID0ge1xuICB2YXJpYW50X3NlbGVjdG9yX2Rpc21pc3NlZDogUHJvZHVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZGdldEludGVyYWN0aW9uRGF0YSA9XG4gIHwgU3VnZ2VzdGlvblNjcm9sbGVkXG4gIHwgU3VnZ2VzdGlvbkNsaWNrZWRcbiAgfCBTdWdnZXN0aW9uSG92ZXJlZFxuICB8IExpbmtDbGlja2VkXG4gIHwgV2lkZ2V0Q29sbGFwc2VkXG4gIHwgVGV4dExpbmtDbGlja2VkXG4gIHwgQXNmTGlua0J1dHRvblxuICB8IEFydGljbGVMaW5rQ2xpY2tlZFxuICB8IFByb2R1Y3RDYXJkQ2xpY2tlZFxuICB8IEFkZFRvQ2FydENsaWNrZWRcbiAgfCBBZGRUb0NhcnRGYWlsZWRcbiAgfCBSZXZpZXdDYXJkQ2xpY2tlZFxuICB8IE1lc3NhZ2VTdWJtaXR0ZWRcbiAgfCBWb2ljZVRyYW5zY3JpcHRpb25cbiAgfCBWYXJpYW50U2VsZWN0b3JPcGVuZWRcbiAgfCBWYXJpYW50T3B0aW9uU2VsZWN0ZWRcbiAgfCBWYXJpYW50U2VsZWN0b3JEaXNtaXNzZWQ7XG4iXSwibWFwcGluZ3MiOiI7QUEwQkEsSUFBWSxrRkFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0YsSUFBWSxvRkFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHRixJQUFZLDBFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0YsSUFBWSxnRUFBTDtBQUNMO0FBQ0E7QUFDQTs7O0FBR0YsTUFBYUEseUJBQTBFO0VBQ3BGLHNCQUFzQixzQkFBc0IsaUJBQWlCO0VBQzdELHNCQUFzQixxQkFBcUIsaUJBQWlCO0VBQzVELHNCQUFzQixpQkFBaUIsaUJBQWlCO0VBQ3hELHNCQUFzQixpQkFBaUIsaUJBQWlCO0VBQ3hELHNCQUFzQixrQkFBa0IsaUJBQWlCO0VBQ3pELHNCQUFzQixtQkFBbUIsaUJBQWlCO0VBQzFELHNCQUFzQixzQkFBc0IsaUJBQWlCO0VBQzdELHNCQUFzQixlQUFlLGlCQUFpQjtFQUN0RCxzQkFBc0IsdUJBQXVCLGlCQUFpQjtFQUM5RCxzQkFBc0Isc0JBQXNCLGlCQUFpQjtFQUM3RCxzQkFBc0IscUJBQXFCLGlCQUFpQjtFQUM1RCxzQkFBc0Isb0JBQW9CLGlCQUFpQjtFQUMzRCxzQkFBc0Isa0JBQWtCLGlCQUFpQjtFQUN6RCxzQkFBc0IsdUJBQXVCLGlCQUFpQjtFQUM5RCxzQkFBc0Isc0JBQXNCLGlCQUFpQjtFQUM3RCxzQkFBc0Isb0JBQW9CLGlCQUFpQjtFQUMzRCxzQkFBc0IsMEJBQTBCLGlCQUFpQjtFQUNqRSxzQkFBc0IsOEJBQThCLGlCQUFpQjtFQUNyRSxzQkFBc0IsZ0NBQWdDLGlCQUFpQjtFQUN2RSxzQkFBc0Isb0JBQW9CLGlCQUFpQjtFQUMzRCxzQkFBc0IsMEJBQTBCLGlCQUFpQjtFQUNqRSxzQkFBc0IsMEJBQTBCLGlCQUFpQjtFQUNqRSxzQkFBc0IsNkJBQTZCLGlCQUFpQjtDQUN0RSJ9
125
+ export { CHAT_TRIGGER_WIDGET, INTERACTION_TYPE_CLASS, InteractionClass, WidgetInteractionComponent, WidgetInteractionPageType, WidgetInteractionType };
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJuYW1lcyI6WyJJTlRFUkFDVElPTl9UWVBFX0NMQVNTOiBSZWNvcmQ8V2lkZ2V0SW50ZXJhY3Rpb25UeXBlLCBJbnRlcmFjdGlvbkNsYXNzPiIsIkNIQVRfVFJJR0dFUl9XSURHRVQ6IFJlY29yZDxcbiAgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyxcbiAgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQgfCBudWxsXG4+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4uLy4uL2NvbnRleHRzL2FtcGxpdHVkZUNvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldEludGVyYWN0aW9uQ29udGV4dCB7XG4gIHBhZ2VfdHlwZTogV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZTtcbiAgcGFnZV9pZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldEludGVyYWN0aW9uVHJpZ2dlciB7XG4gIGludGVyYWN0aW9uX2lkPzogc3RyaW5nO1xuICB3aWRnZXQ6IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50O1xuICB3aWRnZXRfaW50ZXJhY3Rpb246IFdpZGdldEludGVyYWN0aW9uVHlwZTtcbiAgd2lkZ2V0X2ludGVyYWN0aW9uX2RhdGE/OiBXaWRnZXRJbnRlcmFjdGlvbkRhdGEgfCBudWxsO1xuICBpbnRlcmFjdGlvbl9jbGFzcz86IEludGVyYWN0aW9uQ2xhc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvbiB7XG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWU7XG4gIGNvbnRleHQ6IFdpZGdldEludGVyYWN0aW9uQ29udGV4dDtcbiAgdHJpZ2dlcjogV2lkZ2V0SW50ZXJhY3Rpb25UcmlnZ2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldEludGVyYWN0aW9uIHtcbiAgZXZlbnROYW1lOiBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uWydldmVudE5hbWUnXTtcbiAgdHJpZ2dlcjogSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvblsndHJpZ2dlciddO1xufVxuXG5leHBvcnQgZW51bSBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlIHtcbiAgUERQID0gJ3BkcCcsXG4gIFBMUCA9ICdwbHAnLFxuICBIT01FUEFHRSA9ICdob21lcGFnZScsXG4gIFNFQVJDSCA9ICdzZWFyY2gnLFxuICBPVEhFUiA9ICdvdGhlcicsXG4gIEFEQVBUSVZFX1NUT1JFRlJPTlQgPSAnYWRhcHRpdmVfc3RvcmVmcm9udCcsXG59XG5cbmV4cG9ydCBlbnVtIFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50IHtcbiAgRU1CRURERURfV0lER0VUID0gJ2VtYmVkZGVkX3dpZGdldCcsXG4gIFNVR0dFU1RJT05fQkFSID0gJ3N1Z2dlc3Rpb25fYmFyJyxcbiAgRkxPQVRJTkdfQlVUVE9OID0gJ2Zsb2F0aW5nX2J1dHRvbicsXG4gIEZVTExfUEFHRV9TQUxFU19BR0VOVCA9ICdmdWxsX3BhZ2Vfc2FsZXNfYWdlbnQnLFxuICAvLyBEZWZhdWx0LXZpZXcgcHJvZHVjdCBzdWdnZXN0aW9uIC8gcmVjb21tZW5kYXRpb25zIHdpZGdldCAod2VsY29tZSBvdmVybGF5KSBvbiB0aGUgQWRhcHRpdmVcbiAgLy8gU3RvcmVmcm9udC4gRGlzdGluY3QgZnJvbSBGVUxMX1BBR0VfU0FMRVNfQUdFTlQgKGluLWNoYXQgcHJvZHVjdCBjYXJkcykgc28gYW5hbHl0aWNzIGNhblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RhdGljIHN1Z2dlc3Rpb24gc3VyZmFjZSBmcm9tIHRoZSBjb252ZXJzYXRpb25hbCByZWNvbW1lbmRlci5cbiAgRlVMTF9QQUdFX1NBTEVTX0FHRU5UX1JFQ09NTUVOREFUSU9OUyA9ICdmdWxsX3BhZ2Vfc2FsZXNfYWdlbnRfcmVjb21tZW5kYXRpb25zJyxcbiAgLy8gQSBjbGljayBvbiB0aGUgQWRkIHRvIENhcnQgYnV0dG9uIG9mIGEgRlVMTF9QQUdFX1NBTEVTX0FHRU5UX1JFQ09NTUVOREFUSU9OUyBjYXJkIHRoYXRcbiAgLy8gZmFsbHMgYmFjayB0byB0aGUgUERQIGJlY2F1c2Ugbm8gbWVyY2hhbnQgQWRkIHRvIENhcnQgaW50ZWdyYXRpb24gaXMgYXZhaWxhYmxlLiBTdGlsbFxuICAvLyBmaXJlcyBhcyBhIFBST0RVQ1RfQ0FSRF9DTElDS0VEIGV2ZW50LCBidXQgdGFnZ2VkIGRpc3RpbmN0bHkgZnJvbSBhIGRpcmVjdCBjYXJkLWJvZHlcbiAgLy8gY2xpY2sgc28gYW5hbHl0aWNzIGNhbiB0ZWxsIHRoZSB0d28gYXBhcnQuXG4gIEZVTExfUEFHRV9TQUxFU19BR0VOVF9SRUNPTU1FTkRBVElPTlNfQVRDX0ZBTExCQUNLID0gJ2Z1bGxfcGFnZV9zYWxlc19hZ2VudF9yZWNvbW1lbmRhdGlvbnNfYXRjX2ZhbGxiYWNrJyxcbiAgU09DSUFMX1BST09GID0gJ3NvY2lhbF9wcm9vZicsXG4gIENIQVRfUFJFVklFVyA9ICdjaGF0X3ByZXZpZXcnLFxuICBGTE9BVElOR19DSEFUID0gJ2Zsb2F0aW5nX2NoYXQnLFxuICBTSU5HTEVfSU1BR0VfUFJPTVBUID0gJ3NpbmdsZV9pbWFnZV9wcm9tcHQnLFxuICBJTUFHRV9QUk9NUFRfQ0FSRCA9ICdpbWFnZV9wcm9tcHRfY2FyZCcsXG4gIFBPU1RfSU5URVJBQ1RJT05fQ09NUEFSSVNPTiA9ICdwb3N0X2ludGVyYWN0aW9uX2NvbXBhcmlzb24nLFxuICBQT1NUX0lOVEVSQUNUSU9OX0VNQkVEREVEID0gJ3Bvc3RfaW50ZXJhY3Rpb25fZW1iZWRkZWQnLFxufVxuXG5leHBvcnQgZW51bSBXaWRnZXRJbnRlcmFjdGlvblR5cGUge1xuICBRVUVSWV9JTlBVVF9DTElDS0VEID0gJ3F1ZXJ5X2lucHV0X2NsaWNrZWQnLFxuICBTVUdHRVNUSU9OX0NMSUNLRUQgPSAnc3VnZ2VzdGlvbl9jbGlja2VkJyxcbiAgV0lER0VUX0NMSUNLRUQgPSAnd2lkZ2V0X2NsaWNrZWQnLFxuICBXSURHRVRfSE9WRVJFRCA9ICd3aWRnZXRfaG92ZXJlZCcsXG4gIFdJREdFVF9FWFBBTkRFRCA9ICd3aWRnZXRfZXhwYW5kZWQnLFxuICBXSURHRVRfQ09MTEFQU0VEID0gJ3dpZGdldF9jb2xsYXBzZWQnLFxuICBTVUdHRVNUSU9OX1NDUk9MTEVEID0gJ3N1Z2dlc3Rpb25fc2Nyb2xsZWQnLFxuICBMSU5LX0NMSUNLRUQgPSAnbGlua19jbGlja2VkJyxcbiAgUFJPRFVDVF9DQVJEX0NMSUNLRUQgPSAncHJvZHVjdF9jYXJkX2NsaWNrZWQnLFxuICBBRERfVE9fQ0FSVF9DTElDS0VEID0gJ2FkZF90b19jYXJ0X2NsaWNrZWQnLFxuICBBRERfVE9fQ0FSVF9GQUlMRUQgPSAnYWRkX3RvX2NhcnRfZmFpbGVkJyxcbiAgVEVYVF9MSU5LX0NMSUNLRUQgPSAndGV4dF9saW5rX2NsaWNrZWQnLFxuICBBU0ZfTElOS19CVVRUT04gPSAnYXNmX2xpbmtfYnV0dG9uJyxcbiAgQVJUSUNMRV9MSU5LX0NMSUNLRUQgPSAnYXJ0aWNsZV9saW5rX2NsaWNrZWQnLFxuICBSRVZJRVdfQ0FSRF9DTElDS0VEID0gJ3Jldmlld19jYXJkX2NsaWNrZWQnLFxuICBNRVNTQUdFX1NVQk1JVFRFRCA9ICdtZXNzYWdlX3N1Ym1pdHRlZCcsXG4gIE1BTlVBTF9TQ1JPTExfVE9fQk9UVE9NID0gJ21hbnVhbF9zY3JvbGxfdG9fYm90dG9tJyxcbiAgVk9JQ0VfVFJBTlNDUklQVElPTl9TVEFSVEVEID0gJ3ZvaWNlX3RyYW5zY3JpcHRpb25fc3RhcnRlZCcsXG4gIFZPSUNFX1RSQU5TQ1JJUFRJT05fQ09NUExFVEVEID0gJ3ZvaWNlX3RyYW5zY3JpcHRpb25fY29tcGxldGVkJyxcbiAgT1ZFUkxBWV9ESVNNSVNTRUQgPSAnb3ZlcmxheV9kaXNtaXNzZWQnLFxuICBWQVJJQU5UX1NFTEVDVE9SX09QRU5FRCA9ICd2YXJpYW50X3NlbGVjdG9yX29wZW5lZCcsXG4gIFZBUklBTlRfT1BUSU9OX1NFTEVDVEVEID0gJ3ZhcmlhbnRfb3B0aW9uX3NlbGVjdGVkJyxcbiAgVkFSSUFOVF9TRUxFQ1RPUl9ESVNNSVNTRUQgPSAndmFyaWFudF9zZWxlY3Rvcl9kaXNtaXNzZWQnLFxufVxuXG5leHBvcnQgZW51bSBJbnRlcmFjdGlvbkNsYXNzIHtcbiAgUEFTU0lWRSA9ICdwYXNzaXZlJywgLy8gTm8gdXNlciBjb21taXRtZW50IOKAlCBob3Zlciwgc2Nyb2xsLCB2aXNpYmlsaXR5IHRyaWdnZXJzXG4gIE5BVklHQVRJT05BTCA9ICduYXZpZ2F0aW9uYWwnLCAvLyBPcGVucy9jbG9zZXMgc29tZXRoaW5nIOKAlCBvZnRlbiBhIHNpZGUgZWZmZWN0IG9mIGludGVudFxuICBJTlRFTlRJT05BTCA9ICdpbnRlbnRpb25hbCcsIC8vIERlbGliZXJhdGUgdXNlciBhY3Rpb24g4oCUIGNsaWNrcywgc3VibWl0cywgdHlwZWQgcXVlcmllc1xufVxuXG5leHBvcnQgY29uc3QgSU5URVJBQ1RJT05fVFlQRV9DTEFTUzogUmVjb3JkPFdpZGdldEludGVyYWN0aW9uVHlwZSwgSW50ZXJhY3Rpb25DbGFzcz4gPSB7XG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuUVVFUllfSU5QVVRfQ0xJQ0tFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuU1VHR0VTVElPTl9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5XSURHRVRfQ0xJQ0tFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuV0lER0VUX0hPVkVSRURdOiBJbnRlcmFjdGlvbkNsYXNzLlBBU1NJVkUsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuV0lER0VUX0VYUEFOREVEXTogSW50ZXJhY3Rpb25DbGFzcy5OQVZJR0FUSU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuV0lER0VUX0NPTExBUFNFRF06IEludGVyYWN0aW9uQ2xhc3MuTkFWSUdBVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlNVR0dFU1RJT05fU0NST0xMRURdOiBJbnRlcmFjdGlvbkNsYXNzLlBBU1NJVkUsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuTElOS19DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5QUk9EVUNUX0NBUkRfQ0xJQ0tFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuQUREX1RPX0NBUlRfQ0xJQ0tFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuQUREX1RPX0NBUlRfRkFJTEVEXTogSW50ZXJhY3Rpb25DbGFzcy5QQVNTSVZFLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlRFWFRfTElOS19DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5BU0ZfTElOS19CVVRUT05dOiBJbnRlcmFjdGlvbkNsYXNzLklOVEVOVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLkFSVElDTEVfTElOS19DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5SRVZJRVdfQ0FSRF9DTElDS0VEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5NRVNTQUdFX1NVQk1JVFRFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuTUFOVUFMX1NDUk9MTF9UT19CT1RUT01dOiBJbnRlcmFjdGlvbkNsYXNzLlBBU1NJVkUsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuVk9JQ0VfVFJBTlNDUklQVElPTl9TVEFSVEVEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5WT0lDRV9UUkFOU0NSSVBUSU9OX0NPTVBMRVRFRF06IEludGVyYWN0aW9uQ2xhc3MuSU5URU5USU9OQUwsXG4gIFtXaWRnZXRJbnRlcmFjdGlvblR5cGUuT1ZFUkxBWV9ESVNNSVNTRURdOiBJbnRlcmFjdGlvbkNsYXNzLk5BVklHQVRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5WQVJJQU5UX1NFTEVDVE9SX09QRU5FRF06IEludGVyYWN0aW9uQ2xhc3MuTkFWSUdBVElPTkFMLFxuICBbV2lkZ2V0SW50ZXJhY3Rpb25UeXBlLlZBUklBTlRfT1BUSU9OX1NFTEVDVEVEXTogSW50ZXJhY3Rpb25DbGFzcy5JTlRFTlRJT05BTCxcbiAgW1dpZGdldEludGVyYWN0aW9uVHlwZS5WQVJJQU5UX1NFTEVDVE9SX0RJU01JU1NFRF06IEludGVyYWN0aW9uQ2xhc3MuTkFWSUdBVElPTkFMLFxufTtcblxuLyoqXG4gKiBBdHRyaWJ1dGlvbiBtYXA6IHdoaWNoIHdpZGdldCBhIGNoYXQgb3Blbi9jbG9zZSBzaG91bGQgYmUgY3JlZGl0ZWQgdG8sIGdpdmVuIHRoZSBzdXJmYWNlIHRoYXRcbiAqIHRyaWdnZXJlZCBpdC5cbiAqXG4gKiBgbnVsbGAgbWFya3MgYSAqc3lzdGVtLWluaXRpYXRlZCogdHJpZ2dlciDigJQgdGhlIGF1dG8tcG9wdXAgdGltZXIsIGEgcmVmZXJyZXItYmFzZWQgcHJvbXB0LCBvciBhXG4gKiBtZXJjaGFudCBgd2luZG93YCBBUEkgY2FsbC4gVGhvc2UgYXJlIG5vdCB1c2VyIGNsaWNrcywgc28gdGhleSBtdXN0IG5vdCBlbWl0IGFuIGludGVudGlvbmFsXG4gKiBXSURHRVRfQ0xJQ0tFRC4gVGhlIGNoYXQncyBvd24gV0lER0VUX0VYUEFOREVEIHN0aWxsIHJlY29yZHMgdGhhdCB0aGUgY2hhdCBvcGVuZWQsIHNvIG5vIHNpZ25hbFxuICogaXMgbG9zdCBieSBza2lwcGluZyB0aGVtLlxuICpcbiAqIEtleWVkIGV4aGF1c3RpdmVseSBvbiBwdXJwb3NlOiBhZGRpbmcgYSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzIG1lbWJlciBpcyBhIGNvbXBpbGUgZXJyb3JcbiAqIHVudGlsIGl0IGlzIGdpdmVuIGFuIGF0dHJpYnV0aW9uIGhlcmUsIHJhdGhlciB0aGFuIHNpbGVudGx5IGRlZmF1bHRpbmcgdG8gdGhlIHdyb25nIHdpZGdldC5cbiAqL1xuZXhwb3J0IGNvbnN0IENIQVRfVFJJR0dFUl9XSURHRVQ6IFJlY29yZDxcbiAgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyxcbiAgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQgfCBudWxsXG4+ID0ge1xuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9NUFRfQ0FST1VTRUxdOiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5TVUdHRVNUSU9OX0JBUixcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuVElUTEVEX1BST01QVF9DQVJPVVNFTF06IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50LkVNQkVEREVEX1dJREdFVCxcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuVFlQSU5HX0FOSU1BVElPTl06IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50LkVNQkVEREVEX1dJREdFVCxcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5TT0NJQUxfUFJPT0YsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5TT0NJQUxfUFJPT0YsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEXTogV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQuU09DSUFMX1BST09GLFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9QUk9NUFRfQlVUVE9OXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5QT1NUX0lOVEVSQUNUSU9OX0NPTVBBUklTT04sXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTERdOlxuICAgIFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50LlBPU1RfSU5URVJBQ1RJT05fQ09NUEFSSVNPTixcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX1BST01QVF9CVVRUT05dOlxuICAgIFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50LkNIQVRfUFJFVklFVyxcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX1RFWFRfRklFTERdOiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5DSEFUX1BSRVZJRVcsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST01QVF9CVVRUT05fQ0FST1VTRUxfV0lUSF9JTUFHRV9QUk9NUFRfQlVUVE9OXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5TSU5HTEVfSU1BR0VfUFJPTVBULFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9NUFRfQlVUVE9OX0NBUk9VU0VMX1dJVEhfSU1BR0VfVEVYVF9GSUVMRF06XG4gICAgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQuU0lOR0xFX0lNQUdFX1BST01QVCxcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuRkxPQVRJTkdfQlVUVE9OXTogV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQuRkxPQVRJTkdfQlVUVE9OLFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX09WRVJMQVldOiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5GTE9BVElOR19DSEFULFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTl06XG4gICAgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQuRkxPQVRJTkdfQ0hBVCxcbiAgW0NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuRkxPQVRJTkdfQ0hBVF9QUk9NUFRfQlVUVE9OXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5GTE9BVElOR19DSEFULFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX1RFWFRfSU5QVVRdOiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5GTE9BVElOR19DSEFULFxuICBbQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTl06XG4gICAgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQuSU1BR0VfUFJPTVBUX0NBUkQsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST0RVQ1RfQ0FSRF9URVhUX0ZJRUxEXTpcbiAgICBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudC5JTUFHRV9QUk9NUFRfQ0FSRCxcbiAgLy8gU3lzdGVtLWluaXRpYXRlZCDigJQgc2VlIG5vdGUgYWJvdmUuXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLldJTkRPV19BUElfQ0FMTF06IG51bGwsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlJFRkVSUkVSX0JBU0VEX1BST01QVF06IG51bGwsXG4gIFtDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkFVVE9NQVRJQ19QUk9NUFRdOiBudWxsLFxufTtcblxuZXhwb3J0IHR5cGUgVVJMID0ge1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3QgPSB7XG4gIHByb2R1Y3RfaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFdpZGdldExvY2F0aW9uID0gJ2NoYXQnIHwgJ292ZXJsYXknIHwgJ3ZhcmlhbnRfc2VsZWN0b3InO1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0V2l0aExvY2F0aW9uID0gUHJvZHVjdCAmIHtcbiAgd2lkZ2V0X2xvY2F0aW9uOiBXaWRnZXRMb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJldmlldyA9IHtcbiAgcmV2aWV3X2lkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uID0ge1xuICBzdWdnZXN0aW9uX2lkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBSZXF1ZXN0ID0ge1xuICByZXF1ZXN0X3RleHQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbGxhcHNlID0ge1xuICBjb2xsYXBzZV9zb3VyY2U6ICdjbG9zZV9idXR0b24nIHwgJ3N3aXBlJyB8ICdib2R5X2NsaWNrJztcbn07XG5cbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb25TY3JvbGxlZCA9IHtcbiAgc3VnZ2VzdGlvbl9zY3JvbGxlZDogU3VnZ2VzdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFN1Z2dlc3Rpb25DbGlja2VkID0ge1xuICBzdWdnZXN0aW9uX2NsaWNrZWQ6IFN1Z2dlc3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uSG92ZXJlZCA9IHtcbiAgc3VnZ2VzdGlvbl9ob3ZlcmVkOiBTdWdnZXN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTGlua0NsaWNrZWQgPSB7XG4gIGxpbmtfY2xpY2tlZDogVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgV2lkZ2V0Q29sbGFwc2VkID0ge1xuICB3aWRnZXRfY29sbGFwc2VkOiBDb2xsYXBzZTtcbn07XG5cbmV4cG9ydCB0eXBlIFRleHRMaW5rQ2xpY2tlZCA9IHtcbiAgdGV4dF9saW5rX2NsaWNrZWQ6IFVSTDtcbn07XG5cbmV4cG9ydCB0eXBlIEFzZkxpbmtCdXR0b24gPSB7XG4gIGFzZl9saW5rX2J1dHRvbjogVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgQXJ0aWNsZUxpbmtDbGlja2VkID0ge1xuICBhcnRpY2xlX2xpbmtfY2xpY2tlZDogVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvZHVjdENhcmRDbGlja2VkID0ge1xuICBwcm9kdWN0X2NhcmRfY2xpY2tlZDogUHJvZHVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIEFkZFRvQ2FydENsaWNrZWQgPSB7XG4gIGFkZF90b19jYXJ0X2NsaWNrZWQ6IFByb2R1Y3RXaXRoTG9jYXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBBZGRUb0NhcnRGYWlsZWQgPSB7XG4gIGFkZF90b19jYXJ0X2ZhaWxlZDogUHJvZHVjdFdpdGhMb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJldmlld0NhcmRDbGlja2VkID0ge1xuICByZXZpZXdfY2FyZF9jbGlja2VkOiBSZXZpZXc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlU3VibWl0dGVkID0ge1xuICBtZXNzYWdlX3N1Ym1pdHRlZDogUmVxdWVzdDtcbn07XG5cbmV4cG9ydCB0eXBlIFZvaWNlVHJhbnNjcmlwdGlvbiA9IHtcbiAgdHJhbnNjcmlwdGlvbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRWYXJpYW50T3B0aW9uID0ge1xuICBwcm9kdWN0X2lkOiBzdHJpbmc7XG4gIG9wdGlvbl9uYW1lOiBzdHJpbmc7XG4gIG9wdGlvbl92YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFyaWFudFNlbGVjdG9yT3BlbmVkID0ge1xuICB2YXJpYW50X3NlbGVjdG9yX29wZW5lZDogUHJvZHVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIFZhcmlhbnRPcHRpb25TZWxlY3RlZCA9IHtcbiAgdmFyaWFudF9vcHRpb25fc2VsZWN0ZWQ6IFNlbGVjdGVkVmFyaWFudE9wdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhcmlhbnRTZWxlY3RvckRpc21pc3NlZCA9IHtcbiAgdmFyaWFudF9zZWxlY3Rvcl9kaXNtaXNzZWQ6IFByb2R1Y3Q7XG59O1xuXG5leHBvcnQgdHlwZSBXaWRnZXRJbnRlcmFjdGlvbkRhdGEgPVxuICB8IFN1Z2dlc3Rpb25TY3JvbGxlZFxuICB8IFN1Z2dlc3Rpb25DbGlja2VkXG4gIHwgU3VnZ2VzdGlvbkhvdmVyZWRcbiAgfCBMaW5rQ2xpY2tlZFxuICB8IFdpZGdldENvbGxhcHNlZFxuICB8IFRleHRMaW5rQ2xpY2tlZFxuICB8IEFzZkxpbmtCdXR0b25cbiAgfCBBcnRpY2xlTGlua0NsaWNrZWRcbiAgfCBQcm9kdWN0Q2FyZENsaWNrZWRcbiAgfCBBZGRUb0NhcnRDbGlja2VkXG4gIHwgQWRkVG9DYXJ0RmFpbGVkXG4gIHwgUmV2aWV3Q2FyZENsaWNrZWRcbiAgfCBNZXNzYWdlU3VibWl0dGVkXG4gIHwgVm9pY2VUcmFuc2NyaXB0aW9uXG4gIHwgVmFyaWFudFNlbGVjdG9yT3BlbmVkXG4gIHwgVmFyaWFudE9wdGlvblNlbGVjdGVkXG4gIHwgVmFyaWFudFNlbGVjdG9yRGlzbWlzc2VkO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBMkJBLElBQVksa0ZBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdGLElBQVksb0ZBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0YsSUFBWSwwRUFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdGLElBQVksZ0VBQUw7QUFDTDtBQUNBO0FBQ0E7OztBQUdGLE1BQWFBLHlCQUEwRTtFQUNwRixzQkFBc0Isc0JBQXNCLGlCQUFpQjtFQUM3RCxzQkFBc0IscUJBQXFCLGlCQUFpQjtFQUM1RCxzQkFBc0IsaUJBQWlCLGlCQUFpQjtFQUN4RCxzQkFBc0IsaUJBQWlCLGlCQUFpQjtFQUN4RCxzQkFBc0Isa0JBQWtCLGlCQUFpQjtFQUN6RCxzQkFBc0IsbUJBQW1CLGlCQUFpQjtFQUMxRCxzQkFBc0Isc0JBQXNCLGlCQUFpQjtFQUM3RCxzQkFBc0IsZUFBZSxpQkFBaUI7RUFDdEQsc0JBQXNCLHVCQUF1QixpQkFBaUI7RUFDOUQsc0JBQXNCLHNCQUFzQixpQkFBaUI7RUFDN0Qsc0JBQXNCLHFCQUFxQixpQkFBaUI7RUFDNUQsc0JBQXNCLG9CQUFvQixpQkFBaUI7RUFDM0Qsc0JBQXNCLGtCQUFrQixpQkFBaUI7RUFDekQsc0JBQXNCLHVCQUF1QixpQkFBaUI7RUFDOUQsc0JBQXNCLHNCQUFzQixpQkFBaUI7RUFDN0Qsc0JBQXNCLG9CQUFvQixpQkFBaUI7RUFDM0Qsc0JBQXNCLDBCQUEwQixpQkFBaUI7RUFDakUsc0JBQXNCLDhCQUE4QixpQkFBaUI7RUFDckUsc0JBQXNCLGdDQUFnQyxpQkFBaUI7RUFDdkUsc0JBQXNCLG9CQUFvQixpQkFBaUI7RUFDM0Qsc0JBQXNCLDBCQUEwQixpQkFBaUI7RUFDakUsc0JBQXNCLDBCQUEwQixpQkFBaUI7RUFDakUsc0JBQXNCLDZCQUE2QixpQkFBaUI7Q0FDdEU7Ozs7Ozs7Ozs7Ozs7QUFjRCxNQUFhQyxzQkFHVDtFQUNELDZCQUE2QixrQkFBa0IsMkJBQTJCO0VBQzFFLDZCQUE2Qix5QkFBeUIsMkJBQTJCO0VBQ2pGLDZCQUE2QixtQkFBbUIsMkJBQTJCO0VBQzNFLDZCQUE2Qiw4QkFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QixnQ0FDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QiwwQkFBMEIsMkJBQTJCO0VBQ2xGLDZCQUE2Qix3Q0FDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QixxQ0FDNUIsMkJBQTJCO0VBQzVCLDZCQUE2Qiw2QkFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QiwwQkFBMEIsMkJBQTJCO0VBQ2xGLDZCQUE2QixrREFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QiwrQ0FDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QixrQkFBa0IsMkJBQTJCO0VBQzFFLDZCQUE2Qix3QkFBd0IsMkJBQTJCO0VBQ2hGLDZCQUE2Qiw2QkFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2Qiw4QkFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QiwyQkFBMkIsMkJBQTJCO0VBQ25GLDZCQUE2Qiw2QkFDNUIsMkJBQTJCO0VBQzVCLDZCQUE2QiwwQkFDNUIsMkJBQTJCO0VBRTVCLDZCQUE2QixrQkFBa0I7RUFDL0MsNkJBQTZCLHdCQUF3QjtFQUNyRCw2QkFBNkIsbUJBQW1CO0NBQ2xEIn0=
@@ -19,4 +19,4 @@ declare enum SearchResultsState {
19
19
  declare const getSearchResultsState: (isLoadingSearch: boolean, searchData: SearchResult | null) => SearchResultsState;
20
20
  //#endregion
21
21
  export { SearchResultsState, createAppLoadedEvent, createVisitUserEvent, getSearchResultsState, isElementPartiallyVisible, isWithinBusinessHours };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3V0aWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoJztcbmltcG9ydCB7IFVzZXJFdmVudCwgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzRWxlbWVudFBhcnRpYWxseVZpc2libGU6IChlbD86IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gYm9vbGVhbjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZUFwcExvYWRlZEV2ZW50OiAoKSA9PiBVc2VyRXZlbnQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjcmVhdGVWaXNpdFVzZXJFdmVudDogKHsgdmFyaWFudEluZm8sIH06IHtcbiAgICB2YXJpYW50SW5mbzogVmFyaWFudEluZm87XG59KSA9PiBVc2VyRXZlbnQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1dpdGhpbkJ1c2luZXNzSG91cnM6IChzdGFydFRpbWU6IHN0cmluZywgZW5kVGltZTogc3RyaW5nLCB0aW1lWm9uZTogc3RyaW5nKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTZWFyY2hSZXN1bHRzU3RhdGUge1xuICAgIExvYWRpbmcgPSAwLFxuICAgIFJlc3VsdHMgPSAxLFxuICAgIE5vUmVzdWx0cyA9IDJcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldFNlYXJjaFJlc3VsdHNTdGF0ZTogKGlzTG9hZGluZ1NlYXJjaDogYm9vbGVhbiwgc2VhcmNoRGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbCkgPT4gU2VhcmNoUmVzdWx0c1N0YXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBLElBQVcsNEJBQTRCLENBQUMsVUFBVSxlQUFlO0FBQ2pFLElBQVcsdUJBQXVCLENBQUMsVUFBVSxVQUFVO0FBQ3ZELElBQVcsdUJBQXVCO0NBQUM7T0FBVTtPQUFpQjtPQUFBO0NBQUE7QUFDOUQsSUFBVyx3QkFBaUIsQ0FBQSxHQUFBO0FBQzVCLElBQVcscUJBQWdCLENBQUEsR0FBQTtBQUMzQixJQUFXLHdCQUF3QjtDQUFDO09BQVU7T0FBb0I7Q0FBbUIifQ==
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3V0aWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoJztcbmltcG9ydCB7IFVzZXJFdmVudCwgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzRWxlbWVudFBhcnRpYWxseVZpc2libGU6IChlbD86IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gYm9vbGVhbjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZUFwcExvYWRlZEV2ZW50OiAoKSA9PiBVc2VyRXZlbnQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjcmVhdGVWaXNpdFVzZXJFdmVudDogKHsgdmFyaWFudEluZm8sIH06IHtcbiAgICB2YXJpYW50SW5mbzogVmFyaWFudEluZm87XG59KSA9PiBVc2VyRXZlbnQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1dpdGhpbkJ1c2luZXNzSG91cnM6IChzdGFydFRpbWU6IHN0cmluZywgZW5kVGltZTogc3RyaW5nLCB0aW1lWm9uZTogc3RyaW5nKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTZWFyY2hSZXN1bHRzU3RhdGUge1xuICAgIExvYWRpbmcgPSAwLFxuICAgIFJlc3VsdHMgPSAxLFxuICAgIE5vUmVzdWx0cyA9IDJcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldFNlYXJjaFJlc3VsdHNTdGF0ZTogKGlzTG9hZGluZ1NlYXJjaDogYm9vbGVhbiwgc2VhcmNoRGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbCkgPT4gU2VhcmNoUmVzdWx0c1N0YXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBLElBQVcsNEJBQTRCLENBQUMsU0FBUyxlQUFlO0FBQ2hFLElBQVcsdUJBQXVCLENBQUMsU0FBUyxVQUFVO0FBQ3RELElBQVcsdUJBQXVCO0NBQUM7T0FBUztPQUFrQjtPQUFBO0NBQUE7QUFDOUQsSUFBVyx3QkFBaUIsQ0FBQSxFQUFBO0FBQzVCLElBQVcscUJBQWdCLENBQUEsRUFBQTtBQUMzQixJQUFXLHdCQUF3QjtDQUFDO09BQVM7T0FBb0I7Q0FBbUIifQ==
@@ -19,4 +19,4 @@ declare enum SearchResultsState {
19
19
  declare const getSearchResultsState: (isLoadingSearch: boolean, searchData: SearchResult | null) => SearchResultsState;
20
20
  //#endregion
21
21
  export { SearchResultsState, createAppLoadedEvent, createVisitUserEvent, getSearchResultsState, isElementPartiallyVisible, isWithinBusinessHours };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXRpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuaW1wb3J0IHsgVXNlckV2ZW50LCBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNFbGVtZW50UGFydGlhbGx5VmlzaWJsZTogKGVsPzogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY3JlYXRlQXBwTG9hZGVkRXZlbnQ6ICgpID0+IFVzZXJFdmVudDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZVZpc2l0VXNlckV2ZW50OiAoeyB2YXJpYW50SW5mbywgfToge1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn0pID0+IFVzZXJFdmVudCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzV2l0aGluQnVzaW5lc3NIb3VyczogKHN0YXJ0VGltZTogc3RyaW5nLCBlbmRUaW1lOiBzdHJpbmcsIHRpbWVab25lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNlYXJjaFJlc3VsdHNTdGF0ZSB7XG4gICAgTG9hZGluZyA9IDAsXG4gICAgUmVzdWx0cyA9IDEsXG4gICAgTm9SZXN1bHRzID0gMlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlOiAoaXNMb2FkaW5nU2VhcmNoOiBib29sZWFuLCBzZWFyY2hEYXRhOiBTZWFyY2hSZXN1bHQgfCBudWxsKSA9PiBTZWFyY2hSZXN1bHRzU3RhdGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBVyw0QkFBNEIsQ0FBQyxVQUFVLGVBQWU7QUFDakUsSUFBVyx1QkFBdUIsQ0FBQyxVQUFVLFVBQVU7QUFDdkQsSUFBVyx1QkFBdUI7Q0FBQztPQUFVO09BQWlCO09BQUE7Q0FBQTtBQUM5RCxJQUFXLHdCQUFpQixDQUFBLEdBQUE7QUFDNUIsSUFBVyxxQkFBZ0IsQ0FBQSxHQUFBO0FBQzNCLElBQVcsd0JBQXdCO0NBQUM7T0FBVTtPQUFvQjtDQUFtQiJ9
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXRpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuaW1wb3J0IHsgVXNlckV2ZW50LCBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNFbGVtZW50UGFydGlhbGx5VmlzaWJsZTogKGVsPzogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY3JlYXRlQXBwTG9hZGVkRXZlbnQ6ICgpID0+IFVzZXJFdmVudDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZVZpc2l0VXNlckV2ZW50OiAoeyB2YXJpYW50SW5mbywgfToge1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn0pID0+IFVzZXJFdmVudCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzV2l0aGluQnVzaW5lc3NIb3VyczogKHN0YXJ0VGltZTogc3RyaW5nLCBlbmRUaW1lOiBzdHJpbmcsIHRpbWVab25lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNlYXJjaFJlc3VsdHNTdGF0ZSB7XG4gICAgTG9hZGluZyA9IDAsXG4gICAgUmVzdWx0cyA9IDEsXG4gICAgTm9SZXN1bHRzID0gMlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlOiAoaXNMb2FkaW5nU2VhcmNoOiBib29sZWFuLCBzZWFyY2hEYXRhOiBTZWFyY2hSZXN1bHQgfCBudWxsKSA9PiBTZWFyY2hSZXN1bHRzU3RhdGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBVyw0QkFBNEIsQ0FBQyxTQUFTLGVBQWU7QUFDaEUsSUFBVyx1QkFBdUIsQ0FBQyxTQUFTLFVBQVU7QUFDdEQsSUFBVyx1QkFBdUI7Q0FBQztPQUFTO09BQWtCO09BQUE7Q0FBQTtBQUM5RCxJQUFXLHdCQUFpQixDQUFBLEVBQUE7QUFDNUIsSUFBVyxxQkFBZ0IsQ0FBQSxFQUFBO0FBQzNCLElBQVcsd0JBQXdCO0NBQUM7T0FBUztPQUFvQjtDQUFtQiJ9
@@ -10,6 +10,14 @@ const require_ga4ProjectionService = require('../ga4ProjectionService/ga4Project
10
10
 
11
11
  //#region src/services/amplitudeService/amplitudeService.ts
12
12
  const logger = new require_logger.default("amplitudeService");
13
+ const UTF8_TRANSPORT_PREFIX = "__spiffy_utf8__:";
14
+ const containsSupplementaryUnicode = (value) => Array.from(value).some((character) => (character.codePointAt(0) ?? 0) > 65535);
15
+ const encodeSupplementaryUnicode = (value) => {
16
+ if (typeof value === "string") return containsSupplementaryUnicode(value) ? `${UTF8_TRANSPORT_PREFIX}${encodeURIComponent(value)}` : value;
17
+ if (Array.isArray(value)) return value.map(encodeSupplementaryUnicode);
18
+ if (value !== null && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => [key, encodeSupplementaryUnicode(nestedValue)]));
19
+ return value;
20
+ };
13
21
  const EXPERIMENT_NAMESPACES = ["ml", "merchant"];
14
22
  const buildExperimentProps = (assignments) => {
15
23
  const byNamespace = /* @__PURE__ */ new Map();
@@ -257,9 +265,10 @@ var AmplitudeService = class AmplitudeService {
257
265
  eventName,
258
266
  eventProps
259
267
  });
268
+ const amplitudeEventProps = eventName === require_eventNames.EnviveMetricsEventName.WidgetTextResponse || eventName === require_eventNames.EnviveMetricsEventName.WidgetTextClicked ? encodeSupplementaryUnicode(mappedEventProps) : mappedEventProps;
260
269
  const eventData = JSON.stringify({
261
270
  eventName,
262
- eventProps: mappedEventProps,
271
+ eventProps: amplitudeEventProps,
263
272
  created_at: (/* @__PURE__ */ new Date()).toISOString()
264
273
  });
265
274
  const data = new TextEncoder().encode(eventData);
@@ -267,12 +276,12 @@ var AmplitudeService = class AmplitudeService {
267
276
  const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
268
277
  logger.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
269
278
  event_name: decoratedEventName,
270
- props: mappedEventProps
279
+ props: amplitudeEventProps
271
280
  });
272
281
  this.amplitudeClient.track(decoratedEventName, {
273
282
  ...this.getDefaultTrackingProps(eventName),
274
- ...mappedEventProps,
275
- ...mappedEventProps ? this.eventPropsToPrefixedEventProps(eventName, mappedEventProps) : {}
283
+ ...amplitudeEventProps,
284
+ ...amplitudeEventProps ? this.eventPropsToPrefixedEventProps(eventName, amplitudeEventProps) : {}
276
285
  }, {
277
286
  ...eventGroups,
278
287
  insert_id: currentInsertId
@@ -303,4 +312,4 @@ var AmplitudeService = class AmplitudeService {
303
312
 
304
313
  //#endregion
305
314
  exports.AmplitudeService = AmplitudeService;
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJFWFBFUklNRU5UX05BTUVTUEFDRVM6IEV4cGVyaW1lbnROYW1lc3BhY2VbXSIsIkxvY2FsU3RvcmFnZUtleXMiLCJlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIiwiZW5yaWNoZWRFdmVudDogRXZlbnQiLCJTcGlmZnlNZXRyaWNzRXZlbnROYW1lIiwiRW52aXZlTWV0cmljc0V2ZW50TmFtZSIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCIsIldpZGdldFR5cGVWMyIsIkNoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSAnc3JjL2V2ZW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZVYzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuaW1wb3J0IHsgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyc7XG5pbXBvcnQgeyBFeHBlcmltZW50TmFtZXNwYWNlLCBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgcHJvamVjdFRvR0E0IH0gZnJvbSAnLi4vZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4vZXZlbnROYW1lcyc7XG5cbi8vIFJlLWV4cG9ydCBldmVudCBuYW1lcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignYW1wbGl0dWRlU2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lO1xuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpdHVkZVNlcnZpY2VDb25maWcge1xuICB1c2VySWQ6IHN0cmluZztcbiAgYW1wbGl0dWRlQXBpS2V5OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k6IHN0cmluZztcbiAgZW52OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U6IHN0cmluZztcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICBzaG93OiBib29sZWFuO1xuICBlbnZpdmVPbjogYm9vbGVhbjtcbiAgZW5hYmxlZEZlYXR1cmVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIGdldExvY2FsU3RvcmFnZUl0ZW06IG51bGwgfCAoKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsKTtcbiAgLy8gQ2FwdHVyZWQgYXQgY29uc3RydWN0aW9uLiBEcml2ZXMgYGV4cGVyaW1lbnQue25zfS4qYCBldmVudC1wcm9wZXJ0eVxuICAvLyBlbnJpY2htZW50LiBTb3VyY2VkIGZyb20gL3YxL29yZy9jb25maWcgd2hlbiB0aGUgYHVzZV91bmlmaWVkX2NvbmZpZ2BcbiAgLy8gZ2F0ZSBpcyBvbjsgb3RoZXJ3aXNlIG9taXR0ZWQgKHByb3BzIGVtaXQgYXMgbnVsbCkuXG4gIGV4cGVyaW1lbnRBc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG59XG5cbi8vIE5hbWVzcGFjZXMgZW1pdHRlZCBvbiBldmVyeSBldmVudCB3aXRoIGNvbnN0YW50IGtleXMsIHNvIHRoZSBCaWdRdWVyeVxuLy8gc2NoZW1hIGlzIHN0YWJsZSByZWdhcmRsZXNzIG9mIHdoaWNoIChpZiBhbnkpIGV4cGVyaW1lbnQgaXMgcnVubmluZy5cbi8vIEN1cnJlbnRseSBgbWxgICsgYG1lcmNoYW50YDsgbWF0Y2hlcyBgRXhwZXJpbWVudE5hbWVzcGFjZWAuXG5jb25zdCBFWFBFUklNRU5UX05BTUVTUEFDRVM6IEV4cGVyaW1lbnROYW1lc3BhY2VbXSA9IFsnbWwnLCAnbWVyY2hhbnQnXTtcblxuY29uc3QgYnVpbGRFeHBlcmltZW50UHJvcHMgPSAoXG4gIGFzc2lnbm1lbnRzOiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdIHwgdW5kZWZpbmVkLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCBieU5hbWVzcGFjZSA9IG5ldyBNYXA8RXhwZXJpbWVudE5hbWVzcGFjZSwgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQ+KCk7XG4gIChhc3NpZ25tZW50cyA/PyBbXSkuZm9yRWFjaChhID0+IHtcbiAgICBpZiAoYS5sYXllcl9uYW1lICE9IG51bGwgJiYgYS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgYnlOYW1lc3BhY2Uuc2V0KGEubmFtZXNwYWNlLCBhKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gRVhQRVJJTUVOVF9OQU1FU1BBQ0VTLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKGFjYywgbnMpID0+IHtcbiAgICBjb25zdCBhID0gYnlOYW1lc3BhY2UuZ2V0KG5zKTtcbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30ubGF5ZXJfbmFtZWBdID0gYT8ubGF5ZXJfbmFtZSA/PyBudWxsO1xuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5leHBlcmltZW50X25hbWVgXSA9IGE/LmFsbG9jYXRlZF9leHBlcmltZW50X25hbWUgPz8gbnVsbDtcbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30uZ3JvdXBfbmFtZWBdID0gYT8uZ3JvdXBfbmFtZSA/PyBudWxsO1xuICAgIC8vIGBydWxlX2lkYCByZXNlcnZlZCDigJQgYmFja2VuZCBkb2Vzbid0IGN1cnJlbnRseSBzdXJmYWNlIGl0LlxuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5ydWxlX2lkYF0gPSBudWxsO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhbXBsaXR1ZGVDbGllbnQ6IEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIHByaXZhdGUgY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnO1xuXG4gIHByaXZhdGUgaW5pdFByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzTW9ja0FwaUtleSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5ID09PSAnbW9jay1hbXBsaXR1ZGUta2V5JztcbiAgfVxuXG4gIC8vIE11c3Qgbm90IGRlcGVuZCBvbiBgYW1wbGl0dWRlQ2xpZW50YDogdGhlIFNESyBub3cgbG9hZHMgdmlhIGR5bmFtaWNcbiAgLy8gaW1wb3J0LCBhbmQgQW1wbGl0dWRlUHJvdmlkZXIgdW5tb3VudHMgaXRzIGVudGlyZSBzdWJ0cmVlIHdoaWxlXG4gIC8vIGlzUmVhZHkgaXMgZmFsc2Ug4oCUIGdhdGluZyBvbiB0aGUgY2xpZW50IHdvdWxkIGJsb2NrIHdpZGdldCByZW5kZXJpbmdcbiAgLy8gb24gdGhlIGFuYWx5dGljcyBjaHVuayBkb3dubG9hZC4gRXZlbnRzIGF3YWl0ZWQgaW4gdHJhY2tFdmVudCBxdWV1ZVxuICAvLyBiZWhpbmQgYGluaXRQcm9taXNlYCBpbnN0ZWFkLlxuICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHRoaXMuY29uZmlnLnVzZXJJZCAmJlxuICAgICAgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmXG4gICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXkgJiZcbiAgICAgICF0aGlzLmlzTW9ja0FwaUtleSxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJlc29sdmVzIG9uY2UgU0RLIGluaXRpYWxpemF0aW9uIGhhcyBzZXR0bGVkIChuZXZlciByZWplY3RzKS4gKi9cbiAgaW5pdGlhbGl6ZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdFByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldExvY2FsU3RvcmFnZUl0ZW0oa2V5KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRUcmFja2luZ1Byb3BzKFxuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBmZWF0dXJlR2F0ZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKCkpO1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPVxuICAgICAgZmVhdHVyZUdhdGVzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtuYW1lfWBdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSlcbiAgICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSBidWlsZEV4cGVyaW1lbnRQcm9wcyh0aGlzLmNvbmZpZy5leHBlcmltZW50QXNzaWdubWVudHMpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRQcm9wcyA9IHtcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fY29udGV4dCc6ICdidW5kbGUnLFxuICAgICAgJ2Vudmlyb25tZW50LnBhZ2VfdXJsJzogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX3VzZXJfaWQnOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAnZW52aXJvbm1lbnQuZXhlY3V0aW9uX2Vudmlyb25tZW50JzogdGhpcy5jb25maWcuZW52IHx8ICd1bmtub3duJyxcbiAgICAgICdlbnZpcm9ubWVudC5jb250ZXh0X3NvdXJjZSc6IHRoaXMuY29uZmlnLmNvbnRleHRTb3VyY2UsXG4gICAgICAnZW52aXJvbm1lbnQuc2FsZXNfYWdlbnRfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2FsZXNBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5zZWFyY2hfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2VhcmNoQWdlbnQgPz8gZmFsc2UsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX29uX3F1ZXJ5X3BhcmFtJzogdGhpcy5jb25maWcuZW52aXZlT24sXG4gICAgICAnZW52aXJvbm1lbnQud2luZG93X3Nob3cnOiB0aGlzLmNvbmZpZy5zaG93LFxuICAgICAgJ2Vudmlyb25tZW50LmVudml2ZV9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5lbnZpdmUsXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSlcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGdWxsRmxhZ1ZhbHVlcygpLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgICAuLi5lbnZpcm9ubWVudFByb3BzLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4udGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICBhcHBfaWQ6ICdjb21tZXJjZS1jaGF0LXJlYWN0LWNvbXBvbmVudCcsXG4gICAgICBjaGF0X2lkOiB0aGlzLmdldExvY2FsU3RvcmFnZUl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgYXBwX3NvdXJjZTogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgIG9yZ19pZDogdGhpcy5jb25maWcub3JnSWQsXG4gICAgICAnb3JnLnNob3J0X25hbWUnOiB0aGlzLmNvbmZpZy5vcmdTaG9ydE5hbWUsXG4gICAgICAndXNlci5pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdjZHAudXNlcl9pZCc6IG51bGwsXG4gICAgICAnY2RwLnByb3ZpZGVyJzogbnVsbCxcbiAgICAgICdldmVudC5zb3VyY2UnOiAnd2ViLWJyb3dzZXInLFxuICAgICAgJ2V2ZW50LnR5cGUnOiAndXNlci1hY3Rpdml0eScsXG4gICAgICAnZXZlbnQuaWQnOiBudWxsLFxuICAgICAgJ2V2ZW50LmNoYW5uZWwnOiAnd2ViJyxcbiAgICAgICdldmVudC50aW1lc3RhbXAnOiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBwcml2YXRlIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpOiBFbnJpY2htZW50UGx1Z2luIHtcbiAgICBpZiAodGhpcy5pbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6ICdwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudCcsXG4gICAgICB0eXBlOiAnZW5yaWNobWVudCcsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgICdbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZCcsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgICBgW0Vudml2ZV0gJHtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLlBhZ2VWaWV3ZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnNob3cnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5zaG93KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5lbnYnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5lbnYpO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy5jb25maWc/LmVuYWJsZWRGZWF0dXJlcyA/PyAoe30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pLFxuICAgICAgICAgICkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtgZW5hYmxlZEZlYXR1cmVzLiR7a2V5fWBdOiBgJHt2YWx1ZX1gLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGltaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICd0aW1pbmcuZW5yaWNoZWRfYXRfbXMnOlxuICAgICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93KCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgIGV2ZW50X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZXZlbnRfcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudF90eXBlIGFzIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSBlbnJpY2htZW50O1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmIHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSAmJiB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgKTtcblxuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdBbXBsaXR1ZGVTZXJ2aWNlIGlzIG5vdCByZWFkeScsIHtcbiAgICAgICAgaXNSZWFkeSxcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAgIGhhc0ZlYXR1cmVGbGFnU2VydmljZTogISF0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgICAgIGhhc0FtcGxpdHVkZUFwaUtleTogISF0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc01vY2tBcGlLZXkpIHtcbiAgICAgIGxvZ2dlci5sb2dXYXJuKFxuICAgICAgICAnTW9jayBBUEkga2V5IGRldGVjdGVkIOKAlCBydW5uaW5nIGluIG1vY2sgbW9kZSwgbm8gZXZlbnRzIHdpbGwgYmUgc2VudCB0byBBbXBsaXR1ZGUuJyxcbiAgICAgICAgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBEeW5hbWljIGltcG9ydCBrZWVwcyB0aGUgQW1wbGl0dWRlIFNESyBvdXQgb2YgdGhlIGVhZ2VyXG4gICAgICAgIC8vIGluamVjdGlvbi1idW5kbGUgY2h1bms7IHRyYWNrRXZlbnQgcXVldWVzIGJlaGluZCBpbml0UHJvbWlzZS5cbiAgICAgICAgY29uc3QgeyBjcmVhdGVJbnN0YW5jZSB9ID0gYXdhaXQgaW1wb3J0KCdAYW1wbGl0dWRlL2FuYWx5dGljcy1icm93c2VyJyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG5cbiAgICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmFkZCh0aGlzLmdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCkpO1xuICAgICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuaW5pdCh0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksIHRoaXMuY29uZmlnLnVzZXJJZCwge1xuICAgICAgICAgIHNlcnZlclpvbmU6IHRoaXMuY29uZmlnLmRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XG4gICAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhdXRvY2FwdHVyZToge1xuICAgICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgICAgdHJhY2tIaXN0b3J5Q2hhbmdlczogJ3BhdGhPbmx5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXNzaW9uczogZmFsc2UsXG4gICAgICAgICAgICBmb3JtSW50ZXJhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgICAgIGZpbGVEb3dubG9hZHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudCA9IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIG9yIGluaXRpYWxpemUgdGhlIEFtcGxpdHVkZSBTREsnLCBlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtYXBXaWRnZXRUeXBlVG9DaGF0Q29tcG9uZW50KHdpZGdldFR5cGU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuRmxvYXRpbmdCdXR0b25WMzpcbiAgICAgICAgcmV0dXJuICdmbG9hdGluZ19idXR0b24nO1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuVHlwaW5nQW5pbWF0aW9uVjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5DaGF0UHJldmlld1YzOlxuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuU29jaWFsUHJvb2ZWMzpcbiAgICAgICAgcmV0dXJuICdlbWJlZGRlZF93aWRnZXQnO1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuVGl0bGVkUHJvbXB0Q2Fyb3VzZWxWMzpcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlByb21wdENhcm91c2VsVjM6XG4gICAgICAgIHJldHVybiAnc3VnZ2VzdGlvbl9iYXInO1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuUHJvZHVjdENhcmRWMzpcbiAgICAgICAgcmV0dXJuICdpbWFnZV9wcm9tcHRfY2FyZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtYXBUcmlnZ2VyTG9jYXRpb25Ub0NoYXRDb21wb25lbnQodHJpZ2dlckxvY2F0aW9uOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRyaWdnZXJMb2NhdGlvbikge1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST0RVQ1RfQ0FSRF9QUk9NUFRfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST0RVQ1RfQ0FSRF9URVhUX0ZJRUxEOlxuICAgICAgICByZXR1cm4gJ3Byb21wdF9jYXJkJztcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9NUFRfQ0FST1VTRUw6XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuVElUTEVEX1BST01QVF9DQVJPVVNFTDpcbiAgICAgICAgcmV0dXJuICd0b3BfcmV2aWV3c19zbmlwcGV0JztcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5UWVBJTkdfQU5JTUFUSU9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9QUklNQVJZX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5TT0NJQUxfUFJPT0ZfU0VDT05EQVJZX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5TT0NJQUxfUFJPT0ZfVEVYVF9GSUVMRDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9QUk9NUFRfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19DT01QQVJJU09OX1RFWFRfRklFTEQ6XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX1RFWFRfRklFTEQ6XG4gICAgICAgIHJldHVybiAnY2hhdF9wcmV2aWV3JztcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX09WRVJMQVk6XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuRkxPQVRJTkdfQ0hBVF9DTE9TRV9CVVRUT046XG4gICAgICAgIHJldHVybiAnaW5fY2hhdCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJpZ2dlckxvY2F0aW9uIGFzIHN0cmluZztcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIGFsbG93cyB1cyB0byBtYXAgdGhlIGV2ZW50IHByb3BzIHRvIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgdGhlIGxlZ2FjeSBhbXBsaXR1ZGUgZXZlbnRzXG4gIHN0YXRpYyBtYXBFdmVudFByb3BzKHsgZXZlbnROYW1lLCBldmVudFByb3BzIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgbWVzc2FnZU1ldGFkYXRhID0gZXZlbnRQcm9wcz8ubWVzc2FnZV9tZXRhZGF0YSA/PyB7fTtcbiAgICBjb25zdCB0cmlnZ2VyTG9jYXRpb24gPVxuICAgICAgbWVzc2FnZU1ldGFkYXRhICE9PSBudWxsICYmXG4gICAgICB0eXBlb2YgbWVzc2FnZU1ldGFkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ3RyaWdnZXJfbG9jYXRpb24nIGluIG1lc3NhZ2VNZXRhZGF0YVxuICAgICAgICA/IG1lc3NhZ2VNZXRhZGF0YS50cmlnZ2VyX2xvY2F0aW9uXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50RXhwYW5kZWQpIHtcbiAgICAgIGNvbnN0IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24gPVxuICAgICAgICBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgIC4uLm1lc3NhZ2VNZXRhZGF0YSxcbiAgICAgICAgICB0cmlnZ2VyX2xvY2F0aW9uOiBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uLFxuICAgICAgICAgIGZ1bGxfdHJpZ2dlcl9sb2NhdGlvbjogdHJpZ2dlckxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlKSB7XG4gICAgICBjb25zdCBtYXBwZWRXaWRnZXRUeXBlID0gQW1wbGl0dWRlU2VydmljZS5tYXBXaWRnZXRUeXBlVG9DaGF0Q29tcG9uZW50KFxuICAgICAgICBldmVudFByb3BzPy53aWRnZXRfdHlwZSxcbiAgICAgICk7XG4gICAgICBjb25zdCBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uID1cbiAgICAgICAgQW1wbGl0dWRlU2VydmljZS5tYXBUcmlnZ2VyTG9jYXRpb25Ub0NoYXRDb21wb25lbnQodHJpZ2dlckxvY2F0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIG1lc3NhZ2VfbWV0YWRhdGE6IHtcbiAgICAgICAgICAuLi5tZXNzYWdlTWV0YWRhdGEsXG4gICAgICAgICAgdHJpZ2dlcl9sb2NhdGlvbjogbWFwcGVkVHJpZ2dlckxvY2NhdGlvbixcbiAgICAgICAgICBmdWxsX3RyaWdnZXJfbG9jYXRpb246IHRyaWdnZXJMb2NhdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgY2hhdF9jb21wb25lbnQ6IG1hcHBlZFdpZGdldFR5cGUsXG4gICAgICAgICdjaGF0LmNvbXBvbmVudF92aXNpYmxlJzogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBldmVudFByb3BzID8/IHt9O1xuICB9XG5cbiAgc3RhdGljIGlzVjNFbnZpdmVFdmVudChldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoRW52aXZlTWV0cmljc0V2ZW50TmFtZSkuaW5jbHVkZXMoZXZlbnROYW1lIGFzIEVudml2ZU1ldHJpY3NFdmVudE5hbWUpO1xuICB9XG5cbiAgc3RhdGljIGRlY29yYXRlRXZlbnROYW1lKGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUpOiBzdHJpbmcge1xuICAgIGlmIChBbXBsaXR1ZGVTZXJ2aWNlLmlzVjNFbnZpdmVFdmVudChldmVudE5hbWUpKSB7XG4gICAgICByZXR1cm4gYFtFbnZpdmVdICR7ZXZlbnROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgW1NwaWZmeV0gJHtldmVudE5hbWV9YDtcbiAgfVxuXG4gIGFzeW5jIHRyYWNrRXZlbnQoe1xuICAgIGV2ZW50TmFtZSxcbiAgICBldmVudFByb3BzLFxuICAgIGV2ZW50R3JvdXBzLFxuICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgPSBmYWxzZSxcbiAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzTW9ja0FwaUtleSkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuaW5pdFByb21pc2U7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdTdWJtaXR0aW5nIGV2ZW50JywgZXZlbnROYW1lKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gQW1wbGl0dWRlU2VydmljZS5kZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWUpO1xuXG4gICAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgIGxvZ2dlci5sb2dXYXJuKCdhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZCcsIHVuZGVmaW5lZCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkRXZlbnRQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UubWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9KTtcblxuICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IG1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICBwcm9wczogbWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhldmVudE5hbWUpLFxuICAgICAgICAgIC4uLm1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgICAgLi4uKG1hcHBlZEV2ZW50UHJvcHNcbiAgICAgICAgICAgID8gdGhpcy5ldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoZXZlbnROYW1lLCBtYXBwZWRFdmVudFByb3BzKVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRPRE86IFB1bGwgZ2FFbmFibGVkIGZyb20gb3JnIGNvbmZpZyB3aGVuIGF2YWlsYWJsZS4gSGFyZGNvZGVkIHRvIHRydWUgZm9yIG5vdy5cbiAgICAgIGNvbnN0IGdhRW5hYmxlZCA9IHRydWU7XG5cbiAgICAgIGlmIChBbXBsaXR1ZGVTZXJ2aWNlLmlzVjNFbnZpdmVFdmVudChldmVudE5hbWUpICYmIGdhRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBtZXJnZWRQcm9wc0ZvckdBNCA9IHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4ubWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvamVjdFRvR0E0KGV2ZW50TmFtZSBhcyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBtZXJnZWRQcm9wc0ZvckdBNCk7XG4gICAgICB9IGVsc2UgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnR0EgdHJhY2tpbmcnLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRXJyb3IgdHJhY2tpbmcgZXZlbnQnLCBlcnIsIHtcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoYXQgc3VwcGxlbWVudGFsIGRlZmF1bHQgcHJvcHMgYXJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyBwcm9wc1xuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMgPSBwcm9wcztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW1CQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sbUJBQW1CO0FBK0I3QyxNQUFNQyx3QkFBK0MsQ0FBQyxNQUFNLFdBQVc7QUFFdkUsTUFBTSx3QkFDSixnQkFDNEI7Q0FDNUIsTUFBTSw4QkFBYyxJQUFJLEtBQXlEO0FBQ2pGLEVBQUMsZUFBZSxFQUFFLEVBQUUsU0FBUSxNQUFLO0FBQy9CLE1BQUks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
315
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJFWFBFUklNRU5UX05BTUVTUEFDRVM6IEV4cGVyaW1lbnROYW1lc3BhY2VbXSIsIkxvY2FsU3RvcmFnZUtleXMiLCJlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIiwiZW5yaWNoZWRFdmVudDogRXZlbnQiLCJTcGlmZnlNZXRyaWNzRXZlbnROYW1lIiwiRW52aXZlTWV0cmljc0V2ZW50TmFtZSIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCIsIldpZGdldFR5cGVWMyIsIkNoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSAnc3JjL2V2ZW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZVYzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuaW1wb3J0IHsgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyc7XG5pbXBvcnQgeyBFeHBlcmltZW50TmFtZXNwYWNlLCBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgcHJvamVjdFRvR0E0IH0gZnJvbSAnLi4vZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4vZXZlbnROYW1lcyc7XG5cbi8vIFJlLWV4cG9ydCBldmVudCBuYW1lcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignYW1wbGl0dWRlU2VydmljZScpO1xuXG4vLyBBbXBsaXR1ZGUncyBtYW5hZ2VkIEJpZ1F1ZXJ5IGRhdGEgY2FuIHN1cmZhY2Ugc3VwcGxlbWVudGFyeSBVbmljb2RlIGFzIFUrRkZGRC5cbi8vIEtlZXAgdGhlIHdpZGdldC10cmFpbmluZyBwYXlsb2FkIEFTQ0lJLXNhZmUgd2l0aG91dCBjaGFuZ2luZyB0aGUgZGlzcGxheWVkIHRleHQuXG5jb25zdCBVVEY4X1RSQU5TUE9SVF9QUkVGSVggPSAnX19zcGlmZnlfdXRmOF9fOic7XG5cbmNvbnN0IGNvbnRhaW5zU3VwcGxlbWVudGFyeVVuaWNvZGUgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgQXJyYXkuZnJvbSh2YWx1ZSkuc29tZShjaGFyYWN0ZXIgPT4gKGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKSA/PyAwKSA+IDB4ZmZmZik7XG5cbmNvbnN0IGVuY29kZVN1cHBsZW1lbnRhcnlVbmljb2RlID0gKHZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zU3VwcGxlbWVudGFyeVVuaWNvZGUodmFsdWUpXG4gICAgICA/IGAke1VURjhfVFJBTlNQT1JUX1BSRUZJWH0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YFxuICAgICAgOiB2YWx1ZTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKGVuY29kZVN1cHBsZW1lbnRhcnlVbmljb2RlKTtcbiAgfVxuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkubWFwKChba2V5LCBuZXN0ZWRWYWx1ZV0pID0+IFtcbiAgICAgICAga2V5LFxuICAgICAgICBlbmNvZGVTdXBwbGVtZW50YXJ5VW5pY29kZShuZXN0ZWRWYWx1ZSksXG4gICAgICBdKSxcbiAgICApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tFdmVudFBhcmFtcyB7XG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGl0dWRlU2VydmljZUNvbmZpZyB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBhbXBsaXR1ZGVBcGlLZXk6IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeTogc3RyaW5nO1xuICBlbnY6IHN0cmluZztcbiAgY29udGV4dFNvdXJjZTogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gIHNob3c6IGJvb2xlYW47XG4gIGVudml2ZU9uOiBib29sZWFuO1xuICBlbmFibGVkRmVhdHVyZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgZ2V0TG9jYWxTdG9yYWdlSXRlbTogbnVsbCB8ICgoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwpO1xuICAvLyBDYXB0dXJlZCBhdCBjb25zdHJ1Y3Rpb24uIERyaXZlcyBgZXhwZXJpbWVudC57bnN9LipgIGV2ZW50LXByb3BlcnR5XG4gIC8vIGVucmljaG1lbnQuIFNvdXJjZWQgZnJvbSAvdjEvb3JnL2NvbmZpZyB3aGVuIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYFxuICAvLyBnYXRlIGlzIG9uOyBvdGhlcndpc2Ugb21pdHRlZCAocHJvcHMgZW1pdCBhcyBudWxsKS5cbiAgZXhwZXJpbWVudEFzc2lnbm1lbnRzPzogT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnRbXTtcbn1cblxuLy8gTmFtZXNwYWNlcyBlbWl0dGVkIG9uIGV2ZXJ5IGV2ZW50IHdpdGggY29uc3RhbnQga2V5cywgc28gdGhlIEJpZ1F1ZXJ5XG4vLyBzY2hlbWEgaXMgc3RhYmxlIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggKGlmIGFueSkgZXhwZXJpbWVudCBpcyBydW5uaW5nLlxuLy8gQ3VycmVudGx5IGBtbGAgKyBgbWVyY2hhbnRgOyBtYXRjaGVzIGBFeHBlcmltZW50TmFtZXNwYWNlYC5cbmNvbnN0IEVYUEVSSU1FTlRfTkFNRVNQQUNFUzogRXhwZXJpbWVudE5hbWVzcGFjZVtdID0gWydtbCcsICdtZXJjaGFudCddO1xuXG5jb25zdCBidWlsZEV4cGVyaW1lbnRQcm9wcyA9IChcbiAgYXNzaWdubWVudHM6IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W10gfCB1bmRlZmluZWQsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IGJ5TmFtZXNwYWNlID0gbmV3IE1hcDxFeHBlcmltZW50TmFtZXNwYWNlLCBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudD4oKTtcbiAgKGFzc2lnbm1lbnRzID8/IFtdKS5mb3JFYWNoKGEgPT4ge1xuICAgIGlmIChhLmxheWVyX25hbWUgIT0gbnVsbCAmJiBhLm5hbWVzcGFjZSAhPSBudWxsKSB7XG4gICAgICBieU5hbWVzcGFjZS5zZXQoYS5uYW1lc3BhY2UsIGEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBFWFBFUklNRU5UX05BTUVTUEFDRVMucmVkdWNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigoYWNjLCBucykgPT4ge1xuICAgIGNvbnN0IGEgPSBieU5hbWVzcGFjZS5nZXQobnMpO1xuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5sYXllcl9uYW1lYF0gPSBhPy5sYXllcl9uYW1lID8/IG51bGw7XG4gICAgYWNjW2BleHBlcmltZW50LiR7bnN9LmV4cGVyaW1lbnRfbmFtZWBdID0gYT8uYWxsb2NhdGVkX2V4cGVyaW1lbnRfbmFtZSA/PyBudWxsO1xuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5ncm91cF9uYW1lYF0gPSBhPy5ncm91cF9uYW1lID8/IG51bGw7XG4gICAgLy8gYHJ1bGVfaWRgIHJlc2VydmVkIOKAlCBiYWNrZW5kIGRvZXNuJ3QgY3VycmVudGx5IHN1cmZhY2UgaXQuXG4gICAgYWNjW2BleHBlcmltZW50LiR7bnN9LnJ1bGVfaWRgXSA9IG51bGw7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGNsYXNzIEFtcGxpdHVkZVNlcnZpY2Uge1xuICBwcml2YXRlIGFtcGxpdHVkZUNsaWVudDogQnJvd3NlckNsaWVudCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgcHJpdmF0ZSBjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWc7XG5cbiAgcHJpdmF0ZSBpbml0UHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNNb2NrQXBpS2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXkgPT09ICdtb2NrLWFtcGxpdHVkZS1rZXknO1xuICB9XG5cbiAgLy8gTXVzdCBub3QgZGVwZW5kIG9uIGBhbXBsaXR1ZGVDbGllbnRgOiB0aGUgU0RLIG5vdyBsb2FkcyB2aWEgZHluYW1pY1xuICAvLyBpbXBvcnQsIGFuZCBBbXBsaXR1ZGVQcm92aWRlciB1bm1vdW50cyBpdHMgZW50aXJlIHN1YnRyZWUgd2hpbGVcbiAgLy8gaXNSZWFkeSBpcyBmYWxzZSDigJQgZ2F0aW5nIG9uIHRoZSBjbGllbnQgd291bGQgYmxvY2sgd2lkZ2V0IHJlbmRlcmluZ1xuICAvLyBvbiB0aGUgYW5hbHl0aWNzIGNodW5rIGRvd25sb2FkLiBFdmVudHMgYXdhaXRlZCBpbiB0cmFja0V2ZW50IHF1ZXVlXG4gIC8vIGJlaGluZCBgaW5pdFByb21pc2VgIGluc3RlYWQuXG4gIGdldCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmXG4gICAgICB0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UgJiZcbiAgICAgIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSAmJlxuICAgICAgIXRoaXMuaXNNb2NrQXBpS2V5LFxuICAgICk7XG4gIH1cblxuICAvKiogUmVzb2x2ZXMgb25jZSBTREsgaW5pdGlhbGl6YXRpb24gaGFzIHNldHRsZWQgKG5ldmVyIHJlamVjdHMpLiAqL1xuICBpbml0aWFsaXplZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0UHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRMb2NhbFN0b3JhZ2VJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoXG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGZlYXR1cmVHYXRlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ3MoKSk7XG4gICAgY29uc3QgZ2F0ZXNQcm9wcyA9XG4gICAgICBmZWF0dXJlR2F0ZXMubGVuZ3RoID4gMFxuICAgICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke25hbWV9YF06IHZhbHVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICA6IHt9O1xuICAgIGNvbnN0IGV4cGVyaW1lbnRQcm9wcyA9IGJ1aWxkRXhwZXJpbWVudFByb3BzKHRoaXMuY29uZmlnLmV4cGVyaW1lbnRBc3NpZ25tZW50cyk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudFByb3BzID0ge1xuICAgICAgJ2Vudmlyb25tZW50LmV4ZWN1dGlvbl9jb250ZXh0JzogJ2J1bmRsZScsXG4gICAgICAnZW52aXJvbm1lbnQucGFnZV91cmwnOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfdXNlcl9pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fZW52aXJvbm1lbnQnOiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgJ2Vudmlyb25tZW50LmNvbnRleHRfc291cmNlJzogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgICdlbnZpcm9ubWVudC5zYWxlc19hZ2VudF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zYWxlc0FnZW50ID8/IGZhbHNlLFxuICAgICAgJ2Vudmlyb25tZW50LnNlYXJjaF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zZWFyY2hBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfb25fcXVlcnlfcGFyYW0nOiB0aGlzLmNvbmZpZy5lbnZpdmVPbixcbiAgICAgICdlbnZpcm9ubWVudC53aW5kb3dfc2hvdyc6IHRoaXMuY29uZmlnLnNob3csXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX2VuYWJsZWQnOiB0aGlzLmNvbmZpZy5lbmFibGVkRmVhdHVyZXM/LmVudml2ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzID0gQW1wbGl0dWRlU2VydmljZS5pc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLmdldEZ1bGxGbGFnVmFsdWVzKCksXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICAgIC4uLmVudmlyb25tZW50UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi50aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IHRoaXMuZ2V0TG9jYWxTdG9yYWdlSXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudiB8fCAndW5rbm93bicsXG4gICAgICBhcHBfc291cmNlOiB0aGlzLmNvbmZpZy5jb250ZXh0U291cmNlLFxuICAgICAgb3JnX2lkOiB0aGlzLmNvbmZpZy5vcmdJZCxcbiAgICAgICdvcmcuc2hvcnRfbmFtZSc6IHRoaXMuY29uZmlnLm9yZ1Nob3J0TmFtZSxcbiAgICAgICd1c2VyLmlkJzogdGhpcy5jb25maWcudXNlcklkLFxuICAgICAgJ2NkcC51c2VyX2lkJzogbnVsbCxcbiAgICAgICdjZHAucHJvdmlkZXInOiBudWxsLFxuICAgICAgJ2V2ZW50LnNvdXJjZSc6ICd3ZWItYnJvd3NlcicsXG4gICAgICAnZXZlbnQudHlwZSc6ICd1c2VyLWFjdGl2aXR5JyxcbiAgICAgICdldmVudC5pZCc6IG51bGwsXG4gICAgICAnZXZlbnQuY2hhbm5lbCc6ICd3ZWInLFxuICAgICAgJ2V2ZW50LnRpbWVzdGFtcCc6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHByaXZhdGUgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKFxuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCk6IEVucmljaG1lbnRQbHVnaW4ge1xuICAgIGlmICh0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICAgIGBbRW52aXZlXSAke0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuUGFnZVZpZXdlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMuc2hvdyddID0gU3RyaW5nKHRoaXMuY29uZmlnLnNob3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLmVudiddID0gU3RyaW5nKHRoaXMuY29uZmlnLmVudik7XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZz8uZW5hYmxlZEZlYXR1cmVzID8/ICh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiksXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ3RpbWluZy5lbnJpY2hlZF9hdF9tcyc6XG4gICAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKFxuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50X3R5cGUgYXMgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IGVucmljaG1lbnQ7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNSZWFkeSA9IEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiYgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1JlYWR5KSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ0FtcGxpdHVkZVNlcnZpY2UgaXMgbm90IHJlYWR5Jywge1xuICAgICAgICBpc1JlYWR5LFxuICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICAgaGFzRmVhdHVyZUZsYWdTZXJ2aWNlOiAhIXRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSxcbiAgICAgICAgaGFzQW1wbGl0dWRlQXBpS2V5OiAhIXRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTW9ja0FwaUtleSkge1xuICAgICAgbG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgICdNb2NrIEFQSSBrZXkgZGV0ZWN0ZWQg4oCUIHJ1bm5pbmcgaW4gbW9jayBtb2RlLCBubyBldmVudHMgd2lsbCBiZSBzZW50IHRvIEFtcGxpdHVkZS4nLFxuICAgICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIER5bmFtaWMgaW1wb3J0IGtlZXBzIHRoZSBBbXBsaXR1ZGUgU0RLIG91dCBvZiB0aGUgZWFnZXJcbiAgICAgICAgLy8gaW5qZWN0aW9uLWJ1bmRsZSBjaHVuazsgdHJhY2tFdmVudCBxdWV1ZXMgYmVoaW5kIGluaXRQcm9taXNlLlxuICAgICAgICBjb25zdCB7IGNyZWF0ZUluc3RhbmNlIH0gPSBhd2FpdCBpbXBvcnQoJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLWJyb3dzZXInKTtcbiAgICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcblxuICAgICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuYWRkKHRoaXMuZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKSk7XG4gICAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSwgdGhpcy5jb25maWcudXNlcklkLCB7XG4gICAgICAgICAgc2VydmVyWm9uZTogdGhpcy5jb25maWcuZGF0YVJlc2lkZW5jeSBhcyBTZXJ2ZXJab25lVHlwZSxcbiAgICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIHBhZ2VWaWV3czoge1xuICAgICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiAncGF0aE9ubHknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlc3Npb25zOiBmYWxzZSxcbiAgICAgICAgICAgIGZvcm1JbnRlcmFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50ID0gY3VycmVudEFtcGxpdHVkZUluc3RhbmNlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGxvYWQgb3IgaW5pdGlhbGl6ZSB0aGUgQW1wbGl0dWRlIFNESycsIGVycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1hcFdpZGdldFR5cGVUb0NoYXRDb21wb25lbnQod2lkZ2V0VHlwZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5GbG9hdGluZ0J1dHRvblYzOlxuICAgICAgICByZXR1cm4gJ2Zsb2F0aW5nX2J1dHRvbic7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5UeXBpbmdBbmltYXRpb25WMzpcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3VjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Tb2NpYWxQcm9vZlYzOlxuICAgICAgICByZXR1cm4gJ2VtYmVkZGVkX3dpZGdldCc7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5UaXRsZWRQcm9tcHRDYXJvdXNlbFYzOlxuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuUHJvbXB0Q2Fyb3VzZWxWMzpcbiAgICAgICAgcmV0dXJuICdzdWdnZXN0aW9uX2Jhcic7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Qcm9kdWN0Q2FyZFYzOlxuICAgICAgICByZXR1cm4gJ2ltYWdlX3Byb21wdF9jYXJkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb246IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHJpZ2dlckxvY2F0aW9uKSB7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1RFWFRfRklFTEQ6XG4gICAgICAgIHJldHVybiAncHJvbXB0X2NhcmQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST01QVF9DQVJPVVNFTDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5USVRMRURfUFJPTVBUX0NBUk9VU0VMOlxuICAgICAgICByZXR1cm4gJ3RvcF9yZXZpZXdzX3NuaXBwZXQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlRZUElOR19BTklNQVRJT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fVEVYVF9GSUVMRDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuICdjaGF0X3ByZXZpZXcnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkZMT0FUSU5HX0NIQVRfT1ZFUkxBWTpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTjpcbiAgICAgICAgcmV0dXJuICdpbl9jaGF0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cmlnZ2VyTG9jYXRpb24gYXMgc3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgYWxsb3dzIHVzIHRvIG1hcCB0aGUgZXZlbnQgcHJvcHMgdG8gdGhlIGNvcnJlY3QgZm9ybWF0IGZvciB0aGUgbGVnYWN5IGFtcGxpdHVkZSBldmVudHNcbiAgc3RhdGljIG1hcEV2ZW50UHJvcHMoeyBldmVudE5hbWUsIGV2ZW50UHJvcHMgfTogVHJhY2tFdmVudFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBtZXNzYWdlTWV0YWRhdGEgPSBldmVudFByb3BzPy5tZXNzYWdlX21ldGFkYXRhID8/IHt9O1xuICAgIGNvbnN0IHRyaWdnZXJMb2NhdGlvbiA9XG4gICAgICBtZXNzYWdlTWV0YWRhdGEgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBtZXNzYWdlTWV0YWRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAndHJpZ2dlcl9sb2NhdGlvbicgaW4gbWVzc2FnZU1ldGFkYXRhXG4gICAgICAgID8gbWVzc2FnZU1ldGFkYXRhLnRyaWdnZXJfbG9jYXRpb25cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRFeHBhbmRlZCkge1xuICAgICAgY29uc3QgbWFwcGVkVHJpZ2dlckxvY2NhdGlvbiA9XG4gICAgICAgIEFtcGxpdHVkZVNlcnZpY2UubWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICBtZXNzYWdlX21ldGFkYXRhOiB7XG4gICAgICAgICAgLi4ubWVzc2FnZU1ldGFkYXRhLFxuICAgICAgICAgIHRyaWdnZXJfbG9jYXRpb246IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24sXG4gICAgICAgICAgZnVsbF90cmlnZ2VyX2xvY2F0aW9uOiB0cmlnZ2VyTG9jYXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIGNvbnN0IG1hcHBlZFdpZGdldFR5cGUgPSBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFdpZGdldFR5cGVUb0NoYXRDb21wb25lbnQoXG4gICAgICAgIGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24gPVxuICAgICAgICBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgIC4uLm1lc3NhZ2VNZXRhZGF0YSxcbiAgICAgICAgICB0cmlnZ2VyX2xvY2F0aW9uOiBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uLFxuICAgICAgICAgIGZ1bGxfdHJpZ2dlcl9sb2NhdGlvbjogdHJpZ2dlckxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBjaGF0X2NvbXBvbmVudDogbWFwcGVkV2lkZ2V0VHlwZSxcbiAgICAgICAgJ2NoYXQuY29tcG9uZW50X3Zpc2libGUnOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50UHJvcHMgPz8ge307XG4gIH1cblxuICBzdGF0aWMgaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhFbnZpdmVNZXRyaWNzRXZlbnROYW1lKS5pbmNsdWRlcyhldmVudE5hbWUgYXMgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZGVjb3JhdGVFdmVudE5hbWUoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IHN0cmluZyB7XG4gICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkpIHtcbiAgICAgIHJldHVybiBgW0Vudml2ZV0gJHtldmVudE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuICB9XG5cbiAgYXN5bmMgdHJhY2tFdmVudCh7XG4gICAgZXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHMsXG4gICAgZXZlbnRHcm91cHMsXG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNNb2NrQXBpS2V5KSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcbiAgICBsb2dnZXIubG9nRGVidWcoJ1N1Ym1pdHRpbmcgZXZlbnQnLCBldmVudE5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvcmF0ZWRFdmVudE5hbWUgPSBBbXBsaXR1ZGVTZXJ2aWNlLmRlY29yYXRlRXZlbnROYW1lKGV2ZW50TmFtZSk7XG5cbiAgICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ1dhcm4oJ2FtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBwZWRFdmVudFByb3BzID0gQW1wbGl0dWRlU2VydmljZS5tYXBFdmVudFByb3BzKHsgZXZlbnROYW1lLCBldmVudFByb3BzIH0pO1xuICAgICAgY29uc3QgYW1wbGl0dWRlRXZlbnRQcm9wcyA9XG4gICAgICAgIGV2ZW50TmFtZSA9PT0gRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRUZXh0UmVzcG9uc2UgfHxcbiAgICAgICAgZXZlbnROYW1lID09PSBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFRleHRDbGlja2VkXG4gICAgICAgICAgPyAoZW5jb2RlU3VwcGxlbWVudGFyeVVuaWNvZGUobWFwcGVkRXZlbnRQcm9wcykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgICAgOiBtYXBwZWRFdmVudFByb3BzO1xuXG4gICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRQcm9wczogYW1wbGl0dWRlRXZlbnRQcm9wcyxcbiAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheS5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcblxuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHByb3BzOiBhbXBsaXR1ZGVFdmVudFByb3BzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4uYW1wbGl0dWRlRXZlbnRQcm9wcyxcbiAgICAgICAgICAuLi4oYW1wbGl0dWRlRXZlbnRQcm9wc1xuICAgICAgICAgICAgPyB0aGlzLmV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIGFtcGxpdHVkZUV2ZW50UHJvcHMpXG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLmV2ZW50R3JvdXBzLFxuICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgLy8gVE9ETzogUHVsbCBnYUVuYWJsZWQgZnJvbSBvcmcgY29uZmlnIHdoZW4gYXZhaWxhYmxlLiBIYXJkY29kZWQgdG8gdHJ1ZSBmb3Igbm93LlxuICAgICAgY29uc3QgZ2FFbmFibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZFByb3BzRm9yR0E0ID0ge1xuICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoZXZlbnROYW1lKSxcbiAgICAgICAgICAuLi5tYXBwZWRFdmVudFByb3BzLFxuICAgICAgICB9O1xuICAgICAgICBwcm9qZWN0VG9HQTQoZXZlbnROYW1lIGFzIEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIG1lcmdlZFByb3BzRm9yR0E0KTtcbiAgICAgIH0gZWxzZSBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBnYUVuYWJsZWQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdHQSB0cmFja2luZycsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBFbnN1cmUgdGhhdCBzdXBwbGVtZW50YWwgZGVmYXVsdCBwcm9wcyBhcmUgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHByb3BzXG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyA9IHByb3BzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxtQkFBbUI7QUFJN0MsTUFBTSx3QkFBd0I7QUFFOUIsTUFBTSxnQ0FBZ0MsVUFDcEMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFLLGVBQWMsVUFBVSxZQUFZLEVBQUUsSUFBSSxLQUFLLE1BQU87QUFFL0UsTUFBTSw4QkFBOEIsVUFBNEI7QUFDOUQsS0FBSSxPQUFPLFVBQVUsU0FDbkIsUUFBTyw2QkFBNkIsTUFBTSxHQUN0QyxHQUFHLHdCQUF3QixtQkFBbUIsTUFBTSxLQUNwRDtBQUVOLEtBQUksTUFBTSxRQUFRLE1BQU0sQ0FDdEIsUUFBTyxNQUFNLElBQUksMkJBQTJCO0FBRTlDLEtBQUksVUFBVSxRQUFRLE9BQU8sVUFBVSxTQUNyQyxRQUFPLE9BQU8sWUFDWixPQUFPLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLGlCQUFpQixDQUNoRCxLQUNBLDJCQUEyQixZQUFZLENBQ3hDLENBQUMsQ0FDSDtBQUVILFFBQU87O0FBZ0NULE1BQU1DLHdCQUErQyxDQUFDLE1BQU0sV0FBVztBQUV2RSxNQUFNLHdCQUNKLGdCQUM0QjtDQUM1QixNQUFNLDhCQUFjLElBQUksS0FBeUQ7QUFDakYsRUFBQyxlQUFlLEVBQUUsRUFBRSxTQUFRLE1BQUs7QUFDL0IsTUFBSSxFQUFFLGNBQWMsUUFBUSxFQUFFLGFBQWEsS0FDekMsYUFBWSxJQUFJLEVBQUUsV0FBVyxFQUFFO0dBRWpDO0FBQ0YsUUFBTyxzQkFBc0IsUUFBaUMsS0FBSyxPQUFPO0VBQ3hFLE1BQU0sSUFBSSxZQUFZLElBQUksR0FBRztBQUM3QixNQUFJLGNBQWMsR0FBRyxn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