@envive-ai/react-hooks 0.2.7-arthur-1 → 0.2.7

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 (83) hide show
  1. package/dist/{TrackComponentVisibleEvent-CXhKOwKQ.js → TrackComponentVisibleEvent-qNE0dIL1.js} +2 -2
  2. package/dist/{TrackComponentVisibleEvent-CgxCqrIt.cjs → TrackComponentVisibleEvent-tDRnrJi3.cjs} +2 -2
  3. package/dist/amplitudeContext-C6LHpqP_.cjs +290 -0
  4. package/dist/amplitudeContext-rEjGf57q.js +268 -0
  5. package/dist/application/utils/index.cjs +2 -2
  6. package/dist/application/utils/index.js +2 -2
  7. package/dist/atoms/app/index.d.cts +7 -7
  8. package/dist/atoms/app/index.d.ts +1 -1
  9. package/dist/atoms/chat/index.cjs +3 -3
  10. package/dist/atoms/chat/index.d.cts +26 -26
  11. package/dist/atoms/chat/index.d.ts +1 -1
  12. package/dist/atoms/chat/index.js +3 -3
  13. package/dist/atoms/globalSearch/index.d.cts +6 -6
  14. package/dist/atoms/globalSearch/index.d.ts +5 -5
  15. package/dist/atoms/org/index.d.cts +16 -16
  16. package/dist/atoms/org/index.d.ts +16 -16
  17. package/dist/atoms/search/index.cjs +5 -5
  18. package/dist/atoms/search/index.js +5 -5
  19. package/dist/atoms/search/utils.d.ts +1 -1
  20. package/dist/{cdnContext-CtrIlAqX.js → cdnContext-B8zWuGGT.js} +1 -1
  21. package/dist/{cdnContext-CaDyQ_5p.cjs → cdnContext-DzifgoNo.cjs} +1 -1
  22. package/dist/{chat-BjhQCyW_.js → chat-DChvXHjz.js} +3 -3
  23. package/dist/{chat-BkPax29G.cjs → chat-L_N0qaqs.cjs} +3 -3
  24. package/dist/{chatSearch-C3N3iIxu.cjs → chatSearch-B5whqPLW.cjs} +3 -3
  25. package/dist/{chatSearch-BsYlFvpv.js → chatSearch-so-qeiEL.js} +3 -3
  26. package/dist/{chatState-CJ52Ag_7.cjs → chatState-D9_aA1_h.cjs} +2 -2
  27. package/dist/{chatState-CXA1vF16.js → chatState-Dl5lyuKC.js} +2 -2
  28. package/dist/{commerce-api-rgj30eEp.js → commerce-api-DEFd5HUH.js} +2 -2
  29. package/dist/{commerce-api-DA1QGGMK.cjs → commerce-api-DqVD4NH8.cjs} +2 -2
  30. package/dist/contexts/amplitudeContext/index.cjs +2 -2
  31. package/dist/contexts/amplitudeContext/index.js +2 -2
  32. package/dist/contexts/cdnContext/index.cjs +1 -1
  33. package/dist/contexts/cdnContext/index.js +1 -1
  34. package/dist/contexts/chatContext/index.cjs +7 -7
  35. package/dist/contexts/chatContext/index.d.ts +4 -4
  36. package/dist/contexts/chatContext/index.js +7 -7
  37. package/dist/contexts/systemSettingsContext/index.d.cts +2 -2
  38. package/dist/contexts/systemSettingsContext/index.d.ts +4 -4
  39. package/dist/contexts/userIdentityContext/index.cjs +4 -4
  40. package/dist/contexts/userIdentityContext/index.js +4 -4
  41. package/dist/frontendConfig-Cawh5iqv.d.ts +1 -1
  42. package/dist/frontendConfig-iZipB5FG.d.cts +1 -1
  43. package/dist/hooks/AmplitudeOperations/index.cjs +3 -3
  44. package/dist/hooks/AmplitudeOperations/index.js +3 -3
  45. package/dist/hooks/CdnOperations/index.cjs +1 -1
  46. package/dist/hooks/CdnOperations/index.js +1 -1
  47. package/dist/hooks/ChatToggle/index.cjs +3 -3
  48. package/dist/hooks/ChatToggle/index.js +3 -3
  49. package/dist/hooks/ChatToggleAnalytics/index.cjs +4 -4
  50. package/dist/hooks/ChatToggleAnalytics/index.js +4 -4
  51. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  52. package/dist/hooks/IdentifyUser/index.cjs +4 -4
  53. package/dist/hooks/IdentifyUser/index.js +4 -4
  54. package/dist/hooks/Search/index.cjs +19 -1157
  55. package/dist/hooks/Search/index.js +17 -1156
  56. package/dist/hooks/SystemSettingsContext/index.d.ts +2 -2
  57. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +2 -2
  58. package/dist/hooks/TrackComponentVisibleEvent/index.js +2 -2
  59. package/dist/hooks/UpdateAnalyticsProps/index.cjs +1 -1
  60. package/dist/hooks/UpdateAnalyticsProps/index.js +1 -1
  61. package/dist/{search-Csh2n66W.cjs → search-CneZkauD.cjs} +2 -2
  62. package/dist/{search-DkiqkogN.js → search-DbZeJYdg.js} +2 -2
  63. package/dist/{useAmplitudeOperations-zIRSqmMW.js → useAmplitudeOperations-B9HjVe6G.js} +2 -2
  64. package/dist/{useAmplitudeOperations-Bo6YNbTV.cjs → useAmplitudeOperations-BdvxAzuI.cjs} +2 -2
  65. package/dist/userIdentityContext-CPztaX6-.js +126 -0
  66. package/dist/userIdentityContext-DdySlQBz.cjs +143 -0
  67. package/dist/{utils-C1ErYSoW.js → utils-B4PvsKVY.js} +2 -2
  68. package/dist/{utils-mqfncrhI.cjs → utils-BRVP7Mnu.cjs} +2 -2
  69. package/dist/utils-CBD4g2Nc.d.cts +1 -1
  70. package/dist/utils-QKFAbPT6.d.ts +1 -1
  71. package/package.json +3 -2
  72. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +525 -0
  73. package/src/contexts/amplitudeContext/amplitudeContext.tsx +6 -2
  74. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +0 -162
  75. package/src/contexts/userIdentityContext/userIdentityContext.tsx +13 -4
  76. package/dist/amplitudeContext-C8tT74Mi.cjs +0 -286
  77. package/dist/amplitudeContext-DCk6Va-j.js +0 -264
  78. package/dist/userIdentityContext-BqbNu7xu.cjs +0 -132
  79. package/dist/userIdentityContext-BxFH9FNQ.js +0 -115
  80. /package/dist/{AmplitudeOperations-ChZWcSsc.js → AmplitudeOperations-C-ieCm9m.js} +0 -0
  81. /package/dist/{AmplitudeOperations-JggIc1zD.cjs → AmplitudeOperations-p7APchq9.cjs} +0 -0
  82. /package/dist/{amplitudeContext-BItT9HmT.js → amplitudeContext-DbicJUzl.js} +0 -0
  83. /package/dist/{amplitudeContext-DPtyVv3Q.cjs → amplitudeContext-q3mggFSE.cjs} +0 -0
@@ -1,4 +1,4 @@
1
- import { SpiffyMetricsEventName, useAmplitude } from "./amplitudeContext-DCk6Va-j.js";
1
+ import { SpiffyMetricsEventName, useAmplitude } from "./amplitudeContext-rEjGf57q.js";
2
2
  import { useIntersection } from "./useIntersection-CZSEBUbv.js";
3
3
  import { useEffect, useRef } from "react";
4
4
 
@@ -49,4 +49,4 @@ const useTrackComponentVisibleEvent = (component, element, eventProps, eventName
49
49
 
50
50
  //#endregion
51
51
  export { useTrackComponentVisibleEvent };
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtQ1hoS093S1EuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNwaWZmeVdpZGdldHMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9zcGlmZnlXaWRnZXRzXCI7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tIFwic3JjL2hvb2tzL0ludGVyc2VjdGlvbi91c2VJbnRlcnNlY3Rpb25cIjtcbmltcG9ydCB7XG4gIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gIHVzZUFtcGxpdHVkZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuLyoqXG4gKiBUcmFja3MgYSBjb21wb25lbnQgYW5kIGxvZ3MgYW4gZXZlbnQgdG8gQW1wbGl0dWRlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyB2aXNpYmxlLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHRyYWNrLlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gaW5jbHVkZSB3aXRoIHRoZSBldmVudC5cbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgQW1wbGl0dWRlIGV2ZW50IG5hbWUgdG8gdHJhY2sgKGRlZmF1bHRzIHRvIENoYXRDb21wb25lbnRWaXNpYmxlKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50ID0gKFxuICBjb21wb25lbnQ6IFNwaWZmeVdpZGdldHMsXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lID0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZVxuKSA9PiB7XG4gIGNvbnN0IGlzVmlzaWJsZSA9IHVzZUludGVyc2VjdGlvbihlbGVtZW50LCBcIjBweFwiKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcblxuICBjb25zdCBjb21wb25lbnRQcm9wcyA9ICgoKSA9PiB7XG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhdF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoQ29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VhcmNoX2NvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gRGVmYXVsdCBjYXNlIGZvciBvdGhlciBldmVudCB0eXBlc1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgfTtcbiAgfSkoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Zpc2libGUgJiYgIWhhc1RyYWNrZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IGNvbXBvbmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgICBoYXNUcmFja2VkRXZlbnQuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBjb21wb25lbnQsIGV2ZW50UHJvcHMsIGV2ZW50TmFtZSwgY29tcG9uZW50UHJvcHMsIHRyYWNrRXZlbnRdKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQyx1QkFBdUIseUJBQ3hEO0NBQ0gsTUFBTSxZQUFZLGdCQUFnQixTQUFTLE1BQU07Q0FDakQsTUFBTSxrQkFBa0IsT0FBTyxNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FFckMsTUFBTSx3QkFBd0I7QUFDNUIsTUFBSSxjQUFjLHVCQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWMsdUJBQXVCLHVCQUN2QyxRQUFPO0dBQ0wsa0JBQWtCO0dBQ2xCLEdBQUc7R0FDSjtBQUdILFNBQU87R0FDTTtHQUNYLEdBQUc7R0FDSjtLQUNDO0FBRUosaUJBQWdCO0FBQ2QsTUFBSSxhQUFhLENBQUMsZ0JBQWdCLFNBQVM7QUFDekMsY0FBVztJQUNFO0lBQ1gsWUFBWTtJQUNiLENBQUM7QUFDRixtQkFBZ0IsVUFBVTs7SUFFM0I7RUFBQztFQUFXO0VBQVc7RUFBWTtFQUFXO0VBQWdCO0VBQVcsQ0FBQyJ9
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtcU5FMGRJTDEuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNwaWZmeVdpZGdldHMgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9zcGlmZnlXaWRnZXRzXCI7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tIFwic3JjL2hvb2tzL0ludGVyc2VjdGlvbi91c2VJbnRlcnNlY3Rpb25cIjtcbmltcG9ydCB7XG4gIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gIHVzZUFtcGxpdHVkZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuLyoqXG4gKiBUcmFja3MgYSBjb21wb25lbnQgYW5kIGxvZ3MgYW4gZXZlbnQgdG8gQW1wbGl0dWRlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyB2aXNpYmxlLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHRyYWNrLlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gaW5jbHVkZSB3aXRoIHRoZSBldmVudC5cbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgQW1wbGl0dWRlIGV2ZW50IG5hbWUgdG8gdHJhY2sgKGRlZmF1bHRzIHRvIENoYXRDb21wb25lbnRWaXNpYmxlKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50ID0gKFxuICBjb21wb25lbnQ6IFNwaWZmeVdpZGdldHMsXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lID0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZVxuKSA9PiB7XG4gIGNvbnN0IGlzVmlzaWJsZSA9IHVzZUludGVyc2VjdGlvbihlbGVtZW50LCBcIjBweFwiKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcblxuICBjb25zdCBjb21wb25lbnRQcm9wcyA9ICgoKSA9PiB7XG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhdF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoQ29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VhcmNoX2NvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gRGVmYXVsdCBjYXNlIGZvciBvdGhlciBldmVudCB0eXBlc1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgfTtcbiAgfSkoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Zpc2libGUgJiYgIWhhc1RyYWNrZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IGNvbXBvbmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgICBoYXNUcmFja2VkRXZlbnQuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9LCBbaXNWaXNpYmxlLCBjb21wb25lbnQsIGV2ZW50UHJvcHMsIGV2ZW50TmFtZSwgY29tcG9uZW50UHJvcHMsIHRyYWNrRXZlbnRdKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQyx1QkFBdUIseUJBQ3hEO0NBQ0gsTUFBTSxZQUFZLGdCQUFnQixTQUFTLE1BQU07Q0FDakQsTUFBTSxrQkFBa0IsT0FBTyxNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FFckMsTUFBTSx3QkFBd0I7QUFDNUIsTUFBSSxjQUFjLHVCQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWMsdUJBQXVCLHVCQUN2QyxRQUFPO0dBQ0wsa0JBQWtCO0dBQ2xCLEdBQUc7R0FDSjtBQUdILFNBQU87R0FDTTtHQUNYLEdBQUc7R0FDSjtLQUNDO0FBRUosaUJBQWdCO0FBQ2QsTUFBSSxhQUFhLENBQUMsZ0JBQWdCLFNBQVM7QUFDekMsY0FBVztJQUNFO0lBQ1gsWUFBWTtJQUNiLENBQUM7QUFDRixtQkFBZ0IsVUFBVTs7SUFFM0I7RUFBQztFQUFXO0VBQVc7RUFBWTtFQUFXO0VBQWdCO0VBQVcsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_amplitudeContext = require('./amplitudeContext-C8tT74Mi.cjs');
2
+ const require_amplitudeContext = require('./amplitudeContext-C6LHpqP_.cjs');
3
3
  const require_useIntersection = require('./useIntersection-DSDREfj6.cjs');
4
4
  let react = require("react");
5
5
  react = require_chunk.__toESM(react);
@@ -56,4 +56,4 @@ Object.defineProperty(exports, 'useTrackComponentVisibleEvent', {
56
56
  return useTrackComponentVisibleEvent;
57
57
  }
58
58
  });
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtQ2d4Q3FySXQuY2pzIiwibmFtZXMiOlsiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsInVzZUludGVyc2VjdGlvbiIsInVzZUFtcGxpdHVkZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9UcmFja0NvbXBvbmVudFZpc2libGVFdmVudC91c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTcGlmZnlXaWRnZXRzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0c1wiO1xuaW1wb3J0IHsgdXNlSW50ZXJzZWN0aW9uIH0gZnJvbSBcInNyYy9ob29rcy9JbnRlcnNlY3Rpb24vdXNlSW50ZXJzZWN0aW9uXCI7XG5pbXBvcnQge1xuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICB1c2VBbXBsaXR1ZGUsXG59IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0XCI7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGFuIGV2ZW50IHRvIEFtcGxpdHVkZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgdmlzaWJsZS5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byB0cmFjay5cbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gdHJhY2sgdmlzaWJpbGl0eSBvZi5cbiAqIEBwYXJhbSBldmVudFByb3BzIC0gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIEFtcGxpdHVkZSBldmVudCBuYW1lIHRvIHRyYWNrIChkZWZhdWx0cyB0byBDaGF0Q29tcG9uZW50VmlzaWJsZSkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudCA9IChcbiAgY29tcG9uZW50OiBTcGlmZnlXaWRnZXRzLFxuICBlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSA9IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGVcbikgPT4ge1xuICBjb25zdCBpc1Zpc2libGUgPSB1c2VJbnRlcnNlY3Rpb24oZWxlbWVudCwgXCIwcHhcIik7XG4gIGNvbnN0IGhhc1RyYWNrZWRFdmVudCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG5cbiAgY29uc3QgY29tcG9uZW50UHJvcHMgPSAoKCkgPT4ge1xuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoYXRfY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlYXJjaF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIERlZmF1bHQgY2FzZSBmb3Igb3RoZXIgZXZlbnQgdHlwZXNcbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAuLi5ldmVudFByb3BzLFxuICAgIH07XG4gIH0pKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmICFoYXNUcmFja2VkRXZlbnQuY3VycmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzOiBjb21wb25lbnRQcm9wcyxcbiAgICAgIH0pO1xuICAgICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgfSwgW2lzVmlzaWJsZSwgY29tcG9uZW50LCBldmVudFByb3BzLCBldmVudE5hbWUsIGNvbXBvbmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQ0EsZ0RBQXVCLHlCQUN4RDtDQUNILE1BQU0sWUFBWUMsd0NBQWdCLFNBQVMsTUFBTTtDQUNqRCxNQUFNLG9DQUF5QixNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlQyx1Q0FBYztDQUVyQyxNQUFNLHdCQUF3QjtBQUM1QixNQUFJLGNBQWNGLGdEQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWNBLGdEQUF1Qix1QkFDdkMsUUFBTztHQUNMLGtCQUFrQjtHQUNsQixHQUFHO0dBQ0o7QUFHSCxTQUFPO0dBQ007R0FDWCxHQUFHO0dBQ0o7S0FDQztBQUVKLDRCQUFnQjtBQUNkLE1BQUksYUFBYSxDQUFDLGdCQUFnQixTQUFTO0FBQ3pDLGNBQVc7SUFDRTtJQUNYLFlBQVk7SUFDYixDQUFDO0FBQ0YsbUJBQWdCLFVBQVU7O0lBRTNCO0VBQUM7RUFBVztFQUFXO0VBQVk7RUFBVztFQUFnQjtFQUFXLENBQUMifQ==
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQtdERSbnJKaTMuY2pzIiwibmFtZXMiOlsiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsInVzZUludGVyc2VjdGlvbiIsInVzZUFtcGxpdHVkZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ob29rcy9UcmFja0NvbXBvbmVudFZpc2libGVFdmVudC91c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTcGlmZnlXaWRnZXRzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0c1wiO1xuaW1wb3J0IHsgdXNlSW50ZXJzZWN0aW9uIH0gZnJvbSBcInNyYy9ob29rcy9JbnRlcnNlY3Rpb24vdXNlSW50ZXJzZWN0aW9uXCI7XG5pbXBvcnQge1xuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICB1c2VBbXBsaXR1ZGUsXG59IGZyb20gXCJzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0XCI7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGFuIGV2ZW50IHRvIEFtcGxpdHVkZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgdmlzaWJsZS5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byB0cmFjay5cbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gdHJhY2sgdmlzaWJpbGl0eSBvZi5cbiAqIEBwYXJhbSBldmVudFByb3BzIC0gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIEFtcGxpdHVkZSBldmVudCBuYW1lIHRvIHRyYWNrIChkZWZhdWx0cyB0byBDaGF0Q29tcG9uZW50VmlzaWJsZSkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudCA9IChcbiAgY29tcG9uZW50OiBTcGlmZnlXaWRnZXRzLFxuICBlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSA9IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGVcbikgPT4ge1xuICBjb25zdCBpc1Zpc2libGUgPSB1c2VJbnRlcnNlY3Rpb24oZWxlbWVudCwgXCIwcHhcIik7XG4gIGNvbnN0IGhhc1RyYWNrZWRFdmVudCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG5cbiAgY29uc3QgY29tcG9uZW50UHJvcHMgPSAoKCkgPT4ge1xuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoYXRfY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlYXJjaF9jb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIERlZmF1bHQgY2FzZSBmb3Igb3RoZXIgZXZlbnQgdHlwZXNcbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAuLi5ldmVudFByb3BzLFxuICAgIH07XG4gIH0pKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmICFoYXNUcmFja2VkRXZlbnQuY3VycmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzOiBjb21wb25lbnRQcm9wcyxcbiAgICAgIH0pO1xuICAgICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgfSwgW2lzVmlzaWJsZSwgY29tcG9uZW50LCBldmVudFByb3BzLCBldmVudE5hbWUsIGNvbXBvbmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxpQ0FDWCxXQUNBLFNBQ0EsWUFDQSxZQUFvQ0EsZ0RBQXVCLHlCQUN4RDtDQUNILE1BQU0sWUFBWUMsd0NBQWdCLFNBQVMsTUFBTTtDQUNqRCxNQUFNLG9DQUF5QixNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlQyx1Q0FBYztDQUVyQyxNQUFNLHdCQUF3QjtBQUM1QixNQUFJLGNBQWNGLGdEQUF1QixxQkFDdkMsUUFBTztHQUNMLGdCQUFnQjtHQUNoQixHQUFHO0dBQ0o7QUFFSCxNQUFJLGNBQWNBLGdEQUF1Qix1QkFDdkMsUUFBTztHQUNMLGtCQUFrQjtHQUNsQixHQUFHO0dBQ0o7QUFHSCxTQUFPO0dBQ007R0FDWCxHQUFHO0dBQ0o7S0FDQztBQUVKLDRCQUFnQjtBQUNkLE1BQUksYUFBYSxDQUFDLGdCQUFnQixTQUFTO0FBQ3pDLGNBQVc7SUFDRTtJQUNYLFlBQVk7SUFDYixDQUFDO0FBQ0YsbUJBQWdCLFVBQVU7O0lBRTNCO0VBQUM7RUFBVztFQUFXO0VBQVk7RUFBVztFQUFnQjtFQUFXLENBQUMifQ==
@@ -0,0 +1,290 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_events = require('./events-DYY4l817.cjs');
3
+ const require_models = require('./models-DqdLOi2I.cjs');
4
+ const require_featureGates = require('./featureGates-qU_ulhpC.cjs');
5
+ const require_logger = require('./logger-TBIl4uIH.cjs');
6
+ const require_localStorageContext = require('./localStorageContext-NRP-CdmF.cjs');
7
+ const require_enviveConfig = require('./enviveConfig-Dv9-esGV.cjs');
8
+ const require_orgAnalyticsConfig = require('./orgAnalyticsConfig-Bm23fw4s.cjs');
9
+ const require_app = require('./app-BbPSHefQ.cjs');
10
+ const require_enviveConfigContext = require('./enviveConfigContext-D2OELZDR.cjs');
11
+ const require_featureFlagServiceContext = require('./featureFlagServiceContext-CJyYItqu.cjs');
12
+ let react = require("react");
13
+ react = require_chunk.__toESM(react);
14
+ let jotai = require("jotai");
15
+ jotai = require_chunk.__toESM(jotai);
16
+ let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
17
+ __amplitude_analytics_browser = require_chunk.__toESM(__amplitude_analytics_browser);
18
+ let react_jsx_runtime = require("react/jsx-runtime");
19
+ react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
20
+
21
+ //#region src/contexts/amplitudeContext/amplitudeContext.tsx
22
+ let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
23
+ SpiffyMetricsEventName$1["BundleLoaded"] = "Bundle Loaded";
24
+ SpiffyMetricsEventName$1["ChatLiveAgentBtnClick"] = "Chat Live Agent Btn Click";
25
+ SpiffyMetricsEventName$1["ChatFloatingButtonVisible"] = "Chat Floating Button Visible";
26
+ SpiffyMetricsEventName$1["ChatComponentVisible"] = "Chat Component Visible";
27
+ SpiffyMetricsEventName$1["ChatComponentExpanded"] = "Chat Component Expanded";
28
+ SpiffyMetricsEventName$1["ChatComponentCollapsed"] = "Chat Component Collapsed";
29
+ SpiffyMetricsEventName$1["ChatUserMessageInput"] = "Chat User Message Input";
30
+ SpiffyMetricsEventName$1["ChatSuggestionClicked"] = "Chat Suggestion Clicked";
31
+ SpiffyMetricsEventName$1["ChatAssistantResponse"] = "Chat Assistant Response";
32
+ SpiffyMetricsEventName$1["ProductCardClicked"] = "Product Card Clicked";
33
+ SpiffyMetricsEventName$1["ProductReviewCardClicked"] = "Product Review Card Clicked";
34
+ SpiffyMetricsEventName$1["AddToCartClicked"] = "Add to Cart Clicked";
35
+ SpiffyMetricsEventName$1["PromptCardClicked"] = "Prompt Card Clicked";
36
+ SpiffyMetricsEventName$1["SupportedEvent"] = "Supported Event";
37
+ SpiffyMetricsEventName$1["SearchBackToResponseClicked"] = "Search Back to Response Clicked";
38
+ SpiffyMetricsEventName$1["PerformanceMetrics"] = "Performance Metrics";
39
+ SpiffyMetricsEventName$1["SearchBarClicked"] = "Search Bar Clicked";
40
+ SpiffyMetricsEventName$1["OrderLookupStarted"] = "Order Lookup Started";
41
+ SpiffyMetricsEventName$1["OrderLookupFormSubmitted"] = "Order Lookup Form Submitted";
42
+ SpiffyMetricsEventName$1["SearchComponentVisible"] = "Search Component Visible";
43
+ SpiffyMetricsEventName$1["SearchZeroStateSuggestionClicked"] = "Search Zero State Suggestion Clicked";
44
+ SpiffyMetricsEventName$1["SearchInputStarted"] = "Search Input Started";
45
+ SpiffyMetricsEventName$1["SearchQuerySubmitted"] = "Search Query Submitted";
46
+ SpiffyMetricsEventName$1["SearchResultsViewed"] = "Search Results Viewed";
47
+ SpiffyMetricsEventName$1["SearchTimeToFirstClick"] = "Search Time to First Click";
48
+ SpiffyMetricsEventName$1["SearchZeroResultsRate"] = "Search Zero Results Rate";
49
+ SpiffyMetricsEventName$1["SearchFilterClicked"] = "Search Filter Clicked";
50
+ SpiffyMetricsEventName$1["SearchSortClicked"] = "Search Sort Clicked";
51
+ return SpiffyMetricsEventName$1;
52
+ }({});
53
+ const AmplitudeContext = (0, react.createContext)(null);
54
+ const AmplitudeProvider = ({ children }) => {
55
+ const userId = (0, jotai.useAtomValue)(require_app.userIdAtom);
56
+ const amplitudeApiKey = (0, jotai.useAtomValue)(require_enviveConfig.amplitudeApiKeyAtom);
57
+ const dataResidency = (0, jotai.useAtomValue)(require_enviveConfig.dataResidencyAtom);
58
+ const orgGaConfig = (0, jotai.useAtomValue)(require_orgAnalyticsConfig.orgAnalyticsGoogleAnalyticsConfigAtom);
59
+ const env = (0, jotai.useAtomValue)(require_enviveConfig.envAtom);
60
+ const contextSource = (0, jotai.useAtomValue)(require_enviveConfig.contextSourceAtom);
61
+ (0, jotai.useAtomValue)(require_enviveConfig.identifyingPrefixAtom);
62
+ const { getItem } = require_localStorageContext.useLocalStorage();
63
+ const { publicKey, featureOverrides, variantUrlOverride, variantInfoOverride, show, orgShortName, featureGates } = require_enviveConfigContext.useEnviveConfig();
64
+ const { featureFlagService } = require_featureFlagServiceContext.useFeatureFlagService();
65
+ const [amplitudeClient, setAmplitudeClient] = react.default.useState(void 0);
66
+ const [internalEventTrackingEnrichment, setInternalEventTrackingEnrichment] = react.default.useState(void 0);
67
+ const [supplementalDefaultProps, setSupplementalDefaultProps] = react.default.useState({});
68
+ const isReady = Boolean(userId && featureFlagService && amplitudeApiKey);
69
+ const getDefaultTrackingProps = (0, react.useCallback)(() => {
70
+ const gatesProps = featureGates ? featureGates.reduce((acc, curr) => {
71
+ if (curr.name && curr.value != null) return {
72
+ ...acc,
73
+ [`feature_gate.${curr.name}`]: curr.value
74
+ };
75
+ return acc;
76
+ }, {}) : {};
77
+ const experimentProps = {};
78
+ return {
79
+ ...gatesProps,
80
+ ...experimentProps,
81
+ ...supplementalDefaultProps,
82
+ app_id: "commerce-chat-react-component",
83
+ chat_id: getItem(require_localStorageContext.LocalStorageKeys.ChatId),
84
+ env: env || "unknown",
85
+ app_source: contextSource,
86
+ "org.short_name": orgShortName,
87
+ "user.id": userId,
88
+ "cdp.user_id": null,
89
+ "cdp.provider": null,
90
+ "event.source": "web-browser",
91
+ "event.type": "user-activity",
92
+ "event.id": null,
93
+ "event.channel": "web",
94
+ "event.timestamp": null
95
+ };
96
+ }, [
97
+ featureGates,
98
+ supplementalDefaultProps,
99
+ env,
100
+ contextSource,
101
+ orgShortName,
102
+ userId
103
+ ]);
104
+ const eventPropsToPrefixedEventProps = (0, react.useCallback)((eventName, eventProps) => {
105
+ const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
106
+ return Object.entries(eventProps).reduce((acc, [key, value$1]) => {
107
+ acc[`${prefix}.${key}`] = value$1;
108
+ return acc;
109
+ }, {});
110
+ }, []);
111
+ const amplitudeSessionReplayInit = (0, react.useCallback)(() => {
112
+ const isEnabled = Boolean(orgShortName === require_models.OrgShortName.UniqueVintage && featureFlagService?.isClientSessionEnabled() && featureFlagService?.isFeatureGateEnabled(require_featureGates.FeatureGates.IsNewFeatureEnabled));
113
+ const sampleRate = 1;
114
+ try {
115
+ require_logger.logger_default.logDebug(`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`);
116
+ if (!isEnabled) return isEnabled;
117
+ return isEnabled;
118
+ } catch (e) {
119
+ require_logger.logger_default.logError("[spiffy-ai] Error initializing amplitude session-replay", e);
120
+ return false;
121
+ }
122
+ }, [orgShortName, featureFlagService]);
123
+ const getEventTrackingEnrichment = (0, react.useCallback)(() => {
124
+ if (internalEventTrackingEnrichment !== void 0) return internalEventTrackingEnrichment;
125
+ const enrichment = {
126
+ name: "page-view-tracking-enrichment",
127
+ type: "enrichment",
128
+ setup: async () => void 0,
129
+ execute: async (event) => {
130
+ let enrichedEvent;
131
+ if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
132
+ const globalProperties = {};
133
+ if (publicKey) globalProperties["globalProperties.publicKey"] = publicKey;
134
+ if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
135
+ globalProperties[`globalProperties.featureOverrides.${key}`] = String(value$1);
136
+ });
137
+ if (variantUrlOverride) globalProperties["globalProperties.variantUrlOverride"] = variantUrlOverride;
138
+ if (variantInfoOverride) globalProperties["globalProperties.variantInfoOverride"] = JSON.stringify(variantInfoOverride);
139
+ if (show != null) globalProperties["globalProperties.show"] = String(show);
140
+ const enabledFeatures = featureFlagService.getFeatureFlags();
141
+ const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value$1]) => ({
142
+ ...acc,
143
+ [`enabledFeatures.${key}`]: `${value$1}`
144
+ }), {});
145
+ const timingProperties = { "timing.enriched_at_ms": window.performance?.now() };
146
+ enrichedEvent = {
147
+ ...event,
148
+ event_properties: {
149
+ ...event.event_properties,
150
+ ...getDefaultTrackingProps(),
151
+ ...globalProperties,
152
+ ...enabledFeaturesProperties,
153
+ ...timingProperties
154
+ }
155
+ };
156
+ } else enrichedEvent = event;
157
+ require_events.EventsDispatcher.dispatch(require_events.SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
158
+ return enrichedEvent;
159
+ }
160
+ };
161
+ setInternalEventTrackingEnrichment(enrichment);
162
+ return enrichment;
163
+ }, [
164
+ internalEventTrackingEnrichment,
165
+ getDefaultTrackingProps,
166
+ featureFlagService,
167
+ publicKey,
168
+ featureOverrides,
169
+ variantUrlOverride,
170
+ variantInfoOverride,
171
+ show
172
+ ]);
173
+ (0, react.useEffect)(() => {
174
+ if (isReady && !amplitudeClient) {
175
+ const currentAmplitudeInstance = (0, __amplitude_analytics_browser.createInstance)();
176
+ const isSessionsEnabled = amplitudeSessionReplayInit();
177
+ currentAmplitudeInstance.add(getEventTrackingEnrichment());
178
+ currentAmplitudeInstance.init(amplitudeApiKey, userId, {
179
+ serverZone: dataResidency,
180
+ trackingOptions: { ipAddress: true },
181
+ autocapture: {
182
+ attribution: true,
183
+ pageViews: { trackHistoryChanges: "pathOnly" },
184
+ sessions: isSessionsEnabled,
185
+ formInteractions: false,
186
+ fileDownloads: false
187
+ }
188
+ });
189
+ setAmplitudeClient(currentAmplitudeInstance);
190
+ }
191
+ }, [
192
+ isReady,
193
+ amplitudeClient,
194
+ amplitudeApiKey,
195
+ userId,
196
+ dataResidency,
197
+ amplitudeSessionReplayInit,
198
+ getEventTrackingEnrichment
199
+ ]);
200
+ const trackEvent = (0, react.useCallback)(async ({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) => {
201
+ require_logger.logger_default.logDebug("Submitting event", eventName);
202
+ try {
203
+ const decoratedEventName = `[Spiffy] ${eventName}`;
204
+ if (!amplitudeClient) {
205
+ require_logger.logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
206
+ return;
207
+ }
208
+ const eventData = JSON.stringify({
209
+ eventName,
210
+ eventProps,
211
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
212
+ });
213
+ const data = new TextEncoder().encode(eventData);
214
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
215
+ const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
216
+ require_logger.logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
217
+ event_name: decoratedEventName,
218
+ props: eventProps
219
+ });
220
+ amplitudeClient.track(decoratedEventName, {
221
+ ...getDefaultTrackingProps(),
222
+ ...eventProps,
223
+ ...eventProps ? eventPropsToPrefixedEventProps(eventName, eventProps) : {}
224
+ }, {
225
+ ...eventGroups,
226
+ insert_id: currentInsertId
227
+ });
228
+ if (alsoSendToGoogleAnalytics && orgGaConfig) {
229
+ require_logger.logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
230
+ if (window.dataLayer) window.dataLayer.push({
231
+ event: decoratedEventName,
232
+ eventProps
233
+ });
234
+ }
235
+ } catch (err) {
236
+ require_logger.logger_default.logError("[spiffy-ai] Error tracking event", err, {
237
+ eventName,
238
+ eventProps
239
+ });
240
+ }
241
+ }, [
242
+ amplitudeClient,
243
+ getDefaultTrackingProps,
244
+ eventPropsToPrefixedEventProps,
245
+ orgGaConfig
246
+ ]);
247
+ const value = (0, react.useMemo)(() => ({
248
+ trackEvent,
249
+ isReady,
250
+ setSupplementalDefaultProps: (props) => setSupplementalDefaultProps(props)
251
+ }), [
252
+ trackEvent,
253
+ isReady,
254
+ setSupplementalDefaultProps
255
+ ]);
256
+ if (!isReady) {
257
+ console.log("AmplitudeProvider is not ready", isReady, userId, featureFlagService, amplitudeApiKey);
258
+ return null;
259
+ }
260
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AmplitudeContext.Provider, {
261
+ value,
262
+ children
263
+ });
264
+ };
265
+ const useAmplitude = () => {
266
+ const context = (0, react.useContext)(AmplitudeContext);
267
+ if (!context) throw new Error("useAmplitude must be used within AmplitudeProvider");
268
+ return context;
269
+ };
270
+
271
+ //#endregion
272
+ Object.defineProperty(exports, 'AmplitudeProvider', {
273
+ enumerable: true,
274
+ get: function () {
275
+ return AmplitudeProvider;
276
+ }
277
+ });
278
+ Object.defineProperty(exports, 'SpiffyMetricsEventName', {
279
+ enumerable: true,
280
+ get: function () {
281
+ return SpiffyMetricsEventName;
282
+ }
283
+ });
284
+ Object.defineProperty(exports, 'useAmplitude', {
285
+ enumerable: true,
286
+ get: function () {
287
+ return useAmplitude;
288
+ }
289
+ });
290
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1DNkxIcHFQXy5janMiLCJuYW1lcyI6WyJBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidXNlcklkQXRvbSIsImFtcGxpdHVkZUFwaUtleUF0b20iLCJkYXRhUmVzaWRlbmN5QXRvbSIsIm9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20iLCJlbnZBdG9tIiwiY29udGV4dFNvdXJjZUF0b20iLCJpZGVudGlmeWluZ1ByZWZpeEF0b20iLCJ1c2VMb2NhbFN0b3JhZ2UiLCJ1c2VFbnZpdmVDb25maWciLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJSZWFjdCIsIkxvY2FsU3RvcmFnZUtleXMiLCJ2YWx1ZSIsIk9yZ1Nob3J0TmFtZSIsIkZlYXR1cmVHYXRlcyIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlRWZmZWN0LFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tIFwiQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3NlclwiO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzXCI7XG5pbXBvcnQgeyBPcmdTaG9ydE5hbWUgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciwgU3BpZmZ5RXZlbnQgfSBmcm9tIFwic3JjL2V2ZW50c1wiO1xuaW1wb3J0IHtcbiAgYW1wbGl0dWRlQXBpS2V5QXRvbSxcbiAgY29udGV4dFNvdXJjZUF0b20sXG4gIGRhdGFSZXNpZGVuY3lBdG9tLFxuICBpZGVudGlmeWluZ1ByZWZpeEF0b20sXG59IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgTG9jYWxTdG9yYWdlS2V5cyxcbiAgdXNlTG9jYWxTdG9yYWdlLFxufSBmcm9tIFwic3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHRcIjtcbmltcG9ydCB7IG9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20gfSBmcm9tIFwic3JjL2F0b21zL29yZy9vcmdBbmFseXRpY3NDb25maWdcIjtcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tIFwic3JjL2F0b21zL2FwcFwiO1xuaW1wb3J0IHsgZW52QXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEJyb3dzZXJDbGllbnQsXG4gIEVucmljaG1lbnRQbHVnaW4sXG4gIEV2ZW50LFxuICBTZXJ2ZXJab25lVHlwZSxcbn0gZnJvbSBcIkBhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VFbnZpdmVDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL2Vudml2ZUNvbmZpZ0NvbnRleHQvZW52aXZlQ29uZmlnQ29udGV4dFwiO1xuaW1wb3J0IHtcbiAgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlLFxufSBmcm9tIFwic3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dFwiO1xuXG5leHBvcnQgZW51bSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHtcbiAgQnVuZGxlTG9hZGVkID0gXCJCdW5kbGUgTG9hZGVkXCIsXG4gIENoYXRMaXZlQWdlbnRCdG5DbGljayA9IFwiQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGlja1wiLFxuICBDaGF0RmxvYXRpbmdCdXR0b25WaXNpYmxlID0gXCJDaGF0IEZsb2F0aW5nIEJ1dHRvbiBWaXNpYmxlXCIsXG4gIENoYXRDb21wb25lbnRWaXNpYmxlID0gXCJDaGF0IENvbXBvbmVudCBWaXNpYmxlXCIsXG4gIENoYXRDb21wb25lbnRFeHBhbmRlZCA9IFwiQ2hhdCBDb21wb25lbnQgRXhwYW5kZWRcIixcbiAgQ2hhdENvbXBvbmVudENvbGxhcHNlZCA9IFwiQ2hhdCBDb21wb25lbnQgQ29sbGFwc2VkXCIsXG4gIENoYXRVc2VyTWVzc2FnZUlucHV0ID0gXCJDaGF0IFVzZXIgTWVzc2FnZSBJbnB1dFwiLFxuICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSBcIkNoYXQgU3VnZ2VzdGlvbiBDbGlja2VkXCIsXG4gIENoYXRBc3Npc3RhbnRSZXNwb25zZSA9IFwiQ2hhdCBBc3Npc3RhbnQgUmVzcG9uc2VcIixcbiAgUHJvZHVjdENhcmRDbGlja2VkID0gXCJQcm9kdWN0IENhcmQgQ2xpY2tlZFwiLFxuICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZFwiLFxuICBBZGRUb0NhcnRDbGlja2VkID0gXCJBZGQgdG8gQ2FydCBDbGlja2VkXCIsXG4gIFByb21wdENhcmRDbGlja2VkID0gXCJQcm9tcHQgQ2FyZCBDbGlja2VkXCIsXG4gIFN1cHBvcnRlZEV2ZW50ID0gXCJTdXBwb3J0ZWQgRXZlbnRcIixcbiAgU2VhcmNoQmFja1RvUmVzcG9uc2VDbGlja2VkID0gXCJTZWFyY2ggQmFjayB0byBSZXNwb25zZSBDbGlja2VkXCIsXG4gIFBlcmZvcm1hbmNlTWV0cmljcyA9IFwiUGVyZm9ybWFuY2UgTWV0cmljc1wiLFxuICBTZWFyY2hCYXJDbGlja2VkID0gXCJTZWFyY2ggQmFyIENsaWNrZWRcIixcbiAgT3JkZXJMb29rdXBTdGFydGVkID0gXCJPcmRlciBMb29rdXAgU3RhcnRlZFwiLFxuICBPcmRlckxvb2t1cEZvcm1TdWJtaXR0ZWQgPSBcIk9yZGVyIExvb2t1cCBGb3JtIFN1Ym1pdHRlZFwiLFxuICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gXCJTZWFyY2ggQ29tcG9uZW50IFZpc2libGVcIixcbiAgU2VhcmNoWmVyb1N0YXRlU3VnZ2VzdGlvbkNsaWNrZWQgPSBcIlNlYXJjaCBaZXJvIFN0YXRlIFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLCAvLyBUaGlzIGlzIHRoZSBzY3JvbGxpbmcgbGlzdCBvZiBzdWdnZXN0aW9uIGJ1dHRvbnMgaW4gZ2xvYmFsIHNlYXJjaFxuICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSBcIlNlYXJjaCBJbnB1dCBTdGFydGVkXCIsXG4gIFNlYXJjaFF1ZXJ5U3VibWl0dGVkID0gXCJTZWFyY2ggUXVlcnkgU3VibWl0dGVkXCIsXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZVZpZXdlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIFZpZXdlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZUNsaWNrZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBDbGlja2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgU2VhcmNoUmVzdWx0c1ZpZXdlZCA9IFwiU2VhcmNoIFJlc3VsdHMgVmlld2VkXCIsXG4gIFNlYXJjaFRpbWVUb0ZpcnN0Q2xpY2sgPSBcIlNlYXJjaCBUaW1lIHRvIEZpcnN0IENsaWNrXCIsXG4gIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9IFwiU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlXCIsXG4gIFNlYXJjaEZpbHRlckNsaWNrZWQgPSBcIlNlYXJjaCBGaWx0ZXIgQ2xpY2tlZFwiLFxuICBTZWFyY2hTb3J0Q2xpY2tlZCA9IFwiU2VhcmNoIFNvcnQgQ2xpY2tlZFwiLFxufVxuXG5pbnRlcmZhY2UgVHJhY2tFdmVudFBhcmFtcyB7XG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZTtcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEdyb3Vwcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFtcGxpdHVkZUNvbnRleHRUeXBlIHtcbiAgdHJhY2tFdmVudDogKHBhcmFtczogVHJhY2tFdmVudFBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNSZWFkeTogYm9vbGVhbjtcbiAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xufVxuXG5jb25zdCBBbXBsaXR1ZGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBbXBsaXR1ZGVDb250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQW1wbGl0dWRlUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7XG4gIGNoaWxkcmVuLFxufSkgPT4ge1xuICBjb25zdCB1c2VySWQgPSB1c2VBdG9tVmFsdWUodXNlcklkQXRvbSk7XG4gIGNvbnN0IGFtcGxpdHVkZUFwaUtleSA9IHVzZUF0b21WYWx1ZShhbXBsaXR1ZGVBcGlLZXlBdG9tKTtcbiAgY29uc3QgZGF0YVJlc2lkZW5jeSA9IHVzZUF0b21WYWx1ZShkYXRhUmVzaWRlbmN5QXRvbSk7XG4gIGNvbnN0IG9yZ0dhQ29uZmlnID0gdXNlQXRvbVZhbHVlKG9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20pO1xuICBjb25zdCBlbnYgPSB1c2VBdG9tVmFsdWUoZW52QXRvbSk7XG4gIGNvbnN0IGNvbnRleHRTb3VyY2UgPSB1c2VBdG9tVmFsdWUoY29udGV4dFNvdXJjZUF0b20pO1xuICBjb25zdCBpZGVudGlmeWluZ1ByZWZpeCA9IHVzZUF0b21WYWx1ZShpZGVudGlmeWluZ1ByZWZpeEF0b20pO1xuICBjb25zdCB7IGdldEl0ZW0gfSA9IHVzZUxvY2FsU3RvcmFnZSgpO1xuICBjb25zdCB7XG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgICBvcmdTaG9ydE5hbWUsXG4gICAgZmVhdHVyZUdhdGVzLFxuICB9ID0gdXNlRW52aXZlQ29uZmlnKCk7XG5cbiAgY29uc3QgeyBmZWF0dXJlRmxhZ1NlcnZpY2UgfSA9IHVzZUZlYXR1cmVGbGFnU2VydmljZSgpO1xuXG4gIGNvbnN0IFthbXBsaXR1ZGVDbGllbnQsIHNldEFtcGxpdHVkZUNsaWVudF0gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBCcm93c2VyQ2xpZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2ludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnRdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBbc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgIHVzZXJJZCAmJiBmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgYW1wbGl0dWRlQXBpS2V5XG4gICk7XG5cbiAgY29uc3QgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMgPSB1c2VDYWxsYmFjaygoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPSBmZWF0dXJlR2F0ZXNcbiAgICAgID8gZmVhdHVyZUdhdGVzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyLm5hbWUgJiYgY3Vyci52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7Y3Vyci5uYW1lfWBdOiBjdXJyLnZhbHVlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSB7fTsgLy8gTm8gZGlyZWN0IGVxdWl2YWxlbnQgZm9yIGV4cGVyaW1lbnRzIGluIEVudml2ZUNvbmZpZyB5ZXRcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IHtcbiAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAuLi5leHBlcmltZW50UHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICAvLyBUT0RPOiBvcmdfaWQgaXMgbm90IGRpcmVjdGx5IGF2YWlsYWJsZSBpbiBFbnZpdmVDb25maWcuIE5lZWQgdG8gZmluZCBhIG5ldyBzb3VyY2Ugb3IgZGVyaXZlIGl0LlxuICAgICAgLy8gb3JnX2lkOiBvcmdDb25maWc/Lm9yZz8ub3JnPy5pZCxcbiAgICAgIGFwcF9pZDogXCJjb21tZXJjZS1jaGF0LXJlYWN0LWNvbXBvbmVudFwiLFxuICAgICAgY2hhdF9pZDogZ2V0SXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IGVudiB8fCBcInVua25vd25cIixcbiAgICAgIGFwcF9zb3VyY2U6IGNvbnRleHRTb3VyY2UsXG4gICAgICBcIm9yZy5zaG9ydF9uYW1lXCI6IG9yZ1Nob3J0TmFtZSxcbiAgICAgIFwidXNlci5pZFwiOiB1c2VySWQsXG4gICAgICBcImNkcC51c2VyX2lkXCI6IG51bGwsXG4gICAgICBcImNkcC5wcm92aWRlclwiOiBudWxsLFxuICAgICAgXCJldmVudC5zb3VyY2VcIjogXCJ3ZWItYnJvd3NlclwiLFxuICAgICAgXCJldmVudC50eXBlXCI6IFwidXNlci1hY3Rpdml0eVwiLFxuICAgICAgXCJldmVudC5pZFwiOiBudWxsLFxuICAgICAgXCJldmVudC5jaGFubmVsXCI6IFwid2ViXCIsXG4gICAgICBcImV2ZW50LnRpbWVzdGFtcFwiOiBudWxsLFxuICAgIH07XG4gIH0sIFtcbiAgICBmZWF0dXJlR2F0ZXMsXG4gICAgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLFxuICAgIGVudixcbiAgICBjb250ZXh0U291cmNlLFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICB1c2VySWQsXG4gIF0pO1xuXG4gIGNvbnN0IGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbiAgICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCBcIl9cIik7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZXZlbnRQcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCA9IHVzZUNhbGxiYWNrKCgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPSBCb29sZWFuKFxuICAgICAgb3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuVW5pcXVlVmludGFnZSAmJlxuICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmlzQ2xpZW50U2Vzc2lvbkVuYWJsZWQoKSAmJlxuICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmlzRmVhdHVyZUdhdGVFbmFibGVkKFxuICAgICAgICAgIEZlYXR1cmVHYXRlcy5Jc05ld0ZlYXR1cmVFbmFibGVkXG4gICAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IHNhbXBsZVJhdGUgPSAxO1xuXG4gICAgdHJ5IHtcbiAgICAgIExvZ2dlci5sb2dEZWJ1ZyhcbiAgICAgICAgYFtzcGlmZnktYWldIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheSBpbml0aWFsaXppbmcgaXNFbmFibGVkPSR7aXNFbmFibGVkfSBzYW1wbGVSYXRlPSR7c2FtcGxlUmF0ZX1gXG4gICAgICApO1xuXG4gICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gaXNFbmFibGVkO1xuICAgICAgfVxuXG4gICAgICAvLyBhbXBsaXR1ZGVJbnN0YW5jZS5hZGQoc2Vzc2lvblJlcGxheVBsdWdpbih7IHNhbXBsZVJhdGUgfSkpO1xuXG4gICAgICByZXR1cm4gaXNFbmFibGVkO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcihcbiAgICAgICAgXCJbc3BpZmZ5LWFpXSBFcnJvciBpbml0aWFsaXppbmcgYW1wbGl0dWRlIHNlc3Npb24tcmVwbGF5XCIsXG4gICAgICAgIGVcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCBbb3JnU2hvcnROYW1lLCBmZWF0dXJlRmxhZ1NlcnZpY2VdKTtcblxuICBjb25zdCBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IHVzZUNhbGxiYWNrKCgpOiBFbnJpY2htZW50UGx1Z2luID0+IHtcbiAgICBpZiAoaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogXCJwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudFwiLFxuICAgICAgdHlwZTogXCJlbnJpY2htZW50XCIsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgIFwiW0FtcGxpdHVkZV0gUGFnZSBWaWV3ZWRcIixcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnB1YmxpY0tleVwiXSA9IHB1YmxpY0tleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZlYXR1cmVPdmVycmlkZXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW2BnbG9iYWxQcm9wZXJ0aWVzLmZlYXR1cmVPdmVycmlkZXMuJHtrZXl9YF0gPVxuICAgICAgICAgICAgICAgIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRVcmxPdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudFVybE92ZXJyaWRlXCJdID1cbiAgICAgICAgICAgICAgdmFyaWFudFVybE92ZXJyaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudEluZm9PdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudEluZm9PdmVycmlkZVwiXSA9XG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHZhcmlhbnRJbmZvT3ZlcnJpZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy5zaG93XCJdID0gU3RyaW5nKHNob3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlcyA9IGZlYXR1cmVGbGFnU2VydmljZSEuZ2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICBcInRpbWluZy5lbnJpY2hlZF9hdF9tc1wiOiB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdygpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0ge1xuICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICBldmVudF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmV2ZW50X3Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQoZW5yaWNobWVudCk7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH0sIFtcbiAgICBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LFxuICAgIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLFxuICAgIGZlYXR1cmVGbGFnU2VydmljZSxcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1JlYWR5ICYmICFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICBjb25zdCBpc1Nlc3Npb25zRW5hYmxlZCA9IGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0KCk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuYWRkKGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCkpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmluaXQoYW1wbGl0dWRlQXBpS2V5ISwgdXNlcklkISwge1xuICAgICAgICBzZXJ2ZXJab25lOiBkYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiBcInBhdGhPbmx5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogaXNTZXNzaW9uc0VuYWJsZWQsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHNldEFtcGxpdHVkZUNsaWVudChjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UpO1xuICAgIH1cbiAgfSwgW1xuICAgIGlzUmVhZHksXG4gICAgYW1wbGl0dWRlQ2xpZW50LFxuICAgIGFtcGxpdHVkZUFwaUtleSxcbiAgICB1c2VySWQsXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCxcbiAgICBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgXSk7XG5cbiAgY29uc3QgdHJhY2tFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBldmVudFByb3BzLFxuICAgICAgZXZlbnRHcm91cHMsXG4gICAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gICAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFwiU3VibWl0dGluZyBldmVudFwiLCBldmVudE5hbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgICAgaWYgKCFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgICBMb2dnZXIubG9nV2FybihcImFtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkXCIsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShldmVudERhdGEpO1xuICAgICAgICAgLy8gY2FsY3VsYXRlIGEgaGFzaCBvZiB0aGUgZXZlbnQgcHJvcGVydGllcyB0byB1c2UgYXMgdGhlIGluc2VydF9pZCBzbyB0aGF0IGR1cGxpY2F0ZSBldmVudHNcbiAgICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KFwiU0hBLTI1NlwiLCBkYXRhKTtcbiAgICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheVxuICAgICAgICAgIC5tYXAoKGIpID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKSlcbiAgICAgICAgICAuam9pbihcIlwiKTtcblxuICAgICAgICBMb2dnZXIubG9nRGVidWcoYGFtcGxpdHVkZSB0cmFja2luZyAke2RlY29yYXRlZEV2ZW50TmFtZX1gLCBudWxsLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIHByb3BzOiBldmVudFByb3BzLFxuICAgICAgICB9KTtcblxuICAgICAgICBhbXBsaXR1ZGVDbGllbnQudHJhY2soXG4gICAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICAgICAgLi4uKGV2ZW50UHJvcHNcbiAgICAgICAgICAgICAgPyBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoZXZlbnROYW1lLCBldmVudFByb3BzKVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmV2ZW50R3JvdXBzLFxuICAgICAgICAgICAgaW5zZXJ0X2lkOiBjdXJyZW50SW5zZXJ0SWQsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzICYmIG9yZ0dhQ29uZmlnKSB7XG4gICAgICAgICAgLy8gVE9ETzogQWRkIGluIHdpbmRvd0RhdGFMYXllclNlcnZpY2Ugb3IgY29udGV4dCBhbHRlcm5hdGl2ZSBhbmQgaG9vayBpdCB1cCBoZXJlXG4gICAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFwiW3NwaWZmeS1haV0gR0EgdHJhY2tpbmdcIiwgZGVjb3JhdGVkRXZlbnROYW1lKTtcbiAgICAgICAgICBpZiAod2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgICBldmVudFByb3BzOiBldmVudFByb3BzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKFwiW3NwaWZmeS1haV0gRXJyb3IgdHJhY2tpbmcgZXZlbnRcIiwgZXJyLCB7XG4gICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYW1wbGl0dWRlQ2xpZW50LFxuICAgICAgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsXG4gICAgICBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMsXG4gICAgICBvcmdHYUNvbmZpZyxcbiAgICBdXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0cmFja0V2ZW50LFxuICAgICAgaXNSZWFkeSxcbiAgICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT5cbiAgICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzKHByb3BzKSxcbiAgICB9KSxcbiAgICBbdHJhY2tFdmVudCwgaXNSZWFkeSwgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzXVxuICApO1xuXG4gIGlmICghaXNSZWFkeSkge1xuICAgIGNvbnNvbGUubG9nKFwiQW1wbGl0dWRlUHJvdmlkZXIgaXMgbm90IHJlYWR5XCIsIGlzUmVhZHksIHVzZXJJZCwgZmVhdHVyZUZsYWdTZXJ2aWNlLCBhbXBsaXR1ZGVBcGlLZXkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8QW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBbXBsaXR1ZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFtcGxpdHVkZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBbXBsaXR1ZGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBBbXBsaXR1ZGVQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSxJQUFZLDRFQUFM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