@decaf-ts/ui-decorators 0.20.4 → 0.20.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/dist/ui-decorators.cjs +1059 -2
  2. package/dist/ui-decorators.js +1090 -2
  3. package/lib/cjs/dashboard/constants.cjs +11 -0
  4. package/lib/cjs/dashboard/decorators.cjs +61 -0
  5. package/lib/cjs/dashboard/index.cjs +23 -0
  6. package/lib/cjs/dashboard/reader.cjs +67 -0
  7. package/lib/cjs/dashboard/registry.cjs +45 -0
  8. package/lib/cjs/dashboard/types.cjs +4 -0
  9. package/lib/cjs/graph/GraphExecutionStateMapper.cjs +97 -0
  10. package/lib/cjs/graph/GraphResolution.cjs +17 -0
  11. package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs +2 -2
  12. package/lib/cjs/graph/catalog/GraphCredentialReference.cjs +2 -2
  13. package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs +2 -2
  14. package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs +2 -2
  15. package/lib/cjs/graph/catalog/GraphIconReference.cjs +2 -2
  16. package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs +2 -2
  17. package/lib/cjs/graph/catalog/GraphNodeCapability.cjs +2 -2
  18. package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs +2 -2
  19. package/lib/cjs/graph/catalog/GraphNodeManifest.cjs +2 -2
  20. package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs +2 -2
  21. package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs +2 -2
  22. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs +2 -2
  23. package/lib/cjs/graph/catalog/GraphParameterBase.cjs +2 -2
  24. package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs +2 -2
  25. package/lib/cjs/graph/catalog/GraphParameterOption.cjs +2 -2
  26. package/lib/cjs/graph/catalog/GraphParameterValidation.cjs +2 -2
  27. package/lib/cjs/graph/catalog/GraphPortManifest.cjs +2 -2
  28. package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs +2 -2
  29. package/lib/cjs/graph/catalog/GraphValueSchema.cjs +2 -2
  30. package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs +2 -2
  31. package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs +2 -2
  32. package/lib/cjs/graph/catalog/index.cjs +2 -2
  33. package/lib/cjs/graph/constants.cjs +159 -3
  34. package/lib/cjs/graph/decorators.cjs +2 -2
  35. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs +2 -2
  36. package/lib/cjs/graph/document/GraphEdgeInstance.cjs +2 -2
  37. package/lib/cjs/graph/document/GraphEndpoint.cjs +2 -2
  38. package/lib/cjs/graph/document/GraphJsonValue.cjs +2 -2
  39. package/lib/cjs/graph/document/GraphLoopConfiguration.cjs +2 -2
  40. package/lib/cjs/graph/document/GraphNodeBinding.cjs +2 -2
  41. package/lib/cjs/graph/document/GraphNodeInstance.cjs +2 -2
  42. package/lib/cjs/graph/document/GraphWorkflowDocument.cjs +2 -2
  43. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs +2 -2
  44. package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs +2 -2
  45. package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs +2 -2
  46. package/lib/cjs/graph/document/GraphWorkflowUiState.cjs +2 -2
  47. package/lib/cjs/graph/document/index.cjs +2 -2
  48. package/lib/cjs/graph/index.cjs +5 -2
  49. package/lib/cjs/graph/nodes/agents/agent.cjs +110 -0
  50. package/lib/cjs/graph/nodes/base.cjs +36 -0
  51. package/lib/cjs/graph/nodes/boundary/input-value.cjs +57 -0
  52. package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
  53. package/lib/cjs/graph/nodes/flow-control/break.cjs +63 -0
  54. package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs +67 -0
  55. package/lib/cjs/graph/nodes/flow-control/human-approval.cjs +69 -0
  56. package/lib/cjs/graph/nodes/flow-control/if.cjs +71 -0
  57. package/lib/cjs/graph/nodes/flow-control/parallel.cjs +61 -0
  58. package/lib/cjs/graph/nodes/flow-control/switch.cjs +121 -0
  59. package/lib/cjs/graph/nodes/index.cjs +123 -0
  60. package/lib/cjs/graph/nodes/loops/foreach.cjs +86 -0
  61. package/lib/cjs/graph/nodes/loops/until.cjs +74 -0
  62. package/lib/cjs/graph/nodes/loops/while.cjs +74 -0
  63. package/lib/cjs/graph/nodes/manifests.cjs +338 -0
  64. package/lib/cjs/graph/nodes/triggers/chat.cjs +70 -0
  65. package/lib/cjs/graph/nodes/triggers/event.cjs +58 -0
  66. package/lib/cjs/graph/nodes/triggers/form.cjs +59 -0
  67. package/lib/cjs/graph/nodes/triggers/manual.cjs +60 -0
  68. package/lib/cjs/graph/nodes/triggers/schedule.cjs +60 -0
  69. package/lib/cjs/graph/nodes/triggers/webhook.cjs +62 -0
  70. package/lib/cjs/graph/nodes/utility/code.cjs +99 -0
  71. package/lib/cjs/graph/nodes/utility/delay.cjs +61 -0
  72. package/lib/cjs/graph/nodes/utility/log.cjs +62 -0
  73. package/lib/cjs/graph/nodes/utility/map.cjs +61 -0
  74. package/lib/cjs/graph/nodes/utility/merge.cjs +62 -0
  75. package/lib/cjs/graph/nodes/utility/return.cjs +61 -0
  76. package/lib/cjs/graph/nodes/utility/utility-log.cjs +66 -0
  77. package/lib/cjs/graph/overrides/Metadata.cjs +2 -2
  78. package/lib/cjs/graph/overrides/Rendering.cjs +2 -2
  79. package/lib/cjs/graph/overrides/index.cjs +2 -2
  80. package/lib/cjs/graph/overrides/overrides.cjs +2 -2
  81. package/lib/cjs/graph/reader.cjs +2 -2
  82. package/lib/cjs/graph/registry.cjs +2 -2
  83. package/lib/cjs/graph/snapshot.cjs +2 -2
  84. package/lib/cjs/graph/types.cjs +2 -2
  85. package/lib/cjs/index.cjs +6 -5
  86. package/lib/cjs/model/Renderable.cjs +2 -2
  87. package/lib/cjs/model/decorators.cjs +2 -2
  88. package/lib/cjs/model/index.cjs +2 -2
  89. package/lib/cjs/model/model.cjs +2 -2
  90. package/lib/cjs/model/overrides.cjs +2 -2
  91. package/lib/cjs/overrides/ModelBuilderExtensions.cjs +2 -2
  92. package/lib/cjs/overrides/index.cjs +2 -2
  93. package/lib/cjs/ui/DecafComponent.cjs +2 -2
  94. package/lib/cjs/ui/DecafEventHandler.cjs +2 -2
  95. package/lib/cjs/ui/DecafTranslateService.cjs +2 -2
  96. package/lib/cjs/ui/Rendering.cjs +2 -2
  97. package/lib/cjs/ui/UIValidator.cjs +2 -2
  98. package/lib/cjs/ui/constants.cjs +2 -2
  99. package/lib/cjs/ui/decorators.cjs +2 -2
  100. package/lib/cjs/ui/errors.cjs +2 -2
  101. package/lib/cjs/ui/index.cjs +2 -2
  102. package/lib/cjs/ui/interfaces/IDecafModal.cjs +2 -2
  103. package/lib/cjs/ui/interfaces/IDecafRouter.cjs +2 -2
  104. package/lib/cjs/ui/interfaces/IDecafSpinner.cjs +2 -2
  105. package/lib/cjs/ui/interfaces/IDecafToast.cjs +2 -2
  106. package/lib/cjs/ui/interfaces/index.cjs +2 -2
  107. package/lib/cjs/ui/overrides.cjs +2 -2
  108. package/lib/cjs/ui/types.cjs +2 -2
  109. package/lib/cjs/ui/utils.cjs +2 -2
  110. package/lib/cjs/ui/validator.cjs +2 -2
  111. package/lib/cjs/user-requests/UserRequestHandler.cjs +2 -2
  112. package/lib/cjs/user-requests/constants.cjs +2 -2
  113. package/lib/cjs/user-requests/decorators.cjs +2 -2
  114. package/lib/cjs/user-requests/errors.cjs +2 -2
  115. package/lib/cjs/user-requests/index.cjs +2 -2
  116. package/lib/cjs/user-requests/types.cjs +2 -2
  117. package/lib/esm/dashboard/constants.js +24 -0
  118. package/lib/esm/dashboard/decorators.js +57 -0
  119. package/lib/esm/dashboard/index.js +6 -0
  120. package/lib/esm/dashboard/reader.js +62 -0
  121. package/lib/esm/dashboard/registry.js +39 -0
  122. package/lib/esm/dashboard/types.js +9 -0
  123. package/lib/esm/graph/GraphExecutionStateMapper.js +91 -0
  124. package/lib/esm/graph/GraphResolution.js +13 -0
  125. package/lib/esm/graph/catalog/GraphConnectionPolicy.js +1 -1
  126. package/lib/esm/graph/catalog/GraphCredentialReference.js +1 -1
  127. package/lib/esm/graph/catalog/GraphCredentialRequirement.js +1 -1
  128. package/lib/esm/graph/catalog/GraphDynamicPortRule.js +1 -1
  129. package/lib/esm/graph/catalog/GraphIconReference.js +1 -1
  130. package/lib/esm/graph/catalog/GraphManifestCompiler.js +1 -1
  131. package/lib/esm/graph/catalog/GraphNodeCapability.js +1 -1
  132. package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js +1 -1
  133. package/lib/esm/graph/catalog/GraphNodeManifest.js +1 -1
  134. package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js +1 -1
  135. package/lib/esm/graph/catalog/GraphNodeMethodManifest.js +1 -1
  136. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js +1 -1
  137. package/lib/esm/graph/catalog/GraphParameterBase.js +1 -1
  138. package/lib/esm/graph/catalog/GraphParameterDefinition.js +1 -1
  139. package/lib/esm/graph/catalog/GraphParameterOption.js +1 -1
  140. package/lib/esm/graph/catalog/GraphParameterValidation.js +1 -1
  141. package/lib/esm/graph/catalog/GraphPortManifest.js +1 -1
  142. package/lib/esm/graph/catalog/GraphResourceLocatorMode.js +1 -1
  143. package/lib/esm/graph/catalog/GraphValueSchema.js +1 -1
  144. package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js +1 -1
  145. package/lib/esm/graph/catalog/GraphVisibilityExpression.js +1 -1
  146. package/lib/esm/graph/catalog/index.js +1 -1
  147. package/lib/esm/graph/constants.js +180 -1
  148. package/lib/esm/graph/decorators.js +1 -1
  149. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js +1 -1
  150. package/lib/esm/graph/document/GraphEdgeInstance.js +1 -1
  151. package/lib/esm/graph/document/GraphEndpoint.js +1 -1
  152. package/lib/esm/graph/document/GraphJsonValue.js +1 -1
  153. package/lib/esm/graph/document/GraphLoopConfiguration.js +1 -1
  154. package/lib/esm/graph/document/GraphNodeBinding.js +1 -1
  155. package/lib/esm/graph/document/GraphNodeInstance.js +1 -1
  156. package/lib/esm/graph/document/GraphWorkflowDocument.js +1 -1
  157. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js +1 -1
  158. package/lib/esm/graph/document/GraphWorkflowDocumentReader.js +1 -1
  159. package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js +1 -1
  160. package/lib/esm/graph/document/GraphWorkflowUiState.js +1 -1
  161. package/lib/esm/graph/document/index.js +1 -1
  162. package/lib/esm/graph/index.js +4 -1
  163. package/lib/esm/graph/nodes/agents/agent.js +101 -0
  164. package/lib/esm/graph/nodes/base.js +31 -0
  165. package/lib/esm/graph/nodes/boundary/input-value.js +48 -0
  166. package/lib/esm/graph/nodes/category-styles.js +34 -0
  167. package/lib/esm/graph/nodes/flow-control/break.js +54 -0
  168. package/lib/esm/graph/nodes/flow-control/error-boundary.js +58 -0
  169. package/lib/esm/graph/nodes/flow-control/human-approval.js +60 -0
  170. package/lib/esm/graph/nodes/flow-control/if.js +62 -0
  171. package/lib/esm/graph/nodes/flow-control/parallel.js +52 -0
  172. package/lib/esm/graph/nodes/flow-control/switch.js +112 -0
  173. package/lib/esm/graph/nodes/index.js +105 -0
  174. package/lib/esm/graph/nodes/loops/foreach.js +77 -0
  175. package/lib/esm/graph/nodes/loops/until.js +65 -0
  176. package/lib/esm/graph/nodes/loops/while.js +65 -0
  177. package/lib/esm/graph/nodes/manifests.js +334 -0
  178. package/lib/esm/graph/nodes/triggers/chat.js +61 -0
  179. package/lib/esm/graph/nodes/triggers/event.js +49 -0
  180. package/lib/esm/graph/nodes/triggers/form.js +50 -0
  181. package/lib/esm/graph/nodes/triggers/manual.js +51 -0
  182. package/lib/esm/graph/nodes/triggers/schedule.js +51 -0
  183. package/lib/esm/graph/nodes/triggers/webhook.js +53 -0
  184. package/lib/esm/graph/nodes/utility/code.js +90 -0
  185. package/lib/esm/graph/nodes/utility/delay.js +52 -0
  186. package/lib/esm/graph/nodes/utility/log.js +53 -0
  187. package/lib/esm/graph/nodes/utility/map.js +52 -0
  188. package/lib/esm/graph/nodes/utility/merge.js +53 -0
  189. package/lib/esm/graph/nodes/utility/return.js +52 -0
  190. package/lib/esm/graph/nodes/utility/utility-log.js +57 -0
  191. package/lib/esm/graph/overrides/Metadata.js +1 -1
  192. package/lib/esm/graph/overrides/Rendering.js +1 -1
  193. package/lib/esm/graph/overrides/index.js +1 -1
  194. package/lib/esm/graph/overrides/overrides.js +1 -1
  195. package/lib/esm/graph/reader.js +1 -1
  196. package/lib/esm/graph/registry.js +1 -1
  197. package/lib/esm/graph/snapshot.js +1 -1
  198. package/lib/esm/graph/types.js +1 -1
  199. package/lib/esm/index.js +5 -4
  200. package/lib/esm/model/Renderable.js +1 -1
  201. package/lib/esm/model/decorators.js +1 -1
  202. package/lib/esm/model/index.js +1 -1
  203. package/lib/esm/model/model.js +1 -1
  204. package/lib/esm/model/overrides.js +1 -1
  205. package/lib/esm/overrides/ModelBuilderExtensions.js +1 -1
  206. package/lib/esm/overrides/index.js +1 -1
  207. package/lib/esm/ui/DecafComponent.js +1 -1
  208. package/lib/esm/ui/DecafEventHandler.js +1 -1
  209. package/lib/esm/ui/DecafTranslateService.js +1 -1
  210. package/lib/esm/ui/Rendering.js +1 -1
  211. package/lib/esm/ui/UIValidator.js +1 -1
  212. package/lib/esm/ui/constants.js +1 -1
  213. package/lib/esm/ui/decorators.js +1 -1
  214. package/lib/esm/ui/errors.js +1 -1
  215. package/lib/esm/ui/index.js +1 -1
  216. package/lib/esm/ui/interfaces/IDecafModal.js +1 -1
  217. package/lib/esm/ui/interfaces/IDecafRouter.js +1 -1
  218. package/lib/esm/ui/interfaces/IDecafSpinner.js +1 -1
  219. package/lib/esm/ui/interfaces/IDecafToast.js +1 -1
  220. package/lib/esm/ui/interfaces/index.js +1 -1
  221. package/lib/esm/ui/overrides.js +1 -1
  222. package/lib/esm/ui/types.js +1 -1
  223. package/lib/esm/ui/utils.js +1 -1
  224. package/lib/esm/ui/validator.js +1 -1
  225. package/lib/esm/user-requests/UserRequestHandler.js +1 -1
  226. package/lib/esm/user-requests/constants.js +1 -1
  227. package/lib/esm/user-requests/decorators.js +1 -1
  228. package/lib/esm/user-requests/errors.js +1 -1
  229. package/lib/esm/user-requests/index.js +1 -1
  230. package/lib/esm/user-requests/types.js +1 -1
  231. package/lib/types/dashboard/constants.d.cts +22 -0
  232. package/lib/types/dashboard/constants.d.mts +22 -0
  233. package/lib/types/dashboard/decorators.d.cts +34 -0
  234. package/lib/types/dashboard/decorators.d.mts +34 -0
  235. package/lib/types/dashboard/index.d.cts +5 -0
  236. package/lib/types/dashboard/index.d.mts +5 -0
  237. package/lib/types/dashboard/reader.d.cts +30 -0
  238. package/lib/types/dashboard/reader.d.mts +30 -0
  239. package/lib/types/dashboard/registry.d.cts +29 -0
  240. package/lib/types/dashboard/registry.d.mts +29 -0
  241. package/lib/types/dashboard/types.d.cts +67 -0
  242. package/lib/types/dashboard/types.d.mts +67 -0
  243. package/lib/types/graph/GraphExecutionStateMapper.d.cts +66 -0
  244. package/lib/types/graph/GraphExecutionStateMapper.d.mts +66 -0
  245. package/lib/types/graph/GraphResolution.d.cts +53 -0
  246. package/lib/types/graph/GraphResolution.d.mts +53 -0
  247. package/lib/types/graph/constants.d.cts +165 -0
  248. package/lib/types/graph/constants.d.mts +165 -0
  249. package/lib/types/graph/index.d.cts +3 -0
  250. package/lib/types/graph/index.d.mts +3 -0
  251. package/lib/types/graph/nodes/agents/agent.d.cts +44 -0
  252. package/lib/types/graph/nodes/agents/agent.d.mts +44 -0
  253. package/lib/types/graph/nodes/base.d.cts +28 -0
  254. package/lib/types/graph/nodes/base.d.mts +28 -0
  255. package/lib/types/graph/nodes/boundary/input-value.d.cts +13 -0
  256. package/lib/types/graph/nodes/boundary/input-value.d.mts +13 -0
  257. package/lib/types/graph/nodes/category-styles.d.cts +8 -0
  258. package/lib/types/graph/nodes/category-styles.d.mts +8 -0
  259. package/lib/types/graph/nodes/flow-control/break.d.cts +15 -0
  260. package/lib/types/graph/nodes/flow-control/break.d.mts +15 -0
  261. package/lib/types/graph/nodes/flow-control/error-boundary.d.cts +12 -0
  262. package/lib/types/graph/nodes/flow-control/error-boundary.d.mts +12 -0
  263. package/lib/types/graph/nodes/flow-control/human-approval.d.cts +13 -0
  264. package/lib/types/graph/nodes/flow-control/human-approval.d.mts +13 -0
  265. package/lib/types/graph/nodes/flow-control/if.d.cts +16 -0
  266. package/lib/types/graph/nodes/flow-control/if.d.mts +16 -0
  267. package/lib/types/graph/nodes/flow-control/parallel.d.cts +11 -0
  268. package/lib/types/graph/nodes/flow-control/parallel.d.mts +11 -0
  269. package/lib/types/graph/nodes/flow-control/switch.d.cts +21 -0
  270. package/lib/types/graph/nodes/flow-control/switch.d.mts +21 -0
  271. package/lib/types/graph/nodes/index.d.cts +79 -0
  272. package/lib/types/graph/nodes/index.d.mts +79 -0
  273. package/lib/types/graph/nodes/loops/foreach.d.cts +19 -0
  274. package/lib/types/graph/nodes/loops/foreach.d.mts +19 -0
  275. package/lib/types/graph/nodes/loops/until.d.cts +16 -0
  276. package/lib/types/graph/nodes/loops/until.d.mts +16 -0
  277. package/lib/types/graph/nodes/loops/while.d.cts +16 -0
  278. package/lib/types/graph/nodes/loops/while.d.mts +16 -0
  279. package/lib/types/graph/nodes/manifests.d.cts +62 -0
  280. package/lib/types/graph/nodes/manifests.d.mts +62 -0
  281. package/lib/types/graph/nodes/triggers/chat.d.cts +13 -0
  282. package/lib/types/graph/nodes/triggers/chat.d.mts +13 -0
  283. package/lib/types/graph/nodes/triggers/event.d.cts +10 -0
  284. package/lib/types/graph/nodes/triggers/event.d.mts +10 -0
  285. package/lib/types/graph/nodes/triggers/form.d.cts +11 -0
  286. package/lib/types/graph/nodes/triggers/form.d.mts +11 -0
  287. package/lib/types/graph/nodes/triggers/manual.d.cts +12 -0
  288. package/lib/types/graph/nodes/triggers/manual.d.mts +12 -0
  289. package/lib/types/graph/nodes/triggers/schedule.d.cts +11 -0
  290. package/lib/types/graph/nodes/triggers/schedule.d.mts +11 -0
  291. package/lib/types/graph/nodes/triggers/webhook.d.cts +11 -0
  292. package/lib/types/graph/nodes/triggers/webhook.d.mts +11 -0
  293. package/lib/types/graph/nodes/utility/code.d.cts +31 -0
  294. package/lib/types/graph/nodes/utility/code.d.mts +31 -0
  295. package/lib/types/graph/nodes/utility/delay.d.cts +11 -0
  296. package/lib/types/graph/nodes/utility/delay.d.mts +11 -0
  297. package/lib/types/graph/nodes/utility/log.d.cts +13 -0
  298. package/lib/types/graph/nodes/utility/log.d.mts +13 -0
  299. package/lib/types/graph/nodes/utility/map.d.cts +11 -0
  300. package/lib/types/graph/nodes/utility/map.d.mts +11 -0
  301. package/lib/types/graph/nodes/utility/merge.d.cts +12 -0
  302. package/lib/types/graph/nodes/utility/merge.d.mts +12 -0
  303. package/lib/types/graph/nodes/utility/return.d.cts +11 -0
  304. package/lib/types/graph/nodes/utility/return.d.mts +11 -0
  305. package/lib/types/graph/nodes/utility/utility-log.d.cts +15 -0
  306. package/lib/types/graph/nodes/utility/utility-log.d.mts +15 -0
  307. package/lib/types/graph/types.d.cts +286 -0
  308. package/lib/types/graph/types.d.mts +286 -0
  309. package/lib/types/index.d.cts +4 -3
  310. package/lib/types/index.d.mts +4 -3
  311. package/package.json +1 -1
  312. package/dist/ui-decorators.cjs.map +0 -1
  313. package/dist/ui-decorators.js.map +0 -1
  314. package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs.map +0 -1
  315. package/lib/cjs/graph/catalog/GraphCredentialReference.cjs.map +0 -1
  316. package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs.map +0 -1
  317. package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs.map +0 -1
  318. package/lib/cjs/graph/catalog/GraphIconReference.cjs.map +0 -1
  319. package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs.map +0 -1
  320. package/lib/cjs/graph/catalog/GraphNodeCapability.cjs.map +0 -1
  321. package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs.map +0 -1
  322. package/lib/cjs/graph/catalog/GraphNodeManifest.cjs.map +0 -1
  323. package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs.map +0 -1
  324. package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs.map +0 -1
  325. package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs.map +0 -1
  326. package/lib/cjs/graph/catalog/GraphParameterBase.cjs.map +0 -1
  327. package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs.map +0 -1
  328. package/lib/cjs/graph/catalog/GraphParameterOption.cjs.map +0 -1
  329. package/lib/cjs/graph/catalog/GraphParameterValidation.cjs.map +0 -1
  330. package/lib/cjs/graph/catalog/GraphPortManifest.cjs.map +0 -1
  331. package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs.map +0 -1
  332. package/lib/cjs/graph/catalog/GraphValueSchema.cjs.map +0 -1
  333. package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs.map +0 -1
  334. package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs.map +0 -1
  335. package/lib/cjs/graph/catalog/index.cjs.map +0 -1
  336. package/lib/cjs/graph/constants.cjs.map +0 -1
  337. package/lib/cjs/graph/decorators.cjs.map +0 -1
  338. package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs.map +0 -1
  339. package/lib/cjs/graph/document/GraphEdgeInstance.cjs.map +0 -1
  340. package/lib/cjs/graph/document/GraphEndpoint.cjs.map +0 -1
  341. package/lib/cjs/graph/document/GraphJsonValue.cjs.map +0 -1
  342. package/lib/cjs/graph/document/GraphLoopConfiguration.cjs.map +0 -1
  343. package/lib/cjs/graph/document/GraphNodeBinding.cjs.map +0 -1
  344. package/lib/cjs/graph/document/GraphNodeInstance.cjs.map +0 -1
  345. package/lib/cjs/graph/document/GraphWorkflowDocument.cjs.map +0 -1
  346. package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs.map +0 -1
  347. package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs.map +0 -1
  348. package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs.map +0 -1
  349. package/lib/cjs/graph/document/GraphWorkflowUiState.cjs.map +0 -1
  350. package/lib/cjs/graph/document/index.cjs.map +0 -1
  351. package/lib/cjs/graph/index.cjs.map +0 -1
  352. package/lib/cjs/graph/overrides/Metadata.cjs.map +0 -1
  353. package/lib/cjs/graph/overrides/Rendering.cjs.map +0 -1
  354. package/lib/cjs/graph/overrides/index.cjs.map +0 -1
  355. package/lib/cjs/graph/overrides/overrides.cjs.map +0 -1
  356. package/lib/cjs/graph/reader.cjs.map +0 -1
  357. package/lib/cjs/graph/registry.cjs.map +0 -1
  358. package/lib/cjs/graph/snapshot.cjs.map +0 -1
  359. package/lib/cjs/graph/types.cjs.map +0 -1
  360. package/lib/cjs/index.cjs.map +0 -1
  361. package/lib/cjs/model/Renderable.cjs.map +0 -1
  362. package/lib/cjs/model/decorators.cjs.map +0 -1
  363. package/lib/cjs/model/index.cjs.map +0 -1
  364. package/lib/cjs/model/model.cjs.map +0 -1
  365. package/lib/cjs/model/overrides.cjs.map +0 -1
  366. package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +0 -1
  367. package/lib/cjs/overrides/index.cjs.map +0 -1
  368. package/lib/cjs/ui/DecafComponent.cjs.map +0 -1
  369. package/lib/cjs/ui/DecafEventHandler.cjs.map +0 -1
  370. package/lib/cjs/ui/DecafTranslateService.cjs.map +0 -1
  371. package/lib/cjs/ui/Rendering.cjs.map +0 -1
  372. package/lib/cjs/ui/UIValidator.cjs.map +0 -1
  373. package/lib/cjs/ui/constants.cjs.map +0 -1
  374. package/lib/cjs/ui/decorators.cjs.map +0 -1
  375. package/lib/cjs/ui/errors.cjs.map +0 -1
  376. package/lib/cjs/ui/index.cjs.map +0 -1
  377. package/lib/cjs/ui/interfaces/IDecafModal.cjs.map +0 -1
  378. package/lib/cjs/ui/interfaces/IDecafRouter.cjs.map +0 -1
  379. package/lib/cjs/ui/interfaces/IDecafSpinner.cjs.map +0 -1
  380. package/lib/cjs/ui/interfaces/IDecafToast.cjs.map +0 -1
  381. package/lib/cjs/ui/interfaces/index.cjs.map +0 -1
  382. package/lib/cjs/ui/overrides.cjs.map +0 -1
  383. package/lib/cjs/ui/types.cjs.map +0 -1
  384. package/lib/cjs/ui/utils.cjs.map +0 -1
  385. package/lib/cjs/ui/validator.cjs.map +0 -1
  386. package/lib/cjs/user-requests/UserRequestHandler.cjs.map +0 -1
  387. package/lib/cjs/user-requests/constants.cjs.map +0 -1
  388. package/lib/cjs/user-requests/decorators.cjs.map +0 -1
  389. package/lib/cjs/user-requests/errors.cjs.map +0 -1
  390. package/lib/cjs/user-requests/index.cjs.map +0 -1
  391. package/lib/cjs/user-requests/types.cjs.map +0 -1
  392. package/lib/esm/graph/catalog/GraphConnectionPolicy.js.map +0 -1
  393. package/lib/esm/graph/catalog/GraphCredentialReference.js.map +0 -1
  394. package/lib/esm/graph/catalog/GraphCredentialRequirement.js.map +0 -1
  395. package/lib/esm/graph/catalog/GraphDynamicPortRule.js.map +0 -1
  396. package/lib/esm/graph/catalog/GraphIconReference.js.map +0 -1
  397. package/lib/esm/graph/catalog/GraphManifestCompiler.js.map +0 -1
  398. package/lib/esm/graph/catalog/GraphNodeCapability.js.map +0 -1
  399. package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js.map +0 -1
  400. package/lib/esm/graph/catalog/GraphNodeManifest.js.map +0 -1
  401. package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js.map +0 -1
  402. package/lib/esm/graph/catalog/GraphNodeMethodManifest.js.map +0 -1
  403. package/lib/esm/graph/catalog/GraphNodePolicyManifest.js.map +0 -1
  404. package/lib/esm/graph/catalog/GraphParameterBase.js.map +0 -1
  405. package/lib/esm/graph/catalog/GraphParameterDefinition.js.map +0 -1
  406. package/lib/esm/graph/catalog/GraphParameterOption.js.map +0 -1
  407. package/lib/esm/graph/catalog/GraphParameterValidation.js.map +0 -1
  408. package/lib/esm/graph/catalog/GraphPortManifest.js.map +0 -1
  409. package/lib/esm/graph/catalog/GraphResourceLocatorMode.js.map +0 -1
  410. package/lib/esm/graph/catalog/GraphValueSchema.js.map +0 -1
  411. package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js.map +0 -1
  412. package/lib/esm/graph/catalog/GraphVisibilityExpression.js.map +0 -1
  413. package/lib/esm/graph/catalog/index.js.map +0 -1
  414. package/lib/esm/graph/constants.js.map +0 -1
  415. package/lib/esm/graph/decorators.js.map +0 -1
  416. package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js.map +0 -1
  417. package/lib/esm/graph/document/GraphEdgeInstance.js.map +0 -1
  418. package/lib/esm/graph/document/GraphEndpoint.js.map +0 -1
  419. package/lib/esm/graph/document/GraphJsonValue.js.map +0 -1
  420. package/lib/esm/graph/document/GraphLoopConfiguration.js.map +0 -1
  421. package/lib/esm/graph/document/GraphNodeBinding.js.map +0 -1
  422. package/lib/esm/graph/document/GraphNodeInstance.js.map +0 -1
  423. package/lib/esm/graph/document/GraphWorkflowDocument.js.map +0 -1
  424. package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js.map +0 -1
  425. package/lib/esm/graph/document/GraphWorkflowDocumentReader.js.map +0 -1
  426. package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js.map +0 -1
  427. package/lib/esm/graph/document/GraphWorkflowUiState.js.map +0 -1
  428. package/lib/esm/graph/document/index.js.map +0 -1
  429. package/lib/esm/graph/index.js.map +0 -1
  430. package/lib/esm/graph/overrides/Metadata.js.map +0 -1
  431. package/lib/esm/graph/overrides/Rendering.js.map +0 -1
  432. package/lib/esm/graph/overrides/index.js.map +0 -1
  433. package/lib/esm/graph/overrides/overrides.js.map +0 -1
  434. package/lib/esm/graph/reader.js.map +0 -1
  435. package/lib/esm/graph/registry.js.map +0 -1
  436. package/lib/esm/graph/snapshot.js.map +0 -1
  437. package/lib/esm/graph/types.js.map +0 -1
  438. package/lib/esm/index.js.map +0 -1
  439. package/lib/esm/model/Renderable.js.map +0 -1
  440. package/lib/esm/model/decorators.js.map +0 -1
  441. package/lib/esm/model/index.js.map +0 -1
  442. package/lib/esm/model/model.js.map +0 -1
  443. package/lib/esm/model/overrides.js.map +0 -1
  444. package/lib/esm/overrides/ModelBuilderExtensions.js.map +0 -1
  445. package/lib/esm/overrides/index.js.map +0 -1
  446. package/lib/esm/ui/DecafComponent.js.map +0 -1
  447. package/lib/esm/ui/DecafEventHandler.js.map +0 -1
  448. package/lib/esm/ui/DecafTranslateService.js.map +0 -1
  449. package/lib/esm/ui/Rendering.js.map +0 -1
  450. package/lib/esm/ui/UIValidator.js.map +0 -1
  451. package/lib/esm/ui/constants.js.map +0 -1
  452. package/lib/esm/ui/decorators.js.map +0 -1
  453. package/lib/esm/ui/errors.js.map +0 -1
  454. package/lib/esm/ui/index.js.map +0 -1
  455. package/lib/esm/ui/interfaces/IDecafModal.js.map +0 -1
  456. package/lib/esm/ui/interfaces/IDecafRouter.js.map +0 -1
  457. package/lib/esm/ui/interfaces/IDecafSpinner.js.map +0 -1
  458. package/lib/esm/ui/interfaces/IDecafToast.js.map +0 -1
  459. package/lib/esm/ui/interfaces/index.js.map +0 -1
  460. package/lib/esm/ui/overrides.js.map +0 -1
  461. package/lib/esm/ui/types.js.map +0 -1
  462. package/lib/esm/ui/utils.js.map +0 -1
  463. package/lib/esm/ui/validator.js.map +0 -1
  464. package/lib/esm/user-requests/UserRequestHandler.js.map +0 -1
  465. package/lib/esm/user-requests/constants.js.map +0 -1
  466. package/lib/esm/user-requests/decorators.js.map +0 -1
  467. package/lib/esm/user-requests/errors.js.map +0 -1
  468. package/lib/esm/user-requests/index.js.map +0 -1
  469. package/lib/esm/user-requests/types.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module ui-decorators/graph/nodes/loops/foreach
12
+ * @summary Foreach loop node declaration.
13
+ * @description Shared declaration for the `core.loop.foreach` system node
14
+ * kind (decorator id `graph-foreach-loop-node`), ported from the for-angular
15
+ * demo app so the loop kinds become shared canvas nodes. Its executor is
16
+ * built into the integrations engine (`ForeachGraphNodeExecutor`). The
17
+ * loop-body workflow is demo/app-side content and is not part of the shared
18
+ * declaration — the shared class carries the port/metadata shape only.
19
+ */
20
+ import { Model, model, required } from "@decaf-ts/decorator-validation";
21
+ import { uielement } from "./../../../ui/decorators.js";
22
+ import { connection, input, node, output } from "./../../decorators.js";
23
+ // Ensure category styles are registered (idempotent).
24
+ import "./../category-styles.js";
25
+ let GraphForeachLoopNode = class GraphForeachLoopNode extends Model {
26
+ };
27
+ __decorate([
28
+ required(),
29
+ uielement('textarea', { label: 'Items', placeholder: 'Array to iterate over' }),
30
+ input({ handle: 'items' }),
31
+ __metadata("design:type", Array)
32
+ ], GraphForeachLoopNode.prototype, "items", void 0);
33
+ __decorate([
34
+ required(),
35
+ uielement('input', { label: 'Slice size', placeholder: 'Items per iteration (default 1)' }),
36
+ input({ handle: 'slice' }),
37
+ __metadata("design:type", Number)
38
+ ], GraphForeachLoopNode.prototype, "slice", void 0);
39
+ __decorate([
40
+ required(),
41
+ output({ handle: 'item' }),
42
+ __metadata("design:type", Object)
43
+ ], GraphForeachLoopNode.prototype, "item", void 0);
44
+ __decorate([
45
+ required(),
46
+ connection({ handle: 'loop', connectionRules: { allowSelf: true, maxConnections: 1 } }),
47
+ __metadata("design:type", Object)
48
+ ], GraphForeachLoopNode.prototype, "loop", void 0);
49
+ __decorate([
50
+ required(),
51
+ output({ handle: 'completed' }),
52
+ __metadata("design:type", Array)
53
+ ], GraphForeachLoopNode.prototype, "completed", void 0);
54
+ GraphForeachLoopNode = __decorate([
55
+ node('graph-foreach-loop-node', {
56
+ kind: 'core.loop.foreach',
57
+ category: 'Loop',
58
+ color: '#eab308',
59
+ icon: 'ti-repeat',
60
+ width: 120,
61
+ height: 140,
62
+ labels: ['loop', 'iteration', 'foreach'],
63
+ metadata: {
64
+ title: 'Foreach loop',
65
+ description: 'Iterates over an array input and executes the body once per item (or per slice of items).',
66
+ loop: {
67
+ maxIterations: 100,
68
+ itemPort: 'item',
69
+ resultPort: 'result',
70
+ slice: 1,
71
+ },
72
+ },
73
+ }),
74
+ model()
75
+ ], GraphForeachLoopNode);
76
+ export { GraphForeachLoopNode };
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9ub2Rlcy9sb29wcy9mb3JlYWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0NBQStCO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQXlCO0FBRW5FLHNEQUFzRDtBQUN0RCxpQ0FBNEI7QUFzQnJCLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQXFCLFNBQVEsS0FBSztDQXNCOUMsQ0FBQTtBQWxCQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDO0lBQy9FLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7bURBQ1Q7QUFLbEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQztJQUMzRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O21EQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7O2tEQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7O2tEQUN6RTtBQUlmO0lBRkMsUUFBUSxFQUFFO0lBQ1YsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDOzt1REFDVjtBQXJCWCxvQkFBb0I7SUFwQmhDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtRQUMvQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsTUFBTSxFQUFFLEdBQUc7UUFDWCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsMkZBQTJGO1lBQ3hHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsR0FBRztnQkFDbEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssb0JBQW9CLENBc0JoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL2ZvcmVhY2hcbiAqIEBzdW1tYXJ5IEZvcmVhY2ggbG9vcCBub2RlIGRlY2xhcmF0aW9uLlxuICogQGRlc2NyaXB0aW9uIFNoYXJlZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGBjb3JlLmxvb3AuZm9yZWFjaGAgc3lzdGVtIG5vZGVcbiAqIGtpbmQgKGRlY29yYXRvciBpZCBgZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyXG4gKiBkZW1vIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzXG4gKiBidWlsdCBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yYCkuIFRoZVxuICogbG9vcC1ib2R5IHdvcmtmbG93IGlzIGRlbW8vYXBwLXNpZGUgY29udGVudCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIHNoYXJlZFxuICogZGVjbGFyYXRpb24g4oCUIHRoZSBzaGFyZWQgY2xhc3MgY2FycmllcyB0aGUgcG9ydC9tZXRhZGF0YSBzaGFwZSBvbmx5LlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL3VpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IGNvbm5lY3Rpb24sIGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yc1wiO1xuXG4vLyBFbnN1cmUgY2F0ZWdvcnkgc3R5bGVzIGFyZSByZWdpc3RlcmVkIChpZGVtcG90ZW50KS5cbmltcG9ydCBcIi4uL2NhdGVnb3J5LXN0eWxlc1wiO1xuXG5Abm9kZSgnZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AuZm9yZWFjaCcsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnI2VhYjMwOCcsXG4gIGljb246ICd0aS1yZXBlYXQnLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnaXRlcmF0aW9uJywgJ2ZvcmVhY2gnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ0ZvcmVhY2ggbG9vcCcsXG4gICAgZGVzY3JpcHRpb246ICdJdGVyYXRlcyBvdmVyIGFuIGFycmF5IGlucHV0IGFuZCBleGVjdXRlcyB0aGUgYm9keSBvbmNlIHBlciBpdGVtIChvciBwZXIgc2xpY2Ugb2YgaXRlbXMpLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgaXRlbVBvcnQ6ICdpdGVtJyxcbiAgICAgIHJlc3VsdFBvcnQ6ICdyZXN1bHQnLFxuICAgICAgc2xpY2U6IDEsXG4gICAgfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEdyYXBoRm9yZWFjaExvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCd0ZXh0YXJlYScsIHsgbGFiZWw6ICdJdGVtcycsIHBsYWNlaG9sZGVyOiAnQXJyYXkgdG8gaXRlcmF0ZSBvdmVyJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdpdGVtcycgfSlcbiAgaXRlbXMhOiB1bmtub3duW107XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudCgnaW5wdXQnLCB7IGxhYmVsOiAnU2xpY2Ugc2l6ZScsIHBsYWNlaG9sZGVyOiAnSXRlbXMgcGVyIGl0ZXJhdGlvbiAoZGVmYXVsdCAxKScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc2xpY2UnIH0pXG4gIHNsaWNlITogbnVtYmVyO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdpdGVtJyB9KVxuICBpdGVtITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAY29ubmVjdGlvbih7IGhhbmRsZTogJ2xvb3AnLCBjb25uZWN0aW9uUnVsZXM6IHsgYWxsb3dTZWxmOiB0cnVlLCBtYXhDb25uZWN0aW9uczogMSB9IH0pXG4gIGxvb3AhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdjb21wbGV0ZWQnIH0pXG4gIGNvbXBsZXRlZCE6IHVua25vd25bXTtcbn1cbiJdfQ==
@@ -0,0 +1,65 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module ui-decorators/graph/nodes/loops/until
12
+ * @summary Until loop node declaration.
13
+ * @description Shared declaration for the `core.loop.until` system node kind
14
+ * (decorator id `graph-until-loop-node`), ported from the for-angular demo
15
+ * app so the loop kinds become shared canvas nodes. Its executor is built
16
+ * into the integrations engine (`UntilGraphNodeExecutor`). The loop-body
17
+ * workflow is demo/app-side content and is not part of the shared
18
+ * declaration — the shared class carries the port/metadata shape only.
19
+ */
20
+ import { Model, model, required } from "@decaf-ts/decorator-validation";
21
+ import { uielement } from "./../../../ui/decorators.js";
22
+ import { input, node, output } from "./../../decorators.js";
23
+ // Ensure category styles are registered (idempotent).
24
+ import "./../category-styles.js";
25
+ let GraphUntilLoopNode = class GraphUntilLoopNode extends Model {
26
+ };
27
+ __decorate([
28
+ required(),
29
+ uielement('input', { label: 'State', placeholder: 'Initial state' }),
30
+ input({ handle: 'state' }),
31
+ __metadata("design:type", Object)
32
+ ], GraphUntilLoopNode.prototype, "state", void 0);
33
+ __decorate([
34
+ required(),
35
+ uielement('input', { label: 'Final state', placeholder: 'Final state after loop' }),
36
+ output({ handle: 'state' }),
37
+ __metadata("design:type", Object)
38
+ ], GraphUntilLoopNode.prototype, "stateOut", void 0);
39
+ GraphUntilLoopNode = __decorate([
40
+ node('graph-until-loop-node', {
41
+ kind: 'core.loop.until',
42
+ category: 'Loop',
43
+ color: '#db2777',
44
+ icon: 'ti-player-stop',
45
+ width: 96,
46
+ height: 96,
47
+ labels: ['loop', 'conditional', 'until'],
48
+ metadata: {
49
+ title: 'Until loop',
50
+ description: 'Repeats the body until the condition is true (post-condition, runs at least once).',
51
+ loop: {
52
+ maxIterations: 50,
53
+ statePort: 'state',
54
+ condition: {
55
+ type: 'greaterThanOrEqual',
56
+ left: 'iteration',
57
+ right: 2,
58
+ },
59
+ },
60
+ },
61
+ }),
62
+ model()
63
+ ], GraphUntilLoopNode);
64
+ export { GraphUntilLoopNode };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvdW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsb0ZBQW9GO1lBQ2pHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsb0JBQTZCO29CQUNuQyxJQUFJLEVBQUUsV0FBVztvQkFDakIsS0FBSyxFQUFFLENBQUM7aUJBQ1Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNELEtBQUssRUFBRTtHQUNLLGtCQUFrQixDQVU5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL3VudGlsXG4gKiBAc3VtbWFyeSBVbnRpbCBsb29wIG5vZGUgZGVjbGFyYXRpb24uXG4gKiBAZGVzY3JpcHRpb24gU2hhcmVkIGRlY2xhcmF0aW9uIGZvciB0aGUgYGNvcmUubG9vcC51bnRpbGAgc3lzdGVtIG5vZGUga2luZFxuICogKGRlY29yYXRvciBpZCBgZ3JhcGgtdW50aWwtbG9vcC1ub2RlYCksIHBvcnRlZCBmcm9tIHRoZSBmb3ItYW5ndWxhciBkZW1vXG4gKiBhcHAgc28gdGhlIGxvb3Aga2luZHMgYmVjb21lIHNoYXJlZCBjYW52YXMgbm9kZXMuIEl0cyBleGVjdXRvciBpcyBidWlsdFxuICogaW50byB0aGUgaW50ZWdyYXRpb25zIGVuZ2luZSAoYFVudGlsR3JhcGhOb2RlRXhlY3V0b3JgKS4gVGhlIGxvb3AtYm9keVxuICogd29ya2Zsb3cgaXMgZGVtby9hcHAtc2lkZSBjb250ZW50IGFuZCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkXG4gKiBkZWNsYXJhdGlvbiDigJQgdGhlIHNoYXJlZCBjbGFzcyBjYXJyaWVzIHRoZSBwb3J0L21ldGFkYXRhIHNoYXBlIG9ubHkuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vdWkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgaW5wdXQsIG5vZGUsIG91dHB1dCB9IGZyb20gXCIuLi8uLi9kZWNvcmF0b3JzXCI7XG5cbi8vIEVuc3VyZSBjYXRlZ29yeSBzdHlsZXMgYXJlIHJlZ2lzdGVyZWQgKGlkZW1wb3RlbnQpLlxuaW1wb3J0IFwiLi4vY2F0ZWdvcnktc3R5bGVzXCI7XG5cbkBub2RlKCdncmFwaC11bnRpbC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AudW50aWwnLFxuICBjYXRlZ29yeTogJ0xvb3AnLFxuICBjb2xvcjogJyNkYjI3NzcnLFxuICBpY29uOiAndGktcGxheWVyLXN0b3AnLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogWydsb29wJywgJ2NvbmRpdGlvbmFsJywgJ3VudGlsJ10sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6ICdVbnRpbCBsb29wJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGVhdHMgdGhlIGJvZHkgdW50aWwgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIChwb3N0LWNvbmRpdGlvbiwgcnVucyBhdCBsZWFzdCBvbmNlKS4nLFxuICAgIGxvb3A6IHtcbiAgICAgIG1heEl0ZXJhdGlvbnM6IDUwLFxuICAgICAgc3RhdGVQb3J0OiAnc3RhdGUnLFxuICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgIHR5cGU6ICdncmVhdGVyVGhhbk9yRXF1YWwnIGFzIG5ldmVyLFxuICAgICAgICBsZWZ0OiAnaXRlcmF0aW9uJyxcbiAgICAgICAgcmlnaHQ6IDIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcmFwaFVudGlsTG9vcE5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ1N0YXRlJywgcGxhY2Vob2xkZXI6ICdJbml0aWFsIHN0YXRlJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdzdGF0ZScgfSlcbiAgc3RhdGUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ0ZpbmFsIHN0YXRlJywgcGxhY2Vob2xkZXI6ICdGaW5hbCBzdGF0ZSBhZnRlciBsb29wJyB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlT3V0ITogdW5rbm93bjtcbn1cbiJdfQ==
@@ -0,0 +1,65 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module ui-decorators/graph/nodes/loops/while
12
+ * @summary While loop node declaration.
13
+ * @description Shared declaration for the `core.loop.while` system node kind
14
+ * (decorator id `graph-while-loop-node`), ported from the for-angular demo
15
+ * app so the loop kinds become shared canvas nodes. Its executor is built
16
+ * into the integrations engine (`WhileGraphNodeExecutor`). The loop-body
17
+ * workflow is demo/app-side content and is not part of the shared
18
+ * declaration — the shared class carries the port/metadata shape only.
19
+ */
20
+ import { Model, model, required } from "@decaf-ts/decorator-validation";
21
+ import { uielement } from "./../../../ui/decorators.js";
22
+ import { input, node, output } from "./../../decorators.js";
23
+ // Ensure category styles are registered (idempotent).
24
+ import "./../category-styles.js";
25
+ let GraphWhileLoopNode = class GraphWhileLoopNode extends Model {
26
+ };
27
+ __decorate([
28
+ required(),
29
+ uielement('input', { label: 'State', placeholder: 'Initial state' }),
30
+ input({ handle: 'state' }),
31
+ __metadata("design:type", Object)
32
+ ], GraphWhileLoopNode.prototype, "state", void 0);
33
+ __decorate([
34
+ required(),
35
+ uielement('input', { label: 'Final state', placeholder: 'Final state after loop' }),
36
+ output({ handle: 'state' }),
37
+ __metadata("design:type", Object)
38
+ ], GraphWhileLoopNode.prototype, "stateOut", void 0);
39
+ GraphWhileLoopNode = __decorate([
40
+ node('graph-while-loop-node', {
41
+ kind: 'core.loop.while',
42
+ category: 'Loop',
43
+ color: '#0891b2',
44
+ icon: 'ti-arrows-loop',
45
+ width: 96,
46
+ height: 96,
47
+ labels: ['loop', 'conditional', 'while'],
48
+ metadata: {
49
+ title: 'While loop',
50
+ description: 'Repeats the body while the condition is true (pre-condition).',
51
+ loop: {
52
+ maxIterations: 50,
53
+ statePort: 'state',
54
+ condition: {
55
+ type: 'lessThan',
56
+ left: 'iteration',
57
+ right: 3,
58
+ },
59
+ },
60
+ },
61
+ }),
62
+ model()
63
+ ], GraphWhileLoopNode);
64
+ export { GraphWhileLoopNode };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsK0RBQStEO1lBQzVFLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsVUFBbUI7b0JBQ3pCLElBQUksRUFBRSxXQUFXO29CQUNqQixLQUFLLEVBQUUsQ0FBQztpQkFDVDthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssa0JBQWtCLENBVTlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGVcbiAqIEBzdW1tYXJ5IFdoaWxlIGxvb3Agbm9kZSBkZWNsYXJhdGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBTaGFyZWQgZGVjbGFyYXRpb24gZm9yIHRoZSBgY29yZS5sb29wLndoaWxlYCBzeXN0ZW0gbm9kZSBraW5kXG4gKiAoZGVjb3JhdG9yIGlkIGBncmFwaC13aGlsZS1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyIGRlbW9cbiAqIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzIGJ1aWx0XG4gKiBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcmApLiBUaGUgbG9vcC1ib2R5XG4gKiB3b3JrZmxvdyBpcyBkZW1vL2FwcC1zaWRlIGNvbnRlbnQgYW5kIGlzIG5vdCBwYXJ0IG9mIHRoZSBzaGFyZWRcbiAqIGRlY2xhcmF0aW9uIOKAlCB0aGUgc2hhcmVkIGNsYXNzIGNhcnJpZXMgdGhlIHBvcnQvbWV0YWRhdGEgc2hhcGUgb25seS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi91aS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvcnNcIjtcblxuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLi9jYXRlZ29yeS1zdHlsZXNcIjtcblxuQG5vZGUoJ2dyYXBoLXdoaWxlLWxvb3Atbm9kZScsIHtcbiAga2luZDogJ2NvcmUubG9vcC53aGlsZScsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnIzA4OTFiMicsXG4gIGljb246ICd0aS1hcnJvd3MtbG9vcCcsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnY29uZGl0aW9uYWwnLCAnd2hpbGUnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ1doaWxlIGxvb3AnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVwZWF0cyB0aGUgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGlzIHRydWUgKHByZS1jb25kaXRpb24pLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogNTAsXG4gICAgICBzdGF0ZVBvcnQ6ICdzdGF0ZScsXG4gICAgICBjb25kaXRpb246IHtcbiAgICAgICAgdHlwZTogJ2xlc3NUaGFuJyBhcyBuZXZlcixcbiAgICAgICAgbGVmdDogJ2l0ZXJhdGlvbicsXG4gICAgICAgIHJpZ2h0OiAzLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgR3JhcGhXaGlsZUxvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdTdGF0ZScsIHBsYWNlaG9sZGVyOiAnSW5pdGlhbCBzdGF0ZScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdGaW5hbCBzdGF0ZScsIHBsYWNlaG9sZGVyOiAnRmluYWwgc3RhdGUgYWZ0ZXIgbG9vcCcgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogJ3N0YXRlJyB9KVxuICBzdGF0ZU91dCE6IHVua25vd247XG59XG4iXX0=
@@ -0,0 +1,334 @@
1
+ import { graphNodeManifest } from "./../catalog/index.js";
2
+ import { AgentNode } from "./agents/agent.js";
3
+ import { BreakFlowNode } from "./flow-control/break.js";
4
+ import { ErrorBoundaryFlowNode } from "./flow-control/error-boundary.js";
5
+ import { HumanApprovalFlowNode } from "./flow-control/human-approval.js";
6
+ import { IfFlowNode } from "./flow-control/if.js";
7
+ import { ParallelFlowNode } from "./flow-control/parallel.js";
8
+ import { SwitchFlowNode } from "./flow-control/switch.js";
9
+ import { CodeFlowNode } from "./utility/code.js";
10
+ import { DelayFlowNode } from "./utility/delay.js";
11
+ import { LogFlowNode } from "./utility/log.js";
12
+ import { MapFlowNode } from "./utility/map.js";
13
+ import { MergeFlowNode } from "./utility/merge.js";
14
+ import { ReturnFlowNode } from "./utility/return.js";
15
+ import { UtilityLogNode } from "./utility/utility-log.js";
16
+ import { ChatTriggerNode } from "./triggers/chat.js";
17
+ import { EventTriggerNode } from "./triggers/event.js";
18
+ import { FormTriggerNode } from "./triggers/form.js";
19
+ import { ManualTriggerNode } from "./triggers/manual.js";
20
+ import { ScheduleTriggerNode } from "./triggers/schedule.js";
21
+ import { WebhookTriggerNode } from "./triggers/webhook.js";
22
+ /**
23
+ * Builds a single {@link GraphPortManifest} from its id, label, direction,
24
+ * and optional extra fields — the terse constructor used by the hand-authored
25
+ * loop manifests below.
26
+ *
27
+ * @param id - Port identifier (matches the decorated property handle).
28
+ * @param label - Human-readable port label.
29
+ * @param direction - Port direction (`input` or `output`).
30
+ * @param extra - Optional manifest fields merged over the defaults.
31
+ * @returns The assembled port manifest.
32
+ */
33
+ function port(id, label, direction, extra = {}) {
34
+ return { id, label, direction, ...extra };
35
+ }
36
+ /**
37
+ * Compiles a `@node`-decorated class into its published
38
+ * {@link GraphNodeManifest}, so the served shape matches what the Angular
39
+ * palette consumes.
40
+ *
41
+ * @param node - The decorated node class constructor.
42
+ * @param name - Display name override for the compiled manifest.
43
+ * @returns The compiled node manifest.
44
+ */
45
+ function compile(node, name) {
46
+ return graphNodeManifest(node, { name });
47
+ }
48
+ /** Manifest for the `core.loop.foreach` node: runs the loop body once per item (or slice) of the input array. */
49
+ export const FOREACH_GRAPH_NODE_MANIFEST = {
50
+ kind: "core.loop.foreach",
51
+ capabilities: ["loop"],
52
+ display: {
53
+ name: "Foreach",
54
+ description: "Runs the loop body once per item (or per slice of items) of the input array, collecting the results in order.",
55
+ category: "Flow Control",
56
+ color: "#8b5cf6",
57
+ icon: { type: "catalogue", name: "ti-repeat" },
58
+ width: 120,
59
+ height: 140,
60
+ labels: ["flow", "loop", "foreach", "iteration"],
61
+ },
62
+ inputs: [
63
+ port("items", "Items", "input", {
64
+ required: true,
65
+ schema: { type: "array", items: { type: "any" } },
66
+ }),
67
+ port("slice", "Slice size", "input", { schema: { type: "number", integer: true, min: 1 } }),
68
+ port("state", "Initial state", "input", { schema: { type: "any" } }),
69
+ ],
70
+ outputs: [
71
+ port("results", "Results", "output", {
72
+ schema: { type: "array", items: { type: "any" } },
73
+ }),
74
+ port("completed", "Completed", "output", {
75
+ schema: { type: "array", items: { type: "any" } },
76
+ }),
77
+ port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
78
+ port("broken", "Broken", "output", { schema: { type: "boolean" } }),
79
+ port("state", "Final state", "output", { schema: { type: "any" } }),
80
+ ],
81
+ parameters: [
82
+ {
83
+ type: "number",
84
+ id: "maxIterations",
85
+ label: "Max iterations",
86
+ integer: true,
87
+ min: 1,
88
+ },
89
+ {
90
+ type: "object",
91
+ id: "condition",
92
+ label: "Condition",
93
+ },
94
+ {
95
+ type: "string",
96
+ id: "itemPort",
97
+ label: "Item port",
98
+ },
99
+ {
100
+ type: "string",
101
+ id: "resultPort",
102
+ label: "Result port",
103
+ },
104
+ {
105
+ type: "string",
106
+ id: "statePort",
107
+ label: "State port",
108
+ },
109
+ {
110
+ type: "number",
111
+ id: "slice",
112
+ label: "Slice size",
113
+ integer: true,
114
+ min: 1,
115
+ },
116
+ ],
117
+ };
118
+ /** Manifest for the `core.loop.while` node: repeats the loop body while the condition holds. */
119
+ export const WHILE_GRAPH_NODE_MANIFEST = {
120
+ kind: "core.loop.while",
121
+ capabilities: ["loop"],
122
+ display: {
123
+ name: "While",
124
+ description: "Runs the loop body while the configured condition evaluates to true, threading the state between iterations.",
125
+ category: "Flow Control",
126
+ color: "#8b5cf6",
127
+ icon: { type: "catalogue", name: "ti-repeat-once" },
128
+ width: 120,
129
+ height: 140,
130
+ labels: ["flow", "loop", "while", "condition"],
131
+ },
132
+ inputs: [port("state", "Initial state", "input", { schema: { type: "any" } })],
133
+ outputs: [
134
+ port("state", "Final state", "output", { schema: { type: "any" } }),
135
+ port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
136
+ ],
137
+ parameters: [
138
+ {
139
+ type: "number",
140
+ id: "maxIterations",
141
+ label: "Max iterations",
142
+ integer: true,
143
+ min: 1,
144
+ },
145
+ {
146
+ type: "object",
147
+ id: "condition",
148
+ label: "Condition",
149
+ required: true,
150
+ },
151
+ {
152
+ type: "string",
153
+ id: "statePort",
154
+ label: "State port",
155
+ },
156
+ {
157
+ type: "string",
158
+ id: "inputPort",
159
+ label: "Input port",
160
+ },
161
+ {
162
+ type: "string",
163
+ id: "outputPort",
164
+ label: "Output port",
165
+ },
166
+ ],
167
+ };
168
+ /** Manifest for the `core.loop.until` node: repeats the loop body until the condition holds. */
169
+ export const UNTIL_GRAPH_NODE_MANIFEST = {
170
+ kind: "core.loop.until",
171
+ capabilities: ["loop"],
172
+ display: {
173
+ name: "Until",
174
+ description: "Runs the loop body at least once, then repeats until the configured condition evaluates to true.",
175
+ category: "Flow Control",
176
+ color: "#8b5cf6",
177
+ icon: { type: "catalogue", name: "ti-repeat" },
178
+ width: 120,
179
+ height: 140,
180
+ labels: ["flow", "loop", "until", "condition"],
181
+ },
182
+ inputs: [port("state", "Initial state", "input", { schema: { type: "any" } })],
183
+ outputs: [
184
+ port("state", "Final state", "output", { schema: { type: "any" } }),
185
+ port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
186
+ ],
187
+ parameters: [
188
+ {
189
+ type: "number",
190
+ id: "maxIterations",
191
+ label: "Max iterations",
192
+ integer: true,
193
+ min: 1,
194
+ },
195
+ {
196
+ type: "object",
197
+ id: "condition",
198
+ label: "Condition",
199
+ required: true,
200
+ },
201
+ {
202
+ type: "string",
203
+ id: "statePort",
204
+ label: "State port",
205
+ },
206
+ {
207
+ type: "string",
208
+ id: "inputPort",
209
+ label: "Input port",
210
+ },
211
+ {
212
+ type: "string",
213
+ id: "outputPort",
214
+ label: "Output port",
215
+ },
216
+ ],
217
+ };
218
+ const switchCompiled = compile(SwitchFlowNode, "Switch");
219
+ /** Manifest for the `core.flow.switch` node: routes execution by switch-case conditions (cases live under `parameters["switch"]`). */
220
+ export const SWITCH_GRAPH_NODE_MANIFEST = {
221
+ ...switchCompiled,
222
+ outputs: [],
223
+ parameters: [
224
+ ...switchCompiled.parameters,
225
+ {
226
+ type: "collection",
227
+ id: "cases",
228
+ label: "Cases",
229
+ required: true,
230
+ itemIdPath: "outputPort",
231
+ itemLabelPath: "label",
232
+ },
233
+ {
234
+ type: "boolean",
235
+ id: "hasDefault",
236
+ label: "Has default",
237
+ defaultValue: false,
238
+ },
239
+ ],
240
+ dynamicPorts: [
241
+ {
242
+ type: "repeatFromParameter",
243
+ parameter: "cases",
244
+ itemIdPath: "outputPort",
245
+ itemLabelPath: "label",
246
+ direction: "output",
247
+ portIdTemplate: "${id}",
248
+ defaultPort: {
249
+ id: "case",
250
+ label: "Case",
251
+ direction: "output",
252
+ schema: { type: "any" },
253
+ },
254
+ },
255
+ {
256
+ type: "togglePort",
257
+ parameter: "hasDefault",
258
+ equals: true,
259
+ port: {
260
+ id: "default",
261
+ label: "Default",
262
+ direction: "output",
263
+ schema: { type: "any" },
264
+ },
265
+ },
266
+ ],
267
+ };
268
+ /** Manifest for the manual-trigger node (starts a run on demand). */
269
+ export const MANUAL_TRIGGER_GRAPH_NODE_MANIFEST = compile(ManualTriggerNode, "Manual trigger");
270
+ /** Manifest for the webhook-trigger node (starts a run from an inbound webhook). */
271
+ export const WEBHOOK_TRIGGER_GRAPH_NODE_MANIFEST = compile(WebhookTriggerNode, "Webhook trigger");
272
+ /** Manifest for the schedule-trigger node (starts a run on a schedule). */
273
+ export const SCHEDULE_TRIGGER_GRAPH_NODE_MANIFEST = compile(ScheduleTriggerNode, "Schedule trigger");
274
+ /** Manifest for the event-trigger node (starts a run on an observed event). */
275
+ export const EVENT_TRIGGER_GRAPH_NODE_MANIFEST = compile(EventTriggerNode, "Event trigger");
276
+ /** Manifest for the form-trigger node (starts a run from a form submission). */
277
+ export const FORM_TRIGGER_GRAPH_NODE_MANIFEST = compile(FormTriggerNode, "Form trigger");
278
+ /** Manifest for the chat-trigger node (starts a run from a chat message). */
279
+ export const CHAT_TRIGGER_GRAPH_NODE_MANIFEST = compile(ChatTriggerNode, "Chat trigger");
280
+ /** Manifest for the if node (conditional branch on a boolean condition). */
281
+ export const IF_GRAPH_NODE_MANIFEST = compile(IfFlowNode, "If");
282
+ /** Manifest for the parallel node (runs branches concurrently). */
283
+ export const PARALLEL_GRAPH_NODE_MANIFEST = compile(ParallelFlowNode, "Parallel");
284
+ /** Manifest for the merge node (joins parallel branches). */
285
+ export const MERGE_GRAPH_NODE_MANIFEST = compile(MergeFlowNode, "Merge");
286
+ /** Manifest for the map node (transforms each input item). */
287
+ export const MAP_GRAPH_NODE_MANIFEST = compile(MapFlowNode, "Map");
288
+ /** Manifest for the delay node (pauses execution for a duration). */
289
+ export const DELAY_GRAPH_NODE_MANIFEST = compile(DelayFlowNode, "Delay");
290
+ /** Manifest for the error-boundary node (isolates branch failures). */
291
+ export const ERROR_BOUNDARY_GRAPH_NODE_MANIFEST = compile(ErrorBoundaryFlowNode, "Error boundary");
292
+ /** Manifest for the human-approval node (waits for an approval decision). */
293
+ export const HUMAN_APPROVAL_GRAPH_NODE_MANIFEST = compile(HumanApprovalFlowNode, "Human approval");
294
+ /** Manifest for the return node (terminates the workflow with output values). */
295
+ export const RETURN_GRAPH_NODE_MANIFEST = compile(ReturnFlowNode, "Return");
296
+ /** Manifest for the code node (executes user code). */
297
+ export const CODE_GRAPH_NODE_MANIFEST = compile(CodeFlowNode, "Code");
298
+ /** Manifest for the log node (logs its input). */
299
+ export const LOG_GRAPH_NODE_MANIFEST = compile(LogFlowNode, "Log");
300
+ /** Manifest for the utility-log node (log-shaped utility sink). */
301
+ export const UTILITY_LOG_GRAPH_NODE_MANIFEST = compile(UtilityLogNode, "Utility Log");
302
+ /** Manifest for the break node (exits the enclosing loop). */
303
+ export const BREAK_GRAPH_NODE_MANIFEST = compile(BreakFlowNode, "Break");
304
+ /** Manifest for the agent node (delegates work to an agent). */
305
+ export const AGENT_GRAPH_NODE_MANIFEST = compile(AgentNode, "Agent");
306
+ /** All built-in node manifests, in catalogue display order. */
307
+ export const GRAPH_BUILT_IN_NODE_MANIFESTS = [
308
+ MANUAL_TRIGGER_GRAPH_NODE_MANIFEST,
309
+ WEBHOOK_TRIGGER_GRAPH_NODE_MANIFEST,
310
+ SCHEDULE_TRIGGER_GRAPH_NODE_MANIFEST,
311
+ EVENT_TRIGGER_GRAPH_NODE_MANIFEST,
312
+ FORM_TRIGGER_GRAPH_NODE_MANIFEST,
313
+ CHAT_TRIGGER_GRAPH_NODE_MANIFEST,
314
+ IF_GRAPH_NODE_MANIFEST,
315
+ SWITCH_GRAPH_NODE_MANIFEST,
316
+ PARALLEL_GRAPH_NODE_MANIFEST,
317
+ MERGE_GRAPH_NODE_MANIFEST,
318
+ MAP_GRAPH_NODE_MANIFEST,
319
+ DELAY_GRAPH_NODE_MANIFEST,
320
+ ERROR_BOUNDARY_GRAPH_NODE_MANIFEST,
321
+ HUMAN_APPROVAL_GRAPH_NODE_MANIFEST,
322
+ RETURN_GRAPH_NODE_MANIFEST,
323
+ CODE_GRAPH_NODE_MANIFEST,
324
+ LOG_GRAPH_NODE_MANIFEST,
325
+ UTILITY_LOG_GRAPH_NODE_MANIFEST,
326
+ BREAK_GRAPH_NODE_MANIFEST,
327
+ AGENT_GRAPH_NODE_MANIFEST,
328
+ FOREACH_GRAPH_NODE_MANIFEST,
329
+ WHILE_GRAPH_NODE_MANIFEST,
330
+ UNTIL_GRAPH_NODE_MANIFEST,
331
+ ];
332
+ /** Built-in manifests indexed by node `kind` — the source for built-in catalogue registrations. */
333
+ export const GRAPH_BUILT_IN_NODE_MANIFESTS_BY_KIND = Object.fromEntries(GRAPH_BUILT_IN_NODE_MANIFESTS.map((manifest) => [manifest.kind, manifest]));
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL25vZGVzL21hbmlmZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsOEJBQW1CO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsMEJBQXVCO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0NBQTZCO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5Q0FBc0M7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlDQUFzQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLDZCQUEwQjtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQWdDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQThCO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQXVCO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsMkJBQXdCO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUseUJBQXNCO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUseUJBQXNCO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsMkJBQXdCO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsNEJBQXlCO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQThCO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsMkJBQXdCO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSw0QkFBeUI7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBd0I7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDZCQUEwQjtBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsK0JBQTRCO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSw4QkFBMkI7QUFFeEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsSUFBSSxDQUNYLEVBQVUsRUFDVixLQUFhLEVBQ2IsU0FB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QUN6QixrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLDBCQUEwQjtJQUMxQix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLCtCQUErQjtJQUMvQix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQix5QkFBeUI7SUFDekIseUJBQXlCO0NBQzFCLENBQUM7QUFFRixtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBRzlDLE1BQU0sQ0FBQyxXQUFXLENBQ3BCLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgdWktZGVjb3JhdG9ycy9ncmFwaC9ub2Rlcy9tYW5pZmVzdHNcbiAqIEBzdW1tYXJ5IEJ1aWx0LWluIG5vZGUgbWFuaWZlc3RzIChERUNBRi01MCDCpzQuMTIpLlxuICogQGRlc2NyaXB0aW9uIFRoZSBjYXRhbG9ndWUtcHVibGlzaGVkIEpTT04gbWFuaWZlc3RzIGZvciBldmVyeSBub2RlIGtpbmRcbiAqIHRoZSBiYWNrZW5kIHNoaXBzLiBMb29wIG1hbmlmZXN0cyBhcmUgaGFuZC1hdXRob3JlZCAodGhlaXIgbG9vcC1ib2R5XG4gKiBzaGFwZXMgYXJlIHN0cnVjdHVyYWwpOyB0aGUgcmVzdCBhcmUgY29tcGlsZWQgZnJvbSB0aGUgc2hhcmVkXG4gKiBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIHZpYSBgZ3JhcGhOb2RlTWFuaWZlc3RgLCBzbyB0aGUgc2VydmVkIHNoYXBlIGlzXG4gKiBpZGVudGljYWwgdG8gd2hhdCB0aGUgQW5ndWxhciBwYWxldHRlIGNvbnN1bWVzLiBBZ2dyZWdhdGVkIGluXG4gKiBgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFNgIGFuZCBpbmRleGVkIGJ5IGtpbmQgaW5cbiAqIGBHUkFQSF9CVUlMVF9JTl9OT0RFX01BTklGRVNUU19CWV9LSU5EYC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaE5vZGVNYW5pZmVzdCxcbiAgR3JhcGhQb3J0TWFuaWZlc3QsXG59IGZyb20gXCIuLi9jYXRhbG9nXCI7XG5pbXBvcnQgeyBncmFwaE5vZGVNYW5pZmVzdCB9IGZyb20gXCIuLi9jYXRhbG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBBZ2VudE5vZGUgfSBmcm9tIFwiLi9hZ2VudHMvYWdlbnRcIjtcbmltcG9ydCB7IEJyZWFrRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvYnJlYWtcIjtcbmltcG9ydCB7IEVycm9yQm91bmRhcnlGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9lcnJvci1ib3VuZGFyeVwiO1xuaW1wb3J0IHsgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2h1bWFuLWFwcHJvdmFsXCI7XG5pbXBvcnQgeyBJZkZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2lmXCI7XG5pbXBvcnQgeyBQYXJhbGxlbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL3BhcmFsbGVsXCI7XG5pbXBvcnQgeyBTd2l0Y2hGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9zd2l0Y2hcIjtcbmltcG9ydCB7IENvZGVGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvY29kZVwiO1xuaW1wb3J0IHsgRGVsYXlGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvZGVsYXlcIjtcbmltcG9ydCB7IExvZ0Zsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9sb2dcIjtcbmltcG9ydCB7IE1hcEZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9tYXBcIjtcbmltcG9ydCB7IE1lcmdlRmxvd05vZGUgfSBmcm9tIFwiLi91dGlsaXR5L21lcmdlXCI7XG5pbXBvcnQgeyBSZXR1cm5GbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvcmV0dXJuXCI7XG5pbXBvcnQgeyBVdGlsaXR5TG9nTm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvdXRpbGl0eS1sb2dcIjtcbmltcG9ydCB7IENoYXRUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL2NoYXRcIjtcbmltcG9ydCB7IEV2ZW50VHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9ldmVudFwiO1xuaW1wb3J0IHsgRm9ybVRyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvZm9ybVwiO1xuaW1wb3J0IHsgTWFudWFsVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9tYW51YWxcIjtcbmltcG9ydCB7IFNjaGVkdWxlVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9zY2hlZHVsZVwiO1xuaW1wb3J0IHsgV2ViaG9va1RyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvd2ViaG9va1wiO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHNpbmdsZSB7QGxpbmsgR3JhcGhQb3J0TWFuaWZlc3R9IGZyb20gaXRzIGlkLCBsYWJlbCwgZGlyZWN0aW9uLFxuICogYW5kIG9wdGlvbmFsIGV4dHJhIGZpZWxkcyDigJQgdGhlIHRlcnNlIGNvbnN0cnVjdG9yIHVzZWQgYnkgdGhlIGhhbmQtYXV0aG9yZWRcbiAqIGxvb3AgbWFuaWZlc3RzIGJlbG93LlxuICpcbiAqIEBwYXJhbSBpZCAtIFBvcnQgaWRlbnRpZmllciAobWF0Y2hlcyB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGhhbmRsZSkuXG4gKiBAcGFyYW0gbGFiZWwgLSBIdW1hbi1yZWFkYWJsZSBwb3J0IGxhYmVsLlxuICogQHBhcmFtIGRpcmVjdGlvbiAtIFBvcnQgZGlyZWN0aW9uIChgaW5wdXRgIG9yIGBvdXRwdXRgKS5cbiAqIEBwYXJhbSBleHRyYSAtIE9wdGlvbmFsIG1hbmlmZXN0IGZpZWxkcyBtZXJnZWQgb3ZlciB0aGUgZGVmYXVsdHMuXG4gKiBAcmV0dXJucyBUaGUgYXNzZW1ibGVkIHBvcnQgbWFuaWZlc3QuXG4gKi9cbmZ1bmN0aW9uIHBvcnQoXG4gIGlkOiBzdHJpbmcsXG4gIGxhYmVsOiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogXCJpbnB1dFwiIHwgXCJvdXRwdXRcIixcbiAgZXh0cmE6IFBhcnRpYWw8R3JhcGhQb3J0TWFuaWZlc3Q+ID0ge31cbik6IEdyYXBoUG9ydE1hbmlmZXN0IHtcbiAgcmV0dXJuIHsgaWQsIGxhYmVsLCBkaXJlY3Rpb24sIC4uLmV4dHJhIH07XG59XG5cbi8qKlxuICogQ29tcGlsZXMgYSBgQG5vZGVgLWRlY29yYXRlZCBjbGFzcyBpbnRvIGl0cyBwdWJsaXNoZWRcbiAqIHtAbGluayBHcmFwaE5vZGVNYW5pZmVzdH0sIHNvIHRoZSBzZXJ2ZWQgc2hhcGUgbWF0Y2hlcyB3aGF0IHRoZSBBbmd1bGFyXG4gKiBwYWxldHRlIGNvbnN1bWVzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGRlY29yYXRlZCBub2RlIGNsYXNzIGNvbnN0cnVjdG9yLlxuICogQHBhcmFtIG5hbWUgLSBEaXNwbGF5IG5hbWUgb3ZlcnJpZGUgZm9yIHRoZSBjb21waWxlZCBtYW5pZmVzdC5cbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBub2RlIG1hbmlmZXN0LlxuICovXG5mdW5jdGlvbiBjb21waWxlKG5vZGU6IHVua25vd24sIG5hbWU6IHN0cmluZyk6IEdyYXBoTm9kZU1hbmlmZXN0IHtcbiAgcmV0dXJuIGdyYXBoTm9kZU1hbmlmZXN0KG5vZGUgYXMgQ29uc3RydWN0b3IsIHsgbmFtZSB9KTtcbn1cblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgYGNvcmUubG9vcC5mb3JlYWNoYCBub2RlOiBydW5zIHRoZSBsb29wIGJvZHkgb25jZSBwZXIgaXRlbSAob3Igc2xpY2UpIG9mIHRoZSBpbnB1dCBhcnJheS4gKi9cbmV4cG9ydCBjb25zdCBGT1JFQUNIX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC5mb3JlYWNoXCIsXG4gIGNhcGFiaWxpdGllczogW1wibG9vcFwiXSxcbiAgZGlzcGxheToge1xuICAgIG5hbWU6IFwiRm9yZWFjaFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJSdW5zIHRoZSBsb29wIGJvZHkgb25jZSBwZXIgaXRlbSAob3IgcGVyIHNsaWNlIG9mIGl0ZW1zKSBvZiB0aGUgaW5wdXQgYXJyYXksIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMgaW4gb3JkZXIuXCIsXG4gICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgY29sb3I6IFwiIzhiNWNmNlwiLFxuICAgIGljb246IHsgdHlwZTogXCJjYXRhbG9ndWVcIiwgbmFtZTogXCJ0aS1yZXBlYXRcIiB9LFxuICAgIHdpZHRoOiAxMjAsXG4gICAgaGVpZ2h0OiAxNDAsXG4gICAgbGFiZWxzOiBbXCJmbG93XCIsIFwibG9vcFwiLCBcImZvcmVhY2hcIiwgXCJpdGVyYXRpb25cIl0sXG4gIH0sXG4gIGlucHV0czogW1xuICAgIHBvcnQoXCJpdGVtc1wiLCBcIkl0ZW1zXCIsIFwiaW5wdXRcIiwge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBzY2hlbWE6IHsgdHlwZTogXCJhcnJheVwiLCBpdGVtczogeyB0eXBlOiBcImFueVwiIH0gfSxcbiAgICB9KSxcbiAgICBwb3J0KFwic2xpY2VcIiwgXCJTbGljZSBzaXplXCIsIFwiaW5wdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJudW1iZXJcIiwgaW50ZWdlcjogdHJ1ZSwgbWluOiAxIH0gfSksXG4gICAgcG9ydChcInN0YXRlXCIsIFwiSW5pdGlhbCBzdGF0ZVwiLCBcImlucHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KSxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgIHBvcnQoXCJyZXN1bHRzXCIsIFwiUmVzdWx0c1wiLCBcIm91dHB1dFwiLCB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogXCJhcnJheVwiLCBpdGVtczogeyB0eXBlOiBcImFueVwiIH0gfSxcbiAgICB9KSxcbiAgICBwb3J0KFwiY29tcGxldGVkXCIsIFwiQ29tcGxldGVkXCIsIFwib3V0cHV0XCIsIHtcbiAgICAgIHNjaGVtYTogeyB0eXBlOiBcImFycmF5XCIsIGl0ZW1zOiB7IHR5cGU6IFwiYW55XCIgfSB9LFxuICAgIH0pLFxuICAgIHBvcnQoXCJpdGVyYXRpb25zXCIsIFwiSXRlcmF0aW9uc1wiLCBcIm91dHB1dFwiLCB7IHNjaGVtYTogeyB0eXBlOiBcIm51bWJlclwiLCBpbnRlZ2VyOiB0cnVlLCBtaW46IDAgfSB9KSxcbiAgICBwb3J0KFwiYnJva2VuXCIsIFwiQnJva2VuXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0gfSksXG4gICAgcG9ydChcInN0YXRlXCIsIFwiRmluYWwgc3RhdGVcIiwgXCJvdXRwdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJhbnlcIiB9IH0pLFxuICBdLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGlkOiBcIm1heEl0ZXJhdGlvbnNcIixcbiAgICAgIGxhYmVsOiBcIk1heCBpdGVyYXRpb25zXCIsXG4gICAgICBpbnRlZ2VyOiB0cnVlLFxuICAgICAgbWluOiAxLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGlkOiBcImNvbmRpdGlvblwiLFxuICAgICAgbGFiZWw6IFwiQ29uZGl0aW9uXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgaWQ6IFwiaXRlbVBvcnRcIixcbiAgICAgIGxhYmVsOiBcIkl0ZW0gcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcInJlc3VsdFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIlJlc3VsdCBwb3J0XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgaWQ6IFwic3RhdGVQb3J0XCIsXG4gICAgICBsYWJlbDogXCJTdGF0ZSBwb3J0XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgaWQ6IFwic2xpY2VcIixcbiAgICAgIGxhYmVsOiBcIlNsaWNlIHNpemVcIixcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICBtaW46IDEsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGBjb3JlLmxvb3Aud2hpbGVgIG5vZGU6IHJlcGVhdHMgdGhlIGxvb3AgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGhvbGRzLiAqL1xuZXhwb3J0IGNvbnN0IFdISUxFX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC53aGlsZVwiLFxuICBjYXBhYmlsaXRpZXM6IFtcImxvb3BcIl0sXG4gIGRpc3BsYXk6IHtcbiAgICBuYW1lOiBcIldoaWxlXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlJ1bnMgdGhlIGxvb3AgYm9keSB3aGlsZSB0aGUgY29uZmlndXJlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUsIHRocmVhZGluZyB0aGUgc3RhdGUgYmV0d2VlbiBpdGVyYXRpb25zLlwiLFxuICAgIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICAgIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgICBpY29uOiB7IHR5cGU6IFwiY2F0YWxvZ3VlXCIsIG5hbWU6IFwidGktcmVwZWF0LW9uY2VcIiB9LFxuICAgIHdpZHRoOiAxMjAsXG4gICAgaGVpZ2h0OiAxNDAsXG4gICAgbGFiZWxzOiBbXCJmbG93XCIsIFwibG9vcFwiLCBcIndoaWxlXCIsIFwiY29uZGl0aW9uXCJdLFxuICB9LFxuICBpbnB1dHM6IFtwb3J0KFwic3RhdGVcIiwgXCJJbml0aWFsIHN0YXRlXCIsIFwiaW5wdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJhbnlcIiB9IH0pXSxcbiAgb3V0cHV0czogW1xuICAgIHBvcnQoXCJzdGF0ZVwiLCBcIkZpbmFsIHN0YXRlXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KSxcbiAgICBwb3J0KFwiaXRlcmF0aW9uc1wiLCBcIkl0ZXJhdGlvbnNcIiwgXCJvdXRwdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJudW1iZXJcIiwgaW50ZWdlcjogdHJ1ZSwgbWluOiAwIH0gfSksXG4gIF0sXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgaWQ6IFwibWF4SXRlcmF0aW9uc1wiLFxuICAgICAgbGFiZWw6IFwiTWF4IGl0ZXJhdGlvbnNcIixcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICBtaW46IDEsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgaWQ6IFwiY29uZGl0aW9uXCIsXG4gICAgICBsYWJlbDogXCJDb25kaXRpb25cIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcInN0YXRlUG9ydFwiLFxuICAgICAgbGFiZWw6IFwiU3RhdGUgcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcImlucHV0UG9ydFwiLFxuICAgICAgbGFiZWw6IFwiSW5wdXQgcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcIm91dHB1dFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIk91dHB1dCBwb3J0XCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGBjb3JlLmxvb3AudW50aWxgIG5vZGU6IHJlcGVhdHMgdGhlIGxvb3AgYm9keSB1bnRpbCB0aGUgY29uZGl0aW9uIGhvbGRzLiAqL1xuZXhwb3J0IGNvbnN0IFVOVElMX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC51bnRpbFwiLFxuICBjYXBhYmlsaXRpZXM6IFtcImxvb3BcIl0sXG4gIGRpc3BsYXk6IHtcbiAgICBuYW1lOiBcIlVudGlsXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlJ1bnMgdGhlIGxvb3AgYm9keSBhdCBsZWFzdCBvbmNlLCB0aGVuIHJlcGVhdHMgdW50aWwgdGhlIGNvbmZpZ3VyZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxuICAgIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICAgIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgICBpY29uOiB7IHR5cGU6IFwiY2F0YWxvZ3VlXCIsIG5hbWU6IFwidGktcmVwZWF0XCIgfSxcbiAgICB3aWR0aDogMTIwLFxuICAgIGhlaWdodDogMTQwLFxuICAgIGxhYmVsczogW1wiZmxvd1wiLCBcImxvb3BcIiwgXCJ1bnRpbFwiLCBcImNvbmRpdGlvblwiXSxcbiAgfSxcbiAgaW5wdXRzOiBbcG9ydChcInN0YXRlXCIsIFwiSW5pdGlhbCBzdGF0ZVwiLCBcImlucHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KV0sXG4gIG91dHB1dHM6IFtcbiAgICBwb3J0KFwic3RhdGVcIiwgXCJGaW5hbCBzdGF0ZVwiLCBcIm91dHB1dFwiLCB7IHNjaGVtYTogeyB0eXBlOiBcImFueVwiIH0gfSksXG4gICAgcG9ydChcIml0ZXJhdGlvbnNcIiwgXCJJdGVyYXRpb25zXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwibnVtYmVyXCIsIGludGVnZXI6IHRydWUsIG1pbjogMCB9IH0pLFxuICBdLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGlkOiBcIm1heEl0ZXJhdGlvbnNcIixcbiAgICAgIGxhYmVsOiBcIk1heCBpdGVyYXRpb25zXCIsXG4gICAgICBpbnRlZ2VyOiB0cnVlLFxuICAgICAgbWluOiAxLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGlkOiBcImNvbmRpdGlvblwiLFxuICAgICAgbGFiZWw6IFwiQ29uZGl0aW9uXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJzdGF0ZVBvcnRcIixcbiAgICAgIGxhYmVsOiBcIlN0YXRlIHBvcnRcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJpbnB1dFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIklucHV0IHBvcnRcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJvdXRwdXRQb3J0XCIsXG4gICAgICBsYWJlbDogXCJPdXRwdXQgcG9ydFwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5jb25zdCBzd2l0Y2hDb21waWxlZCA9IGNvbXBpbGUoU3dpdGNoRmxvd05vZGUsIFwiU3dpdGNoXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBgY29yZS5mbG93LnN3aXRjaGAgbm9kZTogcm91dGVzIGV4ZWN1dGlvbiBieSBzd2l0Y2gtY2FzZSBjb25kaXRpb25zIChjYXNlcyBsaXZlIHVuZGVyIGBwYXJhbWV0ZXJzW1wic3dpdGNoXCJdYCkuICovXG5leHBvcnQgY29uc3QgU1dJVENIX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICAuLi5zd2l0Y2hDb21waWxlZCxcbiAgb3V0cHV0czogW10sXG4gIHBhcmFtZXRlcnM6IFtcbiAgICAuLi5zd2l0Y2hDb21waWxlZC5wYXJhbWV0ZXJzLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiY29sbGVjdGlvblwiLFxuICAgICAgaWQ6IFwiY2FzZXNcIixcbiAgICAgIGxhYmVsOiBcIkNhc2VzXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGl0ZW1JZFBhdGg6IFwib3V0cHV0UG9ydFwiLFxuICAgICAgaXRlbUxhYmVsUGF0aDogXCJsYWJlbFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBpZDogXCJoYXNEZWZhdWx0XCIsXG4gICAgICBsYWJlbDogXCJIYXMgZGVmYXVsdFwiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBkeW5hbWljUG9ydHM6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcInJlcGVhdEZyb21QYXJhbWV0ZXJcIixcbiAgICAgIHBhcmFtZXRlcjogXCJjYXNlc1wiLFxuICAgICAgaXRlbUlkUGF0aDogXCJvdXRwdXRQb3J0XCIsXG4gICAgICBpdGVtTGFiZWxQYXRoOiBcImxhYmVsXCIsXG4gICAgICBkaXJlY3Rpb246IFwib3V0cHV0XCIsXG4gICAgICBwb3J0SWRUZW1wbGF0ZTogXCIke2lkfVwiLFxuICAgICAgZGVmYXVsdFBvcnQ6IHtcbiAgICAgICAgaWQ6IFwiY2FzZVwiLFxuICAgICAgICBsYWJlbDogXCJDYXNlXCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJvdXRwdXRcIixcbiAgICAgICAgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInRvZ2dsZVBvcnRcIixcbiAgICAgIHBhcmFtZXRlcjogXCJoYXNEZWZhdWx0XCIsXG4gICAgICBlcXVhbHM6IHRydWUsXG4gICAgICBwb3J0OiB7XG4gICAgICAgIGlkOiBcImRlZmF1bHRcIixcbiAgICAgICAgbGFiZWw6IFwiRGVmYXVsdFwiLFxuICAgICAgICBkaXJlY3Rpb246IFwib3V0cHV0XCIsXG4gICAgICAgIHNjaGVtYTogeyB0eXBlOiBcImFueVwiIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBtYW51YWwtdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gb24gZGVtYW5kKS4gKi9cbmV4cG9ydCBjb25zdCBNQU5VQUxfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShNYW51YWxUcmlnZ2VyTm9kZSwgXCJNYW51YWwgdHJpZ2dlclwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgd2ViaG9vay10cmlnZ2VyIG5vZGUgKHN0YXJ0cyBhIHJ1biBmcm9tIGFuIGluYm91bmQgd2ViaG9vaykuICovXG5leHBvcnQgY29uc3QgV0VCSE9PS19UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKFdlYmhvb2tUcmlnZ2VyTm9kZSwgXCJXZWJob29rIHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIHNjaGVkdWxlLXRyaWdnZXIgbm9kZSAoc3RhcnRzIGEgcnVuIG9uIGEgc2NoZWR1bGUpLiAqL1xuZXhwb3J0IGNvbnN0IFNDSEVEVUxFX1RSSUdHRVJfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoU2NoZWR1bGVUcmlnZ2VyTm9kZSwgXCJTY2hlZHVsZSB0cmlnZ2VyXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBldmVudC10cmlnZ2VyIG5vZGUgKHN0YXJ0cyBhIHJ1biBvbiBhbiBvYnNlcnZlZCBldmVudCkuICovXG5leHBvcnQgY29uc3QgRVZFTlRfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShFdmVudFRyaWdnZXJOb2RlLCBcIkV2ZW50IHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGZvcm0tdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gZnJvbSBhIGZvcm0gc3VibWlzc2lvbikuICovXG5leHBvcnQgY29uc3QgRk9STV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKEZvcm1UcmlnZ2VyTm9kZSwgXCJGb3JtIHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGNoYXQtdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gZnJvbSBhIGNoYXQgbWVzc2FnZSkuICovXG5leHBvcnQgY29uc3QgQ0hBVF9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKENoYXRUcmlnZ2VyTm9kZSwgXCJDaGF0IHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGlmIG5vZGUgKGNvbmRpdGlvbmFsIGJyYW5jaCBvbiBhIGJvb2xlYW4gY29uZGl0aW9uKS4gKi9cbmV4cG9ydCBjb25zdCBJRl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShJZkZsb3dOb2RlLCBcIklmXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBwYXJhbGxlbCBub2RlIChydW5zIGJyYW5jaGVzIGNvbmN1cnJlbnRseSkuICovXG5leHBvcnQgY29uc3QgUEFSQUxMRUxfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoUGFyYWxsZWxGbG93Tm9kZSwgXCJQYXJhbGxlbFwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgbWVyZ2Ugbm9kZSAoam9pbnMgcGFyYWxsZWwgYnJhbmNoZXMpLiAqL1xuZXhwb3J0IGNvbnN0IE1FUkdFX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKE1lcmdlRmxvd05vZGUsIFwiTWVyZ2VcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIG1hcCBub2RlICh0cmFuc2Zvcm1zIGVhY2ggaW5wdXQgaXRlbSkuICovXG5leHBvcnQgY29uc3QgTUFQX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKE1hcEZsb3dOb2RlLCBcIk1hcFwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgZGVsYXkgbm9kZSAocGF1c2VzIGV4ZWN1dGlvbiBmb3IgYSBkdXJhdGlvbikuICovXG5leHBvcnQgY29uc3QgREVMQVlfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoRGVsYXlGbG93Tm9kZSwgXCJEZWxheVwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgZXJyb3ItYm91bmRhcnkgbm9kZSAoaXNvbGF0ZXMgYnJhbmNoIGZhaWx1cmVzKS4gKi9cbmV4cG9ydCBjb25zdCBFUlJPUl9CT1VOREFSWV9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShFcnJvckJvdW5kYXJ5Rmxvd05vZGUsIFwiRXJyb3IgYm91bmRhcnlcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGh1bWFuLWFwcHJvdmFsIG5vZGUgKHdhaXRzIGZvciBhbiBhcHByb3ZhbCBkZWNpc2lvbikuICovXG5leHBvcnQgY29uc3QgSFVNQU5fQVBQUk9WQUxfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoSHVtYW5BcHByb3ZhbEZsb3dOb2RlLCBcIkh1bWFuIGFwcHJvdmFsXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSByZXR1cm4gbm9kZSAodGVybWluYXRlcyB0aGUgd29ya2Zsb3cgd2l0aCBvdXRwdXQgdmFsdWVzKS4gKi9cbmV4cG9ydCBjb25zdCBSRVRVUk5fR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoUmV0dXJuRmxvd05vZGUsIFwiUmV0dXJuXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBjb2RlIG5vZGUgKGV4ZWN1dGVzIHVzZXIgY29kZSkuICovXG5leHBvcnQgY29uc3QgQ09ERV9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShDb2RlRmxvd05vZGUsIFwiQ29kZVwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgbG9nIG5vZGUgKGxvZ3MgaXRzIGlucHV0KS4gKi9cbmV4cG9ydCBjb25zdCBMT0dfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoTG9nRmxvd05vZGUsIFwiTG9nXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSB1dGlsaXR5LWxvZyBub2RlIChsb2ctc2hhcGVkIHV0aWxpdHkgc2luaykuICovXG5leHBvcnQgY29uc3QgVVRJTElUWV9MT0dfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoVXRpbGl0eUxvZ05vZGUsIFwiVXRpbGl0eSBMb2dcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGJyZWFrIG5vZGUgKGV4aXRzIHRoZSBlbmNsb3NpbmcgbG9vcCkuICovXG5leHBvcnQgY29uc3QgQlJFQUtfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoQnJlYWtGbG93Tm9kZSwgXCJCcmVha1wiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgYWdlbnQgbm9kZSAoZGVsZWdhdGVzIHdvcmsgdG8gYW4gYWdlbnQpLiAqL1xuZXhwb3J0IGNvbnN0IEFHRU5UX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKEFnZW50Tm9kZSwgXCJBZ2VudFwiKTtcblxuLyoqIEFsbCBidWlsdC1pbiBub2RlIG1hbmlmZXN0cywgaW4gY2F0YWxvZ3VlIGRpc3BsYXkgb3JkZXIuICovXG5leHBvcnQgY29uc3QgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFM6IEdyYXBoTm9kZU1hbmlmZXN0W10gPSBbXG4gIE1BTlVBTF9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFdFQkhPT0tfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBTQ0hFRFVMRV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEVWRU5UX1RSSUdHRVJfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgRk9STV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIENIQVRfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBJRl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBTV0lUQ0hfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgUEFSQUxMRUxfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgTUVSR0VfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgTUFQX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIERFTEFZX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEVSUk9SX0JPVU5EQVJZX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEhVTUFOX0FQUFJPVkFMX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFJFVFVSTl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBDT0RFX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIExPR19HUkFQSF9OT0RFX01BTklGRVNULFxuICBVVElMSVRZX0xPR19HUkFQSF9OT0RFX01BTklGRVNULFxuICBCUkVBS19HUkFQSF9OT0RFX01BTklGRVNULFxuICBBR0VOVF9HUkFQSF9OT0RFX01BTklGRVNULFxuICBGT1JFQUNIX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFdISUxFX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFVOVElMX0dSQVBIX05PREVfTUFOSUZFU1QsXG5dO1xuXG4vKiogQnVpbHQtaW4gbWFuaWZlc3RzIGluZGV4ZWQgYnkgbm9kZSBga2luZGAg4oCUIHRoZSBzb3VyY2UgZm9yIGJ1aWx0LWluIGNhdGFsb2d1ZSByZWdpc3RyYXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IEdSQVBIX0JVSUxUX0lOX05PREVfTUFOSUZFU1RTX0JZX0tJTkQ6IFJlY29yZDxcbiAgc3RyaW5nLFxuICBHcmFwaE5vZGVNYW5pZmVzdFxuPiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFMubWFwKChtYW5pZmVzdCkgPT4gW21hbmlmZXN0LmtpbmQsIG1hbmlmZXN0XSlcbik7XG4iXX0=