@veloceapps/sdk 12.0.0-12 → 12.0.0-14

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 (348) hide show
  1. package/cms/index.d.ts +921 -15
  2. package/core/index.d.ts +525 -8
  3. package/fesm2022/veloceapps-sdk-cms.mjs +2617 -0
  4. package/fesm2022/veloceapps-sdk-cms.mjs.map +1 -0
  5. package/{fesm2020 → fesm2022}/veloceapps-sdk-core.mjs +117 -112
  6. package/fesm2022/veloceapps-sdk-core.mjs.map +1 -0
  7. package/{fesm2020 → fesm2022}/veloceapps-sdk.mjs +170 -170
  8. package/fesm2022/veloceapps-sdk.mjs.map +1 -0
  9. package/index.d.ts +330 -1
  10. package/package.json +17 -34
  11. package/cms/cms.actions.d.ts +0 -154
  12. package/cms/cms.default.d.ts +0 -5
  13. package/cms/cms.elements.d.ts +0 -4
  14. package/cms/cms.layouts.d.ts +0 -4
  15. package/cms/components/element-children/element-children.component.d.ts +0 -22
  16. package/cms/components/element-children/element-children.module.d.ts +0 -11
  17. package/cms/components/element-drop-handle/element-drop-handle.component.d.ts +0 -12
  18. package/cms/components/element-drop-handle/element-drop-handle.module.d.ts +0 -9
  19. package/cms/components/element-renderer/element-renderer.component.d.ts +0 -29
  20. package/cms/components/element-renderer/element-renderer.module.d.ts +0 -7
  21. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +0 -14
  22. package/cms/components/element.component.d.ts +0 -17
  23. package/cms/components/index.d.ts +0 -1
  24. package/cms/components/plugin.component.d.ts +0 -15
  25. package/cms/components/preview/index.d.ts +0 -3
  26. package/cms/components/preview/preview.component.d.ts +0 -32
  27. package/cms/components/preview/preview.module.d.ts +0 -13
  28. package/cms/components/preview/preview.types.d.ts +0 -20
  29. package/cms/decorators/element.decorator.d.ts +0 -2
  30. package/cms/decorators/index.d.ts +0 -1
  31. package/cms/definitions/index.d.ts +0 -1
  32. package/cms/definitions/ui-builder.definitions.d.ts +0 -6
  33. package/cms/directives/custom-template.directive.d.ts +0 -17
  34. package/cms/engine/models/entity.d.ts +0 -11
  35. package/cms/engine/models/plugin.d.ts +0 -5
  36. package/cms/injection-tokens.d.ts +0 -9
  37. package/cms/launcher.module.d.ts +0 -12
  38. package/cms/modules/federated/default-options.d.ts +0 -4
  39. package/cms/modules/federated/export.d.ts +0 -1
  40. package/cms/modules/federated/federated-host.directive.d.ts +0 -8
  41. package/cms/modules/federated/federated.component.d.ts +0 -25
  42. package/cms/modules/federated/federated.module.d.ts +0 -10
  43. package/cms/modules/federated/federated.types.d.ts +0 -26
  44. package/cms/modules/migrations/index.d.ts +0 -2
  45. package/cms/modules/migrations/migrations.d.ts +0 -2
  46. package/cms/modules/migrations/migrations.module.d.ts +0 -6
  47. package/cms/modules/migrations/services/migrations.service.d.ts +0 -10
  48. package/cms/modules/migrations/types/migrations.types.d.ts +0 -2
  49. package/cms/modules/runtime/index.d.ts +0 -3
  50. package/cms/modules/runtime/runtime.module.d.ts +0 -8
  51. package/cms/modules/runtime/services/compilation.service.d.ts +0 -19
  52. package/cms/modules/runtime/services/runtime-editor.service.d.ts +0 -20
  53. package/cms/modules/runtime/services/runtime.service.d.ts +0 -33
  54. package/cms/modules/runtime/tokens.d.ts +0 -3
  55. package/cms/modules/runtime/types/compilation.types.d.ts +0 -8
  56. package/cms/modules/runtime/types/runtime.actions.d.ts +0 -12
  57. package/cms/plugins/element-hover.plugin.d.ts +0 -33
  58. package/cms/plugins/io.plugin.d.ts +0 -9
  59. package/cms/plugins/page.plugin.d.ts +0 -15
  60. package/cms/plugins/region.plugin.d.ts +0 -17
  61. package/cms/plugins/script.plugin.d.ts +0 -10
  62. package/cms/services/element-context.service.d.ts +0 -7
  63. package/cms/services/index.d.ts +0 -2
  64. package/cms/services/io-provider.service.d.ts +0 -15
  65. package/cms/services/resources.service.d.ts +0 -21
  66. package/cms/services/templates.service.d.ts +0 -14
  67. package/cms/types/common.types.d.ts +0 -130
  68. package/cms/types/elements.types.d.ts +0 -2
  69. package/cms/types/index.d.ts +0 -6
  70. package/cms/types/layouts.types.d.ts +0 -102
  71. package/cms/types/pages.types.d.ts +0 -1
  72. package/cms/types/path.types.d.ts +0 -11
  73. package/cms/utils/element-metadata-worker.d.ts +0 -11
  74. package/cms/utils/element.utils.d.ts +0 -20
  75. package/cms/utils/elements-resolver.d.ts +0 -28
  76. package/cms/utils/encoding.utils.d.ts +0 -2
  77. package/cms/utils/index.d.ts +0 -9
  78. package/cms/utils/inject.d.ts +0 -1
  79. package/cms/utils/path.utils.d.ts +0 -3
  80. package/cms/utils/script.utils.d.ts +0 -2
  81. package/cms/utils/transpilation-worker.d.ts +0 -13
  82. package/cms/utils/ui-builder-layout.utils.d.ts +0 -4
  83. package/cms/utils/ui-definition.utils.d.ts +0 -6
  84. package/cms/vendor-map.d.ts +0 -86
  85. package/core/core.module.d.ts +0 -10
  86. package/core/directives/directives.module.d.ts +0 -7
  87. package/core/directives/index.d.ts +0 -2
  88. package/core/directives/primeng-calendar.directive.d.ts +0 -14
  89. package/core/modules/configuration/configuration.module.d.ts +0 -8
  90. package/core/modules/configuration/index.d.ts +0 -6
  91. package/core/modules/configuration/services/configuration-runtime.service.d.ts +0 -19
  92. package/core/modules/configuration/services/configuration-state.service.d.ts +0 -60
  93. package/core/modules/configuration/services/configuration.service.d.ts +0 -38
  94. package/core/modules/configuration/services/guided-selling.service.d.ts +0 -15
  95. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +0 -26
  96. package/core/modules/configuration/types/configuration-runtime.types.d.ts +0 -3
  97. package/core/modules/configuration/types/configuration.types.d.ts +0 -20
  98. package/core/modules/configuration/types/index.d.ts +0 -2
  99. package/core/modules/flow-configuration/flow-configuration.module.d.ts +0 -7
  100. package/core/modules/flow-configuration/index.d.ts +0 -1
  101. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +0 -23
  102. package/core/modules/index.d.ts +0 -2
  103. package/core/operators/filter-successful-execute.operator.d.ts +0 -3
  104. package/core/operators/index.d.ts +0 -1
  105. package/core/pipes/action-code.pipe.d.ts +0 -8
  106. package/core/pipes/date.pipe.d.ts +0 -13
  107. package/core/pipes/index.d.ts +0 -5
  108. package/core/pipes/number.pipe.d.ts +0 -10
  109. package/core/pipes/pipes.module.d.ts +0 -10
  110. package/core/pipes/price.pipe.d.ts +0 -10
  111. package/core/services/catalog-products.service.d.ts +0 -11
  112. package/core/services/flow-info.service.d.ts +0 -44
  113. package/core/services/flow-state-configuration.service.d.ts +0 -25
  114. package/core/services/flow-state.service.d.ts +0 -70
  115. package/core/services/index.d.ts +0 -8
  116. package/core/services/integration.state.d.ts +0 -16
  117. package/core/services/product-images.service.d.ts +0 -12
  118. package/core/services/runtime-settings.service.d.ts +0 -24
  119. package/core/services/sales-transaction.service.d.ts +0 -27
  120. package/core/types/flow-customization.types.d.ts +0 -10
  121. package/core/types/flow-state.types.d.ts +0 -12
  122. package/core/types/formatting-settings.types.d.ts +0 -13
  123. package/core/types/index.d.ts +0 -5
  124. package/core/types/integration.types.d.ts +0 -10
  125. package/core/types/pipe.types.d.ts +0 -1
  126. package/core/types/ui-definition.types.d.ts +0 -1
  127. package/core/utils/index.d.ts +0 -4
  128. package/core/utils/pcm.utils.d.ts +0 -5
  129. package/core/utils/transaction-item.utils.d.ts +0 -10
  130. package/core/utils/transaction-item.worker.d.ts +0 -8
  131. package/core/utils/ui-definition.utils.d.ts +0 -2
  132. package/esm2020/cms/cms.actions.mjs +0 -151
  133. package/esm2020/cms/cms.default.mjs +0 -5
  134. package/esm2020/cms/cms.elements.mjs +0 -52
  135. package/esm2020/cms/cms.layouts.mjs +0 -239
  136. package/esm2020/cms/components/element-children/element-children.component.mjs +0 -41
  137. package/esm2020/cms/components/element-children/element-children.module.mjs +0 -21
  138. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +0 -28
  139. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +0 -19
  140. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +0 -117
  141. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +0 -16
  142. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +0 -35
  143. package/esm2020/cms/components/element.component.mjs +0 -45
  144. package/esm2020/cms/components/index.mjs +0 -2
  145. package/esm2020/cms/components/plugin.component.mjs +0 -17
  146. package/esm2020/cms/components/preview/index.mjs +0 -4
  147. package/esm2020/cms/components/preview/preview.component.mjs +0 -75
  148. package/esm2020/cms/components/preview/preview.module.mjs +0 -42
  149. package/esm2020/cms/components/preview/preview.types.mjs +0 -2
  150. package/esm2020/cms/decorators/element.decorator.mjs +0 -6
  151. package/esm2020/cms/decorators/index.mjs +0 -2
  152. package/esm2020/cms/definitions/index.mjs +0 -2
  153. package/esm2020/cms/definitions/ui-builder.definitions.mjs +0 -18
  154. package/esm2020/cms/directives/custom-template.directive.mjs +0 -38
  155. package/esm2020/cms/engine/models/entity.mjs +0 -17
  156. package/esm2020/cms/engine/models/plugin.mjs +0 -6
  157. package/esm2020/cms/index.mjs +0 -16
  158. package/esm2020/cms/injection-tokens.mjs +0 -7
  159. package/esm2020/cms/launcher.module.mjs +0 -24
  160. package/esm2020/cms/modules/federated/default-options.mjs +0 -5
  161. package/esm2020/cms/modules/federated/export.mjs +0 -2
  162. package/esm2020/cms/modules/federated/federated-host.directive.mjs +0 -16
  163. package/esm2020/cms/modules/federated/federated.component.mjs +0 -74
  164. package/esm2020/cms/modules/federated/federated.module.mjs +0 -20
  165. package/esm2020/cms/modules/federated/federated.types.mjs +0 -2
  166. package/esm2020/cms/modules/migrations/index.mjs +0 -3
  167. package/esm2020/cms/modules/migrations/migrations.mjs +0 -22
  168. package/esm2020/cms/modules/migrations/migrations.module.mjs +0 -15
  169. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +0 -47
  170. package/esm2020/cms/modules/migrations/types/migrations.types.mjs +0 -2
  171. package/esm2020/cms/modules/runtime/index.mjs +0 -4
  172. package/esm2020/cms/modules/runtime/runtime.module.mjs +0 -32
  173. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +0 -93
  174. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +0 -30
  175. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +0 -117
  176. package/esm2020/cms/modules/runtime/tokens.mjs +0 -3
  177. package/esm2020/cms/modules/runtime/types/compilation.types.mjs +0 -2
  178. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +0 -2
  179. package/esm2020/cms/plugins/element-hover.plugin.mjs +0 -121
  180. package/esm2020/cms/plugins/io.plugin.mjs +0 -45
  181. package/esm2020/cms/plugins/page.plugin.mjs +0 -37
  182. package/esm2020/cms/plugins/region.plugin.mjs +0 -59
  183. package/esm2020/cms/plugins/script.plugin.mjs +0 -31
  184. package/esm2020/cms/services/element-context.service.mjs +0 -10
  185. package/esm2020/cms/services/index.mjs +0 -3
  186. package/esm2020/cms/services/io-provider.service.mjs +0 -53
  187. package/esm2020/cms/services/resources.service.mjs +0 -71
  188. package/esm2020/cms/services/templates.service.mjs +0 -32
  189. package/esm2020/cms/types/common.types.mjs +0 -2
  190. package/esm2020/cms/types/elements.types.mjs +0 -2
  191. package/esm2020/cms/types/index.mjs +0 -7
  192. package/esm2020/cms/types/layouts.types.mjs +0 -71
  193. package/esm2020/cms/types/pages.types.mjs +0 -2
  194. package/esm2020/cms/types/path.types.mjs +0 -2
  195. package/esm2020/cms/utils/element-metadata-worker.mjs +0 -31
  196. package/esm2020/cms/utils/element.utils.mjs +0 -182
  197. package/esm2020/cms/utils/elements-resolver.mjs +0 -206
  198. package/esm2020/cms/utils/encoding.utils.mjs +0 -29
  199. package/esm2020/cms/utils/index.mjs +0 -10
  200. package/esm2020/cms/utils/inject.mjs +0 -27
  201. package/esm2020/cms/utils/path.utils.mjs +0 -44
  202. package/esm2020/cms/utils/script.utils.mjs +0 -46
  203. package/esm2020/cms/utils/transpilation-worker.mjs +0 -52
  204. package/esm2020/cms/utils/ui-builder-layout.utils.mjs +0 -46
  205. package/esm2020/cms/utils/ui-definition.utils.mjs +0 -85
  206. package/esm2020/cms/veloceapps-sdk-cms.mjs +0 -5
  207. package/esm2020/cms/vendor-map.mjs +0 -83
  208. package/esm2020/core/core.module.mjs +0 -54
  209. package/esm2020/core/directives/directives.module.mjs +0 -16
  210. package/esm2020/core/directives/index.mjs +0 -3
  211. package/esm2020/core/directives/primeng-calendar.directive.mjs +0 -41
  212. package/esm2020/core/index.mjs +0 -9
  213. package/esm2020/core/modules/configuration/configuration.module.mjs +0 -34
  214. package/esm2020/core/modules/configuration/index.mjs +0 -7
  215. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +0 -38
  216. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +0 -381
  217. package/esm2020/core/modules/configuration/services/configuration.service.mjs +0 -172
  218. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +0 -62
  219. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +0 -97
  220. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +0 -2
  221. package/esm2020/core/modules/configuration/types/configuration.types.mjs +0 -2
  222. package/esm2020/core/modules/configuration/types/index.mjs +0 -3
  223. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +0 -17
  224. package/esm2020/core/modules/flow-configuration/index.mjs +0 -2
  225. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +0 -80
  226. package/esm2020/core/modules/index.mjs +0 -3
  227. package/esm2020/core/operators/filter-successful-execute.operator.mjs +0 -5
  228. package/esm2020/core/operators/index.mjs +0 -2
  229. package/esm2020/core/pipes/action-code.pipe.mjs +0 -20
  230. package/esm2020/core/pipes/date.pipe.mjs +0 -44
  231. package/esm2020/core/pipes/index.mjs +0 -6
  232. package/esm2020/core/pipes/number.pipe.mjs +0 -27
  233. package/esm2020/core/pipes/pipes.module.mjs +0 -19
  234. package/esm2020/core/pipes/price.pipe.mjs +0 -30
  235. package/esm2020/core/services/catalog-products.service.mjs +0 -25
  236. package/esm2020/core/services/flow-info.service.mjs +0 -146
  237. package/esm2020/core/services/flow-state-configuration.service.mjs +0 -120
  238. package/esm2020/core/services/flow-state.service.mjs +0 -417
  239. package/esm2020/core/services/index.mjs +0 -9
  240. package/esm2020/core/services/integration.state.mjs +0 -36
  241. package/esm2020/core/services/product-images.service.mjs +0 -30
  242. package/esm2020/core/services/runtime-settings.service.mjs +0 -112
  243. package/esm2020/core/services/sales-transaction.service.mjs +0 -67
  244. package/esm2020/core/types/flow-customization.types.mjs +0 -3
  245. package/esm2020/core/types/flow-state.types.mjs +0 -2
  246. package/esm2020/core/types/formatting-settings.types.mjs +0 -3
  247. package/esm2020/core/types/index.mjs +0 -6
  248. package/esm2020/core/types/integration.types.mjs +0 -2
  249. package/esm2020/core/types/pipe.types.mjs +0 -2
  250. package/esm2020/core/types/ui-definition.types.mjs +0 -2
  251. package/esm2020/core/utils/index.mjs +0 -5
  252. package/esm2020/core/utils/pcm.utils.mjs +0 -15
  253. package/esm2020/core/utils/transaction-item.utils.mjs +0 -144
  254. package/esm2020/core/utils/transaction-item.worker.mjs +0 -16
  255. package/esm2020/core/utils/ui-definition.utils.mjs +0 -9
  256. package/esm2020/core/veloceapps-sdk-core.mjs +0 -5
  257. package/esm2020/index.mjs +0 -2
  258. package/esm2020/src/components/dialog/dialog.component.mjs +0 -36
  259. package/esm2020/src/components/dialog/dialog.module.mjs +0 -19
  260. package/esm2020/src/components/dialog/dialog.types.mjs +0 -2
  261. package/esm2020/src/components/flow-header/flow-header.component.mjs +0 -107
  262. package/esm2020/src/components/flow-header/flow-header.module.mjs +0 -19
  263. package/esm2020/src/components/flow-header/index.mjs +0 -2
  264. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +0 -107
  265. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +0 -19
  266. package/esm2020/src/configure-primeng.mjs +0 -33
  267. package/esm2020/src/constants.mjs +0 -2
  268. package/esm2020/src/flow-routing.module.mjs +0 -97
  269. package/esm2020/src/flow.component.mjs +0 -39
  270. package/esm2020/src/flow.module.mjs +0 -60
  271. package/esm2020/src/guards/flow.guard.mjs +0 -35
  272. package/esm2020/src/guards/product-unload.guard.mjs +0 -49
  273. package/esm2020/src/guards/root.guard.mjs +0 -46
  274. package/esm2020/src/index.mjs +0 -5
  275. package/esm2020/src/pages/assets/assets.component.mjs +0 -106
  276. package/esm2020/src/pages/assets/assets.module.mjs +0 -20
  277. package/esm2020/src/pages/catalog/catalog.component.mjs +0 -106
  278. package/esm2020/src/pages/catalog/catalog.module.mjs +0 -20
  279. package/esm2020/src/pages/debug/debug.component.mjs +0 -49
  280. package/esm2020/src/pages/debug/debug.module.mjs +0 -46
  281. package/esm2020/src/pages/product/product.component.mjs +0 -55
  282. package/esm2020/src/pages/product/product.module.mjs +0 -20
  283. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +0 -27
  284. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +0 -20
  285. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +0 -106
  286. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +0 -20
  287. package/esm2020/src/resolvers/flow.resolver.mjs +0 -50
  288. package/esm2020/src/resolvers/pcm-model.resolver.mjs +0 -12
  289. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +0 -64
  290. package/esm2020/src/resolvers/ui-definition.resolver.mjs +0 -44
  291. package/esm2020/src/services/flow-dialog.service.mjs +0 -91
  292. package/esm2020/src/services/flow-router.service.mjs +0 -173
  293. package/esm2020/src/services/flow.service.mjs +0 -102
  294. package/esm2020/src/services/guided-selling.service.mjs +0 -34
  295. package/esm2020/src/services/index.mjs +0 -4
  296. package/esm2020/src/types/index.mjs +0 -2
  297. package/esm2020/src/types/route.types.mjs +0 -2
  298. package/esm2020/veloceapps-sdk.mjs +0 -5
  299. package/fesm2015/veloceapps-sdk-cms.mjs +0 -2514
  300. package/fesm2015/veloceapps-sdk-cms.mjs.map +0 -1
  301. package/fesm2015/veloceapps-sdk-core.mjs +0 -2104
  302. package/fesm2015/veloceapps-sdk-core.mjs.map +0 -1
  303. package/fesm2015/veloceapps-sdk.mjs +0 -1598
  304. package/fesm2015/veloceapps-sdk.mjs.map +0 -1
  305. package/fesm2020/veloceapps-sdk-cms.mjs +0 -2613
  306. package/fesm2020/veloceapps-sdk-cms.mjs.map +0 -1
  307. package/fesm2020/veloceapps-sdk-core.mjs.map +0 -1
  308. package/fesm2020/veloceapps-sdk.mjs.map +0 -1
  309. package/src/components/dialog/dialog.component.d.ts +0 -13
  310. package/src/components/dialog/dialog.module.d.ts +0 -9
  311. package/src/components/dialog/dialog.types.d.ts +0 -7
  312. package/src/components/flow-header/flow-header.component.d.ts +0 -25
  313. package/src/components/flow-header/flow-header.module.d.ts +0 -9
  314. package/src/components/flow-header/index.d.ts +0 -1
  315. package/src/components/guided-selling/guided-selling.component.d.ts +0 -25
  316. package/src/components/guided-selling/guided-selling.module.d.ts +0 -9
  317. package/src/configure-primeng.d.ts +0 -1
  318. package/src/constants.d.ts +0 -1
  319. package/src/flow-routing.module.d.ts +0 -11
  320. package/src/flow.component.d.ts +0 -21
  321. package/src/flow.module.d.ts +0 -16
  322. package/src/guards/flow.guard.d.ts +0 -2
  323. package/src/guards/product-unload.guard.d.ts +0 -16
  324. package/src/guards/root.guard.d.ts +0 -14
  325. package/src/index.d.ts +0 -4
  326. package/src/pages/assets/assets.component.d.ts +0 -31
  327. package/src/pages/assets/assets.module.d.ts +0 -10
  328. package/src/pages/catalog/catalog.component.d.ts +0 -31
  329. package/src/pages/catalog/catalog.module.d.ts +0 -10
  330. package/src/pages/debug/debug.component.d.ts +0 -21
  331. package/src/pages/debug/debug.module.d.ts +0 -14
  332. package/src/pages/product/product.component.d.ts +0 -24
  333. package/src/pages/product/product.module.d.ts +0 -10
  334. package/src/pages/record-not-found/record-not-found.component.d.ts +0 -12
  335. package/src/pages/record-not-found/record-not-found.module.d.ts +0 -9
  336. package/src/pages/shopping-cart/shopping-cart.component.d.ts +0 -31
  337. package/src/pages/shopping-cart/shopping-cart.module.d.ts +0 -10
  338. package/src/resolvers/flow.resolver.d.ts +0 -14
  339. package/src/resolvers/pcm-model.resolver.d.ts +0 -3
  340. package/src/resolvers/sales-transaction.resolver.d.ts +0 -18
  341. package/src/resolvers/ui-definition.resolver.d.ts +0 -3
  342. package/src/services/flow-dialog.service.d.ts +0 -23
  343. package/src/services/flow-router.service.d.ts +0 -42
  344. package/src/services/flow.service.d.ts +0 -21
  345. package/src/services/guided-selling.service.d.ts +0 -13
  346. package/src/services/index.d.ts +0 -3
  347. package/src/types/index.d.ts +0 -1
  348. package/src/types/route.types.d.ts +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../tmp-esm2022/core/modules/configuration/services/configuration-runtime.service.js","../tmp-esm2022/core/types/flow-customization.types.js","../tmp-esm2022/core/services/runtime-settings.service.js","../tmp-esm2022/core/services/flow-info.service.js","../tmp-esm2022/core/utils/pcm.utils.js","../tmp-esm2022/core/utils/transaction-item.utils.js","../tmp-esm2022/core/utils/transaction-item.worker.js","../tmp-esm2022/core/utils/ui-definition.utils.js","../tmp-esm2022/core/modules/configuration/services/guided-selling.service.js","../tmp-esm2022/core/modules/configuration/services/configuration.service.js","../tmp-esm2022/core/services/sales-transaction.service.js","../tmp-esm2022/core/modules/flow-configuration/services/flow-configuration.service.js","../tmp-esm2022/core/modules/configuration/services/test-mode-configuration.service.js","../tmp-esm2022/core/services/flow-state.service.js","../tmp-esm2022/core/services/flow-state-configuration.service.js","../tmp-esm2022/core/services/integration.state.js","../tmp-esm2022/core/services/product-images.service.js","../tmp-esm2022/core/services/catalog-products.service.js","../tmp-esm2022/core/modules/configuration/services/configuration-state.service.js","../tmp-esm2022/core/modules/configuration/configuration.module.js","../tmp-esm2022/core/modules/flow-configuration/flow-configuration.module.js","../tmp-esm2022/core/types/formatting-settings.types.js","../tmp-esm2022/core/types/ui-definition.types.js","../tmp-esm2022/core/core.module.js","../tmp-esm2022/core/directives/primeng-calendar.directive.js","../tmp-esm2022/core/directives/directives.module.js","../tmp-esm2022/core/operators/filter-successful-execute.operator.js","../tmp-esm2022/core/pipes/date.pipe.js","../tmp-esm2022/core/pipes/number.pipe.js","../tmp-esm2022/core/pipes/price.pipe.js","../tmp-esm2022/core/pipes/action-code.pipe.js","../tmp-esm2022/core/pipes/pipes.module.js","../tmp-esm2022/core/veloceapps-sdk-core.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { PCMApiService } from '@veloceapps/api/v2';\nimport { BehaviorSubject, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nexport class ConfigurationRuntimeService {\n constructor(pcmApiService) {\n this.pcmApiService = pcmApiService;\n this.uiDefinitionContainer = null;\n this.pcmModelSubj$ = new BehaviorSubject(null);\n }\n get uiDefinitionProps() {\n return this.uiDefinitionContainer?.source.properties ?? {};\n }\n get pcmModel() {\n return this.pcmModelSubj$.value;\n }\n get pcmModel$() {\n return this.pcmModelSubj$;\n }\n reset() {\n this.uiDefinitionContainer = null;\n this.initializationProps = undefined;\n this.pcmModelSubj$.next(null);\n }\n init$(props) {\n this.initializationProps = props;\n return this.pcmApiService\n .fetchPCMByProductId(props.productId)\n .pipe(tap(pcmModel => this.pcmModelSubj$.next(pcmModel)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationRuntimeService, deps: [{ token: i1.PCMApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationRuntimeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationRuntimeService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.PCMApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSXhELE1BQU0sT0FBTywyQkFBMkI7SUFLdEMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFKekMsMEJBQXFCLEdBQWlDLElBQUksQ0FBQztRQUUzRCxrQkFBYSxHQUFxQyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7SUFFakQsQ0FBQztJQUVwRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFpQztRQUM1QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLGFBQWE7YUFDdEIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OEdBL0JVLDJCQUEyQjtrSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUENNQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQgeyBQQ01Nb2RlbCwgVUlEZWZpbml0aW9uQ29udGFpbmVyLCBVSURlZmluaXRpb25Qcm9wcyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bnRpbWVJbml0aWFsaXphdGlvblByb3BzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJhdGlvbi1ydW50aW1lLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB7XG4gIHB1YmxpYyB1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lciB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgaW5pdGlhbGl6YXRpb25Qcm9wcz86IFJ1bnRpbWVJbml0aWFsaXphdGlvblByb3BzO1xuICBwdWJsaWMgcGNtTW9kZWxTdWJqJDogQmVoYXZpb3JTdWJqZWN0PFBDTU1vZGVsIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBDTU1vZGVsIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBnZXQgdWlEZWZpbml0aW9uUHJvcHMoKTogVUlEZWZpbml0aW9uUHJvcHMge1xuICAgIHJldHVybiB0aGlzLnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlLnByb3BlcnRpZXMgPz8ge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBjbU1vZGVsKCk6IFBDTU1vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGNtTW9kZWxTdWJqJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGNtTW9kZWwkKCk6IE9ic2VydmFibGU8UENNTW9kZWwgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucGNtTW9kZWxTdWJqJDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVpRGVmaW5pdGlvbkNvbnRhaW5lciA9IG51bGw7XG4gICAgdGhpcy5pbml0aWFsaXphdGlvblByb3BzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGNtTW9kZWxTdWJqJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKHByb3BzOiBSdW50aW1lSW5pdGlhbGl6YXRpb25Qcm9wcyk6IE9ic2VydmFibGU8UENNTW9kZWw+IHtcbiAgICB0aGlzLmluaXRpYWxpemF0aW9uUHJvcHMgPSBwcm9wcztcblxuICAgIHJldHVybiB0aGlzLnBjbUFwaVNlcnZpY2VcbiAgICAgIC5mZXRjaFBDTUJ5UHJvZHVjdElkKHByb3BzLnByb2R1Y3RJZClcbiAgICAgIC5waXBlKHRhcChwY21Nb2RlbCA9PiB0aGlzLnBjbU1vZGVsU3ViaiQubmV4dChwY21Nb2RlbCkpKTtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FLOW_CUSTOMIZATION = new InjectionToken('FLOW_CUSTOMIZATION');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS90eXBlcy9mbG93LWN1c3RvbWl6YXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUvQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBb0Isb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICBGbG93Q29udGV4dCxcbiAgVGVtcGxhdGVDb21wb25lbnRXaXRoQXR0YWNobWVudHMsXG4gIFVJRGVmaW5pdGlvbkNvbnRhaW5lcixcbiAgVUlUZW1wbGF0ZSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBGTE9XX0NVU1RPTUlaQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48Rmxvd0N1c3RvbWl6YXRpb24+KCdGTE9XX0NVU1RPTUlaQVRJT04nKTtcblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q3VzdG9taXphdGlvbiB7XG4gIGdldFVpRGVmaW5pdGlvbj8oZmxvd0NvbnRleHQ6IEZsb3dDb250ZXh0KTogT2JzZXJ2YWJsZTxVSURlZmluaXRpb25Db250YWluZXIgfCBudWxsPjtcblxuICBnZXRUZW1wbGF0ZXM/KCk6IE9ic2VydmFibGU8VUlUZW1wbGF0ZVtdPjtcbiAgZ2V0VGVtcGxhdGVDb21wb25lbnRzPyh0ZW1wbGF0ZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VGVtcGxhdGVDb21wb25lbnRXaXRoQXR0YWNobWVudHNbXSB8IG51bGw+O1xuXG4gIGdldFRlbXBsYXRlQ29uZmlndXJhdGlvblByb2Nlc3NvcnM/KHRlbXBsYXRlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uUHJvY2Vzc29yW10gfCBudWxsPjtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api/v2';\nimport { DEFAULT_ACTION_CODE_LABELS, DEFAULT_CURRENCY_ISO_CODE, DEFAULT_CURRENCY_SYMBOL, DEFAULT_DATE_FORMAT, DEFAULT_DECIMALS_COUNT, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, getSupportedDateFormats, parseJsonSafely, validateDateFormat, } from '@veloceapps/core';\nimport { uniqBy } from 'lodash';\nimport { BehaviorSubject, map, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nexport class RuntimeSettingsService {\n constructor(configurationSettingsApiService) {\n this.configurationSettingsApiService = configurationSettingsApiService;\n this.configurationSettings$ = new BehaviorSubject({});\n this.currencySettings$ = new BehaviorSubject({\n iso: DEFAULT_CURRENCY_ISO_CODE,\n symbol: DEFAULT_CURRENCY_SYMBOL,\n });\n this.shoppingCartSettings$ = new BehaviorSubject([]);\n this.getCurrencySymbol = (locale, currency) => {\n return (0)\n .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })\n .replace(/\\d/g, '')\n .trim();\n };\n }\n create() {\n return this.configurationSettingsApiService.fetchSettings().pipe(map(settings => this.parseConfigurationSettings(settings)), tap(configurationSettings => {\n this.configurationSettings$.next(configurationSettings);\n this.addShoppingCartSettings(configurationSettings['shopping-cart'] ?? []);\n this.formattingSettings = this.getFormattingSettings();\n }), map(() => undefined));\n }\n initCurrency(iso) {\n if (iso) {\n const symbol = this.getCurrencySymbol('en-US', iso);\n this.currencySettings$.next({ iso, symbol });\n if (this.formattingSettings) {\n this.formattingSettings.currencySymbol = symbol;\n }\n }\n }\n getFormattingSettings() {\n if (this.formattingSettings) {\n return this.formattingSettings;\n }\n const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {\n return { ...acc, [setting.id]: setting.properties };\n }, {});\n const currencySettings = this.getCurrencySettings();\n const dateFormat = (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||\n DEFAULT_DATE_FORMAT;\n const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR;\n const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR;\n // the number of decimal places can be 0\n const priceScale = shoppingCartSettings?.PRICE_SCALE;\n const decimalsCount = priceScale !== null && priceScale !== '' && !isNaN(Number(priceScale)) && Number(priceScale) >= 0\n ? Number(priceScale)\n : DEFAULT_DECIMALS_COUNT;\n const actionCodeSettings = shoppingCartSettings?.STATUS_LABEL;\n return {\n currencySymbol: currencySettings.symbol,\n dateFormats: getSupportedDateFormats(dateFormat),\n decimalsCount,\n decimalSeparator: decimalSeparator !== undefined && ['.', ','].includes(decimalSeparator)\n ? decimalSeparator\n : DEFAULT_DECIMAL_SEPARATOR,\n // thousands separator can be a blank value, so it can also be null\n thousandsSeparator: thousandsSeparator !== undefined && ['.', ',', '', null].includes(thousandsSeparator)\n ? thousandsSeparator || ''\n : DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: actionCodeSettings?.length\n ? actionCodeSettings.reduce((result, setting) => ({ ...result, [setting.status_label]: setting.custom_label }), {})\n : DEFAULT_ACTION_CODE_LABELS,\n };\n }\n getConfigurationSettings() {\n return this.configurationSettings$.value;\n }\n getShoppingCartSettings() {\n return this.shoppingCartSettings$.value;\n }\n getCurrencySettings() {\n return this.currencySettings$.value;\n }\n parseConfigurationSettings(settings) {\n return settings.reduce((acc, setting) => {\n switch (setting.key) {\n case 'shopping-cart':\n acc['shopping-cart'] = parseJsonSafely(setting.value, []);\n break;\n case 'navigation':\n acc.navigation = parseJsonSafely(setting.value, {});\n break;\n case 'flows':\n acc.flows = parseJsonSafely(setting.value, []);\n break;\n default:\n acc[setting.key] = setting.value;\n }\n return acc;\n }, {});\n }\n addShoppingCartSettings(settings) {\n // uniqBy removes items with the biggest index\n const newSettings = uniqBy([...settings, ...this.shoppingCartSettings$.value], 'id');\n this.shoppingCartSettings$.next(newSettings);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RuntimeSettingsService, deps: [{ token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RuntimeSettingsService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RuntimeSettingsService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ConfigurationSettingsApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9ydW50aW1lLXNldHRpbmdzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBRTNCLHVCQUF1QixFQUN2QixlQUFlLEVBS2Ysa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFjLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUk3RCxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQW9CLCtCQUFnRTtRQUFoRSxvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWlDO1FBUjVFLDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUMvRSxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBMEI7WUFDdkUsR0FBRyxFQUFFLHlCQUF5QjtZQUM5QixNQUFNLEVBQUUsdUJBQXVCO1NBQ2hDLENBQUMsQ0FBQztRQUVLLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQXVHdkUsc0JBQWlCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO1lBQy9ELE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ1AsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUss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T0FBTyxFQUFFLEVBQUU7WUFDcEUsUUFBUSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssZUFBZTtvQkFDbEIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGVBQWUsQ0FBd0IsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDakYsTUFBTTtnQkFDUixLQUFLLFlBQVk7b0JBQ2YsR0FBRyxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQXNCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pFLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLEdBQUcsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELE1BQU07Z0JBQ1I7b0JBQ0UsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3JDLENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFTTSx1QkFBdUIsQ0FBQyxRQUErQjtRQUM1RCw4Q0FBOEM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQXpIVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXR0aW5nc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblNldHRpbmdzLFxuICBERUZBVUxUX0FDVElPTl9DT0RFX0xBQkVMUyxcbiAgREVGQVVMVF9DVVJSRU5DWV9JU09fQ09ERSxcbiAgREVGQVVMVF9DVVJSRU5DWV9TWU1CT0wsXG4gIERFRkFVTFRfREFURV9GT1JNQVQsXG4gIERFRkFVTFRfREVDSU1BTFNfQ09VTlQsXG4gIERFRkFVTFRfREVDSU1BTF9TRVBBUkFUT1IsXG4gIERFRkFVTFRfVEhPVVNBTkRTX1NFUEFSQVRPUixcbiAgRmxvdyxcbiAgZ2V0U3VwcG9ydGVkRGF0ZUZvcm1hdHMsXG4gIHBhcnNlSnNvblNhZmVseSxcbiAgUnVudGltZUNvbmZpZ3VyYXRpb25TZXR0aW5ncyxcbiAgUnVudGltZUN1cnJlbmN5U2V0dGluZ3MsXG4gIFNob3BwaW5nQ2FydFNldHRpbmcsXG4gIFNob3BwaW5nQ2FydFNldHRpbmdzLFxuICB2YWxpZGF0ZURhdGVGb3JtYXQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1hdHRpbmdTZXR0aW5ncyB9IGZyb20gJy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXR0aW5ncyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJ1bnRpbWVDb25maWd1cmF0aW9uU2V0dGluZ3M+KHt9KTtcbiAgcHJpdmF0ZSBjdXJyZW5jeVNldHRpbmdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UnVudGltZUN1cnJlbmN5U2V0dGluZ3M+KHtcbiAgICBpc286IERFRkFVTFRfQ1VSUkVOQ1lfSVNPX0NPREUsXG4gICAgc3ltYm9sOiBERUZBVUxUX0NVUlJFTkNZX1NZTUJPTCxcbiAgfSk7XG4gIHByaXZhdGUgZm9ybWF0dGluZ1NldHRpbmdzITogRm9ybWF0dGluZ1NldHRpbmdzO1xuICBwcml2YXRlIHNob3BwaW5nQ2FydFNldHRpbmdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2hvcHBpbmdDYXJ0U2V0dGluZ1tdPihbXSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWd1cmF0aW9uU2V0dGluZ3NBcGlTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2V0dGluZ3NBcGlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBjcmVhdGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNldHRpbmdzQXBpU2VydmljZS5mZXRjaFNldHRpbmdzKCkucGlwZShcbiAgICAgIG1hcChzZXR0aW5ncyA9PiB0aGlzLnBhcnNlQ29uZmlndXJhdGlvblNldHRpbmdzKHNldHRpbmdzKSksXG4gICAgICB0YXAoY29uZmlndXJhdGlvblNldHRpbmdzID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2V0dGluZ3MkLm5leHQoY29uZmlndXJhdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5hZGRTaG9wcGluZ0NhcnRTZXR0aW5ncyhjb25maWd1cmF0aW9uU2V0dGluZ3NbJ3Nob3BwaW5nLWNhcnQnXSA/PyBbXSk7XG4gICAgICAgIHRoaXMuZm9ybWF0dGluZ1NldHRpbmdzID0gdGhpcy5nZXRGb3JtYXR0aW5nU2V0dGluZ3MoKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Q3VycmVuY3koaXNvPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzbykge1xuICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5nZXRDdXJyZW5jeVN5bWJvbCgnZW4tVVMnLCBpc28pO1xuICAgICAgdGhpcy5jdXJyZW5jeVNldHRpbmdzJC5uZXh0KHsgaXNvLCBzeW1ib2wgfSk7XG4gICAgICBpZiAodGhpcy5mb3JtYXR0aW5nU2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3MuY3VycmVuY3lTeW1ib2wgPSBzeW1ib2w7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZvcm1hdHRpbmdTZXR0aW5ncygpOiBGb3JtYXR0aW5nU2V0dGluZ3Mge1xuICAgIGlmICh0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncykge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGluZ1NldHRpbmdzO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3BwaW5nQ2FydFNldHRpbmdzID0gdGhpcy5nZXRDb25maWd1cmF0aW9uU2V0dGluZ3MoKVsnc2hvcHBpbmctY2FydCddPy5yZWR1Y2UoKGFjYywgc2V0dGluZykgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbc2V0dGluZy5pZF06IHNldHRpbmcucHJvcGVydGllcyB9O1xuICAgIH0sIHt9IGFzIFNob3BwaW5nQ2FydFNldHRpbmdzKTtcbiAgICBjb25zdCBjdXJyZW5jeVNldHRpbmdzID0gdGhpcy5nZXRDdXJyZW5jeVNldHRpbmdzKCk7XG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9XG4gICAgICAodmFsaWRhdGVEYXRlRm9ybWF0KHNob3BwaW5nQ2FydFNldHRpbmdzPy5EQVRFX0ZPUk1BVCA/PyAnJykgJiYgc2hvcHBpbmdDYXJ0U2V0dGluZ3M/LkRBVEVfRk9STUFUKSB8fFxuICAgICAgREVGQVVMVF9EQVRFX0ZPUk1BVDtcbiAgICBjb25zdCBkZWNpbWFsU2VwYXJhdG9yID0gc2hvcHBpbmdDYXJ0U2V0dGluZ3M/LkRFQ0lNQUxfU0VQQVJBVE9SO1xuICAgIGNvbnN0IHRob3VzYW5kc1NlcGFyYXRvciA9IHNob3BwaW5nQ2FydFNldHRpbmdzPy5USE9VU0FORFNfU0VQQVJBVE9SO1xuICAgIC8vIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgY2FuIGJlIDBcbiAgICBjb25zdCBwcmljZVNjYWxlID0gc2hvcHBpbmdDYXJ0U2V0dGluZ3M/LlBSSUNFX1NDQUxFO1xuICAgIGNvbnN0IGRlY2ltYWxzQ291bnQgPVxuICAgICAgcHJpY2VTY2FsZSAhPT0gbnVsbCAmJiBwcmljZVNjYWxlICE9PSAnJyAmJiAhaXNOYU4oTnVtYmVyKHByaWNlU2NhbGUpKSAmJiBOdW1iZXIocHJpY2VTY2FsZSkgPj0gMFxuICAgICAgICA/IE51bWJlcihwcmljZVNjYWxlKVxuICAgICAgICA6IERFRkFVTFRfREVDSU1BTFNfQ09VTlQ7XG5cbiAgICBjb25zdCBhY3Rpb25Db2RlU2V0dGluZ3MgPSBzaG9wcGluZ0NhcnRTZXR0aW5ncz8uU1RBVFVTX0xBQkVMO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbmN5U3ltYm9sOiBjdXJyZW5jeVNldHRpbmdzLnN5bWJvbCxcbiAgICAgIGRhdGVGb3JtYXRzOiBnZXRTdXBwb3J0ZWREYXRlRm9ybWF0cyhkYXRlRm9ybWF0KSxcbiAgICAgIGRlY2ltYWxzQ291bnQsXG4gICAgICBkZWNpbWFsU2VwYXJhdG9yOlxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yICE9PSB1bmRlZmluZWQgJiYgWycuJywgJywnXS5pbmNsdWRlcyhkZWNpbWFsU2VwYXJhdG9yKVxuICAgICAgICAgID8gZGVjaW1hbFNlcGFyYXRvclxuICAgICAgICAgIDogREVGQVVMVF9ERUNJTUFMX1NFUEFSQVRPUixcbiAgICAgIC8vIHRob3VzYW5kcyBzZXBhcmF0b3IgY2FuIGJlIGEgYmxhbmsgdmFsdWUsIHNvIGl0IGNhbiBhbHNvIGJlIG51bGxcbiAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjpcbiAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yICE9PSB1bmRlZmluZWQgJiYgWycuJywgJywnLCAnJywgbnVsbF0uaW5jbHVkZXModGhvdXNhbmRzU2VwYXJhdG9yKVxuICAgICAgICAgID8gdGhvdXNhbmRzU2VwYXJhdG9yIHx8ICcnXG4gICAgICAgICAgOiBERUZBVUxUX1RIT1VTQU5EU19TRVBBUkFUT1IsXG4gICAgICBhY3Rpb25Db2RlTGFiZWxzOiBhY3Rpb25Db2RlU2V0dGluZ3M/Lmxlbmd0aFxuICAgICAgICA/IGFjdGlvbkNvZGVTZXR0aW5ncy5yZWR1Y2UoXG4gICAgICAgICAgICAocmVzdWx0LCBzZXR0aW5nKSA9PiAoeyAuLi5yZXN1bHQsIFtzZXR0aW5nLnN0YXR1c19sYWJlbF06IHNldHRpbmcuY3VzdG9tX2xhYmVsIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKVxuICAgICAgICA6IERFRkFVTFRfQUNUSU9OX0NPREVfTEFCRUxTLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlndXJhdGlvblNldHRpbmdzKCk6IFJ1bnRpbWVDb25maWd1cmF0aW9uU2V0dGluZ3Mge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXR0aW5ncyQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2hvcHBpbmdDYXJ0U2V0dGluZ3MoKTogU2hvcHBpbmdDYXJ0U2V0dGluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zaG9wcGluZ0NhcnRTZXR0aW5ncyQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVuY3lTZXR0aW5ncygpOiBSdW50aW1lQ3VycmVuY3lTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lTZXR0aW5ncyQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQ29uZmlndXJhdGlvblNldHRpbmdzKHNldHRpbmdzOiBDb25maWd1cmF0aW9uU2V0dGluZ3NbXSk6IFJ1bnRpbWVDb25maWd1cmF0aW9uU2V0dGluZ3Mge1xuICAgIHJldHVybiBzZXR0aW5ncy5yZWR1Y2UoKGFjYzogUnVudGltZUNvbmZpZ3VyYXRpb25TZXR0aW5ncywgc2V0dGluZykgPT4ge1xuICAgICAgc3dpdGNoIChzZXR0aW5nLmtleSkge1xuICAgICAgICBjYXNlICdzaG9wcGluZy1jYXJ0JzpcbiAgICAgICAgICBhY2NbJ3Nob3BwaW5nLWNhcnQnXSA9IHBhcnNlSnNvblNhZmVseTxTaG9wcGluZ0NhcnRTZXR0aW5nW10+KHNldHRpbmcudmFsdWUsIFtdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmF2aWdhdGlvbic6XG4gICAgICAgICAgYWNjLm5hdmlnYXRpb24gPSBwYXJzZUpzb25TYWZlbHk8RGljdGlvbmFyeTxib29sZWFuPj4oc2V0dGluZy52YWx1ZSwge30pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmbG93cyc6XG4gICAgICAgICAgYWNjLmZsb3dzID0gcGFyc2VKc29uU2FmZWx5PEZsb3dbXT4oc2V0dGluZy52YWx1ZSwgW10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFjY1tzZXR0aW5nLmtleV0gPSBzZXR0aW5nLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVuY3lTeW1ib2wgPSAobG9jYWxlOiBzdHJpbmcsIGN1cnJlbmN5OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gKDApXG4gICAgICAudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeSwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSlcbiAgICAgIC5yZXBsYWNlKC9cXGQvZywgJycpXG4gICAgICAudHJpbSgpO1xuICB9O1xuXG4gIHB1YmxpYyBhZGRTaG9wcGluZ0NhcnRTZXR0aW5ncyhzZXR0aW5nczogU2hvcHBpbmdDYXJ0U2V0dGluZ1tdKSB7XG4gICAgLy8gdW5pcUJ5IHJlbW92ZXMgaXRlbXMgd2l0aCB0aGUgYmlnZ2VzdCBpbmRleFxuICAgIGNvbnN0IG5ld1NldHRpbmdzID0gdW5pcUJ5KFsuLi5zZXR0aW5ncywgLi4udGhpcy5zaG9wcGluZ0NhcnRTZXR0aW5ncyQudmFsdWVdLCAnaWQnKTtcbiAgICB0aGlzLnNob3BwaW5nQ2FydFNldHRpbmdzJC5uZXh0KG5ld1NldHRpbmdzKTtcbiAgfVxufVxuIl19","import { Inject, Injectable, Optional } from '@angular/core';\nimport { UITemplatesAdminApiService } from '@veloceapps/api/v2';\nimport { isDefined, SalesforceIdUtils, UITemplateType, } from '@veloceapps/core';\nimport { BehaviorSubject, filter, forkJoin, map, of, switchMap } from 'rxjs';\nimport { FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { RuntimeSettingsService } from './runtime-settings.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./runtime-settings.service\";\nimport * as i2 from \"@veloceapps/api/v2\";\nexport class FlowInfoService {\n constructor(runtimeSettingsService, templatesAdminApiService, customizationService) {\n this.runtimeSettingsService = runtimeSettingsService;\n this.templatesAdminApiService = templatesAdminApiService;\n this.customizationService = customizationService;\n this.defaultTemplates = {\n flowEngine: 'Flow Engine',\n };\n this.flowSubj$ = new BehaviorSubject(null);\n this.templatesSubj$ = new BehaviorSubject({});\n this.contextSubj$ = new BehaviorSubject(null);\n this.flow$ = this.flowSubj$.asObservable();\n this.templates$ = this.templatesSubj$.asObservable();\n }\n get flow() {\n if (!this.flowSubj$.value) {\n throw new Error(`Flow not initialized yet`);\n }\n return this.flowSubj$.value;\n }\n get isFlowInitialized() {\n return Boolean(this.flowSubj$.value);\n }\n get context() {\n if (!this.contextSubj$.value) {\n throw new Error('Context is not initialized yet!');\n }\n return { ...this.contextSubj$.value };\n }\n get context$() {\n return this.contextSubj$.asObservable().pipe(filter(isDefined));\n }\n get templates() {\n return this.templatesSubj$.value;\n }\n get isFlowEngineInitialized$() {\n return this.templates$.pipe(map(v => Boolean(v.FLOW_ENGINE)));\n }\n get isStateful() {\n return !!this.flow?.properties.stateful;\n }\n reset() {\n this.flowSubj$.next(null);\n this.templatesSubj$.next({});\n this.contextSubj$.next(null);\n }\n init$(flowId, routeQueryParams) {\n return this.initFlow$(flowId, routeQueryParams).pipe(switchMap(() => this.initFlowTemplates$()));\n }\n updateContext(update) {\n this.contextSubj$.next({\n ...this.context,\n ...update,\n });\n }\n initFlow$(flowId, routeQueryParams) {\n const flow = this.runtimeSettingsService.getConfigurationSettings()['flows']?.find(({ id }) => flowId === id);\n if (!flow) {\n this.flowSubj$.next(null);\n throw new Error(`Flow with flowId=${flowId} is not defined`);\n }\n const headerId = routeQueryParams['headerId'];\n if (typeof headerId !== 'string') {\n throw new Error(`Please provide 'headerId'`);\n }\n const mode = this.getFlowContextMode(headerId);\n // Restrict if mode is not defined\n if (mode == null) {\n throw new Error('Mode is undefined');\n }\n this.contextSubj$.next({\n ...flow.properties.queryParams,\n ...routeQueryParams,\n mode,\n });\n this.flowSubj$.next(flow);\n return of(undefined);\n }\n initFlowTemplates$() {\n return forkJoin([\n this.templatesAdminApiService.fetchTemplates$(),\n this.customizationService?.getTemplates?.() ?? of([]),\n ]).pipe(map(([templates, localTemplates]) => {\n const newValue = {};\n Object.entries({ ...this.defaultTemplates, ...(this.flow?.properties.templates ?? {}) }).forEach(([key, name]) => {\n const type = this.remapTemplateName(key);\n if (type) {\n newValue[type] =\n localTemplates.find(template => template.name === name && template.type === type) ??\n templates.find(template => template.name === name && template.type === type);\n }\n });\n this.templatesSubj$.next(newValue);\n }));\n }\n remapTemplateName(templateType) {\n switch (templateType) {\n case 'flowEngine':\n return UITemplateType.FLOW_ENGINE;\n default:\n break;\n }\n switch (templateType) {\n case 'assets':\n case 'shoppingCart':\n // No separate Assets template at the moment\n return UITemplateType.SHOPPING_CART;\n case 'catalog':\n return UITemplateType.CATALOG;\n case 'guidedSelling':\n return UITemplateType.GUIDED_SELLING;\n case 'flowHeader':\n return UITemplateType.FLOW_HEADER;\n default:\n break;\n }\n return undefined;\n }\n getFlowContextMode(headerId) {\n const objectName = SalesforceIdUtils.getSfObjectNameById(headerId);\n if (!objectName) {\n return;\n }\n return objectName.toUpperCase();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowInfoService, deps: [{ token: i1.RuntimeSettingsService }, { token: i2.UITemplatesAdminApiService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowInfoService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowInfoService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.RuntimeSettingsService }, { type: i2.UITemplatesAdminApiService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FLOW_CUSTOMIZATION]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBS0wsU0FBUyxFQUNULGlCQUFpQixFQUVqQixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBR3BFLE1BQU0sT0FBTyxlQUFlO0lBVTFCLFlBQ1Usc0JBQThDLEVBQzlDLHdCQUFvRCxFQUNaLG9CQUF3QztRQUZoRiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBNEI7UUFDWix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBVnpFLHFCQUFnQixHQUFHO1lBQ2xDLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUM7UUFDTSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBMkMsRUFBRSxDQUFDLENBQUM7UUFDbkYsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFPbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQWMsRUFBRSxnQkFBd0I7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBNEI7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEdBQUcsTUFBTTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBYyxFQUFFLGdCQUF3QjtRQUN4RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsTUFBTSxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLGtDQUFrQztRQUNsQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO1lBQzlCLEdBQUcsZ0JBQWdCO1lBQ25CLElBQUk7U0FDVSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLFFBQVEsQ0FBQztZQUNkLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEVBQUU7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUN0RCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxRQUFRLEdBQTZDLEVBQUUsQ0FBQztZQUM5RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUM5RixDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV6QyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ1osY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDOzRCQUNqRixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDakYsQ0FBQztZQUNILENBQUMsQ0FDRixDQUFDO1lBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxZQUFvQjtRQUM1QyxRQUFRLFlBQWtELEVBQUUsQ0FBQztZQUMzRCxLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ3BDO2dCQUNFLE1BQU07UUFDVixDQUFDO1FBRUQsUUFBUSxZQUFzQyxFQUFFLENBQUM7WUFDL0MsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLGNBQWM7Z0JBQ2pCLDRDQUE0QztnQkFDNUMsT0FBTyxjQUFjLENBQUMsYUFBYSxDQUFDO1lBQ3RDLEtBQUssU0FBUztnQkFDWixPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDaEMsS0FBSyxlQUFlO2dCQUNsQixPQUFPLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDdkMsS0FBSyxZQUFZO2dCQUNmLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUNwQztnQkFDRSxNQUFNO1FBQ1YsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQXFCLENBQUM7SUFDckQsQ0FBQzs4R0E5SlUsZUFBZSxrR0FhSixrQkFBa0I7a0hBYjdCLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQWNOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVJVGVtcGxhdGVzQWRtaW5BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7XG4gIEZsb3csXG4gIEZsb3dDb250ZXh0LFxuICBGbG93Q29udGV4dE1vZGUsXG4gIEZsb3dUZW1wbGF0ZXNNYXAsXG4gIGlzRGVmaW5lZCxcbiAgU2FsZXNmb3JjZUlkVXRpbHMsXG4gIFVJVGVtcGxhdGUsXG4gIFVJVGVtcGxhdGVUeXBlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGTE9XX0NVU1RPTUlaQVRJT04sIEZsb3dDdXN0b21pemF0aW9uIH0gZnJvbSAnLi4vdHlwZXMvZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzJztcbmltcG9ydCB7IFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtc2V0dGluZ3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93SW5mb1NlcnZpY2Uge1xuICBwdWJsaWMgZmxvdyQ6IE9ic2VydmFibGU8RmxvdyB8IG51bGw+O1xuICBwdWJsaWMgdGVtcGxhdGVzJDogT2JzZXJ2YWJsZTx7IFtrZXkgaW4gVUlUZW1wbGF0ZVR5cGVdPzogVUlUZW1wbGF0ZSB9PjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VGVtcGxhdGVzID0ge1xuICAgIGZsb3dFbmdpbmU6ICdGbG93IEVuZ2luZScsXG4gIH07XG4gIHByaXZhdGUgZmxvd1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGbG93IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgdGVtcGxhdGVzU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleSBpbiBVSVRlbXBsYXRlVHlwZV0/OiBVSVRlbXBsYXRlIH0+KHt9KTtcbiAgcHJpdmF0ZSBjb250ZXh0U3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZsb3dDb250ZXh0IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBydW50aW1lU2V0dGluZ3NTZXJ2aWNlOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQWRtaW5BcGlTZXJ2aWNlOiBVSVRlbXBsYXRlc0FkbWluQXBpU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLmZsb3ckID0gdGhpcy5mbG93U3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy50ZW1wbGF0ZXMkID0gdGhpcy50ZW1wbGF0ZXNTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmxvdygpOiBGbG93IHtcbiAgICBpZiAoIXRoaXMuZmxvd1N1YmokLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsb3cgbm90IGluaXRpYWxpemVkIHlldGApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dTdWJqJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGbG93SW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5mbG93U3ViaiQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0KCk6IEZsb3dDb250ZXh0IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dFN1YmokLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRleHQgaXMgbm90IGluaXRpYWxpemVkIHlldCEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyAuLi50aGlzLmNvbnRleHRTdWJqJC52YWx1ZSB9O1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPEZsb3dDb250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFN1YmokLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKGlzRGVmaW5lZCkpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzU3ViaiQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRmxvd0VuZ2luZUluaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXMkLnBpcGUobWFwKHYgPT4gQm9vbGVhbih2LkZMT1dfRU5HSU5FKSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0YXRlZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmxvdz8ucHJvcGVydGllcy5zdGF0ZWZ1bDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3dTdWJqJC5uZXh0KG51bGwpO1xuICAgIHRoaXMudGVtcGxhdGVzU3ViaiQubmV4dCh7fSk7XG4gICAgdGhpcy5jb250ZXh0U3ViaiQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0JChmbG93SWQ6IHN0cmluZywgcm91dGVRdWVyeVBhcmFtczogUGFyYW1zKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdEZsb3ckKGZsb3dJZCwgcm91dGVRdWVyeVBhcmFtcykucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0Rmxvd1RlbXBsYXRlcyQoKSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodXBkYXRlOiBQYXJ0aWFsPEZsb3dDb250ZXh0Pik6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFN1YmokLm5leHQoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LFxuICAgICAgLi4udXBkYXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RmxvdyQoZmxvd0lkOiBzdHJpbmcsIHJvdXRlUXVlcnlQYXJhbXM6IFBhcmFtcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZsb3cgPSB0aGlzLnJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UuZ2V0Q29uZmlndXJhdGlvblNldHRpbmdzKClbJ2Zsb3dzJ10/LmZpbmQoKHsgaWQgfSkgPT4gZmxvd0lkID09PSBpZCk7XG4gICAgaWYgKCFmbG93KSB7XG4gICAgICB0aGlzLmZsb3dTdWJqJC5uZXh0KG51bGwpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGbG93IHdpdGggZmxvd0lkPSR7Zmxvd0lkfSBpcyBub3QgZGVmaW5lZGApO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlcklkID0gcm91dGVRdWVyeVBhcmFtc1snaGVhZGVySWQnXTtcbiAgICBpZiAodHlwZW9mIGhlYWRlcklkICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQbGVhc2UgcHJvdmlkZSAnaGVhZGVySWQnYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0Rmxvd0NvbnRleHRNb2RlKGhlYWRlcklkKTtcblxuICAgIC8vIFJlc3RyaWN0IGlmIG1vZGUgaXMgbm90IGRlZmluZWRcbiAgICBpZiAobW9kZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01vZGUgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0U3ViaiQubmV4dCh7XG4gICAgICAuLi5mbG93LnByb3BlcnRpZXMucXVlcnlQYXJhbXMsXG4gICAgICAuLi5yb3V0ZVF1ZXJ5UGFyYW1zLFxuICAgICAgbW9kZSxcbiAgICB9IGFzIEZsb3dDb250ZXh0KTtcblxuICAgIHRoaXMuZmxvd1N1YmokLm5leHQoZmxvdyk7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGbG93VGVtcGxhdGVzJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgdGhpcy50ZW1wbGF0ZXNBZG1pbkFwaVNlcnZpY2UuZmV0Y2hUZW1wbGF0ZXMkKCksXG4gICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZXM/LigpID8/IG9mKFtdKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdGVtcGxhdGVzLCBsb2NhbFRlbXBsYXRlc10pID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWU6IHsgW2tleSBpbiBVSVRlbXBsYXRlVHlwZV0/OiBVSVRlbXBsYXRlIH0gPSB7fTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoeyAuLi50aGlzLmRlZmF1bHRUZW1wbGF0ZXMsIC4uLih0aGlzLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzID8/IHt9KSB9KS5mb3JFYWNoKFxuICAgICAgICAgIChba2V5LCBuYW1lXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMucmVtYXBUZW1wbGF0ZU5hbWUoa2V5KTtcblxuICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgbmV3VmFsdWVbdHlwZV0gPVxuICAgICAgICAgICAgICAgIGxvY2FsVGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUubmFtZSA9PT0gbmFtZSAmJiB0ZW1wbGF0ZS50eXBlID09PSB0eXBlKSA/P1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHRlbXBsYXRlLm5hbWUgPT09IG5hbWUgJiYgdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRlbXBsYXRlc1N1YmokLm5leHQobmV3VmFsdWUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtYXBUZW1wbGF0ZU5hbWUodGVtcGxhdGVUeXBlOiBzdHJpbmcpOiBVSVRlbXBsYXRlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0ZW1wbGF0ZVR5cGUgYXMga2V5b2YgdHlwZW9mIHRoaXMuZGVmYXVsdFRlbXBsYXRlcykge1xuICAgICAgY2FzZSAnZmxvd0VuZ2luZSc6XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGVtcGxhdGVUeXBlIGFzIGtleW9mIEZsb3dUZW1wbGF0ZXNNYXApIHtcbiAgICAgIGNhc2UgJ2Fzc2V0cyc6XG4gICAgICBjYXNlICdzaG9wcGluZ0NhcnQnOlxuICAgICAgICAvLyBObyBzZXBhcmF0ZSBBc3NldHMgdGVtcGxhdGUgYXQgdGhlIG1vbWVudFxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuU0hPUFBJTkdfQ0FSVDtcbiAgICAgIGNhc2UgJ2NhdGFsb2cnOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuQ0FUQUxPRztcbiAgICAgIGNhc2UgJ2d1aWRlZFNlbGxpbmcnOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuR1VJREVEX1NFTExJTkc7XG4gICAgICBjYXNlICdmbG93SGVhZGVyJzpcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLkZMT1dfSEVBREVSO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmxvd0NvbnRleHRNb2RlKGhlYWRlcklkOiBzdHJpbmcpOiBGbG93Q29udGV4dE1vZGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG9iamVjdE5hbWUgPSBTYWxlc2ZvcmNlSWRVdGlscy5nZXRTZk9iamVjdE5hbWVCeUlkKGhlYWRlcklkKTtcbiAgICBpZiAoIW9iamVjdE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0TmFtZS50b1VwcGVyQ2FzZSgpIGFzIEZsb3dDb250ZXh0TW9kZTtcbiAgfVxufVxuIl19","export class PCMUtils {\n static mapByPrcId(pcm) {\n const map = {};\n if (pcm.productRelatedComponent) {\n map[pcm.productRelatedComponent.id] = pcm;\n }\n for (const group of pcm.productComponentGroups) {\n for (const gc of group.components) {\n Object.assign(map, PCMUtils.mapByPrcId(gc));\n }\n }\n return map;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGNtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9wY20udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLFFBQVE7SUFDWixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQWU7UUFDdEMsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQy9DLEtBQUssTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBDTVByb2R1Y3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgUENNVXRpbHMge1xuICBwdWJsaWMgc3RhdGljIG1hcEJ5UHJjSWQocGNtOiBQQ01Qcm9kdWN0KTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiB7XG4gICAgY29uc3QgbWFwOiBEaWN0aW9uYXJ5PFBDTVByb2R1Y3Q+ID0ge307XG4gICAgaWYgKHBjbS5wcm9kdWN0UmVsYXRlZENvbXBvbmVudCkge1xuICAgICAgbWFwW3BjbS5wcm9kdWN0UmVsYXRlZENvbXBvbmVudC5pZF0gPSBwY207XG4gICAgfVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgcGNtLnByb2R1Y3RDb21wb25lbnRHcm91cHMpIHtcbiAgICAgIGZvciAoY29uc3QgZ2Mgb2YgZ3JvdXAuY29tcG9uZW50cykge1xuICAgICAgICBPYmplY3QuYXNzaWduKG1hcCwgUENNVXRpbHMubWFwQnlQcmNJZChnYykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9XG59XG4iXX0=","import { isDefined, UUID, } from '@veloceapps/core';\nimport { flatten } from 'lodash';\nimport { PCMUtils } from './pcm.utils';\nexport const findTransactionItem = (id, items) => {\n return findTransactionItemWithComparator(items, (ti) => ti.id === id);\n};\nexport const findTransactionItemWithComparator = (items, comparator) => {\n let currentLevel = items;\n while (currentLevel.length) {\n const found = currentLevel.find(comparator);\n if (found) {\n return found;\n }\n currentLevel = flatten(currentLevel.map(parent => parent.children));\n }\n return;\n};\nexport const insertTransactionItem = (item, parentId, toInsert) => {\n const insertData = item.id === parentId ? [toInsert] : [];\n return {\n ...item,\n children: [\n ...insertData,\n ...item.children.map(ti => {\n return insertTransactionItem(ti, parentId, toInsert);\n }),\n ],\n };\n};\nexport const removeTransactionItem = (item, idToRemove) => {\n return {\n ...item,\n children: item.children\n .map(ti => {\n if (ti.id === idToRemove) {\n return;\n }\n else if (ti.children.length) {\n return removeTransactionItem(ti, idToRemove);\n }\n return ti;\n })\n .filter(isDefined),\n };\n};\nexport const replaceTransactionItem = (item, replaceTo) => {\n if (item.id === replaceTo.id) {\n return { ...replaceTo };\n }\n return {\n ...item,\n children: item.children.map(ti => replaceTransactionItem(ti, replaceTo)),\n };\n};\nexport const generateTransactionItem = (option, salesTransactionId, qty, parentTi) => {\n const newItem = generateTransactionItemFromPCM(option, salesTransactionId, parentTi);\n // propagate Proportional quantities to children\n const updatedNewItem = updateQuantity(newItem, qty ?? newItem.qty, option, parentTi?.qty);\n return updatedNewItem;\n};\nexport const generateTransactionItemFromPCM = (option, salesTransactionId, parentTi) => {\n const childId = UUID.UUID();\n const newItem = {\n id: childId,\n productId: option.id,\n productName: option.name,\n productCode: option.productCode,\n productRelatedComponentId: option.productRelatedComponent?.id,\n constraintEngineNodeStatus: {\n attributes: [],\n cfgStatus: 'User',\n },\n stiAttributes: [],\n attributes: {\n ParentReference: salesTransactionId,\n ItemPath: option.id,\n SalesTransactionItemSource: childId,\n SalesTransactionItemParent: salesTransactionId,\n ProductSellingModel: option.productSellingModelOptions?.[0]?.productSellingModel.id,\n },\n qty: option.productRelatedComponent?.quantity ?? 1,\n };\n if (parentTi) {\n newItem.parentId = parentTi.id;\n }\n newItem.children = option.productComponentGroups.reduce((acc, group) => {\n group.components.forEach(component => {\n if (component.productRelatedComponent?.isComponentRequired ||\n component.productRelatedComponent?.isDefaultComponent) {\n acc.push(generateTransactionItemFromPCM(component, salesTransactionId, newItem));\n }\n });\n return acc;\n }, []);\n return newItem;\n};\nexport const flattenTransactionItem = (ti) => {\n const result = [];\n const traverse = (item) => {\n if (!item)\n return;\n result.push(item);\n if (Array.isArray(item.children) && item.children.length) {\n for (const child of item.children) {\n traverse(child);\n }\n }\n };\n traverse(ti);\n return result;\n};\nexport const updateQuantity = (ti, qty, pcm, parentQty = 1) => {\n const pcmMap = PCMUtils.mapByPrcId(pcm);\n const calcNewQty = (item, parentPrevQty, parentNewQty, parentPcm, inputQty, isDirectChange) => {\n const scaleMethod = parentPcm?.productRelatedComponent?.quantityScaleMethod;\n if (isDirectChange) {\n return scaleMethod === 'Proportional' ? parentPrevQty * inputQty : inputQty;\n }\n else {\n return scaleMethod === 'Proportional' ? (item.qty / parentPrevQty) * parentNewQty : item.qty;\n }\n };\n const updateItem = (item, parentPrevQty, parentNewQty, isDirectChange) => {\n const pcm = pcmMap[item.productRelatedComponentId];\n let nextQty = item.qty;\n if (item.id === ti.id || isDirectChange) {\n nextQty = calcNewQty(item, parentPrevQty, parentNewQty, pcm, qty, true);\n }\n else if (parentPrevQty !== parentNewQty) {\n nextQty = calcNewQty(item, parentPrevQty, parentNewQty, pcm, qty, false);\n }\n const sti = {\n ...item,\n qty: nextQty,\n children: item.children.map(child => updateItem(child, item.qty, nextQty, false)),\n };\n if (nextQty !== item.qty) {\n sti.constraintEngineNodeStatus = { ...sti.constraintEngineNodeStatus, cfgStatus: 'User' };\n }\n return sti;\n };\n return updateItem(ti, parentQty, parentQty, false);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taXRlbS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdXRpbHMvdHJhbnNhY3Rpb24taXRlbS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUtULElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUE2QixFQUFvQyxFQUFFO0lBQ2pILE9BQU8saUNBQWlDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM5RixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUMvQyxLQUE2QixFQUM3QixVQUFpRCxFQUNmLEVBQUU7SUFDcEMsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRXpCLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsSUFBMEIsRUFDMUIsUUFBZ0IsRUFDaEIsUUFBOEIsRUFDUixFQUFFO0lBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFMUQsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLFFBQVEsRUFBRTtZQUNSLEdBQUcsVUFBVTtZQUNiLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8scUJBQXFCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUM7U0FDSDtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQTBCLEVBQUUsVUFBa0IsRUFBd0IsRUFBRTtJQUM1RyxPQUFPO1FBQ0wsR0FBRyxJQUFJO1FBQ1AsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3BCLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNSLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDekIsT0FBTztZQUNULENBQUM7aUJBQU0sSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM5QixPQUFPLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO0tBQ3JCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUNwQyxJQUEwQixFQUMxQixTQUErQixFQUNULEVBQUU7SUFDeEIsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QixPQUFPLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUN6RSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsTUFBZ0IsRUFDaEIsa0JBQTJCLEVBQzNCLEdBQVksRUFDWixRQUErQixFQUNULEVBQUU7SUFDeEIsTUFBTSxPQUFPLEdBQUcsOEJBQThCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXJGLGdEQUFnRDtJQUNoRCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFMUYsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDNUMsTUFBZ0IsRUFDaEIsa0JBQTJCLEVBQzNCLFFBQStCLEVBQ1QsRUFBRTtJQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFNUIsTUFBTSxPQUFPLEdBQUc7UUFDZCxFQUFFLEVBQUUsT0FBTztRQUNYLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRTtRQUNwQixXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDeEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFO1FBQzdELDBCQUEwQixFQUFFO1lBQzFCLFVBQVUsRUFBRSxFQUFpQztZQUM3QyxTQUFTLEVBQUUsTUFBTTtTQUNsQjtRQUNELGFBQWEsRUFBRSxFQUFxQztRQUNwRCxVQUFVLEVBQUU7WUFDVixlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNuQiwwQkFBMEIsRUFBRSxPQUFPO1lBQ25DLDBCQUEwQixFQUFFLGtCQUFrQjtZQUM5QyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1NBQ3pEO1FBQzVCLEdBQUcsRUFBRSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxJQUFJLENBQUM7S0FDM0IsQ0FBQztJQUUxQixJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUEyQixFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdGLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ25DLElBQ0UsU0FBUyxDQUFDLHVCQUF1QixFQUFFLG1CQUFtQjtnQkFDdEQsU0FBUyxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixFQUNyRCxDQUFDO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQXdCLEVBQTBCLEVBQUU7SUFDekYsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUMxQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQTBCLEVBQUUsRUFBRTtRQUM5QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUViLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixFQUF3QixFQUN4QixHQUFXLEVBQ1gsR0FBZSxFQUNmLFNBQVMsR0FBRyxDQUFDLEVBQ1MsRUFBRTtJQUN4QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sVUFBVSxHQUFHLENBQ2pCLElBQTBCLEVBQzFCLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLFNBQWlDLEVBQ2pDLFFBQWdCLEVBQ2hCLGNBQXVCLEVBQ2YsRUFBRTtRQUNWLE1BQU0sV0FBVyxHQUFHLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsQ0FBQztRQUM1RSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sV0FBVyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxXQUFXLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9GLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxDQUNqQixJQUEwQixFQUMxQixhQUFxQixFQUNyQixZQUFvQixFQUNwQixjQUF1QixFQUNELEVBQUU7UUFDeEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ25ELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLENBQUM7YUFBTSxJQUFJLGFBQWEsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHO1lBQ1YsR0FBRyxJQUFJO1lBQ1AsR0FBRyxFQUFFLE9BQU87WUFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xGLENBQUM7UUFFRixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsR0FBRyxDQUFDLDBCQUEwQixHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzVGLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUVGLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cmFpbnRFbmdpbmVBdHRyaWJ1dGUsXG4gIGlzRGVmaW5lZCxcbiAgUENNTW9kZWwsXG4gIFBDTVByb2R1Y3QsXG4gIFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZSxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBDTVV0aWxzIH0gZnJvbSAnLi9wY20udXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZmluZFRyYW5zYWN0aW9uSXRlbSA9IChpZDogc3RyaW5nLCBpdGVtczogU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGZpbmRUcmFuc2FjdGlvbkl0ZW1XaXRoQ29tcGFyYXRvcihpdGVtcywgKHRpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSkgPT4gdGkuaWQgPT09IGlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kVHJhbnNhY3Rpb25JdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGl0ZW1zOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdLFxuICBjb21wYXJhdG9yOiAodGk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtKSA9PiBib29sZWFuLFxuKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgY3VycmVudExldmVsID0gaXRlbXM7XG5cbiAgd2hpbGUgKGN1cnJlbnRMZXZlbC5sZW5ndGgpIHtcbiAgICBjb25zdCBmb3VuZCA9IGN1cnJlbnRMZXZlbC5maW5kKGNvbXBhcmF0b3IpO1xuXG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuXG4gICAgY3VycmVudExldmVsID0gZmxhdHRlbihjdXJyZW50TGV2ZWwubWFwKHBhcmVudCA9PiBwYXJlbnQuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUcmFuc2FjdGlvbkl0ZW0gPSAoXG4gIGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICB0b0luc2VydDogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGNvbnN0IGluc2VydERhdGEgPSBpdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcblxuICByZXR1cm4ge1xuICAgIC4uLml0ZW0sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5pdGVtLmNoaWxkcmVuLm1hcCh0aSA9PiB7XG4gICAgICAgIHJldHVybiBpbnNlcnRUcmFuc2FjdGlvbkl0ZW0odGksIHBhcmVudElkLCB0b0luc2VydCk7XG4gICAgICB9KSxcbiAgICBdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVRyYW5zYWN0aW9uSXRlbSA9IChpdGVtOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSwgaWRUb1JlbW92ZTogc3RyaW5nKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLml0ZW0sXG4gICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW5cbiAgICAgIC5tYXAodGkgPT4ge1xuICAgICAgICBpZiAodGkuaWQgPT09IGlkVG9SZW1vdmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodGkuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZVRyYW5zYWN0aW9uSXRlbSh0aSwgaWRUb1JlbW92ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihpc0RlZmluZWQpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2VUcmFuc2FjdGlvbkl0ZW0gPSAoXG4gIGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICByZXBsYWNlVG86IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gPT4ge1xuICBpZiAoaXRlbS5pZCA9PT0gcmVwbGFjZVRvLmlkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVwbGFjZVRvIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLml0ZW0sXG4gICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW4ubWFwKHRpID0+IHJlcGxhY2VUcmFuc2FjdGlvbkl0ZW0odGksIHJlcGxhY2VUbykpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtID0gKFxuICBvcHRpb246IFBDTU1vZGVsLFxuICBzYWxlc1RyYW5zYWN0aW9uSWQ/OiBzdHJpbmcsXG4gIHF0eT86IG51bWJlcixcbiAgcGFyZW50VGk/OiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbik6IFNhbGVzVHJhbnNhY3Rpb25JdGVtID0+IHtcbiAgY29uc3QgbmV3SXRlbSA9IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtRnJvbVBDTShvcHRpb24sIHNhbGVzVHJhbnNhY3Rpb25JZCwgcGFyZW50VGkpO1xuXG4gIC8vIHByb3BhZ2F0ZSBQcm9wb3J0aW9uYWwgcXVhbnRpdGllcyB0byBjaGlsZHJlblxuICBjb25zdCB1cGRhdGVkTmV3SXRlbSA9IHVwZGF0ZVF1YW50aXR5KG5ld0l0ZW0sIHF0eSA/PyBuZXdJdGVtLnF0eSwgb3B0aW9uLCBwYXJlbnRUaT8ucXR5KTtcblxuICByZXR1cm4gdXBkYXRlZE5ld0l0ZW07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW1Gcm9tUENNID0gKFxuICBvcHRpb246IFBDTU1vZGVsLFxuICBzYWxlc1RyYW5zYWN0aW9uSWQ/OiBzdHJpbmcsXG4gIHBhcmVudFRpPzogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGNvbnN0IGNoaWxkSWQgPSBVVUlELlVVSUQoKTtcblxuICBjb25zdCBuZXdJdGVtID0ge1xuICAgIGlkOiBjaGlsZElkLFxuICAgIHByb2R1Y3RJZDogb3B0aW9uLmlkLFxuICAgIHByb2R1Y3ROYW1lOiBvcHRpb24ubmFtZSxcbiAgICBwcm9kdWN0Q29kZTogb3B0aW9uLnByb2R1Y3RDb2RlLFxuICAgIHByb2R1Y3RSZWxhdGVkQ29tcG9uZW50SWQ6IG9wdGlvbi5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8uaWQsXG4gICAgY29uc3RyYWludEVuZ2luZU5vZGVTdGF0dXM6IHtcbiAgICAgIGF0dHJpYnV0ZXM6IFtdIGFzIENvbnN0cmFpbnRFbmdpbmVBdHRyaWJ1dGVbXSxcbiAgICAgIGNmZ1N0YXR1czogJ1VzZXInLFxuICAgIH0sXG4gICAgc3RpQXR0cmlidXRlczogW10gYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGVbXSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICBQYXJlbnRSZWZlcmVuY2U6IHNhbGVzVHJhbnNhY3Rpb25JZCxcbiAgICAgIEl0ZW1QYXRoOiBvcHRpb24uaWQsXG4gICAgICBTYWxlc1RyYW5zYWN0aW9uSXRlbVNvdXJjZTogY2hpbGRJZCxcbiAgICAgIFNhbGVzVHJhbnNhY3Rpb25JdGVtUGFyZW50OiBzYWxlc1RyYW5zYWN0aW9uSWQsXG4gICAgICBQcm9kdWN0U2VsbGluZ01vZGVsOiBvcHRpb24ucHJvZHVjdFNlbGxpbmdNb2RlbE9wdGlvbnM/LlswXT8ucHJvZHVjdFNlbGxpbmdNb2RlbC5pZCxcbiAgICB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHF0eTogb3B0aW9uLnByb2R1Y3RSZWxhdGVkQ29tcG9uZW50Py5xdWFudGl0eSA/PyAxLFxuICB9IGFzIFNhbGVzVHJhbnNhY3Rpb25JdGVtO1xuXG4gIGlmIChwYXJlbnRUaSkge1xuICAgIG5ld0l0ZW0ucGFyZW50SWQgPSBwYXJlbnRUaS5pZDtcbiAgfVxuXG4gIG5ld0l0ZW0uY2hpbGRyZW4gPSBvcHRpb24ucHJvZHVjdENvbXBvbmVudEdyb3Vwcy5yZWR1Y2UoKGFjYzogU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSwgZ3JvdXApID0+IHtcbiAgICBncm91cC5jb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29tcG9uZW50LnByb2R1Y3RSZWxhdGVkQ29tcG9uZW50Py5pc0NvbXBvbmVudFJlcXVpcmVkIHx8XG4gICAgICAgIGNvbXBvbmVudC5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8uaXNEZWZhdWx0Q29tcG9uZW50XG4gICAgICApIHtcbiAgICAgICAgYWNjLnB1c2goZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW1Gcm9tUENNKGNvbXBvbmVudCwgc2FsZXNUcmFuc2FjdGlvbklkLCBuZXdJdGVtKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIG5ld0l0ZW07XG59O1xuXG5leHBvcnQgY29uc3QgZmxhdHRlblRyYW5zYWN0aW9uSXRlbSA9ICh0aTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdID0+IHtcbiAgY29uc3QgcmVzdWx0OiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdID0gW107XG4gIGNvbnN0IHRyYXZlcnNlID0gKGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5jaGlsZHJlbikge1xuICAgICAgICB0cmF2ZXJzZShjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHRyYXZlcnNlKHRpKTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVF1YW50aXR5ID0gKFxuICB0aTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIHF0eTogbnVtYmVyLFxuICBwY206IFBDTVByb2R1Y3QsXG4gIHBhcmVudFF0eSA9IDEsXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHBjbU1hcCA9IFBDTVV0aWxzLm1hcEJ5UHJjSWQocGNtKTtcblxuICBjb25zdCBjYWxjTmV3UXR5ID0gKFxuICAgIGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICAgIHBhcmVudFByZXZRdHk6IG51bWJlcixcbiAgICBwYXJlbnROZXdRdHk6IG51bWJlcixcbiAgICBwYXJlbnRQY206IFBDTVByb2R1Y3QgfCB1bmRlZmluZWQsXG4gICAgaW5wdXRRdHk6IG51bWJlcixcbiAgICBpc0RpcmVjdENoYW5nZTogYm9vbGVhbixcbiAgKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzY2FsZU1ldGhvZCA9IHBhcmVudFBjbT8ucHJvZHVjdFJlbGF0ZWRDb21wb25lbnQ/LnF1YW50aXR5U2NhbGVNZXRob2Q7XG4gICAgaWYgKGlzRGlyZWN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gc2NhbGVNZXRob2QgPT09ICdQcm9wb3J0aW9uYWwnID8gcGFyZW50UHJldlF0eSAqIGlucHV0UXR5IDogaW5wdXRRdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzY2FsZU1ldGhvZCA9PT0gJ1Byb3BvcnRpb25hbCcgPyAoaXRlbS5xdHkgLyBwYXJlbnRQcmV2UXR5KSAqIHBhcmVudE5ld1F0eSA6IGl0ZW0ucXR5O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGVJdGVtID0gKFxuICAgIGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICAgIHBhcmVudFByZXZRdHk6IG51bWJlcixcbiAgICBwYXJlbnROZXdRdHk6IG51bWJlcixcbiAgICBpc0RpcmVjdENoYW5nZTogYm9vbGVhbixcbiAgKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gPT4ge1xuICAgIGNvbnN0IHBjbSA9IHBjbU1hcFtpdGVtLnByb2R1Y3RSZWxhdGVkQ29tcG9uZW50SWRdO1xuICAgIGxldCBuZXh0UXR5ID0gaXRlbS5xdHk7XG5cbiAgICBpZiAoaXRlbS5pZCA9PT0gdGkuaWQgfHwgaXNEaXJlY3RDaGFuZ2UpIHtcbiAgICAgIG5leHRRdHkgPSBjYWxjTmV3UXR5KGl0ZW0sIHBhcmVudFByZXZRdHksIHBhcmVudE5ld1F0eSwgcGNtLCBxdHksIHRydWUpO1xuICAgIH0gZWxzZSBpZiAocGFyZW50UHJldlF0eSAhPT0gcGFyZW50TmV3UXR5KSB7XG4gICAgICBuZXh0UXR5ID0gY2FsY05ld1F0eShpdGVtLCBwYXJlbnRQcmV2UXR5LCBwYXJlbnROZXdRdHksIHBjbSwgcXR5LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RpID0ge1xuICAgICAgLi4uaXRlbSxcbiAgICAgIHF0eTogbmV4dFF0eSxcbiAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuLm1hcChjaGlsZCA9PiB1cGRhdGVJdGVtKGNoaWxkLCBpdGVtLnF0eSwgbmV4dFF0eSwgZmFsc2UpKSxcbiAgICB9O1xuXG4gICAgaWYgKG5leHRRdHkgIT09IGl0ZW0ucXR5KSB7XG4gICAgICBzdGkuY29uc3RyYWludEVuZ2luZU5vZGVTdGF0dXMgPSB7IC4uLnN0aS5jb25zdHJhaW50RW5naW5lTm9kZVN0YXR1cywgY2ZnU3RhdHVzOiAnVXNlcicgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RpO1xuICB9O1xuXG4gIHJldHVybiB1cGRhdGVJdGVtKHRpLCBwYXJlbnRRdHksIHBhcmVudFF0eSwgZmFsc2UpO1xufTtcbiJdfQ==","import { insertTransactionItem, removeTransactionItem, replaceTransactionItem } from './transaction-item.utils';\nexport class TransactionItemWorker {\n constructor(src) {\n this.ti = { ...src };\n }\n insert(parentId, toInsert) {\n return new TransactionItemWorker(insertTransactionItem(this.ti, parentId, toInsert));\n }\n remove(id) {\n return new TransactionItemWorker(removeTransactionItem(this.ti, id));\n }\n replace(toReplace) {\n return new TransactionItemWorker(replaceTransactionItem(this.ti, toReplace));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taXRlbS53b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3V0aWxzL3RyYW5zYWN0aW9uLWl0ZW0ud29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhILE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFBWSxHQUF5QjtRQUNuQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQWdCLEVBQUUsUUFBOEI7UUFDNUQsT0FBTyxJQUFJLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLE1BQU0sQ0FBQyxFQUFVO1FBQ3RCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxTQUErQjtRQUM1QyxPQUFPLElBQUkscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25JdGVtIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBpbnNlcnRUcmFuc2FjdGlvbkl0ZW0sIHJlbW92ZVRyYW5zYWN0aW9uSXRlbSwgcmVwbGFjZVRyYW5zYWN0aW9uSXRlbSB9IGZyb20gJy4vdHJhbnNhY3Rpb24taXRlbS51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIge1xuICBwdWJsaWMgdGk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtO1xuXG4gIGNvbnN0cnVjdG9yKHNyYzogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pIHtcbiAgICB0aGlzLnRpID0geyAuLi5zcmMgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnQocGFyZW50SWQ6IHN0cmluZywgdG9JbnNlcnQ6IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogVHJhbnNhY3Rpb25JdGVtV29ya2VyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uSXRlbVdvcmtlcihpbnNlcnRUcmFuc2FjdGlvbkl0ZW0odGhpcy50aSwgcGFyZW50SWQsIHRvSW5zZXJ0KSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGlkOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25JdGVtV29ya2VyKHJlbW92ZVRyYW5zYWN0aW9uSXRlbSh0aGlzLnRpLCBpZCkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2UodG9SZXBsYWNlOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSk6IFRyYW5zYWN0aW9uSXRlbVdvcmtlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIocmVwbGFjZVRyYW5zYWN0aW9uSXRlbSh0aGlzLnRpLCB0b1JlcGxhY2UpKTtcbiAgfVxufVxuIl19","import { omit } from 'lodash';\nexport function extractMetadata(uiDefinition) {\n return omit(uiDefinition, [\n 'children',\n 'pages',\n 'components',\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZGVmaW5pdGlvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdXRpbHMvdWktZGVmaW5pdGlvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxlQUFlLENBQUMsWUFBMEI7SUFDeEQsT0FBTyxJQUFJLENBQXFFLFlBQVksRUFBRTtRQUM1RixVQUFVO1FBQ1YsT0FBTztRQUNQLFlBQVk7S0FDYixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVUlEZWZpbml0aW9uLCBVSURlZmluaXRpb25NZXRhZGF0YSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWV0YWRhdGEodWlEZWZpbml0aW9uOiBVSURlZmluaXRpb24pOiBVSURlZmluaXRpb25NZXRhZGF0YSB7XG4gIHJldHVybiBvbWl0PFVJRGVmaW5pdGlvbiwga2V5b2YgT21pdDxVSURlZmluaXRpb24sIGtleW9mIFVJRGVmaW5pdGlvbk1ldGFkYXRhPj4odWlEZWZpbml0aW9uLCBbXG4gICAgJ2NoaWxkcmVuJyxcbiAgICAncGFnZXMnLFxuICAgICdjb21wb25lbnRzJyxcbiAgXSk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { OrchestrationsApiService } from '@veloceapps/api/v2';\nimport { UUID } from '@veloceapps/core';\nimport { BehaviorSubject, map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nexport class GuidedSellingService {\n constructor(orchestrationsApiService) {\n this.orchestrationsApiService = orchestrationsApiService;\n this.guidedSellingResult$ = new BehaviorSubject({});\n }\n get guidedSellingResult() {\n return this.guidedSellingResult$.value;\n }\n configureGuidedSelling$(data) {\n return this.orchestrationsApiService\n .apply$({\n transactionContext: this.getTransactionContext(data.attributesMap),\n orchestrationName: data.orchestrationName,\n })\n .pipe(map(transactionContext => {\n const guidedSellingNode = transactionContext.nodes['GuidedSelling']?.[0];\n const guidedSellingResult = guidedSellingNode?.attributes?.['result'] || {};\n this.guidedSellingResult$.next(guidedSellingResult);\n return guidedSellingResult;\n }));\n }\n clearGuidedSelling$() {\n this.guidedSellingResult$.next({});\n }\n getTransactionContext(guidedSellingAttributes) {\n const testTransaction = {\n id: UUID.UUID(),\n businessObjectType: 'Quote',\n salesTransactionItems: [],\n attributes: {},\n };\n return {\n salesTransaction: testTransaction,\n transactionId: UUID.UUID(),\n businessObjectType: 'Quote',\n nodes: {\n GuidedSelling: [\n {\n id: UUID.UUID(),\n attributes: {},\n nodes: {},\n properties: { guidedSellingAttributes },\n },\n ],\n },\n id: UUID.UUID(),\n attributes: {},\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: GuidedSellingService, deps: [{ token: i1.OrchestrationsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: GuidedSellingService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: GuidedSellingService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.OrchestrationsApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXNlbGxpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3NlcnZpY2VzL2d1aWRlZC1zZWxsaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQThELElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFJeEQsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUY5RCx5QkFBb0IsR0FBeUMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFcEIsQ0FBQztJQUUxRSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLElBQTZCO1FBQzFELE9BQU8sSUFBSSxDQUFDLHdCQUF3QjthQUNqQyxNQUFNLENBQUM7WUFDTixrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNsRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQzFDLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDdkIsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDcEQsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyx1QkFBNEM7UUFDeEUsTUFBTSxlQUFlLEdBQUc7WUFDdEIsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZixrQkFBa0IsRUFBRSxPQUFPO1lBQzNCLHFCQUFxQixFQUFFLEVBQTRCO1lBQ25ELFVBQVUsRUFBRSxFQUFFO1NBQ0ssQ0FBQztRQUV0QixPQUFPO1lBQ0wsZ0JBQWdCLEVBQUUsZUFBZTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUMxQixrQkFBa0IsRUFBRSxPQUFPO1lBQzNCLEtBQUssRUFBRTtnQkFDTCxhQUFhLEVBQUU7b0JBQ2I7d0JBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7d0JBQ2YsVUFBVSxFQUFFLEVBQUU7d0JBQ2QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsVUFBVSxFQUFFLEVBQUUsdUJBQXVCLEVBQUU7cUJBQ3hDO2lCQUNGO2FBQ0Y7WUFDRCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztJQUNKLENBQUM7OEdBdERVLG9CQUFvQjtrSEFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb24sIFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBUcmFuc2FjdGlvbkNvbnRleHQsIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEd1aWRlZFNlbGxpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBndWlkZWRTZWxsaW5nUmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PFJlY29yZDxzdHJpbmcsIGFueT4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2U6IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSkge31cblxuICBwdWJsaWMgZ2V0IGd1aWRlZFNlbGxpbmdSZXN1bHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ3VpZGVkU2VsbGluZ1Jlc3VsdCQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlR3VpZGVkU2VsbGluZyQoZGF0YTogR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEpOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5vcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2VcbiAgICAgIC5hcHBseSQoe1xuICAgICAgICB0cmFuc2FjdGlvbkNvbnRleHQ6IHRoaXMuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KGRhdGEuYXR0cmlidXRlc01hcCksXG4gICAgICAgIG9yY2hlc3RyYXRpb25OYW1lOiBkYXRhLm9yY2hlc3RyYXRpb25OYW1lLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodHJhbnNhY3Rpb25Db250ZXh0ID0+IHtcbiAgICAgICAgICBjb25zdCBndWlkZWRTZWxsaW5nTm9kZSA9IHRyYW5zYWN0aW9uQ29udGV4dC5ub2Rlc1snR3VpZGVkU2VsbGluZyddPy5bMF07XG4gICAgICAgICAgY29uc3QgZ3VpZGVkU2VsbGluZ1Jlc3VsdCA9IGd1aWRlZFNlbGxpbmdOb2RlPy5hdHRyaWJ1dGVzPy5bJ3Jlc3VsdCddIHx8IHt9O1xuICAgICAgICAgIHRoaXMuZ3VpZGVkU2VsbGluZ1Jlc3VsdCQubmV4dChndWlkZWRTZWxsaW5nUmVzdWx0KTtcbiAgICAgICAgICByZXR1cm4gZ3VpZGVkU2VsbGluZ1Jlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFyR3VpZGVkU2VsbGluZyQoKTogdm9pZCB7XG4gICAgdGhpcy5ndWlkZWRTZWxsaW5nUmVzdWx0JC5uZXh0KHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhbnNhY3Rpb25Db250ZXh0KGd1aWRlZFNlbGxpbmdBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICBjb25zdCB0ZXN0VHJhbnNhY3Rpb24gPSB7XG4gICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICBidXNpbmVzc09iamVjdFR5cGU6ICdRdW90ZScsXG4gICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IFtdIGFzIFNhbGVzVHJhbnNhY3Rpb25JdGVtW10sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICB9IGFzIFNhbGVzVHJhbnNhY3Rpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2FsZXNUcmFuc2FjdGlvbjogdGVzdFRyYW5zYWN0aW9uLFxuICAgICAgdHJhbnNhY3Rpb25JZDogVVVJRC5VVUlEKCksXG4gICAgICBidXNpbmVzc09iamVjdFR5cGU6ICdRdW90ZScsXG4gICAgICBub2Rlczoge1xuICAgICAgICBHdWlkZWRTZWxsaW5nOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICBub2Rlczoge30sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGd1aWRlZFNlbGxpbmdBdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { OrchestrationsApiService } from '@veloceapps/api/v2';\nimport { extractErrorDetails, isDefined, } from '@veloceapps/core';\nimport { cloneDeep } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, distinctUntilChanged, noop, of, switchMap, throwError } from 'rxjs';\nimport { catchError, filter, finalize, map, tap } from 'rxjs/operators';\nimport { FlowInfoService, SalesTransactionService } from '../../../services';\nimport { generateTransactionItem, TransactionItemWorker } from '../../../utils';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { GuidedSellingService } from './guided-selling.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../services\";\nimport * as i2 from \"primeng/api\";\nimport * as i3 from \"./configuration-runtime.service\";\nimport * as i4 from \"@veloceapps/api/v2\";\nimport * as i5 from \"./guided-selling.service\";\nexport class ConfigurationService {\n constructor(flowInfoService, messageService, configurationRuntimeService, salesTransactionService, orchestrationsApiService, guidedSellingService) {\n this.flowInfoService = flowInfoService;\n this.messageService = messageService;\n this.configurationRuntimeService = configurationRuntimeService;\n this.salesTransactionService = salesTransactionService;\n this.orchestrationsApiService = orchestrationsApiService;\n this.guidedSellingService = guidedSellingService;\n this.hasUnsavedChanges = false;\n this.configurationStateSubj$ = new BehaviorSubject(null);\n this.previousConfigurationStateSubj$ = new BehaviorSubject(null);\n this.isLoadingSubj$ = new BehaviorSubject(false);\n this.isLoading$ = this.isLoadingSubj$.asObservable();\n }\n get state$() {\n return this.configurationStateSubj$.asObservable().pipe(filter(isDefined));\n }\n get state() {\n return this.configurationStateSubj$.getValue();\n }\n get previousState() {\n return this.previousConfigurationStateSubj$.getValue();\n }\n get root$() {\n return this.state$.pipe(map(state => state.salesTransaction.salesTransactionItems[0]), filter(isDefined));\n }\n get root() {\n return this.configurationStateSubj$.getValue()?.salesTransaction.salesTransactionItems[0] ?? null;\n }\n reset() {\n this.hasUnsavedChanges = false;\n this.configurationStateSubj$.next(null);\n this.previousConfigurationStateSubj$.next(null);\n }\n init$() {\n const { state } = this.salesTransactionService;\n const { standalone } = this.flowInfoService.flow.properties;\n const { productId, transactionItemId, newProductQty } = this.flowInfoService.context;\n if (!state || !productId) {\n return of(undefined);\n }\n const salesTransactionItems = state?.salesTransaction.salesTransactionItems ?? [];\n let isRootGenerated = false;\n let transactionItem = salesTransactionItems.find(item => item.id === transactionItemId);\n if (!transactionItem && standalone) {\n transactionItem = salesTransactionItems.find(item => item.productId === productId);\n }\n if (!transactionItem) {\n const quantity = typeof newProductQty === 'number' && newProductQty > 0 ? newProductQty : undefined;\n transactionItem = generateTransactionItem(this.getPCMModel(), this.state?.salesTransaction.id, quantity);\n isRootGenerated = true;\n }\n const guidedSellingResult = this.guidedSellingService.guidedSellingResult;\n if (transactionItem && Object.keys(guidedSellingResult).length && isRootGenerated) {\n transactionItem.stiAttributes = Object.entries(guidedSellingResult).map(([attributeName, value]) => ({\n attributeName,\n value,\n }));\n }\n const configurationState = {\n ...state,\n salesTransaction: {\n ...state.salesTransaction,\n salesTransactionItems: transactionItem ? [transactionItem] : [],\n },\n };\n return (isRootGenerated ? this.configure$(configurationState) : of(configurationState)).pipe(tap(configurationState => {\n this.configurationStateSubj$.next(configurationState);\n this.previousConfigurationStateSubj$.next(configurationState);\n }), map(noop));\n }\n patch$(transactionItem) {\n const { state, root } = this;\n if (!state) {\n return throwError(() => new Error(`Configuration State is not initialized`));\n }\n if (!root) {\n return throwError(() => new Error(`Root SalesTransactionItem not found`));\n }\n const newRoot = new TransactionItemWorker(root).replace(transactionItem).ti;\n const newTransactionContext = {\n ...state,\n salesTransaction: {\n ...state.salesTransaction,\n salesTransactionItems: [newRoot],\n },\n };\n return this.configure$(newTransactionContext).pipe(catchError(error => {\n console.error(error);\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n return throwError(() => error);\n }), tap(() => {\n if (!this.hasUnsavedChanges) {\n this.hasUnsavedChanges = true;\n }\n }), map(noop));\n }\n patch(transactionItem) {\n this.patch$(transactionItem).subscribe();\n }\n configure$(transactionContext) {\n this.isLoadingSubj$.next(true);\n return this.justConfigureRequest$(transactionContext).pipe(tap(result => {\n this.configurationStateSubj$.next(result);\n this.previousConfigurationStateSubj$.next(cloneDeep(result));\n }), catchError(e => {\n const resetState = this.previousConfigurationStateSubj$.getValue();\n if (resetState) {\n this.previousConfigurationStateSubj$.next(cloneDeep(resetState));\n this.configurationStateSubj$.next(resetState);\n }\n return throwError(() => e);\n }), finalize(() => this.isLoadingSubj$.next(false)));\n }\n justConfigureRequest$(transactionContext) {\n const request = {\n transactionContext,\n flowId: this.flowInfoService.flow.id,\n };\n return this.orchestrationsApiService.apply$(request).pipe(catchError(error => throwError(() => {\n if (error.error) {\n return extractErrorDetails(error.error).join('. ');\n }\n return error.message || JSON.stringify(error);\n })));\n }\n getPCMModel() {\n const pcmModel = this.configurationRuntimeService.pcmModel;\n if (!pcmModel) {\n throw new Error('PCM model not initialized');\n }\n return pcmModel;\n }\n getPCMModel$() {\n return this.configurationRuntimeService.pcmModel$.pipe(distinctUntilChanged((prev, curr) => prev?.id === curr?.id));\n }\n swapProduct$(productId) {\n const rootTransactionItem = this.root;\n this.flowInfoService.updateContext({ productId });\n return this.configurationRuntimeService.init$({ productId }).pipe(map(pcm => generateTransactionItem(pcm, this.state?.salesTransaction.id, rootTransactionItem?.qty)), switchMap(salesTransactionItem => {\n return this.patch$({\n ...salesTransactionItem,\n id: rootTransactionItem?.id ?? salesTransactionItem.id,\n });\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.MessageService }, { token: i3.ConfigurationRuntimeService }, { token: i1.SalesTransactionService }, { token: i4.OrchestrationsApiService }, { token: i5.GuidedSellingService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.FlowInfoService }, { type: i2.MessageService }, { type: i3.ConfigurationRuntimeService }, { type: i1.SalesTransactionService }, { type: i4.OrchestrationsApiService }, { type: i5.GuidedSellingService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsU0FBUyxHQUtWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBR2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFDVSxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QiwyQkFBd0QsRUFDeEQsdUJBQWdELEVBQ2hELHdCQUFrRCxFQUNsRCxv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LENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTSxZQUFZLENBQUMsU0FBaUI7UUFDbkMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVsRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQ25HLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDakIsR0FBRyxvQkFBb0I7Z0JBQ3ZCLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLElBQUksb0JBQW9CLENBQUMsRUFBRTthQUMvQixDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBN01VLG9CQUFvQjtrSEFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlLCBQcm9jZWR1cmVBcHBseVJlcXVlc3QgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHtcbiAgZXh0cmFjdEVycm9yRGV0YWlscyxcbiAgaXNEZWZpbmVkLFxuICBQQ01Nb2RlbCxcbiAgU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIFNhbGVzVHJhbnNhY3Rpb25JdGVtQXR0cmlidXRlLFxuICBUcmFuc2FjdGlvbkNvbnRleHQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0sIFRyYW5zYWN0aW9uSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3VpZGVkU2VsbGluZ1NlcnZpY2UgfSBmcm9tICcuL2d1aWRlZC1zZWxsaW5nLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgaXNMb2FkaW5nU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2U6IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGd1aWRlZFNlbGxpbmdTZXJ2aWNlOiBHdWlkZWRTZWxsaW5nU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByZXZpb3VzU3RhdGUoKTogVHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCByb290JCgpOiBPYnNlcnZhYmxlPFNhbGVzVHJhbnNhY3Rpb25JdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF0pLFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdCgpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zWzBdID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KG51bGwpO1xuICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U7XG4gICAgY29uc3QgeyBzdGFuZGFsb25lIH0gPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXM7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQsIHRyYW5zYWN0aW9uSXRlbUlkLCBuZXdQcm9kdWN0UXR5IH0gPSB0aGlzLmZsb3dJbmZvU2VydmljZS5jb250ZXh0O1xuXG4gICAgaWYgKCFzdGF0ZSB8fCAhcHJvZHVjdElkKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBzYWxlc1RyYW5zYWN0aW9uSXRlbXMgPSBzdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXMgPz8gW107XG4gICAgbGV0IGlzUm9vdEdlbmVyYXRlZCA9IGZhbHNlO1xuICAgIGxldCB0cmFuc2FjdGlvbkl0ZW0gPSBzYWxlc1RyYW5zYWN0aW9uSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHRyYW5zYWN0aW9uSXRlbUlkKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uSXRlbSAmJiBzdGFuZGFsb25lKSB7XG4gICAgICB0cmFuc2FjdGlvbkl0ZW0gPSBzYWxlc1RyYW5zYWN0aW9uSXRlbXMuZmluZChpdGVtID0+IGl0ZW0ucHJvZHVjdElkID09PSBwcm9kdWN0SWQpO1xuICAgIH1cblxuICAgIGlmICghdHJhbnNhY3Rpb25JdGVtKSB7XG4gICAgICBjb25zdCBxdWFudGl0eSA9IHR5cGVvZiBuZXdQcm9kdWN0UXR5ID09PSAnbnVtYmVyJyAmJiBuZXdQcm9kdWN0UXR5ID4gMCA/IG5ld1Byb2R1Y3RRdHkgOiB1bmRlZmluZWQ7XG4gICAgICB0cmFuc2FjdGlvbkl0ZW0gPSBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbSh0aGlzLmdldFBDTU1vZGVsKCksIHRoaXMuc3RhdGU/LnNhbGVzVHJhbnNhY3Rpb24uaWQsIHF1YW50aXR5KTtcbiAgICAgIGlzUm9vdEdlbmVyYXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ3VpZGVkU2VsbGluZ1Jlc3VsdCA9IHRoaXMuZ3VpZGVkU2VsbGluZ1NlcnZpY2UuZ3VpZGVkU2VsbGluZ1Jlc3VsdDtcbiAgICBpZiAodHJhbnNhY3Rpb25JdGVtICYmIE9iamVjdC5rZXlzKGd1aWRlZFNlbGxpbmdSZXN1bHQpLmxlbmd0aCAmJiBpc1Jvb3RHZW5lcmF0ZWQpIHtcbiAgICAgIHRyYW5zYWN0aW9uSXRlbS5zdGlBdHRyaWJ1dGVzID0gT2JqZWN0LmVudHJpZXMoZ3VpZGVkU2VsbGluZ1Jlc3VsdCkubWFwKChbYXR0cmlidXRlTmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICBhdHRyaWJ1dGVOYW1lLFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pKSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25TdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzYWxlc1RyYW5zYWN0aW9uOiB7XG4gICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogdHJhbnNhY3Rpb25JdGVtID8gW3RyYW5zYWN0aW9uSXRlbV0gOiBbXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiAoaXNSb290R2VuZXJhdGVkID8gdGhpcy5jb25maWd1cmUkKGNvbmZpZ3VyYXRpb25TdGF0ZSkgOiBvZihjb25maWd1cmF0aW9uU3RhdGUpKS5waXBlKFxuICAgICAgdGFwKGNvbmZpZ3VyYXRpb25TdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjb25maWd1cmF0aW9uU3RhdGUpO1xuICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjb25maWd1cmF0aW9uU3RhdGUpO1xuICAgICAgfSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCQodHJhbnNhY3Rpb25JdGVtOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgc3RhdGUsIHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYENvbmZpZ3VyYXRpb24gU3RhdGUgaXMgbm90IGluaXRpYWxpemVkYCkpO1xuICAgIH1cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgUm9vdCBTYWxlc1RyYW5zYWN0aW9uSXRlbSBub3QgZm91bmRgKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Um9vdCA9IG5ldyBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIocm9vdCkucmVwbGFjZSh0cmFuc2FjdGlvbkl0ZW0pLnRpO1xuICAgIGNvbnN0IG5ld1RyYW5zYWN0aW9uQ29udGV4dDogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzYWxlc1RyYW5zYWN0aW9uOiB7XG4gICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW25ld1Jvb3RdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJlJChuZXdUcmFuc2FjdGlvbkNvbnRleHQpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wcy5zdXBwcmVzc1RvYXN0TWVzc2FnZXMpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiBlcnJvciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcGF0Y2godHJhbnNhY3Rpb25JdGVtOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKHRyYW5zYWN0aW9uSXRlbSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlJCh0cmFuc2FjdGlvbkNvbnRleHQ6IFRyYW5zYWN0aW9uQ29udGV4dCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuanVzdENvbmZpZ3VyZVJlcXVlc3QkKHRyYW5zYWN0aW9uQ29udGV4dCkucGlwZShcbiAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQoY2xvbmVEZWVwKHJlc3VsdCkpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zdCByZXNldFN0YXRlID0gdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChyZXNldFN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQoY2xvbmVEZWVwKHJlc2V0U3RhdGUpKTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQocmVzZXRTdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBqdXN0Q29uZmlndXJlUmVxdWVzdCQodHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFByb2NlZHVyZUFwcGx5UmVxdWVzdCA9IHtcbiAgICAgIHRyYW5zYWN0aW9uQ29udGV4dCxcbiAgICAgIGZsb3dJZDogdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdy5pZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMub3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlLmFwcGx5JChyZXF1ZXN0KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PlxuICAgICAgICB0aHJvd0Vycm9yKCgpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBleHRyYWN0RXJyb3JEZXRhaWxzKGVycm9yLmVycm9yKS5qb2luKCcuICcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UENNTW9kZWwoKTogUENNTW9kZWwge1xuICAgIGNvbnN0IHBjbU1vZGVsID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucGNtTW9kZWw7XG4gICAgaWYgKCFwY21Nb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQQ00gbW9kZWwgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBjbU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldFBDTU1vZGVsJCgpOiBPYnNlcnZhYmxlPFBDTU1vZGVsIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5wY21Nb2RlbCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4gcHJldj8uaWQgPT09IGN1cnI/LmlkKSk7XG4gIH1cblxuICBwdWJsaWMgc3dhcFByb2R1Y3QkKHByb2R1Y3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgcm9vdFRyYW5zYWN0aW9uSXRlbSA9IHRoaXMucm9vdDtcblxuICAgIHRoaXMuZmxvd0luZm9TZXJ2aWNlLnVwZGF0ZUNvbnRleHQoeyBwcm9kdWN0SWQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCQoeyBwcm9kdWN0SWQgfSkucGlwZShcbiAgICAgIG1hcChwY20gPT4gZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocGNtLCB0aGlzLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkLCByb290VHJhbnNhY3Rpb25JdGVtPy5xdHkpKSxcbiAgICAgIHN3aXRjaE1hcChzYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoJCh7XG4gICAgICAgICAgLi4uc2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gICAgICAgICAgaWQ6IHJvb3RUcmFuc2FjdGlvbkl0ZW0/LmlkID8/IHNhbGVzVHJhbnNhY3Rpb25JdGVtLmlkLFxuICAgICAgICB9IGFzIFNhbGVzVHJhbnNhY3Rpb25JdGVtKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { SalesTransactionApiService } from '@veloceapps/api/v2';\nimport { isDefined } from '@veloceapps/core';\nimport { BehaviorSubject, filter, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nexport class SalesTransactionService {\n get isInitialized$() {\n return this.isInitializedSubj$.asObservable();\n }\n get isInitialized() {\n return this.isInitializedSubj$.getValue();\n }\n set hasUnsavedChanges(value) {\n this.hasUnsavedChangesSubj$.next(value);\n if (!this.hasUnsavedChanges) {\n this.initialState = this.state?.salesTransaction.salesTransactionItems ?? [];\n }\n }\n get hasUnsavedChanges() {\n return this.hasUnsavedChangesSubj$.getValue();\n }\n get state() {\n return this.stateSubj$.getValue();\n }\n get hasProducts() {\n return Boolean(this.state?.salesTransaction.salesTransactionItems.length);\n }\n constructor(salesTransactionApiService) {\n this.salesTransactionApiService = salesTransactionApiService;\n this.stateSubj$ = new BehaviorSubject(null);\n this.isInitializedSubj$ = new BehaviorSubject(false);\n this.hasUnsavedChangesSubj$ = new BehaviorSubject(false);\n this.initialState = [];\n this.hasUnsavedChanges$ = this.hasUnsavedChangesSubj$.asObservable();\n this.state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n }\n init(headerId, params) {\n return this.salesTransactionApiService.query(headerId, params).pipe(tap(res => {\n if (!res.salesTransaction) {\n throw new Error('SalesTransaction is not defined. Please check Query Orchestration.');\n }\n this.stateSubj$.next(res);\n }));\n }\n finalizeInit() {\n this.isInitializedSubj$.next(true);\n this.hasUnsavedChanges = false;\n }\n reset() {\n this.stateSubj$.next(null);\n this.isInitializedSubj$.next(false);\n this.hasUnsavedChangesSubj$.next(false);\n }\n getInitialState() {\n return this.initialState;\n }\n setState(state) {\n this.stateSubj$.next(state);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SalesTransactionService, deps: [{ token: i1.SalesTransactionApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SalesTransactionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SalesTransactionService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SalesTransactionApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXMtdHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvc2FsZXMtdHJhbnNhY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQTRDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHaEUsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyxpQkFBaUIsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFDL0UsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBb0IsMEJBQXNEO1FBQXRELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFsQ2xFLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDbEUsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekQsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBMkIsRUFBRSxDQUFDO1FBRTNDLHVCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRSxXQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUE0Qk0sQ0FBQztJQUV2RSxJQUFJLENBQUMsUUFBZ0IsRUFBRSxNQUE4QjtRQUMxRCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBeUI7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FsRVUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWxlc1RyYW5zYWN0aW9uQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQgeyBpc0RlZmluZWQsIFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBoYXNVbnNhdmVkQ2hhbmdlc1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgaW5pdGlhbFN0YXRlOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdID0gW107XG5cbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzJCA9IHRoaXMuaGFzVW5zYXZlZENoYW5nZXNTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIHN0YXRlJCA9IHRoaXMuc3RhdGVTdWJqJC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihpc0RlZmluZWQpKTtcblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGhhc1Vuc2F2ZWRDaGFuZ2VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlc1N1YmokLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRpYWxTdGF0ZSA9IHRoaXMuc3RhdGU/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IGhhc1Vuc2F2ZWRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogVHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNQcm9kdWN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtcy5sZW5ndGgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uQXBpU2VydmljZTogU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGluaXQoaGVhZGVySWQ6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYWxlc1RyYW5zYWN0aW9uQXBpU2VydmljZS5xdWVyeShoZWFkZXJJZCwgcGFyYW1zKS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7XG4gICAgICAgIGlmICghcmVzLnNhbGVzVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NhbGVzVHJhbnNhY3Rpb24gaXMgbm90IGRlZmluZWQuIFBsZWFzZSBjaGVjayBRdWVyeSBPcmNoZXN0cmF0aW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmokLm5leHQocmVzKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluYWxpemVJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJqJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXNTdWJqJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFsU3RhdGUoKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFN0YXRlO1xuICB9XG5cbiAgcHVibGljIHNldFN0YXRlKHN0YXRlOiBUcmFuc2FjdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU3ViaiQubmV4dChzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { OrchestrationsApiService } from '@veloceapps/api/v2';\nimport { cloneDeep } from 'lodash';\nimport { catchError, map, noop, of, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { FlowInfoService } from '../../../services';\nimport { SalesTransactionService } from '../../../services/sales-transaction.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nimport * as i2 from \"../../../services/sales-transaction.service\";\nimport * as i3 from \"../../../services\";\nexport class FlowConfigurationService {\n constructor(orchestrationsApiService, salesTransactionService, flowInfoService) {\n this.orchestrationsApiService = orchestrationsApiService;\n this.salesTransactionService = salesTransactionService;\n this.flowInfoService = flowInfoService;\n this.updatedSubj$ = new Subject();\n this.updated$ = this.updatedSubj$.asObservable();\n }\n calculate$(state) {\n return this.orchestrationsApiService\n .apply$({ transactionContext: state, flowId: this.flowInfoService.flow.id })\n .pipe(tap(result => this.salesTransactionService.setState(result)), map(noop));\n }\n calculate(state) {\n this.calculate$(state).subscribe();\n }\n revert$(transactionItemId) {\n const state = this.salesTransactionService.state;\n const initialState = this.salesTransactionService.getInitialState();\n const currentState = state?.salesTransaction.salesTransactionItems ?? [];\n const currentItemIndex = currentState.findIndex(({ id }) => id === transactionItemId);\n const currentItem = currentState[currentItemIndex];\n const initialItem = initialState.find(({ integrationId }) => integrationId === currentItem?.integrationId);\n if (!state || !currentItem || !initialItem) {\n return of(null);\n }\n const updatedState = cloneDeep(currentState);\n updatedState.splice(currentItemIndex, 1, initialItem);\n return of([]).pipe(map(() => ({\n ...state,\n salesTransaction: { ...state.salesTransaction, salesTransactionItems: updatedState },\n })), tap(newState => this.salesTransactionService.setState(newState)), switchMap(newState => this.calculate$(newState)), map(() => this.salesTransactionService.state), tap(() => this.updatedSubj$.next()), this.handleErrorAndBounceBack());\n }\n revert(transactionItemId) {\n this.revert$(transactionItemId).subscribe();\n }\n delete$(ids) {\n const state = this.salesTransactionService.state;\n if (!state) {\n return of(null);\n }\n return of([]).pipe(map(() => state.salesTransaction.salesTransactionItems.filter(({ id }) => !ids.includes(id))), switchMap(updatedState => this.calculate$({\n ...state,\n salesTransaction: { ...state.salesTransaction, salesTransactionItems: updatedState },\n })), map(() => this.salesTransactionService.state), tap(() => this.updatedSubj$.next()), this.handleErrorAndBounceBack());\n }\n delete(ids) {\n this.delete$(ids).subscribe();\n }\n handleErrorAndBounceBack() {\n return (source$) => {\n return source$.pipe(catchError(error => {\n console.error(error);\n // bounce back if configuration call has failed\n const state = this.salesTransactionService.state;\n if (state) {\n this.salesTransactionService.setState(state);\n this.updatedSubj$.next();\n }\n return throwError(() => error);\n }));\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.OrchestrationsApiService }, { token: i2.SalesTransactionService }, { token: i3.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.OrchestrationsApiService }, { type: i2.SalesTransactionService }, { type: i3.FlowInfoService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7O0FBR3RGLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDVSx3QkFBa0QsRUFDbEQsdUJBQWdELEVBQ2hELGVBQWdDO1FBRmhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFMbEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXlCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QjthQUNqQyxNQUFNLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsTUFB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QUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FyR1Usd0JBQXdCO2tIQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Db250ZXh0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2FsZXMtdHJhbnNhY3Rpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgdXBkYXRlZCQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgcHJpdmF0ZSB1cGRhdGVkU3ViaiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlOiBPcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy51cGRhdGVkJCA9IHRoaXMudXBkYXRlZFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZSQoc3RhdGU6IFRyYW5zYWN0aW9uQ29udGV4dCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLm9yY2hlc3RyYXRpb25zQXBpU2VydmljZVxuICAgICAgLmFwcGx5JCh7IHRyYW5zYWN0aW9uQ29udGV4dDogc3RhdGUsIGZsb3dJZDogdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdy5pZCB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChyZXN1bHQgPT4gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zZXRTdGF0ZShyZXN1bHQpKSxcbiAgICAgICAgbWFwKG5vb3ApLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGUoc3RhdGU6IFRyYW5zYWN0aW9uQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY2FsY3VsYXRlJChzdGF0ZSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmV2ZXJ0JCh0cmFuc2FjdGlvbkl0ZW1JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2UuZ2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gc3RhdGU/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuXG4gICAgY29uc3QgY3VycmVudEl0ZW1JbmRleCA9IGN1cnJlbnRTdGF0ZS5maW5kSW5kZXgoKHsgaWQgfSkgPT4gaWQgPT09IHRyYW5zYWN0aW9uSXRlbUlkKTtcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IGN1cnJlbnRTdGF0ZVtjdXJyZW50SXRlbUluZGV4XTtcblxuICAgIGNvbnN0IGluaXRpYWxJdGVtID0gaW5pdGlhbFN0YXRlLmZpbmQoKHsgaW50ZWdyYXRpb25JZCB9KSA9PiBpbnRlZ3JhdGlvbklkID09PSBjdXJyZW50SXRlbT8uaW50ZWdyYXRpb25JZCk7XG5cbiAgICBpZiAoIXN0YXRlIHx8ICFjdXJyZW50SXRlbSB8fCAhaW5pdGlhbEl0ZW0pIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSBjbG9uZURlZXAoY3VycmVudFN0YXRlKTtcbiAgICB1cGRhdGVkU3RhdGUuc3BsaWNlKGN1cnJlbnRJdGVtSW5kZXgsIDEsIGluaXRpYWxJdGVtKTtcblxuICAgIHJldHVybiBvZihbXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjogeyAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLCBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHVwZGF0ZWRTdGF0ZSB9LFxuICAgICAgfSkpLFxuICAgICAgdGFwKG5ld1N0YXRlID0+IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2Uuc2V0U3RhdGUobmV3U3RhdGUpKSxcbiAgICAgIHN3aXRjaE1hcChuZXdTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQobmV3U3RhdGUpKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJldmVydCh0cmFuc2FjdGlvbkl0ZW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZXZlcnQkKHRyYW5zYWN0aW9uSXRlbUlkKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUkKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGw+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2Uuc3RhdGU7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBvZihbXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBzdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtcy5maWx0ZXIoKHsgaWQgfSkgPT4gIWlkcy5pbmNsdWRlcyhpZCkpKSxcbiAgICAgIHN3aXRjaE1hcCh1cGRhdGVkU3RhdGUgPT5cbiAgICAgICAgdGhpcy5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uOiB7IC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogdXBkYXRlZFN0YXRlIH0sXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShpZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUkKGlkcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yQW5kQm91bmNlQmFjaygpIHtcbiAgICByZXR1cm4gPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgICAgLy8gYm91bmNlIGJhY2sgaWYgY29uZmlndXJhdGlvbiBjYWxsIGhhcyBmYWlsZWRcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2Uuc3RhdGU7XG4gICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnNldFN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFN1YmokLm5leHQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { SalesforceApiService } from '@veloceapps/api/v2';\nimport { UUID } from '@veloceapps/core';\nimport { map, noop, of, switchMap, tap, throwError } from 'rxjs';\nimport { FlowInfoService, RuntimeSettingsService, SalesTransactionService } from '../../../services';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../services\";\nimport * as i2 from \"./configuration.service\";\nimport * as i3 from \"./configuration-runtime.service\";\nimport * as i4 from \"@veloceapps/api/v2\";\nexport class TestModeConfigurationService {\n constructor(flowInfoService, configurationService, configurationRuntimeService, salesTransactionService, runtimeSettingsService, sfApiService) {\n this.flowInfoService = flowInfoService;\n this.configurationService = configurationService;\n this.configurationRuntimeService = configurationRuntimeService;\n this.salesTransactionService = salesTransactionService;\n this.runtimeSettingsService = runtimeSettingsService;\n this.sfApiService = sfApiService;\n this.isInitialized = false;\n }\n initTestMode$(uiDefinitionContainer, options) {\n this.configurationRuntimeService.uiDefinitionContainer = uiDefinitionContainer;\n if (this.checkInitialized(uiDefinitionContainer)) {\n this.configurationRuntimeService.pcmModelSubj$.next(this.pcmModel || null);\n return of(undefined);\n }\n this.configurationService.reset();\n const { productId, quoteId, flowId } = uiDefinitionContainer.source.properties ?? {};\n if (!productId) {\n return throwError(() => 'Unable to start the Configuration Preview: Product is missing.');\n }\n if (!quoteId) {\n return throwError(() => `Unable to start the Configuration Preview: Quote is missing.`);\n }\n if (!flowId) {\n return throwError(() => `Unable to start the Configuration Preview: Flow is missing.`);\n }\n return this.runtimeSettingsService.create().pipe(switchMap(() => this.flowInfoService.init$(flowId, { productId, headerId: quoteId, testMode: true })), switchMap(() => this.configurationRuntimeService.init$({ productId })), tap(pcmModel => (this.pcmModel = pcmModel)), switchMap(() => {\n if (options?.customizationMode) {\n return of(undefined);\n }\n return this.initConfiguration$(quoteId);\n }), tap(() => (this.isInitialized = true)), map(noop));\n }\n initConfiguration$(quoteId) {\n return this.getPriceBookId(quoteId).pipe(map(priceBookId => this.getTestTransactionContext(quoteId, priceBookId)), tap(state => this.salesTransactionService.setState(state)), switchMap(() => this.configurationService.init$()), switchMap(() => this.configurationService.state\n ? this.configurationService.configure$(this.configurationService.state)\n : of(undefined)), map(noop));\n }\n getPriceBookId(quoteId) {\n return this.sfApiService\n .query({ count: 1, fields: ['Pricebook2Id'], rawCondition: `Id = '${quoteId}'` }, 'Quote')\n .pipe(map(r => r?.[0]?.Pricebook2Id ?? null));\n }\n getTestTransactionContext(quoteId, priceBookId) {\n const dateStr = new Date().toISOString().split('T')[0] ?? '';\n const testTransaction = {\n id: quoteId,\n businessObjectType: 'Quote',\n salesTransactionItems: [],\n salesTransactionName: 'Test Quote',\n account: '',\n quoteAccount: '',\n pricebook: '',\n status: 'Draft',\n totalAmount: 0,\n subtotal: 0,\n activatedDate: dateStr,\n effectiveDate: dateStr,\n startDate: dateStr,\n attributes: {},\n nodes: {},\n };\n if (priceBookId) {\n testTransaction.pricebook = priceBookId;\n }\n return {\n salesTransaction: testTransaction,\n transactionId: quoteId,\n businessObjectType: 'Quote',\n nodes: {},\n id: UUID.UUID(),\n attributes: {},\n };\n }\n checkInitialized(uiDefinitionContainer) {\n return this.isInitialized && !!uiDefinitionContainer.source.properties?.persistTestState;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TestModeConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.ConfigurationService }, { token: i3.ConfigurationRuntimeService }, { token: i1.SalesTransactionService }, { token: i1.RuntimeSettingsService }, { token: i4.SalesforceApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TestModeConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TestModeConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.FlowInfoService }, { type: i2.ConfigurationService }, { type: i3.ConfigurationRuntimeService }, { type: i1.SalesTransactionService }, { type: i1.RuntimeSettingsService }, { type: i4.SalesforceApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1tb2RlLWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3NlcnZpY2VzL3Rlc3QtbW9kZS1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQXVELElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUcvRCxNQUFNLE9BQU8sNEJBQTRCO0lBSXZDLFlBQ1UsZUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLDJCQUF3RCxFQUN4RCx1QkFBZ0QsRUFDaEQsc0JBQThDLEVBQzlDLFlBQWtDO1FBTGxDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7UUFDeEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQVRwQyxrQkFBYSxHQUFH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QVcsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTztZQUNMLGdCQUFnQixFQUFFLGVBQWU7WUFDakMsYUFBYSxFQUFFLE9BQU87WUFDdEIsa0JBQWtCLEVBQUUsT0FBTztZQUMzQixLQUFLLEVBQUUsRUFBRTtZQUNULEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2YsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLHFCQUE0QztRQUNuRSxPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0YsQ0FBQzs4R0FqSFUsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQgeyBQQ01Nb2RlbCwgVHJhbnNhY3Rpb25Db250ZXh0LCBVSURlZmluaXRpb25Db250YWluZXIsIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgVGVzdE1vZGVDb25maWd1cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZXN0TW9kZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgcGNtTW9kZWw/OiBQQ01Nb2RlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lU2V0dGluZ3NTZXJ2aWNlOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2ZBcGlTZXJ2aWNlOiBTYWxlc2ZvcmNlQXBpU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBpbml0VGVzdE1vZGUkKFxuICAgIHVpRGVmaW5pdGlvbkNvbnRhaW5lcjogVUlEZWZpbml0aW9uQ29udGFpbmVyLFxuICAgIG9wdGlvbnM/OiBUZXN0TW9kZUNvbmZpZ3VyYXRpb25PcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS51aURlZmluaXRpb25Db250YWluZXIgPSB1aURlZmluaXRpb25Db250YWluZXI7XG5cbiAgICBpZiAodGhpcy5jaGVja0luaXRpYWxpemVkKHVpRGVmaW5pdGlvbkNvbnRhaW5lcikpIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnBjbU1vZGVsU3ViaiQubmV4dCh0aGlzLnBjbU1vZGVsIHx8IG51bGwpO1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UucmVzZXQoKTtcblxuICAgIGNvbnN0IHsgcHJvZHVjdElkLCBxdW90ZUlkLCBmbG93SWQgfSA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lci5zb3VyY2UucHJvcGVydGllcyA/PyB7fTtcblxuICAgIGlmICghcHJvZHVjdElkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IFByb2R1Y3QgaXMgbWlzc2luZy4nKTtcbiAgICB9XG4gICAgaWYgKCFxdW90ZUlkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBgVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IFF1b3RlIGlzIG1pc3NpbmcuYCk7XG4gICAgfVxuICAgIGlmICghZmxvd0lkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBgVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IEZsb3cgaXMgbWlzc2luZy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ydW50aW1lU2V0dGluZ3NTZXJ2aWNlLmNyZWF0ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93SW5mb1NlcnZpY2UuaW5pdCQoZmxvd0lkLCB7IHByb2R1Y3RJZCwgaGVhZGVySWQ6IHF1b3RlSWQsIHRlc3RNb2RlOiB0cnVlIH0pKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0JCh7IHByb2R1Y3RJZCB9KSksXG4gICAgICB0YXAocGNtTW9kZWwgPT4gKHRoaXMucGNtTW9kZWwgPSBwY21Nb2RlbCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmN1c3RvbWl6YXRpb25Nb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5pbml0Q29uZmlndXJhdGlvbiQocXVvdGVJZCk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZSkpLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb25maWd1cmF0aW9uJChxdW90ZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcmljZUJvb2tJZChxdW90ZUlkKS5waXBlKFxuICAgICAgbWFwKHByaWNlQm9va0lkID0+IHRoaXMuZ2V0VGVzdFRyYW5zYWN0aW9uQ29udGV4dChxdW90ZUlkLCBwcmljZUJvb2tJZCkpLFxuICAgICAgdGFwKHN0YXRlID0+IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2Uuc2V0U3RhdGUoc3RhdGUpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQkKCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2Uuc3RhdGVcbiAgICAgICAgICA/IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlndXJlJCh0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlKVxuICAgICAgICAgIDogb2YodW5kZWZpbmVkKSxcbiAgICAgICksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJpY2VCb29rSWQocXVvdGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuc2ZBcGlTZXJ2aWNlXG4gICAgICAucXVlcnk8eyBQcmljZWJvb2sySWQ6IHN0cmluZyB9PihcbiAgICAgICAgeyBjb3VudDogMSwgZmllbGRzOiBbJ1ByaWNlYm9vazJJZCddLCByYXdDb25kaXRpb246IGBJZCA9ICcke3F1b3RlSWR9J2AgfSxcbiAgICAgICAgJ1F1b3RlJyxcbiAgICAgIClcbiAgICAgIC5waXBlKG1hcChyID0+IHI/LlswXT8uUHJpY2Vib29rMklkID8/IG51bGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVzdFRyYW5zYWN0aW9uQ29udGV4dChxdW90ZUlkOiBzdHJpbmcsIHByaWNlQm9va0lkOiBzdHJpbmcgfCBudWxsKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICBjb25zdCBkYXRlU3RyID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0gPz8gJyc7XG5cbiAgICBjb25zdCB0ZXN0VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uQ29udGV4dFsnc2FsZXNUcmFuc2FjdGlvbiddID0ge1xuICAgICAgaWQ6IHF1b3RlSWQsXG4gICAgICBidXNpbmVzc09iamVjdFR5cGU6ICdRdW90ZScsXG4gICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IFtdLFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbk5hbWU6ICdUZXN0IFF1b3RlJyxcbiAgICAgIGFjY291bnQ6ICcnLFxuICAgICAgcXVvdGVBY2NvdW50OiAnJyxcbiAgICAgIHByaWNlYm9vazogJycsXG4gICAgICBzdGF0dXM6ICdEcmFmdCcsXG4gICAgICB0b3RhbEFtb3VudDogMCxcbiAgICAgIHN1YnRvdGFsOiAwLFxuICAgICAgYWN0aXZhdGVkRGF0ZTogZGF0ZVN0cixcbiAgICAgIGVmZmVjdGl2ZURhdGU6IGRhdGVTdHIsXG4gICAgICBzdGFydERhdGU6IGRhdGVTdHIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIG5vZGVzOiB7fSxcbiAgICB9O1xuXG4gICAgaWYgKHByaWNlQm9va0lkKSB7XG4gICAgICB0ZXN0VHJhbnNhY3Rpb24ucHJpY2Vib29rID0gcHJpY2VCb29rSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHRlc3RUcmFuc2FjdGlvbixcbiAgICAgIHRyYW5zYWN0aW9uSWQ6IHF1b3RlSWQsXG4gICAgICBidXNpbmVzc09iamVjdFR5cGU6ICdRdW90ZScsXG4gICAgICBub2Rlczoge30sXG4gICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0luaXRpYWxpemVkKHVpRGVmaW5pdGlvbkNvbnRhaW5lcjogVUlEZWZpbml0aW9uQ29udGFpbmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZCAmJiAhIXVpRGVmaW5pdGlvbkNvbnRhaW5lci5zb3VyY2UucHJvcGVydGllcz8ucGVyc2lzdFRlc3RTdGF0ZTtcbiAgfVxufVxuIl19","import { Inject, Injectable, Optional } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { ConfigurationProcessorsApiService, SalesTransactionApiService, } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport { ConfigurationProcessorTypes, EntityUtil, isDefined, UUID, } from '@veloceapps/core';\nimport { assign, cloneDeep, flatten, isEqual } from 'lodash';\nimport { BehaviorSubject, buffer, catchError, combineLatest, debounceTime, filter, finalize, forkJoin, map, noop, of, share, Subject, switchMap, take, tap, throwError, } from 'rxjs';\nimport { FlowConfigurationService } from '../modules';\nimport { FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { FlowInfoService } from './flow-info.service';\nimport { SalesTransactionService } from './sales-transaction.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../modules\";\nimport * as i2 from \"./flow-info.service\";\nimport * as i3 from \"@veloceapps/api\";\nimport * as i4 from \"@veloceapps/api/v2\";\nimport * as i5 from \"./sales-transaction.service\";\nimport * as i6 from \"@veloceapps/components\";\nexport class FlowStateService {\n constructor(flowConfiguration, flowInfoService, flowStateApiService, processorsApiService, salesTransactionApiService, salesTransactionService, toastService, customizationService) {\n this.flowConfiguration = flowConfiguration;\n this.flowInfoService = flowInfoService;\n this.flowStateApiService = flowStateApiService;\n this.processorsApiService = processorsApiService;\n this.salesTransactionApiService = salesTransactionApiService;\n this.salesTransactionService = salesTransactionService;\n this.toastService = toastService;\n this.customizationService = customizationService;\n this.NOT_INITIALIZED = Symbol();\n this.EXECUTION_BUFFER_TIME = 100;\n this.executedFunctions = {};\n this.stateId$ = new BehaviorSubject(null);\n this.initialStatefulData = {};\n this.trackedStatefulChangesMap = new Map();\n this.processors = {};\n this.subscriptions = {};\n this.flowStore = {};\n this.executionInProgress$ = new BehaviorSubject(false);\n this.statefulRequestStream$ = new Subject();\n this.cleanup$ = new Subject();\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n /*\n In stateless mode watch State changes and call executeRequest so that\n all subscriptions get their updates according to updated State\n */\n this.isInitialized$()\n .pipe(filter(Boolean), filter(() => !this.flowInfoService.flow.properties.stateful), switchMap(() => this.flowConfiguration.updated$), switchMap(() => this.executeRequest$({}, true)))\n .subscribe();\n }\n init$() {\n if (this.flowInfoService.flow.properties.stateful) {\n return this.initProcessors$().pipe(switchMap(() => this.initStateful$()));\n }\n else {\n return forkJoin([this.initStateless$(), this.initProcessors$()]).pipe(map(noop));\n }\n }\n reset() {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n if (this.stateId$.value) {\n this.flowStateApiService.cancel(this.stateId$.value).subscribe();\n this.stateId$.next(null);\n }\n this.processors = {};\n this.flowStore = {};\n this.cleanup$.next();\n }\n get hasUnsavedChanges() {\n return this.flowInfoService.flow.properties.stateful\n ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n : this.salesTransactionService.hasUnsavedChanges;\n }\n get stateId() {\n return this.stateId$.value;\n }\n get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n isInitialized$() {\n return combineLatest([this.stateId$, this.salesTransactionService.isInitialized$]).pipe(map(values => values.some(Boolean)));\n }\n isInitialized() {\n return Boolean(this.stateId$.value) || this.salesTransactionService.isInitialized;\n }\n execute$(scope, exec) {\n const request = this.execToRequest(scope, exec);\n return this.executeRequest$(request).pipe(map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce((trunk, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n }, {});\n return actualSelectors;\n }));\n }\n dispatch$(scope, action, inputData) {\n const exec = {\n actions: [{ name: action, inputData }],\n };\n const request = this.execToRequest(scope, exec);\n return this.executeRequest$(request).pipe(map(noop));\n }\n select$(scope, selectorName, inputData) {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n return this.executeRequest$(request).pipe(map(response => response.selectors[requestId]));\n }\n subscribe$(scope, selectorName, inputData, options) {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n let subscription = this.subscriptions[requestId];\n if (!subscription) {\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n subscription = {\n request,\n data$: new BehaviorSubject(this.NOT_INITIALIZED),\n };\n this.subscriptions[requestId] = subscription;\n if (options?.trackedChanges) {\n this.trackedStatefulChangesMap.set(requestId, false);\n }\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n return subscription.data$.pipe(filter(data => data != this.NOT_INITIALIZED), map(data => data), finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }));\n }\n save$() {\n if (this.flowInfoService.flow.properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.save(this.stateId$.value).pipe(map(({ quoteId }) => ({ id: quoteId })), tap(() => {\n Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n this.trackedStatefulChangesMap.set(key, false);\n });\n }));\n }\n }\n else {\n const state = this.salesTransactionService.state;\n if (state) {\n const request = {\n transactionContext: state,\n flowId: this.flowInfoService.flow.id,\n };\n return this.salesTransactionApiService.save(request).pipe(map(id => ({ id })));\n }\n }\n return of({ id: '' });\n }\n getFlowStore() {\n return this.flowStore;\n }\n getOwnerIdByScope(scope) {\n const ownerId = this.flowInfoService.templates[scope]?.id;\n if (!ownerId) {\n throw `OwnerId is not found for scope ${scope}`;\n }\n return ownerId;\n }\n getScopeByOwnerId(id) {\n for (const template of Object.values(this.flowInfoService.templates)) {\n if (template.id === id) {\n return template.type;\n }\n }\n return;\n }\n execToRequest(scope, exec) {\n const ownerId = this.getOwnerIdByScope(scope);\n return {\n actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),\n selectors: exec.selectors &&\n Object.entries(exec.selectors).reduce((trunk, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },\n }), {}),\n };\n }\n executeRequest$(request, forceSubscriptions = false) {\n const fullRequest = cloneDeep(request);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n const execution$ = this.flowInfoService.flow.properties.stateful\n ? this.executeStateful$(fullRequest)\n : this.executeStateless$(fullRequest);\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n handleSelectorsResponse(selectors) {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$ && subscription$.value !== selectorResult) {\n this.checkStatefulChanges(requestId, selectorResult);\n subscription$.next(selectorResult);\n }\n });\n }\n initStateful$() {\n const processorsList = flatten(Object.values(this.processors).map(ownerMap => Object.values(ownerMap ?? {})));\n const processors = processorsList.length ? processorsList : undefined;\n const selectors = Object.values(this.subscriptions)\n .map(({ request }) => request.selectors)\n .filter(isDefined)\n .reduce((trunk, selectors) => ({ ...trunk, ...selectors }), {});\n return this.flowStateApiService\n .init({\n quoteId: this.flowInfoService.context.headerId,\n params: this.flowInfoService.context,\n actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n selectors: selectors,\n })\n .pipe(map(({ stateId, selectors }) => {\n this.handleSelectorsResponse(selectors);\n this.stateId$.next(stateId);\n }));\n }\n initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))), switchMap(requests => {\n if (!this.stateId$.value) {\n throw 'Stateful session is not initialized';\n }\n // merge buffered requests\n const request = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n this.executionInProgress$.next(true);\n return this.flowStateApiService.execute(this.stateId$.value, request);\n }), tap(({ stateId }) => this.stateId$.next(stateId)), share(), tap(() => this.executionInProgress$.next(false)), catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }));\n }\n executeStateful$(request) {\n return this.executionInProgress$.pipe(filter(inProgress => !inProgress), take(1), switchMap(() => \n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ])), map(([response]) => response), take(1));\n }\n initStateless$() {\n return this.salesTransactionService.init(this.flowInfoService.context.headerId, this.flowInfoService.context).pipe(switchMap(state => this.flowConfiguration.calculate$(state)), tap(() => this.salesTransactionService.finalizeInit()), map(noop));\n }\n executeStateless$(request) {\n this.executionInProgress$.next(true);\n return of(undefined).pipe(tap(() => this.executeStatelessActions(request)), switchMap(() => {\n /*\n Skip price calculation in case\n 1. No actions in the request\n 2. Initialization process execution (state not initialized yet)\n */\n const { state } = this.salesTransactionService;\n if (!state || !request.actions?.length || !this.isInitialized()) {\n return of(undefined);\n }\n else {\n return this.flowConfiguration.calculate$(state);\n }\n }), map(() => this.executeStatelessSelectors(request)), tap(() => this.executionInProgress$.next(false)), catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }));\n }\n executeStatelessActions(request) {\n const state = this.salesTransactionService.state;\n if (!state || !request.actions?.length) {\n return;\n }\n let flowState = state;\n request.actions.forEach(action => {\n try {\n flowState = this.executeActionScript(flowState, action) ?? flowState;\n }\n catch (e) {\n console.error(e);\n this.toastService.add({ severity: ToastType.error, summary: String(e) });\n throw e;\n }\n });\n this.salesTransactionService.setState(flowState);\n }\n executeStatelessSelectors(request) {\n if (!this.salesTransactionService.state) {\n throw 'State is not initialized';\n }\n const flowState = this.salesTransactionService.state;\n return EntityUtil.entries(request.selectors ?? {}).reduce((result, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(flowState, selector),\n };\n }\n catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n return result;\n }, { stateId: '', selectors: {} });\n }\n initProcessors$() {\n const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n if (this.flowInfoService.flow.properties.stateful && !hasOverrides) {\n // Skip initialization as backend will take processors from SF\n return of(undefined);\n }\n const owners$ = Object.values(this.flowInfoService.templates)\n .map(template => {\n if (!template) {\n return;\n }\n const localProcessors$ = this.customizationService?.getTemplateConfigurationProcessors?.(template.name) ?? of(null);\n return localProcessors$.pipe(switchMap(processors => processors ? of(processors) : this.processorsApiService.fetchConfigurationProcessors$(template.id)), tap(processors => {\n const processorsMap = processors.reduce((acc, p) => {\n acc[p.apiName] = p;\n return acc;\n }, {});\n this.processors[template.id] = processorsMap;\n }));\n })\n .filter(isDefined);\n if (!owners$.length) {\n return of(undefined);\n }\n return forkJoin(owners$).pipe(map(noop));\n }\n executeActionScript(request, executable) {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n }\n executeSelectorScript(request, executable) {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n }\n executeProcessorScript(request, configurationProcessor, inputData) {\n const scope = this.getScopeByOwnerId(configurationProcessor.ownerId ?? '');\n let functionToExecute = this.executedFunctions[scope + configurationProcessor.apiName];\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${scope ? scope + '/' : ''}${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)();\n this.executedFunctions[scope + configurationProcessor.apiName] = functionToExecute;\n }\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStore,\n });\n }\n generateRequestId(scope, selectorName, inputData) {\n const inputDataHash = UUID.hex(JSON.stringify(inputData) || '').slice(0, 8);\n return `${scope}/${selectorName}/${inputDataHash}`;\n }\n checkStatefulChanges(requestId, selectorResult) {\n if (this.trackedStatefulChangesMap.has(requestId)) {\n if (!this.initialStatefulData[requestId]) {\n this.initialStatefulData[requestId] = selectorResult;\n }\n const hasChanges = !isEqual(this.initialStatefulData[requestId], selectorResult);\n this.trackedStatefulChangesMap.set(requestId, hasChanges);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateService, deps: [{ token: i1.FlowConfigurationService }, { token: i2.FlowInfoService }, { token: i3.FlowStateApiService }, { token: i4.ConfigurationProcessorsApiService }, { token: i4.SalesTransactionApiService }, { token: i5.SalesTransactionService }, { token: i6.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.FlowConfigurationService }, { type: i2.FlowInfoService }, { type: i3.FlowStateApiService }, { type: i4.ConfigurationProcessorsApiService }, { type: i4.SalesTransactionApiService }, { type: i5.SalesTransactionService }, { type: i6.ToastService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FLOW_CUSTOMIZATION]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsMEJBQTBCLEdBRTNCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBR0wsMkJBQTJCLEVBQzNCLFVBQVUsRUFPVixTQUFTLEVBRVQsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixLQUFLLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQXFCLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFD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WUFDdkIsT0FBTztZQUNQLFNBQVM7WUFDVCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXFCLEVBQUUsWUFBb0IsRUFBRSxTQUFtQjtRQUN4RixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLEdBQUcsS0FBSyxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBaUIsRUFBRSxjQUF1QjtRQUNyRSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDdkQsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQzs4R0E1aEJVLGdCQUFnQiwwUkEwQkwsa0JBQWtCO2tIQTFCN0IsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkEyQk4sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93U3RhdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzQXBpU2VydmljZSxcbiAgU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UsXG4gIFNhbGVzVHJhbnNhY3Rpb25VcHNlcnRSZXF1ZXN0LFxufSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsXG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JTY3JpcHRGbixcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLFxuICBFbnRpdHlVdGlsLFxuICBGbG93U3RhdGUsXG4gIEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QsXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCxcbiAgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZSxcbiAgaXNEZWZpbmVkLFxuICBVSVRlbXBsYXRlVHlwZSxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBhc3NpZ24sIGNsb25lRGVlcCwgRGljdGlvbmFyeSwgZmxhdHRlbiwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGJ1ZmZlcixcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBub29wLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc2hhcmUsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMnO1xuaW1wb3J0IHsgRmxvd0N1c3RvbWl6YXRpb24sIEZMT1dfQ1VTVE9NSVpBVElPTiB9IGZyb20gJy4uL3R5cGVzL2Zsb3ctY3VzdG9taXphdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zLCBGbG93U3RvcmUgfSBmcm9tICcuLi90eXBlcy9mbG93LXN0YXRlLnR5cGVzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NhbGVzLXRyYW5zYWN0aW9uLnNlcnZpY2UnO1xuXG50eXBlIFByb2Nlc3NvcnNNYXAgPSBQYXJ0aWFsPHtcbiAgW293bmVySWQ6IHN0cmluZ106IHtcbiAgICBbYXBpTmFtZTogc3RyaW5nXTogQ29uZmlndXJhdGlvblByb2Nlc3NvcjtcbiAgfTtcbn0+O1xuXG50eXBlIFN1YnNjcmlwdGlvbiA9IHtcbiAgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTztcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93U3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBOT1RfSU5JVElBTElaRUQgPSBTeW1ib2woKTtcbiAgcHJpdmF0ZSByZWFkb25seSBFWEVDVVRJT05fQlVGRkVSX1RJTUUgPSAxMDA7XG5cbiAgcHJpdmF0ZSBleGVjdXRlZEZ1bmN0aW9uczogRGljdGlvbmFyeTxDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm4+ID0ge307XG4gIHByaXZhdGUgc3RhdGVJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGluaXRpYWxTdGF0ZWZ1bERhdGE6IERpY3Rpb25hcnk8dW5rbm93bj4gPSB7fTtcbiAgcHJpdmF0ZSB0cmFja2VkU3RhdGVmdWxDaGFuZ2VzTWFwOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBwcm9jZXNzb3JzOiBQcm9jZXNzb3JzTWFwID0ge307XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgU3Vic2NyaXB0aW9uPiA9IHt9O1xuICBwcml2YXRlIGZsb3dTdG9yZTogRmxvd1N0b3JlID0ge307XG5cbiAgcHJpdmF0ZSBleGVjdXRpb25JblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIHN0YXRlZnVsUmVxdWVzdFN0cmVhbSQgPSBuZXcgU3ViamVjdDxGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPPigpO1xuICBwcml2YXRlIHN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQ6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PjtcblxuICBwcml2YXRlIGNsZWFudXAkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZUFwaVNlcnZpY2U6IEZsb3dTdGF0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9jZXNzb3JzQXBpU2VydmljZTogQ29uZmlndXJhdGlvblByb2Nlc3NvcnNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGTE9XX0NVU1RPTUlaQVRJT04pIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U/OiBGbG93Q3VzdG9taXphdGlvbixcbiAgKSB7XG4gICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvblJlcXVlc3QkID0gdGhpcy5pbml0QnVmZmVyZWRSZXF1ZXN0JCgpO1xuXG4gICAgLypcbiAgICAgIEluIHN0YXRlbGVzcyBtb2RlIHdhdGNoIFN0YXRlIGNoYW5nZXMgYW5kIGNhbGwgZXhlY3V0ZVJlcXVlc3Qgc28gdGhhdFxuICAgICAgYWxsIHN1YnNjcmlwdGlvbnMgZ2V0IHRoZWlyIHVwZGF0ZXMgYWNjb3JkaW5nIHRvIHVwZGF0ZWQgU3RhdGVcbiAgICAqL1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWwpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93Q29uZmlndXJhdGlvbi51cGRhdGVkJCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JCh7fSwgdHJ1ZSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRQcm9jZXNzb3JzJCgpLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuaW5pdFN0YXRlZnVsJCgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmb3JrSm9pbihbdGhpcy5pbml0U3RhdGVsZXNzJCgpLCB0aGlzLmluaXRQcm9jZXNzb3JzJCgpXSkucGlwZShtYXAobm9vcCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoeyBkYXRhJCB9KSA9PiBkYXRhJC5jb21wbGV0ZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcblxuICAgIGlmICh0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2UuY2FuY2VsKHRoaXMuc3RhdGVJZCQudmFsdWUpLnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdGF0ZUlkJC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc29ycyA9IHt9O1xuICAgIHRoaXMuZmxvd1N0b3JlID0ge307XG4gICAgdGhpcy5jbGVhbnVwJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Vuc2F2ZWRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gQXJyYXkuZnJvbSh0aGlzLnRyYWNrZWRTdGF0ZWZ1bENoYW5nZXNNYXAudmFsdWVzKCkpLnNvbWUoQm9vbGVhbilcbiAgICAgIDogdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZUlkJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFeGVjdXRpb25JblByb2dyZXNzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5zdGF0ZUlkJCwgdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5pc0luaXRpYWxpemVkJF0pLnBpcGUoXG4gICAgICBtYXAodmFsdWVzID0+IHZhbHVlcy5zb21lKEJvb2xlYW4pKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zdGF0ZUlkJC52YWx1ZSkgfHwgdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGUkKFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0LFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdFsnc2VsZWN0b3JzJ10+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCBleGVjKTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIC8vIEtlZXAgb25seSByZXF1ZXN0ZWQgcmVzdWx0c1xuICAgICAgICBjb25zdCBhY3R1YWxTZWxlY3RvcnMgPSBPYmplY3QuZW50cmllcyhyZXN1bHQuc2VsZWN0b3JzKS5yZWR1Y2UoXG4gICAgICAgICAgKHRydW5rOiBSZWNvcmQ8c3RyaW5nLCBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPiwgW3JlcXVlc3RJZCwgcmVzdWx0XSkgPT4ge1xuICAgICAgICAgICAgaWYgKGV4ZWMuc2VsZWN0b3JzPy5bcmVxdWVzdElkXSkge1xuICAgICAgICAgICAgICB0cnVua1tyZXF1ZXN0SWRdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydW5rO1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFNlbGVjdG9ycztcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2gkKHNjb3BlOiBVSVRlbXBsYXRlVHlwZSwgYWN0aW9uOiBzdHJpbmcsIGlucHV0RGF0YT86IHVua25vd24pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0ID0ge1xuICAgICAgYWN0aW9uczogW3sgbmFtZTogYWN0aW9uLCBpbnB1dERhdGEgfV0sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCBleGVjKTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKG1hcChub29wKSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0JDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE/OiB1bmtub3duLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5nZW5lcmF0ZVJlcXVlc3RJZChzY29wZSwgc2VsZWN0b3JOYW1lLCBpbnB1dERhdGEpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIHtcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBbcmVxdWVzdElkXToge1xuICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2Uuc2VsZWN0b3JzW3JlcXVlc3RJZF0gYXMgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlJDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5nZW5lcmF0ZVJlcXVlc3RJZChzY29wZSwgc2VsZWN0b3JOYW1lLCBpbnB1dERhdGEpO1xuXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdO1xuXG4gICAgaWYgKCFzdWJzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHN1YnNjcmlwdGlvbiA9IHtcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj4odGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0gPSBzdWJzY3JpcHRpb247XG5cbiAgICAgIGlmIChvcHRpb25zPy50cmFja2VkQ2hhbmdlcykge1xuICAgICAgICB0aGlzLnRyYWNrZWRTdGF0ZWZ1bENoYW5nZXNNYXAuc2V0KHJlcXVlc3RJZCwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdGlvbnM/LmNvbGQpIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbi5kYXRhJC5waXBlKFxuICAgICAgZmlsdGVyKGRhdGEgPT4gZGF0YSAhPSB0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXT8uZGF0YSQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF07XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSQoKTogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmcgfT4ge1xuICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2Uuc2F2ZSh0aGlzLnN0YXRlSWQkLnZhbHVlKS5waXBlKFxuICAgICAgICAgIG1hcCgoeyBxdW90ZUlkIH0pID0+ICh7IGlkOiBxdW90ZUlkIH0pKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLnRyYWNrZWRTdGF0ZWZ1bENoYW5nZXNNYXAua2V5cygpKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJhY2tlZFN0YXRlZnVsQ2hhbmdlc01hcC5zZXQoa2V5LCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IFNhbGVzVHJhbnNhY3Rpb25VcHNlcnRSZXF1ZXN0ID0ge1xuICAgICAgICAgIHRyYW5zYWN0aW9uQ29udGV4dDogc3RhdGUsXG4gICAgICAgICAgZmxvd0lkOiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LmlkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNhbGVzVHJhbnNhY3Rpb25BcGlTZXJ2aWNlLnNhdmUocmVxdWVzdCkucGlwZShtYXAoaWQgPT4gKHsgaWQgfSkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2YoeyBpZDogJycgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmxvd1N0b3JlKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mbG93U3RvcmU7XG4gIH1cblxuICBwcml2YXRlIGdldE93bmVySWRCeVNjb3BlKHNjb3BlOiBVSVRlbXBsYXRlVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3duZXJJZCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlc1tzY29wZV0/LmlkO1xuICAgIGlmICghb3duZXJJZCkge1xuICAgICAgdGhyb3cgYE93bmVySWQgaXMgbm90IGZvdW5kIGZvciBzY29wZSAke3Njb3BlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG93bmVySWQ7XG4gIH1cblxuICBwcml2YXRlIGdldFNjb3BlQnlPd25lcklkKGlkOiBzdHJpbmcpOiBVSVRlbXBsYXRlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlcykpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZS5pZCA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlLnR5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjVG9SZXF1ZXN0KHNjb3BlOiBVSVRlbXBsYXRlVHlwZSwgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8ge1xuICAgIGNvbnN0IG93bmVySWQgPSB0aGlzLmdldE93bmVySWRCeVNjb3BlKHNjb3BlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb25zOiBleGVjLmFjdGlvbnM/Lm1hcChhY3Rpb24gPT4gKHsgYXBpTmFtZTogYWN0aW9uLm5hbWUsIG93bmVySWQsIGlucHV0RGF0YTogYWN0aW9uLmlucHV0RGF0YSA/PyB7fSB9KSksXG4gICAgICBzZWxlY3RvcnM6XG4gICAgICAgIGV4ZWMuc2VsZWN0b3JzICYmXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGV4ZWMuc2VsZWN0b3JzKS5yZWR1Y2UoXG4gICAgICAgICAgKHRydW5rOiBSZWNvcmQ8c3RyaW5nLCBGbG93U3RhdGVFeGVjdXRhYmxlRFRPPiwgW2tleSwgc2VsZWN0b3JdKSA9PiAoe1xuICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICBba2V5XTogeyBhcGlOYW1lOiBzZWxlY3Rvci5uYW1lLCBvd25lcklkLCBpbnB1dERhdGE6IHNlbGVjdG9yLmlucHV0RGF0YSA/PyB7fSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZVJlcXVlc3QkKFxuICAgIHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gICAgZm9yY2VTdWJzY3JpcHRpb25zID0gZmFsc2UsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgY29uc3QgZnVsbFJlcXVlc3QgPSBjbG9uZURlZXAocmVxdWVzdCk7XG4gICAgaWYgKGZ1bGxSZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCB8fCBmb3JjZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdWJzY3JpcHRpb25zKSkge1xuICAgICAgICBmdWxsUmVxdWVzdC5zZWxlY3RvcnMgPSBhc3NpZ24oZnVsbFJlcXVlc3Quc2VsZWN0b3JzLCBzdWJzY3JpcHRpb24ucmVxdWVzdC5zZWxlY3RvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV4ZWN1dGlvbiQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gdGhpcy5leGVjdXRlU3RhdGVmdWwkKGZ1bGxSZXF1ZXN0KVxuICAgICAgOiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3MkKGZ1bGxSZXF1ZXN0KTtcblxuICAgIHJldHVybiBleGVjdXRpb24kLnBpcGUodGFwKHJlc3VsdCA9PiB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHJlc3VsdC5zZWxlY3RvcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhzZWxlY3RvcnMpLmZvckVhY2goKFtyZXF1ZXN0SWQsIHNlbGVjdG9yUmVzdWx0XSkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RvclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uJCA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJDtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24kICYmIHN1YnNjcmlwdGlvbiQudmFsdWUgIT09IHNlbGVjdG9yUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuY2hlY2tTdGF0ZWZ1bENoYW5nZXMocmVxdWVzdElkLCBzZWxlY3RvclJlc3VsdCk7XG4gICAgICAgIHN1YnNjcmlwdGlvbiQubmV4dChzZWxlY3RvclJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWZ1bCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvY2Vzc29yc0xpc3QgPSBmbGF0dGVuKE9iamVjdC52YWx1ZXModGhpcy5wcm9jZXNzb3JzKS5tYXAob3duZXJNYXAgPT4gT2JqZWN0LnZhbHVlcyhvd25lck1hcCA/PyB7fSkpKTtcbiAgICBjb25zdCBwcm9jZXNzb3JzID0gcHJvY2Vzc29yc0xpc3QubGVuZ3RoID8gcHJvY2Vzc29yc0xpc3QgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0b3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpXG4gICAgICAubWFwKCh7IHJlcXVlc3QgfSkgPT4gcmVxdWVzdC5zZWxlY3RvcnMpXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZClcbiAgICAgIC5yZWR1Y2UoKHRydW5rLCBzZWxlY3RvcnMpID0+ICh7IC4uLnRydW5rLCAuLi5zZWxlY3RvcnMgfSksIHt9KTtcblxuICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2VcbiAgICAgIC5pbml0KHtcbiAgICAgICAgcXVvdGVJZDogdGhpcy5mbG93SW5mb1NlcnZpY2UuY29udGV4dC5oZWFkZXJJZCxcbiAgICAgICAgcGFyYW1zOiB0aGlzLmZsb3dJbmZvU2VydmljZS5jb250ZXh0LFxuICAgICAgICBhY3Rpb25zT3ZlcnJpZGU6IHByb2Nlc3NvcnM/LmZpbHRlcihwcm9jZXNzb3IgPT4gcHJvY2Vzc29yLnR5cGUgPT09IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JUeXBlcy5BQ1RJT04pLFxuICAgICAgICBzZWxlY3RvcnNPdmVycmlkZTogcHJvY2Vzc29ycz8uZmlsdGVyKHByb2Nlc3NvciA9PiBwcm9jZXNzb3IudHlwZSA9PT0gQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLlNFTEVDVE9SKSxcbiAgICAgICAgc2VsZWN0b3JzOiBzZWxlY3RvcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoeyBzdGF0ZUlkLCBzZWxlY3RvcnMgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0b3JzUmVzcG9uc2Uoc2VsZWN0b3JzKTtcbiAgICAgICAgICB0aGlzLnN0YXRlSWQkLm5leHQoc3RhdGVJZCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJ1ZmZlcmVkUmVxdWVzdCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVmdWxSZXF1ZXN0U3RyZWFtJC5waXBlKFxuICAgICAgYnVmZmVyKHRoaXMuc3RhdGVmdWxSZXF1ZXN0U3RyZWFtJC5waXBlKGRlYm91bmNlVGltZSh0aGlzLkVYRUNVVElPTl9CVUZGRVJfVElNRSkpKSxcbiAgICAgIHN3aXRjaE1hcChyZXF1ZXN0cyA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgICAgIHRocm93ICdTdGF0ZWZ1bCBzZXNzaW9uIGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtZXJnZSBidWZmZXJlZCByZXF1ZXN0c1xuICAgICAgICBjb25zdCByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPID0ge1xuICAgICAgICAgIGFjdGlvbnM6IHJlcXVlc3RzLmZsYXRNYXAoKHsgYWN0aW9ucyB9KSA9PiBhY3Rpb25zKS5maWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgICAgICBzZWxlY3RvcnM6IHJlcXVlc3RzXG4gICAgICAgICAgICAubWFwKCh7IHNlbGVjdG9ycyB9KSA9PiBzZWxlY3RvcnMpXG4gICAgICAgICAgICAuZmlsdGVyKGlzRGVmaW5lZClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgc2VsZWN0b3JzTWFwKSA9PiBPYmplY3QuYXNzaWduKGFjYywgc2VsZWN0b3JzTWFwKSwge30pLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5leGVjdXRlKHRoaXMuc3RhdGVJZCQudmFsdWUsIHJlcXVlc3QpO1xuICAgICAgfSksXG4gICAgICB0YXAoKHsgc3RhdGVJZCB9KSA9PiB0aGlzLnN0YXRlSWQkLm5leHQoc3RhdGVJZCkpLFxuICAgICAgc2hhcmUoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlZnVsJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5waXBlKFxuICAgICAgZmlsdGVyKGluUHJvZ3Jlc3MgPT4gIWluUHJvZ3Jlc3MpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAvLyBtYWtlIHN1cmUgc3RyZWFtIHN3aXRjaGVzIHRvIHN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQgYmVmb3JlIHB1c2hpbmcgYW4gZXhlY3V0aW9uIHJlcXVlc3RcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvblJlcXVlc3QkLFxuICAgICAgICAgIG9mKHVuZGVmaW5lZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLm5leHQocmVxdWVzdCkpKSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICAgbWFwKChbcmVzcG9uc2VdKSA9PiByZXNwb25zZSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWxlc3MkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLmluaXQodGhpcy5mbG93SW5mb1NlcnZpY2UuY29udGV4dC5oZWFkZXJJZCwgdGhpcy5mbG93SW5mb1NlcnZpY2UuY29udGV4dCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChzdGF0ZSA9PiB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmNhbGN1bGF0ZSQoc3RhdGUpKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLmZpbmFsaXplSW5pdCgpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuZXhlY3V0ZVN0YXRlbGVzc0FjdGlvbnMocmVxdWVzdCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICBTa2lwIHByaWNlIGNhbGN1bGF0aW9uIGluIGNhc2VcbiAgICAgICAgICAxLiBObyBhY3Rpb25zIGluIHRoZSByZXF1ZXN0XG4gICAgICAgICAgMi4gSW5pdGlhbGl6YXRpb24gcHJvY2VzcyBleGVjdXRpb24gKHN0YXRlIG5vdCBpbml0aWFsaXplZCB5ZXQpXG4gICAgICAgICovXG4gICAgICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U7XG4gICAgICAgIGlmICghc3RhdGUgfHwgIXJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoIHx8ICF0aGlzLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmNhbGN1bGF0ZSQoc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3NTZWxlY3RvcnMocmVxdWVzdCkpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSkpLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzQWN0aW9ucyhyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgIGlmICghc3RhdGUgfHwgIXJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGZsb3dTdGF0ZSA9IHN0YXRlO1xuICAgIHJlcXVlc3QuYWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBmbG93U3RhdGUgPSB0aGlzLmV4ZWN1dGVBY3Rpb25TY3JpcHQoZmxvd1N0YXRlLCBhY3Rpb24pID8/IGZsb3dTdGF0ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogU3RyaW5nKGUpIH0pO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zZXRTdGF0ZShmbG93U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzU2VsZWN0b3JzKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQge1xuICAgIGlmICghdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZSkge1xuICAgICAgdGhyb3cgJ1N0YXRlIGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvd1N0YXRlID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZTtcbiAgICByZXR1cm4gRW50aXR5VXRpbC5lbnRyaWVzKHJlcXVlc3Quc2VsZWN0b3JzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAocmVzdWx0OiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsIFtrZXksIHNlbGVjdG9yXSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3RvcnNba2V5XSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICByZXN1bHQ6IHRoaXMuZXhlY3V0ZVNlbGVjdG9yU2NyaXB0KGZsb3dTdGF0ZSwgc2VsZWN0b3IpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3RvcnNba2V5XSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBTdHJpbmcoZSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAgeyBzdGF0ZUlkOiAnJywgc2VsZWN0b3JzOiB7fSB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcm9jZXNzb3JzJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBoYXNPdmVycmlkZXMgPSBCb29sZWFuKHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2U/LmdldFRlbXBsYXRlQ29uZmlndXJhdGlvblByb2Nlc3NvcnMpO1xuICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LnByb3BlcnRpZXMuc3RhdGVmdWwgJiYgIWhhc092ZXJyaWRlcykge1xuICAgICAgLy8gU2tpcCBpbml0aWFsaXphdGlvbiBhcyBiYWNrZW5kIHdpbGwgdGFrZSBwcm9jZXNzb3JzIGZyb20gU0ZcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG93bmVycyQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlcylcbiAgICAgIC5tYXAodGVtcGxhdGUgPT4ge1xuICAgICAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxQcm9jZXNzb3JzJCA9XG4gICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb25maWd1cmF0aW9uUHJvY2Vzc29ycz8uKHRlbXBsYXRlLm5hbWUpID8/IG9mKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBsb2NhbFByb2Nlc3NvcnMkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHByb2Nlc3NvcnMgPT5cbiAgICAgICAgICAgIHByb2Nlc3NvcnMgPyBvZihwcm9jZXNzb3JzKSA6IHRoaXMucHJvY2Vzc29yc0FwaVNlcnZpY2UuZmV0Y2hDb25maWd1cmF0aW9uUHJvY2Vzc29ycyQodGVtcGxhdGUuaWQpLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKHByb2Nlc3NvcnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yc01hcCA9IHByb2Nlc3NvcnMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3I+LCBwKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1twLmFwaU5hbWVdID0gcDtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzb3JzW3RlbXBsYXRlLmlkXSA9IHByb2Nlc3NvcnNNYXA7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihpc0RlZmluZWQpO1xuXG4gICAgaWYgKCFvd25lcnMkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKG93bmVycyQpLnBpcGUobWFwKG5vb3ApKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZUFjdGlvblNjcmlwdChyZXF1ZXN0OiBGbG93U3RhdGUsIGV4ZWN1dGFibGU6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiBGbG93U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uUHJvY2Vzc29yID0gdGhpcy5wcm9jZXNzb3JzW2V4ZWN1dGFibGUub3duZXJJZF0/LltleGVjdXRhYmxlLmFwaU5hbWVdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uUHJvY2Vzc29yPy5zY3JpcHQpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChleGVjdXRhYmxlLm93bmVySWQpO1xuICAgICAgY29uc3Qgc2NvcGVUZXh0ID0gc2NvcGUgPyBgIGluICR7c2NvcGV9YCA6ICcnO1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtleGVjdXRhYmxlLmFwaU5hbWV9JHtzY29wZVRleHR9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBjb25maWd1cmF0aW9uUHJvY2Vzc29yLCBleGVjdXRhYmxlLmlucHV0RGF0YSkgYXMgRmxvd1N0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2VsZWN0b3JTY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBleGVjdXRhYmxlOiBGbG93U3RhdGVFeGVjdXRhYmxlRFRPKTogdW5rbm93biB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvblByb2Nlc3Nvcj8uc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgY29uZmlndXJhdGlvblByb2Nlc3NvciwgZXhlY3V0YWJsZS5pbnB1dERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlUHJvY2Vzc29yU2NyaXB0KFxuICAgIHJlcXVlc3Q6IEZsb3dTdGF0ZSxcbiAgICBjb25maWd1cmF0aW9uUHJvY2Vzc29yOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICAgIGlucHV0RGF0YTogdW5rbm93bixcbiAgKTogdW5rbm93biB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlQnlPd25lcklkKGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3Iub3duZXJJZCA/PyAnJyk7XG4gICAgbGV0IGZ1bmN0aW9uVG9FeGVjdXRlID0gdGhpcy5leGVjdXRlZEZ1bmN0aW9uc1tzY29wZSArIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZV07XG5cbiAgICBpZiAoIWZ1bmN0aW9uVG9FeGVjdXRlKSB7XG4gICAgICBjb25zdCBzY3JpcHQgPSBgJHtjb25maWd1cmF0aW9uUHJvY2Vzc29yLnNjcmlwdH1cXG5yZXR1cm4gdHJhbnNmb3JtO2A7XG4gICAgICBjb25zdCBzb3VyY2VNYXAgPSBgXFxuLy8jIHNvdXJjZVVSTD0ke3Njb3BlID8gc2NvcGUgKyAnLycgOiAnJ30ke2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZX0uanNgO1xuICAgICAgZnVuY3Rpb25Ub0V4ZWN1dGUgPSBuZXcgRnVuY3Rpb24oc2NyaXB0ICsgc291cmNlTWFwKSgpIGFzIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JTY3JpcHRGbjtcbiAgICAgIHRoaXMuZXhlY3V0ZWRGdW5jdGlvbnNbc2NvcGUgKyBjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdID0gZnVuY3Rpb25Ub0V4ZWN1dGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9FeGVjdXRlKHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbnB1dERhdGEsXG4gICAgICBmbG93U3RvcmU6IHRoaXMuZmxvd1N0b3JlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJlcXVlc3RJZChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIHNlbGVjdG9yTmFtZTogc3RyaW5nLCBpbnB1dERhdGE/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbnB1dERhdGFIYXNoID0gVVVJRC5oZXgoSlNPTi5zdHJpbmdpZnkoaW5wdXREYXRhKSB8fCAnJykuc2xpY2UoMCwgOCk7XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke3NlbGVjdG9yTmFtZX0vJHtpbnB1dERhdGFIYXNofWA7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrU3RhdGVmdWxDaGFuZ2VzKHJlcXVlc3RJZDogc3RyaW5nLCBzZWxlY3RvclJlc3VsdDogdW5rbm93bikge1xuICAgIGlmICh0aGlzLnRyYWNrZWRTdGF0ZWZ1bENoYW5nZXNNYXAuaGFzKHJlcXVlc3RJZCkpIHtcbiAgICAgIGlmICghdGhpcy5pbml0aWFsU3RhdGVmdWxEYXRhW3JlcXVlc3RJZF0pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsU3RhdGVmdWxEYXRhW3JlcXVlc3RJZF0gPSBzZWxlY3RvclJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzQ2hhbmdlcyA9ICFpc0VxdWFsKHRoaXMuaW5pdGlhbFN0YXRlZnVsRGF0YVtyZXF1ZXN0SWRdLCBzZWxlY3RvclJlc3VsdCk7XG4gICAgICB0aGlzLnRyYWNrZWRTdGF0ZWZ1bENoYW5nZXNNYXAuc2V0KHJlcXVlc3RJZCwgaGFzQ2hhbmdlcyk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { PCMApiService } from '@veloceapps/api/v2';\nimport { map, noop, of, switchMap, tap } from 'rxjs';\nimport { ConfigurationService } from '../modules/configuration/services/configuration.service';\nimport { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';\nimport { generateTransactionItem, updateQuantity } from '../utils';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\nimport { SalesTransactionService } from './sales-transaction.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./flow-info.service\";\nimport * as i2 from \"./flow-state.service\";\nimport * as i3 from \"../modules/configuration/services/configuration.service\";\nimport * as i4 from \"./sales-transaction.service\";\nimport * as i5 from \"../modules/flow-configuration/services/flow-configuration.service\";\nimport * as i6 from \"@veloceapps/api/v2\";\nexport class FlowStateConfigurationService {\n constructor(flowInfoService, flowStateService, configurationService, salesTransactionService, flowConfigurationService, pcmApiService) {\n this.flowInfoService = flowInfoService;\n this.flowStateService = flowStateService;\n this.configurationService = configurationService;\n this.salesTransactionService = salesTransactionService;\n this.flowConfigurationService = flowConfigurationService;\n this.pcmApiService = pcmApiService;\n this.pcmCache = {};\n }\n updateQuantity$(props) {\n const allItems = this.salesTransactionService.state?.salesTransaction?.salesTransactionItems ?? [];\n const ti = allItems.find(item => item.id === props.id);\n if (!ti) {\n return of(undefined);\n }\n return this.getPCMProduct$(ti.productId).pipe(map(pcm => updateQuantity(ti, props.qty, pcm)), switchMap(updatedTi => {\n const state = this.salesTransactionService.state;\n if (!state) {\n return of(undefined);\n }\n const updatedState = {\n ...state,\n salesTransaction: {\n ...state.salesTransaction,\n salesTransactionItems: state.salesTransaction.salesTransactionItems.map(item => {\n return updatedTi.id === item.id ? updatedTi : item;\n }),\n },\n };\n return this.flowConfigurationService.calculate$(updatedState);\n }), switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));\n }\n addToCart$(props) {\n let request$;\n const stateful = this.flowInfoService.flow?.properties.stateful;\n if (stateful) {\n const stateId = this.flowStateService.stateId;\n if (!stateId) {\n request$ = of();\n }\n else {\n // TODO: Implement\n request$ = of();\n }\n }\n else {\n request$ = this.configureExternal$(props);\n }\n return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));\n }\n configureExternal$(props) {\n return this.getPCMProduct$(props.productId).pipe(switchMap(pcm => {\n const { state } = this.salesTransactionService;\n if (!state) {\n return of();\n }\n const stateToConfigure = {\n ...state,\n salesTransaction: {\n ...state.salesTransaction,\n salesTransactionItems: [\n {\n ...generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id, props.qty ?? 1),\n stiAttributes: Object.entries(props.attributesMap ?? {}).map(([attributeName, value]) => ({\n attributeName,\n value,\n })),\n },\n ],\n },\n };\n return this.configurationService.justConfigureRequest$(stateToConfigure).pipe(switchMap(configurationResult => {\n const state = this.salesTransactionService.state;\n const addedProduct = configurationResult.salesTransaction.salesTransactionItems[0];\n if (!state || !addedProduct) {\n return of();\n }\n return this.flowConfigurationService.calculate$({\n ...state,\n salesTransaction: {\n ...state.salesTransaction,\n salesTransactionItems: [...state.salesTransaction.salesTransactionItems, addedProduct],\n },\n });\n }));\n }));\n }\n getPCMProduct$(productId) {\n const cached = this.pcmCache[productId];\n if (cached) {\n return of(cached);\n }\n return this.pcmApiService\n .fetchPCMByProductId(productId)\n .pipe(tap(pcmProduct => (this.pcmCache[productId] = pcmProduct)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowStateService }, { token: i3.ConfigurationService }, { token: i4.SalesTransactionService }, { token: i5.FlowConfigurationService }, { token: i6.PCMApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowStateConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }, { type: i3.ConfigurationService }, { type: i4.SalesTransactionService }, { type: i5.FlowConfigurationService }, { type: i6.PCMApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUd0RSxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQ1UsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG9CQUEwQyxFQUMxQyx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELGFBQTRCO1FBTDVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xE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Q2QsQ0FBQztnQkFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUM7b0JBQzlDLEdBQUcsS0FBSztvQkFDUixnQkFBZ0IsRUFBRTt3QkFDaEIsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO3dCQUN6QixxQkFBcUIsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQztxQkFDdkY7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLFNBQWlCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQXpIVSw2QkFBNkI7a0hBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBDTUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgUENNUHJvZHVjdCwgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGUsIFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBtYXAsIG5vb3AsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcywgUXVhbnRpdHlDaGFuZ2VQcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLCB1cGRhdGVRdWFudGl0eSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zYWxlcy10cmFuc2FjdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwY21DYWNoZTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZVF1YW50aXR5JChwcm9wczogUXVhbnRpdHlDaGFuZ2VQcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbj8uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIGNvbnN0IHRpID0gYWxsSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByb3BzLmlkKTtcblxuICAgIGlmICghdGkpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHRpLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIG1hcChwY20gPT4gdXBkYXRlUXVhbnRpdHkodGksIHByb3BzLnF0eSwgcGNtKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFRpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUaS5pZCA9PT0gaXRlbS5pZCA/IHVwZGF0ZWRUaSA6IGl0ZW07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0NhcnQkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHByb3BzLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwY20gPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZVRvQ29uZmlndXJlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocGNtLCB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkLCBwcm9wcy5xdHkgPz8gMSksXG4gICAgICAgICAgICAgICAgc3RpQXR0cmlidXRlczogT2JqZWN0LmVudHJpZXMocHJvcHMuYXR0cmlidXRlc01hcCA/PyB7fSkubWFwKChbYXR0cmlidXRlTmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmp1c3RDb25maWd1cmVSZXF1ZXN0JChzdGF0ZVRvQ29uZmlndXJlKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChjb25maWd1cmF0aW9uUmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkUHJvZHVjdCA9IGNvbmZpZ3VyYXRpb25SZXN1bHQuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF07XG4gICAgICAgICAgICBpZiAoIXN0YXRlIHx8ICFhZGRlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogWy4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLCBhZGRlZFByb2R1Y3RdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQQ01Qcm9kdWN0JChwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UENNUHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucGNtQ2FjaGVbcHJvZHVjdElkXTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gb2YoY2FjaGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wY21BcGlTZXJ2aWNlXG4gICAgICAuZmV0Y2hQQ01CeVByb2R1Y3RJZChwcm9kdWN0SWQpXG4gICAgICAucGlwZSh0YXAocGNtUHJvZHVjdCA9PiAodGhpcy5wY21DYWNoZVtwcm9kdWN0SWRdID0gcGNtUHJvZHVjdCkpKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, map, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class IntegrationState {\n constructor() {\n this.stateSubj$ = new BehaviorSubject({});\n this.action$ = new Subject();\n }\n get state$() {\n return this.stateSubj$.asObservable();\n }\n get state() {\n return this.stateSubj$.getValue();\n }\n patchState(update) {\n this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n }\n dispatch(action) {\n this.action$.next(action);\n }\n listen$(actionType) {\n return this.action$.pipe(filter(action => action.type === actionType), map(action => action.payload));\n }\n listenAll$() {\n return this.action$.asObservable();\n }\n reset() {\n this.stateSubj$.next({});\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IntegrationState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IntegrationState }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IntegrationState, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2ludGVncmF0aW9uLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJekUsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUksRUFBTyxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0tBZ0M3RDtJQTlCQyxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWtCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQXlCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQVUsVUFBa0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQVksQ0FBQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFtQixDQUFDO0lBQ3RELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0FqQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvbkFjdGlvbiwgSW50ZWdyYXRpb25TdGF0ZU1vZGVsIH0gZnJvbSAnLi4vdHlwZXMvaW50ZWdyYXRpb24udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25TdGF0ZTxTID0gSW50ZWdyYXRpb25TdGF0ZU1vZGVsPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Uz4oe30gYXMgUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uJCA9IG5ldyBTdWJqZWN0PEludGVncmF0aW9uQWN0aW9uPigpO1xuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8Uz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IFMge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaFN0YXRlKHVwZGF0ZTogUGFydGlhbDxTPik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJqJC5uZXh0KHsgLi4udGhpcy5zdGF0ZVN1YmokLmdldFZhbHVlKCksIC4uLnVwZGF0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaChhY3Rpb246IEludGVncmF0aW9uQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb24kLm5leHQoYWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBsaXN0ZW4kPFAgPSBhbnk+KGFjdGlvblR5cGU6IHN0cmluZyk6IE9ic2VydmFibGU8UD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbiQucGlwZShcbiAgICAgIGZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGUpLFxuICAgICAgbWFwKGFjdGlvbiA9PiBhY3Rpb24ucGF5bG9hZCBhcyBQKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxpc3RlbkFsbCQ8VCBleHRlbmRzIEludGVncmF0aW9uQWN0aW9uPigpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb24kLmFzT2JzZXJ2YWJsZSgpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YmokLm5leHQoe30gYXMgUyk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { ProductsAdminApiService } from '@veloceapps/api/v2';\nimport { BehaviorSubject, catchError, distinctUntilChanged, map, of, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@veloceapps/api/v2\";\nexport class ProductImagesService {\n constructor(productsAdminApiService) {\n this.productsAdminApiService = productsAdminApiService;\n this.imagesMap$ = new BehaviorSubject({});\n }\n getImageUrl$(productId) {\n if (this.imagesMap$.value[productId] == null) {\n this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: '' });\n this.fetchProductImage(productId);\n }\n return this.imagesMap$.pipe(map(imagesMap => imagesMap[productId] ?? null), distinctUntilChanged());\n }\n fetchProductImage(productId) {\n this.productsAdminApiService\n .fetchImage$(productId)\n .pipe(map(file => URL.createObjectURL(file)), catchError(() => of('')), tap(url => this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: url })))\n .subscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ProductImagesService, deps: [{ token: i1.ProductsAdminApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ProductImagesService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ProductImagesService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ProductsAdminApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1pbWFnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcHJvZHVjdC1pbWFnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHbkcsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUY1RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBRU0sQ0FBQztJQUVqRSxZQUFZLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUM5QyxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3pDLElBQUksQ0FBQyx1QkFBdUI7YUFDekIsV0FBVyxDQUFDLFNBQVMsQ0FBQzthQUN0QixJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDakY7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQTFCVSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RzQWRtaW5BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm9kdWN0SW1hZ2VzU2VydmljZSB7XG4gIHByaXZhdGUgaW1hZ2VzTWFwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGljdGlvbmFyeTxzdHJpbmc+Pih7fSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9kdWN0c0FkbWluQXBpU2VydmljZTogUHJvZHVjdHNBZG1pbkFwaVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGdldEltYWdlVXJsJChwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmICh0aGlzLmltYWdlc01hcCQudmFsdWVbcHJvZHVjdElkXSA9PSBudWxsKSB7XG4gICAgICB0aGlzLmltYWdlc01hcCQubmV4dCh7IC4uLnRoaXMuaW1hZ2VzTWFwJC52YWx1ZSwgW3Byb2R1Y3RJZF06ICcnIH0pO1xuICAgICAgdGhpcy5mZXRjaFByb2R1Y3RJbWFnZShwcm9kdWN0SWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmltYWdlc01hcCQucGlwZShcbiAgICAgIG1hcChpbWFnZXNNYXAgPT4gaW1hZ2VzTWFwW3Byb2R1Y3RJZF0gPz8gbnVsbCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUHJvZHVjdEltYWdlKHByb2R1Y3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9kdWN0c0FkbWluQXBpU2VydmljZVxuICAgICAgLmZldGNoSW1hZ2UkKHByb2R1Y3RJZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZmlsZSA9PiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZignJykpLFxuICAgICAgICB0YXAodXJsID0+IHRoaXMuaW1hZ2VzTWFwJC5uZXh0KHsgLi4udGhpcy5pbWFnZXNNYXAkLnZhbHVlLCBbcHJvZHVjdElkXTogdXJsIH0pKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { isDefined } from '@veloceapps/core';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class CatalogProductsService {\n constructor() {\n this.stateSubj$ = new BehaviorSubject(null);\n this.state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n }\n get state() {\n return this.stateSubj$.getValue();\n }\n reset() {\n this.stateSubj$.next(null);\n }\n setState(state) {\n this.stateSubj$.next(state);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CatalogProductsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CatalogProductsService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CatalogProductsService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9kdWN0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9jYXRhbG9nLXByb2R1Y3RzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRVUsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF5QixJQUFJLENBQUMsQ0FBQztRQUVoRSxXQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FheEU7SUFYQyxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBZlUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXRhbG9nUHJvZHVjdHMsIGlzRGVmaW5lZCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhdGFsb2dQcm9kdWN0c1NlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhdGFsb2dQcm9kdWN0cyB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBzdGF0ZSQgPSB0aGlzLnN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpOiBDYXRhbG9nUHJvZHVjdHMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUoc3RhdGU6IENhdGFsb2dQcm9kdWN0cyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJqJC5uZXh0KHN0YXRlKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { PCMApiService, SalesTransactionApiService, } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport { EntityUtil, isDefined, UUID, } from '@veloceapps/core';\nimport { assign, cloneDeep } from 'lodash';\nimport { BehaviorSubject, buffer, catchError, combineLatest, debounceTime, distinctUntilChanged, filter, finalize, first, map, of, share, shareReplay, Subject, switchMap, take, takeUntil, tap, throwError, } from 'rxjs';\nimport { FlowInfoService, FlowStateService, SalesTransactionService } from '../../../services';\nimport { FlowConfigurationService } from '../../flow-configuration';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\nimport { generateTransactionItem } from '../../../utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./configuration-runtime.service\";\nimport * as i2 from \"./configuration.service\";\nimport * as i3 from \"../../../services\";\nimport * as i4 from \"../../flow-configuration\";\nimport * as i5 from \"@veloceapps/api\";\nimport * as i6 from \"@veloceapps/api/v2\";\nimport * as i7 from \"@veloceapps/components\";\nexport class ConfigurationStateService {\n constructor(configurationRuntimeService, configurationService, flowStateService, flowInfoService, flowConfigurationService, flowStateApiService, salesTransactionService, salesTransactionApiService, toastService, pcmApiService) {\n this.configurationRuntimeService = configurationRuntimeService;\n this.configurationService = configurationService;\n this.flowStateService = flowStateService;\n this.flowInfoService = flowInfoService;\n this.flowConfigurationService = flowConfigurationService;\n this.flowStateApiService = flowStateApiService;\n this.salesTransactionService = salesTransactionService;\n this.salesTransactionApiService = salesTransactionApiService;\n this.toastService = toastService;\n this.pcmApiService = pcmApiService;\n this.isInitialized$ = new BehaviorSubject(false);\n this.canceledConfiguration$ = new Subject();\n this.NOT_INITIALIZED = Symbol();\n this.EXECUTION_BUFFER_TIME = 100;\n this.executedFunctions = {};\n this.stateId = null;\n this.ownerId = '';\n this.subscriptions = {};\n this.configurationStore = {};\n this.executionInProgress$ = new BehaviorSubject(false);\n this.statefulRequestStream$ = new Subject();\n this.statelessExecutionRequest$ = null;\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n }\n get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n init$() {\n let request$;\n if (this.flowStateService.stateId && this.isStatefulConfiguration) {\n request$ = this.initStateful$();\n }\n else {\n request$ = this.configurationService.init$();\n }\n return request$.pipe(take(1), tap(() => {\n this.isInitialized$.next(true);\n this.canceledConfiguration$ = new Subject();\n }));\n }\n cleanup() {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n if (this.stateId) {\n this.cancelConfiguration();\n }\n this.configurationStore = {};\n this.executedFunctions = {};\n this.configurationService.reset();\n this.configurationRuntimeService.reset();\n }\n execute$(exec) {\n const request = this.execToRequest(exec);\n return this.executeRequest$(request).pipe(map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce((trunk, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n }, {});\n return actualSelectors;\n }));\n }\n dispatch$(actionName, inputData = {}) {\n const exec = {\n actions: [{ name: actionName, inputData }],\n };\n const request = this.execToRequest(exec);\n const executionRequest$ = this.executeRequest$(request);\n if (this.isStatefulConfiguration) {\n return executionRequest$;\n }\n // prevent parallel configuration requests in stateless mode\n if (!this.statelessExecutionRequest$) {\n this.statelessExecutionRequest$ = executionRequest$.pipe(shareReplay(), take(1), finalize(() => (this.statelessExecutionRequest$ = null)));\n }\n return this.statelessExecutionRequest$;\n }\n select$(selectorName, inputData = {}) {\n const requestId = UUID.UUID();\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n return this.executeRequest$(request).pipe(map(response => response.selectors[requestId]));\n }\n subscribe$(selectorName, inputData = {}, options) {\n const requestId = UUID.UUID();\n let subscription = this.subscriptions[requestId];\n if (!subscription) {\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n subscription = {\n request,\n data$: new BehaviorSubject(this.NOT_INITIALIZED),\n };\n this.subscriptions[requestId] = subscription;\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n return subscription.data$.pipe(filter(data => data != this.NOT_INITIALIZED), map(data => data), distinctUntilChanged(), finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }), takeUntil(this.canceledConfiguration$));\n }\n saveConfiguration() {\n if (this.isStatefulConfiguration) {\n return this.flowStateApiService.saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '').pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))), map(r => ({ id: r.quoteId })));\n }\n const state = this.salesTransactionService.state;\n if (!state) {\n return of({ id: '' });\n }\n const { standalone } = this.flowInfoService.flow.properties;\n const transactionContext = this.salesTransactionService.state;\n const configurationRoot = this.configurationService.root;\n if (!transactionContext || !configurationRoot) {\n return of({ id: '' });\n }\n const stateItems = transactionContext.salesTransaction.salesTransactionItems;\n const isNewTransactionItem = stateItems.every(ti => ti.id !== configurationRoot.id);\n let salesTransactionItems;\n if (isNewTransactionItem) {\n salesTransactionItems = [...stateItems, configurationRoot];\n }\n else {\n salesTransactionItems = stateItems.map(ti => (ti.id === configurationRoot.id ? configurationRoot : ti));\n }\n const newState = {\n ...transactionContext,\n salesTransaction: {\n ...transactionContext.salesTransaction,\n salesTransactionItems,\n },\n };\n if (standalone) {\n const request = {\n transactionContext: newState,\n flowId: this.flowInfoService.flow.id,\n };\n return this.salesTransactionApiService.save(request).pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))), map(id => ({ id })));\n }\n return this.flowConfigurationService.calculate$(newState).pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(() => ({ id: '' })));\n }\n cancelConfiguration() {\n if (!this.isInitialized$.value) {\n return of(undefined);\n }\n this.canceledConfiguration$.next();\n this.canceledConfiguration$.complete();\n this.subscriptions = {};\n this.isInitialized$.next(false);\n if (!this.isInitialized$.value || !this.isStatefulConfiguration) {\n return of(undefined);\n }\n return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');\n }\n get isStatefulConfiguration() {\n return this.flowInfoService.flow?.properties.stateful ?? false;\n }\n initStateful$() {\n this.ownerId = this.configurationRuntimeService.uiDefinitionContainer?.id ?? '';\n const { productId, transactionItemId } = this.flowInfoService.context;\n if (!productId || !this.flowStateService.stateId) {\n return of(undefined);\n }\n const container = this.configurationRuntimeService.uiDefinitionContainer;\n let request$;\n if (!transactionItemId) {\n request$ = this.pcmApiService.fetchPCMByProductId(productId).pipe(switchMap(pcm => {\n return this.flowStateApiService.newConfiguration(this.flowStateService.stateId || '', {\n transactionItem: generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id),\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n }));\n }\n else {\n request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {\n transactionItemId,\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n }\n return request$.pipe(map(r => {\n this.stateId = r.stateId;\n return undefined;\n }));\n }\n execToRequest(exec) {\n return {\n actions: exec.actions?.map(action => ({\n apiName: action.name,\n ownerId: this.ownerId,\n inputData: action.inputData ?? {},\n })),\n selectors: exec.selectors &&\n Object.entries(exec.selectors).reduce((trunk, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: selector.inputData ?? {} },\n }), {}),\n };\n }\n handleSelectorsResponse(selectors) {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$) {\n subscription$.next(selectorResult);\n }\n });\n }\n executeRequest$(req, forceSubscriptions) {\n const fullRequest = cloneDeep(req);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n let execution$;\n if (this.isStatefulConfiguration) {\n execution$ = this.executeStateful$(fullRequest);\n }\n else {\n execution$ = this.executeStateless$(fullRequest);\n }\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n executeStateless$(request) {\n this.executionInProgress$.next(true);\n return this.configurationService.state$.pipe(first(), switchMap(state => {\n // Apply actions and execute configuration/price call\n // No need to run configuration if no actions in the request\n if (!request.actions?.length) {\n return of(undefined);\n }\n request.actions.forEach(action => {\n state = this.executeActionScript(state, action) ?? state;\n });\n return this.configurationService.configure$(state);\n }), map(() => {\n // Run selectors and apply them to the state\n const configurationState = this.configurationService.state;\n if (!configurationState) {\n return { stateId: '', selectors: {} };\n }\n return this.runStatelessSelectors(request, configurationState);\n }), tap(() => this.executionInProgress$.next(false)), catchError(error => {\n const configurationState = this.configurationService.previousState;\n if (configurationState) {\n const selectorsResult = this.runStatelessSelectors(request, configurationState);\n this.handleSelectorsResponse(selectorsResult.selectors);\n }\n this.executionInProgress$.next(false);\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.toastService.add({ severity: ToastType.error, summary: String(error) });\n }\n return throwError(() => error);\n }));\n }\n initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))), switchMap(requests => {\n if (!this.flowStateService.stateId || !this.stateId) {\n throw 'Stateful session is not initialized';\n }\n // merge buffered requests\n const request = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n this.executionInProgress$.next(true);\n return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request);\n }), tap(({ stateId }) => (this.stateId = stateId)), share(), tap(() => this.executionInProgress$.next(false)), catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }));\n }\n executeStateful$(request) {\n return this.executionInProgress$.pipe(filter(inProgress => !inProgress), take(1), switchMap(() => \n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ])), map(([response]) => response), take(1));\n }\n executeActionScript(request, processor) {\n const { actions } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n }\n executeSelectorScript(request, processor) {\n const { selectors } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n }\n executeProcessorScript(request, configurationProcessor, inputData) {\n let functionToExecute = this.executedFunctions[configurationProcessor.apiName];\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)();\n this.executedFunctions[configurationProcessor.apiName] = functionToExecute;\n }\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStateService.getFlowStore(),\n configurationStore: this.configurationStore,\n });\n }\n runStatelessSelectors(request, configurationState) {\n return EntityUtil.entries(request.selectors ?? {}).reduce((result, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(configurationState, selector),\n };\n }\n catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n return result;\n }, { stateId: '', selectors: {} });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationStateService, deps: [{ token: i1.ConfigurationRuntimeService }, { token: i2.ConfigurationService }, { token: i3.FlowStateService }, { token: i3.FlowInfoService }, { token: i4.FlowConfigurationService }, { token: i5.FlowStateApiService }, { token: i3.SalesTransactionService }, { token: i6.SalesTransactionApiService }, { token: i7.ToastService }, { token: i6.PCMApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationStateService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationStateService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ConfigurationRuntimeService }, { type: i2.ConfigurationService }, { type: i3.FlowStateService }, { type: i3.FlowInfoService }, { type: i4.FlowConfigurationService }, { type: i5.FlowStateApiService }, { type: i3.SalesTransactionService }, { type: i6.SalesTransactionApiService }, { type: i7.ToastService }, { type: i6.PCMApiService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUNMLGFBQWEsRUFDYiwwQkFBMEIsR0FHM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFHTCxVQUFVLEVBTVYsU0FBUyxFQUdULElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFjLE1BQU0sUUFBUSxDQUFDO0FBQ3ZELE9BQU8sRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUs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QUs7b0JBQ2QsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ3hCLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUNELEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQy9CLENBQUM7SUFDSixDQUFDOzhHQWpmVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZsb3dTdGF0ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHtcbiAgUENNQXBpU2VydmljZSxcbiAgU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UsXG4gIFNhbGVzVHJhbnNhY3Rpb25VcHNlcnRSZXF1ZXN0LFxuICBTYWxlc1RyYW5zYWN0aW9uVXBzZXJ0UmVzcG9uc2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvcixcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvclNjcmlwdEZuLFxuICBFbnRpdHlVdGlsLFxuICBGbG93U3RhdGVFeGVjdXRhYmxlRFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0LFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsXG4gIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2UsXG4gIGlzRGVmaW5lZCxcbiAgU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIFRyYW5zYWN0aW9uQ29udGV4dCxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBhc3NpZ24sIGNsb25lRGVlcCwgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGJ1ZmZlcixcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBmaW5hbGl6ZSxcbiAgZmlyc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIEZsb3dTdGF0ZVNlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zsb3ctc3RhdGUudHlwZXMnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmxvdy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxudHlwZSBTdGF0ZVN1YnNjcmlwdGlvbiA9IHtcbiAgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTztcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU3RhdGVTZXJ2aWNlIHtcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNhbmNlbGVkQ29uZmlndXJhdGlvbiQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTk9UX0lOSVRJQUxJWkVEID0gU3ltYm9sKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgRVhFQ1VUSU9OX0JVRkZFUl9USU1FID0gMTAwO1xuXG4gIHByaXZhdGUgZXhlY3V0ZWRGdW5jdGlvbnM6IERpY3Rpb25hcnk8Q29uZmlndXJhdGlvblByb2Nlc3NvclNjcmlwdEZuPiA9IHt9O1xuICBwcml2YXRlIHN0YXRlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG93bmVySWQgPSAnJztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBTdGF0ZVN1YnNjcmlwdGlvbj4gPSB7fTtcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3RvcmU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgcHJpdmF0ZSBleGVjdXRpb25JblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIHN0YXRlZnVsUmVxdWVzdFN0cmVhbSQgPSBuZXcgU3ViamVjdDxGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPPigpO1xuICBwcml2YXRlIHN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQ6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PjtcbiAgcHJpdmF0ZSBzdGF0ZWxlc3NFeGVjdXRpb25SZXF1ZXN0JDogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uU2VydmljZTogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd1N0YXRlQXBpU2VydmljZTogRmxvd1N0YXRlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlOiBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHNhbGVzVHJhbnNhY3Rpb25BcGlTZXJ2aWNlOiBTYWxlc1RyYW5zYWN0aW9uQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGNtQXBpU2VydmljZTogUENNQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvblJlcXVlc3QkID0gdGhpcy5pbml0QnVmZmVyZWRSZXF1ZXN0JCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0V4ZWN1dGlvbkluUHJvZ3Jlc3MkKCkge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCByZXF1ZXN0JDtcbiAgICBpZiAodGhpcy5mbG93U3RhdGVTZXJ2aWNlLnN0YXRlSWQgJiYgdGhpcy5pc1N0YXRlZnVsQ29uZmlndXJhdGlvbikge1xuICAgICAgcmVxdWVzdCQgPSB0aGlzLmluaXRTdGF0ZWZ1bCQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdCQgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3QkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmNhbmNlbGVkQ29uZmlndXJhdGlvbiQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhbnVwKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdWJzY3JpcHRpb25zKS5mb3JFYWNoKCh7IGRhdGEkIH0pID0+IGRhdGEkLmNvbXBsZXRlKCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuc3RhdGVJZCkge1xuICAgICAgdGhpcy5jYW5jZWxDb25maWd1cmF0aW9uKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RvcmUgPSB7fTtcbiAgICB0aGlzLmV4ZWN1dGVkRnVuY3Rpb25zID0ge307XG4gICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5yZXNldCgpO1xuICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZSQoZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0WydzZWxlY3RvcnMnXT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3QoZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAvLyBLZWVwIG9ubHkgcmVxdWVzdGVkIHJlc3VsdHNcbiAgICAgICAgY29uc3QgYWN0dWFsU2VsZWN0b3JzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0LnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZT4sIFtyZXF1ZXN0SWQsIHJlc3VsdF0pID0+IHtcbiAgICAgICAgICAgIGlmIChleGVjLnNlbGVjdG9ycz8uW3JlcXVlc3RJZF0pIHtcbiAgICAgICAgICAgICAgdHJ1bmtbcmVxdWVzdElkXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVuaztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9LFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBhY3R1YWxTZWxlY3RvcnM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc3BhdGNoJChhY3Rpb25OYW1lOiBzdHJpbmcsIGlucHV0RGF0YTogdW5rbm93biA9IHt9KTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBleGVjOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0ID0ge1xuICAgICAgYWN0aW9uczogW3sgbmFtZTogYWN0aW9uTmFtZSwgaW5wdXREYXRhIH1dLFxuICAgIH07XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChleGVjKTtcblxuICAgIGNvbnN0IGV4ZWN1dGlvblJlcXVlc3QkID0gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCk7XG5cbiAgICBpZiAodGhpcy5pc1N0YXRlZnVsQ29uZmlndXJhdGlvbikge1xuICAgICAgcmV0dXJuIGV4ZWN1dGlvblJlcXVlc3QkO1xuICAgIH1cblxuICAgIC8vIHByZXZlbnQgcGFyYWxsZWwgY29uZmlndXJhdGlvbiByZXF1ZXN0cyBpbiBzdGF0ZWxlc3MgbW9kZVxuICAgIGlmICghdGhpcy5zdGF0ZWxlc3NFeGVjdXRpb25SZXF1ZXN0JCkge1xuICAgICAgdGhpcy5zdGF0ZWxlc3NFeGVjdXRpb25SZXF1ZXN0JCA9IGV4ZWN1dGlvblJlcXVlc3QkLnBpcGUoXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLnN0YXRlbGVzc0V4ZWN1dGlvblJlcXVlc3QkID0gbnVsbCkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVsZXNzRXhlY3V0aW9uUmVxdWVzdCQ7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0JDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNlbGVjdG9yTmFtZTogc3RyaW5nLFxuICAgIGlucHV0RGF0YTogdW5rbm93biA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gVVVJRC5VVUlEKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdCh7XG4gICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICBuYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLnNlbGVjdG9yc1tyZXF1ZXN0SWRdIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZSQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE6IHVua25vd24gPSB7fSxcbiAgICBvcHRpb25zPzogRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IFVVSUQuVVVJRCgpO1xuXG4gICAgbGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdO1xuICAgIGlmICghc3Vic2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHN1YnNjcmlwdGlvbiA9IHtcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj4odGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgfTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdID0gc3Vic2NyaXB0aW9uO1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LmNvbGQpIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbi5kYXRhJC5waXBlKFxuICAgICAgZmlsdGVyKGRhdGEgPT4gZGF0YSAhPSB0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0/LmRhdGEkLm9ic2VydmVkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmNhbmNlbGVkQ29uZmlndXJhdGlvbiQpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUNvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTxTYWxlc1RyYW5zYWN0aW9uVXBzZXJ0UmVzcG9uc2U+IHtcbiAgICBpZiAodGhpcy5pc1N0YXRlZnVsQ29uZmlndXJhdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zYXZlQ29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCA/PyAnJywgdGhpcy5zdGF0ZUlkID8/ICcnKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAociA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKS5waXBlKG1hcCgoKSA9PiByKSkpLFxuICAgICAgICBtYXAociA9PiAoeyBpZDogci5xdW90ZUlkIH0pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybiBvZih7IGlkOiAnJyB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YW5kYWxvbmUgfSA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cucHJvcGVydGllcztcbiAgICBjb25zdCB0cmFuc2FjdGlvbkNvbnRleHQgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Sb290ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5yb290O1xuICAgIGlmICghdHJhbnNhY3Rpb25Db250ZXh0IHx8ICFjb25maWd1cmF0aW9uUm9vdCkge1xuICAgICAgcmV0dXJuIG9mKHsgaWQ6ICcnIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRlSXRlbXMgPSB0cmFuc2FjdGlvbkNvbnRleHQuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXM7XG4gICAgY29uc3QgaXNOZXdUcmFuc2FjdGlvbkl0ZW0gPSBzdGF0ZUl0ZW1zLmV2ZXJ5KHRpID0+IHRpLmlkICE9PSBjb25maWd1cmF0aW9uUm9vdC5pZCk7XG5cbiAgICBsZXQgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdO1xuICAgIGlmIChpc05ld1RyYW5zYWN0aW9uSXRlbSkge1xuICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID0gWy4uLnN0YXRlSXRlbXMsIGNvbmZpZ3VyYXRpb25Sb290XTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID0gc3RhdGVJdGVtcy5tYXAodGkgPT4gKHRpLmlkID09PSBjb25maWd1cmF0aW9uUm9vdC5pZCA/IGNvbmZpZ3VyYXRpb25Sb290IDogdGkpKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgLi4udHJhbnNhY3Rpb25Db250ZXh0LFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAuLi50cmFuc2FjdGlvbkNvbnRleHQuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHN0YW5kYWxvbmUpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFNhbGVzVHJhbnNhY3Rpb25VcHNlcnRSZXF1ZXN0ID0ge1xuICAgICAgICB0cmFuc2FjdGlvbkNvbnRleHQ6IG5ld1N0YXRlLFxuICAgICAgICBmbG93SWQ6IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cuaWQsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5zYWxlc1RyYW5zYWN0aW9uQXBpU2VydmljZS5zYXZlKHJlcXVlc3QpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChyID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpLnBpcGUobWFwKCgpID0+IHIpKSksXG4gICAgICAgIG1hcChpZCA9PiAoeyBpZCB9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKG5ld1N0YXRlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcCgoKSA9PiAoeyBpZDogJycgfSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsQ29uZmlndXJhdGlvbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCQudmFsdWUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHRoaXMuY2FuY2VsZWRDb25maWd1cmF0aW9uJC5uZXh0KCk7XG4gICAgdGhpcy5jYW5jZWxlZENvbmZpZ3VyYXRpb24kLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkLm5leHQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkJC52YWx1ZSB8fCAhdGhpcy5pc1N0YXRlZnVsQ29uZmlndXJhdGlvbikge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2UuY2FuY2VsQ29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCA/PyAnJywgdGhpcy5zdGF0ZUlkID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzU3RhdGVmdWxDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3RhdGVmdWwkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHRoaXMub3duZXJJZCA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uaWQgPz8gJyc7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQsIHRyYW5zYWN0aW9uSXRlbUlkIH0gPSB0aGlzLmZsb3dJbmZvU2VydmljZS5jb250ZXh0O1xuICAgIGlmICghcHJvZHVjdElkIHx8ICF0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UudWlEZWZpbml0aW9uQ29udGFpbmVyO1xuXG4gICAgbGV0IHJlcXVlc3QkOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD47XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uSXRlbUlkKSB7XG4gICAgICByZXF1ZXN0JCA9IHRoaXMucGNtQXBpU2VydmljZS5mZXRjaFBDTUJ5UHJvZHVjdElkKHByb2R1Y3RJZCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHBjbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5uZXdDb25maWd1cmF0aW9uKHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkIHx8ICcnLCB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbkl0ZW06IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtKHBjbSwgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbi5pZCksXG4gICAgICAgICAgICBhY3Rpb25zT3ZlcnJpZGU6IGNvbnRhaW5lcj8uYWN0aW9ucz8ubWFwKHByb2Nlc3NvciA9PiAoeyAuLi5wcm9jZXNzb3IsIG93bmVySWQ6IHRoaXMub3duZXJJZCB9KSksXG4gICAgICAgICAgICBzZWxlY3RvcnNPdmVycmlkZTogY29udGFpbmVyPy5zZWxlY3RvcnM/Lm1hcChwcm9jZXNzb3IgPT4gKHsgLi4ucHJvY2Vzc29yLCBvd25lcklkOiB0aGlzLm93bmVySWQgfSkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnN0YXJ0Q29uZmlndXJhdGlvbih0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCwge1xuICAgICAgICB0cmFuc2FjdGlvbkl0ZW1JZCxcbiAgICAgICAgYWN0aW9uc092ZXJyaWRlOiBjb250YWluZXI/LmFjdGlvbnM/Lm1hcChwcm9jZXNzb3IgPT4gKHsgLi4ucHJvY2Vzc29yLCBvd25lcklkOiB0aGlzLm93bmVySWQgfSkpLFxuICAgICAgICBzZWxlY3RvcnNPdmVycmlkZTogY29udGFpbmVyPy5zZWxlY3RvcnM/Lm1hcChwcm9jZXNzb3IgPT4gKHsgLi4ucHJvY2Vzc29yLCBvd25lcklkOiB0aGlzLm93bmVySWQgfSkpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3QkLnBpcGUoXG4gICAgICBtYXAociA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVJZCA9IHIuc3RhdGVJZDtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWNUb1JlcXVlc3QoZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8ge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb25zOiBleGVjLmFjdGlvbnM/Lm1hcChhY3Rpb24gPT4gKHtcbiAgICAgICAgYXBpTmFtZTogYWN0aW9uLm5hbWUsXG4gICAgICAgIG93bmVySWQ6IHRoaXMub3duZXJJZCxcbiAgICAgICAgaW5wdXREYXRhOiBhY3Rpb24uaW5wdXREYXRhID8/IHt9LFxuICAgICAgfSkpLFxuICAgICAgc2VsZWN0b3JzOlxuICAgICAgICBleGVjLnNlbGVjdG9ycyAmJlxuICAgICAgICBPYmplY3QuZW50cmllcyhleGVjLnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlRXhlY3V0YWJsZURUTz4sIFtrZXksIHNlbGVjdG9yXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgW2tleV06IHsgYXBpTmFtZTogc2VsZWN0b3IubmFtZSwgb3duZXJJZDogdGhpcy5vd25lcklkLCBpbnB1dERhdGE6IHNlbGVjdG9yLmlucHV0RGF0YSA/PyB7fSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhzZWxlY3RvcnMpLmZvckVhY2goKFtyZXF1ZXN0SWQsIHNlbGVjdG9yUmVzdWx0XSkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RvclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uJCA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJDtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24kKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbiQubmV4dChzZWxlY3RvclJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVSZXF1ZXN0JChcbiAgICByZXE6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gICAgZm9yY2VTdWJzY3JpcHRpb25zPzogYm9vbGVhbixcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBmdWxsUmVxdWVzdCA9IGNsb25lRGVlcChyZXEpO1xuICAgIGlmIChmdWxsUmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgZm9yY2VTdWJzY3JpcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgZnVsbFJlcXVlc3Quc2VsZWN0b3JzID0gYXNzaWduKGZ1bGxSZXF1ZXN0LnNlbGVjdG9ycywgc3Vic2NyaXB0aW9uLnJlcXVlc3Quc2VsZWN0b3JzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZXhlY3V0aW9uJDtcblxuICAgIGlmICh0aGlzLmlzU3RhdGVmdWxDb25maWd1cmF0aW9uKSB7XG4gICAgICBleGVjdXRpb24kID0gdGhpcy5leGVjdXRlU3RhdGVmdWwkKGZ1bGxSZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhlY3V0aW9uJCA9IHRoaXMuZXhlY3V0ZVN0YXRlbGVzcyQoZnVsbFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHJldHVybiBleGVjdXRpb24kLnBpcGUodGFwKHJlc3VsdCA9PiB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHJlc3VsdC5zZWxlY3RvcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3MkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlJC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcChzdGF0ZSA9PiB7XG4gICAgICAgIC8vIEFwcGx5IGFjdGlvbnMgYW5kIGV4ZWN1dGUgY29uZmlndXJhdGlvbi9wcmljZSBjYWxsXG4gICAgICAgIC8vIE5vIG5lZWQgdG8gcnVuIGNvbmZpZ3VyYXRpb24gaWYgbm8gYWN0aW9ucyBpbiB0aGUgcmVxdWVzdFxuICAgICAgICBpZiAoIXJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICAgIHN0YXRlID0gdGhpcy5leGVjdXRlQWN0aW9uU2NyaXB0KHN0YXRlLCBhY3Rpb24pID8/IHN0YXRlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5jb25maWd1cmUkKHN0YXRlKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgLy8gUnVuIHNlbGVjdG9ycyBhbmQgYXBwbHkgdGhlbSB0byB0aGUgc3RhdGVcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvblN0YXRlID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zdGF0ZTtcbiAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uU3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4geyBzdGF0ZUlkOiAnJywgc2VsZWN0b3JzOiB7fSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucnVuU3RhdGVsZXNzU2VsZWN0b3JzKHJlcXVlc3QsIGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uU3RhdGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnByZXZpb3VzU3RhdGU7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uU3RhdGUpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RvcnNSZXN1bHQgPSB0aGlzLnJ1blN0YXRlbGVzc1NlbGVjdG9ycyhyZXF1ZXN0LCBjb25maWd1cmF0aW9uU3RhdGUpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0b3JzUmVzcG9uc2Uoc2VsZWN0b3JzUmVzdWx0LnNlbGVjdG9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BzLnN1cHByZXNzVG9hc3RNZXNzYWdlcykge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IFN0cmluZyhlcnJvcikgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnVmZmVyZWRSZXF1ZXN0JCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLnBpcGUoXG4gICAgICBidWZmZXIodGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuRVhFQ1VUSU9OX0JVRkZFUl9USU1FKSkpLFxuICAgICAgc3dpdGNoTWFwKHJlcXVlc3RzID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZCB8fCAhdGhpcy5zdGF0ZUlkKSB7XG4gICAgICAgICAgdGhyb3cgJ1N0YXRlZnVsIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1lcmdlIGJ1ZmZlcmVkIHJlcXVlc3RzXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8gPSB7XG4gICAgICAgICAgYWN0aW9uczogcmVxdWVzdHMuZmxhdE1hcCgoeyBhY3Rpb25zIH0pID0+IGFjdGlvbnMpLmZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgICAgIHNlbGVjdG9yczogcmVxdWVzdHNcbiAgICAgICAgICAgIC5tYXAoKHsgc2VsZWN0b3JzIH0pID0+IHNlbGVjdG9ycylcbiAgICAgICAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBzZWxlY3RvcnNNYXApID0+IE9iamVjdC5hc3NpZ24oYWNjLCBzZWxlY3RvcnNNYXApLCB7fSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmV4ZWN1dGVDb25maWd1cmF0aW9uKHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkLCB0aGlzLnN0YXRlSWQsIHJlcXVlc3QpO1xuICAgICAgfSksXG4gICAgICB0YXAoKHsgc3RhdGVJZCB9KSA9PiAodGhpcy5zdGF0ZUlkID0gc3RhdGVJZCkpLFxuICAgICAgc2hhcmUoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlZnVsJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5waXBlKFxuICAgICAgZmlsdGVyKGluUHJvZ3Jlc3MgPT4gIWluUHJvZ3Jlc3MpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAvLyBtYWtlIHN1cmUgc3RyZWFtIHN3aXRjaGVzIHRvIHN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQgYmVmb3JlIHB1c2hpbmcgYW4gZXhlY3V0aW9uIHJlcXVlc3RcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvblJlcXVlc3QkLFxuICAgICAgICAgIG9mKHVuZGVmaW5lZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLm5leHQocmVxdWVzdCkpKSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICAgbWFwKChbcmVzcG9uc2VdKSA9PiByZXNwb25zZSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb25TY3JpcHQocmVxdWVzdDogVHJhbnNhY3Rpb25Db250ZXh0LCBwcm9jZXNzb3I6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiBUcmFuc2FjdGlvbkNvbnRleHQge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UudWlEZWZpbml0aW9uQ29udGFpbmVyID8/IHt9O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgPSBhY3Rpb25zPy5maW5kKGFjdGlvbiA9PiBhY3Rpb24uYXBpTmFtZSA9PT0gcHJvY2Vzc29yLmFwaU5hbWUpO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uUHJvY2Vzc29yPy5zY3JpcHQpIHtcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7cHJvY2Vzc29yLmFwaU5hbWV9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBjb25maWd1cmF0aW9uUHJvY2Vzc29yLCBwcm9jZXNzb3IuaW5wdXREYXRhKSBhcyBUcmFuc2FjdGlvbkNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTZWxlY3RvclNjcmlwdChyZXF1ZXN0OiBUcmFuc2FjdGlvbkNvbnRleHQsIHByb2Nlc3NvcjogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IHVua25vd24ge1xuICAgIGNvbnN0IHsgc2VsZWN0b3JzIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS51aURlZmluaXRpb25Db250YWluZXIgPz8ge307XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IHNlbGVjdG9ycz8uZmluZChzZWxlY3RvciA9PiBzZWxlY3Rvci5hcGlOYW1lID09PSBwcm9jZXNzb3IuYXBpTmFtZSk7XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb25Qcm9jZXNzb3I/LnNjcmlwdCkge1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtwcm9jZXNzb3IuYXBpTmFtZX0gbm90IGZvdW5kYDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUHJvY2Vzc29yU2NyaXB0KHJlcXVlc3QsIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsIHByb2Nlc3Nvci5pbnB1dERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlUHJvY2Vzc29yU2NyaXB0KFxuICAgIHJlcXVlc3Q6IFRyYW5zYWN0aW9uQ29udGV4dCxcbiAgICBjb25maWd1cmF0aW9uUHJvY2Vzc29yOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICAgIGlucHV0RGF0YTogdW5rbm93bixcbiAgKTogdW5rbm93biB7XG4gICAgbGV0IGZ1bmN0aW9uVG9FeGVjdXRlID0gdGhpcy5leGVjdXRlZEZ1bmN0aW9uc1tjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdO1xuICAgIGlmICghZnVuY3Rpb25Ub0V4ZWN1dGUpIHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGAke2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3Iuc2NyaXB0fVxcbnJldHVybiB0cmFuc2Zvcm07YDtcbiAgICAgIGNvbnN0IHNvdXJjZU1hcCA9IGBcXG4vLyMgc291cmNlVVJMPSR7Y29uZmlndXJhdGlvblByb2Nlc3Nvci5hcGlOYW1lfS5qc2A7XG4gICAgICBmdW5jdGlvblRvRXhlY3V0ZSA9IG5ldyBGdW5jdGlvbihzY3JpcHQgKyBzb3VyY2VNYXApKCkgYXMgQ29uZmlndXJhdGlvblByb2Nlc3NvclNjcmlwdEZuO1xuICAgICAgdGhpcy5leGVjdXRlZEZ1bmN0aW9uc1tjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdID0gZnVuY3Rpb25Ub0V4ZWN1dGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9FeGVjdXRlKHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbnB1dERhdGEsXG4gICAgICBmbG93U3RvcmU6IHRoaXMuZmxvd1N0YXRlU2VydmljZS5nZXRGbG93U3RvcmUoKSxcbiAgICAgIGNvbmZpZ3VyYXRpb25TdG9yZTogdGhpcy5jb25maWd1cmF0aW9uU3RvcmUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJ1blN0YXRlbGVzc1NlbGVjdG9ycyhcbiAgICByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICAgIGNvbmZpZ3VyYXRpb25TdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0LFxuICApOiBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQge1xuICAgIHJldHVybiBFbnRpdHlVdGlsLmVudHJpZXMocmVxdWVzdC5zZWxlY3RvcnMgPz8ge30pLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCwgW2tleSwgc2VsZWN0b3JdKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogdGhpcy5leGVjdXRlU2VsZWN0b3JTY3JpcHQoY29uZmlndXJhdGlvblN0YXRlLCBzZWxlY3RvciksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IFN0cmluZyhlKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICB7IHN0YXRlSWQ6ICcnLCBzZWxlY3RvcnM6IHt9IH0sXG4gICAgKTtcbiAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationStateService } from './services/configuration-state.service';\nimport { ConfigurationService } from './services/configuration.service';\nimport { TestModeConfigurationService } from './services/test-mode-configuration.service';\nimport { GuidedSellingService } from './services/guided-selling.service';\nimport * as i0 from \"@angular/core\";\nexport class ConfigurationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationModule, imports: [ConfirmationDialogModule, ApiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationModule, providers: [\n ConfigurationService,\n ConfigurationStateService,\n ConfigurationRuntimeService,\n TestModeConfigurationService,\n GuidedSellingService,\n ], imports: [ConfirmationDialogModule, ApiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ConfigurationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ConfirmationDialogModule, ApiModule],\n providers: [\n ConfigurationService,\n ConfigurationStateService,\n ConfigurationRuntimeService,\n TestModeConfigurationService,\n GuidedSellingService,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFZekUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFUcEIsd0JBQXdCLEVBQUUsU0FBUzsrR0FTbEMsbUJBQW1CLGFBUm5CO1lBQ1Qsb0JBQW9CO1lBQ3BCLHlCQUF5QjtZQUN6QiwyQkFBMkI7WUFDM0IsNEJBQTRCO1lBQzVCLG9CQUFvQjtTQUNyQixZQVBTLHdCQUF3QixFQUFFLFNBQVM7OzJGQVNsQyxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsU0FBUyxDQUFDO29CQUM5QyxTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsNEJBQTRCO3dCQUM1QixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwaU1vZHVsZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dNb2R1bGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlndXJhdGlvbi1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVzdE1vZGVDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGVzdC1tb2RlLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBHdWlkZWRTZWxsaW5nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3VpZGVkLXNlbGxpbmcuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb25maXJtYXRpb25EaWFsb2dNb2R1bGUsIEFwaU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gICAgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICAgIFRlc3RNb2RlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgR3VpZGVkU2VsbGluZ1NlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Nb2R1bGUge31cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport * as i0 from \"@angular/core\";\nexport class FlowConfigurationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationModule, imports: [ApiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationModule, providers: [FlowConfigurationService], imports: [ApiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FlowConfigurationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ApiModule],\n providers: [FlowConfigurationService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFNakYsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCOytHQUF2Qix1QkFBdUIsWUFIeEIsU0FBUzsrR0FHUix1QkFBdUIsYUFGdkIsQ0FBQyx3QkFBd0IsQ0FBQyxZQUQzQixTQUFTOzsyRkFHUix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNwQixTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBpTW9kdWxlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQXBpTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmxvd0NvbmZpZ3VyYXRpb25Nb2R1bGUge31cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const FORMATTING_SETTINGS_TOKEN = new InjectionToken('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGluZy1zZXR0aW5ncy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdHlwZXMvZm9ybWF0dGluZy1zZXR0aW5ncy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUV4RCwwRkFBMEYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByZXR0aWZ5LCBWbERhdGVTZXR0aW5ncyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPHtcbiAgZ2V0Rm9ybWF0dGluZ1NldHRpbmdzOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBGb3JtYXR0aW5nU2V0dGluZ3M7XG59PignU3VtbWFyeSBvZiBmb3JtYXR0aW5nIHNldHRpbmdzIGZvciB2YXJpYW50IHR5cGVzIG9mIGRhdGEsIGUuZy4gbnVtYmVycywgdGV4dCwgZGF0ZXMsIGV0YycpO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0aW5nU2V0dGluZ3MgPSBQcmV0dGlmeTxcbiAge1xuICAgIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmc7XG4gICAgdGhvdXNhbmRzU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nO1xuICAgIGRlY2ltYWxzQ291bnQ6IG51bWJlcjtcbiAgICBhY3Rpb25Db2RlTGFiZWxzOiBEaWN0aW9uYXJ5PHN0cmluZz47XG4gIH0gJiBWbERhdGVTZXR0aW5nc1xuPjtcbiJdfQ==","export const UI_DEFINITION_VERSION = 3;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZGVmaW5pdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdHlwZXMvdWktZGVmaW5pdGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVUlfREVGSU5JVElPTl9WRVJTSU9OID0gMztcbiJdfQ==","import { NgModule } from '@angular/core';\nimport { DEFAULT_ACTION_CODE_LABELS, DEFAULT_CURRENCY_SYMBOL, DEFAULT_DATE_FORMAT, DEFAULT_DECIMALS_COUNT, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, getSupportedDateFormats, } from '@veloceapps/core';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { FlowConfigurationModule } from './modules/flow-configuration/flow-configuration.module';\nimport { FlowInfoService, FlowStateService, IntegrationState, ProductImagesService, RuntimeSettingsService, SalesTransactionService, FlowStateConfigurationService, CatalogProductsService, } from './services';\nimport { FORMATTING_SETTINGS_TOKEN } from './types';\nimport * as i0 from \"@angular/core\";\nexport const DEFAULT_FORMATTING_SETTINGS = {\n currencySymbol: DEFAULT_CURRENCY_SYMBOL,\n decimalsCount: DEFAULT_DECIMALS_COUNT,\n dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),\n decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: DEFAULT_ACTION_CODE_LABELS,\n};\nexport class SdkCoreModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkCoreModule, imports: [ConfigurationModule, FlowConfigurationModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkCoreModule, providers: [\n FlowInfoService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\n SalesTransactionService,\n CatalogProductsService,\n {\n provide: FORMATTING_SETTINGS_TOKEN,\n useExisting: RuntimeSettingsService,\n },\n ], imports: [ConfigurationModule, FlowConfigurationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkCoreModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ConfigurationModule, FlowConfigurationModule],\n providers: [\n FlowInfoService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\n SalesTransactionService,\n CatalogProductsService,\n {\n provide: FORMATTING_SETTINGS_TOKEN,\n useExisting: RuntimeSettingsService,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL2NvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLHVCQUF1QixHQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw2QkFBNkIsRUFDN0Isc0JBQXNCLEdBQ3ZCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBc0IseUJBQXlCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXhFLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUF1QjtJQUM3RCxjQUFjLEVBQUUsdUJBQXVCO0lBQ3ZDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsV0FBVyxFQUFFLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDO0lBQ3pELGdCQUFnQixFQUFFLHlCQUF5QjtJQUMzQyxrQkFBa0IsRUFBRSwyQkFBMkI7SUFDL0MsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQzdDLENBQUM7QUFtQkYsTUFBTSxPQUFPLGFBQWE7OEdBQWIsYUFBYTsrR0FBYixhQUFhLFlBaEJkLG1CQUFtQixFQUFFLHVCQUF1QjsrR0FnQjNDLGFBQWEsYUFmYjtZQUNULGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQiw2QkFBNkI7WUFDN0Isc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEI7Z0JBQ0UsT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGLFlBZFMsbUJBQW1CLEVBQUUsdUJBQXVCOzsyRkFnQjNDLGFBQWE7a0JBakJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO29CQUN2RCxTQUFTLEVBQUU7d0JBQ1QsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQiw2QkFBNkI7d0JBQzdCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCOzRCQUNFLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsRUFBRSxzQkFBc0I7eUJBQ3BDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQUNUSU9OX0NPREVfTEFCRUxTLFxuICBERUZBVUxUX0NVUlJFTkNZX1NZTUJPTCxcbiAgREVGQVVMVF9EQVRFX0ZPUk1BVCxcbiAgREVGQVVMVF9ERUNJTUFMU19DT1VOVCxcbiAgREVGQVVMVF9ERUNJTUFMX1NFUEFSQVRPUixcbiAgREVGQVVMVF9USE9VU0FORFNfU0VQQVJBVE9SLFxuICBnZXRTdXBwb3J0ZWREYXRlRm9ybWF0cyxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25Nb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL2Zsb3ctY29uZmlndXJhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtcbiAgRmxvd0luZm9TZXJ2aWNlLFxuICBGbG93U3RhdGVTZXJ2aWNlLFxuICBJbnRlZ3JhdGlvblN0YXRlLFxuICBQcm9kdWN0SW1hZ2VzU2VydmljZSxcbiAgUnVudGltZVNldHRpbmdzU2VydmljZSxcbiAgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBDYXRhbG9nUHJvZHVjdHNTZXJ2aWNlLFxufSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IEZvcm1hdHRpbmdTZXR0aW5ncywgRk9STUFUVElOR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT1JNQVRUSU5HX1NFVFRJTkdTOiBGb3JtYXR0aW5nU2V0dGluZ3MgPSB7XG4gIGN1cnJlbmN5U3ltYm9sOiBERUZBVUxUX0NVUlJFTkNZX1NZTUJPTCxcbiAgZGVjaW1hbHNDb3VudDogREVGQVVMVF9ERUNJTUFMU19DT1VOVCxcbiAgZGF0ZUZvcm1hdHM6IGdldFN1cHBvcnRlZERhdGVGb3JtYXRzKERFRkFVTFRfREFURV9GT1JNQVQpLFxuICBkZWNpbWFsU2VwYXJhdG9yOiBERUZBVUxUX0RFQ0lNQUxfU0VQQVJBVE9SLFxuICB0aG91c2FuZHNTZXBhcmF0b3I6IERFRkFVTFRfVEhPVVNBTkRTX1NFUEFSQVRPUixcbiAgYWN0aW9uQ29kZUxhYmVsczogREVGQVVMVF9BQ1RJT05fQ09ERV9MQUJFTFMsXG59O1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29uZmlndXJhdGlvbk1vZHVsZSwgRmxvd0NvbmZpZ3VyYXRpb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBGbG93SW5mb1NlcnZpY2UsXG4gICAgUHJvZHVjdEltYWdlc1NlcnZpY2UsXG4gICAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gICAgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgQ2F0YWxvZ1Byb2R1Y3RzU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2RrQ29yZU1vZHVsZSB7fVxuIl19","import { Directive, Input, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DEFAULT_DATE_FORMAT } from '@veloceapps/core';\nimport { Calendar } from 'primeng/calendar';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\nimport * as i0 from \"@angular/core\";\nexport class CalendarDirective {\n constructor() {\n this.ngControl = inject(NgControl, { host: true, optional: true });\n this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n this.destroy$ = new Subject();\n }\n set vlCalendar(calendar) {\n this.calendar = calendar;\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n ngOnInit() {\n if (this.calendar) {\n this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;\n if (this.ngControl && this.ngControl.control) {\n const control = this.ngControl.control;\n control.setValue(control.value, { emitEvent: false });\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CalendarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: CalendarDirective, isStandalone: false, selector: \"[vlCalendar]\", inputs: { vlCalendar: \"vlCalendar\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: CalendarDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[vlCalendar]',\n standalone: false,\n }]\n }], propDecorators: { vlCalendar: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYWxlbmRhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL2RpcmVjdGl2ZXMvcHJpbWVuZy1jYWxlbmRhci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU1yRCxNQUFNLE9BQU8saUJBQWlCO0lBSjlCO1FBV1UsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFDcEcsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FpQnhDO0lBekJDLElBQ1csVUFBVSxDQUFDLFFBQWtCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFPTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsYUFBYSxJQUFJLG1CQUFtQixDQUFDO1lBRXJHLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQXpCVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzhCQUdZLFVBQVU7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBERUZBVUxUX0RBVEVfRk9STUFUIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRk9STUFUVElOR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uL3R5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3ZsQ2FsZW5kYXJdJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZsQ2FsZW5kYXIoY2FsZW5kYXI6IENhbGVuZGFyKSB7XG4gICAgdGhpcy5jYWxlbmRhciA9IGNhbGVuZGFyO1xuICB9XG4gIHByaXZhdGUgY2FsZW5kYXIhOiBDYWxlbmRhcjtcblxuICBwcml2YXRlIG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgaG9zdDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgZm9ybWF0dGluZ1NldHRpbmdzID0gaW5qZWN0KEZPUk1BVFRJTkdfU0VUVElOR1NfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk/LmdldEZvcm1hdHRpbmdTZXR0aW5ncygpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLmRhdGVGb3JtYXQgPSB0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncz8uZGF0ZUZvcm1hdHMucHJpbWVuZ0Zvcm1hdCA/PyBERUZBVUxUX0RBVEVfRk9STUFUO1xuXG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShjb250cm9sLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { CalendarDirective } from './primeng-calendar.directive';\nimport * as i0 from \"@angular/core\";\nexport class SdkDirectivesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkDirectivesModule, declarations: [CalendarDirective], exports: [CalendarDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkDirectivesModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CalendarDirective],\n exports: [CalendarDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFNakUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsaUJBSGYsaUJBQWlCLGFBQ3RCLGlCQUFpQjsrR0FFaEIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEaXJlY3RpdmUgfSBmcm9tICcuL3ByaW1lbmctY2FsZW5kYXIuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ2FsZW5kYXJEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbQ2FsZW5kYXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTZGtEaXJlY3RpdmVzTW9kdWxlIHt9XG4iXX0=","import { filter, map } from 'rxjs';\nexport function filterSuccessfulExecute() {\n return (source) => source.pipe(filter((result) => result.success), map(r => r.result));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN1Y2Nlc3NmdWwtZXhlY3V0ZS5vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvb3BlcmF0b3JzL2ZpbHRlci1zdWNjZXNzZnVsLWV4ZWN1dGUub3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFL0MsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLENBQUMsTUFBZ0QsRUFBRSxFQUFFLENBQzFELE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxDQUFDLENBQUMsTUFBb0MsRUFBd0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDdEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUNuQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2UsIEZsb3dTdGF0ZVNlbGVjdG9yUmVzdWx0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU3VjY2Vzc2Z1bEV4ZWN1dGU8VD4oKSB7XG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8VD4+KSA9PlxuICAgIHNvdXJjZS5waXBlKFxuICAgICAgZmlsdGVyKChyZXN1bHQ6IEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8VD4pOiByZXN1bHQgaXMgRmxvd1N0YXRlU2VsZWN0b3JSZXN1bHQ8VD4gPT4gcmVzdWx0LnN1Y2Nlc3MpLFxuICAgICAgbWFwKHIgPT4gci5yZXN1bHQpLFxuICAgICk7XG59XG4iXX0=","import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport { DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\nimport * as i0 from \"@angular/core\";\nexport class DatePipe {\n constructor() {\n this.locale = inject(LOCALE_ID);\n this.defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n this.destroy$ = new Subject();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n transform(date, type = 'date') {\n if (!date) {\n return '';\n }\n const dateFormat = this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT;\n const formatMap = {\n date: dateFormat,\n time: DEFAULT_TIME_FORMAT,\n datetime: `${dateFormat} ${DEFAULT_TIME_FORMAT}`,\n };\n try {\n return formatDate(date, formatMap[type], this.locale, this.defaultOptions?.timezone);\n }\n catch (error) {\n return new Date(date).toString();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DatePipe, isStandalone: false, name: \"vlDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'vlDate',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9waXBlcy9kYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQWEsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQVkseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxRQUFRO0lBSnJCO1FBS1UsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFDcEcsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0EwQnhDO0lBeEJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBK0MsRUFBRSxPQUFpQixNQUFNO1FBQ3ZGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsY0FBYyxJQUFJLG1CQUFtQixDQUFDO1FBRTlGLE1BQU0sU0FBUyxHQUFrQztZQUMvQyxJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRSxHQUFHLFVBQVUsSUFBSSxtQkFBbUIsRUFBRTtTQUNqRCxDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDOzhHQTdCVSxRQUFROzRHQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBSnBCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUywgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMT0NBTEVfSUQsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX0RBVEVfRk9STUFULCBERUZBVUxUX1RJTUVfRk9STUFUIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlVHlwZSwgRk9STUFUVElOR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uL3R5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndmxEYXRlJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcbiAgcHJpdmF0ZSBkZWZhdWx0T3B0aW9ucyA9IGluamVjdChEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGZvcm1hdHRpbmdTZXR0aW5ncyA9IGluamVjdChGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pPy5nZXRGb3JtYXR0aW5nU2V0dGluZ3MoKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0oZGF0ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsIHR5cGU6IERhdGVUeXBlID0gJ2RhdGUnKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmRhdGVGb3JtYXRzLmRhdGVQaXBlRm9ybWF0IHx8IERFRkFVTFRfREFURV9GT1JNQVQ7XG5cbiAgICBjb25zdCBmb3JtYXRNYXA6IHsgW2tleSBpbiBEYXRlVHlwZV06IHN0cmluZyB9ID0ge1xuICAgICAgZGF0ZTogZGF0ZUZvcm1hdCxcbiAgICAgIHRpbWU6IERFRkFVTFRfVElNRV9GT1JNQVQsXG4gICAgICBkYXRldGltZTogYCR7ZGF0ZUZvcm1hdH0gJHtERUZBVUxUX1RJTUVfRk9STUFUfWAsXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZm9ybWF0RGF0ZShkYXRlLCBmb3JtYXRNYXBbdHlwZV0sIHRoaXMubG9jYWxlLCB0aGlzLmRlZmF1bHRPcHRpb25zPy50aW1lem9uZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxufVxuIl19","import { Pipe, inject } from '@angular/core';\nimport { formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\nimport * as i0 from \"@angular/core\";\nexport class NumberPipe {\n constructor() {\n this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n this.destroy$ = new Subject();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n transform(price) {\n return formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: NumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: NumberPipe, isStandalone: false, name: \"vlNumber\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: NumberPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'vlNumber',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3BpcGVzL251bWJlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBTXJELE1BQU0sT0FBTyxVQUFVO0lBSnZCO1FBS1UsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUNwRyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQWV4QztJQWJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBc0I7UUFDckMsT0FBTyxZQUFZLENBQ2pCLEtBQUssRUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FDdkMsQ0FBQztJQUNKLENBQUM7OEdBaEJVLFVBQVU7NEdBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFKdEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25EZXN0cm95LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRk9STUFUVElOR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4uL3R5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndmxOdW1iZXInLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZm9ybWF0dGluZ1NldHRpbmdzID0gaW5qZWN0KEZPUk1BVFRJTkdfU0VUVElOR1NfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk/LmdldEZvcm1hdHRpbmdTZXR0aW5ncygpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybShwcmljZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKFxuICAgICAgcHJpY2UsXG4gICAgICB0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncz8udGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICB0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncz8uZGVjaW1hbHNDb3VudCxcbiAgICApO1xuICB9XG59XG4iXX0=","import { Pipe, inject } from '@angular/core';\nimport { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\nimport * as i0 from \"@angular/core\";\nexport class PricePipe {\n constructor() {\n this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n this.destroy$ = new Subject();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n transform(price) {\n if (price == null || price === '') {\n return '';\n }\n return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount)}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PricePipe, isStandalone: false, name: \"vlPrice\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PricePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'vlPrice',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvcGlwZXMvcHJpY2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU1yRCxNQUFNLE9BQU8sU0FBUztJQUp0QjtRQUtVLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFDcEcsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FtQnhDO0lBakJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBc0I7UUFDckMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsSUFBSSx1QkFBdUIsR0FBRyxZQUFZLENBQ3pGLEtBQUssRUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FDdkMsRUFBRSxDQUFDO0lBQ04sQ0FBQzs4R0FwQlUsU0FBUzs0R0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQUpyQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX0NVUlJFTkNZX1NZTUJPTCwgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd2bFByaWNlJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFByaWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZm9ybWF0dGluZ1NldHRpbmdzID0gaW5qZWN0KEZPUk1BVFRJTkdfU0VUVElOR1NfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk/LmdldEZvcm1hdHRpbmdTZXR0aW5ncygpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybShwcmljZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAocHJpY2UgPT0gbnVsbCB8fCBwcmljZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmN1cnJlbmN5U3ltYm9sIHx8IERFRkFVTFRfQ1VSUkVOQ1lfU1lNQk9MfSR7Zm9ybWF0TnVtYmVyKFxuICAgICAgcHJpY2UsXG4gICAgICB0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncz8udGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICB0aGlzLmZvcm1hdHRpbmdTZXR0aW5ncz8uZGVjaW1hbHNDb3VudCxcbiAgICApfWA7XG4gIH1cbn1cbiJdfQ==","import { inject, Pipe } from '@angular/core';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\nimport * as i0 from \"@angular/core\";\nexport class ActionCodePipe {\n constructor() {\n this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n }\n transform(actionCode) {\n return this.formattingSettings?.actionCodeLabels[actionCode] ?? actionCode;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ActionCodePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ActionCodePipe, isStandalone: false, name: \"vlActionCode\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ActionCodePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'vlActionCode',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvZGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvcGlwZXMvYWN0aW9uLWNvZGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU1yRCxNQUFNLE9BQU8sY0FBYztJQUozQjtRQUtVLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7S0FLN0c7SUFIUSxTQUFTLENBQUMsVUFBa0I7UUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO0lBQzdFLENBQUM7OEdBTFUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZPUk1BVFRJTkdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi90eXBlcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZsQWN0aW9uQ29kZScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db2RlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIGZvcm1hdHRpbmdTZXR0aW5ncyA9IGluamVjdChGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pPy5nZXRGb3JtYXR0aW5nU2V0dGluZ3MoKTtcblxuICBwdWJsaWMgdHJhbnNmb3JtKGFjdGlvbkNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0dGluZ1NldHRpbmdzPy5hY3Rpb25Db2RlTGFiZWxzW2FjdGlvbkNvZGVdID8/IGFjdGlvbkNvZGU7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { DatePipe } from './date.pipe';\nimport { NumberPipe } from './number.pipe';\nimport { PricePipe } from './price.pipe';\nimport { ActionCodePipe } from './action-code.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SdkPipesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkPipesModule, declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe], exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkPipesModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SdkPipesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9waXBlcy9waXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTXBELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFIVixVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLGFBQ3BELFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWM7K0dBRTlDLGNBQWM7OzJGQUFkLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUM7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4vbnVtYmVyLnBpcGUnO1xuaW1wb3J0IHsgUHJpY2VQaXBlIH0gZnJvbSAnLi9wcmljZS5waXBlJztcbmltcG9ydCB7IEFjdGlvbkNvZGVQaXBlIH0gZnJvbSAnLi9hY3Rpb24tY29kZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTnVtYmVyUGlwZSwgUHJpY2VQaXBlLCBEYXRlUGlwZSwgQWN0aW9uQ29kZVBpcGVdLFxuICBleHBvcnRzOiBbTnVtYmVyUGlwZSwgUHJpY2VQaXBlLCBEYXRlUGlwZSwgQWN0aW9uQ29kZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTZGtQaXBlc01vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsb2NlYXBwcy1zZGstY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdmVsb2NlYXBwcy1zZGstY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.RuntimeSettingsService","i2","filter","map","tap","i1.FlowInfoService","i3.ConfigurationRuntimeService","i1.SalesTransactionService","i4","i5.GuidedSellingService","catchError","i2.SalesTransactionService","i3.FlowInfoService","i2.ConfigurationService","finalize","i1.FlowConfigurationService","i2.FlowInfoService","i5.SalesTransactionService","i2.FlowStateService","i3.ConfigurationService","i4.SalesTransactionService","i5.FlowConfigurationService","i6","i1.ConfigurationRuntimeService","i3.FlowStateService","i4.FlowConfigurationService","i5","i3.SalesTransactionService","i7"],"mappings":"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"}