@envive-ai/react-hooks 0.1.7 → 0.1.9

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 (374) hide show
  1. package/dist/NewOrgConfig-B1zC4zP0.js +10 -0
  2. package/dist/{NewOrgConfig-C5YL4Y62.cjs → NewOrgConfig-DAGaGj2d.cjs} +3 -8
  3. package/dist/{SystemSettingsContext-Cb9YHln8.cjs → SystemSettingsContext-BHi2YaQp.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-D3mmGGcv.js → SystemSettingsContext-BLRfTbCC.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-DXTEBjGM.js → TrackComponentVisibleEvent-CftWp8QR.js} +3 -3
  6. package/dist/{TrackComponentVisibleEvent-C7c_rHFW.cjs → TrackComponentVisibleEvent-Dag8vFhb.cjs} +3 -3
  7. package/dist/{amplitudeContext-CB_F-nJY.d.cts → amplitudeContext-B73xamNe.d.cts} +1 -1
  8. package/dist/{amplitudeContext-DFYBDc0h.d.ts → amplitudeContext-BhhYPJSL.d.ts} +1 -1
  9. package/dist/{amplitudeContext-Cak6ijMq.js → amplitudeContext-CwPtBPhg.js} +8 -8
  10. package/dist/{amplitudeContext-sTEsPaVG.cjs → amplitudeContext-DTC6maR0.cjs} +8 -8
  11. package/dist/api-Bc3_julZ.cjs +239 -0
  12. package/dist/api-D9gmGNAV.js +166 -0
  13. package/dist/{app-D_upYeqF.js → app-CoQ1nC-j.js} +5 -5
  14. package/dist/{app-KXTMPa4s.cjs → app-DN72spgQ.cjs} +6 -6
  15. package/dist/application/models/graphql/index.d.ts +1 -1
  16. package/dist/application/models/guards/api/index.cjs +3 -2
  17. package/dist/application/models/guards/api/index.d.ts +2 -2
  18. package/dist/application/models/guards/api/index.js +3 -2
  19. package/dist/application/models/guards/utils.cjs +3 -0
  20. package/dist/application/models/guards/utils.d.cts +2 -0
  21. package/dist/application/models/guards/utils.d.ts +2 -0
  22. package/dist/application/models/guards/utils.js +3 -0
  23. package/dist/application/models/index.cjs +7 -6
  24. package/dist/application/models/index.d.cts +8 -7
  25. package/dist/application/models/index.d.ts +11 -10
  26. package/dist/application/models/index.js +6 -5
  27. package/dist/application/models/utilityTypes/index.cjs +1 -1
  28. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  29. package/dist/application/models/utilityTypes/index.js +1 -1
  30. package/dist/application/models/variantInfo/index.cjs +1 -1
  31. package/dist/application/models/variantInfo/index.d.cts +1 -1
  32. package/dist/application/models/variantInfo/index.d.ts +1 -1
  33. package/dist/application/models/variantInfo/index.js +1 -1
  34. package/dist/application/utils/index.cjs +33 -32
  35. package/dist/application/utils/index.d.cts +13 -12
  36. package/dist/application/utils/index.d.ts +16 -15
  37. package/dist/application/utils/index.js +15 -14
  38. package/dist/{atomStore-DnPEioF4.js → atomStore-BuopbV9k.js} +1 -1
  39. package/dist/{atomStore-DEZyFCNz.cjs → atomStore-CZKe3itM.cjs} +1 -1
  40. package/dist/atoms/app/index.cjs +10 -9
  41. package/dist/atoms/app/index.d.cts +16 -15
  42. package/dist/atoms/app/index.d.ts +19 -18
  43. package/dist/atoms/app/index.js +10 -9
  44. package/dist/atoms/atomStore/index.cjs +2 -2
  45. package/dist/atoms/atomStore/index.js +2 -2
  46. package/dist/atoms/chat/index.cjs +16 -15
  47. package/dist/atoms/chat/index.d.cts +36 -35
  48. package/dist/atoms/chat/index.d.ts +39 -38
  49. package/dist/atoms/chat/index.js +16 -15
  50. package/dist/atoms/globalSearch/index.cjs +1 -1
  51. package/dist/atoms/globalSearch/index.d.cts +6 -6
  52. package/dist/atoms/globalSearch/index.d.ts +6 -6
  53. package/dist/atoms/globalSearch/index.js +1 -1
  54. package/dist/atoms/org/index.cjs +4 -4
  55. package/dist/atoms/org/index.d.cts +27 -25
  56. package/dist/atoms/org/index.d.ts +30 -28
  57. package/dist/atoms/org/index.js +4 -4
  58. package/dist/atoms/search/index.cjs +23 -21
  59. package/dist/atoms/search/index.d.cts +10 -9
  60. package/dist/atoms/search/index.d.ts +13 -12
  61. package/dist/atoms/search/index.js +23 -21
  62. package/dist/atoms/search/types.cjs +1 -1
  63. package/dist/atoms/search/types.d.cts +1 -1
  64. package/dist/atoms/search/types.d.ts +1 -1
  65. package/dist/atoms/search/types.js +1 -1
  66. package/dist/atoms/search/utils.cjs +3 -0
  67. package/dist/atoms/search/utils.d.cts +5 -0
  68. package/dist/atoms/search/utils.d.ts +5 -0
  69. package/dist/atoms/search/utils.js +3 -0
  70. package/dist/{cdnContext-BMjVfBft.cjs → cdnContext-ShKWLgKA.cjs} +2 -2
  71. package/dist/{cdnContext-DgsJ00Tb.js → cdnContext-pfrZ6lfu.js} +2 -2
  72. package/dist/{chat-D1Eat8Ih.cjs → chat-BOuhPeoD.cjs} +11 -11
  73. package/dist/{chat-zA-K4tR_.cjs → chat-BkjIKhc5.cjs} +1 -1
  74. package/dist/{chat-DPJGdUkz.js → chat-C3I3GG1L.js} +10 -10
  75. package/dist/{chat-B4lkFIxz.js → chat-CgLypC3w.js} +1 -1
  76. package/dist/{chatElementDisplayLocation-C1tRM5OD.d.ts → chatElementDisplayLocation-BwiXrkN7.d.ts} +1 -1
  77. package/dist/{chatElementDisplayLocation-9SW40Dd3.d.cts → chatElementDisplayLocation-DWmfNX_u.d.cts} +1 -1
  78. package/dist/chatSearch-B9Rk7Dl3.js +295 -0
  79. package/dist/chatSearch-BqVwk1ya.cjs +418 -0
  80. package/dist/{chatState-BrmBYY8l.js → chatState-CX50Roi9.js} +3 -3
  81. package/dist/{chatState-BisPJd5g.cjs → chatState-xC0pswtB.cjs} +3 -3
  82. package/dist/{commerce-api-DagLj3D_.js → commerce-api-BCSZ4QFV.js} +9 -9
  83. package/dist/{commerce-api-CxDIfeME.cjs → commerce-api-DemPaNpu.cjs} +9 -9
  84. package/dist/{components-g0G58Kat.cjs → components-Cby-Cma3.cjs} +1 -1
  85. package/dist/{components-B1edduHz.js → components-D1mg1-Br.js} +1 -1
  86. package/dist/config/locators/components/chat/index.cjs +1 -1
  87. package/dist/config/locators/components/chat/index.d.cts +1 -1
  88. package/dist/config/locators/components/chat/index.d.ts +1 -1
  89. package/dist/config/locators/components/chat/index.js +1 -1
  90. package/dist/config/locators/components/index.cjs +1 -1
  91. package/dist/config/locators/components/index.d.cts +1 -1
  92. package/dist/config/locators/components/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.js +1 -1
  94. package/dist/config/locators/index.cjs +2 -2
  95. package/dist/config/locators/index.d.cts +2 -2
  96. package/dist/config/locators/index.d.ts +2 -2
  97. package/dist/config/locators/index.js +2 -2
  98. package/dist/contexts/amplitudeContext/index.cjs +13 -12
  99. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  100. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  101. package/dist/contexts/amplitudeContext/index.js +13 -12
  102. package/dist/contexts/cdnContext/index.cjs +4 -4
  103. package/dist/contexts/cdnContext/index.js +4 -4
  104. package/dist/contexts/chatContext/index.cjs +37 -35
  105. package/dist/contexts/chatContext/index.d.cts +4 -4
  106. package/dist/contexts/chatContext/index.d.ts +2 -2
  107. package/dist/contexts/chatContext/index.js +33 -31
  108. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  109. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  110. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  111. package/dist/contexts/enviveConfigContext/index.js +4 -4
  112. package/dist/contexts/enviveCssContext/index.cjs +15 -14
  113. package/dist/contexts/enviveCssContext/index.js +15 -14
  114. package/dist/contexts/featureFlagContext/index.cjs +5 -5
  115. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  116. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  117. package/dist/contexts/featureFlagContext/index.js +5 -5
  118. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -2
  119. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  120. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  121. package/dist/contexts/featureFlagServiceContext/index.js +2 -2
  122. package/dist/contexts/graphqlContext/index.cjs +9 -8
  123. package/dist/contexts/graphqlContext/index.d.cts +10 -8
  124. package/dist/contexts/graphqlContext/index.d.ts +13 -11
  125. package/dist/contexts/graphqlContext/index.js +9 -8
  126. package/dist/contexts/localStorageContext/index.cjs +2 -2
  127. package/dist/contexts/localStorageContext/index.js +2 -2
  128. package/dist/contexts/newOrgConfigContext/index.cjs +13 -12
  129. package/dist/contexts/newOrgConfigContext/index.d.cts +12 -27
  130. package/dist/contexts/newOrgConfigContext/index.d.ts +15 -30
  131. package/dist/contexts/newOrgConfigContext/index.js +13 -12
  132. package/dist/contexts/searchContext/index.cjs +17 -16
  133. package/dist/contexts/searchContext/index.d.cts +1 -1
  134. package/dist/contexts/searchContext/index.d.ts +2 -2
  135. package/dist/contexts/searchContext/index.js +17 -16
  136. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  137. package/dist/contexts/sessionStorageContext/index.js +2 -2
  138. package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
  139. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  140. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  141. package/dist/contexts/shopifyUrlContext/index.js +1 -1
  142. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  143. package/dist/contexts/systemSettingsContext/index.d.cts +11 -10
  144. package/dist/contexts/systemSettingsContext/index.d.ts +16 -15
  145. package/dist/contexts/systemSettingsContext/index.js +4 -4
  146. package/dist/contexts/types.d.cts +3 -3
  147. package/dist/contexts/types.d.ts +3 -3
  148. package/dist/contexts/userIdentityContext/index.cjs +19 -18
  149. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  150. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  151. package/dist/contexts/userIdentityContext/index.js +19 -18
  152. package/dist/{domObserver-B6cRGTny.js → domObserver-B19-69gW.js} +1 -1
  153. package/dist/{domObserver-DQZwhPrc.cjs → domObserver-CwieVNgj.cjs} +1 -1
  154. package/dist/{enviveConfig-BJZ4zTJo.js → enviveConfig-BSfyz_pm.js} +3 -3
  155. package/dist/{enviveConfig-DdBrcGSQ.cjs → enviveConfig-D8vcVPWD.cjs} +3 -3
  156. package/dist/{enviveConfigContext-78orE_uH.cjs → enviveConfigContext-C8cCcdKU.cjs} +3 -3
  157. package/dist/{enviveConfigContext-jBCCWQH9.js → enviveConfigContext-CJqpRSKu.js} +3 -3
  158. package/dist/{featureFlagServiceContext-ChL7DJ53.cjs → featureFlagServiceContext-CUBoBV2i.cjs} +2 -2
  159. package/dist/{featureFlagServiceContext-D1PzHsEs.d.ts → featureFlagServiceContext-Cpw8omUr.d.ts} +2 -2
  160. package/dist/{featureFlagServiceContext-DQwlCTde.d.cts → featureFlagServiceContext-Cvn6fcdB.d.cts} +2 -2
  161. package/dist/{featureFlagServiceContext-DzFfmb1Z.js → featureFlagServiceContext-Dg8okVk1.js} +2 -2
  162. package/dist/{frontendConfig-wg41mBok.d.cts → frontendConfig-DnMZfvcA.d.cts} +3 -3
  163. package/dist/{frontendConfig-DrvrQSm8.d.ts → frontendConfig-Dqxbqo8G.d.ts} +3 -3
  164. package/dist/{globalSearch-Bnjlxtr5.cjs → globalSearch-C94-vEVh.cjs} +1 -1
  165. package/dist/{globalSearch-CRWUqnjq.js → globalSearch-Dlbnfasm.js} +1 -1
  166. package/dist/{graphqlConfig-Bn-HLHsh.cjs → graphqlConfig-B4ddz1vH.cjs} +1 -1
  167. package/dist/{graphqlConfig-DtZm_YaH.js → graphqlConfig-BnjOdeX7.js} +1 -1
  168. package/dist/graphqlContext-6-GcR9zd.d.cts +28 -0
  169. package/dist/{graphqlContext-BJg7B--J.js → graphqlContext-8kw4aLRc.js} +4 -4
  170. package/dist/graphqlContext-EhYZM1v_.d.ts +28 -0
  171. package/dist/{graphqlContext-DI-_VRmb.cjs → graphqlContext-Fwc6Upvh.cjs} +4 -4
  172. package/dist/hooks/AmplitudeOperations/index.cjs +15 -14
  173. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  174. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  175. package/dist/hooks/AmplitudeOperations/index.js +15 -14
  176. package/dist/hooks/AppDetails/index.cjs +13 -12
  177. package/dist/hooks/AppDetails/index.d.cts +9 -8
  178. package/dist/hooks/AppDetails/index.d.ts +12 -11
  179. package/dist/hooks/AppDetails/index.js +13 -12
  180. package/dist/hooks/CdnOperations/index.cjs +4 -4
  181. package/dist/hooks/CdnOperations/index.js +4 -4
  182. package/dist/hooks/ChatToggle/index.cjs +17 -16
  183. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  184. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  185. package/dist/hooks/ChatToggle/index.js +17 -16
  186. package/dist/hooks/ChatToggleAnalytics/index.cjs +17 -16
  187. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  188. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  189. package/dist/hooks/ChatToggleAnalytics/index.js +17 -16
  190. package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
  191. package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
  192. package/dist/hooks/Debounce/index.cjs +1 -1
  193. package/dist/hooks/Debounce/index.js +1 -1
  194. package/dist/hooks/ElementObserver/index.cjs +1 -1
  195. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  196. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  197. package/dist/hooks/ElementObserver/index.js +1 -1
  198. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  199. package/dist/hooks/GraphQLConfig/index.cjs +10 -9
  200. package/dist/hooks/GraphQLConfig/index.d.cts +15 -2
  201. package/dist/hooks/GraphQLConfig/index.d.ts +15 -2
  202. package/dist/hooks/GraphQLConfig/index.js +10 -9
  203. package/dist/hooks/IdentifyUser/index.cjs +20 -19
  204. package/dist/hooks/IdentifyUser/index.js +20 -19
  205. package/dist/hooks/ImageResolver/index.cjs +9 -8
  206. package/dist/hooks/ImageResolver/index.js +9 -8
  207. package/dist/hooks/Intersection/index.cjs +1 -1
  208. package/dist/hooks/Intersection/index.js +1 -1
  209. package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
  210. package/dist/hooks/LocalStorageOperations/index.js +2 -2
  211. package/dist/hooks/MessageFilter/index.cjs +7 -6
  212. package/dist/hooks/MessageFilter/index.d.cts +9 -8
  213. package/dist/hooks/MessageFilter/index.d.ts +12 -11
  214. package/dist/hooks/MessageFilter/index.js +7 -6
  215. package/dist/hooks/NewOrgConfig/index.cjs +14 -13
  216. package/dist/hooks/NewOrgConfig/index.d.cts +13 -15
  217. package/dist/hooks/NewOrgConfig/index.d.ts +16 -18
  218. package/dist/hooks/NewOrgConfig/index.js +14 -13
  219. package/dist/hooks/Search/index.cjs +35 -33
  220. package/dist/hooks/Search/index.d.cts +13 -18
  221. package/dist/hooks/Search/index.d.ts +16 -21
  222. package/dist/hooks/Search/index.js +34 -32
  223. package/dist/hooks/SearchOperations/index.cjs +18 -17
  224. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  225. package/dist/hooks/SearchOperations/index.d.ts +2 -2
  226. package/dist/hooks/SearchOperations/index.js +18 -17
  227. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  228. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  229. package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
  230. package/dist/hooks/ShopifyUrlOperations/index.d.cts +3 -3
  231. package/dist/hooks/ShopifyUrlOperations/index.d.ts +3 -3
  232. package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
  233. package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
  234. package/dist/hooks/SystemSettingsContext/index.d.cts +11 -10
  235. package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
  236. package/dist/hooks/SystemSettingsContext/index.js +5 -5
  237. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +15 -14
  238. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  239. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  240. package/dist/hooks/TrackComponentVisibleEvent/index.js +15 -14
  241. package/dist/hooks/UpdateAnalyticsProps/index.cjs +14 -13
  242. package/dist/hooks/UpdateAnalyticsProps/index.js +14 -13
  243. package/dist/hooks/utils.cjs +8 -0
  244. package/dist/hooks/utils.d.cts +13 -0
  245. package/dist/hooks/utils.d.ts +13 -0
  246. package/dist/hooks/utils.js +3 -0
  247. package/dist/{index-DuyZQOE1.d.ts → index-BN-3ctk_.d.ts} +2 -2
  248. package/dist/index-BPxqQmpF.d.ts +1 -0
  249. package/dist/{index-fKJB9EFb.d.ts → index-Bl9pjZeG.d.ts} +34 -34
  250. package/dist/{index-DNUKSg6R.d.ts → index-BoYC9XLW.d.ts} +1 -1
  251. package/dist/{index-REhT-Pls.d.cts → index-C12-NmS7.d.cts} +1 -1
  252. package/dist/{index-D8ThXrqI.d.ts → index-C6KdON7d.d.ts} +1 -1
  253. package/dist/index-CK_J3QMY.d.ts +676 -0
  254. package/dist/{index-DO0s5KNA.d.cts → index-CVa3DeXJ.d.cts} +1 -1
  255. package/dist/index-C_MIfxF0.d.cts +676 -0
  256. package/dist/{index-DBqgBV9N.d.ts → index-DOii3C6b.d.ts} +1 -1
  257. package/dist/{index-CyXULMyI.d.cts → index-Dcgz5i3Q.d.cts} +33 -33
  258. package/dist/{index-BS7-_CW4.d.ts → index-Dr_c2DDq.d.ts} +1 -1
  259. package/dist/{index-D9VegTU-.d.ts → index-DsiilEj-.d.ts} +1 -1
  260. package/dist/index-RcVcRKH7.d.cts +1 -0
  261. package/dist/{index-D46Rd0io.d.cts → index-hdbCEjYy.d.cts} +1 -1
  262. package/dist/interceptors/index.cjs +2 -2
  263. package/dist/interceptors/index.d.cts +10 -9
  264. package/dist/interceptors/index.d.ts +13 -12
  265. package/dist/interceptors/index.js +2 -2
  266. package/dist/interceptors/types.cjs +1 -1
  267. package/dist/interceptors/types.d.cts +9 -8
  268. package/dist/interceptors/types.d.ts +12 -11
  269. package/dist/interceptors/types.js +1 -1
  270. package/dist/{localStorageContext-6OrGDFid.js → localStorageContext-Dwgto93_.js} +2 -2
  271. package/dist/{localStorageContext-Bld0OWmG.cjs → localStorageContext-cnMYDllE.cjs} +2 -2
  272. package/dist/{logger-CSL2jqI9.cjs → logger-Cp7J4YJT.cjs} +1 -1
  273. package/dist/{logger-D5MFf3nW.js → logger-oAgZx2-m.js} +1 -1
  274. package/dist/{models-ZpQcRZQK.cjs → models-B1P-dSCW.cjs} +25 -24
  275. package/dist/{models-Dn8Emdzc.js → models-CgvSM2fW.js} +4 -3
  276. package/dist/{newOrgConfigAtom-DkSi45_Q.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
  277. package/dist/{newOrgConfigAtom--tewb_G0.js → newOrgConfigAtom-bn1lnljf.js} +1 -1
  278. package/dist/newOrgConfigContext-BKb9qGfc.d.cts +16 -0
  279. package/dist/newOrgConfigContext-BX6cyQRB.cjs +68 -0
  280. package/dist/newOrgConfigContext-D9PpVqyW.d.ts +16 -0
  281. package/dist/newOrgConfigContext-UshqFMAV.js +53 -0
  282. package/dist/{nodeSelector-XsUa5vNH.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
  283. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
  284. package/dist/{org-ClUxpHPZ.cjs → org-CIhjzxWr.cjs} +1 -1
  285. package/dist/{org-B2uRkPt3.js → org-CeWXnpwF.js} +1 -1
  286. package/dist/{orgAnalyticsConfig-DOceTdNp.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
  287. package/dist/{orgAnalyticsConfig-CuWXijsr.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
  288. package/dist/{search-DsQm_pAi.cjs → search-76xcuxjY.cjs} +5 -5
  289. package/dist/{search-Bn4x-3TG.js → search-B6xaOds7.js} +5 -5
  290. package/dist/{search-BIomqYy6.d.ts → search-BLShhjvR.d.ts} +2 -2
  291. package/dist/{search-filter-types-Byd0lEUa.d.cts → search-filter-types-BBIjvwJV.d.cts} +1 -1
  292. package/dist/{search-filter-types-B5xcaEit.d.ts → search-filter-types-BlmWOnlA.d.ts} +1 -1
  293. package/dist/{search-B_Hg-Es2.d.cts → search-y-ioX5Mz.d.cts} +1 -1
  294. package/dist/{searchContext-fQDGSvUF.js → searchContext-5qTU8CbH.js} +7 -7
  295. package/dist/{searchContext-Cn-pCoDy.cjs → searchContext-DmXo2rpU.cjs} +7 -7
  296. package/dist/{searchServiceAdapter-DrjFCiw8.cjs → searchServiceAdapter-DEv1tTn0.cjs} +1 -1
  297. package/dist/{searchServiceAdapter-BSPZOg1r.js → searchServiceAdapter-WyCU55NV.js} +1 -1
  298. package/dist/{sessionStorageContext-CXE7iHtP.cjs → sessionStorageContext-B-UFXyJR.cjs} +2 -2
  299. package/dist/{sessionStorageContext-C5MUl2zf.js → sessionStorageContext-DnuKi3Gk.js} +2 -2
  300. package/dist/{shopifyUrlContext-7ppKx1jJ.cjs → shopifyUrlContext-Lm-Xcut2.cjs} +1 -1
  301. package/dist/{shopifyUrlContext-BSYWsoX9.js → shopifyUrlContext-jLW63VLY.js} +1 -1
  302. package/dist/{spiffyWidgets-DxGuuuCG.d.cts → spiffyWidgets-BuS00VaQ.d.cts} +1 -1
  303. package/dist/{spiffyWidgets-CdxRcXhW.d.ts → spiffyWidgets-GILaqHv6.d.ts} +1 -1
  304. package/dist/{systemSettingsContext-Cjyo2o3N.js → systemSettingsContext--LcXOVJz.js} +2 -2
  305. package/dist/{systemSettingsContext-BdAe_3Ll.cjs → systemSettingsContext-CafaP6Zh.cjs} +2 -2
  306. package/dist/{test-types-ZuRAYwox.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
  307. package/dist/{test-types-DQB1JqOf.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
  308. package/dist/types/index.d.cts +2 -2
  309. package/dist/types/index.d.ts +2 -2
  310. package/dist/{types-YvACLe2e.d.ts → types-6siNDmGv.d.ts} +2 -2
  311. package/dist/{types-BCz-hOvv.d.ts → types-BN2z0HcL.d.ts} +1 -1
  312. package/dist/{types-Eip78dWv.d.cts → types-CKMMb_gX.d.cts} +1 -1
  313. package/dist/{types-DIk0FLwd.js → types-CS0Hrzja.js} +1 -1
  314. package/dist/{types-DNLkuGWZ.cjs → types-CxObxLKs.cjs} +1 -1
  315. package/dist/{types-DzwBmZHy.d.cts → types-D4aa7_7x.d.cts} +1 -1
  316. package/dist/types.d.cts +3 -3
  317. package/dist/types.d.ts +3 -3
  318. package/dist/{unsupportedProductExceptions-Dak4AD-t.cjs → unsupportedProductExceptions-CKiri_vO.cjs} +1 -1
  319. package/dist/{unsupportedProductExceptions--t7AQFou.js → unsupportedProductExceptions-ClxlJ6cU.js} +1 -1
  320. package/dist/{useAmplitudeOperations-Cco_B3A5.cjs → useAmplitudeOperations-aGOqxc4V.cjs} +2 -2
  321. package/dist/{useAmplitudeOperations-C6Osqkso.js → useAmplitudeOperations-wQnkMaDm.js} +2 -2
  322. package/dist/{useAppDetails-CGqtN6sJ.cjs → useAppDetails-9WXEc3mg.cjs} +4 -4
  323. package/dist/{useAppDetails-DwX2Rhed.js → useAppDetails-mNC2PBqH.js} +4 -4
  324. package/dist/{useDebounce-BJqnCBcl.cjs → useDebounce-BaIp-A1W.cjs} +1 -1
  325. package/dist/{useDebounce-Ce31ph7m.js → useDebounce-CxPj9WmE.js} +1 -1
  326. package/dist/useGraphQLConfig-CTsRsKd2.js +63 -0
  327. package/dist/useGraphQLConfig-D7naV2RD.cjs +76 -0
  328. package/dist/{useIntersection-Czeo04jt.js → useIntersection-B4J9UhaG.js} +1 -1
  329. package/dist/{useIntersection-DnZNLcnu.cjs → useIntersection-DKWc5MY6.cjs} +1 -1
  330. package/dist/{useMessageInterceptor-C9p9No1n.cjs → useMessageInterceptor-CstX10ih.cjs} +1 -1
  331. package/dist/{useMessageInterceptor-tntd2rvB.js → useMessageInterceptor-D5oAekXn.js} +1 -1
  332. package/dist/{userIdentityContext-C1HzZFb2.cjs → userIdentityContext-BA6EN-pz.cjs} +6 -6
  333. package/dist/{userIdentityContext-DBXoLrFu.d.cts → userIdentityContext-D2oFVFzo.d.cts} +1 -1
  334. package/dist/{userIdentityContext-CDfosvOO.js → userIdentityContext-FTwTL0WF.js} +5 -5
  335. package/dist/{userIdentityContext-W1OWF3cG.d.ts → userIdentityContext-wYRpgkaJ.d.ts} +1 -1
  336. package/dist/utils-2SWrJ12w.cjs +29 -0
  337. package/dist/utils-ARmpTh1O.js +27 -0
  338. package/dist/utils-B1xLx9S8.d.ts +15 -0
  339. package/dist/utils-B3x_9JTY.d.cts +15 -0
  340. package/dist/utils-BSYichA7.d.cts +22 -0
  341. package/dist/{utils-C7S9YiFp.js → utils-Bcz5kAgP.js} +40 -2
  342. package/dist/{utils-CF13DfA1.js → utils-BgMcvG6l.js} +4 -4
  343. package/dist/{utils-BA5HXmkL.cjs → utils-CMqFfqZx.cjs} +57 -1
  344. package/dist/utils-Cavu4XiM.cjs +33 -0
  345. package/dist/utils-CqBxIpEV.js +23 -0
  346. package/dist/{utils-BTDw2aMx.cjs → utils-D_aOvxMg.cjs} +4 -4
  347. package/dist/utils-FU_r-pTj.d.ts +22 -0
  348. package/package.json +13 -1
  349. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +6 -13
  350. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +5 -5
  351. package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +2 -2
  352. package/dist/NewOrgConfig-CRyIfb_l.js +0 -15
  353. package/dist/api-DSFlctlc.cjs +0 -269
  354. package/dist/api-JTNjuOfc.js +0 -190
  355. package/dist/chatSearch-B5jMnCYX.js +0 -315
  356. package/dist/chatSearch-DWMiyWN0.cjs +0 -444
  357. package/dist/index-BCLaqnc2.d.cts +0 -689
  358. package/dist/index-Bs0QtkSu.d.ts +0 -689
  359. package/dist/index-CKeS9dud.d.ts +0 -28
  360. package/dist/index-Cz10TYQA.d.cts +0 -28
  361. package/dist/newOrgConfigContext-B3aeblfE.cjs +0 -68
  362. package/dist/newOrgConfigContext-B5mzHKTG.js +0 -53
  363. package/dist/useGraphQLConfig-ByOZb3oZ.js +0 -63
  364. package/dist/useGraphQLConfig-DItL4BgM.cjs +0 -76
  365. /package/dist/{AmplitudeOperations-CgIVPUlr.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
  366. /package/dist/{AmplitudeOperations-YpyaR7Mp.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
  367. /package/dist/{atomStore-C2OI76yN.js → atomStore-BS6qtYZF.js} +0 -0
  368. /package/dist/{atomStore-DWmT1six.cjs → atomStore-BjRyLFEx.cjs} +0 -0
  369. /package/dist/{types-DQoXDiso.js → types-DtTnp0o0.js} +0 -0
  370. /package/dist/{types-o3zWarRp.cjs → types-a8gm_IaQ.cjs} +0 -0
  371. /package/dist/{utilityTypes-CWJZb9BZ.js → utilityTypes-DynzxjK3.js} +0 -0
  372. /package/dist/{utilityTypes-YGiMSyV7.cjs → utilityTypes-xb8SjKSV.cjs} +0 -0
  373. /package/dist/{variantInfo-DRFLcGc7.cjs → variantInfo-B7IwRpCg.cjs} +0 -0
  374. /package/dist/{variantInfo-58JLeDJb.js → variantInfo-BtOYUGWa.js} +0 -0
@@ -1,689 +0,0 @@
1
- import { GetMerchantColorsQueryData } from "./index-Bmub8e38.cjs";
2
- import { AcceptableFormFieldType, ApiFormResponseAttributes, ApiPageResponseAttributes, OrderResponseAttributes as OrderResponseAttributes$1, PageResponseAttributes, ProductResponseAttributes, Response as Response$1, ReviewResponseAttributes, SearchProductFilterAttributes, SearchProductResponseAttributes, SearchResponseAttributes, TextResponseAttributes } from "./index-CiWEYzXl.cjs";
3
- import { CamelCasedPropertiesDeep, NonRecursiveType, UnknownArray, UpperCaseCharacters, WordSeparators } from "./index-CESxqFso.cjs";
4
- import { ColorMapping, FrontendConfig, OrgConfig$1 as OrgConfig, OrganizationConfig as OrganizationConfig$1, PageVariantConfig, WidgetConfig, WidgetMountingConfig } from "./frontendConfig-wg41mBok.cjs";
5
- import { VariantInfo } from "./index-D46Rd0io.cjs";
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/utils.d.ts
377
- /**
378
- * Checks if an object has a property of a specific type
379
- *
380
- * @param obj - The object to check
381
- * @param prop - The property name to check
382
- * @param type - The expected type of the property
383
- * @param isOptional - Whether the property is optional (defaults to false)
384
- *
385
- * @returns boolean indicating if the object has the property of the specified type
386
- */
387
- declare const hasPropertyOfType: <T extends object>(obj: unknown, prop: keyof T, type: "string" | "number" | "boolean" | "object" | "array", isOptional?: boolean) => obj is T;
388
- //#endregion
389
- //#region src/application/models/guards/api/isApiFormResponse.d.ts
390
- /**
391
- * Type guard to check if the provided data has the all of the properties (with the correct types) of
392
- * a FormResponseAttribute
393
- *
394
- * @param data - The data to check
395
- *
396
- * @returns true if the data has the correct properties, false otherwise
397
- */
398
- declare const isApiFormResponseAttributes: (data: unknown) => data is ApiFormResponseAttributes;
399
- //#endregion
400
- //#region src/application/models/guards/api/isApiFormSubmittedResponseAttributes.d.ts
401
- declare const isApiFormSubmittedResponseAttributes: (data: unknown) => data is FormSubmittedAttributes;
402
- //#endregion
403
- //#region src/application/models/guards/api/isApiOrderResponseAttributes.d.ts
404
- interface ApiOrderItemInfo extends Omit<OrderItemInfo, 'delivered_at' | 'estimated_delivery_at' | 'in_transit_at'> {
405
- delivered_at?: string;
406
- estimated_delivery_at?: string;
407
- in_transit_at?: string;
408
- }
409
- interface ApiOrderResponseAttributes extends Omit<OrderResponseAttributes, 'created_at' | 'latest_event_date' | 'line_items'> {
410
- created_at: string;
411
- latest_event_date: string;
412
- line_items: ApiOrderItemInfo[];
413
- }
414
- declare const isApiOrderResponseAttributes: (data: unknown) => data is ApiOrderResponseAttributes;
415
- //#endregion
416
- //#region src/application/models/guards/api/isApiOrganizationConfig.d.ts
417
- interface ApiOrgAnalyticsConfigAmplitude {
418
- session_replay_enabled: boolean;
419
- session_replay_sample_rate: number;
420
- tracking_enabled: boolean;
421
- }
422
- interface ApiOrgAnalyticsConfigCustomerService {
423
- provider: string;
424
- }
425
- interface ApiOrgAnalyticsConfigGoogleAnalytics {
426
- measurement_id: string;
427
- }
428
- interface ApiOrgAnalyticsConfig {
429
- amplitude?: ApiOrgAnalyticsConfigAmplitude;
430
- customer_service?: ApiOrgAnalyticsConfigCustomerService;
431
- google_analytics?: ApiOrgAnalyticsConfigGoogleAnalytics;
432
- }
433
- interface ApiOrganizationConfig extends OrganizationConfig {
434
- config: ApiOrgAnalyticsConfig;
435
- }
436
- /**
437
- *
438
- * @param data
439
- * @returns
440
- */
441
- declare const isApiOrganizationConfig: (data: unknown) => data is ApiOrganizationConfig;
442
- //#endregion
443
- //#region src/application/models/guards/api/isApiOrgConfigResults.d.ts
444
- interface ApiOrgConfigResults {
445
- configs: ApiOrganizationConfig[];
446
- experiments: StatsigExperiment[];
447
- gates: StatsigFeatureGate[];
448
- org: OrganizationSettings;
449
- }
450
- /**
451
- *
452
- * @param data
453
- * @returns
454
- */
455
- declare const isApiOrgConfigResults: (data: unknown) => data is Required<ApiOrgConfigResults>;
456
- //#endregion
457
- //#region src/application/models/guards/api/isApiPageResponseAttributes.d.ts
458
- declare const isApiPageResponseAttributes: (obj: unknown) => obj is ApiPageResponseAttributes;
459
- //#endregion
460
- //#region src/application/models/guards/api/isApiPLPEventAttributes.d.ts
461
- declare const isApiPLPIdAttribute: (data: unknown) => data is PLPIdAttributes;
462
- declare const isApiPLPEventAttributes: (data: unknown) => data is PLPAttributes;
463
- //#endregion
464
- //#region src/application/models/guards/api/isApiProductSearchFilterAttributes.d.ts
465
- declare const isApiProductSearchFilterResponseAttributes: (attributes: unknown) => attributes is ProductSearchFilterResponseAttributes;
466
- //#endregion
467
- //#region src/application/models/guards/graphQL/isGraphQLColorsConfig.d.ts
468
- declare const isGraphQLColorsConfig: (data: unknown) => data is GetMerchantColorsQueryData;
469
- //#endregion
470
- //#region src/application/models/utilityTypes/delimiterCase.d.ts
471
- type UpperCaseToLowerCase<T extends string> = T extends Uppercase<T> ? Lowercase<T> : T;
472
- 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];
473
- /**
474
- * 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.
475
- *
476
- * @category Template literal
477
- */
478
- type SplitIncludingDelimiters<Source extends string, Delimiter extends string> = SplitIncludingDelimiters_<UpperCaseToLowerCase<Source>, Delimiter>;
479
- /**
480
- *Format a specific part of the splitted string literal that `StringArrayToDelimiterCase<>` fuses together, ensuring desired casing.
481
- *
482
- *@see StringArrayToDelimiterCase
483
- */
484
- 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;
485
- /**
486
- * Takes the result of a splitted string literal and recursively concatenates it together into the desired casing.
487
- *
488
- * It receives `UsedWordSeparators` and `UsedUpperCaseCharacters` as input to ensure it's fully encapsulated.
489
- *
490
- * @see SplitIncludingDelimiters
491
- */
492
- 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 : '';
493
- /**
494
- * Convert a string literal to a custom string delimiter casing.
495
- *
496
- * This can be useful when, for example, converting a camel-cased object property to an oddly cased one.
497
- *
498
- * @see KebabCase
499
- * @see SnakeCase
500
- *
501
- * @example
502
- * ```
503
- * import type {DelimiterCase} from 'type-fest';
504
- *
505
- * // Simple
506
- *
507
- * const someVariable: DelimiterCase<'fooBar', '#'> = 'foo#bar';
508
- *
509
- * // Advanced
510
- *
511
- * type OddlyCasedProperties<T> = {
512
- * [K in keyof T as DelimiterCase<K, '#'>]: T[K]
513
- * };
514
- *
515
- * interface SomeOptions {
516
- * dryRun: boolean;
517
- * includeFile: string;
518
- * foo: number;
519
- * }
520
- *
521
- * const rawCliOptions: OddlyCasedProperties<SomeOptions> = {
522
- * 'dry#run': true,
523
- * 'include#file': 'bar.js',
524
- * foo: 123
525
- * };
526
- * ```
527
- *
528
- * @category Change case
529
- * @category Template literal
530
- */
531
- type DelimiterCase<Value, Delimiter extends string> = string extends Value ? Value : Value extends string ? StringArrayToDelimiterCase<SplitIncludingDelimiters<Value, WordSeparators | UpperCaseCharacters>, true, WordSeparators, UpperCaseCharacters, Delimiter> : Value;
532
- //#endregion
533
- //#region src/application/models/utilityTypes/delimiterCasedPropertiesDeep.d.ts
534
- /**
535
- * Convert object properties to delimiter case recursively.
536
- *
537
- * This can be useful when, for example, converting some API types from a different style.
538
- *
539
- * @see DelimiterCase
540
- * @see DelimiterCasedProperties
541
- *
542
- * @example
543
- * ```
544
- * import type {DelimiterCasedPropertiesDeep} from 'type-fest';
545
- *
546
- * interface User {
547
- * userId: number;
548
- * userName: string;
549
- * }
550
- *
551
- * interface UserWithFriends {
552
- * userInfo: User;
553
- * userFriends: User[];
554
- * }
555
- *
556
- * const result: DelimiterCasedPropertiesDeep<UserWithFriends, '-'> = {
557
- * 'user-info': {
558
- * 'user-id': 1,
559
- * 'user-name': 'Tom',
560
- * },
561
- * 'user-friends': [
562
- * {
563
- * 'user-id': 2,
564
- * 'user-name': 'Jerry',
565
- * },
566
- * {
567
- * 'user-id': 3,
568
- * 'user-name': 'Spike',
569
- * },
570
- * ],
571
- * };
572
- * ```
573
- *
574
- * @category Change case
575
- * @category Template literal
576
- * @category Object
577
- */
578
- 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> };
579
- 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;
580
- //#endregion
581
- //#region src/application/models/utilityTypes/snakeCasedPropertiesDeep.d.ts
582
- /**
583
- * Convert object properties to snake case recursively.
584
- *
585
- * This can be useful when, for example, converting some API types from a different style.
586
- *
587
- * @see SnakeCase
588
- * @see SnakeCasedProperties
589
- *
590
- * @example
591
- * ```
592
- * import type {SnakeCasedPropertiesDeep} from 'type-fest';
593
- *
594
- * interface User {
595
- * userId: number;
596
- * userName: string;
597
- * }
598
- *
599
- * interface UserWithFriends {
600
- * userInfo: User;
601
- * userFriends: User[];
602
- * }
603
- *
604
- * const result: SnakeCasedPropertiesDeep<UserWithFriends> = {
605
- * user_info: {
606
- * user_id: 1,
607
- * user_name: 'Tom',
608
- * },
609
- * user_friends: [
610
- * {
611
- * user_id: 2,
612
- * user_name: 'Jerry',
613
- * },
614
- * {
615
- * user_id: 3,
616
- * user_name: 'Spike',
617
- * },
618
- * ],
619
- * };
620
- * ```
621
- *
622
- * @category Change case
623
- * @category Template literal
624
- * @category Object
625
- */
626
- type SnakeCasedPropertiesDeep<Value> = DelimiterCasedPropertiesDeep<Value, '_'>;
627
- //#endregion
628
- //#region src/application/models/utils/snakeToCamelTransformer.d.ts
629
- /**
630
- * Generic utility to transform snake_case object keys to camelCase at runtime.
631
- * This is the runtime equivalent of the CamelCasedPropertiesDeep type utility.
632
- */
633
- /**
634
- * Recursively transforms all object keys from snake_case to camelCase
635
- */
636
- declare const transformSnakeToCamel: (obj: unknown) => unknown;
637
- /**
638
- * Recursively transforms all object keys from camelCase to snake_case
639
- */
640
- declare const transformCamelToSnake: (obj: unknown) => unknown;
641
- //#endregion
642
- //#region src/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.d.ts
643
- /**
644
- * Converts a string to a FulfillmentDisplayStatus enum value.
645
- *
646
- * @param status - The string to convert.
647
- *
648
- * @returns The FulfillmentDisplayStatus enum value or undefined if the string
649
- * does not map to a valid enum
650
- */
651
- declare const stringToFulfillmentDisplayStatusEnumValue: (status: string) => FulfillmentDisplayStatus | undefined;
652
- //#endregion
653
- //#region src/application/models/validators/validateGraphQLColorsConfig.d.ts
654
- declare const validateGraphQLColorsConfig: (data: unknown) => ColorMapping | undefined;
655
- //#endregion
656
- //#region src/application/models/validators/validateGraphQLFrontendConfig.d.ts
657
- declare const validateAndTransformPageVariants: (config: Record<string, unknown>) => PageVariantConfig;
658
- declare const validateAndTransformMountingConfig: (config: Record<string, unknown>, configKey: string) => WidgetMountingConfig;
659
- declare const validateAndTransformWidgetConfig: (config: Record<string, unknown>, configKey: string) => WidgetConfig;
660
- declare const validateGraphQLFrontendConfig: (data: unknown) => FrontendConfig | undefined;
661
- //#endregion
662
- //#region src/application/models/validators/validateGraphQLOrgId.d.ts
663
- declare const validateGraphQLOrgId: (data: unknown) => string | undefined;
664
- //#endregion
665
- //#region src/application/models/validators/validateMobilePLPChatPlacementParameter.d.ts
666
- declare const validateMobilePLPChatPlacementParameter: (value: unknown) => MobilePLPChatPlacementParameter | undefined;
667
- //#endregion
668
- //#region src/application/models/validators/validateOrganizationConfig.d.ts
669
- declare const validateOrganizationConfig: (data: unknown) => OrganizationConfig$1 | undefined;
670
- //#endregion
671
- //#region src/application/models/validators/validateOrgConfigResults.d.ts
672
- /**
673
- *
674
- * @param data
675
- * @returns
676
- */
677
- declare const validateOrgConfigResults: (data: unknown) => OrgConfig | undefined;
678
- //#endregion
679
- //#region src/application/models/validators/validateResponse.d.ts
680
- declare const validateResponse: (data: unknown) => Response$1 | undefined;
681
- //#endregion
682
- //#region src/application/models/validators/validateSuggestion.d.ts
683
- declare const validateSuggestion: (data: unknown) => Suggestion$1 | undefined;
684
- //#endregion
685
- //#region src/application/models/validators/validateUserEvent.d.ts
686
- declare const validateUserEvent: (data: unknown) => UserEvent$1 | undefined;
687
- //#endregion
688
- 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, hasPropertyOfType, 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 };
689
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtQkNMYXFuYzIuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jYWNoZWRWYWx1ZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jbGllbnREZXRhaWxzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbnZlcnNhdGlvbmFsU2VhcmNoSWRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2RhdGFMYXllci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ldmVudHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ29vZ2xlQW5hbHl0aWNzRXZlbnRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL21lc3NhZ2UuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9vcmdzRW51bS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9wcm9kdWN0RXhwZXJpbWVudC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9zcGFueFRha2VBUXVpekN0YVBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvY29udGV4dC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvZ2VuZXJhdGlvblBhcmFtcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvdXNlckV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9uZXh0TWVzc2FnZVJlcXVlc3QuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3N1Z2dlc3Rpb24uZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3N1cHBvcnRlZEV2ZW50UmVxdWVzdC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc0Jhc2VFY29tbWVyY2VFdmVudC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNHQTRFY29tbWVyY2VFdmVudC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNMZWdhY3lVQUVjb21tZXJjZUV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc01vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzVmFyaWFudEluZm8uZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL3V0aWxzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlGb3JtUmVzcG9uc2UuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaUZvcm1TdWJtaXR0ZWRSZXNwb25zZUF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaU9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlPcmdhbml6YXRpb25Db25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaU9yZ0NvbmZpZ1Jlc3VsdHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVBMUEV2ZW50QXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUHJvZHVjdFNlYXJjaEZpbHRlckF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2dyYXBoUUwvaXNHcmFwaFFMQ29sb3JzQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9kZWxpbWl0ZXJDYXNlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9kZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9zbmFrZUNhc2VkUHJvcGVydGllc0RlZXAuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbHMvc25ha2VUb0NhbWVsVHJhbnNmb3JtZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbHMvc3RyaW5nVG9GdWxmaWxsbWVudERpc3BsYXlTdGF0dXNFbnVtVmFsdWUuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZUdyYXBoUUxDb2xvcnNDb25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZUdyYXBoUUxGcm9udGVuZENvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlR3JhcGhRTE9yZ0lkLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVPcmdhbml6YXRpb25Db25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVJlc3BvbnNlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVTdWdnZXN0aW9uLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVVc2VyRXZlbnQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQ2FjaGVkVmFsdWUge1xuICAgIHZhbHVlOiB1bmtub3duO1xuICAgIGV4cGlyeTogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgeyBDYWNoZWRWYWx1ZSB9O1xuIiwiaW50ZXJmYWNlIENsaWVudERldGFpbHMge1xuICAgIG9zPzogc3RyaW5nO1xuICAgIG9zVmVyc2lvbj86IHN0cmluZztcbiAgICBkZXZpY2VCcmFuZD86IHN0cmluZztcbiAgICBkZXZpY2VNYW51ZmFjdHVyZXI/OiBzdHJpbmc7XG4gICAgZGV2aWNlTW9kZWw/OiBzdHJpbmc7XG4gICAgY2Fycmllcj86IHN0cmluZztcbiAgICBjb3VudHJ5Pzogc3RyaW5nO1xuICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICBicm93c2VyPzogc3RyaW5nO1xuICAgIGJyb3dzZXJWZXJzaW9uPzogc3RyaW5nO1xuICAgIGJyb3dzZXJJcEFkZHJlc3M/OiBzdHJpbmc7XG4gICAgdXNlckFnZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgeyBDbGllbnREZXRhaWxzLCB9O1xuIiwiZXhwb3J0IHR5cGUgQ29udmVyc2F0aW9uYWxTZWFyY2hJZHMgPSB7XG4gICAgY29udmVyc2F0aW9uYWxTZWFyY2hFbnRyeXBvaW50SWQ/OiBzdHJpbmc7XG4gICAgY29udmVyc2F0aW9uYWxTZWFyY2hJbnB1dElkPzogc3RyaW5nO1xuICAgIGNvbnZlcnNhdGlvbmFsU2VhcmNoTW9kYWxJZD86IHN0cmluZztcbn07XG4iLCIvKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciBjb21tb24gcHJvcGVydGllcyBhY3Jvc3MgYWxsIGVjb21tZXJjZSBldmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlRWNvbW1lcmNlRXZlbnQge1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgZWNvbW1lcmNlOiBVQUVjb21tZXJjZURhdGEgfCBHQTRFY29tbWVyY2VEYXRhO1xufVxuLyoqXG4gKiBMZWdhY3kgdW5pdmVyc2FsIGFuYWx5dGljcyBkYXRhLiBUaGUgYWN0dWFsIHBheWxvYWQgY29udGFpbnMgbW9yZSBmaWVsZHMsIGJ1dCB3ZVxuICogb25seSBuZWVkIHRoZSBvbmVzIGxpc3RlZCBiZWxvdy5cbiAqL1xuaW50ZXJmYWNlIFVBRWNvbW1lcmNlRGF0YSB7XG4gICAgYWRkOiB7XG4gICAgICAgIHByb2R1Y3RzOiB7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgICAgICAgICAgcHJpY2U6IHN0cmluZztcbiAgICAgICAgICAgIHF1YW50aXR5OiBzdHJpbmc7XG4gICAgICAgIH1bXTtcbiAgICAgICAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gICAgfTtcbn1cbi8qKlxuICogR29vZ2xlIEFuYWx5dGljcyA0IGRhdGEuIFRoZSBhY3R1YWwgcGF5bG9hZCBjb250YWlucyBtb3JlIGZpZWxkcywgYnV0IHdlXG4gKiBvbmx5IG5lZWQgdGhlIG9uZXMgbGlzdGVkIGJlbG93LlxuICovXG5pbnRlcmZhY2UgR0E0RWNvbW1lcmNlRGF0YSB7XG4gICAgY3VycmVuY3k6IHN0cmluZztcbiAgICBpdGVtczoge1xuICAgICAgICBpdGVtX25hbWU6IHN0cmluZztcbiAgICAgICAgaXRlbV9jYXRlZ29yeTogc3RyaW5nO1xuICAgICAgICBwcmljZTogbnVtYmVyO1xuICAgICAgICBxdWFudGl0eTogbnVtYmVyO1xuICAgIH1bXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVUFFY29tbWVyY2VFdmVudCBleHRlbmRzIEJhc2VFY29tbWVyY2VFdmVudCB7XG4gICAgZWNvbW1lcmNlOiBVQUVjb21tZXJjZURhdGE7XG59XG5leHBvcnQgaW50ZXJmYWNlIEdBNEVjb21tZXJjZUV2ZW50IGV4dGVuZHMgQmFzZUVjb21tZXJjZUV2ZW50IHtcbiAgICBlY29tbWVyY2U6IEdBNEVjb21tZXJjZURhdGE7XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeUV2ZW50TmFtZSB7XG4gICAgV2lkZ2V0T3BlbiA9IFwic3BpZmZ5OndpZGdldG9wZW5cIixcbiAgICBXaWRnZXRDbG9zZSA9IFwic3BpZmZ5OndpZGdldGNsb3NlXCJcbn1cbiIsImRlY2xhcmUgZW51bSBHb29nbGVBbmFseXRpY3NFdmVudHMge1xuICAgIEFERF9UT19DQVJUX3YxID0gXCJhZGRfdG9fY2FydFwiLFxuICAgIEFERF9UT19DQVJUX3YyID0gXCJhZGRUb0NhcnRcIlxufVxuZXhwb3J0IHsgR29vZ2xlQW5hbHl0aWNzRXZlbnRzIH07XG4iLCJpbXBvcnQgeyBDdXN0U2VydmljZUF0dGFjaG1lbnQsIEZvcm1UeXBlIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzLCBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzLCBSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMsIFBhZ2VSZXNwb25zZUF0dHJpYnV0ZXMsIFRleHRSZXNwb25zZUF0dHJpYnV0ZXMsIFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcywgU2VhcmNoUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcywgQWNjZXB0YWJsZUZvcm1GaWVsZFR5cGUsIFNlYXJjaFByb2R1Y3RGaWx0ZXJBdHRyaWJ1dGVzIH0gZnJvbSAnLi9hcGkvcmVzcG9uc2UnO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBNZXNzYWdlUm9sZSB7XG4gICAgVXNlciA9IFwidXNlclwiLFxuICAgIEFzc2lzdGFudCA9IFwiYXNzaXN0YW50XCJcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gTWVzc2FnZVR5cGUge1xuICAgIFRleHQgPSBcInRleHRcIixcbiAgICBTdWdnZXN0aW9uQ2xpY2tlZCA9IFwic3VnZ2VzdGlvbl9jbGlja2VkXCIsXG4gICAgUHJvZHVjdCA9IFwicHJvZHVjdFwiLFxuICAgIFByb2R1Y3RTZWFyY2ggPSBcInByb2R1Y3Rfc2VhcmNoXCIsXG4gICAgUmV2aWV3ID0gXCJyZXZpZXdcIixcbiAgICBRdWVyeVR5cGVkID0gXCJxdWVyeV90eXBlZFwiLFxuICAgIFNlcGFyYXRvciA9IFwic2VwYXJhdG9yXCIsXG4gICAgUGFnZSA9IFwicGFnZVwiLFxuICAgIFNlYXJjaCA9IFwic2VhcmNoXCIsXG4gICAgQXR0YWNobWVudCA9IFwiYXR0YWNobWVudFwiLFxuICAgIENYQWdlbnRSZXNwb25zZSA9IFwiY3hfYWdlbnRfcmVzcG9uc2VcIixcbiAgICBGb3JtID0gXCJmb3JtXCIsXG4gICAgT3JkZXIgPSBcIm9yZGVyXCIsXG4gICAgUHJvZHVjdFNlYXJjaEZpbHRlciA9IFwicHJvZHVjdF9zZWFyY2hfZmlsdGVyXCJcbn1cbmV4cG9ydCB0eXBlIE1lc3NhZ2UgPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICByb2xlOiBNZXNzYWdlUm9sZTtcbiAgICBjcmVhdGVkQXQ6IHN0cmluZztcbn0gJiAoVGV4dE1lc3NhZ2VNZXRhZGF0YSB8IFF1ZXJ5VHlwZWRNZXRhZGF0YSB8IFN1Z2dlc3Rpb25NZXNzYWdlTWV0YWRhdGEgfCBQcm9kdWN0TWVzc2FnZU1ldGFkYXRhIHwgUHJvZHVjdFNlYXJjaE1lc3NhZ2VNZXRhZGF0YSB8IFJldmlld01lc3NhZ2VNZXRhZGF0YSB8IFNlcGFyYXRvck1lc3NhZ2VNZXRhZGF0YSB8IFBhZ2VNZXNzYWdlTWV0YWRhdGEgfCBTZWFyY2hNZXNzYWdlTWV0YWRhdGEgfCBBdHRhY2htZW50TWV0YWRhdGEgfCBDWEFnZW50UmVzcG9uc2VNZXRhZGF0YSB8IEZvcm1NZXNzYWdlTWV0YWRhdGEgfCBPcmRlck1lc3NhZ2VNZXRhZGF0YSB8IFByb2R1Y3RTZWFyY2hGaWx0ZXJNZXRhZGF0YSk7XG50eXBlIEF0dGFjaG1lbnRNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5BdHRhY2htZW50O1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICAgIGF0dGFjaG1lbnQ6IEN1c3RTZXJ2aWNlQXR0YWNobWVudFtdO1xuICAgIH07XG59O1xudHlwZSBDWEFnZW50UmVzcG9uc2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5DWEFnZW50UmVzcG9uc2U7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICBhZ2VudE5hbWU6IHN0cmluZztcbiAgICB9O1xufTtcbnR5cGUgVGV4dE1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5UZXh0O1xuICAgIG1ldGFkYXRhOiBUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBRdWVyeVR5cGVkTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUXVlcnlUeXBlZDtcbiAgICBtZXRhZGF0YTogVGV4dFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgU3VnZ2VzdGlvbk1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TdWdnZXN0aW9uQ2xpY2tlZDtcbiAgICBtZXRhZGF0YToge1xuICAgICAgICBzdWdnZXN0aW9uSWQ6IHN0cmluZztcbiAgICAgICAgc3VnZ2VzdGlvbkNvbnRlbnQ6IHN0cmluZztcbiAgICB9O1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3RNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUHJvZHVjdDtcbiAgICBtZXRhZGF0YTogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3RTZWFyY2hNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaDtcbiAgICBtZXRhZGF0YTogU2VhcmNoUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgUmV2aWV3TWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlJldmlldztcbiAgICBtZXRhZGF0YTogUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBTZXBhcmF0b3JNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU2VwYXJhdG9yO1xufTtcbnR5cGUgUGFnZU1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5QYWdlO1xuICAgIG1ldGFkYXRhOiBQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBTZWFyY2hNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU2VhcmNoO1xuICAgIG1ldGFkYXRhOiBTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFByb2R1Y3RTZWFyY2hGaWx0ZXJNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoRmlsdGVyO1xuICAgIG1ldGFkYXRhOiBTZWFyY2hQcm9kdWN0RmlsdGVyQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbmV4cG9ydCB0eXBlIEZvcm1GaWVsZCA9IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHR5cGU6IEFjY2VwdGFibGVGb3JtRmllbGRUeXBlO1xuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIGZvcm1hdD86ICdlbWFpbCc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG59O1xudHlwZSBGb3JtTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLkZvcm07XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgZm9ybVR5cGU/OiBGb3JtVHlwZTtcbiAgICAgICAgZmllbGRzOiBGb3JtRmllbGRbXTtcbiAgICB9O1xufTtcbnR5cGUgT3JkZXJNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuT3JkZXI7XG4gICAgbWV0YWRhdGE6IE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGludGVyZmFjZSBNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHtcbiAgICByb3dJbmRleDogbnVtYmVyO1xufVxuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgT3JnU2hvcnROYW1lOiB7XG4gICAgcmVhZG9ubHkgQ290ZXJpZTogXCJjb3RlcmllXCI7XG4gICAgcmVhZG9ubHkgRm9yTG92ZUFuZExlbW9uczogXCJmb3ItbG92ZS1hbmQtbGVtb25zXCI7XG4gICAgcmVhZG9ubHkgR3JlZW5wYW46IFwiZ3JlZW5wYW5cIjtcbiAgICByZWFkb25seSBKb3JkYW5DcmFpZzogXCJqb3JkYW4tY3JhaWdcIjtcbiAgICByZWFkb25seSBMYXJyeUFuZFNlcmdlczogXCJsYXJyeV9hbmRfc2VyZ2VzXCI7XG4gICAgcmVhZG9ubHkgTGVhcHNBbmRSZWJvdW5kczogXCJsZWFwcy1hbmQtcmVib3VuZHNcIjtcbiAgICByZWFkb25seSBNYW50cmFCcmFuZDogXCJtYW50cmEtYnJhbmRcIjtcbiAgICByZWFkb25seSBTcGFueDogXCJzcGFueFwiO1xuICAgIHJlYWRvbmx5IFNwYW54U3RhZ2luZzogXCJzdGFnaW5nLXNwYW54XCI7XG4gICAgcmVhZG9ubHkgU3VwZXJnb29wOiBcInN1cGVyZ29vcFwiO1xuICAgIHJlYWRvbmx5IFVuaXF1ZVZpbnRhZ2U6IFwidW5pcXVlLXZpbnRhZ2VcIjtcbiAgICByZWFkb25seSBKYWNrQXJjaGVyOiBcImphY2stYXJjaGVyXCI7XG4gICAgcmVhZG9ubHkgU2tpblBlcmZlY3Rpb246IFwic2tpbi1wZXJmZWN0aW9uXCI7XG4gICAgcmVhZG9ubHkgTG9va09wdGljOiBcImxvb2stb3B0aWNcIjtcbiAgICByZWFkb25seSBGaXZlQ2JkOiBcImZpdmUtY2JkXCI7XG4gICAgcmVhZG9ubHkgU25hcFN1cHBsZW1lbnRzOiBcInNuYXAtc3VwcGxlbWVudHNcIjtcbiAgICByZWFkb25seSBMb25nZXZpdHlyeDogXCJsb25nZXZpdHlyeFwiO1xuICAgIHJlYWRvbmx5IFZlbmFDYmQ6IFwidmVuYS1jYmRcIjtcbiAgICByZWFkb25seSBNZWR0ZXJyYTogXCJtZWR0ZXJyYVwiO1xuICAgIHJlYWRvbmx5IE1vZGVsbHM6IFwibW9kZWxsc1wiO1xuICAgIHJlYWRvbmx5IFByZXNzZWRGbG9yYWw6IFwicHJlc3NlZC1mbG9yYWxcIjtcbiAgICByZWFkb25seSBLaW5kcmVkQnJhdmVseTogXCJraW5kcmVkLWJyYXZlbHlcIjtcbiAgICByZWFkb25seSBXaW5lRW50aHVzaWFzdDogXCJ3aW5lLWVudGh1c2lhc3RcIjtcbiAgICByZWFkb25seSBIb21lZ3Jvd25DYW5uYWJpczogXCJob21lZ3Jvd24tY2FubmFiaXNcIjtcbiAgICByZWFkb25seSBEcmVhbWxhbmRCYWJ5OiBcImRyZWFtbGFuZC1iYWJ5XCI7XG4gICAgcmVhZG9ubHkgQmFuZG9saWVyOiBcImJhbmRvbGllclwiO1xuICAgIHJlYWRvbmx5IFdlc3RvbkpvbkJvdWNoZXI6IFwid2VzdG9uLWpvbi1ib3VjaGVyXCI7XG4gICAgcmVhZG9ubHkgS3V0RnJvbVRoZUtsb3RoOiBcImt1dC1mcm9tLXRoZS1rbG90aFwiO1xuICAgIHJlYWRvbmx5IEdyb292ZUxpZmU6IFwiZ3Jvb3ZlLWxpZmVcIjtcbiAgICByZWFkb25seSBDYXJwZTogXCJjYXJwZVwiO1xuICAgIHJlYWRvbmx5IFdvbGZUYWN0aWNhbDogXCJ3b2xmLXRhY3RpY2FsXCI7XG4gICAgcmVhZG9ubHkgV29sZk1hdHRyZXNzOiBcIndvbGZtYXR0cmVzc1wiO1xuICAgIHJlYWRvbmx5IERlZmF1bHQ6IFwiZGVmYXVsdFwiO1xufTtcbiIsImV4cG9ydCBkZWNsYXJlIGVudW0gUHJvZHVjdEV4cGVyaW1lbnQge1xuICAgIERlZmF1bHQgPSBcImRlZmF1bHRcIlxufVxuIiwiZXhwb3J0IGludGVyZmFjZSBTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlciB7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbn1cbiIsImltcG9ydCB7IENvbnRleHQgYXMgQXBpQ29udGV4dCB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHQgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpQ29udGV4dD4ge1xufVxuIiwiaW1wb3J0IHsgR2VuZXJhdGlvblBhcmFtcyBhcyBBcGlHZW5lcmF0aW9uUGFyYW1zIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGlvblBhcmFtcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlHZW5lcmF0aW9uUGFyYW1zPiB7XG59XG4iLCJpbXBvcnQgeyBQRFBBdHRyaWJ1dGVzIGFzIEFwaVBEUEF0dHJpYnV0ZXMsIFBMUEF0dHJpYnV0ZXMgYXMgQXBpUExQQXR0cmlidXRlcywgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgYXMgQXBpUXVlcnlUeXBlZEF0dHJpYnV0ZXMsIFNlYXJjaEF0dHJpYnV0ZXMgYXMgQXBpU2VhcmNoQXR0cmlidXRlcywgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIGFzIEFwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcywgVXNlckV2ZW50IGFzIEFwaVVzZXJFdmVudCwgRm9ybVR5cGUsIFBhZ2VWaXNpdENhdGVnb3J5LCBVc2VyRXZlbnRDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIFBEUEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpUERQQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBMUEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTZWFyY2hBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzIHtcbiAgICBmaWxsZWRTY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGZvcm1SZXNwb25zZUlkOiBzdHJpbmc7XG4gICAgZm9ybVR5cGU6IEZvcm1UeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRBdHRyaWJ1dGVzIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBwYWdlVmlzaXRDYXRlZ29yeTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCB0eXBlIFVzZXJFdmVudEF0dHJpYnV0ZXMgPSBQRFBBdHRyaWJ1dGVzIHwgUExQQXR0cmlidXRlcyB8IFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIHwgU2VhcmNoQXR0cmlidXRlcyB8IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyB8IFBhZ2VWaXNpdEF0dHJpYnV0ZXM7XG5leHBvcnQgaW50ZXJmYWNlIFBEUFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBkcFZpc2l0IHwgVXNlckV2ZW50Q2F0ZWdvcnkuQWRkVG9DYXJ0O1xuICAgIGF0dHJpYnV0ZXM6IFBEUEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBMUFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBscFZpc2l0O1xuICAgIGF0dHJpYnV0ZXM6IFBMUEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VHlwZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkO1xuICAgIGF0dHJpYnV0ZXM6IFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2g7XG4gICAgYXR0cmlidXRlczogU2VhcmNoQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbnNDbGlja2VkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQ7XG4gICAgYXR0cmlidXRlczogU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcHBMb2FkZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5BcHBMb2FkZWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwcFVubG9hZGVkRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5BcHBVbmxvYWRlZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVZpc2l0RXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QYWdlVmlzaXQ7XG4gICAgYXR0cmlidXRlczogUGFnZVZpc2l0QXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN1Ym1pdHRlZCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQ7XG4gICAgYXR0cmlidXRlczogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgdHlwZSBVc2VyRXZlbnQgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8UGljazxBcGlVc2VyRXZlbnQsICdldmVudF9pZCcgfCAnY2F0ZWdvcnknIHwgJ2NyZWF0ZWRfYXQnPj4gJiAoU3VnZ2VzdGlvbnNDbGlja2VkVXNlckV2ZW50IHwgQXBwTG9hZGVkVXNlckV2ZW50IHwgUERQVXNlckV2ZW50IHwgUXVlcnlUeXBlZFVzZXJFdmVudCB8IFNlYXJjaFVzZXJFdmVudCB8IEFwcFVubG9hZGVkRXZlbnQgfCBQTFBVc2VyRXZlbnQgfCBQYWdlVmlzaXRFdmVudCB8IEZvcm1TdWJtaXR0ZWQpO1xuIiwiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBVc2VyRXZlbnQgfSBmcm9tICcuL3VzZXJFdmVudCc7XG5pbXBvcnQgeyBHZW5lcmF0aW9uUGFyYW1zIH0gZnJvbSAnLi9nZW5lcmF0aW9uUGFyYW1zJztcbmV4cG9ydCBpbnRlcmZhY2UgTmV4dE1lc3NhZ2VSZXF1ZXN0IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgdXNlckV2ZW50cz86IFVzZXJFdmVudFtdO1xuICAgIGZlYXR1cmVGbGFncz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICAgIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xufVxuIiwiaW1wb3J0IHsgU3VnZ2VzdGlvbiBhcyBBcGlTdWdnZXN0aW9uIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbiBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTdWdnZXN0aW9uPiB7XG59XG4iLCJpbXBvcnQgeyBVc2VyRXZlbnQgfSBmcm9tICcuL3VzZXJFdmVudCc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydGVkRXZlbnRSZXF1ZXN0IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgdXNlckV2ZW50OiBVc2VyRXZlbnQ7XG59XG4iLCJkZWNsYXJlIGNvbnN0IGdldE1lcmNoYW50T3JnSWRRdWVyeSA9IFwiXFxuICBxdWVyeSB7XFxuICAgIG1lIHtcXG4gICAgICBvcmcge1xcbiAgICAgICAgaWRcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cIjtcbmV4cG9ydCB7IGdldE1lcmNoYW50T3JnSWRRdWVyeSB9O1xuIiwiaW1wb3J0IHR5cGUgeyBCYXNlRWNvbW1lcmNlRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIGEgYmFzZSBHb29nbGUgQW5hbHl0aWNzIGVjb21tZXJjZSBldmVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBiYXNlIGVjb21tZXJjZSBldmVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0Jhc2VFY29tbWVyY2VFdmVudDogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgQmFzZUVjb21tZXJjZUV2ZW50O1xuIiwiaW1wb3J0IHR5cGUgeyBHQTRFY29tbWVyY2VFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgYSBHb29nbGUgQW5hbHl0aWNzIDQgZWNvbW1lcmNlIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBkYXRhIFRoZSBldmVudCB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBldmVudCBpcyBhIEdBNCBlY29tbWVyY2UgZXZlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNHQTRFY29tbWVyY2VFdmVudDogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgR0E0RWNvbW1lcmNlRXZlbnQ7XG4iLCJpbXBvcnQgdHlwZSB7IFVBRWNvbW1lcmNlRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIGEgbGVnYWN5IFVuaXZlcnNhbCBBbmFseXRpY3MgZWNvbW1lcmNlIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBkYXRhIFRoZSBldmVudCB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBldmVudCBpcyBhIGxlZ2FjeSBVQSBlY29tbWVyY2UgZXZlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNMZWdhY3lVQUVjb21tZXJjZUV2ZW50OiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBVQUVjb21tZXJjZUV2ZW50O1xuIiwiaW50ZXJmYWNlIE1vYmlsZVBscENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIge1xuICAgIHJvd19pbmRleDogbnVtYmVyO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyOiAodmFsdWU6IHVua25vd24pID0+IHZhbHVlIGlzIE1vYmlsZVBscENoYXRQbGFjZW1lbnRQYXJhbWV0ZXI7XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlciB9IGZyb20gJy4uL3NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXI6ICh2YWx1ZTogdW5rbm93bikgPT4gdmFsdWUgaXMgU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXI7XG4iLCJpbXBvcnQgeyBWYXJpYW50SW5mbyB9IGZyb20gJy4uL3ZhcmlhbnRJbmZvJztcbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgYSB2YWxpZCBWYXJpYW50SW5mby5cbiAqXG4gKiBAcGFyYW0gdmFyaWFudEluZm8gLSBUaGUgdW5rbm93biBvYmplY3QgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZGF0YSBpcyBhIHZhbGlkIFZhcmlhbnRJbmZvIG9iamVjdCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1ZhcmlhbnRJbmZvOiAodmFyaWFudEluZm86IHVua25vd24pID0+IHZhcmlhbnRJbmZvIGlzIFZhcmlhbnRJbmZvO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGhhcyBhIHByb3BlcnR5IG9mIGEgc3BlY2lmaWMgdHlwZVxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcGFyYW0gcHJvcCAtIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIGNoZWNrXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBleHBlY3RlZCB0eXBlIG9mIHRoZSBwcm9wZXJ0eVxuICogQHBhcmFtIGlzT3B0aW9uYWwgLSBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBvcHRpb25hbCAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gKlxuICogQHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eSBvZiB0aGUgc3BlY2lmaWVkIHR5cGVcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaGFzUHJvcGVydHlPZlR5cGU6IDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IHVua25vd24sIHByb3A6IGtleW9mIFQsIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiIHwgXCJhcnJheVwiLCBpc09wdGlvbmFsPzogYm9vbGVhbikgPT4gb2JqIGlzIFQ7XG4iLCJpbXBvcnQgeyBBcGlGb3JtUmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgdGhlIHByb3ZpZGVkIGRhdGEgaGFzIHRoZSBhbGwgb2YgdGhlIHByb3BlcnRpZXMgKHdpdGggdGhlIGNvcnJlY3QgdHlwZXMpIG9mXG4gKiBhIEZvcm1SZXNwb25zZUF0dHJpYnV0ZVxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBkYXRhIGhhcyB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlGb3JtUmVzcG9uc2VBdHRyaWJ1dGVzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBBcGlGb3JtUmVzcG9uc2VBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlGb3JtU3VibWl0dGVkUmVzcG9uc2VBdHRyaWJ1dGVzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcztcbiIsImltcG9ydCB7IE9yZGVySXRlbUluZm8sIE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBpbnRlcmZhY2UgQXBpT3JkZXJJdGVtSW5mbyBleHRlbmRzIE9taXQ8T3JkZXJJdGVtSW5mbywgJ2RlbGl2ZXJlZF9hdCcgfCAnZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0JyB8ICdpbl90cmFuc2l0X2F0Jz4ge1xuICAgIGRlbGl2ZXJlZF9hdD86IHN0cmluZztcbiAgICBlc3RpbWF0ZWRfZGVsaXZlcnlfYXQ/OiBzdHJpbmc7XG4gICAgaW5fdHJhbnNpdF9hdD86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMgZXh0ZW5kcyBPbWl0PE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzLCAnY3JlYXRlZF9hdCcgfCAnbGF0ZXN0X2V2ZW50X2RhdGUnIHwgJ2xpbmVfaXRlbXMnPiB7XG4gICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgIGxhdGVzdF9ldmVudF9kYXRlOiBzdHJpbmc7XG4gICAgbGluZV9pdGVtczogQXBpT3JkZXJJdGVtSW5mb1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlczogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgQXBpT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBPcmdhbml6YXRpb25Db25maWcgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW50ZXJmYWNlIEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0FtcGxpdHVkZSB7XG4gICAgc2Vzc2lvbl9yZXBsYXlfZW5hYmxlZDogYm9vbGVhbjtcbiAgICBzZXNzaW9uX3JlcGxheV9zYW1wbGVfcmF0ZTogbnVtYmVyO1xuICAgIHRyYWNraW5nX2VuYWJsZWQ6IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnQ3VzdG9tZXJTZXJ2aWNlIHtcbiAgICBwcm92aWRlcjogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0dvb2dsZUFuYWx5dGljcyB7XG4gICAgbWVhc3VyZW1lbnRfaWQ6IHN0cmluZztcbn1cbmludGVyZmFjZSBBcGlPcmdBbmFseXRpY3NDb25maWcge1xuICAgIGFtcGxpdHVkZT86IEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0FtcGxpdHVkZTtcbiAgICBjdXN0b21lcl9zZXJ2aWNlPzogQXBpT3JnQW5hbHl0aWNzQ29uZmlnQ3VzdG9tZXJTZXJ2aWNlO1xuICAgIGdvb2dsZV9hbmFseXRpY3M/OiBBcGlPcmdBbmFseXRpY3NDb25maWdHb29nbGVBbmFseXRpY3M7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwaU9yZ2FuaXphdGlvbkNvbmZpZyBleHRlbmRzIE9yZ2FuaXphdGlvbkNvbmZpZyB7XG4gICAgY29uZmlnOiBBcGlPcmdBbmFseXRpY3NDb25maWc7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlPcmdhbml6YXRpb25Db25maWc6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEFwaU9yZ2FuaXphdGlvbkNvbmZpZztcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IFN0YXRzaWdFeHBlcmltZW50IGFzIEFwaU9yZ0NvbmZpZ0V4cGVyaW1lbnQsIFN0YXRzaWdGZWF0dXJlR2F0ZSBhcyBBcGlPcmdDb25maWdGZWF0dXJlR2F0ZSwgT3JnYW5pemF0aW9uU2V0dGluZ3MgYXMgQXBpT3JnQ29uZmlnT3JnYW5pemF0aW9uU2V0dGluZ3MgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQXBpT3JnYW5pemF0aW9uQ29uZmlnIH0gZnJvbSAnLi9pc0FwaU9yZ2FuaXphdGlvbkNvbmZpZyc7XG5pbnRlcmZhY2UgQXBpT3JnQ29uZmlnUmVzdWx0cyB7XG4gICAgY29uZmlnczogQXBpT3JnYW5pemF0aW9uQ29uZmlnW107XG4gICAgZXhwZXJpbWVudHM6IEFwaU9yZ0NvbmZpZ0V4cGVyaW1lbnRbXTtcbiAgICBnYXRlczogQXBpT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTtcbiAgICBvcmc6IEFwaU9yZ0NvbmZpZ09yZ2FuaXphdGlvblNldHRpbmdzO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpT3JnQ29uZmlnUmVzdWx0czogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgUmVxdWlyZWQ8QXBpT3JnQ29uZmlnUmVzdWx0cz47XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBBcGlQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXM6IChvYmo6IHVua25vd24pID0+IG9iaiBpcyBBcGlQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgUExQQXR0cmlidXRlcywgUExQSWRBdHRyaWJ1dGVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUExQSWRBdHRyaWJ1dGU6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIFBMUElkQXR0cmlidXRlcztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUExQRXZlbnRBdHRyaWJ1dGVzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBQTFBBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgUHJvZHVjdFNlYXJjaEZpbHRlclJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaVByb2R1Y3RTZWFyY2hGaWx0ZXJSZXNwb25zZUF0dHJpYnV0ZXM6IChhdHRyaWJ1dGVzOiB1bmtub3duKSA9PiBhdHRyaWJ1dGVzIGlzIFByb2R1Y3RTZWFyY2hGaWx0ZXJSZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBHZXRNZXJjaGFudENvbG9yc1F1ZXJ5RGF0YSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0dyYXBoUUxDb2xvcnNDb25maWc6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhO1xuIiwiaW1wb3J0IHR5cGUgeyBVcHBlckNhc2VDaGFyYWN0ZXJzLCBXb3JkU2VwYXJhdG9ycyB9IGZyb20gJy4vaW50ZXJuYWwnO1xudHlwZSBVcHBlckNhc2VUb0xvd2VyQ2FzZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBVcHBlcmNhc2U8VD4gPyBMb3dlcmNhc2U8VD4gOiBUO1xudHlwZSBTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnNfPFNvdXJjZSBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFNvdXJjZSBleHRlbmRzICcnID8gW10gOiBTb3VyY2UgZXh0ZW5kcyBgJHtpbmZlciBGaXJzdFBhcnR9JHtEZWxpbWl0ZXJ9JHtpbmZlciBTZWNvbmRQYXJ0fWAgPyBTb3VyY2UgZXh0ZW5kcyBgJHtGaXJzdFBhcnR9JHtpbmZlciBVc2VkRGVsaW1pdGVyfSR7U2Vjb25kUGFydH1gID8gVXNlZERlbGltaXRlciBleHRlbmRzIERlbGltaXRlciA/IFNvdXJjZSBleHRlbmRzIGAke2luZmVyIEZpcnN0UGFydH0ke1VzZWREZWxpbWl0ZXJ9JHtpbmZlciBTZWNvbmRQYXJ0fWAgPyBbXG4gICAgLi4uU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzPEZpcnN0UGFydCwgRGVsaW1pdGVyPixcbiAgICBVc2VkRGVsaW1pdGVyLFxuICAgIC4uLlNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyczxTZWNvbmRQYXJ0LCBEZWxpbWl0ZXI+XG5dIDogbmV2ZXIgOiBuZXZlciA6IG5ldmVyIDogW1NvdXJjZV07XG4vKipcbiAqIFVubGlrZSBhIHNpbXBsZXIgc3BsaXQsIHRoaXMgb25lIGluY2x1ZGVzIHRoZSBkZWxpbWl0ZXIgc3BsaXR0ZWQgb24gaW4gdGhlIHJlc3VsdGluZyBhcnJheSBsaXRlcmFsLiBUaGlzIGlzIHRvIGVuYWJsZSBzcGxpdHRpbmcgb24sIGZvciBleGFtcGxlLCB1cHBlci1jYXNlIGNoYXJhY3RlcnMuXG4gKlxuICogQGNhdGVnb3J5IFRlbXBsYXRlIGxpdGVyYWxcbiAqL1xuZXhwb3J0IHR5cGUgU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzPFNvdXJjZSBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyc188VXBwZXJDYXNlVG9Mb3dlckNhc2U8U291cmNlPiwgRGVsaW1pdGVyPjtcbi8qKlxuICpGb3JtYXQgYSBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBzcGxpdHRlZCBzdHJpbmcgbGl0ZXJhbCB0aGF0IGBTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTw+YCBmdXNlcyB0b2dldGhlciwgZW5zdXJpbmcgZGVzaXJlZCBjYXNpbmcuXG4gKlxuICpAc2VlIFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlXG4gKi9cbnR5cGUgU3RyaW5nUGFydFRvRGVsaW1pdGVyQ2FzZTxTdHJpbmdQYXJ0IGV4dGVuZHMgc3RyaW5nLCBTdGFydCBleHRlbmRzIGJvb2xlYW4sIFVzZWRXb3JkU2VwYXJhdG9ycyBleHRlbmRzIHN0cmluZywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMgZXh0ZW5kcyBzdHJpbmcsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBTdHJpbmdQYXJ0IGV4dGVuZHMgVXNlZFdvcmRTZXBhcmF0b3JzID8gRGVsaW1pdGVyIDogU3RhcnQgZXh0ZW5kcyB0cnVlID8gTG93ZXJjYXNlPFN0cmluZ1BhcnQ+IDogU3RyaW5nUGFydCBleHRlbmRzIFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzID8gYCR7RGVsaW1pdGVyfSR7TG93ZXJjYXNlPFN0cmluZ1BhcnQ+fWAgOiBTdHJpbmdQYXJ0O1xuLyoqXG4gKiBUYWtlcyB0aGUgcmVzdWx0IG9mIGEgc3BsaXR0ZWQgc3RyaW5nIGxpdGVyYWwgYW5kIHJlY3Vyc2l2ZWx5IGNvbmNhdGVuYXRlcyBpdCB0b2dldGhlciBpbnRvIHRoZSBkZXNpcmVkIGNhc2luZy5cbiAqXG4gKiBJdCByZWNlaXZlcyBgVXNlZFdvcmRTZXBhcmF0b3JzYCBhbmQgYFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzYCBhcyBpbnB1dCB0byBlbnN1cmUgaXQncyBmdWxseSBlbmNhcHN1bGF0ZWQuXG4gKlxuICogQHNlZSBTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnNcbiAqL1xudHlwZSBTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTxQYXJ0cyBleHRlbmRzIHJlYWRvbmx5IGFueVtdLCBTdGFydCBleHRlbmRzIGJvb2xlYW4sIFVzZWRXb3JkU2VwYXJhdG9ycyBleHRlbmRzIHN0cmluZywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMgZXh0ZW5kcyBzdHJpbmcsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBQYXJ0cyBleHRlbmRzIFtgJHtpbmZlciBGaXJzdFBhcnR9YCwgLi4uaW5mZXIgUmVtYWluaW5nUGFydHNdID8gYCR7U3RyaW5nUGFydFRvRGVsaW1pdGVyQ2FzZTxGaXJzdFBhcnQsIFN0YXJ0LCBVc2VkV29yZFNlcGFyYXRvcnMsIFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzLCBEZWxpbWl0ZXI+fSR7U3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2U8UmVtYWluaW5nUGFydHMsIGZhbHNlLCBVc2VkV29yZFNlcGFyYXRvcnMsIFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzLCBEZWxpbWl0ZXI+fWAgOiBQYXJ0cyBleHRlbmRzIFtzdHJpbmddID8gc3RyaW5nIDogJyc7XG4vKipcbiAqIENvbnZlcnQgYSBzdHJpbmcgbGl0ZXJhbCB0byBhIGN1c3RvbSBzdHJpbmcgZGVsaW1pdGVyIGNhc2luZy5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiwgZm9yIGV4YW1wbGUsIGNvbnZlcnRpbmcgYSBjYW1lbC1jYXNlZCBvYmplY3QgcHJvcGVydHkgdG8gYW4gb2RkbHkgY2FzZWQgb25lLlxuICpcbiAqIEBzZWUgS2ViYWJDYXNlXG4gKiBAc2VlIFNuYWtlQ2FzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIGltcG9ydCB0eXBlIHtEZWxpbWl0ZXJDYXNlfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIC8vIFNpbXBsZVxuICpcbiAqIGNvbnN0IHNvbWVWYXJpYWJsZTogRGVsaW1pdGVyQ2FzZTwnZm9vQmFyJywgJyMnPiA9ICdmb28jYmFyJztcbiAqXG4gKiAvLyBBZHZhbmNlZFxuICpcbiAqIHR5cGUgT2RkbHlDYXNlZFByb3BlcnRpZXM8VD4gPSB7XG4gKiBcdFtLIGluIGtleW9mIFQgYXMgRGVsaW1pdGVyQ2FzZTxLLCAnIyc+XTogVFtLXVxuICogfTtcbiAqXG4gKiBpbnRlcmZhY2UgU29tZU9wdGlvbnMge1xuICogXHRkcnlSdW46IGJvb2xlYW47XG4gKiBcdGluY2x1ZGVGaWxlOiBzdHJpbmc7XG4gKiBcdGZvbzogbnVtYmVyO1xuICogfVxuICpcbiAqIGNvbnN0IHJhd0NsaU9wdGlvbnM6IE9kZGx5Q2FzZWRQcm9wZXJ0aWVzPFNvbWVPcHRpb25zPiA9IHtcbiAqIFx0J2RyeSNydW4nOiB0cnVlLFxuICogXHQnaW5jbHVkZSNmaWxlJzogJ2Jhci5qcycsXG4gKiBcdGZvbzogMTIzXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICovXG5leHBvcnQgdHlwZSBEZWxpbWl0ZXJDYXNlPFZhbHVlLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gc3RyaW5nIGV4dGVuZHMgVmFsdWUgPyBWYWx1ZSA6IFZhbHVlIGV4dGVuZHMgc3RyaW5nID8gU3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2U8U3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzPFZhbHVlLCBXb3JkU2VwYXJhdG9ycyB8IFVwcGVyQ2FzZUNoYXJhY3RlcnM+LCB0cnVlLCBXb3JkU2VwYXJhdG9ycywgVXBwZXJDYXNlQ2hhcmFjdGVycywgRGVsaW1pdGVyPiA6IFZhbHVlO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBEZWxpbWl0ZXJDYXNlIH0gZnJvbSAnLi9kZWxpbWl0ZXJDYXNlJztcbmltcG9ydCB0eXBlIHsgTm9uUmVjdXJzaXZlVHlwZSB9IGZyb20gJy4vaW50ZXJuYWwnO1xuaW1wb3J0IHR5cGUgeyBVbmtub3duQXJyYXkgfSBmcm9tICcuL3Vua25vd25BcnJheSc7XG4vKipcbiAqIENvbnZlcnQgb2JqZWN0IHByb3BlcnRpZXMgdG8gZGVsaW1pdGVyIGNhc2UgcmVjdXJzaXZlbHkuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIHNvbWUgQVBJIHR5cGVzIGZyb20gYSBkaWZmZXJlbnQgc3R5bGUuXG4gKlxuICogQHNlZSBEZWxpbWl0ZXJDYXNlXG4gKiBAc2VlIERlbGltaXRlckNhc2VkUHJvcGVydGllc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIGltcG9ydCB0eXBlIHtEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqIFx0dXNlcklkOiBudW1iZXI7XG4gKiBcdHVzZXJOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogaW50ZXJmYWNlIFVzZXJXaXRoRnJpZW5kcyB7XG4gKiBcdHVzZXJJbmZvOiBVc2VyO1xuICogXHR1c2VyRnJpZW5kczogVXNlcltdO1xuICogfVxuICpcbiAqIGNvbnN0IHJlc3VsdDogRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVc2VyV2l0aEZyaWVuZHMsICctJz4gPSB7XG4gKiBcdCd1c2VyLWluZm8nOiB7XG4gKiBcdCd1c2VyLWlkJzogMSxcbiAqIFx0XHQndXNlci1uYW1lJzogJ1RvbScsXG4gKiBcdH0sXG4gKiBcdCd1c2VyLWZyaWVuZHMnOiBbXG4gKiBcdFx0e1xuICogXHRcdFx0J3VzZXItaWQnOiAyLFxuICogXHRcdFx0J3VzZXItbmFtZSc6ICdKZXJyeScsXG4gKiBcdFx0fSxcbiAqIFx0XHR7XG4gKiBcdFx0XHQndXNlci1pZCc6IDMsXG4gKiBcdFx0XHQndXNlci1uYW1lJzogJ1NwaWtlJyxcbiAqIFx0XHR9LFxuICogXHRdLFxuICogfTtcbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBDaGFuZ2UgY2FzZVxuICogQGNhdGVnb3J5IFRlbXBsYXRlIGxpdGVyYWxcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqL1xuZXhwb3J0IHR5cGUgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZSwgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFZhbHVlIGV4dGVuZHMgTm9uUmVjdXJzaXZlVHlwZSA/IFZhbHVlIDogVmFsdWUgZXh0ZW5kcyBVbmtub3duQXJyYXkgPyBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNBcnJheURlZXA8VmFsdWUsIERlbGltaXRlcj4gOiBWYWx1ZSBleHRlbmRzIFNldDxpbmZlciBVPiA/IFNldDxEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4+IDoge1xuICAgIFtLIGluIGtleW9mIFZhbHVlIGFzIERlbGltaXRlckNhc2U8SywgRGVsaW1pdGVyPl06IERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VmFsdWVbS10sIERlbGltaXRlcj47XG59O1xudHlwZSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNBcnJheURlZXA8VmFsdWUgZXh0ZW5kcyBVbmtub3duQXJyYXksIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBWYWx1ZSBleHRlbmRzIFtdID8gW10gOiBWYWx1ZSBleHRlbmRzIFtpbmZlciBVLCAuLi5pbmZlciBWXSA/IFtEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4sIC4uLkRlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8ViwgRGVsaW1pdGVyPl0gOiBWYWx1ZSBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBVLCAuLi5pbmZlciBWXSA/IHJlYWRvbmx5IFtcbiAgICBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4sXG4gICAgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XG5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbLi4uaW5mZXIgVSwgaW5mZXIgVl0gPyBbXG4gICAgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+LFxuICAgIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8ViwgRGVsaW1pdGVyPlxuXSA6IFZhbHVlIGV4dGVuZHMgcmVhZG9ubHkgWy4uLmluZmVyIFUsIGluZmVyIFZdID8gcmVhZG9ubHkgW1xuICAgIC4uLkRlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPixcbiAgICBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFYsIERlbGltaXRlcj5cbl0gOiBWYWx1ZSBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gQXJyYXk8RGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+PiA6IFZhbHVlIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBVPiA/IFJlYWRvbmx5QXJyYXk8RGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+PiA6IG5ldmVyO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgeyBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnLi9kZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwJztcbi8qKlxuICogQ29udmVydCBvYmplY3QgcHJvcGVydGllcyB0byBzbmFrZSBjYXNlIHJlY3Vyc2l2ZWx5LlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuLCBmb3IgZXhhbXBsZSwgY29udmVydGluZyBzb21lIEFQSSB0eXBlcyBmcm9tIGEgZGlmZmVyZW50IHN0eWxlLlxuICpcbiAqIEBzZWUgU25ha2VDYXNlXG4gKiBAc2VlIFNuYWtlQ2FzZWRQcm9wZXJ0aWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge1NuYWtlQ2FzZWRQcm9wZXJ0aWVzRGVlcH0gZnJvbSAndHlwZS1mZXN0JztcbiAqXG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiBcdHVzZXJJZDogbnVtYmVyO1xuICogXHR1c2VyTmFtZTogc3RyaW5nO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBVc2VyV2l0aEZyaWVuZHMge1xuICogXHR1c2VySW5mbzogVXNlcjtcbiAqIFx0dXNlckZyaWVuZHM6IFVzZXJbXTtcbiAqIH1cbiAqXG4gKiBjb25zdCByZXN1bHQ6IFNuYWtlQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVc2VyV2l0aEZyaWVuZHM+ID0ge1xuICogXHR1c2VyX2luZm86IHtcbiAqIFx0XHR1c2VyX2lkOiAxLFxuICogXHRcdHVzZXJfbmFtZTogJ1RvbScsXG4gKiBcdH0sXG4gKiBcdHVzZXJfZnJpZW5kczogW1xuICogXHRcdHtcbiAqIFx0XHRcdHVzZXJfaWQ6IDIsXG4gKiBcdFx0XHR1c2VyX25hbWU6ICdKZXJyeScsXG4gKiBcdFx0fSxcbiAqIFx0XHR7XG4gKiBcdFx0XHR1c2VyX2lkOiAzLFxuICogXHRcdFx0dXNlcl9uYW1lOiAnU3Bpa2UnLFxuICogXHRcdH0sXG4gKiBcdF0sXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICogQGNhdGVnb3J5IE9iamVjdFxuICovXG5leHBvcnQgdHlwZSBTbmFrZUNhc2VkUHJvcGVydGllc0RlZXA8VmFsdWU+ID0gRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZSwgJ18nPjtcbiIsIi8qKlxuICogR2VuZXJpYyB1dGlsaXR5IHRvIHRyYW5zZm9ybSBzbmFrZV9jYXNlIG9iamVjdCBrZXlzIHRvIGNhbWVsQ2FzZSBhdCBydW50aW1lLlxuICogVGhpcyBpcyB0aGUgcnVudGltZSBlcXVpdmFsZW50IG9mIHRoZSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgdHlwZSB1dGlsaXR5LlxuICovXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG9iamVjdCBrZXlzIGZyb20gc25ha2VfY2FzZSB0byBjYW1lbENhc2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdHJhbnNmb3JtU25ha2VUb0NhbWVsOiAob2JqOiB1bmtub3duKSA9PiB1bmtub3duO1xuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBvYmplY3Qga2V5cyBmcm9tIGNhbWVsQ2FzZSB0byBzbmFrZV9jYXNlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHRyYW5zZm9ybUNhbWVsVG9TbmFrZTogKG9iajogdW5rbm93bikgPT4gdW5rbm93bjtcbiIsImltcG9ydCB7IEZ1bGZpbGxtZW50RGlzcGxheVN0YXR1cyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzIGVudW0gdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0YXR1cyAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzIGVudW0gdmFsdWUgb3IgdW5kZWZpbmVkIGlmIHRoZSBzdHJpbmdcbiAqIGRvZXMgbm90IG1hcCB0byBhIHZhbGlkIGVudW1cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc3RyaW5nVG9GdWxmaWxsbWVudERpc3BsYXlTdGF0dXNFbnVtVmFsdWU6IChzdGF0dXM6IHN0cmluZykgPT4gRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgQ29sb3JNYXBwaW5nIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29sb3JzQ29uZmlnXCI7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUdyYXBoUUxDb2xvcnNDb25maWc6IChkYXRhOiB1bmtub3duKSA9PiBDb2xvck1hcHBpbmcgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZnJvbnRlbmRDb25maWcnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnLCBQYWdlVmFyaWFudENvbmZpZywgV2lkZ2V0TW91bnRpbmdDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHM6IChjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBQYWdlVmFyaWFudENvbmZpZztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWc6IChjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBjb25maWdLZXk6IHN0cmluZykgPT4gV2lkZ2V0TW91bnRpbmdDb25maWc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUFuZFRyYW5zZm9ybVdpZGdldENvbmZpZzogKGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbmZpZ0tleTogc3RyaW5nKSA9PiBXaWRnZXRDb25maWc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUdyYXBoUUxGcm9udGVuZENvbmZpZzogKGRhdGE6IHVua25vd24pID0+IEZyb250ZW5kQ29uZmlnIHwgdW5kZWZpbmVkO1xuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVHcmFwaFFMT3JnSWQ6IChkYXRhOiB1bmtub3duKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIH0gZnJvbSAnLi4vbW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlcic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZU1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXI6ICh2YWx1ZTogdW5rbm93bikgPT4gTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlciB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ2FuaXphdGlvbkNvbmZpZyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZzogKGRhdGE6IHVua25vd24pID0+IE9yZ2FuaXphdGlvbkNvbmZpZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IE9yZ0NvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0czogKGRhdGE6IHVua25vd24pID0+IE9yZ0NvbmZpZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9pbmRleCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZVJlc3BvbnNlOiAoZGF0YTogdW5rbm93bikgPT4gUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBTdWdnZXN0aW9uIH0gZnJvbSAnLi4vYXBpL3N1Z2dlc3Rpb24nO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVTdWdnZXN0aW9uOiAoZGF0YTogdW5rbm93bikgPT4gU3VnZ2VzdGlvbiB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IFVzZXJFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvaW5kZXgnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVVc2VyRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBVc2VyRXZlbnQgfCB1bmRlZmluZWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBSSxjQUFjLENBQUMsSUFBRzs7OztBQ0F0QixJQUFJLGdCQUFnQixDQUFDLElBQUc7Ozs7QUNBeEIsSUFBVywwQkFBMEIsQ0FBQyxJQUFBOzs7O0FDQXRDLElBQUUscUJBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNGLElBQUksa0JBQWtCLENBQUMsSUFBSTtBQUMzQixJQUFFLG1CQUFBLENBQUEsSUFBQTtBQUNGLElBQVcsbUJBQW1CO0NBQUM7T0FBSztPQUFBO0NBQUE7QUFDcEMsSUFB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