@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,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.GRAPH_BOUNDARY_NODES = exports.GRAPH_LOOP_NODES = exports.GRAPH_FLOW_CONTROL_NODES = exports.GRAPH_TRIGGER_NODES = void 0;
18
+ /**
19
+ * @module ui-decorators/graph/nodes
20
+ * @summary Shared node kind declarations (DECAF-32 §22.2, DECAF-50 Phase A).
21
+ * @description Canonical `@node`-decorated classes for the ALFRED-5 node kind
22
+ * taxonomy, laid out one node per file under `nodes/<category>/<node>.ts`:
23
+ * triggers (§22.2.1), flow-control and utility nodes (§22.2.2–22.2.3), the
24
+ * Agent node (§21.3), the three loop kinds (`core.loop.foreach/while/until`,
25
+ * §5.9), and the workflow input-value boundary node. Shared non-node support
26
+ * (base class, category styles, manifests) lives in sibling files under the
27
+ * same tree. Consumers (for-angular, ALFRED, etc.) import these declarations
28
+ * to populate node palettes, registries, and reference snapshots.
29
+ */
30
+ __exportStar(require("./base.cjs"), exports);
31
+ __exportStar(require("./category-styles.cjs"), exports);
32
+ __exportStar(require("./flow-control/break.cjs"), exports);
33
+ __exportStar(require("./flow-control/error-boundary.cjs"), exports);
34
+ __exportStar(require("./flow-control/human-approval.cjs"), exports);
35
+ __exportStar(require("./flow-control/if.cjs"), exports);
36
+ __exportStar(require("./flow-control/parallel.cjs"), exports);
37
+ __exportStar(require("./flow-control/switch.cjs"), exports);
38
+ __exportStar(require("./utility/code.cjs"), exports);
39
+ __exportStar(require("./utility/delay.cjs"), exports);
40
+ __exportStar(require("./utility/log.cjs"), exports);
41
+ __exportStar(require("./utility/map.cjs"), exports);
42
+ __exportStar(require("./utility/merge.cjs"), exports);
43
+ __exportStar(require("./utility/return.cjs"), exports);
44
+ __exportStar(require("./utility/utility-log.cjs"), exports);
45
+ __exportStar(require("./triggers/chat.cjs"), exports);
46
+ __exportStar(require("./triggers/event.cjs"), exports);
47
+ __exportStar(require("./triggers/form.cjs"), exports);
48
+ __exportStar(require("./triggers/manual.cjs"), exports);
49
+ __exportStar(require("./triggers/schedule.cjs"), exports);
50
+ __exportStar(require("./triggers/webhook.cjs"), exports);
51
+ __exportStar(require("./agents/agent.cjs"), exports);
52
+ __exportStar(require("./loops/foreach.cjs"), exports);
53
+ __exportStar(require("./loops/until.cjs"), exports);
54
+ __exportStar(require("./loops/while.cjs"), exports);
55
+ __exportStar(require("./boundary/input-value.cjs"), exports);
56
+ __exportStar(require("./manifests.cjs"), exports);
57
+ const break_js_1 = require("./flow-control/break.cjs");
58
+ const error_boundary_js_1 = require("./flow-control/error-boundary.cjs");
59
+ const human_approval_js_1 = require("./flow-control/human-approval.cjs");
60
+ const if_js_1 = require("./flow-control/if.cjs");
61
+ const parallel_js_1 = require("./flow-control/parallel.cjs");
62
+ const switch_js_1 = require("./flow-control/switch.cjs");
63
+ const code_js_1 = require("./utility/code.cjs");
64
+ const delay_js_1 = require("./utility/delay.cjs");
65
+ const log_js_1 = require("./utility/log.cjs");
66
+ const map_js_1 = require("./utility/map.cjs");
67
+ const merge_js_1 = require("./utility/merge.cjs");
68
+ const return_js_1 = require("./utility/return.cjs");
69
+ const utility_log_js_1 = require("./utility/utility-log.cjs");
70
+ const chat_js_1 = require("./triggers/chat.cjs");
71
+ const event_js_1 = require("./triggers/event.cjs");
72
+ const form_js_1 = require("./triggers/form.cjs");
73
+ const manual_js_1 = require("./triggers/manual.cjs");
74
+ const schedule_js_1 = require("./triggers/schedule.cjs");
75
+ const webhook_js_1 = require("./triggers/webhook.cjs");
76
+ const foreach_js_1 = require("./loops/foreach.cjs");
77
+ const until_js_1 = require("./loops/until.cjs");
78
+ const while_js_1 = require("./loops/while.cjs");
79
+ const input_value_js_1 = require("./boundary/input-value.cjs");
80
+ /**
81
+ * All built-in trigger node constructors.
82
+ */
83
+ exports.GRAPH_TRIGGER_NODES = [
84
+ manual_js_1.ManualTriggerNode,
85
+ webhook_js_1.WebhookTriggerNode,
86
+ schedule_js_1.ScheduleTriggerNode,
87
+ event_js_1.EventTriggerNode,
88
+ form_js_1.FormTriggerNode,
89
+ chat_js_1.ChatTriggerNode,
90
+ ];
91
+ /**
92
+ * All built-in flow-control node constructors.
93
+ */
94
+ exports.GRAPH_FLOW_CONTROL_NODES = [
95
+ if_js_1.IfFlowNode,
96
+ switch_js_1.SwitchFlowNode,
97
+ parallel_js_1.ParallelFlowNode,
98
+ merge_js_1.MergeFlowNode,
99
+ map_js_1.MapFlowNode,
100
+ delay_js_1.DelayFlowNode,
101
+ error_boundary_js_1.ErrorBoundaryFlowNode,
102
+ human_approval_js_1.HumanApprovalFlowNode,
103
+ return_js_1.ReturnFlowNode,
104
+ code_js_1.CodeFlowNode,
105
+ log_js_1.LogFlowNode,
106
+ utility_log_js_1.UtilityLogNode,
107
+ break_js_1.BreakFlowNode,
108
+ ];
109
+ /**
110
+ * All built-in loop node constructors (shared declarations of the
111
+ * `core.loop.*` system kinds).
112
+ */
113
+ exports.GRAPH_LOOP_NODES = [
114
+ foreach_js_1.GraphForeachLoopNode,
115
+ while_js_1.GraphWhileLoopNode,
116
+ until_js_1.GraphUntilLoopNode,
117
+ ];
118
+ /**
119
+ * All built-in boundary node constructors.
120
+ */
121
+ exports.GRAPH_BOUNDARY_NODES = [input_value_js_1.GraphInputValueNode];
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCwwQkFBdUI7QUFDdkIscUNBQWtDO0FBQ2xDLHdDQUFxQztBQUNyQyxpREFBOEM7QUFDOUMsaURBQThDO0FBQzlDLHFDQUFrQztBQUNsQywyQ0FBd0M7QUFDeEMseUNBQXNDO0FBQ3RDLGtDQUErQjtBQUMvQixtQ0FBZ0M7QUFDaEMsaUNBQThCO0FBQzlCLGlDQUE4QjtBQUM5QixtQ0FBZ0M7QUFDaEMsb0NBQWlDO0FBQ2pDLHlDQUFzQztBQUN0QyxtQ0FBZ0M7QUFDaEMsb0NBQWlDO0FBQ2pDLG1DQUFnQztBQUNoQyxxQ0FBa0M7QUFDbEMsdUNBQW9DO0FBQ3BDLHNDQUFtQztBQUNuQyxrQ0FBK0I7QUFDL0IsbUNBQWdDO0FBQ2hDLGlDQUE4QjtBQUM5QixpQ0FBOEI7QUFDOUIsMENBQXVDO0FBQ3ZDLCtCQUE0QjtBQUU1QixPQUFPLEVBQUUsYUFBYSxFQUFFLGdDQUE2QjtBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUseUNBQXNDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5Q0FBc0M7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSw2QkFBMEI7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1DQUFnQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGlDQUE4QjtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUF1QjtBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLDJCQUF3QjtBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLHlCQUFzQjtBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLHlCQUFzQjtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLDJCQUF3QjtBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLDRCQUF5QjtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGlDQUE4QjtBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLDJCQUF3QjtBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQXlCO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsMkJBQXdCO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSw2QkFBMEI7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLCtCQUE0QjtBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsOEJBQTJCO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSwyQkFBd0I7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUFzQjtBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXNCO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQ0FBK0I7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGVBQWU7Q0FDUCxDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxZQUFZO0lBQ1osV0FBVztJQUNYLGNBQWM7SUFDZCxhQUFhO0NBQ0wsQ0FBQztBQUVYOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsa0JBQWtCO0NBQ1YsQ0FBQztBQUVYOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXNcbiAqIEBzdW1tYXJ5IFNoYXJlZCBub2RlIGtpbmQgZGVjbGFyYXRpb25zIChERUNBRi0zMiDCpzIyLjIsIERFQ0FGLTUwIFBoYXNlIEEpLlxuICogQGRlc2NyaXB0aW9uIENhbm9uaWNhbCBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIGZvciB0aGUgQUxGUkVELTUgbm9kZSBraW5kXG4gKiB0YXhvbm9teSwgbGFpZCBvdXQgb25lIG5vZGUgcGVyIGZpbGUgdW5kZXIgYG5vZGVzLzxjYXRlZ29yeT4vPG5vZGU+LnRzYDpcbiAqIHRyaWdnZXJzICjCpzIyLjIuMSksIGZsb3ctY29udHJvbCBhbmQgdXRpbGl0eSBub2RlcyAowqcyMi4yLjLigJMyMi4yLjMpLCB0aGVcbiAqIEFnZW50IG5vZGUgKMKnMjEuMyksIHRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgLFxuICogwqc1LjkpLCBhbmQgdGhlIHdvcmtmbG93IGlucHV0LXZhbHVlIGJvdW5kYXJ5IG5vZGUuIFNoYXJlZCBub24tbm9kZSBzdXBwb3J0XG4gKiAoYmFzZSBjbGFzcywgY2F0ZWdvcnkgc3R5bGVzLCBtYW5pZmVzdHMpIGxpdmVzIGluIHNpYmxpbmcgZmlsZXMgdW5kZXIgdGhlXG4gKiBzYW1lIHRyZWUuIENvbnN1bWVycyAoZm9yLWFuZ3VsYXIsIEFMRlJFRCwgZXRjLikgaW1wb3J0IHRoZXNlIGRlY2xhcmF0aW9uc1xuICogdG8gcG9wdWxhdGUgbm9kZSBwYWxldHRlcywgcmVnaXN0cmllcywgYW5kIHJlZmVyZW5jZSBzbmFwc2hvdHMuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NhdGVnb3J5LXN0eWxlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmxvdy1jb250cm9sL2JyZWFrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2wvZXJyb3ItYm91bmRhcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zsb3ctY29udHJvbC9odW1hbi1hcHByb3ZhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmxvdy1jb250cm9sL2lmXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2wvcGFyYWxsZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zsb3ctY29udHJvbC9zd2l0Y2hcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxpdHkvY29kZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eS9kZWxheVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eS9sb2dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxpdHkvbWFwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5L21lcmdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5L3JldHVyblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eS91dGlsaXR5LWxvZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJpZ2dlcnMvY2hhdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJpZ2dlcnMvZXZlbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL2Zvcm1cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL21hbnVhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJpZ2dlcnMvc2NoZWR1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL3dlYmhvb2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FnZW50cy9hZ2VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9vcHMvZm9yZWFjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9vcHMvdW50aWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL3doaWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ib3VuZGFyeS9pbnB1dC12YWx1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuaWZlc3RzXCI7XG5cbmltcG9ydCB7IEJyZWFrRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvYnJlYWtcIjtcbmltcG9ydCB7IEVycm9yQm91bmRhcnlGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9lcnJvci1ib3VuZGFyeVwiO1xuaW1wb3J0IHsgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2h1bWFuLWFwcHJvdmFsXCI7XG5pbXBvcnQgeyBJZkZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2lmXCI7XG5pbXBvcnQgeyBQYXJhbGxlbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL3BhcmFsbGVsXCI7XG5pbXBvcnQgeyBTd2l0Y2hGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9zd2l0Y2hcIjtcbmltcG9ydCB7IENvZGVGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvY29kZVwiO1xuaW1wb3J0IHsgRGVsYXlGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvZGVsYXlcIjtcbmltcG9ydCB7IExvZ0Zsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9sb2dcIjtcbmltcG9ydCB7IE1hcEZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9tYXBcIjtcbmltcG9ydCB7IE1lcmdlRmxvd05vZGUgfSBmcm9tIFwiLi91dGlsaXR5L21lcmdlXCI7XG5pbXBvcnQgeyBSZXR1cm5GbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvcmV0dXJuXCI7XG5pbXBvcnQgeyBVdGlsaXR5TG9nTm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvdXRpbGl0eS1sb2dcIjtcbmltcG9ydCB7IENoYXRUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL2NoYXRcIjtcbmltcG9ydCB7IEV2ZW50VHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9ldmVudFwiO1xuaW1wb3J0IHsgRm9ybVRyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvZm9ybVwiO1xuaW1wb3J0IHsgTWFudWFsVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9tYW51YWxcIjtcbmltcG9ydCB7IFNjaGVkdWxlVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9zY2hlZHVsZVwiO1xuaW1wb3J0IHsgV2ViaG9va1RyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvd2ViaG9va1wiO1xuaW1wb3J0IHsgR3JhcGhGb3JlYWNoTG9vcE5vZGUgfSBmcm9tIFwiLi9sb29wcy9mb3JlYWNoXCI7XG5pbXBvcnQgeyBHcmFwaFVudGlsTG9vcE5vZGUgfSBmcm9tIFwiLi9sb29wcy91bnRpbFwiO1xuaW1wb3J0IHsgR3JhcGhXaGlsZUxvb3BOb2RlIH0gZnJvbSBcIi4vbG9vcHMvd2hpbGVcIjtcbmltcG9ydCB7IEdyYXBoSW5wdXRWYWx1ZU5vZGUgfSBmcm9tIFwiLi9ib3VuZGFyeS9pbnB1dC12YWx1ZVwiO1xuXG4vKipcbiAqIEFsbCBidWlsdC1pbiB0cmlnZ2VyIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfVFJJR0dFUl9OT0RFUyA9IFtcbiAgTWFudWFsVHJpZ2dlck5vZGUsXG4gIFdlYmhvb2tUcmlnZ2VyTm9kZSxcbiAgU2NoZWR1bGVUcmlnZ2VyTm9kZSxcbiAgRXZlbnRUcmlnZ2VyTm9kZSxcbiAgRm9ybVRyaWdnZXJOb2RlLFxuICBDaGF0VHJpZ2dlck5vZGUsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIEFsbCBidWlsdC1pbiBmbG93LWNvbnRyb2wgbm9kZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9GTE9XX0NPTlRST0xfTk9ERVMgPSBbXG4gIElmRmxvd05vZGUsXG4gIFN3aXRjaEZsb3dOb2RlLFxuICBQYXJhbGxlbEZsb3dOb2RlLFxuICBNZXJnZUZsb3dOb2RlLFxuICBNYXBGbG93Tm9kZSxcbiAgRGVsYXlGbG93Tm9kZSxcbiAgRXJyb3JCb3VuZGFyeUZsb3dOb2RlLFxuICBIdW1hbkFwcHJvdmFsRmxvd05vZGUsXG4gIFJldHVybkZsb3dOb2RlLFxuICBDb2RlRmxvd05vZGUsXG4gIExvZ0Zsb3dOb2RlLFxuICBVdGlsaXR5TG9nTm9kZSxcbiAgQnJlYWtGbG93Tm9kZSxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogQWxsIGJ1aWx0LWluIGxvb3Agbm9kZSBjb25zdHJ1Y3RvcnMgKHNoYXJlZCBkZWNsYXJhdGlvbnMgb2YgdGhlXG4gKiBgY29yZS5sb29wLipgIHN5c3RlbSBraW5kcykuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9MT09QX05PREVTID0gW1xuICBHcmFwaEZvcmVhY2hMb29wTm9kZSxcbiAgR3JhcGhXaGlsZUxvb3BOb2RlLFxuICBHcmFwaFVudGlsTG9vcE5vZGUsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIEFsbCBidWlsdC1pbiBib3VuZGFyeSBub2RlIGNvbnN0cnVjdG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdSQVBIX0JPVU5EQVJZX05PREVTID0gW0dyYXBoSW5wdXRWYWx1ZU5vZGVdIGFzIGNvbnN0O1xuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsNENBQTBCO0FBQzFCLHVEQUFxQztBQUNyQywwREFBd0M7QUFDeEMsbUVBQWlEO0FBQ2pELG1FQUFpRDtBQUNqRCx1REFBcUM7QUFDckMsNkRBQTJDO0FBQzNDLDJEQUF5QztBQUN6QyxvREFBa0M7QUFDbEMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMscURBQW1DO0FBQ25DLHNEQUFvQztBQUNwQywyREFBeUM7QUFDekMscURBQW1DO0FBQ25DLHNEQUFvQztBQUNwQyxxREFBbUM7QUFDbkMsdURBQXFDO0FBQ3JDLHlEQUF1QztBQUN2Qyx3REFBc0M7QUFDdEMsb0RBQWtDO0FBQ2xDLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsbURBQWlDO0FBQ2pDLDREQUEwQztBQUMxQyxpREFBK0I7QUFDL0Isc0RBQXdEO0FBQ3hELHdFQUF5RTtBQUN6RSx3RUFBeUU7QUFDekUsZ0RBQWtEO0FBQ2xELDREQUE4RDtBQUM5RCx3REFBMEQ7QUFDMUQsK0NBQWlEO0FBQ2pELGlEQUFtRDtBQUNuRCw2Q0FBK0M7QUFDL0MsNkNBQStDO0FBQy9DLGlEQUFtRDtBQUNuRCxtREFBcUQ7QUFDckQsNkRBQTBEO0FBQzFELGdEQUFxRDtBQUNyRCxrREFBdUQ7QUFDdkQsZ0RBQXFEO0FBQ3JELG9EQUF5RDtBQUN6RCx3REFBNkQ7QUFDN0Qsc0RBQTJEO0FBQzNELG1EQUEwRDtBQUMxRCwrQ0FBc0Q7QUFDdEQsK0NBQXNEO0FBQ3RELDhEQUFnRTtBQUNoRTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUc7SUFDL0IsNkJBQWlCO0lBQ2pCLCtCQUFrQjtJQUNsQixpQ0FBbUI7SUFDbkIsMkJBQWdCO0lBQ2hCLHlCQUFlO0lBQ2YseUJBQWU7Q0FDbEIsQ0FBQztBQUNGOztHQUVHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUNwQyxrQkFBVTtJQUNWLDBCQUFjO0lBQ2QsOEJBQWdCO0lBQ2hCLHdCQUFhO0lBQ2Isb0JBQVc7SUFDWCx3QkFBYTtJQUNiLHlDQUFxQjtJQUNyQix5Q0FBcUI7SUFDckIsMEJBQWM7SUFDZCxzQkFBWTtJQUNaLG9CQUFXO0lBQ1gsK0JBQWM7SUFDZCx3QkFBYTtDQUNoQixDQUFDO0FBQ0Y7OztHQUdHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRztJQUM1QixpQ0FBb0I7SUFDcEIsNkJBQWtCO0lBQ2xCLDZCQUFrQjtDQUNyQixDQUFDO0FBQ0Y7O0dBRUc7QUFDVSxRQUFBLG9CQUFvQixHQUFHLENBQUMsb0NBQW1CLENBQUMsQ0FBQztBQUMxRCw4b1BBQThvUCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzXG4gKiBAc3VtbWFyeSBTaGFyZWQgbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yLCBERUNBRi01MCBQaGFzZSBBKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIEFMRlJFRC01IG5vZGUga2luZFxuICogdGF4b25vbXksIGxhaWQgb3V0IG9uZSBub2RlIHBlciBmaWxlIHVuZGVyIGBub2Rlcy88Y2F0ZWdvcnk+Lzxub2RlPi50c2A6XG4gKiB0cmlnZ2VycyAowqcyMi4yLjEpLCBmbG93LWNvbnRyb2wgYW5kIHV0aWxpdHkgbm9kZXMgKMKnMjIuMi4y4oCTMjIuMi4zKSwgdGhlXG4gKiBBZ2VudCBub2RlICjCpzIxLjMpLCB0aGUgdGhyZWUgbG9vcCBraW5kcyAoYGNvcmUubG9vcC5mb3JlYWNoL3doaWxlL3VudGlsYCxcbiAqIMKnNS45KSwgYW5kIHRoZSB3b3JrZmxvdyBpbnB1dC12YWx1ZSBib3VuZGFyeSBub2RlLiBTaGFyZWQgbm9uLW5vZGUgc3VwcG9ydFxuICogKGJhc2UgY2xhc3MsIGNhdGVnb3J5IHN0eWxlcywgbWFuaWZlc3RzKSBsaXZlcyBpbiBzaWJsaW5nIGZpbGVzIHVuZGVyIHRoZVxuICogc2FtZSB0cmVlLiBDb25zdW1lcnMgKGZvci1hbmd1bGFyLCBBTEZSRUQsIGV0Yy4pIGltcG9ydCB0aGVzZSBkZWNsYXJhdGlvbnNcbiAqIHRvIHBvcHVsYXRlIG5vZGUgcGFsZXR0ZXMsIHJlZ2lzdHJpZXMsIGFuZCByZWZlcmVuY2Ugc25hcHNob3RzLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9iYXNlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYXRlZ29yeS1zdHlsZXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zsb3ctY29udHJvbC9icmVhay5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmxvdy1jb250cm9sL2Vycm9yLWJvdW5kYXJ5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2wvaHVtYW4tYXBwcm92YWwuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zsb3ctY29udHJvbC9pZi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmxvdy1jb250cm9sL3BhcmFsbGVsLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2wvc3dpdGNoLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5L2NvZGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxpdHkvZGVsYXkuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxpdHkvbG9nLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5L21hcC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eS9tZXJnZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eS9yZXR1cm4uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxpdHkvdXRpbGl0eS1sb2cuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL2NoYXQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL2V2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmlnZ2Vycy9mb3JtLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmlnZ2Vycy9tYW51YWwuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzL3NjaGVkdWxlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmlnZ2Vycy93ZWJob29rLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hZ2VudHMvYWdlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL2ZvcmVhY2guanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb3BzL3VudGlsLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb29wcy93aGlsZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYm91bmRhcnkvaW5wdXQtdmFsdWUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hbmlmZXN0cy5qc1wiO1xuaW1wb3J0IHsgQnJlYWtGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9icmVhay5qc1wiO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeUZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2Vycm9yLWJvdW5kYXJ5LmpzXCI7XG5pbXBvcnQgeyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvaHVtYW4tYXBwcm92YWwuanNcIjtcbmltcG9ydCB7IElmRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvaWYuanNcIjtcbmltcG9ydCB7IFBhcmFsbGVsRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvcGFyYWxsZWwuanNcIjtcbmltcG9ydCB7IFN3aXRjaEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL3N3aXRjaC5qc1wiO1xuaW1wb3J0IHsgQ29kZUZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9jb2RlLmpzXCI7XG5pbXBvcnQgeyBEZWxheUZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9kZWxheS5qc1wiO1xuaW1wb3J0IHsgTG9nRmxvd05vZGUgfSBmcm9tIFwiLi91dGlsaXR5L2xvZy5qc1wiO1xuaW1wb3J0IHsgTWFwRmxvd05vZGUgfSBmcm9tIFwiLi91dGlsaXR5L21hcC5qc1wiO1xuaW1wb3J0IHsgTWVyZ2VGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvbWVyZ2UuanNcIjtcbmltcG9ydCB7IFJldHVybkZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9yZXR1cm4uanNcIjtcbmltcG9ydCB7IFV0aWxpdHlMb2dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS91dGlsaXR5LWxvZy5qc1wiO1xuaW1wb3J0IHsgQ2hhdFRyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvY2hhdC5qc1wiO1xuaW1wb3J0IHsgRXZlbnRUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL2V2ZW50LmpzXCI7XG5pbXBvcnQgeyBGb3JtVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9mb3JtLmpzXCI7XG5pbXBvcnQgeyBNYW51YWxUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL21hbnVhbC5qc1wiO1xuaW1wb3J0IHsgU2NoZWR1bGVUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL3NjaGVkdWxlLmpzXCI7XG5pbXBvcnQgeyBXZWJob29rVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy93ZWJob29rLmpzXCI7XG5pbXBvcnQgeyBHcmFwaEZvcmVhY2hMb29wTm9kZSB9IGZyb20gXCIuL2xvb3BzL2ZvcmVhY2guanNcIjtcbmltcG9ydCB7IEdyYXBoVW50aWxMb29wTm9kZSB9IGZyb20gXCIuL2xvb3BzL3VudGlsLmpzXCI7XG5pbXBvcnQgeyBHcmFwaFdoaWxlTG9vcE5vZGUgfSBmcm9tIFwiLi9sb29wcy93aGlsZS5qc1wiO1xuaW1wb3J0IHsgR3JhcGhJbnB1dFZhbHVlTm9kZSB9IGZyb20gXCIuL2JvdW5kYXJ5L2lucHV0LXZhbHVlLmpzXCI7XG4vKipcbiAqIEFsbCBidWlsdC1pbiB0cmlnZ2VyIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfVFJJR0dFUl9OT0RFUyA9IFtcbiAgICBNYW51YWxUcmlnZ2VyTm9kZSxcbiAgICBXZWJob29rVHJpZ2dlck5vZGUsXG4gICAgU2NoZWR1bGVUcmlnZ2VyTm9kZSxcbiAgICBFdmVudFRyaWdnZXJOb2RlLFxuICAgIEZvcm1UcmlnZ2VyTm9kZSxcbiAgICBDaGF0VHJpZ2dlck5vZGUsXG5dO1xuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICAgIElmRmxvd05vZGUsXG4gICAgU3dpdGNoRmxvd05vZGUsXG4gICAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgICBNZXJnZUZsb3dOb2RlLFxuICAgIE1hcEZsb3dOb2RlLFxuICAgIERlbGF5Rmxvd05vZGUsXG4gICAgRXJyb3JCb3VuZGFyeUZsb3dOb2RlLFxuICAgIEh1bWFuQXBwcm92YWxGbG93Tm9kZSxcbiAgICBSZXR1cm5GbG93Tm9kZSxcbiAgICBDb2RlRmxvd05vZGUsXG4gICAgTG9nRmxvd05vZGUsXG4gICAgVXRpbGl0eUxvZ05vZGUsXG4gICAgQnJlYWtGbG93Tm9kZSxcbl07XG4vKipcbiAqIEFsbCBidWlsdC1pbiBsb29wIG5vZGUgY29uc3RydWN0b3JzIChzaGFyZWQgZGVjbGFyYXRpb25zIG9mIHRoZVxuICogYGNvcmUubG9vcC4qYCBzeXN0ZW0ga2luZHMpLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfTE9PUF9OT0RFUyA9IFtcbiAgICBHcmFwaEZvcmVhY2hMb29wTm9kZSxcbiAgICBHcmFwaFdoaWxlTG9vcE5vZGUsXG4gICAgR3JhcGhVbnRpbExvb3BOb2RlLFxuXTtcbi8qKlxuICogQWxsIGJ1aWx0LWluIGJvdW5kYXJ5IG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfQk9VTkRBUllfTk9ERVMgPSBbR3JhcGhJbnB1dFZhbHVlTm9kZV07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndmJtOWtaWE12YVc1a1pYZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN096czdPenM3T3pzN08wZEJWMGM3UVVGRFNDd3dRa0ZCZFVJN1FVRkRka0lzY1VOQlFXdERPMEZCUTJ4RExIZERRVUZ4UXp0QlFVTnlReXhwUkVGQk9FTTdRVUZET1VNc2FVUkJRVGhETzBGQlF6bERMSEZEUVVGclF6dEJRVU5zUXl3eVEwRkJkME03UVVGRGVFTXNlVU5CUVhORE8wRkJRM1JETEd0RFFVRXJRanRCUVVNdlFpeHRRMEZCWjBNN1FVRkRhRU1zYVVOQlFUaENPMEZCUXpsQ0xHbERRVUU0UWp0QlFVTTVRaXh0UTBGQlowTTdRVUZEYUVNc2IwTkJRV2xETzBGQlEycERMSGxEUVVGelF6dEJRVU4wUXl4dFEwRkJaME03UVVGRGFFTXNiME5CUVdsRE8wRkJRMnBETEcxRFFVRm5RenRCUVVOb1F5eHhRMEZCYTBNN1FVRkRiRU1zZFVOQlFXOURPMEZCUTNCRExITkRRVUZ0UXp0QlFVTnVReXhyUTBGQkswSTdRVUZETDBJc2JVTkJRV2RETzBGQlEyaERMR2xEUVVFNFFqdEJRVU01UWl4cFEwRkJPRUk3UVVGRE9VSXNNRU5CUVhWRE8wRkJRM1pETEN0Q1FVRTBRanRCUVVVMVFpeFBRVUZQTEVWQlFVVXNZVUZCWVN4RlFVRkZMR2REUVVFMlFqdEJRVU55UkN4UFFVRlBMRVZCUVVVc2NVSkJRWEZDTEVWQlFVVXNlVU5CUVhORE8wRkJRM1JGTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeDVRMEZCYzBNN1FVRkRkRVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUlN3MlFrRkJNRUk3UVVGREwwTXNUMEZCVHl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEcxRFFVRm5RenRCUVVNelJDeFBRVUZQTEVWQlFVVXNZMEZCWXl4RlFVRkZMR2xEUVVFNFFqdEJRVU4yUkN4UFFVRlBMRVZCUVVVc1dVRkJXU3hGUVVGRkxEQkNRVUYxUWp0QlFVTTVReXhQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTERKQ1FVRjNRanRCUVVOb1JDeFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZMSGxDUVVGelFqdEJRVU0xUXl4UFFVRlBMRVZCUVVVc1YwRkJWeXhGUVVGRkxIbENRVUZ6UWp0QlFVTTFReXhQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTERKQ1FVRjNRanRCUVVOb1JDeFBRVUZQTEVWQlFVVXNZMEZCWXl4RlFVRkZMRFJDUVVGNVFqdEJRVU5zUkN4UFFVRlBMRVZCUVVVc1kwRkJZeXhGUVVGRkxHbERRVUU0UWp0QlFVTjJSQ3hQUVVGUExFVkJRVVVzWlVGQlpTeEZRVUZGTERKQ1FVRjNRanRCUVVOc1JDeFBRVUZQTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzTkVKQlFYbENPMEZCUTNCRUxFOUJRVThzUlVGQlJTeGxRVUZsTEVWQlFVVXNNa0pCUVhkQ08wRkJRMnhFTEU5QlFVOHNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTdzJRa0ZCTUVJN1FVRkRkRVFzVDBGQlR5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxDdENRVUUwUWp0QlFVTXhSQ3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc09FSkJRVEpDTzBGQlEzaEVMRTlCUVU4c1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN3eVFrRkJkMEk3UVVGRGRrUXNUMEZCVHl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEhsQ1FVRnpRanRCUVVOdVJDeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzZVVKQlFYTkNPMEZCUTI1RUxFOUJRVThzUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3hyUTBGQkswSTdRVUZGTjBRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEVOQlFVTXNUVUZCVFN4dFFrRkJiVUlzUjBGQlJ6dEpRVU5xUXl4cFFrRkJhVUk3U1VGRGFrSXNhMEpCUVd0Q08wbEJRMnhDTEcxQ1FVRnRRanRKUVVOdVFpeG5Ra0ZCWjBJN1NVRkRhRUlzWlVGQlpUdEpRVU5tTEdWQlFXVTdRMEZEVUN4RFFVRkRPMEZCUlZnN08wZEJSVWM3UVVGRFNDeE5RVUZOTEVOQlFVTXNUVUZCVFN4M1FrRkJkMElzUjBGQlJ6dEpRVU4wUXl4VlFVRlZPMGxCUTFZc1kwRkJZenRKUVVOa0xHZENRVUZuUWp0SlFVTm9RaXhoUVVGaE8wbEJRMklzVjBGQlZ6dEpRVU5ZTEdGQlFXRTdTVUZEWWl4eFFrRkJjVUk3U1VGRGNrSXNjVUpCUVhGQ08wbEJRM0pDTEdOQlFXTTdTVUZEWkN4WlFVRlpPMGxCUTFvc1YwRkJWenRKUVVOWUxHTkJRV003U1VGRFpDeGhRVUZoTzBOQlEwd3NRMEZCUXp0QlFVVllPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNRMEZCUXl4TlFVRk5MR2RDUVVGblFpeEhRVUZITzBsQlF6bENMRzlDUVVGdlFqdEpRVU53UWl4clFrRkJhMEk3U1VGRGJFSXNhMEpCUVd0Q08wTkJRMVlzUTBGQlF6dEJRVVZZT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hEUVVGRExFMUJRVTBzYjBKQlFXOUNMRWRCUVVjc1EwRkJReXh0UWtGQmJVSXNRMEZCVlN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJBYlc5a2RXeGxJSFZwTFdSbFkyOXlZWFJ2Y25NdlozSmhjR2d2Ym05a1pYTmNiaUFxSUVCemRXMXRZWEo1SUZOb1lYSmxaQ0J1YjJSbElHdHBibVFnWkdWamJHRnlZWFJwYjI1eklDaEVSVU5CUmkwek1pRENwekl5TGpJc0lFUkZRMEZHTFRVd0lGQm9ZWE5sSUVFcExseHVJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTmhibTl1YVdOaGJDQmdRRzV2WkdWZ0xXUmxZMjl5WVhSbFpDQmpiR0Z6YzJWeklHWnZjaUIwYUdVZ1FVeEdVa1ZFTFRVZ2JtOWtaU0JyYVc1a1hHNGdLaUIwWVhodmJtOXRlU3dnYkdGcFpDQnZkWFFnYjI1bElHNXZaR1VnY0dWeUlHWnBiR1VnZFc1a1pYSWdZRzV2WkdWekx6eGpZWFJsWjI5eWVUNHZQRzV2WkdVK0xuUnpZRHBjYmlBcUlIUnlhV2RuWlhKeklDakNwekl5TGpJdU1Ta3NJR1pzYjNjdFkyOXVkSEp2YkNCaGJtUWdkWFJwYkdsMGVTQnViMlJsY3lBb3dxY3lNaTR5TGpMaWdKTXlNaTR5TGpNcExDQjBhR1ZjYmlBcUlFRm5aVzUwSUc1dlpHVWdLTUtuTWpFdU15a3NJSFJvWlNCMGFISmxaU0JzYjI5d0lHdHBibVJ6SUNoZ1kyOXlaUzVzYjI5d0xtWnZjbVZoWTJndmQyaHBiR1V2ZFc1MGFXeGdMRnh1SUNvZ3dxYzFMamtwTENCaGJtUWdkR2hsSUhkdmNtdG1iRzkzSUdsdWNIVjBMWFpoYkhWbElHSnZkVzVrWVhKNUlHNXZaR1V1SUZOb1lYSmxaQ0J1YjI0dGJtOWtaU0J6ZFhCd2IzSjBYRzRnS2lBb1ltRnpaU0JqYkdGemN5d2dZMkYwWldkdmNua2djM1I1YkdWekxDQnRZVzVwWm1WemRITXBJR3hwZG1WeklHbHVJSE5wWW14cGJtY2dabWxzWlhNZ2RXNWtaWElnZEdobFhHNGdLaUJ6WVcxbElIUnlaV1V1SUVOdmJuTjFiV1Z5Y3lBb1ptOXlMV0Z1WjNWc1lYSXNJRUZNUmxKRlJDd2daWFJqTGlrZ2FXMXdiM0owSUhSb1pYTmxJR1JsWTJ4aGNtRjBhVzl1YzF4dUlDb2dkRzhnY0c5d2RXeGhkR1VnYm05a1pTQndZV3hsZEhSbGN5d2djbVZuYVhOMGNtbGxjeXdnWVc1a0lISmxabVZ5Wlc1alpTQnpibUZ3YzJodmRITXVYRzRnS2k5Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwySmhjMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyTmhkR1ZuYjNKNUxYTjBlV3hsYzF3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZabXh2ZHkxamIyNTBjbTlzTDJKeVpXRnJYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5bWJHOTNMV052Ym5SeWIyd3ZaWEp5YjNJdFltOTFibVJoY25sY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMlpzYjNjdFkyOXVkSEp2YkM5b2RXMWhiaTFoY0hCeWIzWmhiRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlpteHZkeTFqYjI1MGNtOXNMMmxtWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOW1iRzkzTFdOdmJuUnliMnd2Y0dGeVlXeHNaV3hjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyWnNiM2N0WTI5dWRISnZiQzl6ZDJsMFkyaGNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDNWMGFXeHBkSGt2WTI5a1pWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZFhScGJHbDBlUzlrWld4aGVWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZFhScGJHbDBlUzlzYjJkY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMM1YwYVd4cGRIa3ZiV0Z3WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOTFkR2xzYVhSNUwyMWxjbWRsWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOTFkR2xzYVhSNUwzSmxkSFZ5Ymx3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZkWFJwYkdsMGVTOTFkR2xzYVhSNUxXeHZaMXdpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmRISnBaMmRsY25NdlkyaGhkRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmRISnBaMmRsY25NdlpYWmxiblJjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzUnlhV2RuWlhKekwyWnZjbTFjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzUnlhV2RuWlhKekwyMWhiblZoYkZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZkSEpwWjJkbGNuTXZjMk5vWldSMWJHVmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDNSeWFXZG5aWEp6TDNkbFltaHZiMnRjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyRm5aVzUwY3k5aFoyVnVkRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmJHOXZjSE12Wm05eVpXRmphRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmJHOXZjSE12ZFc1MGFXeGNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDJ4dmIzQnpMM2RvYVd4bFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlpYjNWdVpHRnllUzlwYm5CMWRDMTJZV3gxWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZiV0Z1YVdabGMzUnpYQ0k3WEc1Y2JtbHRjRzl5ZENCN0lFSnlaV0ZyUm14dmQwNXZaR1VnZlNCbWNtOXRJRndpTGk5bWJHOTNMV052Ym5SeWIyd3ZZbkpsWVd0Y0lqdGNibWx0Y0c5eWRDQjdJRVZ5Y205eVFtOTFibVJoY25sR2JHOTNUbTlrWlNCOUlHWnliMjBnWENJdUwyWnNiM2N0WTI5dWRISnZiQzlsY25KdmNpMWliM1Z1WkdGeWVWd2lPMXh1YVcxd2IzSjBJSHNnU0hWdFlXNUJjSEJ5YjNaaGJFWnNiM2RPYjJSbElIMGdabkp2YlNCY0lpNHZabXh2ZHkxamIyNTBjbTlzTDJoMWJXRnVMV0Z3Y0hKdmRtRnNYQ0k3WEc1cGJYQnZjblFnZXlCSlprWnNiM2RPYjJSbElIMGdabkp2YlNCY0lpNHZabXh2ZHkxamIyNTBjbTlzTDJsbVhDSTdYRzVwYlhCdmNuUWdleUJRWVhKaGJHeGxiRVpzYjNkT2IyUmxJSDBnWm5KdmJTQmNJaTR2Wm14dmR5MWpiMjUwY205c0wzQmhjbUZzYkdWc1hDSTdYRzVwYlhCdmNuUWdleUJUZDJsMFkyaEdiRzkzVG05a1pTQjlJR1p5YjIwZ1hDSXVMMlpzYjNjdFkyOXVkSEp2YkM5emQybDBZMmhjSWp0Y2JtbHRjRzl5ZENCN0lFTnZaR1ZHYkc5M1RtOWtaU0I5SUdaeWIyMGdYQ0l1TDNWMGFXeHBkSGt2WTI5a1pWd2lPMXh1YVcxd2IzSjBJSHNnUkdWc1lYbEdiRzkzVG05a1pTQjlJR1p5YjIwZ1hDSXVMM1YwYVd4cGRIa3ZaR1ZzWVhsY0lqdGNibWx0Y0c5eWRDQjdJRXh2WjBac2IzZE9iMlJsSUgwZ1puSnZiU0JjSWk0dmRYUnBiR2wwZVM5c2IyZGNJanRjYm1sdGNHOXlkQ0I3SUUxaGNFWnNiM2RPYjJSbElIMGdabkp2YlNCY0lpNHZkWFJwYkdsMGVTOXRZWEJjSWp0Y2JtbHRjRzl5ZENCN0lFMWxjbWRsUm14dmQwNXZaR1VnZlNCbWNtOXRJRndpTGk5MWRHbHNhWFI1TDIxbGNtZGxYQ0k3WEc1cGJYQnZjblFnZXlCU1pYUjFjbTVHYkc5M1RtOWtaU0I5SUdaeWIyMGdYQ0l1TDNWMGFXeHBkSGt2Y21WMGRYSnVYQ0k3WEc1cGJYQnZjblFnZXlCVmRHbHNhWFI1VEc5blRtOWtaU0I5SUdaeWIyMGdYQ0l1TDNWMGFXeHBkSGt2ZFhScGJHbDBlUzFzYjJkY0lqdGNibWx0Y0c5eWRDQjdJRU5vWVhSVWNtbG5aMlZ5VG05a1pTQjlJR1p5YjIwZ1hDSXVMM1J5YVdkblpYSnpMMk5vWVhSY0lqdGNibWx0Y0c5eWRDQjdJRVYyWlc1MFZISnBaMmRsY2s1dlpHVWdmU0JtY205dElGd2lMaTkwY21sbloyVnljeTlsZG1WdWRGd2lPMXh1YVcxd2IzSjBJSHNnUm05eWJWUnlhV2RuWlhKT2IyUmxJSDBnWm5KdmJTQmNJaTR2ZEhKcFoyZGxjbk12Wm05eWJWd2lPMXh1YVcxd2IzSjBJSHNnVFdGdWRXRnNWSEpwWjJkbGNrNXZaR1VnZlNCbWNtOXRJRndpTGk5MGNtbG5aMlZ5Y3k5dFlXNTFZV3hjSWp0Y2JtbHRjRzl5ZENCN0lGTmphR1ZrZFd4bFZISnBaMmRsY2s1dlpHVWdmU0JtY205dElGd2lMaTkwY21sbloyVnljeTl6WTJobFpIVnNaVndpTzF4dWFXMXdiM0owSUhzZ1YyVmlhRzl2YTFSeWFXZG5aWEpPYjJSbElIMGdabkp2YlNCY0lpNHZkSEpwWjJkbGNuTXZkMlZpYUc5dmExd2lPMXh1YVcxd2IzSjBJSHNnUjNKaGNHaEdiM0psWVdOb1RHOXZjRTV2WkdVZ2ZTQm1jbTl0SUZ3aUxpOXNiMjl3Y3k5bWIzSmxZV05vWENJN1hHNXBiWEJ2Y25RZ2V5QkhjbUZ3YUZWdWRHbHNURzl2Y0U1dlpHVWdmU0JtY205dElGd2lMaTlzYjI5d2N5OTFiblJwYkZ3aU8xeHVhVzF3YjNKMElIc2dSM0poY0doWGFHbHNaVXh2YjNCT2IyUmxJSDBnWm5KdmJTQmNJaTR2Ykc5dmNITXZkMmhwYkdWY0lqdGNibWx0Y0c5eWRDQjdJRWR5WVhCb1NXNXdkWFJXWVd4MVpVNXZaR1VnZlNCbWNtOXRJRndpTGk5aWIzVnVaR0Z5ZVM5cGJuQjFkQzEyWVd4MVpWd2lPMXh1WEc0dktpcGNiaUFxSUVGc2JDQmlkV2xzZEMxcGJpQjBjbWxuWjJWeUlHNXZaR1VnWTI5dWMzUnlkV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnWTI5dWMzUWdSMUpCVUVoZlZGSkpSMGRGVWw5T1QwUkZVeUE5SUZ0Y2JpQWdUV0Z1ZFdGc1ZISnBaMmRsY2s1dlpHVXNYRzRnSUZkbFltaHZiMnRVY21sbloyVnlUbTlrWlN4Y2JpQWdVMk5vWldSMWJHVlVjbWxuWjJWeVRtOWtaU3hjYmlBZ1JYWmxiblJVY21sbloyVnlUbTlrWlN4Y2JpQWdSbTl5YlZSeWFXZG5aWEpPYjJSbExGeHVJQ0JEYUdGMFZISnBaMmRsY2s1dlpHVXNYRzVkSUdGeklHTnZibk4wTzF4dVhHNHZLaXBjYmlBcUlFRnNiQ0JpZFdsc2RDMXBiaUJtYkc5M0xXTnZiblJ5YjJ3Z2JtOWtaU0JqYjI1emRISjFZM1J2Y25NdVhHNGdLaTljYm1WNGNHOXlkQ0JqYjI1emRDQkhVa0ZRU0Y5R1RFOVhYME5QVGxSU1QweGZUazlFUlZNZ1BTQmJYRzRnSUVsbVJteHZkMDV2WkdVc1hHNGdJRk4zYVhSamFFWnNiM2RPYjJSbExGeHVJQ0JRWVhKaGJHeGxiRVpzYjNkT2IyUmxMRnh1SUNCTlpYSm5aVVpzYjNkT2IyUmxMRnh1SUNCTllYQkdiRzkzVG05a1pTeGNiaUFnUkdWc1lYbEdiRzkzVG05a1pTeGNiaUFnUlhKeWIzSkNiM1Z1WkdGeWVVWnNiM2RPYjJSbExGeHVJQ0JJZFcxaGJrRndjSEp2ZG1Gc1JteHZkMDV2WkdVc1hHNGdJRkpsZEhWeWJrWnNiM2RPYjJSbExGeHVJQ0JEYjJSbFJteHZkMDV2WkdVc1hHNGdJRXh2WjBac2IzZE9iMlJsTEZ4dUlDQlZkR2xzYVhSNVRHOW5UbTlrWlN4Y2JpQWdRbkpsWVd0R2JHOTNUbTlrWlN4Y2JsMGdZWE1nWTI5dWMzUTdYRzVjYmk4cUtseHVJQ29nUVd4c0lHSjFhV3gwTFdsdUlHeHZiM0FnYm05a1pTQmpiMjV6ZEhKMVkzUnZjbk1nS0hOb1lYSmxaQ0JrWldOc1lYSmhkR2x2Ym5NZ2IyWWdkR2hsWEc0Z0tpQmdZMjl5WlM1c2IyOXdMaXBnSUhONWMzUmxiU0JyYVc1a2N5a3VYRzRnS2k5Y2JtVjRjRzl5ZENCamIyNXpkQ0JIVWtGUVNGOU1UMDlRWDA1UFJFVlRJRDBnVzF4dUlDQkhjbUZ3YUVadmNtVmhZMmhNYjI5d1RtOWtaU3hjYmlBZ1IzSmhjR2hYYUdsc1pVeHZiM0JPYjJSbExGeHVJQ0JIY21Gd2FGVnVkR2xzVEc5dmNFNXZaR1VzWEc1ZElHRnpJR052Ym5OME8xeHVYRzR2S2lwY2JpQXFJRUZzYkNCaWRXbHNkQzFwYmlCaWIzVnVaR0Z5ZVNCdWIyUmxJR052Ym5OMGNuVmpkRzl5Y3k1Y2JpQXFMMXh1Wlhod2IzSjBJR052Ym5OMElFZFNRVkJJWDBKUFZVNUVRVkpaWDA1UFJFVlRJRDBnVzBkeVlYQm9TVzV3ZFhSV1lXeDFaVTV2WkdWZElHRnpJR052Ym5OME8xeHVJbDE5Il19
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphForeachLoopNode = void 0;
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7
+ r = Reflect.decorate(decorators, target, key, desc);
8
+ else
9
+ for (var i = decorators.length - 1; i >= 0; i--)
10
+ if (d = decorators[i])
11
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
16
+ return Reflect.metadata(k, v);
17
+ };
18
+ /**
19
+ * @module ui-decorators/graph/nodes/loops/foreach
20
+ * @summary Foreach loop node declaration.
21
+ * @description Shared declaration for the `core.loop.foreach` system node
22
+ * kind (decorator id `graph-foreach-loop-node`), ported from the for-angular
23
+ * demo app so the loop kinds become shared canvas nodes. Its executor is
24
+ * built into the integrations engine (`ForeachGraphNodeExecutor`). The
25
+ * loop-body workflow is demo/app-side content and is not part of the shared
26
+ * declaration — the shared class carries the port/metadata shape only.
27
+ */
28
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
29
+ const decorators_js_1 = require("./../../../ui/decorators.cjs");
30
+ const decorators_js_2 = require("./../../decorators.cjs");
31
+ // Ensure category styles are registered (idempotent).
32
+ require("./../category-styles.cjs");
33
+ let GraphForeachLoopNode = class GraphForeachLoopNode extends decorator_validation_1.Model {
34
+ };
35
+ exports.GraphForeachLoopNode = GraphForeachLoopNode;
36
+ __decorate([
37
+ (0, decorator_validation_1.required)(),
38
+ (0, decorators_js_1.uielement)('textarea', { label: 'Items', placeholder: 'Array to iterate over' }),
39
+ (0, decorators_js_2.input)({ handle: 'items' }),
40
+ __metadata("design:type", Array)
41
+ ], GraphForeachLoopNode.prototype, "items", void 0);
42
+ __decorate([
43
+ (0, decorator_validation_1.required)(),
44
+ (0, decorators_js_1.uielement)('input', { label: 'Slice size', placeholder: 'Items per iteration (default 1)' }),
45
+ (0, decorators_js_2.input)({ handle: 'slice' }),
46
+ __metadata("design:type", Number)
47
+ ], GraphForeachLoopNode.prototype, "slice", void 0);
48
+ __decorate([
49
+ (0, decorator_validation_1.required)(),
50
+ (0, decorators_js_2.output)({ handle: 'item' }),
51
+ __metadata("design:type", Object)
52
+ ], GraphForeachLoopNode.prototype, "item", void 0);
53
+ __decorate([
54
+ (0, decorator_validation_1.required)(),
55
+ (0, decorators_js_2.connection)({ handle: 'loop', connectionRules: { allowSelf: true, maxConnections: 1 } }),
56
+ __metadata("design:type", Object)
57
+ ], GraphForeachLoopNode.prototype, "loop", void 0);
58
+ __decorate([
59
+ (0, decorator_validation_1.required)(),
60
+ (0, decorators_js_2.output)({ handle: 'completed' }),
61
+ __metadata("design:type", Array)
62
+ ], GraphForeachLoopNode.prototype, "completed", void 0);
63
+ exports.GraphForeachLoopNode = GraphForeachLoopNode = __decorate([
64
+ (0, decorators_js_2.node)('graph-foreach-loop-node', {
65
+ kind: 'core.loop.foreach',
66
+ category: 'Loop',
67
+ color: '#eab308',
68
+ icon: 'ti-repeat',
69
+ width: 120,
70
+ height: 140,
71
+ labels: ['loop', 'iteration', 'foreach'],
72
+ metadata: {
73
+ title: 'Foreach loop',
74
+ description: 'Iterates over an array input and executes the body once per item (or per slice of items).',
75
+ loop: {
76
+ maxIterations: 100,
77
+ itemPort: 'item',
78
+ resultPort: 'result',
79
+ slice: 1,
80
+ },
81
+ },
82
+ }),
83
+ (0, decorator_validation_1.model)()
84
+ ], GraphForeachLoopNode);
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9ub2Rlcy9sb29wcy9mb3JlYWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0NBQStCO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQXlCO0FBRW5FLHNEQUFzRDtBQUN0RCxpQ0FBNEI7QUFzQnJCLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQXFCLFNBQVEsS0FBSztDQXNCOUMsQ0FBQTtBQWxCQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDO0lBQy9FLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7bURBQ1Q7QUFLbEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQztJQUMzRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O21EQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7O2tEQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7O2tEQUN6RTtBQUlmO0lBRkMsUUFBUSxFQUFFO0lBQ1YsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDOzt1REFDVjtBQXJCWCxvQkFBb0I7SUFwQmhDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtRQUMvQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsTUFBTSxFQUFFLEdBQUc7UUFDWCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsMkZBQTJGO1lBQ3hHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsR0FBRztnQkFDbEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssb0JBQW9CLENBc0JoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL2ZvcmVhY2hcbiAqIEBzdW1tYXJ5IEZvcmVhY2ggbG9vcCBub2RlIGRlY2xhcmF0aW9uLlxuICogQGRlc2NyaXB0aW9uIFNoYXJlZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGBjb3JlLmxvb3AuZm9yZWFjaGAgc3lzdGVtIG5vZGVcbiAqIGtpbmQgKGRlY29yYXRvciBpZCBgZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyXG4gKiBkZW1vIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzXG4gKiBidWlsdCBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yYCkuIFRoZVxuICogbG9vcC1ib2R5IHdvcmtmbG93IGlzIGRlbW8vYXBwLXNpZGUgY29udGVudCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIHNoYXJlZFxuICogZGVjbGFyYXRpb24g4oCUIHRoZSBzaGFyZWQgY2xhc3MgY2FycmllcyB0aGUgcG9ydC9tZXRhZGF0YSBzaGFwZSBvbmx5LlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL3VpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IGNvbm5lY3Rpb24sIGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yc1wiO1xuXG4vLyBFbnN1cmUgY2F0ZWdvcnkgc3R5bGVzIGFyZSByZWdpc3RlcmVkIChpZGVtcG90ZW50KS5cbmltcG9ydCBcIi4uL2NhdGVnb3J5LXN0eWxlc1wiO1xuXG5Abm9kZSgnZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AuZm9yZWFjaCcsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnI2VhYjMwOCcsXG4gIGljb246ICd0aS1yZXBlYXQnLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnaXRlcmF0aW9uJywgJ2ZvcmVhY2gnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ0ZvcmVhY2ggbG9vcCcsXG4gICAgZGVzY3JpcHRpb246ICdJdGVyYXRlcyBvdmVyIGFuIGFycmF5IGlucHV0IGFuZCBleGVjdXRlcyB0aGUgYm9keSBvbmNlIHBlciBpdGVtIChvciBwZXIgc2xpY2Ugb2YgaXRlbXMpLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgaXRlbVBvcnQ6ICdpdGVtJyxcbiAgICAgIHJlc3VsdFBvcnQ6ICdyZXN1bHQnLFxuICAgICAgc2xpY2U6IDEsXG4gICAgfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEdyYXBoRm9yZWFjaExvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCd0ZXh0YXJlYScsIHsgbGFiZWw6ICdJdGVtcycsIHBsYWNlaG9sZGVyOiAnQXJyYXkgdG8gaXRlcmF0ZSBvdmVyJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdpdGVtcycgfSlcbiAgaXRlbXMhOiB1bmtub3duW107XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudCgnaW5wdXQnLCB7IGxhYmVsOiAnU2xpY2Ugc2l6ZScsIHBsYWNlaG9sZGVyOiAnSXRlbXMgcGVyIGl0ZXJhdGlvbiAoZGVmYXVsdCAxKScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc2xpY2UnIH0pXG4gIHNsaWNlITogbnVtYmVyO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdpdGVtJyB9KVxuICBpdGVtITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAY29ubmVjdGlvbih7IGhhbmRsZTogJ2xvb3AnLCBjb25uZWN0aW9uUnVsZXM6IHsgYWxsb3dTZWxmOiB0cnVlLCBtYXhDb25uZWN0aW9uczogMSB9IH0pXG4gIGxvb3AhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdjb21wbGV0ZWQnIH0pXG4gIGNvbXBsZXRlZCE6IHVua25vd25bXTtcbn1cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZvcmVhY2guanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEosT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUNGLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RyxDQUFDLENBQUM7QUFDRjs7Ozs7Ozs7O0dBU0c7QUFDSCx5RUFBd0U7QUFDeEUsK0RBQXdEO0FBQ3hELHlEQUF3RTtBQUN4RSxzREFBc0Q7QUFDdEQsbUNBQWlDO0FBQ2pDLElBQUksb0JBQW9CLEdBQUcsTUFBTSxvQkFBcUIsU0FBUSw0QkFBSztDQUNsRSxDQUFDO0FBa0RPLG9EQUFvQjtBQWpEN0IsVUFBVSxDQUFDO0lBQ1AsSUFBQSwrQkFBUSxHQUFFO0lBQ1YsSUFBQSx5QkFBUyxFQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLENBQUM7SUFDL0UsSUFBQSxxQkFBSyxFQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFVBQVUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO0NBQ25DLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFVBQVUsQ0FBQztJQUNQLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEseUJBQVMsRUFBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQ0FBaUMsRUFBRSxDQUFDO0lBQzNGLElBQUEscUJBQUssRUFBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxQixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRCxVQUFVLENBQUM7SUFDUCxJQUFBLCtCQUFRLEdBQUU7SUFDVixJQUFBLHNCQUFNLEVBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDMUIsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7Q0FDcEMsRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkQsVUFBVSxDQUFDO0lBQ1AsSUFBQSwrQkFBUSxHQUFFO0lBQ1YsSUFBQSwwQkFBVSxFQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3ZGLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3BDLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25ELFVBQVUsQ0FBQztJQUNQLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEsc0JBQU0sRUFBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMvQixVQUFVLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztDQUNuQyxFQUFFLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN4RCwrQkFBQSxvQkFBb0IsR0FBRyxVQUFVLENBQUM7SUFDOUIsSUFBQSxvQkFBSSxFQUFDLHlCQUF5QixFQUFFO1FBQzVCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLEdBQUc7UUFDVixNQUFNLEVBQUUsR0FBRztRQUNYLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDO1FBQ3hDLFFBQVEsRUFBRTtZQUNOLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFdBQVcsRUFBRSwyRkFBMkY7WUFDeEcsSUFBSSxFQUFFO2dCQUNGLGFBQWEsRUFBRSxHQUFHO2dCQUNsQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLEtBQUssRUFBRSxDQUFDO2FBQ1g7U0FDSjtLQUNKLENBQUM7SUFDRixJQUFBLDRCQUFLLEdBQUU7Q0FDVixFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFFekIsOGhKQUE4aEoiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvbG9vcHMvZm9yZWFjaFxuICogQHN1bW1hcnkgRm9yZWFjaCBsb29wIG5vZGUgZGVjbGFyYXRpb24uXG4gKiBAZGVzY3JpcHRpb24gU2hhcmVkIGRlY2xhcmF0aW9uIGZvciB0aGUgYGNvcmUubG9vcC5mb3JlYWNoYCBzeXN0ZW0gbm9kZVxuICoga2luZCAoZGVjb3JhdG9yIGlkIGBncmFwaC1mb3JlYWNoLWxvb3Atbm9kZWApLCBwb3J0ZWQgZnJvbSB0aGUgZm9yLWFuZ3VsYXJcbiAqIGRlbW8gYXBwIHNvIHRoZSBsb29wIGtpbmRzIGJlY29tZSBzaGFyZWQgY2FudmFzIG5vZGVzLiBJdHMgZXhlY3V0b3IgaXNcbiAqIGJ1aWx0IGludG8gdGhlIGludGVncmF0aW9ucyBlbmdpbmUgKGBGb3JlYWNoR3JhcGhOb2RlRXhlY3V0b3JgKS4gVGhlXG4gKiBsb29wLWJvZHkgd29ya2Zsb3cgaXMgZGVtby9hcHAtc2lkZSBjb250ZW50IGFuZCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkXG4gKiBkZWNsYXJhdGlvbiDigJQgdGhlIHNoYXJlZCBjbGFzcyBjYXJyaWVzIHRoZSBwb3J0L21ldGFkYXRhIHNoYXBlIG9ubHkuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiLi8uLi8uLi8uLi91aS9kZWNvcmF0b3JzLmpzXCI7XG5pbXBvcnQgeyBjb25uZWN0aW9uLCBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4vLi4vLi4vZGVjb3JhdG9ycy5qc1wiO1xuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLy4uL2NhdGVnb3J5LXN0eWxlcy5qc1wiO1xubGV0IEdyYXBoRm9yZWFjaExvb3BOb2RlID0gY2xhc3MgR3JhcGhGb3JlYWNoTG9vcE5vZGUgZXh0ZW5kcyBNb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoJ3RleHRhcmVhJywgeyBsYWJlbDogJ0l0ZW1zJywgcGxhY2Vob2xkZXI6ICdBcnJheSB0byBpdGVyYXRlIG92ZXInIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiAnaXRlbXMnIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIEdyYXBoRm9yZWFjaExvb3BOb2RlLnByb3RvdHlwZSwgXCJpdGVtc1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ1NsaWNlIHNpemUnLCBwbGFjZWhvbGRlcjogJ0l0ZW1zIHBlciBpdGVyYXRpb24gKGRlZmF1bHQgMSknIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiAnc2xpY2UnIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBOdW1iZXIpXG5dLCBHcmFwaEZvcmVhY2hMb29wTm9kZS5wcm90b3R5cGUsIFwic2xpY2VcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiAnaXRlbScgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyYXBoRm9yZWFjaExvb3BOb2RlLnByb3RvdHlwZSwgXCJpdGVtXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIGNvbm5lY3Rpb24oeyBoYW5kbGU6ICdsb29wJywgY29ubmVjdGlvblJ1bGVzOiB7IGFsbG93U2VsZjogdHJ1ZSwgbWF4Q29ubmVjdGlvbnM6IDEgfSB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgR3JhcGhGb3JlYWNoTG9vcE5vZGUucHJvdG90eXBlLCBcImxvb3BcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiAnY29tcGxldGVkJyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBHcmFwaEZvcmVhY2hMb29wTm9kZS5wcm90b3R5cGUsIFwiY29tcGxldGVkXCIsIHZvaWQgMCk7XG5HcmFwaEZvcmVhY2hMb29wTm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoJ2dyYXBoLWZvcmVhY2gtbG9vcC1ub2RlJywge1xuICAgICAgICBraW5kOiAnY29yZS5sb29wLmZvcmVhY2gnLFxuICAgICAgICBjYXRlZ29yeTogJ0xvb3AnLFxuICAgICAgICBjb2xvcjogJyNlYWIzMDgnLFxuICAgICAgICBpY29uOiAndGktcmVwZWF0JyxcbiAgICAgICAgd2lkdGg6IDEyMCxcbiAgICAgICAgaGVpZ2h0OiAxNDAsXG4gICAgICAgIGxhYmVsczogWydsb29wJywgJ2l0ZXJhdGlvbicsICdmb3JlYWNoJ10sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogJ0ZvcmVhY2ggbG9vcCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0l0ZXJhdGVzIG92ZXIgYW4gYXJyYXkgaW5wdXQgYW5kIGV4ZWN1dGVzIHRoZSBib2R5IG9uY2UgcGVyIGl0ZW0gKG9yIHBlciBzbGljZSBvZiBpdGVtcykuJyxcbiAgICAgICAgICAgIGxvb3A6IHtcbiAgICAgICAgICAgICAgICBtYXhJdGVyYXRpb25zOiAxMDAsXG4gICAgICAgICAgICAgICAgaXRlbVBvcnQ6ICdpdGVtJyxcbiAgICAgICAgICAgICAgICByZXN1bHRQb3J0OiAncmVzdWx0JyxcbiAgICAgICAgICAgICAgICBzbGljZTogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgR3JhcGhGb3JlYWNoTG9vcE5vZGUpO1xuZXhwb3J0IHsgR3JhcGhGb3JlYWNoTG9vcE5vZGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVptOXlaV0ZqYUM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1THk0dUwzTnlZeTluY21Gd2FDOXViMlJsY3k5c2IyOXdjeTltYjNKbFlXTm9MblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenRCUVVGQk96czdPenM3T3pzN1IwRlRSenRCUVVOSUxFOUJRVThzUlVGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1JVRkJSU3hOUVVGTkxHZERRVUZuUXl4RFFVRkRPMEZCUTNoRkxFOUJRVThzUlVGQlJTeFRRVUZUTEVWQlFVVXNiME5CUVN0Q08wRkJRMjVFTEU5QlFVOHNSVUZCUlN4VlFVRlZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNPRUpCUVhsQ08wRkJSVzVGTEhORVFVRnpSRHRCUVVOMFJDeHBRMEZCTkVJN1FVRnpRbkpDTEVsQlFVMHNiMEpCUVc5Q0xFZEJRVEZDTEUxQlFVMHNiMEpCUVhGQ0xGTkJRVkVzUzBGQlN6dERRWE5DT1VNc1EwRkJRVHRCUVd4Q1F6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3gxUWtGQmRVSXNSVUZCUlN4RFFVRkRPMGxCUXk5RkxFdEJRVXNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenM3YlVSQlExUTdRVUZMYkVJN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFhRVUZYTEVWQlFVVXNhVU5CUVdsRExFVkJRVVVzUTBGQlF6dEpRVU16Uml4TFFVRkxMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPMjFFUVVOYU8wRkJTV1k3U1VGR1F5eFJRVUZSTEVWQlFVVTdTVUZEVml4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTTdPMnRFUVVOYU8wRkJTV1k3U1VGR1F5eFJRVUZSTEVWQlFVVTdTVUZEVml4VlFVRlZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEdWQlFXVXNSVUZCUlN4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVVzWTBGQll5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN08ydEVRVU42UlR0QlFVbG1PMGxCUmtNc1VVRkJVU3hGUVVGRk8wbEJRMVlzVFVGQlRTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3hEUVVGRE96dDFSRUZEVmp0QlFYSkNXQ3h2UWtGQmIwSTdTVUZ3UW1oRExFbEJRVWtzUTBGQlF5eDVRa0ZCZVVJc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVWQlFVVXNiVUpCUVcxQ08xRkJRM3BDTEZGQlFWRXNSVUZCUlN4TlFVRk5PMUZCUTJoQ0xFdEJRVXNzUlVGQlJTeFRRVUZUTzFGQlEyaENMRWxCUVVrc1JVRkJSU3hYUVVGWE8xRkJRMnBDTEV0QlFVc3NSVUZCUlN4SFFVRkhPMUZCUTFZc1RVRkJUU3hGUVVGRkxFZEJRVWM3VVVGRFdDeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGTkJRVk1zUTBGQlF6dFJRVU40UXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzWTBGQll6dFpRVU55UWl4WFFVRlhMRVZCUVVVc01rWkJRVEpHTzFsQlEzaEhMRWxCUVVrc1JVRkJSVHRuUWtGRFNpeGhRVUZoTEVWQlFVVXNSMEZCUnp0blFrRkRiRUlzVVVGQlVTeEZRVUZGTEUxQlFVMDdaMEpCUTJoQ0xGVkJRVlVzUlVGQlJTeFJRVUZSTzJkQ1FVTndRaXhMUVVGTExFVkJRVVVzUTBGQlF6dGhRVU5VTzFOQlEwWTdTMEZEUml4RFFVRkRPMGxCUTBRc1MwRkJTeXhGUVVGRk8wZEJRMHNzYjBKQlFXOUNMRU5CYzBKb1F5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQjFhUzFrWldOdmNtRjBiM0p6TDJkeVlYQm9MMjV2WkdWekwyeHZiM0J6TDJadmNtVmhZMmhjYmlBcUlFQnpkVzF0WVhKNUlFWnZjbVZoWTJnZ2JHOXZjQ0J1YjJSbElHUmxZMnhoY21GMGFXOXVMbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRk5vWVhKbFpDQmtaV05zWVhKaGRHbHZiaUJtYjNJZ2RHaGxJR0JqYjNKbExteHZiM0F1Wm05eVpXRmphR0FnYzNsemRHVnRJRzV2WkdWY2JpQXFJR3RwYm1RZ0tHUmxZMjl5WVhSdmNpQnBaQ0JnWjNKaGNHZ3RabTl5WldGamFDMXNiMjl3TFc1dlpHVmdLU3dnY0c5eWRHVmtJR1p5YjIwZ2RHaGxJR1p2Y2kxaGJtZDFiR0Z5WEc0Z0tpQmtaVzF2SUdGd2NDQnpieUIwYUdVZ2JHOXZjQ0JyYVc1a2N5QmlaV052YldVZ2MyaGhjbVZrSUdOaGJuWmhjeUJ1YjJSbGN5NGdTWFJ6SUdWNFpXTjFkRzl5SUdselhHNGdLaUJpZFdsc2RDQnBiblJ2SUhSb1pTQnBiblJsWjNKaGRHbHZibk1nWlc1bmFXNWxJQ2hnUm05eVpXRmphRWR5WVhCb1RtOWtaVVY0WldOMWRHOXlZQ2t1SUZSb1pWeHVJQ29nYkc5dmNDMWliMlI1SUhkdmNtdG1iRzkzSUdseklHUmxiVzh2WVhCd0xYTnBaR1VnWTI5dWRHVnVkQ0JoYm1RZ2FYTWdibTkwSUhCaGNuUWdiMllnZEdobElITm9ZWEpsWkZ4dUlDb2daR1ZqYkdGeVlYUnBiMjRnNG9DVUlIUm9aU0J6YUdGeVpXUWdZMnhoYzNNZ1kyRnljbWxsY3lCMGFHVWdjRzl5ZEM5dFpYUmhaR0YwWVNCemFHRndaU0J2Ym14NUxseHVJQ292WEc1cGJYQnZjblFnZXlCTmIyUmxiQ3dnYlc5a1pXd3NJSEpsY1hWcGNtVmtJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dkV2xsYkdWdFpXNTBJSDBnWm5KdmJTQmNJaTR1THk0dUx5NHVMM1ZwTDJSbFkyOXlZWFJ2Y25OY0lqdGNibWx0Y0c5eWRDQjdJR052Ym01bFkzUnBiMjRzSUdsdWNIVjBMQ0J1YjJSbExDQnZkWFJ3ZFhRZ2ZTQm1jbTl0SUZ3aUxpNHZMaTR2WkdWamIzSmhkRzl5YzF3aU8xeHVYRzR2THlCRmJuTjFjbVVnWTJGMFpXZHZjbmtnYzNSNWJHVnpJR0Z5WlNCeVpXZHBjM1JsY21Wa0lDaHBaR1Z0Y0c5MFpXNTBLUzVjYm1sdGNHOXlkQ0JjSWk0dUwyTmhkR1ZuYjNKNUxYTjBlV3hsYzF3aU8xeHVYRzVBYm05a1pTZ25aM0poY0dndFptOXlaV0ZqYUMxc2IyOXdMVzV2WkdVbkxDQjdYRzRnSUd0cGJtUTZJQ2RqYjNKbExteHZiM0F1Wm05eVpXRmphQ2NzWEc0Z0lHTmhkR1ZuYjNKNU9pQW5URzl2Y0Njc1hHNGdJR052Ykc5eU9pQW5JMlZoWWpNd09DY3NYRzRnSUdsamIyNDZJQ2QwYVMxeVpYQmxZWFFuTEZ4dUlDQjNhV1IwYURvZ01USXdMRnh1SUNCb1pXbG5hSFE2SURFME1DeGNiaUFnYkdGaVpXeHpPaUJiSjJ4dmIzQW5MQ0FuYVhSbGNtRjBhVzl1Snl3Z0oyWnZjbVZoWTJnblhTeGNiaUFnYldWMFlXUmhkR0U2SUh0Y2JpQWdJQ0IwYVhSc1pUb2dKMFp2Y21WaFkyZ2diRzl2Y0Njc1hHNGdJQ0FnWkdWelkzSnBjSFJwYjI0NklDZEpkR1Z5WVhSbGN5QnZkbVZ5SUdGdUlHRnljbUY1SUdsdWNIVjBJR0Z1WkNCbGVHVmpkWFJsY3lCMGFHVWdZbTlrZVNCdmJtTmxJSEJsY2lCcGRHVnRJQ2h2Y2lCd1pYSWdjMnhwWTJVZ2IyWWdhWFJsYlhNcExpY3NYRzRnSUNBZ2JHOXZjRG9nZTF4dUlDQWdJQ0FnYldGNFNYUmxjbUYwYVc5dWN6b2dNVEF3TEZ4dUlDQWdJQ0FnYVhSbGJWQnZjblE2SUNkcGRHVnRKeXhjYmlBZ0lDQWdJSEpsYzNWc2RGQnZjblE2SUNkeVpYTjFiSFFuTEZ4dUlDQWdJQ0FnYzJ4cFkyVTZJREVzWEc0Z0lDQWdmU3hjYmlBZ2ZTeGNibjBwWEc1QWJXOWtaV3dvS1Z4dVpYaHdiM0owSUdOc1lYTnpJRWR5WVhCb1JtOXlaV0ZqYUV4dmIzQk9iMlJsSUdWNGRHVnVaSE1nVFc5a1pXd2dlMXh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0JBZFdsbGJHVnRaVzUwS0NkMFpYaDBZWEpsWVNjc0lIc2diR0ZpWld3NklDZEpkR1Z0Y3ljc0lIQnNZV05sYUc5c1pHVnlPaUFuUVhKeVlYa2dkRzhnYVhSbGNtRjBaU0J2ZG1WeUp5QjlLVnh1SUNCQWFXNXdkWFFvZXlCb1lXNWtiR1U2SUNkcGRHVnRjeWNnZlNsY2JpQWdhWFJsYlhNaE9pQjFibXR1YjNkdVcxMDdYRzVjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnUUhWcFpXeGxiV1Z1ZENnbmFXNXdkWFFuTENCN0lHeGhZbVZzT2lBblUyeHBZMlVnYzJsNlpTY3NJSEJzWVdObGFHOXNaR1Z5T2lBblNYUmxiWE1nY0dWeUlHbDBaWEpoZEdsdmJpQW9aR1ZtWVhWc2RDQXhLU2NnZlNsY2JpQWdRR2x1Y0hWMEtIc2dhR0Z1Wkd4bE9pQW5jMnhwWTJVbklIMHBYRzRnSUhOc2FXTmxJVG9nYm5WdFltVnlPMXh1WEc0Z0lFQnlaWEYxYVhKbFpDZ3BYRzRnSUVCdmRYUndkWFFvZXlCb1lXNWtiR1U2SUNkcGRHVnRKeUI5S1Z4dUlDQnBkR1Z0SVRvZ2RXNXJibTkzYmp0Y2JseHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQkFZMjl1Ym1WamRHbHZiaWg3SUdoaGJtUnNaVG9nSjJ4dmIzQW5MQ0JqYjI1dVpXTjBhVzl1VW5Wc1pYTTZJSHNnWVd4c2IzZFRaV3htT2lCMGNuVmxMQ0J0WVhoRGIyNXVaV04wYVc5dWN6b2dNU0I5SUgwcFhHNGdJR3h2YjNBaE9pQjFibXR1YjNkdU8xeHVYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUJ2ZFhSd2RYUW9leUJvWVc1a2JHVTZJQ2RqYjIxd2JHVjBaV1FuSUgwcFhHNGdJR052YlhCc1pYUmxaQ0U2SUhWdWEyNXZkMjViWFR0Y2JuMWNiaUpkZlE9PSJdfQ==
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphUntilLoopNode = void 0;
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7
+ r = Reflect.decorate(decorators, target, key, desc);
8
+ else
9
+ for (var i = decorators.length - 1; i >= 0; i--)
10
+ if (d = decorators[i])
11
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
16
+ return Reflect.metadata(k, v);
17
+ };
18
+ /**
19
+ * @module ui-decorators/graph/nodes/loops/until
20
+ * @summary Until loop node declaration.
21
+ * @description Shared declaration for the `core.loop.until` system node kind
22
+ * (decorator id `graph-until-loop-node`), ported from the for-angular demo
23
+ * app so the loop kinds become shared canvas nodes. Its executor is built
24
+ * into the integrations engine (`UntilGraphNodeExecutor`). The loop-body
25
+ * workflow is demo/app-side content and is not part of the shared
26
+ * declaration — the shared class carries the port/metadata shape only.
27
+ */
28
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
29
+ const decorators_js_1 = require("./../../../ui/decorators.cjs");
30
+ const decorators_js_2 = require("./../../decorators.cjs");
31
+ // Ensure category styles are registered (idempotent).
32
+ require("./../category-styles.cjs");
33
+ let GraphUntilLoopNode = class GraphUntilLoopNode extends decorator_validation_1.Model {
34
+ };
35
+ exports.GraphUntilLoopNode = GraphUntilLoopNode;
36
+ __decorate([
37
+ (0, decorator_validation_1.required)(),
38
+ (0, decorators_js_1.uielement)('input', { label: 'State', placeholder: 'Initial state' }),
39
+ (0, decorators_js_2.input)({ handle: 'state' }),
40
+ __metadata("design:type", Object)
41
+ ], GraphUntilLoopNode.prototype, "state", void 0);
42
+ __decorate([
43
+ (0, decorator_validation_1.required)(),
44
+ (0, decorators_js_1.uielement)('input', { label: 'Final state', placeholder: 'Final state after loop' }),
45
+ (0, decorators_js_2.output)({ handle: 'state' }),
46
+ __metadata("design:type", Object)
47
+ ], GraphUntilLoopNode.prototype, "stateOut", void 0);
48
+ exports.GraphUntilLoopNode = GraphUntilLoopNode = __decorate([
49
+ (0, decorators_js_2.node)('graph-until-loop-node', {
50
+ kind: 'core.loop.until',
51
+ category: 'Loop',
52
+ color: '#db2777',
53
+ icon: 'ti-player-stop',
54
+ width: 96,
55
+ height: 96,
56
+ labels: ['loop', 'conditional', 'until'],
57
+ metadata: {
58
+ title: 'Until loop',
59
+ description: 'Repeats the body until the condition is true (post-condition, runs at least once).',
60
+ loop: {
61
+ maxIterations: 50,
62
+ statePort: 'state',
63
+ condition: {
64
+ type: 'greaterThanOrEqual',
65
+ left: 'iteration',
66
+ right: 2,
67
+ },
68
+ },
69
+ },
70
+ }),
71
+ (0, decorator_validation_1.model)()
72
+ ], GraphUntilLoopNode);
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvdW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsb0ZBQW9GO1lBQ2pHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsb0JBQTZCO29CQUNuQyxJQUFJLEVBQUUsV0FBVztvQkFDakIsS0FBSyxFQUFFLENBQUM7aUJBQ1Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNELEtBQUssRUFBRTtHQUNLLGtCQUFrQixDQVU5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL3VudGlsXG4gKiBAc3VtbWFyeSBVbnRpbCBsb29wIG5vZGUgZGVjbGFyYXRpb24uXG4gKiBAZGVzY3JpcHRpb24gU2hhcmVkIGRlY2xhcmF0aW9uIGZvciB0aGUgYGNvcmUubG9vcC51bnRpbGAgc3lzdGVtIG5vZGUga2luZFxuICogKGRlY29yYXRvciBpZCBgZ3JhcGgtdW50aWwtbG9vcC1ub2RlYCksIHBvcnRlZCBmcm9tIHRoZSBmb3ItYW5ndWxhciBkZW1vXG4gKiBhcHAgc28gdGhlIGxvb3Aga2luZHMgYmVjb21lIHNoYXJlZCBjYW52YXMgbm9kZXMuIEl0cyBleGVjdXRvciBpcyBidWlsdFxuICogaW50byB0aGUgaW50ZWdyYXRpb25zIGVuZ2luZSAoYFVudGlsR3JhcGhOb2RlRXhlY3V0b3JgKS4gVGhlIGxvb3AtYm9keVxuICogd29ya2Zsb3cgaXMgZGVtby9hcHAtc2lkZSBjb250ZW50IGFuZCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkXG4gKiBkZWNsYXJhdGlvbiDigJQgdGhlIHNoYXJlZCBjbGFzcyBjYXJyaWVzIHRoZSBwb3J0L21ldGFkYXRhIHNoYXBlIG9ubHkuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vdWkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgaW5wdXQsIG5vZGUsIG91dHB1dCB9IGZyb20gXCIuLi8uLi9kZWNvcmF0b3JzXCI7XG5cbi8vIEVuc3VyZSBjYXRlZ29yeSBzdHlsZXMgYXJlIHJlZ2lzdGVyZWQgKGlkZW1wb3RlbnQpLlxuaW1wb3J0IFwiLi4vY2F0ZWdvcnktc3R5bGVzXCI7XG5cbkBub2RlKCdncmFwaC11bnRpbC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AudW50aWwnLFxuICBjYXRlZ29yeTogJ0xvb3AnLFxuICBjb2xvcjogJyNkYjI3NzcnLFxuICBpY29uOiAndGktcGxheWVyLXN0b3AnLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogWydsb29wJywgJ2NvbmRpdGlvbmFsJywgJ3VudGlsJ10sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6ICdVbnRpbCBsb29wJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGVhdHMgdGhlIGJvZHkgdW50aWwgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIChwb3N0LWNvbmRpdGlvbiwgcnVucyBhdCBsZWFzdCBvbmNlKS4nLFxuICAgIGxvb3A6IHtcbiAgICAgIG1heEl0ZXJhdGlvbnM6IDUwLFxuICAgICAgc3RhdGVQb3J0OiAnc3RhdGUnLFxuICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgIHR5cGU6ICdncmVhdGVyVGhhbk9yRXF1YWwnIGFzIG5ldmVyLFxuICAgICAgICBsZWZ0OiAnaXRlcmF0aW9uJyxcbiAgICAgICAgcmlnaHQ6IDIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcmFwaFVudGlsTG9vcE5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ1N0YXRlJywgcGxhY2Vob2xkZXI6ICdJbml0aWFsIHN0YXRlJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdzdGF0ZScgfSlcbiAgc3RhdGUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ0ZpbmFsIHN0YXRlJywgcGxhY2Vob2xkZXI6ICdGaW5hbCBzdGF0ZSBhZnRlciBsb29wJyB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlT3V0ITogdW5rbm93bjtcbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1bnRpbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQztBQUNGOzs7Ozs7Ozs7R0FTRztBQUNILHlFQUF3RTtBQUN4RSwrREFBd0Q7QUFDeEQseURBQTREO0FBQzVELHNEQUFzRDtBQUN0RCxtQ0FBaUM7QUFDakMsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLGtCQUFtQixTQUFRLDRCQUFLO0NBQzlELENBQUM7QUFzQ08sZ0RBQWtCO0FBckMzQixVQUFVLENBQUM7SUFDUCxJQUFBLCtCQUFRLEdBQUU7SUFDVixJQUFBLHlCQUFTLEVBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDcEUsSUFBQSxxQkFBSyxFQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3BDLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFVBQVUsQ0FBQztJQUNQLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEseUJBQVMsRUFBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0lBQ25GLElBQUEsc0JBQU0sRUFBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzQixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRCw2QkFBQSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7SUFDNUIsSUFBQSxvQkFBSSxFQUFDLHVCQUF1QixFQUFFO1FBQzFCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDeEMsUUFBUSxFQUFFO1lBQ04sS0FBSyxFQUFFLFlBQVk7WUFDbkIsV0FBVyxFQUFFLG9GQUFvRjtZQUNqRyxJQUFJLEVBQUU7Z0JBQ0YsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLEtBQUssRUFBRSxDQUFDO2lCQUNYO2FBQ0o7U0FDSjtLQUNKLENBQUM7SUFDRixJQUFBLDRCQUFLLEdBQUU7Q0FDVixFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFFdkIsMDRIQUEwNEgiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvbG9vcHMvdW50aWxcbiAqIEBzdW1tYXJ5IFVudGlsIGxvb3Agbm9kZSBkZWNsYXJhdGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBTaGFyZWQgZGVjbGFyYXRpb24gZm9yIHRoZSBgY29yZS5sb29wLnVudGlsYCBzeXN0ZW0gbm9kZSBraW5kXG4gKiAoZGVjb3JhdG9yIGlkIGBncmFwaC11bnRpbC1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyIGRlbW9cbiAqIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzIGJ1aWx0XG4gKiBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgVW50aWxHcmFwaE5vZGVFeGVjdXRvcmApLiBUaGUgbG9vcC1ib2R5XG4gKiB3b3JrZmxvdyBpcyBkZW1vL2FwcC1zaWRlIGNvbnRlbnQgYW5kIGlzIG5vdCBwYXJ0IG9mIHRoZSBzaGFyZWRcbiAqIGRlY2xhcmF0aW9uIOKAlCB0aGUgc2hhcmVkIGNsYXNzIGNhcnJpZXMgdGhlIHBvcnQvbWV0YWRhdGEgc2hhcGUgb25seS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLy4uLy4uLy4uL3VpL2RlY29yYXRvcnMuanNcIjtcbmltcG9ydCB7IGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiLi8uLi8uLi9kZWNvcmF0b3JzLmpzXCI7XG4vLyBFbnN1cmUgY2F0ZWdvcnkgc3R5bGVzIGFyZSByZWdpc3RlcmVkIChpZGVtcG90ZW50KS5cbmltcG9ydCBcIi4vLi4vY2F0ZWdvcnktc3R5bGVzLmpzXCI7XG5sZXQgR3JhcGhVbnRpbExvb3BOb2RlID0gY2xhc3MgR3JhcGhVbnRpbExvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdTdGF0ZScsIHBsYWNlaG9sZGVyOiAnSW5pdGlhbCBzdGF0ZScgfSksXG4gICAgaW5wdXQoeyBoYW5kbGU6ICdzdGF0ZScgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyYXBoVW50aWxMb29wTm9kZS5wcm90b3R5cGUsIFwic3RhdGVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdGaW5hbCBzdGF0ZScsIHBsYWNlaG9sZGVyOiAnRmluYWwgc3RhdGUgYWZ0ZXIgbG9vcCcgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBHcmFwaFVudGlsTG9vcE5vZGUucHJvdG90eXBlLCBcInN0YXRlT3V0XCIsIHZvaWQgMCk7XG5HcmFwaFVudGlsTG9vcE5vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKCdncmFwaC11bnRpbC1sb29wLW5vZGUnLCB7XG4gICAgICAgIGtpbmQ6ICdjb3JlLmxvb3AudW50aWwnLFxuICAgICAgICBjYXRlZ29yeTogJ0xvb3AnLFxuICAgICAgICBjb2xvcjogJyNkYjI3NzcnLFxuICAgICAgICBpY29uOiAndGktcGxheWVyLXN0b3AnLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogWydsb29wJywgJ2NvbmRpdGlvbmFsJywgJ3VudGlsJ10sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogJ1VudGlsIGxvb3AnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSZXBlYXRzIHRoZSBib2R5IHVudGlsIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSAocG9zdC1jb25kaXRpb24sIHJ1bnMgYXQgbGVhc3Qgb25jZSkuJyxcbiAgICAgICAgICAgIGxvb3A6IHtcbiAgICAgICAgICAgICAgICBtYXhJdGVyYXRpb25zOiA1MCxcbiAgICAgICAgICAgICAgICBzdGF0ZVBvcnQ6ICdzdGF0ZScsXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnaXRlcmF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgR3JhcGhVbnRpbExvb3BOb2RlKTtcbmV4cG9ydCB7IEdyYXBoVW50aWxMb29wTm9kZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1MGFXd3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2Ym05a1pYTXZiRzl2Y0hNdmRXNTBhV3d1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzBGQlFVRTdPenM3T3pzN096dEhRVk5ITzBGQlEwZ3NUMEZCVHl4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRGVFVXNUMEZCVHl4RlFVRkZMRk5CUVZNc1JVRkJSU3h2UTBGQkswSTdRVUZEYmtRc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRGhDUVVGNVFqdEJRVVYyUkN4elJFRkJjMFE3UVVGRGRFUXNhVU5CUVRSQ08wRkJlVUp5UWl4SlFVRk5MR3RDUVVGclFpeEhRVUY0UWl4TlFVRk5MR3RDUVVGdFFpeFRRVUZSTEV0QlFVczdRMEZWTlVNc1EwRkJRVHRCUVU1RE8wbEJTRU1zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZMR1ZCUVdVc1JVRkJSU3hEUVVGRE8wbEJRM0JGTEV0QlFVc3NRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzUTBGQlF6czdhVVJCUTFnN1FVRkxhRUk3U1VGSVF5eFJRVUZSTEVWQlFVVTdTVUZEVml4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEdGQlFXRXNSVUZCUlN4WFFVRlhMRVZCUVVVc2QwSkJRWGRDTEVWQlFVVXNRMEZCUXp0SlFVTnVSaXhOUVVGTkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNN08yOUVRVU5VTzBGQlZGSXNhMEpCUVd0Q08wbEJka0k1UWl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVTdVVUZETjBJc1NVRkJTU3hGUVVGRkxHbENRVUZwUWp0UlFVTjJRaXhSUVVGUkxFVkJRVVVzVFVGQlRUdFJRVU5vUWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNaMEpCUVdkQ08xRkJRM1JDTEV0QlFVc3NSVUZCUlN4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxFVkJRVVU3VVVGRFZpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1lVRkJZU3hGUVVGRkxFOUJRVThzUTBGQlF6dFJRVU40UXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzV1VGQldUdFpRVU51UWl4WFFVRlhMRVZCUVVVc2IwWkJRVzlHTzFsQlEycEhMRWxCUVVrc1JVRkJSVHRuUWtGRFNpeGhRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRha0lzVTBGQlV5eEZRVUZGTEU5QlFVODdaMEpCUTJ4Q0xGTkJRVk1zUlVGQlJUdHZRa0ZEVkN4SlFVRkpMRVZCUVVVc2IwSkJRVFpDTzI5Q1FVTnVReXhKUVVGSkxFVkJRVVVzVjBGQlZ6dHZRa0ZEYWtJc1MwRkJTeXhGUVVGRkxFTkJRVU03YVVKQlExUTdZVUZEUmp0VFFVTkdPMHRCUTBZc1EwRkJRenRKUVVORUxFdEJRVXNzUlVGQlJUdEhRVU5MTEd0Q1FVRnJRaXhEUVZVNVFpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQjFhUzFrWldOdmNtRjBiM0p6TDJkeVlYQm9MMjV2WkdWekwyeHZiM0J6TDNWdWRHbHNYRzRnS2lCQWMzVnRiV0Z5ZVNCVmJuUnBiQ0JzYjI5d0lHNXZaR1VnWkdWamJHRnlZWFJwYjI0dVhHNGdLaUJBWkdWelkzSnBjSFJwYjI0Z1UyaGhjbVZrSUdSbFkyeGhjbUYwYVc5dUlHWnZjaUIwYUdVZ1lHTnZjbVV1Ykc5dmNDNTFiblJwYkdBZ2MzbHpkR1Z0SUc1dlpHVWdhMmx1WkZ4dUlDb2dLR1JsWTI5eVlYUnZjaUJwWkNCZ1ozSmhjR2d0ZFc1MGFXd3RiRzl2Y0MxdWIyUmxZQ2tzSUhCdmNuUmxaQ0JtY205dElIUm9aU0JtYjNJdFlXNW5kV3hoY2lCa1pXMXZYRzRnS2lCaGNIQWdjMjhnZEdobElHeHZiM0FnYTJsdVpITWdZbVZqYjIxbElITm9ZWEpsWkNCallXNTJZWE1nYm05a1pYTXVJRWwwY3lCbGVHVmpkWFJ2Y2lCcGN5QmlkV2xzZEZ4dUlDb2dhVzUwYnlCMGFHVWdhVzUwWldkeVlYUnBiMjV6SUdWdVoybHVaU0FvWUZWdWRHbHNSM0poY0doT2IyUmxSWGhsWTNWMGIzSmdLUzRnVkdobElHeHZiM0F0WW05a2VWeHVJQ29nZDI5eWEyWnNiM2NnYVhNZ1pHVnRieTloY0hBdGMybGtaU0JqYjI1MFpXNTBJR0Z1WkNCcGN5QnViM1FnY0dGeWRDQnZaaUIwYUdVZ2MyaGhjbVZrWEc0Z0tpQmtaV05zWVhKaGRHbHZiaURpZ0pRZ2RHaGxJSE5vWVhKbFpDQmpiR0Z6Y3lCallYSnlhV1Z6SUhSb1pTQndiM0owTDIxbGRHRmtZWFJoSUhOb1lYQmxJRzl1YkhrdVhHNGdLaTljYm1sdGNHOXlkQ0I3SUUxdlpHVnNMQ0J0YjJSbGJDd2djbVZ4ZFdseVpXUWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2V5QjFhV1ZzWlcxbGJuUWdmU0JtY205dElGd2lMaTR2TGk0dkxpNHZkV2t2WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dhVzV3ZFhRc0lHNXZaR1VzSUc5MWRIQjFkQ0I5SUdaeWIyMGdYQ0l1TGk4dUxpOWtaV052Y21GMGIzSnpYQ0k3WEc1Y2JpOHZJRVZ1YzNWeVpTQmpZWFJsWjI5eWVTQnpkSGxzWlhNZ1lYSmxJSEpsWjJsemRHVnlaV1FnS0dsa1pXMXdiM1JsYm5RcExseHVhVzF3YjNKMElGd2lMaTR2WTJGMFpXZHZjbmt0YzNSNWJHVnpYQ0k3WEc1Y2JrQnViMlJsS0NkbmNtRndhQzExYm5ScGJDMXNiMjl3TFc1dlpHVW5MQ0I3WEc0Z0lHdHBibVE2SUNkamIzSmxMbXh2YjNBdWRXNTBhV3duTEZ4dUlDQmpZWFJsWjI5eWVUb2dKMHh2YjNBbkxGeHVJQ0JqYjJ4dmNqb2dKeU5rWWpJM056Y25MRnh1SUNCcFkyOXVPaUFuZEdrdGNHeGhlV1Z5TFhOMGIzQW5MRnh1SUNCM2FXUjBhRG9nT1RZc1hHNGdJR2hsYVdkb2REb2dPVFlzWEc0Z0lHeGhZbVZzY3pvZ1d5ZHNiMjl3Snl3Z0oyTnZibVJwZEdsdmJtRnNKeXdnSjNWdWRHbHNKMTBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUNkVmJuUnBiQ0JzYjI5d0p5eGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMUpsY0dWaGRITWdkR2hsSUdKdlpIa2dkVzUwYVd3Z2RHaGxJR052Ym1ScGRHbHZiaUJwY3lCMGNuVmxJQ2h3YjNOMExXTnZibVJwZEdsdmJpd2djblZ1Y3lCaGRDQnNaV0Z6ZENCdmJtTmxLUzRuTEZ4dUlDQWdJR3h2YjNBNklIdGNiaUFnSUNBZ0lHMWhlRWwwWlhKaGRHbHZibk02SURVd0xGeHVJQ0FnSUNBZ2MzUmhkR1ZRYjNKME9pQW5jM1JoZEdVbkxGeHVJQ0FnSUNBZ1kyOXVaR2wwYVc5dU9pQjdYRzRnSUNBZ0lDQWdJSFI1Y0dVNklDZG5jbVZoZEdWeVZHaGhiazl5UlhGMVlXd25JR0Z6SUc1bGRtVnlMRnh1SUNBZ0lDQWdJQ0JzWldaME9pQW5hWFJsY21GMGFXOXVKeXhjYmlBZ0lDQWdJQ0FnY21sbmFIUTZJRElzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJSDBzWEc0Z0lIMHNYRzU5S1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJIY21Gd2FGVnVkR2xzVEc5dmNFNXZaR1VnWlhoMFpXNWtjeUJOYjJSbGJDQjdYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUIxYVdWc1pXMWxiblFvSjJsdWNIVjBKeXdnZXlCc1lXSmxiRG9nSjFOMFlYUmxKeXdnY0d4aFkyVm9iMnhrWlhJNklDZEpibWwwYVdGc0lITjBZWFJsSnlCOUtWeHVJQ0JBYVc1d2RYUW9leUJvWVc1a2JHVTZJQ2R6ZEdGMFpTY2dmU2xjYmlBZ2MzUmhkR1VoT2lCMWJtdHViM2R1TzF4dVhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9KMmx1Y0hWMEp5d2dleUJzWVdKbGJEb2dKMFpwYm1Gc0lITjBZWFJsSnl3Z2NHeGhZMlZvYjJ4a1pYSTZJQ2RHYVc1aGJDQnpkR0YwWlNCaFpuUmxjaUJzYjI5d0p5QjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lBbmMzUmhkR1VuSUgwcFhHNGdJSE4wWVhSbFQzVjBJVG9nZFc1cmJtOTNianRjYm4xY2JpSmRmUT09Il19
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphWhileLoopNode = void 0;
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7
+ r = Reflect.decorate(decorators, target, key, desc);
8
+ else
9
+ for (var i = decorators.length - 1; i >= 0; i--)
10
+ if (d = decorators[i])
11
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
16
+ return Reflect.metadata(k, v);
17
+ };
18
+ /**
19
+ * @module ui-decorators/graph/nodes/loops/while
20
+ * @summary While loop node declaration.
21
+ * @description Shared declaration for the `core.loop.while` system node kind
22
+ * (decorator id `graph-while-loop-node`), ported from the for-angular demo
23
+ * app so the loop kinds become shared canvas nodes. Its executor is built
24
+ * into the integrations engine (`WhileGraphNodeExecutor`). The loop-body
25
+ * workflow is demo/app-side content and is not part of the shared
26
+ * declaration — the shared class carries the port/metadata shape only.
27
+ */
28
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
29
+ const decorators_js_1 = require("./../../../ui/decorators.cjs");
30
+ const decorators_js_2 = require("./../../decorators.cjs");
31
+ // Ensure category styles are registered (idempotent).
32
+ require("./../category-styles.cjs");
33
+ let GraphWhileLoopNode = class GraphWhileLoopNode extends decorator_validation_1.Model {
34
+ };
35
+ exports.GraphWhileLoopNode = GraphWhileLoopNode;
36
+ __decorate([
37
+ (0, decorator_validation_1.required)(),
38
+ (0, decorators_js_1.uielement)('input', { label: 'State', placeholder: 'Initial state' }),
39
+ (0, decorators_js_2.input)({ handle: 'state' }),
40
+ __metadata("design:type", Object)
41
+ ], GraphWhileLoopNode.prototype, "state", void 0);
42
+ __decorate([
43
+ (0, decorator_validation_1.required)(),
44
+ (0, decorators_js_1.uielement)('input', { label: 'Final state', placeholder: 'Final state after loop' }),
45
+ (0, decorators_js_2.output)({ handle: 'state' }),
46
+ __metadata("design:type", Object)
47
+ ], GraphWhileLoopNode.prototype, "stateOut", void 0);
48
+ exports.GraphWhileLoopNode = GraphWhileLoopNode = __decorate([
49
+ (0, decorators_js_2.node)('graph-while-loop-node', {
50
+ kind: 'core.loop.while',
51
+ category: 'Loop',
52
+ color: '#0891b2',
53
+ icon: 'ti-arrows-loop',
54
+ width: 96,
55
+ height: 96,
56
+ labels: ['loop', 'conditional', 'while'],
57
+ metadata: {
58
+ title: 'While loop',
59
+ description: 'Repeats the body while the condition is true (pre-condition).',
60
+ loop: {
61
+ maxIterations: 50,
62
+ statePort: 'state',
63
+ condition: {
64
+ type: 'lessThan',
65
+ left: 'iteration',
66
+ right: 3,
67
+ },
68
+ },
69
+ },
70
+ }),
71
+ (0, decorator_validation_1.model)()
72
+ ], GraphWhileLoopNode);
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsK0RBQStEO1lBQzVFLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsVUFBbUI7b0JBQ3pCLElBQUksRUFBRSxXQUFXO29CQUNqQixLQUFLLEVBQUUsQ0FBQztpQkFDVDthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssa0JBQWtCLENBVTlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGVcbiAqIEBzdW1tYXJ5IFdoaWxlIGxvb3Agbm9kZSBkZWNsYXJhdGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBTaGFyZWQgZGVjbGFyYXRpb24gZm9yIHRoZSBgY29yZS5sb29wLndoaWxlYCBzeXN0ZW0gbm9kZSBraW5kXG4gKiAoZGVjb3JhdG9yIGlkIGBncmFwaC13aGlsZS1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyIGRlbW9cbiAqIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzIGJ1aWx0XG4gKiBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcmApLiBUaGUgbG9vcC1ib2R5XG4gKiB3b3JrZmxvdyBpcyBkZW1vL2FwcC1zaWRlIGNvbnRlbnQgYW5kIGlzIG5vdCBwYXJ0IG9mIHRoZSBzaGFyZWRcbiAqIGRlY2xhcmF0aW9uIOKAlCB0aGUgc2hhcmVkIGNsYXNzIGNhcnJpZXMgdGhlIHBvcnQvbWV0YWRhdGEgc2hhcGUgb25seS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi91aS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvcnNcIjtcblxuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLi9jYXRlZ29yeS1zdHlsZXNcIjtcblxuQG5vZGUoJ2dyYXBoLXdoaWxlLWxvb3Atbm9kZScsIHtcbiAga2luZDogJ2NvcmUubG9vcC53aGlsZScsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnIzA4OTFiMicsXG4gIGljb246ICd0aS1hcnJvd3MtbG9vcCcsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnY29uZGl0aW9uYWwnLCAnd2hpbGUnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ1doaWxlIGxvb3AnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVwZWF0cyB0aGUgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGlzIHRydWUgKHByZS1jb25kaXRpb24pLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogNTAsXG4gICAgICBzdGF0ZVBvcnQ6ICdzdGF0ZScsXG4gICAgICBjb25kaXRpb246IHtcbiAgICAgICAgdHlwZTogJ2xlc3NUaGFuJyBhcyBuZXZlcixcbiAgICAgICAgbGVmdDogJ2l0ZXJhdGlvbicsXG4gICAgICAgIHJpZ2h0OiAzLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgR3JhcGhXaGlsZUxvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdTdGF0ZScsIHBsYWNlaG9sZGVyOiAnSW5pdGlhbCBzdGF0ZScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdGaW5hbCBzdGF0ZScsIHBsYWNlaG9sZGVyOiAnRmluYWwgc3RhdGUgYWZ0ZXIgbG9vcCcgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogJ3N0YXRlJyB9KVxuICBzdGF0ZU91dCE6IHVua25vd247XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aGlsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQztBQUNGOzs7Ozs7Ozs7R0FTRztBQUNILHlFQUF3RTtBQUN4RSwrREFBd0Q7QUFDeEQseURBQTREO0FBQzVELHNEQUFzRDtBQUN0RCxtQ0FBaUM7QUFDakMsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLGtCQUFtQixTQUFRLDRCQUFLO0NBQzlELENBQUM7QUFzQ08sZ0RBQWtCO0FBckMzQixVQUFVLENBQUM7SUFDUCxJQUFBLCtCQUFRLEdBQUU7SUFDVixJQUFBLHlCQUFTLEVBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDcEUsSUFBQSxxQkFBSyxFQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3BDLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFVBQVUsQ0FBQztJQUNQLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEseUJBQVMsRUFBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0lBQ25GLElBQUEsc0JBQU0sRUFBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzQixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRCw2QkFBQSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7SUFDNUIsSUFBQSxvQkFBSSxFQUFDLHVCQUF1QixFQUFFO1FBQzFCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDeEMsUUFBUSxFQUFFO1lBQ04sS0FBSyxFQUFFLFlBQVk7WUFDbkIsV0FBVyxFQUFFLCtEQUErRDtZQUM1RSxJQUFJLEVBQUU7Z0JBQ0YsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxXQUFXO29CQUNqQixLQUFLLEVBQUUsQ0FBQztpQkFDWDthQUNKO1NBQ0o7S0FDSixDQUFDO0lBQ0YsSUFBQSw0QkFBSyxHQUFFO0NBQ1YsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZCLDgxSEFBODFIIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZGVjb3JhdGUpIHx8IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xudmFyIF9fbWV0YWRhdGEgPSAodGhpcyAmJiB0aGlzLl9fbWV0YWRhdGEpIHx8IGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGssIHYpO1xufTtcbi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL3doaWxlXG4gKiBAc3VtbWFyeSBXaGlsZSBsb29wIG5vZGUgZGVjbGFyYXRpb24uXG4gKiBAZGVzY3JpcHRpb24gU2hhcmVkIGRlY2xhcmF0aW9uIGZvciB0aGUgYGNvcmUubG9vcC53aGlsZWAgc3lzdGVtIG5vZGUga2luZFxuICogKGRlY29yYXRvciBpZCBgZ3JhcGgtd2hpbGUtbG9vcC1ub2RlYCksIHBvcnRlZCBmcm9tIHRoZSBmb3ItYW5ndWxhciBkZW1vXG4gKiBhcHAgc28gdGhlIGxvb3Aga2luZHMgYmVjb21lIHNoYXJlZCBjYW52YXMgbm9kZXMuIEl0cyBleGVjdXRvciBpcyBidWlsdFxuICogaW50byB0aGUgaW50ZWdyYXRpb25zIGVuZ2luZSAoYFdoaWxlR3JhcGhOb2RlRXhlY3V0b3JgKS4gVGhlIGxvb3AtYm9keVxuICogd29ya2Zsb3cgaXMgZGVtby9hcHAtc2lkZSBjb250ZW50IGFuZCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkXG4gKiBkZWNsYXJhdGlvbiDigJQgdGhlIHNoYXJlZCBjbGFzcyBjYXJyaWVzIHRoZSBwb3J0L21ldGFkYXRhIHNoYXBlIG9ubHkuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiLi8uLi8uLi8uLi91aS9kZWNvcmF0b3JzLmpzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4vLi4vLi4vZGVjb3JhdG9ycy5qc1wiO1xuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLy4uL2NhdGVnb3J5LXN0eWxlcy5qc1wiO1xubGV0IEdyYXBoV2hpbGVMb29wTm9kZSA9IGNsYXNzIEdyYXBoV2hpbGVMb29wTm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudCgnaW5wdXQnLCB7IGxhYmVsOiAnU3RhdGUnLCBwbGFjZWhvbGRlcjogJ0luaXRpYWwgc3RhdGUnIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBHcmFwaFdoaWxlTG9vcE5vZGUucHJvdG90eXBlLCBcInN0YXRlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudCgnaW5wdXQnLCB7IGxhYmVsOiAnRmluYWwgc3RhdGUnLCBwbGFjZWhvbGRlcjogJ0ZpbmFsIHN0YXRlIGFmdGVyIGxvb3AnIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogJ3N0YXRlJyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgR3JhcGhXaGlsZUxvb3BOb2RlLnByb3RvdHlwZSwgXCJzdGF0ZU91dFwiLCB2b2lkIDApO1xuR3JhcGhXaGlsZUxvb3BOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZSgnZ3JhcGgtd2hpbGUtbG9vcC1ub2RlJywge1xuICAgICAgICBraW5kOiAnY29yZS5sb29wLndoaWxlJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdMb29wJyxcbiAgICAgICAgY29sb3I6ICcjMDg5MWIyJyxcbiAgICAgICAgaWNvbjogJ3RpLWFycm93cy1sb29wJyxcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFsnbG9vcCcsICdjb25kaXRpb25hbCcsICd3aGlsZSddLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6ICdXaGlsZSBsb29wJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVwZWF0cyB0aGUgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGlzIHRydWUgKHByZS1jb25kaXRpb24pLicsXG4gICAgICAgICAgICBsb29wOiB7XG4gICAgICAgICAgICAgICAgbWF4SXRlcmF0aW9uczogNTAsXG4gICAgICAgICAgICAgICAgc3RhdGVQb3J0OiAnc3RhdGUnLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbGVzc1RoYW4nLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnaXRlcmF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgR3JhcGhXaGlsZUxvb3BOb2RlKTtcbmV4cG9ydCB7IEdyYXBoV2hpbGVMb29wTm9kZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJocGJHVXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2Ym05a1pYTXZiRzl2Y0hNdmQyaHBiR1V1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzBGQlFVRTdPenM3T3pzN096dEhRVk5ITzBGQlEwZ3NUMEZCVHl4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRGVFVXNUMEZCVHl4RlFVRkZMRk5CUVZNc1JVRkJSU3h2UTBGQkswSTdRVUZEYmtRc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRGhDUVVGNVFqdEJRVVYyUkN4elJFRkJjMFE3UVVGRGRFUXNhVU5CUVRSQ08wRkJlVUp5UWl4SlFVRk5MR3RDUVVGclFpeEhRVUY0UWl4TlFVRk5MR3RDUVVGdFFpeFRRVUZSTEV0QlFVczdRMEZWTlVNc1EwRkJRVHRCUVU1RE8wbEJTRU1zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZMR1ZCUVdVc1JVRkJSU3hEUVVGRE8wbEJRM0JGTEV0QlFVc3NRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzUTBGQlF6czdhVVJCUTFnN1FVRkxhRUk3U1VGSVF5eFJRVUZSTEVWQlFVVTdTVUZEVml4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEdGQlFXRXNSVUZCUlN4WFFVRlhMRVZCUVVVc2QwSkJRWGRDTEVWQlFVVXNRMEZCUXp0SlFVTnVSaXhOUVVGTkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNN08yOUVRVU5VTzBGQlZGSXNhMEpCUVd0Q08wbEJka0k1UWl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVTdVVUZETjBJc1NVRkJTU3hGUVVGRkxHbENRVUZwUWp0UlFVTjJRaXhSUVVGUkxFVkJRVVVzVFVGQlRUdFJRVU5vUWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNaMEpCUVdkQ08xRkJRM1JDTEV0QlFVc3NSVUZCUlN4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxFVkJRVVU3VVVGRFZpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1lVRkJZU3hGUVVGRkxFOUJRVThzUTBGQlF6dFJRVU40UXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzV1VGQldUdFpRVU51UWl4WFFVRlhMRVZCUVVVc0swUkJRU3RFTzFsQlF6VkZMRWxCUVVrc1JVRkJSVHRuUWtGRFNpeGhRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRha0lzVTBGQlV5eEZRVUZGTEU5QlFVODdaMEpCUTJ4Q0xGTkJRVk1zUlVGQlJUdHZRa0ZEVkN4SlFVRkpMRVZCUVVVc1ZVRkJiVUk3YjBKQlEzcENMRWxCUVVrc1JVRkJSU3hYUVVGWE8yOUNRVU5xUWl4TFFVRkxMRVZCUVVVc1EwRkJRenRwUWtGRFZEdGhRVU5HTzFOQlEwWTdTMEZEUml4RFFVRkRPMGxCUTBRc1MwRkJTeXhGUVVGRk8wZEJRMHNzYTBKQlFXdENMRU5CVlRsQ0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElIVnBMV1JsWTI5eVlYUnZjbk12WjNKaGNHZ3ZibTlrWlhNdmJHOXZjSE12ZDJocGJHVmNiaUFxSUVCemRXMXRZWEo1SUZkb2FXeGxJR3h2YjNBZ2JtOWtaU0JrWldOc1lYSmhkR2x2Ymk1Y2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCVGFHRnlaV1FnWkdWamJHRnlZWFJwYjI0Z1ptOXlJSFJvWlNCZ1kyOXlaUzVzYjI5d0xuZG9hV3hsWUNCemVYTjBaVzBnYm05a1pTQnJhVzVrWEc0Z0tpQW9aR1ZqYjNKaGRHOXlJR2xrSUdCbmNtRndhQzEzYUdsc1pTMXNiMjl3TFc1dlpHVmdLU3dnY0c5eWRHVmtJR1p5YjIwZ2RHaGxJR1p2Y2kxaGJtZDFiR0Z5SUdSbGJXOWNiaUFxSUdGd2NDQnpieUIwYUdVZ2JHOXZjQ0JyYVc1a2N5QmlaV052YldVZ2MyaGhjbVZrSUdOaGJuWmhjeUJ1YjJSbGN5NGdTWFJ6SUdWNFpXTjFkRzl5SUdseklHSjFhV3gwWEc0Z0tpQnBiblJ2SUhSb1pTQnBiblJsWjNKaGRHbHZibk1nWlc1bmFXNWxJQ2hnVjJocGJHVkhjbUZ3YUU1dlpHVkZlR1ZqZFhSdmNtQXBMaUJVYUdVZ2JHOXZjQzFpYjJSNVhHNGdLaUIzYjNKclpteHZkeUJwY3lCa1pXMXZMMkZ3Y0MxemFXUmxJR052Ym5SbGJuUWdZVzVrSUdseklHNXZkQ0J3WVhKMElHOW1JSFJvWlNCemFHRnlaV1JjYmlBcUlHUmxZMnhoY21GMGFXOXVJT0tBbENCMGFHVWdjMmhoY21Wa0lHTnNZWE56SUdOaGNuSnBaWE1nZEdobElIQnZjblF2YldWMFlXUmhkR0VnYzJoaGNHVWdiMjVzZVM1Y2JpQXFMMXh1YVcxd2IzSjBJSHNnVFc5a1pXd3NJRzF2WkdWc0xDQnlaWEYxYVhKbFpDQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR1ZqYjNKaGRHOXlMWFpoYkdsa1lYUnBiMjVjSWp0Y2JtbHRjRzl5ZENCN0lIVnBaV3hsYldWdWRDQjlJR1p5YjIwZ1hDSXVMaTh1TGk4dUxpOTFhUzlrWldOdmNtRjBiM0p6WENJN1hHNXBiWEJ2Y25RZ2V5QnBibkIxZEN3Z2JtOWtaU3dnYjNWMGNIVjBJSDBnWm5KdmJTQmNJaTR1THk0dUwyUmxZMjl5WVhSdmNuTmNJanRjYmx4dUx5OGdSVzV6ZFhKbElHTmhkR1ZuYjNKNUlITjBlV3hsY3lCaGNtVWdjbVZuYVhOMFpYSmxaQ0FvYVdSbGJYQnZkR1Z1ZENrdVhHNXBiWEJ2Y25RZ1hDSXVMaTlqWVhSbFoyOXllUzF6ZEhsc1pYTmNJanRjYmx4dVFHNXZaR1VvSjJkeVlYQm9MWGRvYVd4bExXeHZiM0F0Ym05a1pTY3NJSHRjYmlBZ2EybHVaRG9nSjJOdmNtVXViRzl2Y0M1M2FHbHNaU2NzWEc0Z0lHTmhkR1ZuYjNKNU9pQW5URzl2Y0Njc1hHNGdJR052Ykc5eU9pQW5JekE0T1RGaU1pY3NYRzRnSUdsamIyNDZJQ2QwYVMxaGNuSnZkM010Ykc5dmNDY3NYRzRnSUhkcFpIUm9PaUE1Tml4Y2JpQWdhR1ZwWjJoME9pQTVOaXhjYmlBZ2JHRmlaV3h6T2lCYkoyeHZiM0FuTENBblkyOXVaR2wwYVc5dVlXd25MQ0FuZDJocGJHVW5YU3hjYmlBZ2JXVjBZV1JoZEdFNklIdGNiaUFnSUNCMGFYUnNaVG9nSjFkb2FXeGxJR3h2YjNBbkxGeHVJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQW5VbVZ3WldGMGN5QjBhR1VnWW05a2VTQjNhR2xzWlNCMGFHVWdZMjl1WkdsMGFXOXVJR2x6SUhSeWRXVWdLSEJ5WlMxamIyNWthWFJwYjI0cExpY3NYRzRnSUNBZ2JHOXZjRG9nZTF4dUlDQWdJQ0FnYldGNFNYUmxjbUYwYVc5dWN6b2dOVEFzWEc0Z0lDQWdJQ0J6ZEdGMFpWQnZjblE2SUNkemRHRjBaU2NzWEc0Z0lDQWdJQ0JqYjI1a2FYUnBiMjQ2SUh0Y2JpQWdJQ0FnSUNBZ2RIbHdaVG9nSjJ4bGMzTlVhR0Z1SnlCaGN5QnVaWFpsY2l4Y2JpQWdJQ0FnSUNBZ2JHVm1kRG9nSjJsMFpYSmhkR2x2Ymljc1hHNGdJQ0FnSUNBZ0lISnBaMmgwT2lBekxGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNCOUxGeHVJQ0I5TEZ4dWZTbGNia0J0YjJSbGJDZ3BYRzVsZUhCdmNuUWdZMnhoYzNNZ1IzSmhjR2hYYUdsc1pVeHZiM0JPYjJSbElHVjRkR1Z1WkhNZ1RXOWtaV3dnZTF4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtDZHBibkIxZENjc0lIc2diR0ZpWld3NklDZFRkR0YwWlNjc0lIQnNZV05sYUc5c1pHVnlPaUFuU1c1cGRHbGhiQ0J6ZEdGMFpTY2dmU2xjYmlBZ1FHbHVjSFYwS0hzZ2FHRnVaR3hsT2lBbmMzUmhkR1VuSUgwcFhHNGdJSE4wWVhSbElUb2dkVzVyYm05M2JqdGNibHh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0JBZFdsbGJHVnRaVzUwS0NkcGJuQjFkQ2NzSUhzZ2JHRmlaV3c2SUNkR2FXNWhiQ0J6ZEdGMFpTY3NJSEJzWVdObGFHOXNaR1Z5T2lBblJtbHVZV3dnYzNSaGRHVWdZV1owWlhJZ2JHOXZjQ2NnZlNsY2JpQWdRRzkxZEhCMWRDaDdJR2hoYm1Sc1pUb2dKM04wWVhSbEp5QjlLVnh1SUNCemRHRjBaVTkxZENFNklIVnVhMjV2ZDI0N1hHNTlYRzRpWFgwPSJdfQ==