@envive-ai/react-hooks 0.2.6-alpha.13 → 0.2.7-arthur-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/{NewOrgConfig-DJm6_abA.cjs → NewOrgConfig-Bo1seKr6.cjs} +2 -2
  2. package/dist/{NewOrgConfig-BfbTlFg1.js → NewOrgConfig-yptI2imS.js} +2 -2
  3. package/dist/{SystemSettingsContext-BbTKNBvJ.js → SystemSettingsContext-BY1BFgAQ.js} +2 -2
  4. package/dist/{SystemSettingsContext-6ZHzQkCE.cjs → SystemSettingsContext-EDpRMMt2.cjs} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-BJgNOypY.js → TrackComponentVisibleEvent-CXhKOwKQ.js} +3 -3
  6. package/dist/{TrackComponentVisibleEvent-BRC2FTp-.cjs → TrackComponentVisibleEvent-CgxCqrIt.cjs} +7 -7
  7. package/dist/amplitudeContext-C8tT74Mi.cjs +286 -0
  8. package/dist/{amplitudeContext-B73xamNe.d.cts → amplitudeContext-CCVyp5RU.d.cts} +1 -1
  9. package/dist/amplitudeContext-DCk6Va-j.js +264 -0
  10. package/dist/{amplitudeContext-CZUzMXHl.d.ts → amplitudeContext-DcRur97Z.d.ts} +1 -1
  11. package/dist/app-BbPSHefQ.cjs +156 -0
  12. package/dist/app-CflxT_xI.js +110 -0
  13. package/dist/application/models/graphql/index.cjs +3 -2
  14. package/dist/application/models/graphql/index.d.cts +2 -2
  15. package/dist/application/models/graphql/index.d.ts +2 -2
  16. package/dist/application/models/graphql/index.js +2 -2
  17. package/dist/application/models/guards/api/index.d.cts +2 -1
  18. package/dist/application/models/guards/api/index.d.ts +3 -2
  19. package/dist/application/models/guards/utils.d.cts +1 -1
  20. package/dist/application/models/guards/utils.d.ts +1 -1
  21. package/dist/application/models/index.cjs +3 -3
  22. package/dist/application/models/index.d.cts +11 -10
  23. package/dist/application/models/index.d.ts +12 -11
  24. package/dist/application/models/index.js +2 -2
  25. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  26. package/dist/application/models/variantInfo/index.d.cts +1 -1
  27. package/dist/application/models/variantInfo/index.d.ts +1 -1
  28. package/dist/application/utils/index.cjs +8 -6
  29. package/dist/application/utils/index.d.cts +14 -13
  30. package/dist/application/utils/index.d.ts +17 -16
  31. package/dist/application/utils/index.js +8 -6
  32. package/dist/{atomStore-DNji91Im.cjs → atomStore-CmZbgQHc.cjs} +1 -1
  33. package/dist/{atomStore-DXTVqiKc.js → atomStore-DEcDhiLp.js} +1 -1
  34. package/dist/atoms/app/index.cjs +9 -14
  35. package/dist/atoms/app/index.d.cts +19 -18
  36. package/dist/atoms/app/index.d.ts +20 -19
  37. package/dist/atoms/app/index.js +4 -9
  38. package/dist/atoms/atomStore/index.cjs +1 -1
  39. package/dist/atoms/atomStore/index.js +1 -1
  40. package/dist/atoms/chat/index.cjs +9 -8
  41. package/dist/atoms/chat/index.d.cts +39 -38
  42. package/dist/atoms/chat/index.d.ts +40 -39
  43. package/dist/atoms/chat/index.js +9 -8
  44. package/dist/atoms/globalSearch/index.cjs +1 -2
  45. package/dist/atoms/globalSearch/index.d.cts +5 -5
  46. package/dist/atoms/globalSearch/index.d.ts +6 -6
  47. package/dist/atoms/globalSearch/index.js +1 -2
  48. package/dist/atoms/org/index.cjs +8 -7
  49. package/dist/atoms/org/index.d.cts +30 -29
  50. package/dist/atoms/org/index.d.ts +31 -30
  51. package/dist/atoms/org/index.js +4 -3
  52. package/dist/atoms/search/index.cjs +16 -15
  53. package/dist/atoms/search/index.d.cts +13 -12
  54. package/dist/atoms/search/index.d.ts +14 -13
  55. package/dist/atoms/search/index.js +16 -15
  56. package/dist/atoms/search/types.cjs +1 -1
  57. package/dist/atoms/search/types.d.cts +4 -2
  58. package/dist/atoms/search/types.d.ts +4 -2
  59. package/dist/atoms/search/types.js +1 -1
  60. package/dist/atoms/search/utils.cjs +1 -1
  61. package/dist/atoms/search/utils.d.ts +1 -1
  62. package/dist/atoms/search/utils.js +1 -1
  63. package/dist/{cdnContext-DOSIofl8.cjs → cdnContext-CaDyQ_5p.cjs} +1 -1
  64. package/dist/{cdnContext-CEGBVVBU.js → cdnContext-CtrIlAqX.js} +1 -1
  65. package/dist/{chat-DH70QqJp.js → chat-BjhQCyW_.js} +8 -7
  66. package/dist/{chat-CqPuT9_V.cjs → chat-BkPax29G.cjs} +16 -9
  67. package/dist/{chatElementDisplayLocation-DWmfNX_u.d.cts → chatElementDisplayLocation-B7vr33eG.d.cts} +1 -1
  68. package/dist/{chatElementDisplayLocation-CpgV2wR1.d.ts → chatElementDisplayLocation-D4XF0UfI.d.ts} +1 -1
  69. package/dist/{chatSearch-C7Y-hb-6.js → chatSearch-BsYlFvpv.js} +7 -7
  70. package/dist/{chatSearch-DLV4BUGA.cjs → chatSearch-C3N3iIxu.cjs} +7 -7
  71. package/dist/{chatState-CcFtSqJT.cjs → chatState-CJ52Ag_7.cjs} +5 -5
  72. package/dist/{chatState-DKnNHmwe.js → chatState-CXA1vF16.js} +3 -3
  73. package/dist/commerce-api-DA1QGGMK.cjs +319 -0
  74. package/dist/commerce-api-rgj30eEp.js +312 -0
  75. package/dist/config/index.d.cts +4 -4
  76. package/dist/config/index.d.ts +4 -4
  77. package/dist/config/locators/components/chat/index.d.cts +1 -1
  78. package/dist/config/locators/components/chat/index.d.ts +1 -1
  79. package/dist/config/locators/components/common/index.d.cts +1 -1
  80. package/dist/config/locators/components/common/index.d.ts +1 -1
  81. package/dist/config/locators/components/index.d.cts +1 -1
  82. package/dist/config/locators/components/index.d.ts +1 -1
  83. package/dist/config/locators/index.d.cts +4 -4
  84. package/dist/config/locators/index.d.ts +4 -4
  85. package/dist/contexts/amplitudeContext/index.cjs +10 -9
  86. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  87. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  88. package/dist/contexts/amplitudeContext/index.js +7 -6
  89. package/dist/contexts/cdnContext/index.cjs +1 -1
  90. package/dist/contexts/cdnContext/index.js +1 -1
  91. package/dist/contexts/chatContext/index.cjs +32 -27
  92. package/dist/contexts/chatContext/index.d.cts +2 -2
  93. package/dist/contexts/chatContext/index.d.ts +4 -4
  94. package/dist/contexts/chatContext/index.js +22 -17
  95. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  96. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  97. package/dist/contexts/enviveCssContext/index.cjs +7 -7
  98. package/dist/contexts/enviveCssContext/index.js +7 -7
  99. package/dist/contexts/featureFlagContext/index.cjs +1 -1
  100. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  101. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  102. package/dist/contexts/featureFlagContext/index.js +1 -1
  103. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  104. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  105. package/dist/contexts/graphqlContext/index.cjs +3 -3
  106. package/dist/contexts/graphqlContext/index.d.cts +13 -12
  107. package/dist/contexts/graphqlContext/index.d.ts +14 -13
  108. package/dist/contexts/graphqlContext/index.js +3 -3
  109. package/dist/contexts/newOrgConfigContext/index.cjs +6 -6
  110. package/dist/contexts/newOrgConfigContext/index.d.cts +14 -13
  111. package/dist/contexts/newOrgConfigContext/index.d.ts +15 -14
  112. package/dist/contexts/newOrgConfigContext/index.js +6 -6
  113. package/dist/contexts/searchContext/index.cjs +10 -13
  114. package/dist/contexts/searchContext/index.d.cts +1 -1
  115. package/dist/contexts/searchContext/index.d.ts +2 -2
  116. package/dist/contexts/searchContext/index.js +10 -13
  117. package/dist/contexts/sessionStorageContext/index.cjs +1 -1
  118. package/dist/contexts/sessionStorageContext/index.js +1 -1
  119. package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
  120. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  121. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  122. package/dist/contexts/shopifyUrlContext/index.js +1 -1
  123. package/dist/contexts/systemSettingsContext/index.cjs +1 -1
  124. package/dist/contexts/systemSettingsContext/index.d.cts +14 -13
  125. package/dist/contexts/systemSettingsContext/index.d.ts +15 -14
  126. package/dist/contexts/systemSettingsContext/index.js +1 -1
  127. package/dist/contexts/types.d.cts +3 -3
  128. package/dist/contexts/types.d.ts +3 -3
  129. package/dist/contexts/userIdentityContext/index.cjs +14 -8
  130. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  131. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  132. package/dist/contexts/userIdentityContext/index.js +12 -6
  133. package/dist/{domObserver-Bqf3ooj8.cjs → domObserver-COKvTfZV.cjs} +1 -1
  134. package/dist/{domObserver-v9ODTyfT.js → domObserver-DEiUh0qg.js} +1 -1
  135. package/dist/{featureFlagServiceContext-V0J-69ty.d.ts → featureFlagServiceContext-CpxlOkI9.d.ts} +2 -2
  136. package/dist/{featureFlagServiceContext-Be_LUbFf.d.cts → featureFlagServiceContext-p5UBwPM3.d.cts} +2 -2
  137. package/dist/frontendConfig-Cawh5iqv.d.ts +859 -0
  138. package/dist/frontendConfig-iZipB5FG.d.cts +859 -0
  139. package/dist/{globalSearch-FBk2epe8.cjs → globalSearch-BOG3wmck.cjs} +1 -1
  140. package/dist/{globalSearch-Ccxq8hNF.js → globalSearch-BQEX-2Ml.js} +1 -1
  141. package/dist/graphql-CkxgqsXP.js +48 -0
  142. package/dist/graphql-i3dtpVTl.cjs +71 -0
  143. package/dist/graphqlConfig-BnfE0ql5.cjs +39 -0
  144. package/dist/graphqlConfig-CZGjJ8hP.js +14 -0
  145. package/dist/{graphqlContext-D67VEQg3.d.cts → graphqlContext-BeyKU1Dr.d.cts} +2 -2
  146. package/dist/{graphqlContext-BQA6gnpH.d.ts → graphqlContext-CXQl0hq2.d.ts} +3 -3
  147. package/dist/{graphqlContext-W0cZNBf1.cjs → graphqlContext-DP8T3-Kd.cjs} +4 -4
  148. package/dist/{graphqlContext-Ci5GRAdH.js → graphqlContext-czH0kIZg.js} +3 -3
  149. package/dist/hooks/AmplitudeOperations/index.cjs +8 -8
  150. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  151. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  152. package/dist/hooks/AmplitudeOperations/index.js +8 -8
  153. package/dist/hooks/AppDetails/index.cjs +7 -12
  154. package/dist/hooks/AppDetails/index.d.cts +12 -11
  155. package/dist/hooks/AppDetails/index.d.ts +13 -12
  156. package/dist/hooks/AppDetails/index.js +7 -12
  157. package/dist/hooks/CdnOperations/index.cjs +1 -1
  158. package/dist/hooks/CdnOperations/index.js +1 -1
  159. package/dist/hooks/ChatToggle/index.cjs +13 -12
  160. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  161. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  162. package/dist/hooks/ChatToggle/index.js +10 -9
  163. package/dist/hooks/ChatToggleAnalytics/index.cjs +9 -9
  164. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  165. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  166. package/dist/hooks/ChatToggleAnalytics/index.js +9 -9
  167. package/dist/hooks/Debounce/index.cjs +20 -2
  168. package/dist/hooks/Debounce/index.js +18 -2
  169. package/dist/hooks/ElementObserver/index.cjs +1 -1
  170. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  171. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  172. package/dist/hooks/ElementObserver/index.js +1 -1
  173. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  174. package/dist/hooks/GrabAndScroll/index.d.ts +2 -2
  175. package/dist/hooks/GraphQLConfig/index.cjs +4 -4
  176. package/dist/hooks/GraphQLConfig/index.d.cts +13 -12
  177. package/dist/hooks/GraphQLConfig/index.d.ts +14 -13
  178. package/dist/hooks/GraphQLConfig/index.js +4 -4
  179. package/dist/hooks/IdentifyUser/index.cjs +14 -8
  180. package/dist/hooks/IdentifyUser/index.js +13 -7
  181. package/dist/hooks/ImageResolver/index.cjs +2 -2
  182. package/dist/hooks/ImageResolver/index.js +2 -2
  183. package/dist/hooks/Intersection/index.cjs +1 -1
  184. package/dist/hooks/Intersection/index.js +1 -1
  185. package/dist/hooks/MessageFilter/index.cjs +2 -2
  186. package/dist/hooks/MessageFilter/index.d.cts +12 -11
  187. package/dist/hooks/MessageFilter/index.d.ts +13 -12
  188. package/dist/hooks/MessageFilter/index.js +2 -2
  189. package/dist/hooks/NewOrgConfig/index.cjs +7 -7
  190. package/dist/hooks/NewOrgConfig/index.d.cts +14 -13
  191. package/dist/hooks/NewOrgConfig/index.d.ts +15 -14
  192. package/dist/hooks/NewOrgConfig/index.js +7 -7
  193. package/dist/hooks/Search/index.cjs +1469 -159
  194. package/dist/hooks/Search/index.d.cts +21 -17
  195. package/dist/hooks/Search/index.d.ts +22 -18
  196. package/dist/hooks/Search/index.js +1464 -154
  197. package/dist/hooks/SearchOperations/index.cjs +11 -14
  198. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  199. package/dist/hooks/SearchOperations/index.d.ts +2 -2
  200. package/dist/hooks/SearchOperations/index.js +11 -14
  201. package/dist/hooks/SessionStorageOperations/index.cjs +1 -1
  202. package/dist/hooks/SessionStorageOperations/index.js +1 -1
  203. package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
  204. package/dist/hooks/ShopifyUrlOperations/index.d.cts +5 -5
  205. package/dist/hooks/ShopifyUrlOperations/index.d.ts +5 -5
  206. package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
  207. package/dist/hooks/SystemSettingsContext/index.cjs +2 -2
  208. package/dist/hooks/SystemSettingsContext/index.d.cts +14 -13
  209. package/dist/hooks/SystemSettingsContext/index.d.ts +15 -14
  210. package/dist/hooks/SystemSettingsContext/index.js +2 -2
  211. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +8 -8
  212. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  213. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  214. package/dist/hooks/TrackComponentVisibleEvent/index.js +8 -8
  215. package/dist/hooks/UpdateAnalyticsProps/index.cjs +11 -11
  216. package/dist/hooks/UpdateAnalyticsProps/index.js +6 -6
  217. package/dist/hooks/utils.d.cts +12 -11
  218. package/dist/hooks/utils.d.ts +13 -12
  219. package/dist/{index-BeYfyZ6k.d.ts → index--9_c4tze.d.ts} +1 -1
  220. package/dist/index-BEpDGqnz.d.cts +41 -0
  221. package/dist/{index-xHVrsrbz.d.ts → index-BKvFVPUX.d.ts} +1 -1
  222. package/dist/{index-DJTrxIFJ.d.ts → index-BNHIIgYk.d.ts} +1 -1
  223. package/dist/{index-BeGt0Aw3.d.cts → index-BSd8767K.d.cts} +5 -5
  224. package/dist/index-BUDrAxnl.d.ts +673 -0
  225. package/dist/{index-DzbkQtaK.d.cts → index-CCboEuTO.d.cts} +1 -1
  226. package/dist/{index-FQjyuD3D.d.cts → index-COXkY78t.d.cts} +1 -1
  227. package/dist/{index-xhBQ1HBx.d.ts → index-CUO68KG3.d.ts} +34 -34
  228. package/dist/{index-DazMsEy_.d.ts → index-D7htGSQC.d.ts} +1 -1
  229. package/dist/index-DM_5fh8c.d.ts +101 -0
  230. package/dist/index-DU7uw0ba.d.cts +101 -0
  231. package/dist/{index-Da1s8h5C.d.cts → index-DZtnHhlr.d.cts} +1 -1
  232. package/dist/{index-h809JLbL.d.ts → index-Dtw-hJdt.d.ts} +1 -1
  233. package/dist/{index-Dfwnna1j.d.ts → index-Dxpscrvz.d.ts} +1 -1
  234. package/dist/index-Dy3TTIOm.d.cts +673 -0
  235. package/dist/index-ErVcwUnR.d.ts +41 -0
  236. package/dist/{index-Cyq5HiC0.d.cts → index-OkKEOL6H.d.cts} +1 -1
  237. package/dist/{index-9NE86em3.d.cts → index-hAqp0oYb.d.cts} +1 -1
  238. package/dist/interceptors/index.d.cts +13 -12
  239. package/dist/interceptors/index.d.ts +14 -13
  240. package/dist/interceptors/types.d.cts +12 -11
  241. package/dist/interceptors/types.d.ts +13 -12
  242. package/dist/models-CWOgrLCm.js +1284 -0
  243. package/dist/models-DqdLOi2I.cjs +1519 -0
  244. package/dist/{newOrgConfigAtom-DxILMn2I.cjs → newOrgConfigAtom-CPA6Gp6n.cjs} +1 -1
  245. package/dist/{newOrgConfigAtom-sqve6LZU.js → newOrgConfigAtom-DEUj6H-p.js} +1 -1
  246. package/dist/{newOrgConfigContext-Cl4H9c3q.cjs → newOrgConfigContext-Bet9CgKP.cjs} +3 -3
  247. package/dist/{newOrgConfigContext-DQiuf8nd.js → newOrgConfigContext-Bi_dBNe5.js} +3 -3
  248. package/dist/{newOrgConfigContext-5Bw7RwT-.d.cts → newOrgConfigContext-CJI3tsVV.d.cts} +2 -2
  249. package/dist/{newOrgConfigContext-CS8IA5Eg.d.ts → newOrgConfigContext-I2qceBB4.d.ts} +2 -2
  250. package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-B5NfnUHv.d.ts} +1 -1
  251. package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-vKB44CDB.d.cts} +1 -1
  252. package/dist/{org-DlAesvQ_.cjs → org-B_cWn2bt.cjs} +1 -1
  253. package/dist/{org-vi0njpBh.js → org-h32_LSEb.js} +1 -1
  254. package/dist/orgAnalyticsConfig-Bm23fw4s.cjs +39 -0
  255. package/dist/orgAnalyticsConfig-CpBmga08.js +14 -0
  256. package/dist/responseGenerics-D9bS-Dd6.d.ts +148 -0
  257. package/dist/{index-CCa4tZuO.d.ts → responseGenerics-DWLV09cQ.d.cts} +4 -40
  258. package/dist/{search-y-ioX5Mz.d.cts → search-6RrxBXD6.d.cts} +1 -1
  259. package/dist/{search-CXXslzAO.cjs → search-Csh2n66W.cjs} +5 -5
  260. package/dist/{search-DBSMrXWv.js → search-DkiqkogN.js} +5 -5
  261. package/dist/{search-1NQLQD9d.d.ts → search-DrJiCT7d.d.ts} +2 -2
  262. package/dist/{search-filter-types-BxaNSLs_.d.cts → search-filter-types-BItKtezf.d.cts} +1 -1
  263. package/dist/{search-filter-types-DPgeG8FS.d.ts → search-filter-types-CGFhksO3.d.ts} +1 -1
  264. package/dist/{searchContext-mvwUJncR.js → searchContext-BmgoAFMF.js} +4 -4
  265. package/dist/{searchContext-DXW6xvXv.cjs → searchContext-DksJfC1s.cjs} +6 -6
  266. package/dist/{searchServiceAdapter-DEv1tTn0.cjs → searchServiceAdapter-BGlvoZFE.cjs} +1 -1
  267. package/dist/{searchServiceAdapter-WyCU55NV.js → searchServiceAdapter-Db6jEcJs.js} +1 -1
  268. package/dist/{sessionStorageContext-1Ks_d4Z0.cjs → sessionStorageContext-B6FsNKjj.cjs} +1 -1
  269. package/dist/{sessionStorageContext-CDcl7NVl.js → sessionStorageContext-CLYCm83p.js} +1 -1
  270. package/dist/{shopifyUrlContext-CejRZfj7.js → shopifyUrlContext-C-PkSgNC.js} +1 -1
  271. package/dist/{shopifyUrlContext-lnHoAOEf.cjs → shopifyUrlContext-ZOcARiMR.cjs} +1 -1
  272. package/dist/{spiffyWidgets-B1uc84_g.d.ts → spiffyWidgets-CR6F7FRE.d.ts} +1 -1
  273. package/dist/{spiffyWidgets-BuS00VaQ.d.cts → spiffyWidgets-eNbU1gMc.d.cts} +1 -1
  274. package/dist/{systemSettingsContext-CVUxEcsU.js → systemSettingsContext-DF0jSq9m.js} +1 -1
  275. package/dist/{systemSettingsContext-B0Kyq7nA.cjs → systemSettingsContext-dmE1v6w8.cjs} +1 -1
  276. package/dist/{test-types-y6kp-tiw.d.ts → test-types-BEml_bm3.d.ts} +1 -1
  277. package/dist/{test-types-ThQiO_cc.d.cts → test-types-Dsu8RJZu.d.cts} +1 -1
  278. package/dist/types/index.cjs +1 -16
  279. package/dist/types/index.d.cts +3 -17
  280. package/dist/types/index.d.ts +3 -17
  281. package/dist/types/index.js +2 -16
  282. package/dist/{types-Db5Eux6K.d.ts → types-4LQ7LUCk.d.ts} +2 -2
  283. package/dist/types-BegmH0S1.d.ts +60 -0
  284. package/dist/types-BuvXXGxE.cjs +48 -0
  285. package/dist/types-CtUb63bt.js +1 -1
  286. package/dist/{types-zQGBI-Yo.d.cts → types-DFsSqmWx.d.cts} +2 -2
  287. package/dist/types-DWorwfS-.d.cts +60 -0
  288. package/dist/types-DXnG1tV0.js +30 -0
  289. package/dist/types-UUvB6h05.cjs +1 -1
  290. package/dist/types.d.cts +4 -23
  291. package/dist/types.d.ts +4 -23
  292. package/dist/unsupportedProductExceptions-DGENUnEA.cjs +32 -0
  293. package/dist/unsupportedProductExceptions-uQuuelOs.js +20 -0
  294. package/dist/{useAmplitudeOperations-jqa7K9dH.cjs → useAmplitudeOperations-Bo6YNbTV.cjs} +3 -3
  295. package/dist/{useAmplitudeOperations-DYs1h8a_.js → useAmplitudeOperations-zIRSqmMW.js} +2 -2
  296. package/dist/{useAppDetails-BRUqZEyt.js → useAppDetails-B584gkCs.js} +3 -3
  297. package/dist/{useAppDetails-C71k0brz.cjs → useAppDetails-DczgqeLG.cjs} +6 -6
  298. package/dist/{useGraphQLConfig-5VwS9Q_Z.js → useGraphQLConfig-7UxACM4n.js} +2 -2
  299. package/dist/{useGraphQLConfig-Cj26_J9I.cjs → useGraphQLConfig-D_rF2Sun.cjs} +2 -2
  300. package/dist/{useIntersection-Cncgxdmy.js → useIntersection-CZSEBUbv.js} +1 -1
  301. package/dist/{useIntersection-m4PEpvG7.cjs → useIntersection-DSDREfj6.cjs} +1 -1
  302. package/dist/userIdentityContext-BqbNu7xu.cjs +132 -0
  303. package/dist/userIdentityContext-BxFH9FNQ.js +115 -0
  304. package/dist/{userIdentityContext-BVODeTlN.d.ts → userIdentityContext-C6kApbuk.d.ts} +1 -1
  305. package/dist/{userIdentityContext-D2oFVFzo.d.cts → userIdentityContext-kU1PIo8K.d.cts} +1 -1
  306. package/dist/{utils-DpneNSJf.d.ts → utils-BRkGP1eb.d.ts} +1 -1
  307. package/dist/utils-C1ErYSoW.js +606 -0
  308. package/dist/{utils-BxPPugeP.d.cts → utils-CBD4g2Nc.d.cts} +4 -4
  309. package/dist/{utils-2SWrJ12w.cjs → utils-CvLmSsUj.cjs} +1 -1
  310. package/dist/{utils-CqBxIpEV.js → utils-D82gfbgU.js} +1 -1
  311. package/dist/{utils-B3x_9JTY.d.cts → utils-DCrwX6FT.d.cts} +1 -1
  312. package/dist/{utils-Covisryh.d.ts → utils-QKFAbPT6.d.ts} +4 -4
  313. package/dist/utils-mqfncrhI.cjs +715 -0
  314. package/package.json +18 -13
  315. package/src/application/commerce-api.ts +2 -0
  316. package/src/application/models/graphql/index.ts +1 -0
  317. package/src/application/utils/__tests__/divideArrays.test.ts +12 -13
  318. package/src/atoms/app/index.ts +1 -2
  319. package/src/atoms/search/productRetrievalAPI.ts +70 -0
  320. package/src/atoms/search/productRetrievalAdapter.ts +25 -0
  321. package/src/atoms/search/types.ts +13 -0
  322. package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +411 -0
  323. package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +790 -0
  324. package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +775 -0
  325. package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +495 -0
  326. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +806 -0
  327. package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +506 -0
  328. package/src/contexts/types.ts +16 -14
  329. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +663 -0
  330. package/src/contexts/userIdentityContext/userIdentityContext.tsx +6 -0
  331. package/src/hooks/Search/useRecommendedProducts.ts +48 -0
  332. package/src/hooks/Search/useSearch.tsx +89 -182
  333. package/src/hooks/Search/useSearchInput.ts +263 -0
  334. package/src/types/FilterAttribute.ts +35 -0
  335. package/src/types/index.ts +0 -1
  336. package/src/types.ts +0 -16
  337. package/dist/frontendConfig-CeWhVevA.d.ts +0 -857
  338. package/dist/frontendConfig-OWWJmuPc.d.cts +0 -857
  339. package/dist/graphql-3PxNRFOc.js +0 -36
  340. package/dist/graphql-DGYfelZp.cjs +0 -53
  341. package/dist/graphqlConfig-GHZ1UgCw.cjs +0 -73
  342. package/dist/graphqlConfig-mDg6J44N.js +0 -24
  343. package/dist/hooks/FloatingButtonVisibility/index.cjs +0 -73
  344. package/dist/hooks/FloatingButtonVisibility/index.d.cts +0 -7
  345. package/dist/hooks/FloatingButtonVisibility/index.d.ts +0 -7
  346. package/dist/hooks/FloatingButtonVisibility/index.js +0 -69
  347. package/dist/hooks/LastInteraction/index.cjs +0 -34
  348. package/dist/hooks/LastInteraction/index.d.cts +0 -17
  349. package/dist/hooks/LastInteraction/index.d.ts +0 -17
  350. package/dist/hooks/LastInteraction/index.js +0 -32
  351. package/dist/index-Bmub8e38.d.cts +0 -98
  352. package/dist/index-CiWEYzXl.d.cts +0 -184
  353. package/dist/index-D4c-port.d.ts +0 -676
  354. package/dist/index-O33GSSRr.d.cts +0 -676
  355. package/dist/index-bjMvkcBF.d.ts +0 -98
  356. package/dist/models-D-4db7XW.cjs +0 -1537
  357. package/dist/models-c86hYW-F.js +0 -1296
  358. package/dist/types-BCz-hOvv.d.ts +0 -51
  359. package/dist/types-CKMMb_gX.d.cts +0 -51
  360. package/dist/types-CS0Hrzja.js +0 -30
  361. package/dist/types-CxObxLKs.cjs +0 -48
  362. package/dist/useDebounce-DZ8Cgiwc.cjs +0 -26
  363. package/dist/useDebounce-v9cezyjn.js +0 -19
  364. package/dist/utils-CLGXsOwE.cjs +0 -1591
  365. package/dist/utils-jYtD3hmA.js +0 -1385
  366. package/src/hooks/FloatingButtonVisibility/index.ts +0 -1
  367. package/src/hooks/FloatingButtonVisibility/useFloatingButtonVisibility.ts +0 -99
  368. package/src/hooks/LastInteraction/index.ts +0 -1
  369. package/src/hooks/LastInteraction/useLastInteraction.ts +0 -42
  370. package/src/types/floatingbuttonoverrides-types.ts +0 -10
  371. /package/dist/{AmplitudeOperations-ni7wVevx.js → AmplitudeOperations-ChZWcSsc.js} +0 -0
  372. /package/dist/{AmplitudeOperations-DxQnurSG.cjs → AmplitudeOperations-JggIc1zD.cjs} +0 -0
  373. /package/dist/{globalSearch-BpGfkuXz.js → amplitudeContext-BItT9HmT.js} +0 -0
  374. /package/dist/{globalSearch-B9DRBxSM.cjs → amplitudeContext-DPtyVv3Q.cjs} +0 -0
  375. /package/dist/{index-CgAfoNpB.d.ts → index-A0HvA68Y.d.cts} +0 -0
  376. /package/dist/{index-RcVcRKH7.d.cts → index-DNVvRcKu.d.ts} +0 -0
@@ -1,676 +0,0 @@
1
- import { GetMerchantColorsQueryData } from "./index-bjMvkcBF.js";
2
- import { AcceptableFormFieldType, ApiFormResponseAttributes, ApiPageResponseAttributes, OrderResponseAttributes as OrderResponseAttributes$1, PageResponseAttributes, ProductResponseAttributes, Response as Response$1, ReviewResponseAttributes, SearchProductFilterAttributes, SearchProductResponseAttributes, SearchResponseAttributes, TextResponseAttributes } from "./index-CCa4tZuO.js";
3
- import { CamelCasedPropertiesDeep, NonRecursiveType, UnknownArray, UpperCaseCharacters, WordSeparators } from "./index-Dfwnna1j.js";
4
- import { ColorMapping, FrontendConfig, OrgConfig$1 as OrgConfig, OrganizationConfig as OrganizationConfig$1, PageVariantConfig, WidgetConfig, WidgetMountingConfig } from "./frontendConfig-CeWhVevA.js";
5
- import { VariantInfo } from "./index-DazMsEy_.js";
6
- import { Context, CustServiceAttachment, FormSubmittedAttributes, FormType, FulfillmentDisplayStatus, GenerationParams, OrderItemInfo, OrderResponseAttributes, OrganizationConfig, OrganizationSettings, PDPAttributes, PLPAttributes, PLPIdAttributes, PageVisitCategory, ProductSearchFilterResponseAttributes, QueryTypedAttributes, SearchAttributes, StatsigExperiment, StatsigFeatureGate, Suggestion, SuggestionClickedAttributes, UserEvent, UserEventCategory } from "@spiffy-ai/commerce-api-client";
7
-
8
- //#region src/application/models/cachedValue.d.ts
9
- interface CachedValue {
10
- value: unknown;
11
- expiry: number;
12
- }
13
- //#endregion
14
- //#region src/application/models/clientDetails.d.ts
15
- interface ClientDetails {
16
- os?: string;
17
- osVersion?: string;
18
- deviceBrand?: string;
19
- deviceManufacturer?: string;
20
- deviceModel?: string;
21
- carrier?: string;
22
- country?: string;
23
- region?: string;
24
- browser?: string;
25
- browserVersion?: string;
26
- browserIpAddress?: string;
27
- userAgent?: string;
28
- }
29
- //#endregion
30
- //#region src/application/models/conversationalSearchIds.d.ts
31
- type ConversationalSearchIds = {
32
- conversationalSearchEntrypointId?: string;
33
- conversationalSearchInputId?: string;
34
- conversationalSearchModalId?: string;
35
- };
36
- //#endregion
37
- //#region src/application/models/dataLayer.d.ts
38
- /**
39
- * Base interface for common properties across all ecommerce events
40
- */
41
- interface BaseEcommerceEvent {
42
- event: string;
43
- ecommerce: UAEcommerceData | GA4EcommerceData;
44
- }
45
- /**
46
- * Legacy universal analytics data. The actual payload contains more fields, but we
47
- * only need the ones listed below.
48
- */
49
- interface UAEcommerceData {
50
- add: {
51
- products: {
52
- name: string;
53
- category: string;
54
- price: string;
55
- quantity: string;
56
- }[];
57
- currencyCode: string;
58
- };
59
- }
60
- /**
61
- * Google Analytics 4 data. The actual payload contains more fields, but we
62
- * only need the ones listed below.
63
- */
64
- interface GA4EcommerceData {
65
- currency: string;
66
- items: {
67
- item_name: string;
68
- item_category: string;
69
- price: number;
70
- quantity: number;
71
- }[];
72
- }
73
- interface UAEcommerceEvent extends BaseEcommerceEvent {
74
- ecommerce: UAEcommerceData;
75
- }
76
- interface GA4EcommerceEvent extends BaseEcommerceEvent {
77
- ecommerce: GA4EcommerceData;
78
- }
79
- //#endregion
80
- //#region src/application/models/events.d.ts
81
- declare enum SpiffyEventName {
82
- WidgetOpen = "spiffy:widgetopen",
83
- WidgetClose = "spiffy:widgetclose",
84
- }
85
- //#endregion
86
- //#region src/application/models/googleAnalyticsEvents.d.ts
87
- declare enum GoogleAnalyticsEvents {
88
- ADD_TO_CART_v1 = "add_to_cart",
89
- ADD_TO_CART_v2 = "addToCart",
90
- }
91
- //#endregion
92
- //#region src/application/models/message.d.ts
93
- declare enum MessageRole {
94
- User = "user",
95
- Assistant = "assistant",
96
- }
97
- declare enum MessageType {
98
- Text = "text",
99
- SuggestionClicked = "suggestion_clicked",
100
- Product = "product",
101
- ProductSearch = "product_search",
102
- Review = "review",
103
- QueryTyped = "query_typed",
104
- Separator = "separator",
105
- Page = "page",
106
- Search = "search",
107
- Attachment = "attachment",
108
- CXAgentResponse = "cx_agent_response",
109
- Form = "form",
110
- Order = "order",
111
- ProductSearchFilter = "product_search_filter",
112
- }
113
- type Message = {
114
- id: string;
115
- role: MessageRole;
116
- createdAt: string;
117
- } & (TextMessageMetadata | QueryTypedMetadata | SuggestionMessageMetadata | ProductMessageMetadata | ProductSearchMessageMetadata | ReviewMessageMetadata | SeparatorMessageMetadata | PageMessageMetadata | SearchMessageMetadata | AttachmentMetadata | CXAgentResponseMetadata | FormMessageMetadata | OrderMessageMetadata | ProductSearchFilterMetadata);
118
- type AttachmentMetadata = {
119
- type: MessageType.Attachment;
120
- metadata: {
121
- message?: string;
122
- attachment: CustServiceAttachment[];
123
- };
124
- };
125
- type CXAgentResponseMetadata = {
126
- type: MessageType.CXAgentResponse;
127
- metadata: {
128
- message: string;
129
- agentName: string;
130
- };
131
- };
132
- type TextMessageMetadata = {
133
- type: MessageType.Text;
134
- metadata: TextResponseAttributes['attributes'];
135
- };
136
- type QueryTypedMetadata = {
137
- type: MessageType.QueryTyped;
138
- metadata: TextResponseAttributes['attributes'];
139
- };
140
- type SuggestionMessageMetadata = {
141
- type: MessageType.SuggestionClicked;
142
- metadata: {
143
- suggestionId: string;
144
- suggestionContent: string;
145
- };
146
- };
147
- type ProductMessageMetadata = {
148
- type: MessageType.Product;
149
- metadata: ProductResponseAttributes['attributes'];
150
- };
151
- type ProductSearchMessageMetadata = {
152
- type: MessageType.ProductSearch;
153
- metadata: SearchProductResponseAttributes['attributes'];
154
- };
155
- type ReviewMessageMetadata = {
156
- type: MessageType.Review;
157
- metadata: ReviewResponseAttributes['attributes'];
158
- };
159
- type SeparatorMessageMetadata = {
160
- type: MessageType.Separator;
161
- };
162
- type PageMessageMetadata = {
163
- type: MessageType.Page;
164
- metadata: PageResponseAttributes['attributes'];
165
- };
166
- type SearchMessageMetadata = {
167
- type: MessageType.Search;
168
- metadata: SearchResponseAttributes['attributes'];
169
- };
170
- type ProductSearchFilterMetadata = {
171
- type: MessageType.ProductSearchFilter;
172
- metadata: SearchProductFilterAttributes['attributes'];
173
- };
174
- type FormField = {
175
- key: string;
176
- title: string;
177
- type: AcceptableFormFieldType;
178
- required: boolean;
179
- format?: 'email';
180
- value?: string;
181
- };
182
- type FormMessageMetadata = {
183
- type: MessageType.Form;
184
- metadata: {
185
- formType?: FormType;
186
- fields: FormField[];
187
- };
188
- };
189
- type OrderMessageMetadata = {
190
- type: MessageType.Order;
191
- metadata: OrderResponseAttributes$1['attributes'];
192
- };
193
- //#endregion
194
- //#region src/application/models/mobilePLPChatPlacementParameter.d.ts
195
- interface MobilePLPChatPlacementParameter {
196
- rowIndex: number;
197
- }
198
- //#endregion
199
- //#region src/application/models/orgsEnum.d.ts
200
- declare const OrgShortName: {
201
- readonly Coterie: "coterie";
202
- readonly ForLoveAndLemons: "for-love-and-lemons";
203
- readonly Greenpan: "greenpan";
204
- readonly JordanCraig: "jordan-craig";
205
- readonly LarryAndSerges: "larry_and_serges";
206
- readonly LeapsAndRebounds: "leaps-and-rebounds";
207
- readonly MantraBrand: "mantra-brand";
208
- readonly Spanx: "spanx";
209
- readonly SpanxStaging: "staging-spanx";
210
- readonly Supergoop: "supergoop";
211
- readonly UniqueVintage: "unique-vintage";
212
- readonly JackArcher: "jack-archer";
213
- readonly SkinPerfection: "skin-perfection";
214
- readonly LookOptic: "look-optic";
215
- readonly FiveCbd: "five-cbd";
216
- readonly SnapSupplements: "snap-supplements";
217
- readonly Longevityrx: "longevityrx";
218
- readonly VenaCbd: "vena-cbd";
219
- readonly Medterra: "medterra";
220
- readonly Modells: "modells";
221
- readonly PressedFloral: "pressed-floral";
222
- readonly KindredBravely: "kindred-bravely";
223
- readonly WineEnthusiast: "wine-enthusiast";
224
- readonly HomegrownCannabis: "homegrown-cannabis";
225
- readonly DreamlandBaby: "dreamland-baby";
226
- readonly Bandolier: "bandolier";
227
- readonly WestonJonBoucher: "weston-jon-boucher";
228
- readonly KutFromTheKloth: "kut-from-the-kloth";
229
- readonly GrooveLife: "groove-life";
230
- readonly Carpe: "carpe";
231
- readonly WolfTactical: "wolf-tactical";
232
- readonly WolfMattress: "wolfmattress";
233
- readonly Default: "default";
234
- };
235
- //#endregion
236
- //#region src/application/models/productExperiment.d.ts
237
- declare enum ProductExperiment {
238
- Default = "default",
239
- }
240
- //#endregion
241
- //#region src/application/models/spanxTakeAQuizCtaParameter.d.ts
242
- interface SpanxTakeAQuizCtaParameter {
243
- text?: string;
244
- value?: string;
245
- }
246
- //#endregion
247
- //#region src/application/models/api/context.d.ts
248
- interface Context$1 extends CamelCasedPropertiesDeep<Context> {}
249
- //#endregion
250
- //#region src/application/models/api/generationParams.d.ts
251
- interface GenerationParams$1 extends CamelCasedPropertiesDeep<GenerationParams> {}
252
- //#endregion
253
- //#region src/application/models/api/userEvent.d.ts
254
- interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {}
255
- interface PLPAttributes$1 extends CamelCasedPropertiesDeep<PLPAttributes> {}
256
- interface SearchAttributes$1 extends CamelCasedPropertiesDeep<SearchAttributes> {}
257
- interface QueryTypedAttributes$1 extends CamelCasedPropertiesDeep<QueryTypedAttributes> {}
258
- interface FormSubmittedAttributes$1 {
259
- filledSchema: Record<string, unknown>;
260
- formResponseId: string;
261
- formType: FormType;
262
- }
263
- interface PageVisitAttributes {
264
- url: string;
265
- pageVisitCategory: PageVisitCategory;
266
- }
267
- interface SuggestionClickedAttributes$1 extends CamelCasedPropertiesDeep<SuggestionClickedAttributes> {}
268
- type UserEventAttributes = PDPAttributes$1 | PLPAttributes$1 | QueryTypedAttributes$1 | SearchAttributes$1 | SuggestionClickedAttributes$1 | PageVisitAttributes;
269
- interface PDPUserEvent {
270
- category: UserEventCategory.PdpVisit | UserEventCategory.AddToCart;
271
- attributes: PDPAttributes$1;
272
- }
273
- interface PLPUserEvent {
274
- category: UserEventCategory.PlpVisit;
275
- attributes: PLPAttributes$1;
276
- }
277
- interface QueryTypedUserEvent {
278
- category: UserEventCategory.QueryTyped;
279
- attributes: QueryTypedAttributes$1;
280
- }
281
- interface SearchUserEvent {
282
- category: UserEventCategory.Search;
283
- attributes: SearchAttributes$1;
284
- }
285
- interface SuggestionsClickedUserEvent {
286
- category: UserEventCategory.SuggestionClicked;
287
- attributes: SuggestionClickedAttributes$1;
288
- }
289
- interface AppLoadedUserEvent {
290
- category: UserEventCategory.AppLoaded;
291
- }
292
- interface AppUnloadedEvent {
293
- category: UserEventCategory.AppUnloaded;
294
- }
295
- interface PageVisitEvent {
296
- category: UserEventCategory.PageVisit;
297
- attributes: PageVisitAttributes;
298
- }
299
- interface FormSubmitted {
300
- category: UserEventCategory.FormSubmitted;
301
- attributes: FormSubmittedAttributes$1;
302
- }
303
- type UserEvent$1 = CamelCasedPropertiesDeep<Pick<UserEvent, 'event_id' | 'category' | 'created_at'>> & (SuggestionsClickedUserEvent | AppLoadedUserEvent | PDPUserEvent | QueryTypedUserEvent | SearchUserEvent | AppUnloadedEvent | PLPUserEvent | PageVisitEvent | FormSubmitted);
304
- //#endregion
305
- //#region src/application/models/api/nextMessageRequest.d.ts
306
- interface NextMessageRequest$1 {
307
- id: string;
308
- context: Context$1;
309
- userEvents?: UserEvent$1[];
310
- featureFlags?: Record<string, boolean>;
311
- generationParams?: GenerationParams$1;
312
- }
313
- //#endregion
314
- //#region src/application/models/api/suggestion.d.ts
315
- interface Suggestion$1 extends CamelCasedPropertiesDeep<Suggestion> {}
316
- //#endregion
317
- //#region src/application/models/api/supportedEventRequest.d.ts
318
- interface SupportedEventRequest$1 {
319
- id: string;
320
- context: Context$1;
321
- userEvent: UserEvent$1;
322
- }
323
- //#endregion
324
- //#region src/application/models/graphql/queries/getMerchantOrgIdQuery.d.ts
325
- declare const getMerchantOrgIdQuery = "\n query {\n me {\n org {\n id\n }\n }\n }\n";
326
- //#endregion
327
- //#region src/application/models/guards/isBaseEcommerceEvent.d.ts
328
- /**
329
- * Checks if an event is a base Google Analytics ecommerce event.
330
- *
331
- * @param data The event to check.
332
- *
333
- * @returns True if the event is a base ecommerce event, false otherwise.
334
- */
335
- declare const isBaseEcommerceEvent: (data: unknown) => data is BaseEcommerceEvent;
336
- //#endregion
337
- //#region src/application/models/guards/isGA4EcommerceEvent.d.ts
338
- /**
339
- * Checks if an event is a Google Analytics 4 ecommerce event.
340
- *
341
- * @param data The event to check.
342
- *
343
- * @returns True if the event is a GA4 ecommerce event, false otherwise.
344
- */
345
- declare const isGA4EcommerceEvent: (data: unknown) => data is GA4EcommerceEvent;
346
- //#endregion
347
- //#region src/application/models/guards/isLegacyUAEcommerceEvent.d.ts
348
- /**
349
- * Checks if an event is a legacy Universal Analytics ecommerce event.
350
- *
351
- * @param data The event to check.
352
- *
353
- * @returns True if the event is a legacy UA ecommerce event, false otherwise.
354
- */
355
- declare const isLegacyUAEcommerceEvent: (data: unknown) => data is UAEcommerceEvent;
356
- //#endregion
357
- //#region src/application/models/guards/isMobilePLPChatPlacementParameter.d.ts
358
- interface MobilePlpChatPlacementParameter {
359
- row_index: number;
360
- }
361
- declare const isMobilePLPChatPlacementParameter: (value: unknown) => value is MobilePlpChatPlacementParameter;
362
- //#endregion
363
- //#region src/application/models/guards/isSpanxTakeAQuizCtaParameter.d.ts
364
- declare const isSpanxTakeAQuizCtaParameter: (value: unknown) => value is SpanxTakeAQuizCtaParameter;
365
- //#endregion
366
- //#region src/application/models/guards/isVariantInfo.d.ts
367
- /**
368
- * Type guard to check if an object is a valid VariantInfo.
369
- *
370
- * @param variantInfo - The unknown object to check.
371
- *
372
- * @returns True if the data is a valid VariantInfo object, false otherwise.
373
- */
374
- declare const isVariantInfo: (variantInfo: unknown) => variantInfo is VariantInfo;
375
- //#endregion
376
- //#region src/application/models/guards/api/isApiFormResponse.d.ts
377
- /**
378
- * Type guard to check if the provided data has the all of the properties (with the correct types) of
379
- * a FormResponseAttribute
380
- *
381
- * @param data - The data to check
382
- *
383
- * @returns true if the data has the correct properties, false otherwise
384
- */
385
- declare const isApiFormResponseAttributes: (data: unknown) => data is ApiFormResponseAttributes;
386
- //#endregion
387
- //#region src/application/models/guards/api/isApiFormSubmittedResponseAttributes.d.ts
388
- declare const isApiFormSubmittedResponseAttributes: (data: unknown) => data is FormSubmittedAttributes;
389
- //#endregion
390
- //#region src/application/models/guards/api/isApiOrderResponseAttributes.d.ts
391
- interface ApiOrderItemInfo extends Omit<OrderItemInfo, 'delivered_at' | 'estimated_delivery_at' | 'in_transit_at'> {
392
- delivered_at?: string;
393
- estimated_delivery_at?: string;
394
- in_transit_at?: string;
395
- }
396
- interface ApiOrderResponseAttributes extends Omit<OrderResponseAttributes, 'created_at' | 'latest_event_date' | 'line_items'> {
397
- created_at: string;
398
- latest_event_date: string;
399
- line_items: ApiOrderItemInfo[];
400
- }
401
- declare const isApiOrderResponseAttributes: (data: unknown) => data is ApiOrderResponseAttributes;
402
- //#endregion
403
- //#region src/application/models/guards/api/isApiOrganizationConfig.d.ts
404
- interface ApiOrgAnalyticsConfigAmplitude {
405
- session_replay_enabled: boolean;
406
- session_replay_sample_rate: number;
407
- tracking_enabled: boolean;
408
- }
409
- interface ApiOrgAnalyticsConfigCustomerService {
410
- provider: string;
411
- }
412
- interface ApiOrgAnalyticsConfigGoogleAnalytics {
413
- measurement_id: string;
414
- }
415
- interface ApiOrgAnalyticsConfig {
416
- amplitude?: ApiOrgAnalyticsConfigAmplitude;
417
- customer_service?: ApiOrgAnalyticsConfigCustomerService;
418
- google_analytics?: ApiOrgAnalyticsConfigGoogleAnalytics;
419
- }
420
- interface ApiOrganizationConfig extends OrganizationConfig {
421
- config: ApiOrgAnalyticsConfig;
422
- }
423
- /**
424
- *
425
- * @param data
426
- * @returns
427
- */
428
- declare const isApiOrganizationConfig: (data: unknown) => data is ApiOrganizationConfig;
429
- //#endregion
430
- //#region src/application/models/guards/api/isApiOrgConfigResults.d.ts
431
- interface ApiOrgConfigResults {
432
- configs: ApiOrganizationConfig[];
433
- experiments: StatsigExperiment[];
434
- gates: StatsigFeatureGate[];
435
- org: OrganizationSettings;
436
- }
437
- /**
438
- *
439
- * @param data
440
- * @returns
441
- */
442
- declare const isApiOrgConfigResults: (data: unknown) => data is Required<ApiOrgConfigResults>;
443
- //#endregion
444
- //#region src/application/models/guards/api/isApiPageResponseAttributes.d.ts
445
- declare const isApiPageResponseAttributes: (obj: unknown) => obj is ApiPageResponseAttributes;
446
- //#endregion
447
- //#region src/application/models/guards/api/isApiPLPEventAttributes.d.ts
448
- declare const isApiPLPIdAttribute: (data: unknown) => data is PLPIdAttributes;
449
- declare const isApiPLPEventAttributes: (data: unknown) => data is PLPAttributes;
450
- //#endregion
451
- //#region src/application/models/guards/api/isApiProductSearchFilterAttributes.d.ts
452
- declare const isApiProductSearchFilterResponseAttributes: (attributes: unknown) => attributes is ProductSearchFilterResponseAttributes;
453
- //#endregion
454
- //#region src/application/models/guards/graphQL/isGraphQLColorsConfig.d.ts
455
- declare const isGraphQLColorsConfig: (data: unknown) => data is GetMerchantColorsQueryData;
456
- //#endregion
457
- //#region src/application/models/utilityTypes/delimiterCase.d.ts
458
- type UpperCaseToLowerCase<T extends string> = T extends Uppercase<T> ? Lowercase<T> : T;
459
- type SplitIncludingDelimiters_<Source extends string, Delimiter extends string> = Source extends '' ? [] : Source extends `${infer FirstPart}${Delimiter}${infer SecondPart}` ? Source extends `${FirstPart}${infer UsedDelimiter}${SecondPart}` ? UsedDelimiter extends Delimiter ? Source extends `${infer FirstPart}${UsedDelimiter}${infer SecondPart}` ? [...SplitIncludingDelimiters<FirstPart, Delimiter>, UsedDelimiter, ...SplitIncludingDelimiters<SecondPart, Delimiter>] : never : never : never : [Source];
460
- /**
461
- * Unlike a simpler split, this one includes the delimiter splitted on in the resulting array literal. This is to enable splitting on, for example, upper-case characters.
462
- *
463
- * @category Template literal
464
- */
465
- type SplitIncludingDelimiters<Source extends string, Delimiter extends string> = SplitIncludingDelimiters_<UpperCaseToLowerCase<Source>, Delimiter>;
466
- /**
467
- *Format a specific part of the splitted string literal that `StringArrayToDelimiterCase<>` fuses together, ensuring desired casing.
468
- *
469
- *@see StringArrayToDelimiterCase
470
- */
471
- type StringPartToDelimiterCase<StringPart extends string, Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> = StringPart extends UsedWordSeparators ? Delimiter : Start extends true ? Lowercase<StringPart> : StringPart extends UsedUpperCaseCharacters ? `${Delimiter}${Lowercase<StringPart>}` : StringPart;
472
- /**
473
- * Takes the result of a splitted string literal and recursively concatenates it together into the desired casing.
474
- *
475
- * It receives `UsedWordSeparators` and `UsedUpperCaseCharacters` as input to ensure it's fully encapsulated.
476
- *
477
- * @see SplitIncludingDelimiters
478
- */
479
- type StringArrayToDelimiterCase<Parts extends readonly any[], Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> = Parts extends [`${infer FirstPart}`, ...infer RemainingParts] ? `${StringPartToDelimiterCase<FirstPart, Start, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}${StringArrayToDelimiterCase<RemainingParts, false, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}` : Parts extends [string] ? string : '';
480
- /**
481
- * Convert a string literal to a custom string delimiter casing.
482
- *
483
- * This can be useful when, for example, converting a camel-cased object property to an oddly cased one.
484
- *
485
- * @see KebabCase
486
- * @see SnakeCase
487
- *
488
- * @example
489
- * ```
490
- * import type {DelimiterCase} from 'type-fest';
491
- *
492
- * // Simple
493
- *
494
- * const someVariable: DelimiterCase<'fooBar', '#'> = 'foo#bar';
495
- *
496
- * // Advanced
497
- *
498
- * type OddlyCasedProperties<T> = {
499
- * [K in keyof T as DelimiterCase<K, '#'>]: T[K]
500
- * };
501
- *
502
- * interface SomeOptions {
503
- * dryRun: boolean;
504
- * includeFile: string;
505
- * foo: number;
506
- * }
507
- *
508
- * const rawCliOptions: OddlyCasedProperties<SomeOptions> = {
509
- * 'dry#run': true,
510
- * 'include#file': 'bar.js',
511
- * foo: 123
512
- * };
513
- * ```
514
- *
515
- * @category Change case
516
- * @category Template literal
517
- */
518
- type DelimiterCase<Value, Delimiter extends string> = string extends Value ? Value : Value extends string ? StringArrayToDelimiterCase<SplitIncludingDelimiters<Value, WordSeparators | UpperCaseCharacters>, true, WordSeparators, UpperCaseCharacters, Delimiter> : Value;
519
- //#endregion
520
- //#region src/application/models/utilityTypes/delimiterCasedPropertiesDeep.d.ts
521
- /**
522
- * Convert object properties to delimiter case recursively.
523
- *
524
- * This can be useful when, for example, converting some API types from a different style.
525
- *
526
- * @see DelimiterCase
527
- * @see DelimiterCasedProperties
528
- *
529
- * @example
530
- * ```
531
- * import type {DelimiterCasedPropertiesDeep} from 'type-fest';
532
- *
533
- * interface User {
534
- * userId: number;
535
- * userName: string;
536
- * }
537
- *
538
- * interface UserWithFriends {
539
- * userInfo: User;
540
- * userFriends: User[];
541
- * }
542
- *
543
- * const result: DelimiterCasedPropertiesDeep<UserWithFriends, '-'> = {
544
- * 'user-info': {
545
- * 'user-id': 1,
546
- * 'user-name': 'Tom',
547
- * },
548
- * 'user-friends': [
549
- * {
550
- * 'user-id': 2,
551
- * 'user-name': 'Jerry',
552
- * },
553
- * {
554
- * 'user-id': 3,
555
- * 'user-name': 'Spike',
556
- * },
557
- * ],
558
- * };
559
- * ```
560
- *
561
- * @category Change case
562
- * @category Template literal
563
- * @category Object
564
- */
565
- type DelimiterCasedPropertiesDeep<Value, Delimiter extends string> = Value extends NonRecursiveType ? Value : Value extends UnknownArray ? DelimiterCasedPropertiesArrayDeep<Value, Delimiter> : Value extends Set<infer U> ? Set<DelimiterCasedPropertiesDeep<U, Delimiter>> : { [K in keyof Value as DelimiterCase<K, Delimiter>]: DelimiterCasedPropertiesDeep<Value[K], Delimiter> };
566
- type DelimiterCasedPropertiesArrayDeep<Value extends UnknownArray, Delimiter extends string> = Value extends [] ? [] : Value extends [infer U, ...infer V] ? [DelimiterCasedPropertiesDeep<U, Delimiter>, ...DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [infer U, ...infer V] ? readonly [DelimiterCasedPropertiesDeep<U, Delimiter>, ...DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [...infer U, infer V] ? [...DelimiterCasedPropertiesDeep<U, Delimiter>, DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [...infer U, infer V] ? readonly [...DelimiterCasedPropertiesDeep<U, Delimiter>, DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends Array<infer U> ? Array<DelimiterCasedPropertiesDeep<U, Delimiter>> : Value extends ReadonlyArray<infer U> ? ReadonlyArray<DelimiterCasedPropertiesDeep<U, Delimiter>> : never;
567
- //#endregion
568
- //#region src/application/models/utilityTypes/snakeCasedPropertiesDeep.d.ts
569
- /**
570
- * Convert object properties to snake case recursively.
571
- *
572
- * This can be useful when, for example, converting some API types from a different style.
573
- *
574
- * @see SnakeCase
575
- * @see SnakeCasedProperties
576
- *
577
- * @example
578
- * ```
579
- * import type {SnakeCasedPropertiesDeep} from 'type-fest';
580
- *
581
- * interface User {
582
- * userId: number;
583
- * userName: string;
584
- * }
585
- *
586
- * interface UserWithFriends {
587
- * userInfo: User;
588
- * userFriends: User[];
589
- * }
590
- *
591
- * const result: SnakeCasedPropertiesDeep<UserWithFriends> = {
592
- * user_info: {
593
- * user_id: 1,
594
- * user_name: 'Tom',
595
- * },
596
- * user_friends: [
597
- * {
598
- * user_id: 2,
599
- * user_name: 'Jerry',
600
- * },
601
- * {
602
- * user_id: 3,
603
- * user_name: 'Spike',
604
- * },
605
- * ],
606
- * };
607
- * ```
608
- *
609
- * @category Change case
610
- * @category Template literal
611
- * @category Object
612
- */
613
- type SnakeCasedPropertiesDeep<Value> = DelimiterCasedPropertiesDeep<Value, '_'>;
614
- //#endregion
615
- //#region src/application/models/utils/snakeToCamelTransformer.d.ts
616
- /**
617
- * Generic utility to transform snake_case object keys to camelCase at runtime.
618
- * This is the runtime equivalent of the CamelCasedPropertiesDeep type utility.
619
- */
620
- /**
621
- * Recursively transforms all object keys from snake_case to camelCase
622
- */
623
- declare const transformSnakeToCamel: (obj: unknown) => unknown;
624
- /**
625
- * Recursively transforms all object keys from camelCase to snake_case
626
- */
627
- declare const transformCamelToSnake: (obj: unknown) => unknown;
628
- //#endregion
629
- //#region src/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.d.ts
630
- /**
631
- * Converts a string to a FulfillmentDisplayStatus enum value.
632
- *
633
- * @param status - The string to convert.
634
- *
635
- * @returns The FulfillmentDisplayStatus enum value or undefined if the string
636
- * does not map to a valid enum
637
- */
638
- declare const stringToFulfillmentDisplayStatusEnumValue: (status: string) => FulfillmentDisplayStatus | undefined;
639
- //#endregion
640
- //#region src/application/models/validators/validateGraphQLColorsConfig.d.ts
641
- declare const validateGraphQLColorsConfig: (data: unknown) => ColorMapping | undefined;
642
- //#endregion
643
- //#region src/application/models/validators/validateGraphQLFrontendConfig.d.ts
644
- declare const validateAndTransformPageVariants: (config: Record<string, unknown>) => PageVariantConfig;
645
- declare const validateAndTransformMountingConfig: (config: Record<string, unknown>, configKey: string) => WidgetMountingConfig;
646
- declare const validateAndTransformWidgetConfig: (config: Record<string, unknown>, configKey: string) => WidgetConfig;
647
- declare const validateGraphQLFrontendConfig: (data: unknown) => FrontendConfig | undefined;
648
- //#endregion
649
- //#region src/application/models/validators/validateGraphQLOrgId.d.ts
650
- declare const validateGraphQLOrgId: (data: unknown) => string | undefined;
651
- //#endregion
652
- //#region src/application/models/validators/validateMobilePLPChatPlacementParameter.d.ts
653
- declare const validateMobilePLPChatPlacementParameter: (value: unknown) => MobilePLPChatPlacementParameter | undefined;
654
- //#endregion
655
- //#region src/application/models/validators/validateOrganizationConfig.d.ts
656
- declare const validateOrganizationConfig: (data: unknown) => OrganizationConfig$1 | undefined;
657
- //#endregion
658
- //#region src/application/models/validators/validateOrgConfigResults.d.ts
659
- /**
660
- *
661
- * @param data
662
- * @returns
663
- */
664
- declare const validateOrgConfigResults: (data: unknown) => OrgConfig | undefined;
665
- //#endregion
666
- //#region src/application/models/validators/validateResponse.d.ts
667
- declare const validateResponse: (data: unknown) => Response$1 | undefined;
668
- //#endregion
669
- //#region src/application/models/validators/validateSuggestion.d.ts
670
- declare const validateSuggestion: (data: unknown) => Suggestion$1 | undefined;
671
- //#endregion
672
- //#region src/application/models/validators/validateUserEvent.d.ts
673
- declare const validateUserEvent: (data: unknown) => UserEvent$1 | undefined;
674
- //#endregion
675
- export { ApiOrderItemInfo, ApiOrderResponseAttributes, ApiOrganizationConfig, AppLoadedUserEvent, AppUnloadedEvent, BaseEcommerceEvent, type CachedValue, type ClientDetails, Context$1 as Context, ConversationalSearchIds, DelimiterCase, DelimiterCasedPropertiesDeep, FormField, FormSubmitted, FormSubmittedAttributes$1 as FormSubmittedAttributes, GA4EcommerceEvent, GenerationParams$1 as GenerationParams, GoogleAnalyticsEvents, Message, MessageRole, MessageType, MobilePLPChatPlacementParameter, NextMessageRequest$1 as NextMessageRequest, OrgShortName, PDPAttributes$1 as PDPAttributes, PDPUserEvent, PLPAttributes$1 as PLPAttributes, PLPUserEvent, PageVisitAttributes, PageVisitEvent, ProductExperiment, ProductMessageMetadata, ProductSearchMessageMetadata, QueryTypedAttributes$1 as QueryTypedAttributes, QueryTypedUserEvent, SearchAttributes$1 as SearchAttributes, SearchUserEvent, SnakeCasedPropertiesDeep, SpanxTakeAQuizCtaParameter, SpiffyEventName, SplitIncludingDelimiters, Suggestion$1 as Suggestion, SuggestionClickedAttributes$1 as SuggestionClickedAttributes, SuggestionsClickedUserEvent, SupportedEventRequest$1 as SupportedEventRequest, UAEcommerceEvent, UserEvent$1 as UserEvent, UserEventAttributes, getMerchantOrgIdQuery, isApiFormResponseAttributes, isApiFormSubmittedResponseAttributes, isApiOrderResponseAttributes, isApiOrgConfigResults, isApiOrganizationConfig, isApiPLPEventAttributes, isApiPLPIdAttribute, isApiPageResponseAttributes, isApiProductSearchFilterResponseAttributes, isBaseEcommerceEvent, isGA4EcommerceEvent, isGraphQLColorsConfig, isLegacyUAEcommerceEvent, isMobilePLPChatPlacementParameter, isSpanxTakeAQuizCtaParameter, isVariantInfo, stringToFulfillmentDisplayStatusEnumValue, transformCamelToSnake, transformSnakeToCamel, validateAndTransformMountingConfig, validateAndTransformPageVariants, validateAndTransformWidgetConfig, validateGraphQLColorsConfig, validateGraphQLFrontendConfig, validateGraphQLOrgId, validateMobilePLPChatPlacementParameter, validateOrgConfigResults, validateOrganizationConfig, validateResponse, validateSuggestion, validateUserEvent };
676
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtRDRjLXBvcnQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NhY2hlZFZhbHVlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NsaWVudERldGFpbHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29udmVyc2F0aW9uYWxTZWFyY2hJZHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZGF0YUxheWVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2V2ZW50cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9nb29nbGVBbmFseXRpY3NFdmVudHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9tb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL29yZ3NFbnVtLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3Byb2R1Y3RFeHBlcmltZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9jb250ZXh0LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9nZW5lcmF0aW9uUGFyYW1zLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS91c2VyRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL25leHRNZXNzYWdlUmVxdWVzdC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc3VnZ2VzdGlvbi5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc3VwcG9ydGVkRXZlbnRSZXF1ZXN0LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRNZXJjaGFudE9yZ0lkUXVlcnkuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzQmFzZUVjb21tZXJjZUV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc0dBNEVjb21tZXJjZUV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc0xlZ2FjeVVBRWNvbW1lcmNlRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNWYXJpYW50SW5mby5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpRm9ybVJlc3BvbnNlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlGb3JtU3VibWl0dGVkUmVzcG9uc2VBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpT3JnYW5pemF0aW9uQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlPcmdDb25maWdSZXN1bHRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQTFBFdmVudEF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVByb2R1Y3RTZWFyY2hGaWx0ZXJBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9ncmFwaFFML2lzR3JhcGhRTENvbG9yc0NvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvZGVsaW1pdGVyQ2FzZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvZGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvc25ha2VDYXNlZFByb3BlcnRpZXNEZWVwLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3NuYWtlVG9DYW1lbFRyYW5zZm9ybWVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3N0cmluZ1RvRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzRW51bVZhbHVlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMQ29sb3JzQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMRnJvbnRlbmRDb25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZUdyYXBoUUxPcmdJZC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlT3JnYW5pemF0aW9uQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVSZXNwb25zZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlU3VnZ2VzdGlvbi5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlVXNlckV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIENhY2hlZFZhbHVlIHtcbiAgICB2YWx1ZTogdW5rbm93bjtcbiAgICBleHBpcnk6IG51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIHsgQ2FjaGVkVmFsdWUgfTtcbiIsImludGVyZmFjZSBDbGllbnREZXRhaWxzIHtcbiAgICBvcz86IHN0cmluZztcbiAgICBvc1ZlcnNpb24/OiBzdHJpbmc7XG4gICAgZGV2aWNlQnJhbmQ/OiBzdHJpbmc7XG4gICAgZGV2aWNlTWFudWZhY3R1cmVyPzogc3RyaW5nO1xuICAgIGRldmljZU1vZGVsPzogc3RyaW5nO1xuICAgIGNhcnJpZXI/OiBzdHJpbmc7XG4gICAgY291bnRyeT86IHN0cmluZztcbiAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgYnJvd3Nlcj86IHN0cmluZztcbiAgICBicm93c2VyVmVyc2lvbj86IHN0cmluZztcbiAgICBicm93c2VySXBBZGRyZXNzPzogc3RyaW5nO1xuICAgIHVzZXJBZ2VudD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIHsgQ2xpZW50RGV0YWlscywgfTtcbiIsImV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbmFsU2VhcmNoSWRzID0ge1xuICAgIGNvbnZlcnNhdGlvbmFsU2VhcmNoRW50cnlwb2ludElkPzogc3RyaW5nO1xuICAgIGNvbnZlcnNhdGlvbmFsU2VhcmNoSW5wdXRJZD86IHN0cmluZztcbiAgICBjb252ZXJzYXRpb25hbFNlYXJjaE1vZGFsSWQ/OiBzdHJpbmc7XG59O1xuIiwiLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgY29tbW9uIHByb3BlcnRpZXMgYWNyb3NzIGFsbCBlY29tbWVyY2UgZXZlbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVjb21tZXJjZUV2ZW50IHtcbiAgICBldmVudDogc3RyaW5nO1xuICAgIGVjb21tZXJjZTogVUFFY29tbWVyY2VEYXRhIHwgR0E0RWNvbW1lcmNlRGF0YTtcbn1cbi8qKlxuICogTGVnYWN5IHVuaXZlcnNhbCBhbmFseXRpY3MgZGF0YS4gVGhlIGFjdHVhbCBwYXlsb2FkIGNvbnRhaW5zIG1vcmUgZmllbGRzLCBidXQgd2VcbiAqIG9ubHkgbmVlZCB0aGUgb25lcyBsaXN0ZWQgYmVsb3cuXG4gKi9cbmludGVyZmFjZSBVQUVjb21tZXJjZURhdGEge1xuICAgIGFkZDoge1xuICAgICAgICBwcm9kdWN0czoge1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgICAgICAgICAgIHByaWNlOiBzdHJpbmc7XG4gICAgICAgICAgICBxdWFudGl0eTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgICAgIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xuICAgIH07XG59XG4vKipcbiAqIEdvb2dsZSBBbmFseXRpY3MgNCBkYXRhLiBUaGUgYWN0dWFsIHBheWxvYWQgY29udGFpbnMgbW9yZSBmaWVsZHMsIGJ1dCB3ZVxuICogb25seSBuZWVkIHRoZSBvbmVzIGxpc3RlZCBiZWxvdy5cbiAqL1xuaW50ZXJmYWNlIEdBNEVjb21tZXJjZURhdGEge1xuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgaXRlbXM6IHtcbiAgICAgICAgaXRlbV9uYW1lOiBzdHJpbmc7XG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHN0cmluZztcbiAgICAgICAgcHJpY2U6IG51bWJlcjtcbiAgICAgICAgcXVhbnRpdHk6IG51bWJlcjtcbiAgICB9W107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVBRWNvbW1lcmNlRXZlbnQgZXh0ZW5kcyBCYXNlRWNvbW1lcmNlRXZlbnQge1xuICAgIGVjb21tZXJjZTogVUFFY29tbWVyY2VEYXRhO1xufVxuZXhwb3J0IGludGVyZmFjZSBHQTRFY29tbWVyY2VFdmVudCBleHRlbmRzIEJhc2VFY29tbWVyY2VFdmVudCB7XG4gICAgZWNvbW1lcmNlOiBHQTRFY29tbWVyY2VEYXRhO1xufVxuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGRlY2xhcmUgZW51bSBTcGlmZnlFdmVudE5hbWUge1xuICAgIFdpZGdldE9wZW4gPSBcInNwaWZmeTp3aWRnZXRvcGVuXCIsXG4gICAgV2lkZ2V0Q2xvc2UgPSBcInNwaWZmeTp3aWRnZXRjbG9zZVwiXG59XG4iLCJkZWNsYXJlIGVudW0gR29vZ2xlQW5hbHl0aWNzRXZlbnRzIHtcbiAgICBBRERfVE9fQ0FSVF92MSA9IFwiYWRkX3RvX2NhcnRcIixcbiAgICBBRERfVE9fQ0FSVF92MiA9IFwiYWRkVG9DYXJ0XCJcbn1cbmV4cG9ydCB7IEdvb2dsZUFuYWx5dGljc0V2ZW50cyB9O1xuIiwiaW1wb3J0IHsgQ3VzdFNlcnZpY2VBdHRhY2htZW50LCBGb3JtVHlwZSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBPcmRlclJlc3BvbnNlQXR0cmlidXRlcywgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcywgUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzLCBQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzLCBUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzLCBTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMsIFNlYXJjaFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMsIEFjY2VwdGFibGVGb3JtRmllbGRUeXBlLCBTZWFyY2hQcm9kdWN0RmlsdGVyQXR0cmlidXRlcyB9IGZyb20gJy4vYXBpL3Jlc3BvbnNlJztcbmV4cG9ydCBkZWNsYXJlIGVudW0gTWVzc2FnZVJvbGUge1xuICAgIFVzZXIgPSBcInVzZXJcIixcbiAgICBBc3Npc3RhbnQgPSBcImFzc2lzdGFudFwiXG59XG5leHBvcnQgZGVjbGFyZSBlbnVtIE1lc3NhZ2VUeXBlIHtcbiAgICBUZXh0ID0gXCJ0ZXh0XCIsXG4gICAgU3VnZ2VzdGlvbkNsaWNrZWQgPSBcInN1Z2dlc3Rpb25fY2xpY2tlZFwiLFxuICAgIFByb2R1Y3QgPSBcInByb2R1Y3RcIixcbiAgICBQcm9kdWN0U2VhcmNoID0gXCJwcm9kdWN0X3NlYXJjaFwiLFxuICAgIFJldmlldyA9IFwicmV2aWV3XCIsXG4gICAgUXVlcnlUeXBlZCA9IFwicXVlcnlfdHlwZWRcIixcbiAgICBTZXBhcmF0b3IgPSBcInNlcGFyYXRvclwiLFxuICAgIFBhZ2UgPSBcInBhZ2VcIixcbiAgICBTZWFyY2ggPSBcInNlYXJjaFwiLFxuICAgIEF0dGFjaG1lbnQgPSBcImF0dGFjaG1lbnRcIixcbiAgICBDWEFnZW50UmVzcG9uc2UgPSBcImN4X2FnZW50X3Jlc3BvbnNlXCIsXG4gICAgRm9ybSA9IFwiZm9ybVwiLFxuICAgIE9yZGVyID0gXCJvcmRlclwiLFxuICAgIFByb2R1Y3RTZWFyY2hGaWx0ZXIgPSBcInByb2R1Y3Rfc2VhcmNoX2ZpbHRlclwiXG59XG5leHBvcnQgdHlwZSBNZXNzYWdlID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcm9sZTogTWVzc2FnZVJvbGU7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG59ICYgKFRleHRNZXNzYWdlTWV0YWRhdGEgfCBRdWVyeVR5cGVkTWV0YWRhdGEgfCBTdWdnZXN0aW9uTWVzc2FnZU1ldGFkYXRhIHwgUHJvZHVjdE1lc3NhZ2VNZXRhZGF0YSB8IFByb2R1Y3RTZWFyY2hNZXNzYWdlTWV0YWRhdGEgfCBSZXZpZXdNZXNzYWdlTWV0YWRhdGEgfCBTZXBhcmF0b3JNZXNzYWdlTWV0YWRhdGEgfCBQYWdlTWVzc2FnZU1ldGFkYXRhIHwgU2VhcmNoTWVzc2FnZU1ldGFkYXRhIHwgQXR0YWNobWVudE1ldGFkYXRhIHwgQ1hBZ2VudFJlc3BvbnNlTWV0YWRhdGEgfCBGb3JtTWVzc2FnZU1ldGFkYXRhIHwgT3JkZXJNZXNzYWdlTWV0YWRhdGEgfCBQcm9kdWN0U2VhcmNoRmlsdGVyTWV0YWRhdGEpO1xudHlwZSBBdHRhY2htZW50TWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuQXR0YWNobWVudDtcbiAgICBtZXRhZGF0YToge1xuICAgICAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICBhdHRhY2htZW50OiBDdXN0U2VydmljZUF0dGFjaG1lbnRbXTtcbiAgICB9O1xufTtcbnR5cGUgQ1hBZ2VudFJlc3BvbnNlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuQ1hBZ2VudFJlc3BvbnNlO1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgYWdlbnROYW1lOiBzdHJpbmc7XG4gICAgfTtcbn07XG50eXBlIFRleHRNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuVGV4dDtcbiAgICBtZXRhZGF0YTogVGV4dFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgUXVlcnlUeXBlZE1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlF1ZXJ5VHlwZWQ7XG4gICAgbWV0YWRhdGE6IFRleHRSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFN1Z2dlc3Rpb25NZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU3VnZ2VzdGlvbkNsaWNrZWQ7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgc3VnZ2VzdGlvbklkOiBzdHJpbmc7XG4gICAgICAgIHN1Z2dlc3Rpb25Db250ZW50OiBzdHJpbmc7XG4gICAgfTtcbn07XG5leHBvcnQgdHlwZSBQcm9kdWN0TWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlByb2R1Y3Q7XG4gICAgbWV0YWRhdGE6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG5leHBvcnQgdHlwZSBQcm9kdWN0U2VhcmNoTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2g7XG4gICAgbWV0YWRhdGE6IFNlYXJjaFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFJldmlld01lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5SZXZpZXc7XG4gICAgbWV0YWRhdGE6IFJldmlld1Jlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgU2VwYXJhdG9yTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlNlcGFyYXRvcjtcbn07XG50eXBlIFBhZ2VNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUGFnZTtcbiAgICBtZXRhZGF0YTogUGFnZVJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgU2VhcmNoTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlNlYXJjaDtcbiAgICBtZXRhZGF0YTogU2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBQcm9kdWN0U2VhcmNoRmlsdGVyTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaEZpbHRlcjtcbiAgICBtZXRhZGF0YTogU2VhcmNoUHJvZHVjdEZpbHRlckF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG5leHBvcnQgdHlwZSBGb3JtRmllbGQgPSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB0eXBlOiBBY2NlcHRhYmxlRm9ybUZpZWxkVHlwZTtcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcbiAgICBmb3JtYXQ/OiAnZW1haWwnO1xuICAgIHZhbHVlPzogc3RyaW5nO1xufTtcbnR5cGUgRm9ybU1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5Gb3JtO1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGZvcm1UeXBlPzogRm9ybVR5cGU7XG4gICAgICAgIGZpZWxkczogRm9ybUZpZWxkW107XG4gICAgfTtcbn07XG50eXBlIE9yZGVyTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLk9yZGVyO1xuICAgIG1ldGFkYXRhOiBPcmRlclJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBpbnRlcmZhY2UgTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlciB7XG4gICAgcm93SW5kZXg6IG51bWJlcjtcbn1cbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IE9yZ1Nob3J0TmFtZToge1xuICAgIHJlYWRvbmx5IENvdGVyaWU6IFwiY290ZXJpZVwiO1xuICAgIHJlYWRvbmx5IEZvckxvdmVBbmRMZW1vbnM6IFwiZm9yLWxvdmUtYW5kLWxlbW9uc1wiO1xuICAgIHJlYWRvbmx5IEdyZWVucGFuOiBcImdyZWVucGFuXCI7XG4gICAgcmVhZG9ubHkgSm9yZGFuQ3JhaWc6IFwiam9yZGFuLWNyYWlnXCI7XG4gICAgcmVhZG9ubHkgTGFycnlBbmRTZXJnZXM6IFwibGFycnlfYW5kX3Nlcmdlc1wiO1xuICAgIHJlYWRvbmx5IExlYXBzQW5kUmVib3VuZHM6IFwibGVhcHMtYW5kLXJlYm91bmRzXCI7XG4gICAgcmVhZG9ubHkgTWFudHJhQnJhbmQ6IFwibWFudHJhLWJyYW5kXCI7XG4gICAgcmVhZG9ubHkgU3Bhbng6IFwic3BhbnhcIjtcbiAgICByZWFkb25seSBTcGFueFN0YWdpbmc6IFwic3RhZ2luZy1zcGFueFwiO1xuICAgIHJlYWRvbmx5IFN1cGVyZ29vcDogXCJzdXBlcmdvb3BcIjtcbiAgICByZWFkb25seSBVbmlxdWVWaW50YWdlOiBcInVuaXF1ZS12aW50YWdlXCI7XG4gICAgcmVhZG9ubHkgSmFja0FyY2hlcjogXCJqYWNrLWFyY2hlclwiO1xuICAgIHJlYWRvbmx5IFNraW5QZXJmZWN0aW9uOiBcInNraW4tcGVyZmVjdGlvblwiO1xuICAgIHJlYWRvbmx5IExvb2tPcHRpYzogXCJsb29rLW9wdGljXCI7XG4gICAgcmVhZG9ubHkgRml2ZUNiZDogXCJmaXZlLWNiZFwiO1xuICAgIHJlYWRvbmx5IFNuYXBTdXBwbGVtZW50czogXCJzbmFwLXN1cHBsZW1lbnRzXCI7XG4gICAgcmVhZG9ubHkgTG9uZ2V2aXR5cng6IFwibG9uZ2V2aXR5cnhcIjtcbiAgICByZWFkb25seSBWZW5hQ2JkOiBcInZlbmEtY2JkXCI7XG4gICAgcmVhZG9ubHkgTWVkdGVycmE6IFwibWVkdGVycmFcIjtcbiAgICByZWFkb25seSBNb2RlbGxzOiBcIm1vZGVsbHNcIjtcbiAgICByZWFkb25seSBQcmVzc2VkRmxvcmFsOiBcInByZXNzZWQtZmxvcmFsXCI7XG4gICAgcmVhZG9ubHkgS2luZHJlZEJyYXZlbHk6IFwia2luZHJlZC1icmF2ZWx5XCI7XG4gICAgcmVhZG9ubHkgV2luZUVudGh1c2lhc3Q6IFwid2luZS1lbnRodXNpYXN0XCI7XG4gICAgcmVhZG9ubHkgSG9tZWdyb3duQ2FubmFiaXM6IFwiaG9tZWdyb3duLWNhbm5hYmlzXCI7XG4gICAgcmVhZG9ubHkgRHJlYW1sYW5kQmFieTogXCJkcmVhbWxhbmQtYmFieVwiO1xuICAgIHJlYWRvbmx5IEJhbmRvbGllcjogXCJiYW5kb2xpZXJcIjtcbiAgICByZWFkb25seSBXZXN0b25Kb25Cb3VjaGVyOiBcIndlc3Rvbi1qb24tYm91Y2hlclwiO1xuICAgIHJlYWRvbmx5IEt1dEZyb21UaGVLbG90aDogXCJrdXQtZnJvbS10aGUta2xvdGhcIjtcbiAgICByZWFkb25seSBHcm9vdmVMaWZlOiBcImdyb292ZS1saWZlXCI7XG4gICAgcmVhZG9ubHkgQ2FycGU6IFwiY2FycGVcIjtcbiAgICByZWFkb25seSBXb2xmVGFjdGljYWw6IFwid29sZi10YWN0aWNhbFwiO1xuICAgIHJlYWRvbmx5IFdvbGZNYXR0cmVzczogXCJ3b2xmbWF0dHJlc3NcIjtcbiAgICByZWFkb25seSBEZWZhdWx0OiBcImRlZmF1bHRcIjtcbn07XG4iLCJleHBvcnQgZGVjbGFyZSBlbnVtIFByb2R1Y3RFeHBlcmltZW50IHtcbiAgICBEZWZhdWx0ID0gXCJkZWZhdWx0XCJcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXIge1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG59XG4iLCJpbXBvcnQgeyBDb250ZXh0IGFzIEFwaUNvbnRleHQgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0IGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaUNvbnRleHQ+IHtcbn1cbiIsImltcG9ydCB7IEdlbmVyYXRpb25QYXJhbXMgYXMgQXBpR2VuZXJhdGlvblBhcmFtcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpb25QYXJhbXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpR2VuZXJhdGlvblBhcmFtcz4ge1xufVxuIiwiaW1wb3J0IHsgUERQQXR0cmlidXRlcyBhcyBBcGlQRFBBdHRyaWJ1dGVzLCBQTFBBdHRyaWJ1dGVzIGFzIEFwaVBMUEF0dHJpYnV0ZXMsIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGFzIEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzLCBTZWFyY2hBdHRyaWJ1dGVzIGFzIEFwaVNlYXJjaEF0dHJpYnV0ZXMsIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBhcyBBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMsIFVzZXJFdmVudCBhcyBBcGlVc2VyRXZlbnQsIEZvcm1UeXBlLCBQYWdlVmlzaXRDYXRlZ29yeSwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBEUEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQTFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU2VhcmNoQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlRdWVyeVR5cGVkQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkQXR0cmlidXRlcyB7XG4gICAgZmlsbGVkU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBmb3JtUmVzcG9uc2VJZDogc3RyaW5nO1xuICAgIGZvcm1UeXBlOiBGb3JtVHlwZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVZpc2l0QXR0cmlidXRlcyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcGFnZVZpc2l0Q2F0ZWdvcnk6IFBhZ2VWaXNpdENhdGVnb3J5O1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRBdHRyaWJ1dGVzID0gUERQQXR0cmlidXRlcyB8IFBMUEF0dHJpYnV0ZXMgfCBRdWVyeVR5cGVkQXR0cmlidXRlcyB8IFNlYXJjaEF0dHJpYnV0ZXMgfCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgfCBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xuZXhwb3J0IGludGVyZmFjZSBQRFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QZHBWaXNpdCB8IFVzZXJFdmVudENhdGVnb3J5LkFkZFRvQ2FydDtcbiAgICBhdHRyaWJ1dGVzOiBQRFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBQTFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QbHBWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQTFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUXVlcnlUeXBlZDtcbiAgICBhdHRyaWJ1dGVzOiBRdWVyeVR5cGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU2VhcmNoO1xuICAgIGF0dHJpYnV0ZXM6IFNlYXJjaEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkO1xuICAgIGF0dHJpYnV0ZXM6IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwTG9hZGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwTG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcHBVbmxvYWRlZEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwVW5sb2FkZWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VWaXNpdEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGFnZVZpc2l0O1xuICAgIGF0dHJpYnV0ZXM6IFBhZ2VWaXNpdEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkO1xuICAgIGF0dHJpYnV0ZXM6IEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50ID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFBpY2s8QXBpVXNlckV2ZW50LCAnZXZlbnRfaWQnIHwgJ2NhdGVnb3J5JyB8ICdjcmVhdGVkX2F0Jz4+ICYgKFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB8IEFwcExvYWRlZFVzZXJFdmVudCB8IFBEUFVzZXJFdmVudCB8IFF1ZXJ5VHlwZWRVc2VyRXZlbnQgfCBTZWFyY2hVc2VyRXZlbnQgfCBBcHBVbmxvYWRlZEV2ZW50IHwgUExQVXNlckV2ZW50IHwgUGFnZVZpc2l0RXZlbnQgfCBGb3JtU3VibWl0dGVkKTtcbiIsImltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnLi91c2VyRXZlbnQnO1xuaW1wb3J0IHsgR2VuZXJhdGlvblBhcmFtcyB9IGZyb20gJy4vZ2VuZXJhdGlvblBhcmFtcyc7XG5leHBvcnQgaW50ZXJmYWNlIE5leHRNZXNzYWdlUmVxdWVzdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIHVzZXJFdmVudHM/OiBVc2VyRXZlbnRbXTtcbiAgICBmZWF0dXJlRmxhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICBnZW5lcmF0aW9uUGFyYW1zPzogR2VuZXJhdGlvblBhcmFtcztcbn1cbiIsImltcG9ydCB7IFN1Z2dlc3Rpb24gYXMgQXBpU3VnZ2VzdGlvbiB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb24gZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU3VnZ2VzdGlvbj4ge1xufVxuIiwiaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnLi91c2VyRXZlbnQnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnRlZEV2ZW50UmVxdWVzdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIHVzZXJFdmVudDogVXNlckV2ZW50O1xufVxuIiwiZGVjbGFyZSBjb25zdCBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgPSBcIlxcbiAgcXVlcnkge1xcbiAgICBtZSB7XFxuICAgICAgb3JnIHtcXG4gICAgICAgIGlkXFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXCI7XG5leHBvcnQgeyBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgfTtcbiIsImltcG9ydCB0eXBlIHsgQmFzZUVjb21tZXJjZUV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBhIGJhc2UgR29vZ2xlIEFuYWx5dGljcyBlY29tbWVyY2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGV2ZW50IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGV2ZW50IGlzIGEgYmFzZSBlY29tbWVyY2UgZXZlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNCYXNlRWNvbW1lcmNlRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEJhc2VFY29tbWVyY2VFdmVudDtcbiIsImltcG9ydCB0eXBlIHsgR0E0RWNvbW1lcmNlRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIGEgR29vZ2xlIEFuYWx5dGljcyA0IGVjb21tZXJjZSBldmVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBHQTQgZWNvbW1lcmNlIGV2ZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzR0E0RWNvbW1lcmNlRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEdBNEVjb21tZXJjZUV2ZW50O1xuIiwiaW1wb3J0IHR5cGUgeyBVQUVjb21tZXJjZUV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBhIGxlZ2FjeSBVbml2ZXJzYWwgQW5hbHl0aWNzIGVjb21tZXJjZSBldmVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBsZWdhY3kgVUEgZWNvbW1lcmNlIGV2ZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzTGVnYWN5VUFFY29tbWVyY2VFdmVudDogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgVUFFY29tbWVyY2VFdmVudDtcbiIsImludGVyZmFjZSBNb2JpbGVQbHBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHtcbiAgICByb3dfaW5kZXg6IG51bWJlcjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlcjogKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBNb2JpbGVQbHBDaGF0UGxhY2VtZW50UGFyYW1ldGVyO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXIgfSBmcm9tICcuLi9zcGFueFRha2VBUXVpekN0YVBhcmFtZXRlcic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyOiAodmFsdWU6IHVua25vd24pID0+IHZhbHVlIGlzIFNwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyO1xuIiwiaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tICcuLi92YXJpYW50SW5mbyc7XG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGEgdmFsaWQgVmFyaWFudEluZm8uXG4gKlxuICogQHBhcmFtIHZhcmlhbnRJbmZvIC0gVGhlIHVua25vd24gb2JqZWN0IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRhdGEgaXMgYSB2YWxpZCBWYXJpYW50SW5mbyBvYmplY3QsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNWYXJpYW50SW5mbzogKHZhcmlhbnRJbmZvOiB1bmtub3duKSA9PiB2YXJpYW50SW5mbyBpcyBWYXJpYW50SW5mbztcbiIsImltcG9ydCB7IEFwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgcHJvdmlkZWQgZGF0YSBoYXMgdGhlIGFsbCBvZiB0aGUgcHJvcGVydGllcyAod2l0aCB0aGUgY29ycmVjdCB0eXBlcykgb2ZcbiAqIGEgRm9ybVJlc3BvbnNlQXR0cmlidXRlXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGRhdGEgaGFzIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEFwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaUZvcm1TdWJtaXR0ZWRSZXNwb25zZUF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgT3JkZXJJdGVtSW5mbywgT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGludGVyZmFjZSBBcGlPcmRlckl0ZW1JbmZvIGV4dGVuZHMgT21pdDxPcmRlckl0ZW1JbmZvLCAnZGVsaXZlcmVkX2F0JyB8ICdlc3RpbWF0ZWRfZGVsaXZlcnlfYXQnIHwgJ2luX3RyYW5zaXRfYXQnPiB7XG4gICAgZGVsaXZlcmVkX2F0Pzogc3RyaW5nO1xuICAgIGVzdGltYXRlZF9kZWxpdmVyeV9hdD86IHN0cmluZztcbiAgICBpbl90cmFuc2l0X2F0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcyBleHRlbmRzIE9taXQ8T3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMsICdjcmVhdGVkX2F0JyB8ICdsYXRlc3RfZXZlbnRfZGF0ZScgfCAnbGluZV9pdGVtcyc+IHtcbiAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgbGF0ZXN0X2V2ZW50X2RhdGU6IHN0cmluZztcbiAgICBsaW5lX2l0ZW1zOiBBcGlPcmRlckl0ZW1JbmZvW107XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaU9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbmZpZyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnQW1wbGl0dWRlIHtcbiAgICBzZXNzaW9uX3JlcGxheV9lbmFibGVkOiBib29sZWFuO1xuICAgIHNlc3Npb25fcmVwbGF5X3NhbXBsZV9yYXRlOiBudW1iZXI7XG4gICAgdHJhY2tpbmdfZW5hYmxlZDogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBBcGlPcmdBbmFseXRpY3NDb25maWdDdXN0b21lclNlcnZpY2Uge1xuICAgIHByb3ZpZGVyOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnR29vZ2xlQW5hbHl0aWNzIHtcbiAgICBtZWFzdXJlbWVudF9pZDogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEFwaU9yZ0FuYWx5dGljc0NvbmZpZyB7XG4gICAgYW1wbGl0dWRlPzogQXBpT3JnQW5hbHl0aWNzQ29uZmlnQW1wbGl0dWRlO1xuICAgIGN1c3RvbWVyX3NlcnZpY2U/OiBBcGlPcmdBbmFseXRpY3NDb25maWdDdXN0b21lclNlcnZpY2U7XG4gICAgZ29vZ2xlX2FuYWx5dGljcz86IEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0dvb2dsZUFuYWx5dGljcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT3JnYW5pemF0aW9uQ29uZmlnIGV4dGVuZHMgT3JnYW5pemF0aW9uQ29uZmlnIHtcbiAgICBjb25maWc6IEFwaU9yZ0FuYWx5dGljc0NvbmZpZztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaU9yZ2FuaXphdGlvbkNvbmZpZzogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgQXBpT3JnYW5pemF0aW9uQ29uZmlnO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgU3RhdHNpZ0V4cGVyaW1lbnQgYXMgQXBpT3JnQ29uZmlnRXhwZXJpbWVudCwgU3RhdHNpZ0ZlYXR1cmVHYXRlIGFzIEFwaU9yZ0NvbmZpZ0ZlYXR1cmVHYXRlLCBPcmdhbml6YXRpb25TZXR0aW5ncyBhcyBBcGlPcmdDb25maWdPcmdhbml6YXRpb25TZXR0aW5ncyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBBcGlPcmdhbml6YXRpb25Db25maWcgfSBmcm9tICcuL2lzQXBpT3JnYW5pemF0aW9uQ29uZmlnJztcbmludGVyZmFjZSBBcGlPcmdDb25maWdSZXN1bHRzIHtcbiAgICBjb25maWdzOiBBcGlPcmdhbml6YXRpb25Db25maWdbXTtcbiAgICBleHBlcmltZW50czogQXBpT3JnQ29uZmlnRXhwZXJpbWVudFtdO1xuICAgIGdhdGVzOiBBcGlPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICAgIG9yZzogQXBpT3JnQ29uZmlnT3JnYW5pemF0aW9uU2V0dGluZ3M7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlPcmdDb25maWdSZXN1bHRzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBSZXF1aXJlZDxBcGlPcmdDb25maWdSZXN1bHRzPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IEFwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUGFnZVJlc3BvbnNlQXR0cmlidXRlczogKG9iajogdW5rbm93bikgPT4gb2JqIGlzIEFwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBQTFBBdHRyaWJ1dGVzLCBQTFBJZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQTFBJZEF0dHJpYnV0ZTogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgUExQSWRBdHRyaWJ1dGVzO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQTFBFdmVudEF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIFBMUEF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBQcm9kdWN0U2VhcmNoRmlsdGVyUmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUHJvZHVjdFNlYXJjaEZpbHRlclJlc3BvbnNlQXR0cmlidXRlczogKGF0dHJpYnV0ZXM6IHVua25vd24pID0+IGF0dHJpYnV0ZXMgaXMgUHJvZHVjdFNlYXJjaEZpbHRlclJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzR3JhcGhRTENvbG9yc0NvbmZpZzogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGE7XG4iLCJpbXBvcnQgdHlwZSB7IFVwcGVyQ2FzZUNoYXJhY3RlcnMsIFdvcmRTZXBhcmF0b3JzIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG50eXBlIFVwcGVyQ2FzZVRvTG93ZXJDYXNlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIFVwcGVyY2FzZTxUPiA/IExvd2VyY2FzZTxUPiA6IFQ7XG50eXBlIFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyc188U291cmNlIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gU291cmNlIGV4dGVuZHMgJycgPyBbXSA6IFNvdXJjZSBleHRlbmRzIGAke2luZmVyIEZpcnN0UGFydH0ke0RlbGltaXRlcn0ke2luZmVyIFNlY29uZFBhcnR9YCA/IFNvdXJjZSBleHRlbmRzIGAke0ZpcnN0UGFydH0ke2luZmVyIFVzZWREZWxpbWl0ZXJ9JHtTZWNvbmRQYXJ0fWAgPyBVc2VkRGVsaW1pdGVyIGV4dGVuZHMgRGVsaW1pdGVyID8gU291cmNlIGV4dGVuZHMgYCR7aW5mZXIgRmlyc3RQYXJ0fSR7VXNlZERlbGltaXRlcn0ke2luZmVyIFNlY29uZFBhcnR9YCA/IFtcbiAgICAuLi5TcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8Rmlyc3RQYXJ0LCBEZWxpbWl0ZXI+LFxuICAgIFVzZWREZWxpbWl0ZXIsXG4gICAgLi4uU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzPFNlY29uZFBhcnQsIERlbGltaXRlcj5cbl0gOiBuZXZlciA6IG5ldmVyIDogbmV2ZXIgOiBbU291cmNlXTtcbi8qKlxuICogVW5saWtlIGEgc2ltcGxlciBzcGxpdCwgdGhpcyBvbmUgaW5jbHVkZXMgdGhlIGRlbGltaXRlciBzcGxpdHRlZCBvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5IGxpdGVyYWwuIFRoaXMgaXMgdG8gZW5hYmxlIHNwbGl0dGluZyBvbiwgZm9yIGV4YW1wbGUsIHVwcGVyLWNhc2UgY2hhcmFjdGVycy5cbiAqXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICovXG5leHBvcnQgdHlwZSBTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8U291cmNlIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzXzxVcHBlckNhc2VUb0xvd2VyQ2FzZTxTb3VyY2U+LCBEZWxpbWl0ZXI+O1xuLyoqXG4gKkZvcm1hdCBhIHNwZWNpZmljIHBhcnQgb2YgdGhlIHNwbGl0dGVkIHN0cmluZyBsaXRlcmFsIHRoYXQgYFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPD5gIGZ1c2VzIHRvZ2V0aGVyLCBlbnN1cmluZyBkZXNpcmVkIGNhc2luZy5cbiAqXG4gKkBzZWUgU3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2VcbiAqL1xudHlwZSBTdHJpbmdQYXJ0VG9EZWxpbWl0ZXJDYXNlPFN0cmluZ1BhcnQgZXh0ZW5kcyBzdHJpbmcsIFN0YXJ0IGV4dGVuZHMgYm9vbGVhbiwgVXNlZFdvcmRTZXBhcmF0b3JzIGV4dGVuZHMgc3RyaW5nLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycyBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFN0cmluZ1BhcnQgZXh0ZW5kcyBVc2VkV29yZFNlcGFyYXRvcnMgPyBEZWxpbWl0ZXIgOiBTdGFydCBleHRlbmRzIHRydWUgPyBMb3dlcmNhc2U8U3RyaW5nUGFydD4gOiBTdHJpbmdQYXJ0IGV4dGVuZHMgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMgPyBgJHtEZWxpbWl0ZXJ9JHtMb3dlcmNhc2U8U3RyaW5nUGFydD59YCA6IFN0cmluZ1BhcnQ7XG4vKipcbiAqIFRha2VzIHRoZSByZXN1bHQgb2YgYSBzcGxpdHRlZCBzdHJpbmcgbGl0ZXJhbCBhbmQgcmVjdXJzaXZlbHkgY29uY2F0ZW5hdGVzIGl0IHRvZ2V0aGVyIGludG8gdGhlIGRlc2lyZWQgY2FzaW5nLlxuICpcbiAqIEl0IHJlY2VpdmVzIGBVc2VkV29yZFNlcGFyYXRvcnNgIGFuZCBgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnNgIGFzIGlucHV0IHRvIGVuc3VyZSBpdCdzIGZ1bGx5IGVuY2Fwc3VsYXRlZC5cbiAqXG4gKiBAc2VlIFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyc1xuICovXG50eXBlIFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPFBhcnRzIGV4dGVuZHMgcmVhZG9ubHkgYW55W10sIFN0YXJ0IGV4dGVuZHMgYm9vbGVhbiwgVXNlZFdvcmRTZXBhcmF0b3JzIGV4dGVuZHMgc3RyaW5nLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycyBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFBhcnRzIGV4dGVuZHMgW2Ake2luZmVyIEZpcnN0UGFydH1gLCAuLi5pbmZlciBSZW1haW5pbmdQYXJ0c10gPyBgJHtTdHJpbmdQYXJ0VG9EZWxpbWl0ZXJDYXNlPEZpcnN0UGFydCwgU3RhcnQsIFVzZWRXb3JkU2VwYXJhdG9ycywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMsIERlbGltaXRlcj59JHtTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTxSZW1haW5pbmdQYXJ0cywgZmFsc2UsIFVzZWRXb3JkU2VwYXJhdG9ycywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMsIERlbGltaXRlcj59YCA6IFBhcnRzIGV4dGVuZHMgW3N0cmluZ10gPyBzdHJpbmcgOiAnJztcbi8qKlxuICogQ29udmVydCBhIHN0cmluZyBsaXRlcmFsIHRvIGEgY3VzdG9tIHN0cmluZyBkZWxpbWl0ZXIgY2FzaW5nLlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuLCBmb3IgZXhhbXBsZSwgY29udmVydGluZyBhIGNhbWVsLWNhc2VkIG9iamVjdCBwcm9wZXJ0eSB0byBhbiBvZGRseSBjYXNlZCBvbmUuXG4gKlxuICogQHNlZSBLZWJhYkNhc2VcbiAqIEBzZWUgU25ha2VDYXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge0RlbGltaXRlckNhc2V9IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogLy8gU2ltcGxlXG4gKlxuICogY29uc3Qgc29tZVZhcmlhYmxlOiBEZWxpbWl0ZXJDYXNlPCdmb29CYXInLCAnIyc+ID0gJ2ZvbyNiYXInO1xuICpcbiAqIC8vIEFkdmFuY2VkXG4gKlxuICogdHlwZSBPZGRseUNhc2VkUHJvcGVydGllczxUPiA9IHtcbiAqIFx0W0sgaW4ga2V5b2YgVCBhcyBEZWxpbWl0ZXJDYXNlPEssICcjJz5dOiBUW0tdXG4gKiB9O1xuICpcbiAqIGludGVyZmFjZSBTb21lT3B0aW9ucyB7XG4gKiBcdGRyeVJ1bjogYm9vbGVhbjtcbiAqIFx0aW5jbHVkZUZpbGU6IHN0cmluZztcbiAqIFx0Zm9vOiBudW1iZXI7XG4gKiB9XG4gKlxuICogY29uc3QgcmF3Q2xpT3B0aW9uczogT2RkbHlDYXNlZFByb3BlcnRpZXM8U29tZU9wdGlvbnM+ID0ge1xuICogXHQnZHJ5I3J1bic6IHRydWUsXG4gKiBcdCdpbmNsdWRlI2ZpbGUnOiAnYmFyLmpzJyxcbiAqIFx0Zm9vOiAxMjNcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgQ2hhbmdlIGNhc2VcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKi9cbmV4cG9ydCB0eXBlIERlbGltaXRlckNhc2U8VmFsdWUsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBzdHJpbmcgZXh0ZW5kcyBWYWx1ZSA/IFZhbHVlIDogVmFsdWUgZXh0ZW5kcyBzdHJpbmcgPyBTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTxTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8VmFsdWUsIFdvcmRTZXBhcmF0b3JzIHwgVXBwZXJDYXNlQ2hhcmFjdGVycz4sIHRydWUsIFdvcmRTZXBhcmF0b3JzLCBVcHBlckNhc2VDaGFyYWN0ZXJzLCBEZWxpbWl0ZXI+IDogVmFsdWU7XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERlbGltaXRlckNhc2UgfSBmcm9tICcuL2RlbGltaXRlckNhc2UnO1xuaW1wb3J0IHR5cGUgeyBOb25SZWN1cnNpdmVUeXBlIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgdHlwZSB7IFVua25vd25BcnJheSB9IGZyb20gJy4vdW5rbm93bkFycmF5Jztcbi8qKlxuICogQ29udmVydCBvYmplY3QgcHJvcGVydGllcyB0byBkZWxpbWl0ZXIgY2FzZSByZWN1cnNpdmVseS5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiwgZm9yIGV4YW1wbGUsIGNvbnZlcnRpbmcgc29tZSBBUEkgdHlwZXMgZnJvbSBhIGRpZmZlcmVudCBzdHlsZS5cbiAqXG4gKiBAc2VlIERlbGltaXRlckNhc2VcbiAqIEBzZWUgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge0RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXB9IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogaW50ZXJmYWNlIFVzZXIge1xuICogXHR1c2VySWQ6IG51bWJlcjtcbiAqIFx0dXNlck5hbWU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBpbnRlcmZhY2UgVXNlcldpdGhGcmllbmRzIHtcbiAqIFx0dXNlckluZm86IFVzZXI7XG4gKiBcdHVzZXJGcmllbmRzOiBVc2VyW107XG4gKiB9XG4gKlxuICogY29uc3QgcmVzdWx0OiBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFVzZXJXaXRoRnJpZW5kcywgJy0nPiA9IHtcbiAqIFx0J3VzZXItaW5mbyc6IHtcbiAqIFx0J3VzZXItaWQnOiAxLFxuICogXHRcdCd1c2VyLW5hbWUnOiAnVG9tJyxcbiAqIFx0fSxcbiAqIFx0J3VzZXItZnJpZW5kcyc6IFtcbiAqIFx0XHR7XG4gKiBcdFx0XHQndXNlci1pZCc6IDIsXG4gKiBcdFx0XHQndXNlci1uYW1lJzogJ0plcnJ5JyxcbiAqIFx0XHR9LFxuICogXHRcdHtcbiAqIFx0XHRcdCd1c2VyLWlkJzogMyxcbiAqIFx0XHRcdCd1c2VyLW5hbWUnOiAnU3Bpa2UnLFxuICogXHRcdH0sXG4gKiBcdF0sXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICogQGNhdGVnb3J5IE9iamVjdFxuICovXG5leHBvcnQgdHlwZSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gVmFsdWUgZXh0ZW5kcyBOb25SZWN1cnNpdmVUeXBlID8gVmFsdWUgOiBWYWx1ZSBleHRlbmRzIFVua25vd25BcnJheSA/IERlbGltaXRlckNhc2VkUHJvcGVydGllc0FycmF5RGVlcDxWYWx1ZSwgRGVsaW1pdGVyPiA6IFZhbHVlIGV4dGVuZHMgU2V0PGluZmVyIFU+ID8gU2V0PERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPj4gOiB7XG4gICAgW0sgaW4ga2V5b2YgVmFsdWUgYXMgRGVsaW1pdGVyQ2FzZTxLLCBEZWxpbWl0ZXI+XTogRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZVtLXSwgRGVsaW1pdGVyPjtcbn07XG50eXBlIERlbGltaXRlckNhc2VkUHJvcGVydGllc0FycmF5RGVlcDxWYWx1ZSBleHRlbmRzIFVua25vd25BcnJheSwgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFZhbHVlIGV4dGVuZHMgW10gPyBbXSA6IFZhbHVlIGV4dGVuZHMgW2luZmVyIFUsIC4uLmluZmVyIFZdID8gW0RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPiwgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XSA6IFZhbHVlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIFUsIC4uLmluZmVyIFZdID8gcmVhZG9ubHkgW1xuICAgIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPixcbiAgICAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFYsIERlbGltaXRlcj5cbl0gOiBWYWx1ZSBleHRlbmRzIHJlYWRvbmx5IFsuLi5pbmZlciBVLCBpbmZlciBWXSA/IFtcbiAgICAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4sXG4gICAgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XG5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbLi4uaW5mZXIgVSwgaW5mZXIgVl0gPyByZWFkb25seSBbXG4gICAgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+LFxuICAgIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8ViwgRGVsaW1pdGVyPlxuXSA6IFZhbHVlIGV4dGVuZHMgQXJyYXk8aW5mZXIgVT4gPyBBcnJheTxEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4+IDogVmFsdWUgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4+IDogbmV2ZXI7XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICcuL2RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXAnO1xuLyoqXG4gKiBDb252ZXJ0IG9iamVjdCBwcm9wZXJ0aWVzIHRvIHNuYWtlIGNhc2UgcmVjdXJzaXZlbHkuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIHNvbWUgQVBJIHR5cGVzIGZyb20gYSBkaWZmZXJlbnQgc3R5bGUuXG4gKlxuICogQHNlZSBTbmFrZUNhc2VcbiAqIEBzZWUgU25ha2VDYXNlZFByb3BlcnRpZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7U25ha2VDYXNlZFByb3BlcnRpZXNEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqIFx0dXNlcklkOiBudW1iZXI7XG4gKiBcdHVzZXJOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogaW50ZXJmYWNlIFVzZXJXaXRoRnJpZW5kcyB7XG4gKiBcdHVzZXJJbmZvOiBVc2VyO1xuICogXHR1c2VyRnJpZW5kczogVXNlcltdO1xuICogfVxuICpcbiAqIGNvbnN0IHJlc3VsdDogU25ha2VDYXNlZFByb3BlcnRpZXNEZWVwPFVzZXJXaXRoRnJpZW5kcz4gPSB7XG4gKiBcdHVzZXJfaW5mbzoge1xuICogXHRcdHVzZXJfaWQ6IDEsXG4gKiBcdFx0dXNlcl9uYW1lOiAnVG9tJyxcbiAqIFx0fSxcbiAqIFx0dXNlcl9mcmllbmRzOiBbXG4gKiBcdFx0e1xuICogXHRcdFx0dXNlcl9pZDogMixcbiAqIFx0XHRcdHVzZXJfbmFtZTogJ0plcnJ5JyxcbiAqIFx0XHR9LFxuICogXHRcdHtcbiAqIFx0XHRcdHVzZXJfaWQ6IDMsXG4gKiBcdFx0XHR1c2VyX25hbWU6ICdTcGlrZScsXG4gKiBcdFx0fSxcbiAqIFx0XSxcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgQ2hhbmdlIGNhc2VcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKi9cbmV4cG9ydCB0eXBlIFNuYWtlQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZT4gPSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlLCAnXyc+O1xuIiwiLyoqXG4gKiBHZW5lcmljIHV0aWxpdHkgdG8gdHJhbnNmb3JtIHNuYWtlX2Nhc2Ugb2JqZWN0IGtleXMgdG8gY2FtZWxDYXNlIGF0IHJ1bnRpbWUuXG4gKiBUaGlzIGlzIHRoZSBydW50aW1lIGVxdWl2YWxlbnQgb2YgdGhlIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB0eXBlIHV0aWxpdHkuXG4gKi9cbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgb2JqZWN0IGtleXMgZnJvbSBzbmFrZV9jYXNlIHRvIGNhbWVsQ2FzZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWw6IChvYmo6IHVua25vd24pID0+IHVua25vd247XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG9iamVjdCBrZXlzIGZyb20gY2FtZWxDYXNlIHRvIHNuYWtlX2Nhc2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdHJhbnNmb3JtQ2FtZWxUb1NuYWtlOiAob2JqOiB1bmtub3duKSA9PiB1bmtub3duO1xuIiwiaW1wb3J0IHsgRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50Jztcbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgZW51bSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgZW51bSB2YWx1ZSBvciB1bmRlZmluZWQgaWYgdGhlIHN0cmluZ1xuICogZG9lcyBub3QgbWFwIHRvIGEgdmFsaWQgZW51bVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBzdHJpbmdUb0Z1bGZpbGxtZW50RGlzcGxheVN0YXR1c0VudW1WYWx1ZTogKHN0YXR1czogc3RyaW5nKSA9PiBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBDb2xvck1hcHBpbmcgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWdcIjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlR3JhcGhRTENvbG9yc0NvbmZpZzogKGRhdGE6IHVua25vd24pID0+IENvbG9yTWFwcGluZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IEZyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mcm9udGVuZENvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWcsIFBhZ2VWYXJpYW50Q29uZmlnLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50czogKGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFBhZ2VWYXJpYW50Q29uZmlnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZzogKGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbmZpZ0tleTogc3RyaW5nKSA9PiBXaWRnZXRNb3VudGluZ0NvbmZpZztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlQW5kVHJhbnNmb3JtV2lkZ2V0Q29uZmlnOiAoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgY29uZmlnS2V5OiBzdHJpbmcpID0+IFdpZGdldENvbmZpZztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlR3JhcGhRTEZyb250ZW5kQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gRnJvbnRlbmRDb25maWcgfCB1bmRlZmluZWQ7XG4iLCJleHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUdyYXBoUUxPcmdJZDogKGRhdGE6IHVua25vd24pID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IE1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIgfSBmcm9tICcuLi9tb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlcjogKHZhbHVlOiB1bmtub3duKSA9PiBNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnYW5pemF0aW9uQ29uZmlnJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlT3JnYW5pemF0aW9uQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gT3JnYW5pemF0aW9uQ29uZmlnIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzOiAoZGF0YTogdW5rbm93bikgPT4gT3JnQ29uZmlnIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2luZGV4JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlUmVzcG9uc2U6IChkYXRhOiB1bmtub3duKSA9PiBSZXNwb25zZSB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IFN1Z2dlc3Rpb24gfSBmcm9tICcuLi9hcGkvc3VnZ2VzdGlvbic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZVN1Z2dlc3Rpb246IChkYXRhOiB1bmtub3duKSA9PiBTdWdnZXN0aW9uIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9pbmRleCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZVVzZXJFdmVudDogKGRhdGE6IHVu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