@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
@@ -200,5 +200,5 @@ class DecafComponent extends logging_1.LoggedClass {
200
200
  }
201
201
  }
202
202
  exports.DecafComponent = DecafComponent;
203
- //# sourceMappingURL=DecafComponent.js.map
204
- //# sourceMappingURL=DecafComponent.cjs.map
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWkvRGVjYWZDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWhELE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQWdCO0FBSTdDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixjQUFnQyxTQUFRLFdBQVc7SUFrUXZFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF4SVY7Ozs7Ozs7V0FPRztRQUNPLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXpDOzs7Ozs7O1dBT0c7UUFDTyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBV3RDOzs7Ozs7O1dBT0c7UUFDSCxTQUFJLEdBQTRCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTVDOzs7Ozs7O1dBT0c7UUFDSCxVQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDSCxVQUFLLEdBQVksRUFBRSxDQUFDO1FBRXBCOzs7O1dBSUc7UUFDSCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBeUJ6Qjs7Ozs7Ozs7V0FRRztRQUNnQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQXlCakQ7Ozs7OztXQU1HO1FBQ08sZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFvQixFQUFFLENBQUM7SUFJekMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQTZCLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFVBQTBCO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBZTtRQUM3QixJQUFJLENBQUMsR0FBRzthQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxhQUFhLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFlO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBZTtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUc7YUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNuQixJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxhQUFhLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFlO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCwyRUFBMkU7SUFDM0UsSUFBSTtJQUVKLDJEQUEyRDtJQUMzRCxhQUFhO0lBQ2IsZ0NBQWdDO0lBQ2hDLDBEQUEwRDtJQUMxRCxJQUFJO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBZTtRQUM3QixJQUFJLENBQUMsR0FBRzthQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxhQUFhLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNPLGFBQWEsQ0FDckIsUUFBeUIsRUFDekIsUUFBVztRQUVYLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdDLElBQUksa0JBQWtCLENBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxFQUF1QixDQUFDO2dCQUM1QyxNQUFNLEtBQUssR0FDVCxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN0RSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNPLFdBQVcsQ0FDbkIsTUFBdUIsRUFDdkIsUUFBVztRQUVYLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLEdBQWEsQ0FBQztZQUMzQixNQUFNLEdBQUcsR0FBSSxFQUFxQixFQUFFLENBQUM7WUFDckMsSUFBSSxrQkFBa0IsQ0FBSSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBbUIsQ0FBQztnQkFDdkQsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZWRDbGFzcyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHtcbiAgQ3J1ZE9wZXJhdGlvbktleXMsXG4gIFVJRXZlbnRIYW5kbGVyLFxuICBVSUV2ZW50UHJvcGVydHksXG4gIFVJRnVuY3Rpb25MaWtlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJUmVwb3NpdG9yeSwgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRGVjYWZFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi9EZWNhZkV2ZW50SGFuZGxlclwiO1xuaW1wb3J0IHsgRGVjYWZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vRGVjYWZUcmFuc2xhdGVTZXJ2aWNlXCI7XG5pbXBvcnQgeyBpc0NsYXNzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG50eXBlIFByaW1hcnlLZXlUeXBlID0gc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGNsYXNzIGZvciBhbGwgRGVjYWYgVUkgY29tcG9uZW50c1xuICogQHN1bW1hcnkgQmFzZSBjbGFzcyBmb3IgYWxsIERlY2FmIFVJIGNvbXBvbmVudHMsIHByb3ZpZGluZyBjb21tb24gc3RhdGUgbWFuYWdlbWVudCxcbiAqIGxvZ2dpbmcsIGxvY2FsaXphdGlvbiwgbmF2aWdhdGlvbiBob29rcywgQ1JVRCBjb250ZXh0IG1ldGFkYXRhLCBhbmRcbiAqIHJlcG9zaXRvcnkgaW50ZWdyYXRpb24gdXNlZCBieSBoaWdoZXItbGV2ZWwgZGVjb3JhdG9ycyBhbmQgcmVuZGVyZXJzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVjYWZDb21wb25lbnQ8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEYXRhIG1vZGVsIG9yIG1vZGVsIG5hbWUgZm9yIGNvbXBvbmVudCBvcGVyYXRpb25zLlxuICAgKiBAc3VtbWFyeSBUaGUgZGF0YSBtb2RlbCB0aGF0IHRoaXMgY29tcG9uZW50IHdpbGwgdXNlIGZvciBDUlVEIG9wZXJhdGlvbnMuIFRoaXMgY2FuIGJlIHByb3ZpZGVkXG4gICAqIGFzIGEgTW9kZWwgaW5zdGFuY2UsIGEgbW9kZWwgY29uc3RydWN0b3IsIG9yIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbW9kZWwncyByZWdpc3RlcmVkIG5hbWUuXG4gICAqIFdoZW4gc2V0LCB0aGlzIHByb3BlcnR5IHByb3ZpZGVzIHRoZSBjb21wb25lbnQgd2l0aCBhY2Nlc3MgdG8gdGhlIG1vZGVsJ3Mgc2NoZW1hLCB2YWxpZGF0aW9uIHJ1bGVzLFxuICAgKiBhbmQgbWV0YWRhdGEgbmVlZGVkIGZvciByZW5kZXJpbmcgYW5kIGRhdGEgb3BlcmF0aW9ucy5cbiAgICovXG4gIG1vZGVsITogTSB8IE1vZGVsIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJpbWFyeSBrZXkgdmFsdWUgb2YgdGhlIGN1cnJlbnQgbW9kZWwgaW5zdGFuY2UuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB0aGUgcHJpbWFyeSBrZXkgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG1vZGVsIHJlY29yZCBiZWluZyBkaXNwbGF5ZWQgb3JcbiAgICogbWFuaXB1bGF0ZWQgYnkgdGhlIGNvbXBvbmVudC4gVGhpcyBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIENSVUQgb3BlcmF0aW9ucyB0aGF0IHRhcmdldFxuICAgKiBzcGVjaWZpYyByZWNvcmRzLCBzdWNoIGFzIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLiBUaGUgdmFsdWUgY29ycmVzcG9uZHMgdG9cbiAgICogdGhlIGZpZWxkIGRlc2lnbmF0ZWQgYXMgdGhlIHByaW1hcnkga2V5IGluIHRoZSBtb2RlbCBkZWZpbml0aW9uLlxuICAgKi9cbiAgbW9kZWxJZD86IFByaW1hcnlLZXlUeXBlIHwgUHJpbWFyeUtleVR5cGVbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZS1idWlsdCBmaWx0ZXJpbmcgZXhwcmVzc2lvbiBhcHBsaWVkIHRvIHJlcG9zaXRvcnkgcXVlcmllcy5cbiAgICogQHN1bW1hcnkgU3VwcGx5IGEgY3VzdG9tIGBBdHRyaWJ1dGVPcHRpb25gIHRvIGNvbnRyb2wgaG93IHJlY29yZHMgYXJlIGNvbnN0cmFpbmVkLiBXaGVuIG9taXR0ZWQsXG4gICAqIHRoZSBkaXJlY3RpdmUgZGVyaXZlcyBhIGNvbmRpdGlvbiBmcm9tIGBmaWx0ZXJCeWAgb3IgYHBrYCwgY29tcGFyaW5nIGl0IGFnYWluc3QgYG1vZGVsSWRgLlxuICAgKi9cbiAgZmlsdGVyITogYW55O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTW9kZWwgZmllbGQgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIGRlZmF1bHQgY29uZGl0aW9uLlxuICAgKiBAc3VtbWFyeSBJbmRpY2F0ZXMgd2hpY2gga2V5IHNob3VsZCBiZSBjb21wYXJlZCB0byBgbW9kZWxJZGAgd2hlbiBgZmlsdGVyYCBpcyBub3QgcHJvdmlkZWQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBjb25maWd1cmVkIHByaW1hcnkga2V5IHNvIG92ZXJyaWRlcyBhcmUgb25seSBuZWVkZWQgZm9yIGN1c3RvbSBsb29rdXBzLlxuICAgKi9cbiAgZmlsdGVyQnkhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgQ1JVRCBvcGVyYXRpb24gdHlwZSB0byBiZSBwZXJmb3JtZWQgb24gdGhlIG1vZGVsLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgd2hpY2ggb3BlcmF0aW9uIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSB0aGlzIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgKiBzaG91bGQgcGVyZm9ybS4gVGhpcyBkZXRlcm1pbmVzIHRoZSBVSSBiZWhhdmlvciwgZm9ybSBjb25maWd1cmF0aW9uLCBhbmQgYXZhaWxhYmxlIGFjdGlvbnMuXG4gICAqIFRoZSBvcGVyYXRpb24gYWZmZWN0cyBmb3JtIHZhbGlkYXRpb24sIGZpZWxkIGF2YWlsYWJpbGl0eSwgYW5kIHRoZSBzcGVjaWZpYyByZXBvc2l0b3J5XG4gICAqIG1ldGhvZCBjYWxsZWQgZHVyaW5nIGRhdGEgc3VibWlzc2lvbi5cbiAgICpcbiAgICogQHR5cGUge09wZXJhdGlvbktleXN9XG4gICAqL1xuICBvcGVyYXRpb24/OiBPcGVyYXRpb25LZXlzO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUm91dGVyIGluc3RhbmNlIGZvciBwcm9ncmFtbWF0aWMgbmF2aWdhdGlvbi5cbiAgICogQHN1bW1hcnkgSW5qZWN0ZWQgUm91dGVyIHNlcnZpY2UgdXNlZCBmb3IgcHJvZ3JhbW1hdGljIG5hdmlnYXRpb24gYmV0d2VlbiByb3V0ZXNcbiAgICogaW4gdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHNlcnZpY2UgZW5hYmxlcyBuYXZpZ2F0aW9uIHRvIGRpZmZlcmVudCB2aWV3cyBhbmQgb3BlcmF0aW9ucyxcbiAgICogaGFuZGxlcyByb3V0ZSBwYXJhbWV0ZXJzLCBhbmQgbWFuYWdlcyB0aGUgYnJvd3NlcidzIG5hdmlnYXRpb24gaGlzdG9yeS5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcm91dGVyPzogYW55O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmFtZSBpZGVudGlmaWVyIGZvciB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyBhIHN0cmluZyBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gbmFtZSBvciBsYWJlbCB0aGUgY29tcG9uZW50XG4gICAqIGluc3RhbmNlLiBUaGlzIG5hbWUgY2FuIGJlIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgbG9nZ2luZywgb3IgdG8gaWRlbnRpZnkgc3BlY2lmaWNcbiAgICogY29tcG9uZW50IGluc3RhbmNlcyB3aXRoaW4gYSBsYXJnZXIgYXBwbGljYXRpb24gc3RydWN0dXJlLiBJdCBzZXJ2ZXMgYXMgYSBodW1hbi1yZWFkYWJsZVxuICAgKiBpZGVudGlmaWVyIHRoYXQgaGVscHMgZGlzdGluZ3Vpc2ggYmV0d2VlbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY29tcG9uZW50IHR5cGUuXG4gICAqL1xuICBuYW1lITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyZW50IGNvbXBvbmVudCBpZGVudGlmaWVyIGZvciBoaWVyYXJjaGljYWwgY29tcG9uZW50IHJlbGF0aW9uc2hpcHMuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCBpbiBhIGhpZXJhcmNoaWNhbCBjb21wb25lbnQgc3RydWN0dXJlLlxuICAgKiBUaGlzIHByb3BlcnR5IGVzdGFibGlzaGVzIGEgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvbXBvbmVudHMsIGFsbG93aW5nIGZvclxuICAgKiBwcm9wZXIgbmVzdGluZyBhbmQgb3JnYW5pemF0aW9uIG9mIGNvbXBvbmVudHMgd2l0aGluIGEgbGF5b3V0LiBJdCBjYW4gYmUgdXNlZCB0byB0cmFja1xuICAgKiBjb21wb25lbnQgZGVwZW5kZW5jaWVzIGFuZCBlc3RhYmxpc2ggY29tcG9uZW50IGhpZXJhcmNoaWVzIGZvciByZW5kZXJpbmcgYW5kIGV2ZW50IHByb3BhZ2F0aW9uLlxuICAgKi9cbiAgY2hpbGRPZiE6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBBIHVuaXF1ZSBpZGVudGlmaWVyIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZvciBlYWNoIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogVGhpcyBVSUQgaXMgdXNlZCBmb3IgRE9NIGVsZW1lbnQgaWRlbnRpZmljYXRpb24sIGNvbXBvbmVudCB0cmFja2luZywgYW5kIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiAgICogQnkgZGVmYXVsdCwgaXQgZ2VuZXJhdGVzIGEgcmFuZG9tIDE2LWNoYXJhY3RlciB2YWx1ZSwgYnV0IGl0IGNhbiBiZSBleHBsaWNpdGx5IHNldCB2aWEgaW5wdXQuXG4gICAqL1xuICB1aWQ/OiBQcmltYXJ5S2V5VHlwZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByaW1hcnkga2V5IGZpZWxkIG5hbWUgZm9yIHRoZSBkYXRhIG1vZGVsLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgd2hpY2ggZmllbGQgaW4gdGhlIG1vZGVsIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5IGtleS5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgaWRlbnRpZnlpbmcgdW5pcXVlIHJlY29yZHMgaW4gb3BlcmF0aW9ucyBsaWtlIHVwZGF0ZSBhbmQgZGVsZXRlLlxuICAgKiBJZiBub3QgZXhwbGljaXRseSBzZXQsIGl0IGRlZmF1bHRzIHRvIHRoZSByZXBvc2l0b3J5J3MgY29uZmlndXJlZCBwcmltYXJ5IGtleSBvciAnaWQnLlxuMSAgICovXG4gIHBrITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVHJhbnNsYXRpb24gc2VydmljZSBmb3IgYXBwbGljYXRpb24gaW50ZXJuYXRpb25hbGl6YXRpb24uXG4gICAqIEBzdW1tYXJ5IEluamVjdGVkIHNlcnZpY2UgdGhhdCBwcm92aWRlcyB0cmFuc2xhdGlvbiBjYXBhYmlsaXRpZXMgZm9yIFVJIHRleHQuXG4gICAqIFVzZWQgdG8gdHJhbnNsYXRlIGJ1dHRvbiBsYWJlbHMsIHZhbGlkYXRpb24gbWVzc2FnZXMsIGFuZCBvdGhlciB0ZXh0IGNvbnRlbnQgYmFzZWRcbiAgICogb24gdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcsIGVuYWJsaW5nIG11bHRpbGluZ3VhbCBzdXBwb3J0IHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICB0cmFuc2xhdGVTZXJ2aWNlITogRGVjYWZUcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHNlcnZpY2UgZm9yIG1hbnVhbCBjaGFuZ2UgZGV0ZWN0aW9uIGNvbnRyb2wuXG4gICAqIEBzdW1tYXJ5IEluamVjdGVkIHNlcnZpY2UgdGhhdCBwcm92aWRlcyBtYW51YWwgY29udHJvbCBvdmVyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGVzLlxuICAgKiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgdGhhdCBwcm9ncmFtbWF0aWMgRE9NIGNoYW5nZXMgKGxpa2Ugc2V0dGluZyBhY2NvcmRpb25cbiAgICogYXR0cmlidXRlcykgYXJlIHByb3Blcmx5IHJlZmxlY3RlZCBpbiB0aGUgY29tcG9uZW50J3Mgc3RhdGUgYW5kIHRyaWdnZXIgYXBwcm9wcmlhdGVcbiAgICogdmlldyB1cGRhdGVzIHdoZW4gbW9kaWZpY2F0aW9ucyBvY2N1ciBvdXRzaWRlIHRoZSBub3JtYWwgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIGZsb3cuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZj86IGFueTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIGZpZWxkIHZpc2liaWxpdHkgYmFzZWQgb24gQ1JVRCBvcGVyYXRpb25zLlxuICAgKiBAc3VtbWFyeSBDYW4gYmUgYSBib29sZWFuIG9yIGFuIGFycmF5IG9mIG9wZXJhdGlvbiBrZXlzIHdoZXJlIHRoZSBmaWVsZCBzaG91bGQgYmUgaGlkZGVuLlxuICAgKi9cbiAgaGlkZGVuPzogYm9vbGVhbiB8IENydWRPcGVyYXRpb25LZXlzW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGZpbGUgdXBsb2FkIGZpZWxkLlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyBhIHVzZXItZnJpZW5kbHkgbGFiZWwgZm9yIHRoZSBmaWxlIHVwbG9hZCBpbnB1dC5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgZmllbGQgaXMgcmVhZC1vbmx5LlxuICAgKi9cbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyB0byBlbmFibGUgb3IgZGlzYWJsZSBkYXJrIG1vZGUgc3VwcG9ydCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgV2hlbiBlbmFibGVkLCB0aGUgY29tcG9uZW50IHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHN5c3RlbSdzIGRhcmsgbW9kZVxuICAgKiBwcmVmZXJlbmNlIHVzaW5nIHRoZSBtZWRpYSBzZXJ2aWNlIGFuZCBhcHBseSBhcHByb3ByaWF0ZSBzdHlsaW5nIGNsYXNzZXMuIFRoaXMgZmxhZ1xuICAgKiBjb250cm9scyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIHJlc3BvbmQgdG8gZGFyayBtb2RlIGNoYW5nZXMgYW5kIGFwcGx5IHRoZVxuICAgKiBkYXJrIHBhbGV0dGUgY2xhc3MgdG8gaXRzIERPTSBlbGVtZW50LiBCeSBkZWZhdWx0LCBkYXJrIG1vZGUgc3VwcG9ydCBpcyBkaXNhYmxlZC5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGVuYWJsZURhcmtNb2RlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGFyayBtb2RlIHN1cHBvcnQgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IFdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvbmVudCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBzeXN0ZW0ncyBkYXJrIG1vZGVcbiAgICogcHJlZmVyZW5jZSB1c2luZyB0aGUgbWVkaWEgc2VydmljZSBhbmQgYXBwbHkgYXBwcm9wcmlhdGUgc3R5bGluZyBjbGFzc2VzLiBUaGlzIGZsYWdcbiAgICogY29udHJvbHMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCByZXNwb25kIHRvIGRhcmsgbW9kZSBjaGFuZ2VzIGFuZCBhcHBseSB0aGVcbiAgICogZGFyayBwYWxldHRlIGNsYXNzIHRvIGl0cyBET00gZWxlbWVudC4gQnkgZGVmYXVsdCwgZGFyayBtb2RlIHN1cHBvcnQgaXMgZGlzYWJsZWQuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0RhcmtNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IGxvY2FsZSBpZGVudGlmaWVyIGZvciBjb21wb25lbnQgaW50ZXJuYXRpb25hbGl6YXRpb24uXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB0aGUgbG9jYWxlIGNvZGUgKGUuZy4sICdlbi1VUycsICdwdC1CUicpIHVzZWQgZm9yIHRyYW5zbGF0aW5nIFVJIHRleHRcbiAgICogYW5kIGZvcm1hdHRpbmcgZGF0YSBhY2NvcmRpbmcgdG8gcmVnaW9uYWwgY29udmVudGlvbnMuIFRoaXMgcHJvcGVydHkgY2FuIGJlIHNldCB0byBvdmVycmlkZVxuICAgKiB0aGUgZGVmYXVsdCBhcHBsaWNhdGlvbiBsb2NhbGUgZm9yIHRoaXMgc3BlY2lmaWMgY29tcG9uZW50IGluc3RhbmNlLCBlbmFibGluZyBwZXItY29tcG9uZW50XG4gICAqIGxvY2FsaXphdGlvbiB3aGVuIG5lZWRlZC5cbiAgICovXG4gIGxvY2FsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIGxpc3QgaXRlbSByZW5kZXJpbmcgYmVoYXZpb3IuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgaG93IGxpc3QgaXRlbXMgc2hvdWxkIGJlIHJlbmRlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAqIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBjb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgdGFnIG5hbWVcbiAgICogYW5kIG90aGVyIHByb3BlcnRpZXMgbmVlZGVkIHRvIHJlbmRlciBsaXN0IGl0ZW1zIGNvcnJlY3RseS4gVGhlIHRhZyBwcm9wZXJ0eVxuICAgKiBpZGVudGlmaWVzIHdoaWNoIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB0byByZW5kZXIgZWFjaCBpdGVtIGluIGEgbGlzdC5cbiAgICogQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGNhbiBiZSBpbmNsdWRlZCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBiZWhhdmlvci5cbiAgICovXG4gIGl0ZW06IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyB0YWc6IFwiXCIgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIER5bmFtaWMgcHJvcGVydGllcyBjb25maWd1cmF0aW9uIGZvciBydW50aW1lIGN1c3RvbWl6YXRpb24uXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIGtleS12YWx1ZSBwYWlycyBvZiBkeW5hbWljIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byB0aGUgY29tcG9uZW50XG4gICAqIGF0IHJ1bnRpbWUuIFRoaXMgZmxleGlibGUgY29uZmlndXJhdGlvbiBvYmplY3QgYWxsb3dzIGZvciBkeW5hbWljIHByb3BlcnR5IGFzc2lnbm1lbnQgd2l0aG91dFxuICAgKiByZXF1aXJpbmcgZXhwbGljaXQgaW5wdXQgYmluZGluZ3MgZm9yIGV2ZXJ5IHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBQcm9wZXJ0aWVzIGZyb21cbiAgICogdGhpcyBvYmplY3QgYXJlIHBhcnNlZCBhbmQgYXBwbGllZCB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHRocm91Z2ggdGhlIHBhcnNlUHJvcHMgbWV0aG9kLFxuICAgKiBlbmFibGluZyBjdXN0b21pemFibGUgY29tcG9uZW50IGJlaGF2aW9yIGJhc2VkIG9uIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEJhc2Ugcm91dGUgcGF0aCBmb3IgY29tcG9uZW50IG5hdmlnYXRpb24uXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2Ugcm91dGUgcGF0aCB1c2VkIGZvciBuYXZpZ2F0aW9uIGFjdGlvbnMgcmVsYXRlZCB0byB0aGlzIGNvbXBvbmVudC5cbiAgICogVGhpcyBpcyBvZnRlbiB1c2VkIGFzIGEgcHJlZml4IGZvciBjb25zdHJ1Y3RpbmcgbmF2aWdhdGlvbiBVUkxzIHdoZW4gdHJhbnNpdGlvbmluZyBiZXR3ZWVuXG4gICAqIGRpZmZlcmVudCBvcGVyYXRpb25zIG9yIHZpZXdzLiBUaGUgcm91dGUgaGVscHMgZXN0YWJsaXNoIHRoZSBjb21wb25lbnQncyBwb3NpdGlvbiBpbiB0aGVcbiAgICogYXBwbGljYXRpb24ncyByb3V0aW5nIGhpZXJhcmNoeS5cbiAgICovXG4gIHJvdXRlPzogc3RyaW5nID0gXCJcIjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoZXRoZXIgYm9yZGVycyBhcmUgZGlzcGxheWVkIGFyb3VuZCB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBCb29sZWFuIGZsYWcgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHZpc3VhbGx5IG91dGxpbmVkIHdpdGggYm9yZGVycy5cbiAgICogV2hlbiB0cnVlLCBib3JkZXJzIGFyZSBzaG93biB0byB2aXN1YWxseSBzZXBhcmF0ZSB0aGUgY29tcG9uZW50IGZyb20gc3Vycm91bmRpbmcgY29udGVudC5cbiAgICovXG4gIGJvcmRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBvbmVudCBuYW1lIGlkZW50aWZpZXIgZm9yIGxvZ2dpbmcgYW5kIGxvY2FsaXphdGlvbiBjb250ZXh0cy5cbiAgICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjb21wb25lbnQncyBuYW1lIHdoaWNoIGlzIHVzZWQgYXMgYSBrZXkgZm9yIGxvZ2dpbmcgY29udGV4dHNcbiAgICogYW5kIGFzIGEgYmFzZSBmb3IgbG9jYWxlIHJlc29sdXRpb24uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjb21wb25lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUm9vdCBrZXkgZm9yIGNvbXBvbmVudCBsb2NhbGUgY29udGV4dCByZXNvbHV0aW9uLlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNlIGtleSB1c2VkIHRvIHJlc29sdmUgbG9jYWxpemF0aW9uIGNvbnRleHRzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICogSWYgbm90IGV4cGxpY2l0bHkgcHJvdmlkZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjb21wb25lbnQncyBuYW1lLiBUaGlzIGtleSBpcyB1c2VkIHRvXG4gICAqIGxvYWQgYXBwcm9wcmlhdGUgdHJhbnNsYXRpb24gcmVzb3VyY2VzIGFuZCBsb2NhbGUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBsb2NhbGVSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBDYW4gYmUgYSBzdHJpbmcsIG51bWJlciwgZGF0ZSwgb3IgYXJyYXkgb2Ygc3RyaW5nIG9yIG9iamVjdHMuXG4gICAqL1xuICB2YWx1ZT86IGFueTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byBDUlVEIG9wZXJhdGlvbiBjb25zdGFudHMgZm9yIHRlbXBsYXRlIHVzYWdlLlxuICAgKiBAc3VtbWFyeSBFeHBvc2VzIHRoZSBPcGVyYXRpb25LZXlzIGVudW0gdG8gdGhlIGNvbXBvbmVudCB0ZW1wbGF0ZSwgZW5hYmxpbmdcbiAgICogY29uZGl0aW9uYWwgcmVuZGVyaW5nIGFuZCBiZWhhdmlvciBiYXNlZCBvbiBvcGVyYXRpb24gdHlwZXMuIFRoaXMgcHJvdGVjdGVkXG4gICAqIHJlYWRvbmx5IHByb3BlcnR5IGVuc3VyZXMgdGhhdCB0ZW1wbGF0ZSBsb2dpYyBjYW4gYWNjZXNzIG9wZXJhdGlvbiBjb25zdGFudHNcbiAgICogd2hpbGUgbWFpbnRhaW5pbmcgZW5jYXBzdWxhdGlvbiBhbmQgcHJldmVudGluZyBhY2NpZGVudGFsIG1vZGlmaWNhdGlvbi5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAcmVhZG9ubHlcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBPcGVyYXRpb25LZXlzID0gT3BlcmF0aW9uS2V5cztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgTG9jYXRpb24gc2VydmljZS5cbiAgICogQHN1bW1hcnkgSW5qZWN0ZWQgc2VydmljZSB0aGF0IHByb3ZpZGVzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGJyb3dzZXIncyBVUkwgYW5kIGhpc3RvcnkuXG4gICAqIFVubGlrZSB0aGUgUm91dGVyLCBMb2NhdGlvbiBhbGxvd3MgZm9yIGxvdy1sZXZlbCBtYW5pcHVsYXRpb24gb2YgdGhlIGJyb3dzZXIncyBoaXN0b3J5IHN0YWNrXG4gICAqIGFuZCBVUkwgcGF0aCwgc3VjaCBhcyBwcm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRpbmcgYmFjayBvciBmb3J3YXJkLCBvciB1cGRhdGluZyB0aGUgVVJMIHdpdGhvdXRcbiAgICogdHJpZ2dlcmluZyBhIHJvdXRlIGNoYW5nZS4gVGhpcyBpcyB1c2VmdWwgZm9yIHNjZW5hcmlvcyB3aGVyZSB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIHRoZVxuICAgKiBicm93c2VyIGhpc3Rvcnkgb3IgVVJMIG91dHNpZGUgb2YgQW5ndWxhcidzIHJvdXRpbmcgc3lzdGVtLCBzdWNoIGFzIGNsb3NpbmcgbW9kYWxzLCBoYW5kbGluZ1xuICAgKiBwb3BzdGF0ZSBldmVudHMsIG9yIHN1cHBvcnRpbmcgY3VzdG9tIG5hdmlnYXRpb24gbG9naWMuXG4gICAqXG4gICAqL1xuICBsb2NhdGlvbiE6IGFueTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9zaXRvcnkgaW5zdGFuY2UgZm9yIGRhdGEgbGF5ZXIgb3BlcmF0aW9ucy5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhIGxheWVyIGZvciByZXRyaWV2aW5nIGFuZCBtYW5pcHVsYXRpbmcgZGF0YS5cbiAgICogVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgRGVjYWZSZXBvc2l0b3J5IGNsYXNzLCBpbml0aWFsaXplZCBsYXppbHkgaW4gdGhlIHJlcG9zaXRvcnkgZ2V0dGVyLlxuICAgKiBUaGUgcmVwb3NpdG9yeSBpcyB1c2VkIHRvIHBlcmZvcm0gQ1JVRCAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgb3BlcmF0aW9ucyBvbiB0aGVcbiAgICogZGF0YSBtb2RlbCBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGZpbHRlcmluZyBkYXRhIGJhc2VkIG9uIHNwZWNpZmljIGNyaXRlcmlhLlxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgX3JlcG9zaXRvcnk/OiBJUmVwb3NpdG9yeTxNPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemF0aW9uIHN0YXR1cyBmbGFnIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBUcmFja3Mgd2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBjb21wbGV0ZWQgaXRzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG4gICAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIHByZXZlbnQgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uIGFuZCB0byBkZXRlcm1pbmUgaWZcbiAgICogY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBpbml0aWFsaXphdGlvbiBjYW4gYmUgcGVyZm9ybWVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGV2ZW50czogVUlFdmVudFByb3BlcnR5ID0ge307XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJzOiBVSUV2ZW50UHJvcGVydHkgPSB7fTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCByZXBvc2l0b3J5KCk6IElSZXBvc2l0b3J5PE0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeSBhcyBJUmVwb3NpdG9yeTxNPjtcbiAgfVxuXG4gIHNldCByZXBvc2l0b3J5KHJlcG9zaXRvcnk6IElSZXBvc2l0b3J5PE0+KSB7XG4gICAgdGhpcy5fcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XG4gIH1cblxuICBhc3luYyByZW5kZXIoLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLmxvZ1xuICAgICAgLmZvcih0aGlzLnJlbmRlcilcbiAgICAgIC5pbmZvKGByZW5kZXIgZm9yICR7dGhpcy5jb21wb25lbnROYW1lfSB3aXRoICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8YW55PiB7XG4gICAgdGhpcy5sb2cuZm9yKHRoaXMucmVmcmVzaCkuaW5mbyhgUmVmcmVzaCBjYWxsZWQgd2l0aCBhcmdzOiAke2FyZ3N9YCk7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmNocm9ub3VzbHkgaW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGBpbml0aWFsaXplZGAgcHJvcGVydHkgdG8gYHRydWVgIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyAtIEEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiB1bmtub3duIHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgaW5pdGlhbGl6ZSguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZXMgY29udGVudCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgKiBMb2dzIHRoZSB0cmFuc2xhdGlvbiByZXF1ZXN0IHdpdGggdGhlIGNvbXBvbmVudCBuYW1lIGFuZCBhcmd1bWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBhcmdzIC0gQSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0cmFuc2xhdGlvbiByZXN1bHQuXG4gICAqL1xuICBhc3luYyB0cmFuc2xhdGUoLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLmxvZ1xuICAgICAgLmZvcih0aGlzLnRyYW5zbGF0ZSlcbiAgICAgIC5pbmZvKGB0cmFuc2xhdGUgZm9yICR7dGhpcy5jb21wb25lbnROYW1lfSB3aXRoICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCk7XG4gIH1cblxuICBhc3luYyBwcmV2aWV3KC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9nLmZvcih0aGlzLnByZXZpZXcpLmRlYnVnKGBQcmV2aWV3IGNhbGxlZCB3aXRoIGFyZ3M6ICR7YXJnc31gKTtcbiAgfVxuXG4gIC8vIGFzeW5jIHByb2Nlc3MoLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTxhbnk+IHtcbiAgLy8gICB0aGlzLmxvZy5mb3IodGhpcy5wcm9jZXNzKS5kZWJ1ZyhgUHJvY2VzcyBjYWxsZWQgd2l0aCBhcmdzOiAke2FyZ3N9YCk7XG4gIC8vIH1cblxuICAvLyBhc3luYyBiYXRjaE9wZXJhdGlvbiguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPGFueT4ge1xuICAvLyAgIHRoaXMubG9nXG4gIC8vICAgICAuZm9yKHRoaXMuYmF0Y2hPcGVyYXRpb24pXG4gIC8vICAgICAuZGVidWcoYEJhdGNoT3BlcmF0aW9uIGNhbGxlZCB3aXRoIGFyZ3M6ICR7YXJnc31gKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBTdWJtaXRzIGRhdGEgb3IgcGVyZm9ybXMgYW4gYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyAtIEEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiBhbnkgdHlwZSB0byBiZSBwYXNzZWQgdG8gdGhlIHN1Ym1pdCBvcGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgc3VibWl0IG9wZXJhdGlvbi5cbiAgICovXG4gIGFzeW5jIHN1Ym1pdCguLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMubG9nXG4gICAgICAuZm9yKHRoaXMuc3VibWl0KVxuICAgICAgLmluZm8oYHN1Ym1pdCBmb3IgJHt0aGlzLmNvbXBvbmVudE5hbWV9IHdpdGggJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm9ybWFsaXplcyBoYW5kbGVyIGRlZmluaXRpb25zIGludG8gZXhlY3V0YWJsZSBmdW5jdGlvbnMuXG4gICAqIEBzdW1tYXJ5IEl0ZXJhdGVzIHRocm91Z2ggYSBoYW5kbGVycyBtYXAgYW5kIGVuc3VyZXMgZWFjaCBlbnRyeSBpcyBzdG9yZWQgYXMgYSBjYWxsYWJsZVxuICAgKiBmdW5jdGlvbiBvbiB0aGUgY29tcG9uZW50LiBQbGFpbiBmdW5jdGlvbnMgYXJlIHN0b3JlZCBkaXJlY3RseSwgd2hpbGUgaGFuZGxlciBjbGFzc2VzIGFyZVxuICAgKiBpbnN0YW50aWF0ZWQgc28gdGhlaXIgYGhhbmRsZWAgbWV0aG9kIChvciBhIGtleWVkIG92ZXJyaWRlKSBiZWNvbWVzIHRoZSByZWdpc3RlcmVkIGhhbmRsZXIuXG4gICAqIFRoaXMgYWxsb3dzIGRlY29yYXRvcnMgdG8gYWNjZXB0IGVpdGhlciBpbmxpbmUgZnVuY3Rpb25zIG9yIGhhbmRsZXIgY2xhc3NlcyB0cmFuc3BhcmVudGx5LlxuICAgKiBAdGVtcGxhdGUgVCBFeHRlbmRzIGBEZWNhZkV2ZW50SGFuZGxlcmAgdG8gY29uc3RyYWluIGhhbmRsZXIgY2xhc3MgdHlwZXMuXG4gICAqIEBwYXJhbSBoYW5kbGVycyAtIERpY3Rpb25hcnkgb2YgaGFuZGxlciBuYW1lcyBtYXBwZWQgdG8gZnVuY3Rpb25zIG9yIGhhbmRsZXIgY29uc3RydWN0b3JzLlxuICAgKiBAcGFyYW0gaW5zdGFuY2UgLSBPcHRpb25hbCB0YXJnZXQgaGFuZGxlciBpbnN0YW5jZTsgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlSGFuZGxlcnM8VCBleHRlbmRzIERlY2FmRXZlbnRIYW5kbGVyPihcbiAgICBoYW5kbGVyczogVUlFdmVudFByb3BlcnR5LFxuICAgIGluc3RhbmNlOiBUXG4gICk6IFVJRXZlbnRQcm9wZXJ0eSB7XG4gICAgY29uc3QgcmVzdWx0OiBVSUV2ZW50UHJvcGVydHkgPSB7fTtcbiAgICBPYmplY3QuZW50cmllcyhoYW5kbGVycykuZm9yRWFjaCgoW2tleSwgZm5dKSA9PiB7XG4gICAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yPERlY2FmRXZlbnRIYW5kbGVyPihmbikpIHtcbiAgICAgICAgY29uc3QgY2xhenogPSBuZXcgZm4oKSBhcyBEZWNhZkV2ZW50SGFuZGxlcjtcbiAgICAgICAgY29uc3QgZXZlbnQgPVxuICAgICAgICAgIGtleSBpbiBjbGF6eiA/IGNsYXp6W2tleSBhcyBrZXlvZiBEZWNhZkV2ZW50SGFuZGxlcl0gOiBjbGF6ei5oYW5kbGU7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZXZlbnQ7XG4gICAgICAgIGluc3RhbmNlLmhhbmRsZXJzW2tleV0gPSBldmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZm47XG4gICAgICAgIGluc3RhbmNlLmhhbmRsZXJzW2tleV0gPSBmbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgZXZlbnQgY2FsbGJhY2tzIG9uIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyBhbiBldmVudHMgbWFwIHByb2R1Y2VkIGJ5IGRlY29yYXRvcnMgd2hlcmUgZWFjaCB2YWx1ZSBjYW4gYmUgYSBmYWN0b3J5XG4gICAqIHJldHVybmluZyBhIGZ1bmN0aW9uIG9yIGEgY29tcG9uZW50IGNvbnN0cnVjdG9yLiBXaGVuIGEgY29uc3RydWN0b3IgaXMgcmV0dXJuZWQsIHRoZSBtZXRob2RcbiAgICogbWF0Y2hpbmcgdGhlIGV2ZW50IGtleSBpcyBpbnN0YW50aWF0ZWQgYW5kIHN0b3JlZDsgb3RoZXJ3aXNlIHRoZSBwcm9kdWNlZCBmdW5jdGlvbiBpc1xuICAgKiBhc3NpZ25lZCBkaXJlY3RseS4gVGhpcyBlbmFibGVzIGZsZXhpYmxlIGV2ZW50IGJpbmRpbmcgZGVmaW5pdGlvbnMgZm9yIGRlcml2ZWQgY29tcG9uZW50cy5cbiAgICogQHRlbXBsYXRlIFQgRXh0ZW5kcyBgRGVjYWZDb21wb25lbnQ8TW9kZWw+YCB0byBzY29wZSBhY2NlcHRhYmxlIGV2ZW50IG93bmVycy5cbiAgICogQHBhcmFtIGV2ZW50cyAtIERpY3Rpb25hcnkgb2YgZXZlbnQgbmFtZXMgbWFwcGVkIHRvIGZ1bmN0aW9uIGZhY3RvcmllcyBvciBjb21wb25lbnQgY29uc3RydWN0b3JzLlxuICAgKiBAcGFyYW0gaW5zdGFuY2UgLSBPcHRpb25hbCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVjZWl2ZSB0aGUgZXZlbnRzOyBkZWZhdWx0cyB0byBgdGhpc2AuXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VFdmVudHM8VCBleHRlbmRzIERlY2FmQ29tcG9uZW50PE1vZGVsPj4oXG4gICAgZXZlbnRzOiBVSUV2ZW50UHJvcGVydHksXG4gICAgaW5zdGFuY2U6IFRcbiAgKTogVUlFdmVudFByb3BlcnR5IHtcbiAgICBjb25zdCByZXN1bHQ6IFVJRXZlbnRQcm9wZXJ0eSA9IHt9O1xuICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50cykuZm9yRWFjaCgoW2tleSwgZm5dKSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0ga2V5IGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGV2dCA9IChmbiBhcyBVSUZ1bmN0aW9uTGlrZSkoKTtcbiAgICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3I8VD4oZXZ0KSkge1xuICAgICAgICBjb25zdCBmbiA9IG5ldyBldnQoKVtrZXkgYXMga2V5b2YgVF0gYXMgVUlFdmVudEhhbmRsZXI7XG4gICAgICAgIGlmIChmbikge1xuICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGZuO1xuICAgICAgICAgIGluc3RhbmNlLmV2ZW50c1tuYW1lXSA9IGZuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbbmFtZV0gPSBmbjtcbiAgICAgICAgaW5zdGFuY2UuZXZlbnRzW25hbWVdID0gZm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEZWNhZkNvbXBvbmVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBZ0Q7QUFDaEQsMkRBQXdEO0FBQ3hELHlDQUFnRDtBQUNoRDs7Ozs7R0FLRztBQUNILE1BQWEsY0FBZSxTQUFRLHFCQUFXO0lBQzNDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFDUjs7Ozs7OztXQU9HO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0I7Ozs7Ozs7V0FPRztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCOzs7Ozs7O1dBT0c7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hCOzs7Ozs7O1dBT0c7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQjs7Ozs7O1dBTUc7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQjs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckI7Ozs7Ozs7O1dBUUc7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLDZCQUFhLENBQUM7UUFDbkM7Ozs7OztXQU1HO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUk7UUFDaEIsSUFBSSxDQUFDLEdBQUc7YUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNoQixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSTtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCw2REFBNkQ7SUFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUk7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJO1FBQ25CLElBQUksQ0FBQyxHQUFHO2FBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDbkIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsYUFBYSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSTtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxvREFBb0Q7SUFDcEQsMkVBQTJFO0lBQzNFLElBQUk7SUFDSiwyREFBMkQ7SUFDM0QsYUFBYTtJQUNiLGdDQUFnQztJQUNoQywwREFBMEQ7SUFDMUQsSUFBSTtJQUNKOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUk7UUFDaEIsSUFBSSxDQUFDLEdBQUc7YUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNoQixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRDs7Ozs7Ozs7O09BU0c7SUFDSCxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVE7UUFDNUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLElBQUEsNkJBQWtCLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuQyxDQUFDO2lCQUNJLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUTtRQUN4QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNqQixNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUEsNkJBQWtCLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQztZQUNMLENBQUM7aUJBQ0ksQ0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUE1TEQsd0NBNExDO0FBQ0QsODkzQkFBODkzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlZENsYXNzIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpc0NsYXNzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjbGFzcyBmb3IgYWxsIERlY2FmIFVJIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEJhc2UgY2xhc3MgZm9yIGFsbCBEZWNhZiBVSSBjb21wb25lbnRzLCBwcm92aWRpbmcgY29tbW9uIHN0YXRlIG1hbmFnZW1lbnQsXG4gKiBsb2dnaW5nLCBsb2NhbGl6YXRpb24sIG5hdmlnYXRpb24gaG9va3MsIENSVUQgY29udGV4dCBtZXRhZGF0YSwgYW5kXG4gKiByZXBvc2l0b3J5IGludGVncmF0aW9uIHVzZWQgYnkgaGlnaGVyLWxldmVsIGRlY29yYXRvcnMgYW5kIHJlbmRlcmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlY2FmQ29tcG9uZW50IGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGFyayBtb2RlIHN1cHBvcnQgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqIEBzdW1tYXJ5IFdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvbmVudCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBzeXN0ZW0ncyBkYXJrIG1vZGVcbiAgICAgICAgICogcHJlZmVyZW5jZSB1c2luZyB0aGUgbWVkaWEgc2VydmljZSBhbmQgYXBwbHkgYXBwcm9wcmlhdGUgc3R5bGluZyBjbGFzc2VzLiBUaGlzIGZsYWdcbiAgICAgICAgICogY29udHJvbHMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCByZXNwb25kIHRvIGRhcmsgbW9kZSBjaGFuZ2VzIGFuZCBhcHBseSB0aGVcbiAgICAgICAgICogZGFyayBwYWxldHRlIGNsYXNzIHRvIGl0cyBET00gZWxlbWVudC4gQnkgZGVmYXVsdCwgZGFyayBtb2RlIHN1cHBvcnQgaXMgZGlzYWJsZWQuXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUgPSB0cnVlO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGFyayBtb2RlIHN1cHBvcnQgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqIEBzdW1tYXJ5IFdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvbmVudCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBzeXN0ZW0ncyBkYXJrIG1vZGVcbiAgICAgICAgICogcHJlZmVyZW5jZSB1c2luZyB0aGUgbWVkaWEgc2VydmljZSBhbmQgYXBwbHkgYXBwcm9wcmlhdGUgc3R5bGluZyBjbGFzc2VzLiBUaGlzIGZsYWdcbiAgICAgICAgICogY29udHJvbHMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCByZXNwb25kIHRvIGRhcmsgbW9kZSBjaGFuZ2VzIGFuZCBhcHBseSB0aGVcbiAgICAgICAgICogZGFyayBwYWxldHRlIGNsYXNzIHRvIGl0cyBET00gZWxlbWVudC4gQnkgZGVmYXVsdCwgZGFyayBtb2RlIHN1cHBvcnQgaXMgZGlzYWJsZWQuXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXNEYXJrTW9kZSA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIGxpc3QgaXRlbSByZW5kZXJpbmcgYmVoYXZpb3IuXG4gICAgICAgICAqIEBzdW1tYXJ5IERlZmluZXMgaG93IGxpc3QgaXRlbXMgc2hvdWxkIGJlIHJlbmRlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAqIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBjb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgdGFnIG5hbWVcbiAgICAgICAgICogYW5kIG90aGVyIHByb3BlcnRpZXMgbmVlZGVkIHRvIHJlbmRlciBsaXN0IGl0ZW1zIGNvcnJlY3RseS4gVGhlIHRhZyBwcm9wZXJ0eVxuICAgICAgICAgKiBpZGVudGlmaWVzIHdoaWNoIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB0byByZW5kZXIgZWFjaCBpdGVtIGluIGEgbGlzdC5cbiAgICAgICAgICogQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGNhbiBiZSBpbmNsdWRlZCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBiZWhhdmlvci5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXRlbSA9IHsgdGFnOiBcIlwiIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRHluYW1pYyBwcm9wZXJ0aWVzIGNvbmZpZ3VyYXRpb24gZm9yIHJ1bnRpbWUgY3VzdG9taXphdGlvbi5cbiAgICAgICAgICogQHN1bW1hcnkgQ29udGFpbnMga2V5LXZhbHVlIHBhaXJzIG9mIGR5bmFtaWMgcHJvcGVydGllcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnRcbiAgICAgICAgICogYXQgcnVudGltZS4gVGhpcyBmbGV4aWJsZSBjb25maWd1cmF0aW9uIG9iamVjdCBhbGxvd3MgZm9yIGR5bmFtaWMgcHJvcGVydHkgYXNzaWdubWVudCB3aXRob3V0XG4gICAgICAgICAqIHJlcXVpcmluZyBleHBsaWNpdCBpbnB1dCBiaW5kaW5ncyBmb3IgZXZlcnkgcG9zc2libGUgY29uZmlndXJhdGlvbiBvcHRpb24uIFByb3BlcnRpZXMgZnJvbVxuICAgICAgICAgKiB0aGlzIG9iamVjdCBhcmUgcGFyc2VkIGFuZCBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgdGhyb3VnaCB0aGUgcGFyc2VQcm9wcyBtZXRob2QsXG4gICAgICAgICAqIGVuYWJsaW5nIGN1c3RvbWl6YWJsZSBjb21wb25lbnQgYmVoYXZpb3IgYmFzZWQgb24gZXh0ZXJuYWwgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBCYXNlIHJvdXRlIHBhdGggZm9yIGNvbXBvbmVudCBuYXZpZ2F0aW9uLlxuICAgICAgICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNlIHJvdXRlIHBhdGggdXNlZCBmb3IgbmF2aWdhdGlvbiBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuXG4gICAgICAgICAqIFRoaXMgaXMgb2Z0ZW4gdXNlZCBhcyBhIHByZWZpeCBmb3IgY29uc3RydWN0aW5nIG5hdmlnYXRpb24gVVJMcyB3aGVuIHRyYW5zaXRpb25pbmcgYmV0d2VlblxuICAgICAgICAgKiBkaWZmZXJlbnQgb3BlcmF0aW9ucyBvciB2aWV3cy4gVGhlIHJvdXRlIGhlbHBzIGVzdGFibGlzaCB0aGUgY29tcG9uZW50J3MgcG9zaXRpb24gaW4gdGhlXG4gICAgICAgICAqIGFwcGxpY2F0aW9uJ3Mgcm91dGluZyBoaWVyYXJjaHkuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJvdXRlID0gXCJcIjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGV0aGVyIGJvcmRlcnMgYXJlIGRpc3BsYXllZCBhcm91bmQgdGhlIGNvbXBvbmVudC5cbiAgICAgICAgICogQHN1bW1hcnkgQm9vbGVhbiBmbGFnIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB2aXN1YWxseSBvdXRsaW5lZCB3aXRoIGJvcmRlcnMuXG4gICAgICAgICAqIFdoZW4gdHJ1ZSwgYm9yZGVycyBhcmUgc2hvd24gdG8gdmlzdWFsbHkgc2VwYXJhdGUgdGhlIGNvbXBvbmVudCBmcm9tIHN1cnJvdW5kaW5nIGNvbnRlbnQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gQ1JVRCBvcGVyYXRpb24gY29uc3RhbnRzIGZvciB0ZW1wbGF0ZSB1c2FnZS5cbiAgICAgICAgICogQHN1bW1hcnkgRXhwb3NlcyB0aGUgT3BlcmF0aW9uS2V5cyBlbnVtIHRvIHRoZSBjb21wb25lbnQgdGVtcGxhdGUsIGVuYWJsaW5nXG4gICAgICAgICAqIGNvbmRpdGlvbmFsIHJlbmRlcmluZyBhbmQgYmVoYXZpb3IgYmFzZWQgb24gb3BlcmF0aW9uIHR5cGVzLiBUaGlzIHByb3RlY3RlZFxuICAgICAgICAgKiByZWFkb25seSBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgdGVtcGxhdGUgbG9naWMgY2FuIGFjY2VzcyBvcGVyYXRpb24gY29uc3RhbnRzXG4gICAgICAgICAqIHdoaWxlIG1haW50YWluaW5nIGVuY2Fwc3VsYXRpb24gYW5kIHByZXZlbnRpbmcgYWNjaWRlbnRhbCBtb2RpZmljYXRpb24uXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICogQHJlYWRvbmx5XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLk9wZXJhdGlvbktleXMgPSBPcGVyYXRpb25LZXlzO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemF0aW9uIHN0YXR1cyBmbGFnIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAgICAgKiBAc3VtbWFyeSBUcmFja3Mgd2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBjb21wbGV0ZWQgaXRzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG4gICAgICAgICAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIHByZXZlbnQgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uIGFuZCB0byBkZXRlcm1pbmUgaWZcbiAgICAgICAgICogY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBpbml0aWFsaXphdGlvbiBjYW4gYmUgcGVyZm9ybWVkLlxuICAgICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmV2ZW50cyA9IHt9O1xuICAgICAgICB0aGlzLmhhbmRsZXJzID0ge307XG4gICAgfVxuICAgIGdldCByZXBvc2l0b3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeTtcbiAgICB9XG4gICAgc2V0IHJlcG9zaXRvcnkocmVwb3NpdG9yeSkge1xuICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcbiAgICB9XG4gICAgYXN5bmMgcmVuZGVyKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy5yZW5kZXIpXG4gICAgICAgICAgICAuaW5mbyhgcmVuZGVyIGZvciAke3RoaXMuY29tcG9uZW50TmFtZX0gd2l0aCAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICAgIH1cbiAgICBhc3luYyByZWZyZXNoKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2cuZm9yKHRoaXMucmVmcmVzaCkuaW5mbyhgUmVmcmVzaCBjYWxsZWQgd2l0aCBhcmdzOiAke2FyZ3N9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFzeW5jaHJvbm91c2x5IGluaXRpYWxpemVzIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGBpbml0aWFsaXplZGAgcHJvcGVydHkgdG8gYHRydWVgIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFyZ3MgLSBBIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgb2YgdW5rbm93biB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciBpbml0aWFsaXphdGlvbi5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSguLi5hcmdzKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGVzIGNvbnRlbnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBMb2dzIHRoZSB0cmFuc2xhdGlvbiByZXF1ZXN0IHdpdGggdGhlIGNvbXBvbmVudCBuYW1lIGFuZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXJncyAtIEEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0cmFuc2xhdGlvbiByZXN1bHQuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNsYXRlKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy50cmFuc2xhdGUpXG4gICAgICAgICAgICAuaW5mbyhgdHJhbnNsYXRlIGZvciAke3RoaXMuY29tcG9uZW50TmFtZX0gd2l0aCAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICAgIH1cbiAgICBhc3luYyBwcmV2aWV3KC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2cuZm9yKHRoaXMucHJldmlldykuZGVidWcoYFByZXZpZXcgY2FsbGVkIHdpdGggYXJnczogJHthcmdzfWApO1xuICAgIH1cbiAgICAvLyBhc3luYyBwcm9jZXNzKC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICB0aGlzLmxvZy5mb3IodGhpcy5wcm9jZXNzKS5kZWJ1ZyhgUHJvY2VzcyBjYWxsZWQgd2l0aCBhcmdzOiAke2FyZ3N9YCk7XG4gICAgLy8gfVxuICAgIC8vIGFzeW5jIGJhdGNoT3BlcmF0aW9uKC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gICB0aGlzLmxvZ1xuICAgIC8vICAgICAuZm9yKHRoaXMuYmF0Y2hPcGVyYXRpb24pXG4gICAgLy8gICAgIC5kZWJ1ZyhgQmF0Y2hPcGVyYXRpb24gY2FsbGVkIHdpdGggYXJnczogJHthcmdzfWApO1xuICAgIC8vIH1cbiAgICAvKipcbiAgICAgKiBTdWJtaXRzIGRhdGEgb3IgcGVyZm9ybXMgYW4gYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFyZ3MgLSBBIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgb2YgYW55IHR5cGUgdG8gYmUgcGFzc2VkIHRvIHRoZSBzdWJtaXQgb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgc3VibWl0IG9wZXJhdGlvbi5cbiAgICAgKi9cbiAgICBhc3luYyBzdWJtaXQoLi4uYXJncykge1xuICAgICAgICB0aGlzLmxvZ1xuICAgICAgICAgICAgLmZvcih0aGlzLnN1Ym1pdClcbiAgICAgICAgICAgIC5pbmZvKGBzdWJtaXQgZm9yICR7dGhpcy5jb21wb25lbnROYW1lfSB3aXRoICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGhhbmRsZXIgZGVmaW5pdGlvbnMgaW50byBleGVjdXRhYmxlIGZ1bmN0aW9ucy5cbiAgICAgKiBAc3VtbWFyeSBJdGVyYXRlcyB0aHJvdWdoIGEgaGFuZGxlcnMgbWFwIGFuZCBlbnN1cmVzIGVhY2ggZW50cnkgaXMgc3RvcmVkIGFzIGEgY2FsbGFibGVcbiAgICAgKiBmdW5jdGlvbiBvbiB0aGUgY29tcG9uZW50LiBQbGFpbiBmdW5jdGlvbnMgYXJlIHN0b3JlZCBkaXJlY3RseSwgd2hpbGUgaGFuZGxlciBjbGFzc2VzIGFyZVxuICAgICAqIGluc3RhbnRpYXRlZCBzbyB0aGVpciBgaGFuZGxlYCBtZXRob2QgKG9yIGEga2V5ZWQgb3ZlcnJpZGUpIGJlY29tZXMgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlci5cbiAgICAgKiBUaGlzIGFsbG93cyBkZWNvcmF0b3JzIHRvIGFjY2VwdCBlaXRoZXIgaW5saW5lIGZ1bmN0aW9ucyBvciBoYW5kbGVyIGNsYXNzZXMgdHJhbnNwYXJlbnRseS5cbiAgICAgKiBAdGVtcGxhdGUgVCBFeHRlbmRzIGBEZWNhZkV2ZW50SGFuZGxlcmAgdG8gY29uc3RyYWluIGhhbmRsZXIgY2xhc3MgdHlwZXMuXG4gICAgICogQHBhcmFtIGhhbmRsZXJzIC0gRGljdGlvbmFyeSBvZiBoYW5kbGVyIG5hbWVzIG1hcHBlZCB0byBmdW5jdGlvbnMgb3IgaGFuZGxlciBjb25zdHJ1Y3RvcnMuXG4gICAgICogQHBhcmFtIGluc3RhbmNlIC0gT3B0aW9uYWwgdGFyZ2V0IGhhbmRsZXIgaW5zdGFuY2U7IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwYXJzZUhhbmRsZXJzKGhhbmRsZXJzLCBpbnN0YW5jZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoaGFuZGxlcnMpLmZvckVhY2goKFtrZXksIGZuXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcihmbikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGF6eiA9IG5ldyBmbigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0ga2V5IGluIGNsYXp6ID8gY2xhenpba2V5XSA6IGNsYXp6LmhhbmRsZTtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhbmRsZXJzW2tleV0gPSBldmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gZm47XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGFuZGxlcnNba2V5XSA9IGZuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBldmVudCBjYWxsYmFja3Mgb24gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICAgKiBAc3VtbWFyeSBQcm9jZXNzZXMgYW4gZXZlbnRzIG1hcCBwcm9kdWNlZCBieSBkZWNvcmF0b3JzIHdoZXJlIGVhY2ggdmFsdWUgY2FuIGJlIGEgZmFjdG9yeVxuICAgICAqIHJldHVybmluZyBhIGZ1bmN0aW9uIG9yIGEgY29tcG9uZW50IGNvbnN0cnVjdG9yLiBXaGVuIGEgY29uc3RydWN0b3IgaXMgcmV0dXJuZWQsIHRoZSBtZXRob2RcbiAgICAgKiBtYXRjaGluZyB0aGUgZXZlbnQga2V5IGlzIGluc3RhbnRpYXRlZCBhbmQgc3RvcmVkOyBvdGhlcndpc2UgdGhlIHByb2R1Y2VkIGZ1bmN0aW9uIGlzXG4gICAgICogYXNzaWduZWQgZGlyZWN0bHkuIFRoaXMgZW5hYmxlcyBmbGV4aWJsZSBldmVudCBiaW5kaW5nIGRlZmluaXRpb25zIGZvciBkZXJpdmVkIGNvbXBvbmVudHMuXG4gICAgICogQHRlbXBsYXRlIFQgRXh0ZW5kcyBgRGVjYWZDb21wb25lbnQ8TW9kZWw+YCB0byBzY29wZSBhY2NlcHRhYmxlIGV2ZW50IG93bmVycy5cbiAgICAgKiBAcGFyYW0gZXZlbnRzIC0gRGljdGlvbmFyeSBvZiBldmVudCBuYW1lcyBtYXBwZWQgdG8gZnVuY3Rpb24gZmFjdG9yaWVzIG9yIGNvbXBvbmVudCBjb25zdHJ1Y3RvcnMuXG4gICAgICogQHBhcmFtIGluc3RhbmNlIC0gT3B0aW9uYWwgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlY2VpdmUgdGhlIGV2ZW50czsgZGVmYXVsdHMgdG8gYHRoaXNgLlxuICAgICAqL1xuICAgIHBhcnNlRXZlbnRzKGV2ZW50cywgaW5zdGFuY2UpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50cykuZm9yRWFjaCgoW2tleSwgZm5dKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5O1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0gZm4oKTtcbiAgICAgICAgICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IoZXZ0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZuID0gbmV3IGV2dCgpW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGZuO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5ldmVudHNbbmFtZV0gPSBmbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBmbjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5ldmVudHNbbmFtZV0gPSBmbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUkdWallXWkRiMjF3YjI1bGJuUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZkV2t2UkdWallXWkRiMjF3YjI1bGJuUXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEcxQ1FVRnRRaXhEUVVGRE8wRkJVV2hFTEU5QlFVOHNSVUZCWlN4aFFVRmhMRVZCUVVVc1RVRkJUU3g1UWtGQmVVSXNRMEZCUXp0QlFVZHlSU3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2JVSkJRV2RDTzBGQlNUZERPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hQUVVGblFpeGpRVUZuUXl4VFFVRlJMRmRCUVZjN1NVRnJVWFpGTzFGQlEwVXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRjRTVlk3T3pzN096czdWMEZQUnp0UlFVTlBMRzFDUVVGakxFZEJRVmtzU1VGQlNTeERRVUZETzFGQlJYcERPenM3T3pzN08xZEJUMGM3VVVGRFR5eGxRVUZWTEVkQlFWa3NTMEZCU3l4RFFVRkRPMUZCVjNSRE96czdPenM3TzFkQlQwYzdVVUZEU0N4VFFVRkpMRWRCUVRSQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUlRWRE96czdPenM3TzFkQlQwYzdVVUZEU0N4VlFVRkxMRWRCUVRSQ0xFVkJRVVVzUTBGQlF6dFJRVVZ3UXpzN096czdPMWRCVFVjN1VVRkRTQ3hWUVVGTExFZEJRVmtzUlVGQlJTeERRVUZETzFGQlJYQkNPenM3TzFkQlNVYzdVVUZEU0N4WlFVRlBMRWRCUVZrc1MwRkJTeXhEUVVGRE8xRkJlVUo2UWpzN096czdPenM3VjBGUlJ6dFJRVU5uUWl4clFrRkJZU3hIUVVGSExHRkJRV0VzUTBGQlF6dFJRWGxDYWtRN096czdPenRYUVUxSE8xRkJRMDhzWjBKQlFWY3NSMEZCV1N4TFFVRkxMRU5CUVVNN1VVRkZOMElzVjBGQlRTeEhRVUZ2UWl4RlFVRkZMRU5CUVVNN1VVRkZOMElzWVVGQlVTeEhRVUZ2UWl4RlFVRkZMRU5CUVVNN1NVRkpla01zUTBGQlF6dEpRVVZFTEVsQlFVa3NWVUZCVlR0UlFVTmFMRTlCUVU4c1NVRkJTU3hEUVVGRExGZEJRVFpDTEVOQlFVTTdTVUZETlVNc1EwRkJRenRKUVVWRUxFbEJRVWtzVlVGQlZTeERRVUZETEZWQlFUQkNPMUZCUTNaRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NWVUZCVlN4RFFVRkRPMGxCUTJoRExFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJaVHRSUVVNM1FpeEpRVUZKTEVOQlFVTXNSMEZCUnp0aFFVTk1MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzJGQlEyaENMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzUTBGQlF5eGhRVUZoTEZOQlFWTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETTBVc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRmxPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNOa0pCUVRaQ0xFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZGtVc1EwRkJRenRKUVVWRU96czdPenM3VDBGTlJ6dEpRVU5JTERaRVFVRTJSRHRKUVVNM1JDeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1NVRkJaVHRSUVVOcVF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBnc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVsQlFXVTdVVUZEYUVNc1NVRkJTU3hEUVVGRExFZEJRVWM3WVVGRFRDeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRoUVVOdVFpeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzUTBGQlF5eGhRVUZoTEZOQlFWTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZET1VVc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRmxPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNOa0pCUVRaQ0xFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZUVVc1EwRkJRenRKUVVWRUxHOUVRVUZ2UkR0SlFVTndSQ3d5UlVGQk1rVTdTVUZETTBVc1NVRkJTVHRKUVVWS0xESkVRVUV5UkR0SlFVTXpSQ3hoUVVGaE8wbEJRMklzWjBOQlFXZERPMGxCUTJoRExEQkVRVUV3UkR0SlFVTXhSQ3hKUVVGSk8wbEJSVW83T3pzN08wOUJTMGM3U1VGRFNDeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJaVHRSUVVNM1FpeEpRVUZKTEVOQlFVTXNSMEZCUnp0aFFVTk1MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzJGQlEyaENMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzUTBGQlF5eGhRVUZoTEZOQlFWTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETTBVc1EwRkJRenRKUVVWRU96czdPenM3T3pzN1QwRlRSenRKUVVOUExHRkJRV0VzUTBGRGNrSXNVVUZCZVVJc1JVRkRla0lzVVVGQlZ6dFJRVVZZTEUxQlFVMHNUVUZCVFN4SFFVRnZRaXhGUVVGRkxFTkJRVU03VVVGRGJrTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6ZERMRWxCUVVrc2EwSkJRV3RDTEVOQlFXOUNMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlF6bERMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUlVGQlJTeEZRVUYxUWl4RFFVRkRPMmRDUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZEVkN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCT0VJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMmRDUVVOMFJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRE8yZENRVU53UWl4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTnFReXhEUVVGRE8ybENRVUZOTEVOQlFVTTdaMEpCUTA0c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRha0lzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03V1VGRE9VSXNRMEZCUXp0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eE5RVUZOTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRU96czdPenM3T3pzN1QwRlRSenRKUVVOUExGZEJRVmNzUTBGRGJrSXNUVUZCZFVJc1JVRkRka0lzVVVGQlZ6dFJRVVZZTEUxQlFVMHNUVUZCVFN4SFFVRnZRaXhGUVVGRkxFTkJRVU03VVVGRGJrTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6TkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFZEJRV0VzUTBGQlF6dFpRVU16UWl4TlFVRk5MRWRCUVVjc1IwRkJTU3hGUVVGeFFpeEZRVUZGTEVOQlFVTTdXVUZEY2tNc1NVRkJTU3hyUWtGQmEwSXNRMEZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVU12UWl4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFXTXNRMEZCYlVJc1EwRkJRenRuUWtGRGRrUXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJRenR2UWtGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8yOUNRVU5zUWl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkROMElzUTBGQlF6dFpRVU5JTEVOQlFVTTdhVUpCUVUwc1EwRkJRenRuUWtGRFRpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTTNRaXhEUVVGRE8xRkJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJNYjJkblpXUkRiR0Z6Y3lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdmJHOW5aMmx1WjF3aU8xeHVhVzF3YjNKMElIdGNiaUFnUTNKMVpFOXdaWEpoZEdsdmJrdGxlWE1zWEc0Z0lGVkpSWFpsYm5SSVlXNWtiR1Z5TEZ4dUlDQlZTVVYyWlc1MFVISnZjR1Z5ZEhrc1hHNGdJRlZKUm5WdVkzUnBiMjVNYVd0bExGeHVmU0JtY205dElGd2lMaTkwZVhCbGMxd2lPMXh1YVcxd2IzSjBJSHNnVFc5a1pXd2dmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2V5QkpVbVZ3YjNOcGRHOXllU3dnVDNCbGNtRjBhVzl1UzJWNWN5QjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR0l0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaRmRtVnVkRWhoYm1Sc1pYSWdmU0JtY205dElGd2lMaTlFWldOaFprVjJaVzUwU0dGdVpHeGxjbHdpTzF4dWFXMXdiM0owSUhzZ1JHVmpZV1pVY21GdWMyeGhkR1ZUWlhKMmFXTmxJSDBnWm5KdmJTQmNJaTR2UkdWallXWlVjbUZ1YzJ4aGRHVlRaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJwYzBOc1lYTnpRMjl1YzNSeWRXTjBiM0lnZlNCbWNtOXRJRndpTGk5MWRHbHNjMXdpTzF4dVhHNTBlWEJsSUZCeWFXMWhjbmxMWlhsVWVYQmxJRDBnYzNSeWFXNW5JSHdnYm5WdFltVnlJSHdnWW1sbmFXNTBPMXh1WEc0dktpcGNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQkNZWE5sSUdOc1lYTnpJR1p2Y2lCaGJHd2dSR1ZqWVdZZ1ZVa2dZMjl0Y0c5dVpXNTBjMXh1SUNvZ1FITjFiVzFoY25rZ1FtRnpaU0JqYkdGemN5Qm1iM0lnWVd4c0lFUmxZMkZtSUZWSklHTnZiWEJ2Ym1WdWRITXNJSEJ5YjNacFpHbHVaeUJqYjIxdGIyNGdjM1JoZEdVZ2JXRnVZV2RsYldWdWRDeGNiaUFxSUd4dloyZHBibWNzSUd4dlkyRnNhWHBoZEdsdmJpd2dibUYyYVdkaGRHbHZiaUJvYjI5cmN5d2dRMUpWUkNCamIyNTBaWGgwSUcxbGRHRmtZWFJoTENCaGJtUmNiaUFxSUhKbGNHOXphWFJ2Y25rZ2FXNTBaV2R5WVhScGIyNGdkWE5sWkNCaWVTQm9hV2RvWlhJdGJHVjJaV3dnWkdWamIzSmhkRzl5Y3lCaGJtUWdjbVZ1WkdWeVpYSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1lXSnpkSEpoWTNRZ1kyeGhjM01nUkdWallXWkRiMjF3YjI1bGJuUThUU0JsZUhSbGJtUnpJRTF2WkdWc1BpQmxlSFJsYm1SeklFeHZaMmRsWkVOc1lYTnpJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJFWVhSaElHMXZaR1ZzSUc5eUlHMXZaR1ZzSUc1aGJXVWdabTl5SUdOdmJYQnZibVZ1ZENCdmNHVnlZWFJwYjI1ekxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCVWFHVWdaR0YwWVNCdGIyUmxiQ0IwYUdGMElIUm9hWE1nWTI5dGNHOXVaVzUwSUhkcGJHd2dkWE5sSUdadmNpQkRVbFZFSUc5d1pYSmhkR2x2Ym5NdUlGUm9hWE1nWTJGdUlHSmxJSEJ5YjNacFpHVmtYRzRnSUNBcUlHRnpJR0VnVFc5a1pXd2dhVzV6ZEdGdVkyVXNJR0VnYlc5a1pXd2dZMjl1YzNSeWRXTjBiM0lzSUc5eUlHRWdjM1J5YVc1bklISmxjSEpsYzJWdWRHbHVaeUIwYUdVZ2JXOWtaV3duY3lCeVpXZHBjM1JsY21Wa0lHNWhiV1V1WEc0Z0lDQXFJRmRvWlc0Z2MyVjBMQ0IwYUdseklIQnliM0JsY25SNUlIQnliM1pwWkdWeklIUm9aU0JqYjIxd2IyNWxiblFnZDJsMGFDQmhZMk5sYzNNZ2RHOGdkR2hsSUcxdlpHVnNKM01nYzJOb1pXMWhMQ0IyWVd4cFpHRjBhVzl1SUhKMWJHVnpMRnh1SUNBZ0tpQmhibVFnYldWMFlXUmhkR0VnYm1WbFpHVmtJR1p2Y2lCeVpXNWtaWEpwYm1jZ1lXNWtJR1JoZEdFZ2IzQmxjbUYwYVc5dWN5NWNiaUFnSUNvdlhHNGdJRzF2WkdWc0lUb2dUU0I4SUUxdlpHVnNJSHdnYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1VISnBiV0Z5ZVNCclpYa2dkbUZzZFdVZ2IyWWdkR2hsSUdOMWNuSmxiblFnYlc5a1pXd2dhVzV6ZEdGdVkyVXVYRzRnSUNBcUlFQnpkVzF0WVhKNUlGTndaV05wWm1sbGN5QjBhR1VnY0hKcGJXRnllU0JyWlhrZ2RtRnNkV1VnWm05eUlIUm9aU0JqZFhKeVpXNTBJRzF2WkdWc0lISmxZMjl5WkNCaVpXbHVaeUJrYVhOd2JHRjVaV1FnYjNKY2JpQWdJQ29nYldGdWFYQjFiR0YwWldRZ1lua2dkR2hsSUdOdmJYQnZibVZ1ZEM0Z1ZHaHBjeUJwWkdWdWRHbG1hV1Z5SUdseklIVnpaV1FnWm05eUlFTlNWVVFnYjNCbGNtRjBhVzl1Y3lCMGFHRjBJSFJoY21kbGRGeHVJQ0FnS2lCemNHVmphV1pwWXlCeVpXTnZjbVJ6TENCemRXTm9JR0Z6SUhKbFlXUXNJSFZ3WkdGMFpTd2dZVzVrSUdSbGJHVjBaU0J2Y0dWeVlYUnBiMjV6TGlCVWFHVWdkbUZzZFdVZ1kyOXljbVZ6Y0c5dVpITWdkRzljYmlBZ0lDb2dkR2hsSUdacFpXeGtJR1JsYzJsbmJtRjBaV1FnWVhNZ2RHaGxJSEJ5YVcxaGNua2dhMlY1SUdsdUlIUm9aU0J0YjJSbGJDQmtaV1pwYm1sMGFXOXVMbHh1SUNBZ0tpOWNiaUFnYlc5a1pXeEpaRDg2SUZCeWFXMWhjbmxMWlhsVWVYQmxJSHdnVUhKcGJXRnllVXRsZVZSNWNHVmJYVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeVpTMWlkV2xzZENCbWFXeDBaWEpwYm1jZ1pYaHdjbVZ6YzJsdmJpQmhjSEJzYVdWa0lIUnZJSEpsY0c5emFYUnZjbmtnY1hWbGNtbGxjeTVjYmlBZ0lDb2dRSE4xYlcxaGNua2dVM1Z3Y0d4NUlHRWdZM1Z6ZEc5dElHQkJkSFJ5YVdKMWRHVlBjSFJwYjI1Z0lIUnZJR052Ym5SeWIyd2dhRzkzSUhKbFkyOXlaSE1nWVhKbElHTnZibk4wY21GcGJtVmtMaUJYYUdWdUlHOXRhWFIwWldRc1hHNGdJQ0FxSUhSb1pTQmthWEpsWTNScGRtVWdaR1Z5YVhabGN5QmhJR052Ym1ScGRHbHZiaUJtY205dElHQm1hV3gwWlhKQ2VXQWdiM0lnWUhCcllDd2dZMjl0Y0dGeWFXNW5JR2wwSUdGbllXbHVjM1FnWUcxdlpHVnNTV1JnTGx4dUlDQWdLaTljYmlBZ1ptbHNkR1Z5SVRvZ1lXNTVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVFc5a1pXd2dabWxsYkdRZ2RYTmxaQ0IzYUdWdUlHZGxibVZ5WVhScGJtY2dkR2hsSUdSbFptRjFiSFFnWTI5dVpHbDBhVzl1TGx4dUlDQWdLaUJBYzNWdGJXRnllU0JKYm1ScFkyRjBaWE1nZDJocFkyZ2dhMlY1SUhOb2IzVnNaQ0JpWlNCamIyMXdZWEpsWkNCMGJ5QmdiVzlrWld4SlpHQWdkMmhsYmlCZ1ptbHNkR1Z5WUNCcGN5QnViM1FnY0hKdmRtbGtaV1F1WEc0Z0lDQXFJRVJsWm1GMWJIUnpJSFJ2SUhSb1pTQmpiMjVtYVdkMWNtVmtJSEJ5YVcxaGNua2dhMlY1SUhOdklHOTJaWEp5YVdSbGN5QmhjbVVnYjI1c2VTQnVaV1ZrWldRZ1ptOXlJR04xYzNSdmJTQnNiMjlyZFhCekxseHVJQ0FnS2k5Y2JpQWdabWxzZEdWeVFua2hPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJVYUdVZ1ExSlZSQ0J2Y0dWeVlYUnBiMjRnZEhsd1pTQjBieUJpWlNCd1pYSm1iM0p0WldRZ2IyNGdkR2hsSUcxdlpHVnNMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQlRjR1ZqYVdacFpYTWdkMmhwWTJnZ2IzQmxjbUYwYVc5dUlDaERjbVZoZEdVc0lGSmxZV1FzSUZWd1pHRjBaU3dnUkdWc1pYUmxLU0IwYUdseklHTnZiWEJ2Ym1WdWRDQnBibk4wWVc1alpWeHVJQ0FnS2lCemFHOTFiR1FnY0dWeVptOXliUzRnVkdocGN5QmtaWFJsY20xcGJtVnpJSFJvWlNCVlNTQmlaV2hoZG1sdmNpd2dabTl5YlNCamIyNW1hV2QxY21GMGFXOXVMQ0JoYm1RZ1lYWmhhV3hoWW14bElHRmpkR2x2Ym5NdVhHNGdJQ0FxSUZSb1pTQnZjR1Z5WVhScGIyNGdZV1ptWldOMGN5Qm1iM0p0SUhaaGJHbGtZWFJwYjI0c0lHWnBaV3hrSUdGMllXbHNZV0pwYkdsMGVTd2dZVzVrSUhSb1pTQnpjR1ZqYVdacFl5QnlaWEJ2YzJsMGIzSjVYRzRnSUNBcUlHMWxkR2h2WkNCallXeHNaV1FnWkhWeWFXNW5JR1JoZEdFZ2MzVmliV2x6YzJsdmJpNWNiaUFnSUNwY2JpQWdJQ29nUUhSNWNHVWdlMDl3WlhKaGRHbHZia3RsZVhOOVhHNGdJQ0FxTDF4dUlDQnZjR1Z5WVhScGIyNC9PaUJQY0dWeVlYUnBiMjVMWlhsek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbTkxZEdWeUlHbHVjM1JoYm1ObElHWnZjaUJ3Y205bmNtRnRiV0YwYVdNZ2JtRjJhV2RoZEdsdmJpNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1NXNXFaV04wWldRZ1VtOTFkR1Z5SUhObGNuWnBZMlVnZFhObFpDQm1iM0lnY0hKdlozSmhiVzFoZEdsaklHNWhkbWxuWVhScGIyNGdZbVYwZDJWbGJpQnliM1YwWlhOY2JpQWdJQ29nYVc0Z2RHaGxJR0Z3Y0d4cFkyRjBhVzl1TGlCVWFHbHpJSE5sY25acFkyVWdaVzVoWW14bGN5QnVZWFpwWjJGMGFXOXVJSFJ2SUdScFptWmxjbVZ1ZENCMmFXVjNjeUJoYm1RZ2IzQmxjbUYwYVc5dWN5eGNiaUFnSUNvZ2FHRnVaR3hsY3lCeWIzVjBaU0J3WVhKaGJXVjBaWEp6TENCaGJtUWdiV0Z1WVdkbGN5QjBhR1VnWW5KdmQzTmxjaWR6SUc1aGRtbG5ZWFJwYjI0Z2FHbHpkRzl5ZVM1Y2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaTljYmlBZ2NtOTFkR1Z5UHpvZ1lXNTVPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVG1GdFpTQnBaR1Z1ZEdsbWFXVnlJR1p2Y2lCMGFHVWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQlFjbTkyYVdSbGN5QmhJSE4wY21sdVp5QnBaR1Z1ZEdsbWFXVnlJSFJvWVhRZ1kyRnVJR0psSUhWelpXUWdkRzhnYm1GdFpTQnZjaUJzWVdKbGJDQjBhR1VnWTI5dGNHOXVaVzUwWEc0Z0lDQXFJR2x1YzNSaGJtTmxMaUJVYUdseklHNWhiV1VnWTJGdUlHSmxJSFZ6WldRZ1ptOXlJR1JsWW5WbloybHVaeUJ3ZFhKd2IzTmxjeXdnYkc5bloybHVaeXdnYjNJZ2RHOGdhV1JsYm5ScFpua2djM0JsWTJsbWFXTmNiaUFnSUNvZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObGN5QjNhWFJvYVc0Z1lTQnNZWEpuWlhJZ1lYQndiR2xqWVhScGIyNGdjM1J5ZFdOMGRYSmxMaUJKZENCelpYSjJaWE1nWVhNZ1lTQm9kVzFoYmkxeVpXRmtZV0pzWlZ4dUlDQWdLaUJwWkdWdWRHbG1hV1Z5SUhSb1lYUWdhR1ZzY0hNZ1pHbHpkR2x1WjNWcGMyZ2dZbVYwZDJWbGJpQnRkV3gwYVhCc1pTQnBibk4wWVc1alpYTWdiMllnZEdobElITmhiV1VnWTI5dGNHOXVaVzUwSUhSNWNHVXVYRzRnSUNBcUwxeHVJQ0J1WVcxbElUb2djM1J5YVc1bk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVR0Z5Wlc1MElHTnZiWEJ2Ym1WdWRDQnBaR1Z1ZEdsbWFXVnlJR1p2Y2lCb2FXVnlZWEpqYUdsallXd2dZMjl0Y0c5dVpXNTBJSEpsYkdGMGFXOXVjMmhwY0hNdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZOd1pXTnBabWxsY3lCMGFHVWdhV1JsYm5ScFptbGxjaUJ2WmlCMGFHVWdjR0Z5Wlc1MElHTnZiWEJ2Ym1WdWRDQnBiaUJoSUdocFpYSmhjbU5vYVdOaGJDQmpiMjF3YjI1bGJuUWdjM1J5ZFdOMGRYSmxMbHh1SUNBZ0tpQlVhR2x6SUhCeWIzQmxjblI1SUdWemRHRmliR2x6YUdWeklHRWdjR0Z5Wlc1MExXTm9hV3hrSUhKbGJHRjBhVzl1YzJocGNDQmlaWFIzWldWdUlHTnZiWEJ2Ym1WdWRITXNJR0ZzYkc5M2FXNW5JR1p2Y2x4dUlDQWdLaUJ3Y205d1pYSWdibVZ6ZEdsdVp5QmhibVFnYjNKbllXNXBlbUYwYVc5dUlHOW1JR052YlhCdmJtVnVkSE1nZDJsMGFHbHVJR0VnYkdGNWIzVjBMaUJKZENCallXNGdZbVVnZFhObFpDQjBieUIwY21GamExeHVJQ0FnS2lCamIyMXdiMjVsYm5RZ1pHVndaVzVrWlc1amFXVnpJR0Z1WkNCbGMzUmhZbXhwYzJnZ1kyOXRjRzl1Wlc1MElHaHBaWEpoY21Ob2FXVnpJR1p2Y2lCeVpXNWtaWEpwYm1jZ1lXNWtJR1YyWlc1MElIQnliM0JoWjJGMGFXOXVMbHh1SUNBZ0tpOWNiaUFnWTJocGJHUlBaaUU2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGVnVhWEYxWlNCcFpHVnVkR2xtYVdWeUlHWnZjaUIwYUdVZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCQklIVnVhWEYxWlNCcFpHVnVkR2xtYVdWeUlHRjFkRzl0WVhScFkyRnNiSGtnWjJWdVpYSmhkR1ZrSUdadmNpQmxZV05vSUdOdmJYQnZibVZ1ZENCcGJuTjBZVzVqWlM1Y2JpQWdJQ29nVkdocGN5QlZTVVFnYVhNZ2RYTmxaQ0JtYjNJZ1JFOU5JR1ZzWlcxbGJuUWdhV1JsYm5ScFptbGpZWFJwYjI0c0lHTnZiWEJ2Ym1WdWRDQjBjbUZqYTJsdVp5d2dZVzVrSUdSbFluVm5aMmx1WnlCd2RYSndiM05sY3k1Y2JpQWdJQ29nUW5rZ1pHVm1ZWFZzZEN3Z2FYUWdaMlZ1WlhKaGRHVnpJR0VnY21GdVpHOXRJREUyTFdOb1lYSmhZM1JsY2lCMllXeDFaU3dnWW5WMElHbDBJR05oYmlCaVpTQmxlSEJzYVdOcGRHeDVJSE5sZENCMmFXRWdhVzV3ZFhRdVhHNGdJQ0FxTDF4dUlDQjFhV1EvT2lCUWNtbHRZWEo1UzJWNVZIbHdaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeWFXMWhjbmtnYTJWNUlHWnBaV3hrSUc1aGJXVWdabTl5SUhSb1pTQmtZWFJoSUcxdlpHVnNMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQlRjR1ZqYVdacFpYTWdkMmhwWTJnZ1ptbGxiR1FnYVc0Z2RHaGxJRzF2WkdWc0lITm9iM1ZzWkNCaVpTQjFjMlZrSUdGeklIUm9aU0J3Y21sdFlYSjVJR3RsZVM1Y2JpQWdJQ29nVkdocGN5QnBjeUIwZVhCcFkyRnNiSGtnZFhObFpDQm1iM0lnYVdSbGJuUnBabmxwYm1jZ2RXNXBjWFZsSUhKbFkyOXlaSE1nYVc0Z2IzQmxjbUYwYVc5dWN5QnNhV3RsSUhWd1pHRjBaU0JoYm1RZ1pHVnNaWFJsTGx4dUlDQWdLaUJKWmlCdWIzUWdaWGh3YkdsamFYUnNlU0J6WlhRc0lHbDBJR1JsWm1GMWJIUnpJSFJ2SUhSb1pTQnlaWEJ2YzJsMGIzSjVKM01nWTI5dVptbG5kWEpsWkNCd2NtbHRZWEo1SUd0bGVTQnZjaUFuYVdRbkxseHVNU0FnSUNvdlhHNGdJSEJySVRvZ2MzUnlhVzVuTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1ZISmhibk5zWVhScGIyNGdjMlZ5ZG1salpTQm1iM0lnWVhCd2JHbGpZWFJwYjI0Z2FXNTBaWEp1WVhScGIyNWhiR2w2WVhScGIyNHVYRzRnSUNBcUlFQnpkVzF0WVhKNUlFbHVhbVZqZEdWa0lITmxjblpwWTJVZ2RHaGhkQ0J3Y205MmFXUmxjeUIwY21GdWMyeGhkR2x2YmlCallYQmhZbWxzYVhScFpYTWdabTl5SUZWSklIUmxlSFF1WEc0Z0lDQXFJRlZ6WldRZ2RHOGdkSEpoYm5Oc1lYUmxJR0oxZEhSdmJpQnNZV0psYkhNc0lIWmhiR2xrWVhScGIyNGdiV1Z6YzJGblpYTXNJR0Z1WkNCdmRHaGxjaUIwWlhoMElHTnZiblJsYm5RZ1ltRnpaV1JjYmlBZ0lDb2diMjRnZEdobElHTjFjbkpsYm5RZ2JHOWpZV3hsSUhObGRIUnBibWNzSUdWdVlXSnNhVzVuSUcxMWJIUnBiR2x1WjNWaGJDQnpkWEJ3YjNKMElIUm9jbTkxWjJodmRYUWdkR2hsSUdGd2NHeHBZMkYwYVc5dUxseHVJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FxTDF4dUlDQjBjbUZ1YzJ4aGRHVlRaWEoyYVdObElUb2dSR1ZqWVdaVWNtRnVjMnhoZEdWVFpYSjJhV05sTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1FXNW5kV3hoY2lCamFHRnVaMlVnWkdWMFpXTjBhVzl1SUhObGNuWnBZMlVnWm05eUlHMWhiblZoYkNCamFHRnVaMlVnWkdWMFpXTjBhVzl1SUdOdmJuUnliMnd1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRWx1YW1WamRHVmtJSE5sY25acFkyVWdkR2hoZENCd2NtOTJhV1JsY3lCdFlXNTFZV3dnWTI5dWRISnZiQ0J2ZG1WeUlHTm9ZVzVuWlNCa1pYUmxZM1JwYjI0Z1kzbGpiR1Z6TGx4dUlDQWdLaUJVYUdseklHbHpJR1Z6YzJWdWRHbGhiQ0JtYjNJZ1pXNXpkWEpwYm1jZ2RHaGhkQ0J3Y205bmNtRnRiV0YwYVdNZ1JFOU5JR05vWVc1blpYTWdLR3hwYTJVZ2MyVjBkR2x1WnlCaFkyTnZjbVJwYjI1Y2JpQWdJQ29nWVhSMGNtbGlkWFJsY3lrZ1lYSmxJSEJ5YjNCbGNteDVJSEpsWm14bFkzUmxaQ0JwYmlCMGFHVWdZMjl0Y0c5dVpXNTBKM01nYzNSaGRHVWdZVzVrSUhSeWFXZG5aWElnWVhCd2NtOXdjbWxoZEdWY2JpQWdJQ29nZG1sbGR5QjFjR1JoZEdWeklIZG9aVzRnYlc5a2FXWnBZMkYwYVc5dWN5QnZZMk4xY2lCdmRYUnphV1JsSUhSb1pTQnViM0p0WVd3Z1FXNW5kV3hoY2lCamFHRnVaMlVnWkdWMFpXTjBhVzl1SUdac2IzY3VYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JqYUdGdVoyVkVaWFJsWTNSdmNsSmxaajg2SUdGdWVUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52Ym5SeWIyeHpJR1pwWld4a0lIWnBjMmxpYVd4cGRIa2dZbUZ6WldRZ2IyNGdRMUpWUkNCdmNHVnlZWFJwYjI1ekxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRFlXNGdZbVVnWVNCaWIyOXNaV0Z1SUc5eUlHRnVJR0Z5Y21GNUlHOW1JRzl3WlhKaGRHbHZiaUJyWlhseklIZG9aWEpsSUhSb1pTQm1hV1ZzWkNCemFHOTFiR1FnWW1VZ2FHbGtaR1Z1TGx4dUlDQWdLaTljYmlBZ2FHbGtaR1Z1UHpvZ1ltOXZiR1ZoYmlCOElFTnlkV1JQY0dWeVlYUnBiMjVMWlhselcxMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJNWVdKbGJDQm1iM0lnZEdobElHWnBiR1VnZFhCc2IyRmtJR1pwWld4a0xseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCUWNtOTJhV1JsY3lCaElIVnpaWEl0Wm5KcFpXNWtiSGtnYkdGaVpXd2dabTl5SUhSb1pTQm1hV3hsSUhWd2JHOWhaQ0JwYm5CMWRDNWNiaUFnSUNvdlhHNGdJR3hoWW1Wc1B6b2djM1J5YVc1bk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdWMmhsZEdobGNpQjBhR1VnWm1sbGJHUWdhWE1nY21WaFpDMXZibXg1TGx4dUlDQWdLaTljYmlBZ2NtVmhaRzl1YkhrL09pQmliMjlzWldGdU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdSbXhoWnlCMGJ5QmxibUZpYkdVZ2IzSWdaR2x6WVdKc1pTQmtZWEpySUcxdlpHVWdjM1Z3Y0c5eWRDQm1iM0lnZEdobElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1YyaGxiaUJsYm1GaWJHVmtMQ0IwYUdVZ1kyOXRjRzl1Wlc1MElIZHBiR3dnWVhWMGIyMWhkR2xqWVd4c2VTQmtaWFJsWTNRZ2RHaGxJSE41YzNSbGJTZHpJR1JoY21zZ2JXOWtaVnh1SUNBZ0tpQndjbVZtWlhKbGJtTmxJSFZ6YVc1bklIUm9aU0J0WldScFlTQnpaWEoyYVdObElHRnVaQ0JoY0hCc2VTQmhjSEJ5YjNCeWFXRjBaU0J6ZEhsc2FXNW5JR05zWVhOelpYTXVJRlJvYVhNZ1pteGhaMXh1SUNBZ0tpQmpiMjUwY205c2N5QjNhR1YwYUdWeUlIUm9aU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJSEpsYzNCdmJtUWdkRzhnWkdGeWF5QnRiMlJsSUdOb1lXNW5aWE1nWVc1a0lHRndjR3g1SUhSb1pWeHVJQ0FnS2lCa1lYSnJJSEJoYkdWMGRHVWdZMnhoYzNNZ2RHOGdhWFJ6SUVSUFRTQmxiR1Z0Wlc1MExpQkNlU0JrWldaaGRXeDBMQ0JrWVhKcklHMXZaR1VnYzNWd2NHOXlkQ0JwY3lCa2FYTmhZbXhsWkM1Y2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lHVnVZV0pzWlVSaGNtdE5iMlJsT2lCaWIyOXNaV0Z1SUQwZ2RISjFaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVac1lXY2dkRzhnWlc1aFlteGxJRzl5SUdScGMyRmliR1VnWkdGeWF5QnRiMlJsSUhOMWNIQnZjblFnWm05eUlIUm9aU0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRmRvWlc0Z1pXNWhZbXhsWkN3Z2RHaGxJR052YlhCdmJtVnVkQ0IzYVd4c0lHRjFkRzl0WVhScFkyRnNiSGtnWkdWMFpXTjBJSFJvWlNCemVYTjBaVzBuY3lCa1lYSnJJRzF2WkdWY2JpQWdJQ29nY0hKbFptVnlaVzVqWlNCMWMybHVaeUIwYUdVZ2JXVmthV0VnYzJWeWRtbGpaU0JoYm1RZ1lYQndiSGtnWVhCd2NtOXdjbWxoZEdVZ2MzUjViR2x1WnlCamJHRnpjMlZ6TGlCVWFHbHpJR1pzWVdkY2JpQWdJQ29nWTI5dWRISnZiSE1nZDJobGRHaGxjaUIwYUdVZ1kyOXRjRzl1Wlc1MElITm9iM1ZzWkNCeVpYTndiMjVrSUhSdklHUmhjbXNnYlc5a1pTQmphR0Z1WjJWeklHRnVaQ0JoY0hCc2VTQjBhR1ZjYmlBZ0lDb2daR0Z5YXlCd1lXeGxkSFJsSUdOc1lYTnpJSFJ2SUdsMGN5QkVUMDBnWld4bGJXVnVkQzRnUW5rZ1pHVm1ZWFZzZEN3Z1pHRnlheUJ0YjJSbElITjFjSEJ2Y25RZ2FYTWdaR2x6WVdKc1pXUXVYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JwYzBSaGNtdE5iMlJsT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlU3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCRGRYSnlaVzUwSUd4dlkyRnNaU0JwWkdWdWRHbG1hV1Z5SUdadmNpQmpiMjF3YjI1bGJuUWdhVzUwWlhKdVlYUnBiMjVoYkdsNllYUnBiMjR1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRk53WldOcFptbGxjeUIwYUdVZ2JHOWpZV3hsSUdOdlpHVWdLR1V1Wnk0c0lDZGxiaTFWVXljc0lDZHdkQzFDVWljcElIVnpaV1FnWm05eUlIUnlZVzV6YkdGMGFXNW5JRlZKSUhSbGVIUmNiaUFnSUNvZ1lXNWtJR1p2Y20xaGRIUnBibWNnWkdGMFlTQmhZMk52Y21ScGJtY2dkRzhnY21WbmFXOXVZV3dnWTI5dWRtVnVkR2x2Ym5NdUlGUm9hWE1nY0hKdmNHVnlkSGtnWTJGdUlHSmxJSE5sZENCMGJ5QnZkbVZ5Y21sa1pWeHVJQ0FnS2lCMGFHVWdaR1ZtWVhWc2RDQmhjSEJzYVdOaGRHbHZiaUJzYjJOaGJHVWdabTl5SUhSb2FYTWdjM0JsWTJsbWFXTWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxMQ0JsYm1GaWJHbHVaeUJ3WlhJdFkyOXRjRzl1Wlc1MFhHNGdJQ0FxSUd4dlkyRnNhWHBoZEdsdmJpQjNhR1Z1SUc1bFpXUmxaQzVjYmlBZ0lDb3ZYRzRnSUd4dlkyRnNaVDg2SUhOMGNtbHVaenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJtWnBaM1Z5WVhScGIyNGdabTl5SUd4cGMzUWdhWFJsYlNCeVpXNWtaWEpwYm1jZ1ltVm9ZWFpwYjNJdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUVSbFptbHVaWE1nYUc5M0lHeHBjM1FnYVhSbGJYTWdjMmh2ZFd4a0lHSmxJSEpsYm1SbGNtVmtJR2x1SUhSb1pTQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlGUm9hWE1nY0hKdmNHVnlkSGtnYUc5c1pITWdZU0JqYjI1bWFXZDFjbUYwYVc5dUlHOWlhbVZqZENCMGFHRjBJSE53WldOcFptbGxjeUIwYUdVZ2RHRm5JRzVoYldWY2JpQWdJQ29nWVc1a0lHOTBhR1Z5SUhCeWIzQmxjblJwWlhNZ2JtVmxaR1ZrSUhSdklISmxibVJsY2lCc2FYTjBJR2wwWlcxeklHTnZjbkpsWTNSc2VTNGdWR2hsSUhSaFp5QndjbTl3WlhKMGVWeHVJQ0FnS2lCcFpHVnVkR2xtYVdWeklIZG9hV05vSUdOdmJYQnZibVZ1ZENCemFHOTFiR1FnWW1VZ2RYTmxaQ0IwYnlCeVpXNWtaWElnWldGamFDQnBkR1Z0SUdsdUlHRWdiR2x6ZEM1Y2JpQWdJQ29nUVdSa2FYUnBiMjVoYkNCd2NtOXdaWEowYVdWeklHTmhiaUJpWlNCcGJtTnNkV1JsWkNCMGJ5QmpkWE4wYjIxcGVtVWdkR2hsSUhKbGJtUmxjbWx1WnlCaVpXaGhkbWx2Y2k1Y2JpQWdJQ292WEc0Z0lHbDBaVzA2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtJRDBnZXlCMFlXYzZJRndpWENJZ2ZUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRVI1Ym1GdGFXTWdjSEp2Y0dWeWRHbGxjeUJqYjI1bWFXZDFjbUYwYVc5dUlHWnZjaUJ5ZFc1MGFXMWxJR04xYzNSdmJXbDZZWFJwYjI0dVhHNGdJQ0FxSUVCemRXMXRZWEo1SUVOdmJuUmhhVzV6SUd0bGVTMTJZV3gxWlNCd1lXbHljeUJ2WmlCa2VXNWhiV2xqSUhCeWIzQmxjblJwWlhNZ2RHaGhkQ0JqWVc0Z1ltVWdZWEJ3YkdsbFpDQjBieUIwYUdVZ1kyOXRjRzl1Wlc1MFhHNGdJQ0FxSUdGMElISjFiblJwYldVdUlGUm9hWE1nWm14bGVHbGliR1VnWTI5dVptbG5kWEpoZEdsdmJpQnZZbXBsWTNRZ1lXeHNiM2R6SUdadmNpQmtlVzVoYldsaklIQnliM0JsY25SNUlHRnpjMmxuYm0xbGJuUWdkMmwwYUc5MWRGeHVJQ0FnS2lCeVpYRjFhWEpwYm1jZ1pYaHdiR2xqYVhRZ2FXNXdkWFFnWW1sdVpHbHVaM01nWm05eUlHVjJaWEo1SUhCdmMzTnBZbXhsSUdOdmJtWnBaM1Z5WVhScGIyNGdiM0IwYVc5dUxpQlFjbTl3WlhKMGFXVnpJR1p5YjIxY2JpQWdJQ29nZEdocGN5QnZZbXBsWTNRZ1lYSmxJSEJoY25ObFpDQmhibVFnWVhCd2JHbGxaQ0IwYnlCMGFHVWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxJSFJvY205MVoyZ2dkR2hsSUhCaGNuTmxVSEp2Y0hNZ2JXVjBhRzlrTEZ4dUlDQWdLaUJsYm1GaWJHbHVaeUJqZFhOMGIyMXBlbUZpYkdVZ1kyOXRjRzl1Wlc1MElHSmxhR0YyYVc5eUlHSmhjMlZrSUc5dUlHVjRkR1Z5Ym1Gc0lHTnZibVpwWjNWeVlYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCd2NtOXdjem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNGdQU0I3ZlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFSmhjMlVnY205MWRHVWdjR0YwYUNCbWIzSWdZMjl0Y0c5dVpXNTBJRzVoZG1sbllYUnBiMjR1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRVJsWm1sdVpYTWdkR2hsSUdKaGMyVWdjbTkxZEdVZ2NHRjBhQ0IxYzJWa0lHWnZjaUJ1WVhacFoyRjBhVzl1SUdGamRHbHZibk1nY21Wc1lYUmxaQ0IwYnlCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDb2dWR2hwY3lCcGN5QnZablJsYmlCMWMyVmtJR0Z6SUdFZ2NISmxabWw0SUdadmNpQmpiMjV6ZEhKMVkzUnBibWNnYm1GMmFXZGhkR2x2YmlCVlVreHpJSGRvWlc0Z2RISmhibk5wZEdsdmJtbHVaeUJpWlhSM1pXVnVYRzRnSUNBcUlHUnBabVpsY21WdWRDQnZjR1Z5WVhScGIyNXpJRzl5SUhacFpYZHpMaUJVYUdVZ2NtOTFkR1VnYUdWc2NITWdaWE4wWVdKc2FYTm9JSFJvWlNCamIyMXdiMjVsYm5RbmN5QndiM05wZEdsdmJpQnBiaUIwYUdWY2JpQWdJQ29nWVhCd2JHbGpZWFJwYjI0bmN5QnliM1YwYVc1bklHaHBaWEpoY21Ob2VTNWNiaUFnSUNvdlhHNGdJSEp2ZFhSbFB6b2djM1J5YVc1bklEMGdYQ0pjSWp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiblJ5YjJ4eklIZG9aWFJvWlhJZ1ltOXlaR1Z5Y3lCaGNtVWdaR2x6Y0d4aGVXVmtJR0Z5YjNWdVpDQjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBYzNWdGJXRnllU0JDYjI5c1pXRnVJR1pzWVdjZ2RHaGhkQ0JrWlhSbGNtMXBibVZ6SUdsbUlIUm9aU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJR0psSUhacGMzVmhiR3g1SUc5MWRHeHBibVZrSUhkcGRHZ2dZbTl5WkdWeWN5NWNiaUFnSUNvZ1YyaGxiaUIwY25WbExDQmliM0prWlhKeklHRnlaU0J6YUc5M2JpQjBieUIyYVhOMVlXeHNlU0J6WlhCaGNtRjBaU0IwYUdVZ1kyOXRjRzl1Wlc1MElHWnliMjBnYzNWeWNtOTFibVJwYm1jZ1kyOXVkR1Z1ZEM1Y2JpQWdJQ292WEc0Z0lHSnZjbVJsY25NNklHSnZiMnhsWVc0Z1BTQm1ZV3h6WlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEJ2Ym1WdWRDQnVZVzFsSUdsa1pXNTBhV1pwWlhJZ1ptOXlJR3h2WjJkcGJtY2dZVzVrSUd4dlkyRnNhWHBoZEdsdmJpQmpiMjUwWlhoMGN5NWNiaUFnSUNvZ1FITjFiVzFoY25rZ1UzUnZjbVZ6SUhSb1pTQmpiMjF3YjI1bGJuUW5jeUJ1WVcxbElIZG9hV05vSUdseklIVnpaV1FnWVhNZ1lTQnJaWGtnWm05eUlHeHZaMmRwYm1jZ1kyOXVkR1Y0ZEhOY2JpQWdJQ29nWVc1a0lHRnpJR0VnWW1GelpTQm1iM0lnYkc5allXeGxJSEpsYzI5c2RYUnBiMjR1WEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCamIyMXdiMjVsYm5ST1lXMWxQem9nYzNSeWFXNW5PMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW05dmRDQnJaWGtnWm05eUlHTnZiWEJ2Ym1WdWRDQnNiMk5oYkdVZ1kyOXVkR1Y0ZENCeVpYTnZiSFYwYVc5dUxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRVpXWnBibVZ6SUhSb1pTQmlZWE5sSUd0bGVTQjFjMlZrSUhSdklISmxjMjlzZG1VZ2JHOWpZV3hwZW1GMGFXOXVJR052Ym5SbGVIUnpJR1p2Y2lCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDb2dTV1lnYm05MElHVjRjR3hwWTJsMGJIa2djSEp2ZG1sa1pXUXNJR2wwSUdSbFptRjFiSFJ6SUhSdklIUm9aU0JqYjIxd2IyNWxiblFuY3lCdVlXMWxMaUJVYUdseklHdGxlU0JwY3lCMWMyVmtJSFJ2WEc0Z0lDQXFJR3h2WVdRZ1lYQndjbTl3Y21saGRHVWdkSEpoYm5Oc1lYUnBiMjRnY21WemIzVnlZMlZ6SUdGdVpDQnNiMk5oYkdVdGMzQmxZMmxtYVdNZ1kyOXVabWxuZFhKaGRHbHZibk11WEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCc2IyTmhiR1ZTYjI5MFB6b2djM1J5YVc1bk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdRM1Z5Y21WdWRDQjJZV3gxWlNCdlppQjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBYzNWdGJXRnllU0JEWVc0Z1ltVWdZU0J6ZEhKcGJtY3NJRzUxYldKbGNpd2daR0YwWlN3Z2IzSWdZWEp5WVhrZ2IyWWdjM1J5YVc1bklHOXlJRzlpYW1WamRITXVYRzRnSUNBcUwxeHVJQ0IyWVd4MVpUODZJR0Z1ZVR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGSmxabVZ5Wlc1alpTQjBieUJEVWxWRUlHOXdaWEpoZEdsdmJpQmpiMjV6ZEdGdWRITWdabTl5SUhSbGJYQnNZWFJsSUhWellXZGxMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkZlSEJ2YzJWeklIUm9aU0JQY0dWeVlYUnBiMjVMWlhseklHVnVkVzBnZEc4Z2RHaGxJR052YlhCdmJtVnVkQ0IwWlcxd2JHRjBaU3dnWlc1aFlteHBibWRjYmlBZ0lDb2dZMjl1WkdsMGFXOXVZV3dnY21WdVpHVnlhVzVuSUdGdVpDQmlaV2hoZG1sdmNpQmlZWE5sWkNCdmJpQnZjR1Z5WVhScGIyNGdkSGx3WlhNdUlGUm9hWE1nY0hKdmRHVmpkR1ZrWEc0Z0lDQXFJSEpsWVdSdmJteDVJSEJ5YjNCbGNuUjVJR1Z1YzNWeVpYTWdkR2hoZENCMFpXMXdiR0YwWlNCc2IyZHBZeUJqWVc0Z1lXTmpaWE56SUc5d1pYSmhkR2x2YmlCamIyNXpkR0Z1ZEhOY2JpQWdJQ29nZDJocGJHVWdiV0ZwYm5SaGFXNXBibWNnWlc1allYQnpkV3hoZEdsdmJpQmhibVFnY0hKbGRtVnVkR2x1WnlCaFkyTnBaR1Z1ZEdGc0lHMXZaR2xtYVdOaGRHbHZiaTVjYmlBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0tpQkFjbVZoWkc5dWJIbGNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0J5WldGa2IyNXNlU0JQY0dWeVlYUnBiMjVMWlhseklEMGdUM0JsY21GMGFXOXVTMlY1Y3p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFRnVaM1ZzWVhJZ1RHOWpZWFJwYjI0Z2MyVnlkbWxqWlM1Y2JpQWdJQ29nUUhOMWJXMWhjbmtnU1c1cVpXTjBaV1FnYzJWeWRtbGpaU0IwYUdGMElIQnliM1pwWkdWeklHUnBjbVZqZENCaFkyTmxjM01nZEc4Z2RHaGxJR0p5YjNkelpYSW5jeUJWVWt3Z1lXNWtJR2hwYzNSdmNua3VYRzRnSUNBcUlGVnViR2xyWlNCMGFHVWdVbTkxZEdWeUxDQk1iMk5oZEdsdmJpQmhiR3h2ZDNNZ1ptOXlJR3h2ZHkxc1pYWmxiQ0J0WVc1cGNIVnNZWFJwYjI0Z2IyWWdkR2hsSUdKeWIzZHpaWEluY3lCb2FYTjBiM0o1SUhOMFlXTnJYRzRnSUNBcUlHRnVaQ0JWVWt3Z2NHRjBhQ3dnYzNWamFDQmhjeUJ3Y205bmNtRnRiV0YwYVdOaGJHeDVJRzVoZG1sbllYUnBibWNnWW1GamF5QnZjaUJtYjNKM1lYSmtMQ0J2Y2lCMWNHUmhkR2x1WnlCMGFHVWdWVkpNSUhkcGRHaHZkWFJjYmlBZ0lDb2dkSEpwWjJkbGNtbHVaeUJoSUhKdmRYUmxJR05vWVc1blpTNGdWR2hwY3lCcGN5QjFjMlZtZFd3Z1ptOXlJSE5qWlc1aGNtbHZjeUIzYUdWeVpTQjViM1VnYm1WbFpDQjBieUJwYm5SbGNtRmpkQ0IzYVhSb0lIUm9aVnh1SUNBZ0tpQmljbTkzYzJWeUlHaHBjM1J2Y25rZ2IzSWdWVkpNSUc5MWRITnBaR1VnYjJZZ1FXNW5kV3hoY2lkeklISnZkWFJwYm1jZ2MzbHpkR1Z0TENCemRXTm9JR0Z6SUdOc2IzTnBibWNnYlc5a1lXeHpMQ0JvWVc1a2JHbHVaMXh1SUNBZ0tpQndiM0J6ZEdGMFpTQmxkbVZ1ZEhNc0lHOXlJSE4xY0hCdmNuUnBibWNnWTNWemRHOXRJRzVoZG1sbllYUnBiMjRnYkc5bmFXTXVYRzRnSUNBcVhHNGdJQ0FxTDF4dUlDQnNiMk5oZEdsdmJpRTZJR0Z1ZVR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGSmxjRzl6YVhSdmNua2dhVzV6ZEdGdVkyVWdabTl5SUdSaGRHRWdiR0Y1WlhJZ2IzQmxjbUYwYVc5dWN5NWNiaUFnSUNvZ1FITjFiVzFoY25rZ1VISnZkbWxrWlhNZ1lTQmpiMjV1WldOMGFXOXVJSFJ2SUhSb1pTQmtZWFJoSUd4aGVXVnlJR1p2Y2lCeVpYUnlhV1YyYVc1bklHRnVaQ0J0WVc1cGNIVnNZWFJwYm1jZ1pHRjBZUzVjYmlBZ0lDb2dWR2hwY3lCcGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCMGFHVWdSR1ZqWVdaU1pYQnZjMmwwYjNKNUlHTnNZWE56TENCcGJtbDBhV0ZzYVhwbFpDQnNZWHBwYkhrZ2FXNGdkR2hsSUhKbGNHOXphWFJ2Y25rZ1oyVjBkR1Z5TGx4dUlDQWdLaUJVYUdVZ2NtVndiM05wZEc5eWVTQnBjeUIxYzJWa0lIUnZJSEJsY21admNtMGdRMUpWUkNBb1EzSmxZWFJsTENCU1pXRmtMQ0JWY0dSaGRHVXNJRVJsYkdWMFpTa2diM0JsY21GMGFXOXVjeUJ2YmlCMGFHVmNiaUFnSUNvZ1pHRjBZU0J0YjJSbGJDQmhibVFnY0hKdmRtbGtaWE1nYldWMGFHOWtjeUJtYjNJZ2NYVmxjbmxwYm1jZ1lXNWtJR1pwYkhSbGNtbHVaeUJrWVhSaElHSmhjMlZrSUc5dUlITndaV05wWm1saklHTnlhWFJsY21saExseHVJQ0FnS2x4dUlDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ1gzSmxjRzl6YVhSdmNuay9PaUJKVW1Wd2IzTnBkRzl5ZVR4TlBqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRWx1YVhScFlXeHBlbUYwYVc5dUlITjBZWFIxY3lCbWJHRm5JR1p2Y2lCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQlVjbUZqYTNNZ2QyaGxkR2hsY2lCMGFHVWdZMjl0Y0c5dVpXNTBJR2hoY3lCamIyMXdiR1YwWldRZ2FYUnpJR2x1YVhScFlXeHBlbUYwYVc5dUlIQnliMk5sYzNNdVhHNGdJQ0FxSUZSb2FYTWdabXhoWnlCcGN5QjFjMlZrSUhSdklIQnlaWFpsYm5RZ1pIVndiR2xqWVhSbElHbHVhWFJwWVd4cGVtRjBhVzl1SUdGdVpDQjBieUJrWlhSbGNtMXBibVVnYVdaY2JpQWdJQ29nWTJWeWRHRnBiaUJ2Y0dWeVlYUnBiMjV6SUhSb1lYUWdjbVZ4ZFdseVpTQnBibWwwYVdGc2FYcGhkR2x2YmlCallXNGdZbVVnY0dWeVptOXliV1ZrTGx4dUlDQWdLaUJBWkdWbVlYVnNkQ0JtWVd4elpWeHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJR2x1YVhScFlXeHBlbVZrT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlU3WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR1YyWlc1MGN6b2dWVWxGZG1WdWRGQnliM0JsY25SNUlEMGdlMzA3WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR2hoYm1Sc1pYSnpPaUJWU1VWMlpXNTBVSEp2Y0dWeWRIa2dQU0I3ZlR0Y2JseHVJQ0J3Y205MFpXTjBaV1FnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0J5WlhCdmMybDBiM0o1S0NrNklFbFNaWEJ2YzJsMGIzSjVQRTArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtVndiM05wZEc5eWVTQmhjeUJKVW1Wd2IzTnBkRzl5ZVR4TlBqdGNiaUFnZlZ4dVhHNGdJSE5sZENCeVpYQnZjMmwwYjNKNUtISmxjRzl6YVhSdmNuazZJRWxTWlhCdmMybDBiM0o1UEUwK0tTQjdYRzRnSUNBZ2RHaHBjeTVmY21Wd2IzTnBkRzl5ZVNBOUlISmxjRzl6YVhSdmNuazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnlaVzVrWlhJb0xpNHVZWEpuY3pvZ2RXNXJibTkzYmx0ZEtUb2dVSEp2YldselpUeGhibmsrSUh0Y2JpQWdJQ0IwYUdsekxteHZaMXh1SUNBZ0lDQWdMbVp2Y2loMGFHbHpMbkpsYm1SbGNpbGNiaUFnSUNBZ0lDNXBibVp2S0dCeVpXNWtaWElnWm05eUlDUjdkR2hwY3k1amIyMXdiMjVsYm5ST1lXMWxmU0IzYVhSb0lDUjdTbE5QVGk1emRISnBibWRwWm5rb1lYSm5jeWw5WUNrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCeVpXWnlaWE5vS0M0dUxtRnlaM002SUhWdWEyNXZkMjViWFNrNklGQnliMjFwYzJVOFlXNTVQaUI3WEc0Z0lDQWdkR2hwY3k1c2IyY3VabTl5S0hSb2FYTXVjbVZtY21WemFDa3VhVzVtYnloZ1VtVm1jbVZ6YUNCallXeHNaV1FnZDJsMGFDQmhjbWR6T2lBa2UyRnlaM045WUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRWE41Ym1Ob2NtOXViM1Z6YkhrZ2FXNXBkR2xoYkdsNlpYTWdkR2hsSUdOdmJYQnZibVZ1ZENCM2FYUm9JSFJvWlNCd2NtOTJhV1JsWkNCaGNtZDFiV1Z1ZEhNdVhHNGdJQ0FxSUZSb2FYTWdiV1YwYUc5a0lITmxkSE1nZEdobElHQnBibWwwYVdGc2FYcGxaR0FnY0hKdmNHVnlkSGtnZEc4Z1lIUnlkV1ZnSUc5dVkyVWdkR2hsSUdsdWFYUnBZV3hwZW1GMGFXOXVJR2x6SUdOdmJYQnNaWFJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ1lYSm5jeUF0SUVFZ2RtRnlhV0ZpYkdVZ2JuVnRZbVZ5SUc5bUlHRnlaM1Z0Wlc1MGN5QnZaaUIxYm10dWIzZHVJSFI1Y0dWeklIUm9ZWFFnWTJGdUlHSmxJSFZ6WldRZ1ptOXlJR2x1YVhScFlXeHBlbUYwYVc5dUxseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYUdWdUlIUm9aU0JwYm1sMGFXRnNhWHBoZEdsdmJpQnBjeUJqYjIxd2JHVjBaUzVjYmlBZ0lDb3ZYRzRnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtOHRkVzUxYzJWa0xYWmhjbk5jYmlBZ1lYTjVibU1nYVc1cGRHbGhiR2w2WlNndUxpNWhjbWR6T2lCMWJtdHViM2R1VzEwcE9pQlFjbTl0YVhObFBHRnVlVDRnZTF4dUlDQWdJSFJvYVhNdWFXNXBkR2xoYkdsNlpXUWdQU0IwY25WbE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJ5WVc1emJHRjBaWE1nWTI5dWRHVnVkQ0JpWVhObFpDQnZiaUIwYUdVZ2NISnZkbWxrWldRZ1lYSm5kVzFsYm5SekxseHVJQ0FnS2lCTWIyZHpJSFJvWlNCMGNtRnVjMnhoZEdsdmJpQnlaWEYxWlhOMElIZHBkR2dnZEdobElHTnZiWEJ2Ym1WdWRDQnVZVzFsSUdGdVpDQmhjbWQxYldWdWRITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JoY21keklDMGdRU0IyWVhKcFlXSnNaU0J1ZFcxaVpYSWdiMllnWVhKbmRXMWxiblJ6SUhWelpXUWdabTl5SUhSeVlXNXpiR0YwYVc5dUxseHVJQ0FnS2lCQWNtVjBkWEp1Y3lCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYVhSb0lIUm9aU0IwY21GdWMyeGhkR2x2YmlCeVpYTjFiSFF1WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUIwY21GdWMyeGhkR1VvTGk0dVlYSm5jem9nZFc1cmJtOTNibHRkS1RvZ1VISnZiV2x6WlR4aGJuaytJSHRjYmlBZ0lDQjBhR2x6TG14dloxeHVJQ0FnSUNBZ0xtWnZjaWgwYUdsekxuUnlZVzV6YkdGMFpTbGNiaUFnSUNBZ0lDNXBibVp2S0dCMGNtRnVjMnhoZEdVZ1ptOXlJQ1I3ZEdocGN5NWpiMjF3YjI1bGJuUk9ZVzFsZlNCM2FYUm9JQ1I3U2xOUFRpNXpkSEpwYm1kcFpua29ZWEpuY3lsOVlDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QndjbVYyYVdWM0tDNHVMbUZ5WjNNNklIVnVhMjV2ZDI1YlhTazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUhSb2FYTXViRzluTG1admNpaDBhR2x6TG5CeVpYWnBaWGNwTG1SbFluVm5LR0JRY21WMmFXVjNJR05oYkd4bFpDQjNhWFJvSUdGeVozTTZJQ1I3WVhKbmMzMWdLVHRjYmlBZ2ZWeHVYRzRnSUM4dklHRnplVzVqSUhCeWIyTmxjM01vTGk0dVlYSm5jem9nZFc1cmJtOTNibHRkS1RvZ1VISnZiV2x6WlR4aGJuaytJSHRjYmlBZ0x5OGdJQ0IwYUdsekxteHZaeTVtYjNJb2RHaHBjeTV3Y205alpYTnpLUzVrWldKMVp5aGdVSEp2WTJWemN5QmpZV3hzWldRZ2QybDBhQ0JoY21kek9pQWtlMkZ5WjNOOVlDazdYRzRnSUM4dklIMWNibHh1SUNBdkx5QmhjM2x1WXlCaVlYUmphRTl3WlhKaGRHbHZiaWd1TGk1aGNtZHpPaUIxYm10dWIzZHVXMTBwT2lCUWNtOXRhWE5sUEdGdWVUNGdlMXh1SUNBdkx5QWdJSFJvYVhNdWJHOW5YRzRnSUM4dklDQWdJQ0F1Wm05eUtIUm9hWE11WW1GMFkyaFBjR1Z5WVhScGIyNHBYRzRnSUM4dklDQWdJQ0F1WkdWaWRXY29ZRUpoZEdOb1QzQmxjbUYwYVc5dUlHTmhiR3hsWkNCM2FYUm9JR0Z5WjNNNklDUjdZWEpuYzMxZ0tUdGNiaUFnTHk4Z2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVGRXSnRhWFJ6SUdSaGRHRWdiM0lnY0dWeVptOXliWE1nWVc0Z1lXTjBhVzl1SUdGemMyOWphV0YwWldRZ2QybDBhQ0IwYUdVZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdZWEpuY3lBdElFRWdkbUZ5YVdGaWJHVWdiblZ0WW1WeUlHOW1JR0Z5WjNWdFpXNTBjeUJ2WmlCaGJua2dkSGx3WlNCMGJ5QmlaU0J3WVhOelpXUWdkRzhnZEdobElITjFZbTFwZENCdmNHVnlZWFJwYjI0dVhHNGdJQ0FxSUVCeVpYUjFjbTV6SUVFZ2NISnZiV2x6WlNCMGFHRjBJSEpsYzI5c2RtVnpJSGRwZEdnZ2RHaGxJSEpsYzNWc2RDQnZaaUIwYUdVZ2MzVmliV2wwSUc5d1pYSmhkR2x2Ymk1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUhOMVltMXBkQ2d1TGk1aGNtZHpPaUIxYm10dWIzZHVXMTBwT2lCUWNtOXRhWE5sUEdGdWVUNGdlMXh1SUNBZ0lIUm9hWE11Ykc5blhHNGdJQ0FnSUNBdVptOXlLSFJvYVhNdWMzVmliV2wwS1Z4dUlDQWdJQ0FnTG1sdVptOG9ZSE4xWW0xcGRDQm1iM0lnSkh0MGFHbHpMbU52YlhCdmJtVnVkRTVoYldWOUlIZHBkR2dnSkh0S1UwOU9Mbk4wY21sdVoybG1lU2hoY21kektYMWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdUbTl5YldGc2FYcGxjeUJvWVc1a2JHVnlJR1JsWm1sdWFYUnBiMjV6SUdsdWRHOGdaWGhsWTNWMFlXSnNaU0JtZFc1amRHbHZibk11WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRWwwWlhKaGRHVnpJSFJvY205MVoyZ2dZU0JvWVc1a2JHVnljeUJ0WVhBZ1lXNWtJR1Z1YzNWeVpYTWdaV0ZqYUNCbGJuUnllU0JwY3lCemRHOXlaV1FnWVhNZ1lTQmpZV3hzWVdKc1pWeHVJQ0FnS2lCbWRXNWpkR2x2YmlCdmJpQjBhR1VnWTI5dGNHOXVaVzUwTGlCUWJHRnBiaUJtZFc1amRHbHZibk1nWVhKbElITjBiM0psWkNCa2FYSmxZM1JzZVN3Z2QyaHBiR1VnYUdGdVpHeGxjaUJqYkdGemMyVnpJR0Z5WlZ4dUlDQWdLaUJwYm5OMFlXNTBhV0YwWldRZ2MyOGdkR2hsYVhJZ1lHaGhibVJzWldBZ2JXVjBhRzlrSUNodmNpQmhJR3RsZVdWa0lHOTJaWEp5YVdSbEtTQmlaV052YldWeklIUm9aU0J5WldkcGMzUmxjbVZrSUdoaGJtUnNaWEl1WEc0Z0lDQXFJRlJvYVhNZ1lXeHNiM2R6SUdSbFkyOXlZWFJ2Y25NZ2RHOGdZV05qWlhCMElHVnBkR2hsY2lCcGJteHBibVVnWm5WdVkzUnBiMjV6SUc5eUlHaGhibVJzWlhJZ1kyeGhjM05sY3lCMGNtRnVjM0JoY21WdWRHeDVMbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdWQ0JGZUhSbGJtUnpJR0JFWldOaFprVjJaVzUwU0dGdVpHeGxjbUFnZEc4Z1kyOXVjM1J5WVdsdUlHaGhibVJzWlhJZ1kyeGhjM01nZEhsd1pYTXVYRzRnSUNBcUlFQndZWEpoYlNCb1lXNWtiR1Z5Y3lBdElFUnBZM1JwYjI1aGNua2diMllnYUdGdVpHeGxjaUJ1WVcxbGN5QnRZWEJ3WldRZ2RHOGdablZ1WTNScGIyNXpJRzl5SUdoaGJtUnNaWElnWTI5dWMzUnlkV04wYjNKekxseHVJQ0FnS2lCQWNHRnlZVzBnYVc1emRHRnVZMlVnTFNCUGNIUnBiMjVoYkNCMFlYSm5aWFFnYUdGdVpHeGxjaUJwYm5OMFlXNWpaVHNnWkdWbVlYVnNkSE1nZEc4Z2RHaGxJR04xY25KbGJuUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUhCaGNuTmxTR0Z1Wkd4bGNuTThWQ0JsZUhSbGJtUnpJRVJsWTJGbVJYWmxiblJJWVc1a2JHVnlQaWhjYmlBZ0lDQm9ZVzVrYkdWeWN6b2dWVWxGZG1WdWRGQnliM0JsY25SNUxGeHVJQ0FnSUdsdWMzUmhibU5sT2lCVVhHNGdJQ2s2SUZWSlJYWmxiblJRY205d1pYSjBlU0I3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwT2lCVlNVVjJaVzUwVUhKdmNHVnlkSGtnUFNCN2ZUdGNiaUFnSUNCUFltcGxZM1F1Wlc1MGNtbGxjeWhvWVc1a2JHVnljeWt1Wm05eVJXRmphQ2dvVzJ0bGVTd2dabTVkS1NBOVBpQjdYRzRnSUNBZ0lDQnBaaUFvYVhORGJHRnpjME52Ym5OMGNuVmpkRzl5UEVSbFkyRm1SWFpsYm5SSVlXNWtiR1Z5UGlobWJpa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMnhoZW5vZ1BTQnVaWGNnWm00b0tTQmhjeUJFWldOaFprVjJaVzUwU0dGdVpHeGxjanRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaWFpsYm5RZ1BWeHVJQ0FnSUNBZ0lDQWdJR3RsZVNCcGJpQmpiR0Y2ZWlBL0lHTnNZWHA2VzJ0bGVTQmhjeUJyWlhsdlppQkVaV05oWmtWMlpXNTBTR0Z1Wkd4bGNsMGdPaUJqYkdGNmVpNW9ZVzVrYkdVN1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZEZ0clpYbGRJRDBnWlhabGJuUTdYRzRnSUNBZ0lDQWdJR2x1YzNSaGJtTmxMbWhoYm1Sc1pYSnpXMnRsZVYwZ1BTQmxkbVZ1ZER0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnRyWlhsZElEMGdabTQ3WEc0Z0lDQWdJQ0FnSUdsdWMzUmhibU5sTG1oaGJtUnNaWEp6VzJ0bGVWMGdQU0JtYmp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pXZHBjM1JsY25NZ1pYWmxiblFnWTJGc2JHSmhZMnR6SUc5dUlIUm9aU0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlV1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRkJ5YjJObGMzTmxjeUJoYmlCbGRtVnVkSE1nYldGd0lIQnliMlIxWTJWa0lHSjVJR1JsWTI5eVlYUnZjbk1nZDJobGNtVWdaV0ZqYUNCMllXeDFaU0JqWVc0Z1ltVWdZU0JtWVdOMGIzSjVYRzRnSUNBcUlISmxkSFZ5Ym1sdVp5QmhJR1oxYm1OMGFXOXVJRzl5SUdFZ1kyOXRjRzl1Wlc1MElHTnZibk4wY25WamRHOXlMaUJYYUdWdUlHRWdZMjl1YzNSeWRXTjBiM0lnYVhNZ2NtVjBkWEp1WldRc0lIUm9aU0J0WlhSb2IyUmNiaUFnSUNvZ2JXRjBZMmhwYm1jZ2RHaGxJR1YyWlc1MElHdGxlU0JwY3lCcGJuTjBZVzUwYVdGMFpXUWdZVzVrSUhOMGIzSmxaRHNnYjNSb1pYSjNhWE5sSUhSb1pTQndjbTlrZFdObFpDQm1kVzVqZEdsdmJpQnBjMXh1SUNBZ0tpQmhjM05wWjI1bFpDQmthWEpsWTNSc2VTNGdWR2hwY3lCbGJtRmliR1Z6SUdac1pYaHBZbXhsSUdWMlpXNTBJR0pwYm1ScGJtY2daR1ZtYVc1cGRHbHZibk1nWm05eUlHUmxjbWwyWldRZ1kyOXRjRzl1Wlc1MGN5NWNiaUFnSUNvZ1FIUmxiWEJzWVhSbElGUWdSWGgwWlc1a2N5QmdSR1ZqWVdaRGIyMXdiMjVsYm5ROFRXOWtaV3crWUNCMGJ5QnpZMjl3WlNCaFkyTmxjSFJoWW14bElHVjJaVzUwSUc5M2JtVnljeTVjYmlBZ0lDb2dRSEJoY21GdElHVjJaVzUwY3lBdElFUnBZM1JwYjI1aGNua2diMllnWlhabGJuUWdibUZ0WlhNZ2JXRndjR1ZrSUhSdklHWjFibU4wYVc5dUlHWmhZM1J2Y21sbGN5QnZjaUJqYjIxd2IyNWxiblFnWTI5dWMzUnlkV04wYjNKekxseHVJQ0FnS2lCQWNHRnlZVzBnYVc1emRHRnVZMlVnTFNCUGNIUnBiMjVoYkNCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVZ2RHOGdjbVZqWldsMlpTQjBhR1VnWlhabGJuUnpPeUJrWldaaGRXeDBjeUIwYnlCZ2RHaHBjMkF1WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ2NHRnljMlZGZG1WdWRITThWQ0JsZUhSbGJtUnpJRVJsWTJGbVEyOXRjRzl1Wlc1MFBFMXZaR1ZzUGo0b1hHNGdJQ0FnWlhabGJuUnpPaUJWU1VWMlpXNTBVSEp2Y0dWeWRIa3NYRzRnSUNBZ2FXNXpkR0Z1WTJVNklGUmNiaUFnS1RvZ1ZVbEZkbVZ1ZEZCeWIzQmxjblI1SUh0Y2JpQWdJQ0JqYjI1emRDQnlaWE4xYkhRNklGVkpSWFpsYm5SUWNtOXdaWEowZVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0dWMlpXNTBjeWt1Wm05eVJXRmphQ2dvVzJ0bGVTd2dabTVkS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdVlXMWxJRDBnYTJWNUlHRnpJSE4wY21sdVp6dGNiaUFnSUNBZ0lHTnZibk4wSUdWMmRDQTlJQ2htYmlCaGN5QlZTVVoxYm1OMGFXOXVUR2xyWlNrb0tUdGNiaUFnSUNBZ0lHbG1JQ2hwYzBOc1lYTnpRMjl1YzNSeWRXTjBiM0k4VkQ0b1pYWjBLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JtYmlBOUlHNWxkeUJsZG5Rb0tWdHJaWGtnWVhNZ2EyVjViMllnVkYwZ1lYTWdWVWxGZG1WdWRFaGhibVJzWlhJN1hHNGdJQ0FnSUNBZ0lHbG1JQ2htYmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RGdHVZVzFsWFNBOUlHWnVPMXh1SUNBZ0lDQWdJQ0FnSUdsdWMzUmhibU5sTG1WMlpXNTBjMXR1WVcxbFhTQTlJR1p1TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCeVpYTjFiSFJiYm1GdFpWMGdQU0JtYmp0Y2JpQWdJQ0FnSUNBZ2FXNXpkR0Z1WTJVdVpYWmxiblJ6VzI1aGJXVmRJRDBnWm00N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dWZWeHVJbDE5Il19
@@ -58,5 +58,5 @@ class DecafEventHandler extends DecafComponent_js_1.DecafComponent {
58
58
  }
59
59
  }
60
60
  exports.DecafEventHandler = DecafEventHandler;
61
- //# sourceMappingURL=DecafEventHandler.js.map
62
- //# sourceMappingURL=DecafEventHandler.cjs.map
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZFdmVudEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWkvRGVjYWZFdmVudEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSw0QkFBeUI7QUFFbEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxjQUFxQjtJQUMxRDs7Ozs7T0FLRztJQUNIO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEdBQUcsSUFBZTtRQUN2QixJQUFJLENBQUMsR0FBRzthQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxHQUFHLElBQWU7UUFDNUIsSUFBSSxDQUFDLEdBQUc7YUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUNyQixJQUFJLENBQ0gsYUFBYSxJQUFJLENBQUMsYUFBYSxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6RSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FBQyxHQUFHLElBQWU7UUFDN0IsSUFBSSxDQUFDLEdBQUc7YUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUN0QixJQUFJLENBQ0gsYUFBYSxJQUFJLENBQUMsYUFBYSxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMxRSxDQUFDO0lBQ04sQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBEZWNhZkNvbXBvbmVudCB9IGZyb20gXCIuL0RlY2FmQ29tcG9uZW50XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENsYXNzIHJlcHJlc2VudGluZyBhbiBldmVudCBoYW5kbGVyXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIGhhbmRsaW5nIGV2ZW50cyBpbiB0aGUgVUkgZGVjb3JhdG9ycyBzeXN0ZW1cbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBmb3VuZGF0aW9uIGZvciBtYW5hZ2luZyBhbmQgcHJvY2Vzc2luZyBldmVudHMgdGhhdCBvY2N1clxuICogd2l0aGluIHRoZSBVSSBjb21wb25lbnRzIGdlbmVyYXRlZCBieSB0aGUgZGVjb3JhdG9ycy5cbiAqIEBjbGFzcyBFdmVudEhhbmRsZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9ycy91aVxuICovXG5leHBvcnQgY2xhc3MgRGVjYWZFdmVudEhhbmRsZXIgZXh0ZW5kcyBEZWNhZkNvbXBvbmVudDxNb2RlbD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGVjYWZFdmVudEhhbmRsZXJcbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgRXZlbnRIYW5kbGVyIG9iamVjdFxuICAgKiBUaGlzIGNvbnN0cnVjdG9yIGN1cnJlbnRseSBkb2Vzbid0IHRha2UgYW55IHBhcmFtZXRlcnMsIGJ1dCBpdCBjYW4gYmVcbiAgICogZXh0ZW5kZWQgaW4gdGhlIGZ1dHVyZSB0byBhY2NlcHQgY29uZmlndXJhdGlvbiBvcHRpb25zIGlmIG5lZWRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBhbiBldmVudCB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIExvZ3MgdGhlIGV2ZW50IGhhbmRsaW5nIHByb2Nlc3MsIGluY2x1ZGluZyB0aGUgY29tcG9uZW50IG5hbWUgYW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgZm9yIHRoZSBldmVudCBoYW5kbGVyLlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBoYW5kbGUoLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5sb2dcbiAgICAgIC5mb3IodGhpcy5oYW5kbGUpXG4gICAgICAuaW5mbyhgY29tcG9uZW50ICR7dGhpcy5jb21wb25lbnROYW1lfSBoYW5kbGluZyAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYW4gY2xpY2sgZXZlbnQgd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgKiBMb2dzIHRoZSBldmVudCBoYW5kbGluZyBwcm9jZXNzLCBpbmNsdWRpbmcgdGhlIGNvbXBvbmVudCBuYW1lIGFuZCB0aGUgYXJndW1lbnRzIHBhc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIGZvciB0aGUgZXZlbnQgaGFuZGxlci5cbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2soLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5sb2dcbiAgICAgIC5mb3IodGhpcy5oYW5kbGVDbGljaylcbiAgICAgIC5pbmZvKFxuICAgICAgICBgY29tcG9uZW50ICR7dGhpcy5jb21wb25lbnROYW1lfSBoYW5kbGluZyBjbGljayAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWBcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBhbiBjbGljayBldmVudCB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIExvZ3MgdGhlIGV2ZW50IGhhbmRsaW5nIHByb2Nlc3MsIGluY2x1ZGluZyB0aGUgY29tcG9uZW50IG5hbWUgYW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgZm9yIHRoZSBldmVudCBoYW5kbGVyLlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBoYW5kbGVBY3Rpb24oLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5sb2dcbiAgICAgIC5mb3IodGhpcy5oYW5kbGVBY3Rpb24pXG4gICAgICAuaW5mbyhcbiAgICAgICAgYGNvbXBvbmVudCAke3RoaXMuY29tcG9uZW50TmFtZX0gaGFuZGxpbmcgYWN0aW9uICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YFxuICAgICAgKTtcbiAgfVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZFdmVudEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEZWNhZkV2ZW50SGFuZGxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBcUQ7QUFDckQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0NBQWM7SUFDakQ7Ozs7O09BS0c7SUFDSDtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxHQUFHLElBQUk7UUFDVixJQUFJLENBQUMsR0FBRzthQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxHQUFHLElBQUk7UUFDZixJQUFJLENBQUMsR0FBRzthQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3JCLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLG1CQUFtQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0gsWUFBWSxDQUFDLEdBQUcsSUFBSTtRQUNoQixJQUFJLENBQUMsR0FBRzthQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3RCLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0NBQ0o7QUE5Q0QsOENBOENDO0FBQ0QsMC9IQUEwL0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNhZkNvbXBvbmVudCB9IGZyb20gXCIuL0RlY2FmQ29tcG9uZW50LmpzXCI7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDbGFzcyByZXByZXNlbnRpbmcgYW4gZXZlbnQgaGFuZGxlclxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBoYW5kbGluZyBldmVudHMgaW4gdGhlIFVJIGRlY29yYXRvcnMgc3lzdGVtXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgbWFuYWdpbmcgYW5kIHByb2Nlc3NpbmcgZXZlbnRzIHRoYXQgb2NjdXJcbiAqIHdpdGhpbiB0aGUgVUkgY29tcG9uZW50cyBnZW5lcmF0ZWQgYnkgdGhlIGRlY29yYXRvcnMuXG4gKiBAY2xhc3MgRXZlbnRIYW5kbGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnMvdWlcbiAqL1xuZXhwb3J0IGNsYXNzIERlY2FmRXZlbnRIYW5kbGVyIGV4dGVuZHMgRGVjYWZDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERlY2FmRXZlbnRIYW5kbGVyXG4gICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgRXZlbnRIYW5kbGVyIG9iamVjdFxuICAgICAqIFRoaXMgY29uc3RydWN0b3IgY3VycmVudGx5IGRvZXNuJ3QgdGFrZSBhbnkgcGFyYW1ldGVycywgYnV0IGl0IGNhbiBiZVxuICAgICAqIGV4dGVuZGVkIGluIHRoZSBmdXR1cmUgdG8gYWNjZXB0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpZiBuZWVkZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYW4gZXZlbnQgd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIExvZ3MgdGhlIGV2ZW50IGhhbmRsaW5nIHByb2Nlc3MsIGluY2x1ZGluZyB0aGUgY29tcG9uZW50IG5hbWUgYW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIGZvciB0aGUgZXZlbnQgaGFuZGxlci5cbiAgICAgKiBAcmV0dXJucyB2b2lkXG4gICAgICovXG4gICAgaGFuZGxlKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy5oYW5kbGUpXG4gICAgICAgICAgICAuaW5mbyhgY29tcG9uZW50ICR7dGhpcy5jb21wb25lbnROYW1lfSBoYW5kbGluZyAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFuIGNsaWNrIGV2ZW50IHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBMb2dzIHRoZSBldmVudCBoYW5kbGluZyBwcm9jZXNzLCBpbmNsdWRpbmcgdGhlIGNvbXBvbmVudCBuYW1lIGFuZCB0aGUgYXJndW1lbnRzIHBhc3NlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyBmb3IgdGhlIGV2ZW50IGhhbmRsZXIuXG4gICAgICogQHJldHVybnMgdm9pZFxuICAgICAqL1xuICAgIGhhbmRsZUNsaWNrKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy5oYW5kbGVDbGljaylcbiAgICAgICAgICAgIC5pbmZvKGBjb21wb25lbnQgJHt0aGlzLmNvbXBvbmVudE5hbWV9IGhhbmRsaW5nIGNsaWNrICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYW4gY2xpY2sgZXZlbnQgd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIExvZ3MgdGhlIGV2ZW50IGhhbmRsaW5nIHByb2Nlc3MsIGluY2x1ZGluZyB0aGUgY29tcG9uZW50IG5hbWUgYW5kIHRoZSBhcmd1bWVudHMgcGFzc2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIGZvciB0aGUgZXZlbnQgaGFuZGxlci5cbiAgICAgKiBAcmV0dXJucyB2b2lkXG4gICAgICovXG4gICAgaGFuZGxlQWN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy5oYW5kbGVBY3Rpb24pXG4gICAgICAgICAgICAuaW5mbyhgY29tcG9uZW50ICR7dGhpcy5jb21wb25lbnROYW1lfSBoYW5kbGluZyBhY3Rpb24gJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSR1ZqWVdaRmRtVnVkRWhoYm1Sc1pYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZkV2t2UkdWallXWkZkbVZ1ZEVoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlEwRXNUMEZCVHl4RlFVRkZMR05CUVdNc1JVRkJSU3cwUWtGQmVVSTdRVUZGYkVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4cFFrRkJhMElzVTBGQlVTeGpRVUZ4UWp0SlFVTXhSRHM3T3pzN1QwRkxSenRKUVVOSU8xRkJRMFVzUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEVml4RFFVRkRPMGxCUlVRN096czdPenRQUVUxSE8wbEJRMGdzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCWlR0UlFVTjJRaXhKUVVGSkxFTkJRVU1zUjBGQlJ6dGhRVU5NTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8yRkJRMmhDTEVsQlFVa3NRMEZCUXl4aFFVRmhMRWxCUVVrc1EwRkJReXhoUVVGaExHRkJRV0VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRE9VVXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOSUxGZEJRVmNzUTBGQlF5eEhRVUZITEVsQlFXVTdVVUZETlVJc1NVRkJTU3hEUVVGRExFZEJRVWM3WVVGRFRDeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRoUVVOeVFpeEpRVUZKTEVOQlEwZ3NZVUZCWVN4SlFVRkpMRU5CUVVNc1lVRkJZU3h0UWtGQmJVSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVU42UlN4RFFVRkRPMGxCUTA0c1EwRkJRenRKUVVWRU96czdPenM3VDBGTlJ6dEpRVU5JTEZsQlFWa3NRMEZCUXl4SFFVRkhMRWxCUVdVN1VVRkROMElzU1VGQlNTeERRVUZETEVkQlFVYzdZVUZEVEN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dGhRVU4wUWl4SlFVRkpMRU5CUTBnc1lVRkJZU3hKUVVGSkxFTkJRVU1zWVVGQllTeHZRa0ZCYjBJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVTXhSU3hEUVVGRE8wbEJRMDRzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1RXOWtaV3dnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJFWldOaFprTnZiWEJ2Ym1WdWRDQjlJR1p5YjIwZ1hDSXVMMFJsWTJGbVEyOXRjRzl1Wlc1MFhDSTdYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnNZWE56SUhKbGNISmxjMlZ1ZEdsdVp5QmhiaUJsZG1WdWRDQm9ZVzVrYkdWeVhHNGdLaUJBYzNWdGJXRnllU0JFWldacGJtVnpJSFJvWlNCemRISjFZM1IxY21VZ1ptOXlJR2hoYm1Sc2FXNW5JR1YyWlc1MGN5QnBiaUIwYUdVZ1ZVa2daR1ZqYjNKaGRHOXljeUJ6ZVhOMFpXMWNiaUFxSUZSb2FYTWdZMnhoYzNNZ2NISnZkbWxrWlhNZ1lTQm1iM1Z1WkdGMGFXOXVJR1p2Y2lCdFlXNWhaMmx1WnlCaGJtUWdjSEp2WTJWemMybHVaeUJsZG1WdWRITWdkR2hoZENCdlkyTjFjbHh1SUNvZ2QybDBhR2x1SUhSb1pTQlZTU0JqYjIxd2IyNWxiblJ6SUdkbGJtVnlZWFJsWkNCaWVTQjBhR1VnWkdWamIzSmhkRzl5Y3k1Y2JpQXFJRUJqYkdGemN5QkZkbVZ1ZEVoaGJtUnNaWEpjYmlBcUlFQnRaVzFpWlhKUFppQnRiMlIxYkdVNmRXa3RaR1ZqYjNKaGRHOXljeTkxYVZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHVmpZV1pGZG1WdWRFaGhibVJzWlhJZ1pYaDBaVzVrY3lCRVpXTmhaa052YlhCdmJtVnVkRHhOYjJSbGJENGdlMXh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU55WldGMFpYTWdZVzRnYVc1emRHRnVZMlVnYjJZZ1JHVmpZV1pGZG1WdWRFaGhibVJzWlhKY2JpQWdJQ29nUUhOMWJXMWhjbmtnU1c1cGRHbGhiR2w2WlhNZ1lTQnVaWGNnUlhabGJuUklZVzVrYkdWeUlHOWlhbVZqZEZ4dUlDQWdLaUJVYUdseklHTnZibk4wY25WamRHOXlJR04xY25KbGJuUnNlU0JrYjJWemJpZDBJSFJoYTJVZ1lXNTVJSEJoY21GdFpYUmxjbk1zSUdKMWRDQnBkQ0JqWVc0Z1ltVmNiaUFnSUNvZ1pYaDBaVzVrWldRZ2FXNGdkR2hsSUdaMWRIVnlaU0IwYnlCaFkyTmxjSFFnWTI5dVptbG5kWEpoZEdsdmJpQnZjSFJwYjI1eklHbG1JRzVsWldSbFpDNWNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0NrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NHRnVaR3hsY3lCaGJpQmxkbVZ1ZENCM2FYUm9JSFJvWlNCd2NtOTJhV1JsWkNCaGNtZDFiV1Z1ZEhNdVhHNGdJQ0FxSUV4dlozTWdkR2hsSUdWMlpXNTBJR2hoYm1Sc2FXNW5JSEJ5YjJObGMzTXNJR2x1WTJ4MVpHbHVaeUIwYUdVZ1kyOXRjRzl1Wlc1MElHNWhiV1VnWVc1a0lIUm9aU0JoY21kMWJXVnVkSE1nY0dGemMyVmtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWVhKbmN5QXRJRlJvWlNCaGNtZDFiV1Z1ZEhNZ1ptOXlJSFJvWlNCbGRtVnVkQ0JvWVc1a2JHVnlMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QjJiMmxrWEc0Z0lDQXFMMXh1SUNCb1lXNWtiR1VvTGk0dVlYSm5jem9nZFc1cmJtOTNibHRkS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1c2IyZGNiaUFnSUNBZ0lDNW1iM0lvZEdocGN5NW9ZVzVrYkdVcFhHNGdJQ0FnSUNBdWFXNW1ieWhnWTI5dGNHOXVaVzUwSUNSN2RHaHBjeTVqYjIxd2IyNWxiblJPWVcxbGZTQm9ZVzVrYkdsdVp5QWtlMHBUVDA0dWMzUnlhVzVuYVdaNUtHRnlaM01wZldBcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWhoYm1Sc1pYTWdZVzRnWTJ4cFkyc2daWFpsYm5RZ2QybDBhQ0IwYUdVZ2NISnZkbWxrWldRZ1lYSm5kVzFsYm5SekxseHVJQ0FnS2lCTWIyZHpJSFJvWlNCbGRtVnVkQ0JvWVc1a2JHbHVaeUJ3Y205alpYTnpMQ0JwYm1Oc2RXUnBibWNnZEdobElHTnZiWEJ2Ym1WdWRDQnVZVzFsSUdGdVpDQjBhR1VnWVhKbmRXMWxiblJ6SUhCaGMzTmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUdGeVozTWdMU0JVYUdVZ1lYSm5kVzFsYm5SeklHWnZjaUIwYUdVZ1pYWmxiblFnYUdGdVpHeGxjaTVjYmlBZ0lDb2dRSEpsZEhWeWJuTWdkbTlwWkZ4dUlDQWdLaTljYmlBZ2FHRnVaR3hsUTJ4cFkyc29MaTR1WVhKbmN6b2dkVzVyYm05M2JsdGRLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVzYjJkY2JpQWdJQ0FnSUM1bWIzSW9kR2hwY3k1b1lXNWtiR1ZEYkdsamF5bGNiaUFnSUNBZ0lDNXBibVp2S0Z4dUlDQWdJQ0FnSUNCZ1kyOXRjRzl1Wlc1MElDUjdkR2hwY3k1amIyMXdiMjVsYm5ST1lXMWxmU0JvWVc1a2JHbHVaeUJqYkdsamF5QWtlMHBUVDA0dWMzUnlhVzVuYVdaNUtHRnlaM01wZldCY2JpQWdJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTR0Z1Wkd4bGN5QmhiaUJqYkdsamF5QmxkbVZ1ZENCM2FYUm9JSFJvWlNCd2NtOTJhV1JsWkNCaGNtZDFiV1Z1ZEhNdVhHNGdJQ0FxSUV4dlozTWdkR2hsSUdWMlpXNTBJR2hoYm1Sc2FXNW5JSEJ5YjJObGMzTXNJR2x1WTJ4MVpHbHVaeUIwYUdVZ1kyOXRjRzl1Wlc1MElHNWhiV1VnWVc1a0lIUm9aU0JoY21kMWJXVnVkSE1nY0dGemMyVmtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnWVhKbmN5QXRJRlJvWlNCaGNtZDFiV1Z1ZEhNZ1ptOXlJSFJvWlNCbGRtVnVkQ0JvWVc1a2JHVnlMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QjJiMmxrWEc0Z0lDQXFMMXh1SUNCb1lXNWtiR1ZCWTNScGIyNG9MaTR1WVhKbmN6b2dkVzVyYm05M2JsdGRLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVzYjJkY2JpQWdJQ0FnSUM1bWIzSW9kR2hwY3k1b1lXNWtiR1ZCWTNScGIyNHBYRzRnSUNBZ0lDQXVhVzVtYnloY2JpQWdJQ0FnSUNBZ1lHTnZiWEJ2Ym1WdWRDQWtlM1JvYVhNdVkyOXRjRzl1Wlc1MFRtRnRaWDBnYUdGdVpHeHBibWNnWVdOMGFXOXVJQ1I3U2xOUFRpNXpkSEpwYm1kcFpua29ZWEpuY3lsOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
@@ -15,5 +15,5 @@ class DecafTranslateService extends logging_1.LoggedClass {
15
15
  }
16
16
  }
17
17
  exports.DecafTranslateService = DecafTranslateService;
18
- //# sourceMappingURL=DecafTranslateService.js.map
19
- //# sourceMappingURL=DecafTranslateService.cjs.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZUcmFuc2xhdGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VpL0RlY2FmVHJhbnNsYXRlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQVc7SUFDcEQsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUE0QjtRQUNqRCxJQUFJLENBQUMsR0FBRzthQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ25CLElBQUksQ0FDSCxrQkFBa0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FDcEUsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLE1BQTRCO1FBQy9DLElBQUksQ0FBQyxHQUFHO2FBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDakIsSUFBSSxDQUNILGtCQUFrQixHQUFHLGdCQUFnQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUNwRSxDQUFDO0lBQ04sQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VkQ2xhc3MgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuZXhwb3J0IGNsYXNzIERlY2FmVHJhbnNsYXRlU2VydmljZSBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYW55IHtcbiAgICB0aGlzLmxvZ1xuICAgICAgLmZvcih0aGlzLnRyYW5zbGF0ZSlcbiAgICAgIC5pbmZvKFxuICAgICAgICBgTXVzdCB0cmFuc2xhdGUgJHtrZXl9IHdpdGggcGFyYW1zICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zIHx8IHt9KX1gXG4gICAgICApO1xuICB9XG5cbiAgaW5zdGFudChrZXk6IHN0cmluZywgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueSB7XG4gICAgdGhpcy5sb2dcbiAgICAgIC5mb3IodGhpcy5pbnN0YW50KVxuICAgICAgLmluZm8oXG4gICAgICAgIGBNdXN0IHRyYW5zbGF0ZSAke2tleX0gd2l0aCBwYXJhbXMgJHtKU09OLnN0cmluZ2lmeShwYXJhbXMgfHwge30pfWBcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZUcmFuc2xhdGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGVjYWZUcmFuc2xhdGVTZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUFnRDtBQUNoRCxNQUFhLHFCQUFzQixTQUFRLHFCQUFXO0lBQ2xELFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTTtRQUNqQixJQUFJLENBQUMsR0FBRzthQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ25CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDZixJQUFJLENBQUMsR0FBRzthQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7Q0FDSjtBQVhELHNEQVdDO0FBQ0QsMGpEQUEwakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZWRDbGFzcyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuZXhwb3J0IGNsYXNzIERlY2FmVHJhbnNsYXRlU2VydmljZSBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgICB0cmFuc2xhdGUoa2V5LCBwYXJhbXMpIHtcbiAgICAgICAgdGhpcy5sb2dcbiAgICAgICAgICAgIC5mb3IodGhpcy50cmFuc2xhdGUpXG4gICAgICAgICAgICAuaW5mbyhgTXVzdCB0cmFuc2xhdGUgJHtrZXl9IHdpdGggcGFyYW1zICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zIHx8IHt9KX1gKTtcbiAgICB9XG4gICAgaW5zdGFudChrZXksIHBhcmFtcykge1xuICAgICAgICB0aGlzLmxvZ1xuICAgICAgICAgICAgLmZvcih0aGlzLmluc3RhbnQpXG4gICAgICAgICAgICAuaW5mbyhgTXVzdCB0cmFuc2xhdGUgJHtrZXl9IHdpdGggcGFyYW1zICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zIHx8IHt9KX1gKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSR1ZqWVdaVWNtRnVjMnhoZEdWVFpYSjJhV05sTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZjM0pqTDNWcEwwUmxZMkZtVkhKaGJuTnNZWFJsVTJWeWRtbGpaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc2JVSkJRVzFDTEVOQlFVTTdRVUZGYUVRc1RVRkJUU3hQUVVGUExIRkNRVUZ6UWl4VFFVRlJMRmRCUVZjN1NVRkRjRVFzVTBGQlV5eERRVUZETEVkQlFWY3NSVUZCUlN4TlFVRTBRanRSUVVOcVJDeEpRVUZKTEVOQlFVTXNSMEZCUnp0aFFVTk1MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzJGQlEyNUNMRWxCUVVrc1EwRkRTQ3hyUWtGQmEwSXNSMEZCUnl4blFrRkJaMElzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGRGNFVXNRMEZCUXp0SlFVTk9MRU5CUVVNN1NVRkZSQ3hQUVVGUExFTkJRVU1zUjBGQlZ5eEZRVUZGTEUxQlFUUkNPMUZCUXk5RExFbEJRVWtzUTBGQlF5eEhRVUZITzJGQlEwd3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03WVVGRGFrSXNTVUZCU1N4RFFVTklMR3RDUVVGclFpeEhRVUZITEdkQ1FVRm5RaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVOd1JTeERRVUZETzBsQlEwNHNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnVEc5bloyVmtRMnhoYzNNZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyeHZaMmRwYm1kY0lqdGNibHh1Wlhod2IzSjBJR05zWVhOeklFUmxZMkZtVkhKaGJuTnNZWFJsVTJWeWRtbGpaU0JsZUhSbGJtUnpJRXh2WjJkbFpFTnNZWE56SUh0Y2JpQWdkSEpoYm5Oc1lYUmxLR3RsZVRvZ2MzUnlhVzVuTENCd1lYSmhiWE0vT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK0tUb2dZVzU1SUh0Y2JpQWdJQ0IwYUdsekxteHZaMXh1SUNBZ0lDQWdMbVp2Y2loMGFHbHpMblJ5WVc1emJHRjBaU2xjYmlBZ0lDQWdJQzVwYm1adktGeHVJQ0FnSUNBZ0lDQmdUWFZ6ZENCMGNtRnVjMnhoZEdVZ0pIdHJaWGw5SUhkcGRHZ2djR0Z5WVcxeklDUjdTbE5QVGk1emRISnBibWRwWm5rb2NHRnlZVzF6SUh4OElIdDlLWDFnWEc0Z0lDQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ2FXNXpkR0Z1ZENoclpYazZJSE4wY21sdVp5d2djR0Z5WVcxelB6b2dVbVZqYjNKa1BITjBjbWx1Wnl3Z1lXNTVQaWs2SUdGdWVTQjdYRzRnSUNBZ2RHaHBjeTVzYjJkY2JpQWdJQ0FnSUM1bWIzSW9kR2hwY3k1cGJuTjBZVzUwS1Z4dUlDQWdJQ0FnTG1sdVptOG9YRzRnSUNBZ0lDQWdJR0JOZFhOMElIUnlZVzV6YkdGMFpTQWtlMnRsZVgwZ2QybDBhQ0J3WVhKaGJYTWdKSHRLVTA5T0xuTjBjbWx1WjJsbWVTaHdZWEpoYlhNZ2ZId2dlMzBwZldCY2JpQWdJQ0FnSUNrN1hHNGdJSDFjYm4xY2JpSmRmUT09Il19