@kaspernj/api-maker 1.0.2160 → 1.0.2162

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 (524) hide show
  1. package/build/api.d.ts +46 -34
  2. package/build/api.d.ts.map +1 -1
  3. package/build/api.js +32 -25
  4. package/build/attribute-not-loaded-error.d.ts.map +1 -1
  5. package/build/attribute-not-loaded-error.js +2 -1
  6. package/build/base-error.d.ts +49 -60
  7. package/build/base-error.d.ts.map +1 -1
  8. package/build/base-error.js +3 -2
  9. package/build/base-model/column.d.ts +2 -2
  10. package/build/base-model/column.d.ts.map +1 -1
  11. package/build/base-model/column.js +3 -2
  12. package/build/base-model/reflection.d.ts +8 -3
  13. package/build/base-model/reflection.d.ts.map +1 -1
  14. package/build/base-model/reflection.js +8 -3
  15. package/build/base-model/scope.d.ts +1 -1
  16. package/build/base-model/scope.d.ts.map +1 -1
  17. package/build/base-model/scope.js +3 -2
  18. package/build/base-model.d.ts +3801 -117
  19. package/build/base-model.d.ts.map +1 -1
  20. package/build/base-model.js +271 -143
  21. package/build/bootstrap/attribute-row.d.ts +12 -0
  22. package/build/bootstrap/attribute-row.d.ts.map +1 -1
  23. package/build/bootstrap/attribute-row.js +23 -5
  24. package/build/bootstrap/attribute-rows.d.ts +8 -0
  25. package/build/bootstrap/attribute-rows.d.ts.map +1 -1
  26. package/build/bootstrap/attribute-rows.js +14 -5
  27. package/build/bootstrap/card.d.ts +17 -0
  28. package/build/bootstrap/card.d.ts.map +1 -1
  29. package/build/bootstrap/card.js +30 -10
  30. package/build/bootstrap/checkbox.d.ts +16 -0
  31. package/build/bootstrap/checkbox.d.ts.map +1 -1
  32. package/build/bootstrap/checkbox.js +20 -2
  33. package/build/bootstrap/checkboxes.d.ts +31 -0
  34. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  35. package/build/bootstrap/checkboxes.js +35 -3
  36. package/build/bootstrap/index.js +2 -1
  37. package/build/bootstrap/input.d.ts +24 -0
  38. package/build/bootstrap/input.d.ts.map +1 -1
  39. package/build/bootstrap/input.js +27 -2
  40. package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
  41. package/build/bootstrap/invalid-feedback.js +2 -1
  42. package/build/bootstrap/paginate.d.ts +5 -0
  43. package/build/bootstrap/paginate.d.ts.map +1 -1
  44. package/build/bootstrap/paginate.js +9 -4
  45. package/build/bootstrap/radio-buttons.js +2 -1
  46. package/build/bootstrap/select.js +2 -1
  47. package/build/bootstrap/sort-link.d.ts +10 -0
  48. package/build/bootstrap/sort-link.d.ts.map +1 -1
  49. package/build/bootstrap/sort-link.js +15 -4
  50. package/build/cable-connection-pool.d.ts +201 -24
  51. package/build/cable-connection-pool.d.ts.map +1 -1
  52. package/build/cable-connection-pool.js +76 -16
  53. package/build/cable-subscription-pool.d.ts +186 -20
  54. package/build/cable-subscription-pool.d.ts.map +1 -1
  55. package/build/cable-subscription-pool.js +61 -22
  56. package/build/cable-subscription.d.ts.map +1 -1
  57. package/build/cable-subscription.js +3 -2
  58. package/build/cache-key-generator.d.ts +194 -20
  59. package/build/cache-key-generator.d.ts.map +1 -1
  60. package/build/cache-key-generator.js +63 -12
  61. package/build/can-can.d.ts +146 -29
  62. package/build/can-can.d.ts.map +1 -1
  63. package/build/can-can.js +105 -19
  64. package/build/channels-consumer.d.ts +23 -1
  65. package/build/channels-consumer.d.ts.map +1 -1
  66. package/build/channels-consumer.js +26 -8
  67. package/build/collection-loader.js +2 -1
  68. package/build/collection.d.ts +361 -370
  69. package/build/collection.d.ts.map +1 -1
  70. package/build/collection.js +59 -19
  71. package/build/command-execution.d.ts +50 -26
  72. package/build/command-execution.d.ts.map +1 -1
  73. package/build/command-execution.js +31 -13
  74. package/build/command-submit-data.d.ts +50 -37
  75. package/build/command-submit-data.d.ts.map +1 -1
  76. package/build/command-submit-data.js +35 -22
  77. package/build/commands-pool.d.ts +65 -27
  78. package/build/commands-pool.d.ts.map +1 -1
  79. package/build/commands-pool.js +67 -20
  80. package/build/compose.d.ts +8 -2
  81. package/build/compose.d.ts.map +1 -1
  82. package/build/compose.js +9 -2
  83. package/build/config.d.ts +31 -15
  84. package/build/config.d.ts.map +1 -1
  85. package/build/config.js +60 -23
  86. package/build/custom-error.d.ts.map +1 -1
  87. package/build/custom-error.js +2 -1
  88. package/build/data-set-to-attributes.d.ts +14 -2
  89. package/build/data-set-to-attributes.d.ts.map +1 -1
  90. package/build/data-set-to-attributes.js +12 -3
  91. package/build/deserializer.d.ts +116 -2
  92. package/build/deserializer.d.ts.map +1 -1
  93. package/build/deserializer.js +13 -2
  94. package/build/destroy-error.d.ts.map +1 -1
  95. package/build/destroy-error.js +2 -1
  96. package/build/devise.d.ts +638 -39
  97. package/build/devise.d.ts.map +1 -1
  98. package/build/devise.js +97 -28
  99. package/build/draggable-sort/controller.d.ts +126 -35
  100. package/build/draggable-sort/controller.d.ts.map +1 -1
  101. package/build/draggable-sort/controller.js +100 -28
  102. package/build/draggable-sort/index.d.ts +55 -0
  103. package/build/draggable-sort/index.d.ts.map +1 -1
  104. package/build/draggable-sort/index.js +71 -3
  105. package/build/draggable-sort/item.d.ts +54 -0
  106. package/build/draggable-sort/item.d.ts.map +1 -1
  107. package/build/draggable-sort/item.js +94 -6
  108. package/build/error-logger.d.ts +30 -14
  109. package/build/error-logger.d.ts.map +1 -1
  110. package/build/error-logger.js +22 -11
  111. package/build/event-connection.d.ts.map +1 -1
  112. package/build/event-connection.js +3 -2
  113. package/build/event-emitter-listener.d.ts.map +1 -1
  114. package/build/event-emitter-listener.js +2 -1
  115. package/build/event-model-class.d.ts.map +1 -1
  116. package/build/event-model-class.js +2 -1
  117. package/build/events.d.ts.map +1 -1
  118. package/build/events.js +2 -1
  119. package/build/form.d.ts +23 -0
  120. package/build/form.d.ts.map +1 -1
  121. package/build/form.js +16 -4
  122. package/build/history-expo.d.ts +6 -2
  123. package/build/history-expo.d.ts.map +1 -1
  124. package/build/history-expo.js +5 -2
  125. package/build/history-react-native.d.ts +6 -2
  126. package/build/history-react-native.d.ts.map +1 -1
  127. package/build/history-react-native.js +5 -2
  128. package/build/history.js +2 -1
  129. package/build/index.d.ts.map +1 -1
  130. package/build/index.js +2 -1
  131. package/build/inputs/attachment.d.ts +11 -0
  132. package/build/inputs/attachment.d.ts.map +1 -1
  133. package/build/inputs/attachment.js +17 -4
  134. package/build/inputs/auto-submit.d.ts +41 -13
  135. package/build/inputs/auto-submit.d.ts.map +1 -1
  136. package/build/inputs/auto-submit.js +16 -4
  137. package/build/inputs/checkbox.d.ts +15 -0
  138. package/build/inputs/checkbox.d.ts.map +1 -1
  139. package/build/inputs/checkbox.js +22 -6
  140. package/build/inputs/checkboxes.d.ts +16 -0
  141. package/build/inputs/checkboxes.d.ts.map +1 -1
  142. package/build/inputs/checkboxes.js +20 -4
  143. package/build/inputs/id-for-component.d.ts +21 -2
  144. package/build/inputs/id-for-component.d.ts.map +1 -1
  145. package/build/inputs/id-for-component.js +9 -2
  146. package/build/inputs/input-wrapper.d.ts.map +1 -1
  147. package/build/inputs/input-wrapper.js +2 -1
  148. package/build/inputs/input.d.ts +36 -0
  149. package/build/inputs/input.d.ts.map +1 -1
  150. package/build/inputs/input.js +26 -7
  151. package/build/inputs/money.d.ts +2 -0
  152. package/build/inputs/money.d.ts.map +1 -1
  153. package/build/inputs/money.js +6 -3
  154. package/build/inputs/name-for-component.d.ts +21 -2
  155. package/build/inputs/name-for-component.d.ts.map +1 -1
  156. package/build/inputs/name-for-component.js +9 -2
  157. package/build/inputs/select.d.ts +33 -0
  158. package/build/inputs/select.d.ts.map +1 -1
  159. package/build/inputs/select.js +21 -4
  160. package/build/instance-of-class-name.d.ts +7 -2
  161. package/build/instance-of-class-name.d.ts.map +1 -1
  162. package/build/instance-of-class-name.js +8 -4
  163. package/build/is-expo.d.ts.map +1 -1
  164. package/build/is-expo.js +2 -1
  165. package/build/key-value-store.d.ts +24 -14
  166. package/build/key-value-store.d.ts.map +1 -1
  167. package/build/key-value-store.js +22 -12
  168. package/build/link.d.ts +30 -0
  169. package/build/link.d.ts.map +1 -1
  170. package/build/link.js +76 -30
  171. package/build/logger.d.ts +10 -6
  172. package/build/logger.d.ts.map +1 -1
  173. package/build/logger.js +7 -4
  174. package/build/merge-styles.d.ts +10 -2
  175. package/build/merge-styles.d.ts.map +1 -1
  176. package/build/merge-styles.js +10 -3
  177. package/build/modal.d.ts +2 -0
  178. package/build/modal.d.ts.map +1 -1
  179. package/build/modal.js +6 -4
  180. package/build/model-class-require.d.ts +4 -2
  181. package/build/model-class-require.d.ts.map +1 -1
  182. package/build/model-class-require.js +4 -2
  183. package/build/model-events.d.ts +139 -346
  184. package/build/model-events.d.ts.map +1 -1
  185. package/build/model-events.js +21 -9
  186. package/build/model-name.d.ts +21 -7
  187. package/build/model-name.d.ts.map +1 -1
  188. package/build/model-name.js +12 -2
  189. package/build/model-prop-type.d.ts +533 -26
  190. package/build/model-prop-type.d.ts.map +1 -1
  191. package/build/model-prop-type.js +69 -11
  192. package/build/model-recipes-loader.d.ts +7 -3
  193. package/build/model-recipes-loader.d.ts.map +1 -1
  194. package/build/model-recipes-loader.js +4 -2
  195. package/build/model-recipes-model-loader.d.ts +189 -1493
  196. package/build/model-recipes-model-loader.d.ts.map +1 -1
  197. package/build/model-recipes-model-loader.js +119 -17
  198. package/build/models-response-reader.d.ts +600 -195
  199. package/build/models-response-reader.d.ts.map +1 -1
  200. package/build/models-response-reader.js +12 -4
  201. package/build/models.d.ts +438 -1
  202. package/build/models.d.ts.map +1 -1
  203. package/build/models.js +2 -1
  204. package/build/money-formatter.d.ts +25 -31
  205. package/build/money-formatter.d.ts.map +1 -1
  206. package/build/money-formatter.js +11 -8
  207. package/build/not-loaded-error.d.ts.map +1 -1
  208. package/build/not-loaded-error.js +2 -1
  209. package/build/params.d.ts +25 -17
  210. package/build/params.d.ts.map +1 -1
  211. package/build/params.js +19 -15
  212. package/build/preloaded.d.ts +61 -64
  213. package/build/preloaded.d.ts.map +1 -1
  214. package/build/preloaded.js +10 -4
  215. package/build/reset-realtime-runtime-state.d.ts.map +1 -1
  216. package/build/reset-realtime-runtime-state.js +2 -1
  217. package/build/resize-observer.d.ts.map +1 -1
  218. package/build/resize-observer.js +2 -1
  219. package/build/rest-props-validator.d.ts +2 -2
  220. package/build/rest-props-validator.d.ts.map +1 -1
  221. package/build/rest-props-validator.js +3 -2
  222. package/build/result.d.ts +142 -175
  223. package/build/result.d.ts.map +1 -1
  224. package/build/result.js +3 -2
  225. package/build/router/route.d.ts +50 -0
  226. package/build/router/route.d.ts.map +1 -1
  227. package/build/router/route.js +39 -10
  228. package/build/router/switch.d.ts +37 -1
  229. package/build/router/switch.d.ts.map +1 -1
  230. package/build/router/switch.js +29 -7
  231. package/build/router.d.ts +20 -0
  232. package/build/router.d.ts.map +1 -1
  233. package/build/router.js +15 -4
  234. package/build/routes-native.d.ts +13 -13
  235. package/build/routes-native.d.ts.map +1 -1
  236. package/build/routes-native.js +23 -11
  237. package/build/routes.d.ts +17 -9
  238. package/build/routes.d.ts.map +1 -1
  239. package/build/routes.js +7 -2
  240. package/build/run-last.d.ts.map +1 -1
  241. package/build/run-last.js +2 -1
  242. package/build/serializer.d.ts +44 -12
  243. package/build/serializer.d.ts.map +1 -1
  244. package/build/serializer.js +36 -7
  245. package/build/services.d.ts +29 -4
  246. package/build/services.d.ts.map +1 -1
  247. package/build/services.js +16 -4
  248. package/build/session-status-updater.d.ts +73 -25
  249. package/build/session-status-updater.d.ts.map +1 -1
  250. package/build/session-status-updater.js +52 -14
  251. package/build/source-maps-loader.d.ts +88 -33
  252. package/build/source-maps-loader.d.ts.map +1 -1
  253. package/build/source-maps-loader.js +74 -18
  254. package/build/super-admin/config-reader.d.ts.map +1 -1
  255. package/build/super-admin/config-reader.js +11 -16
  256. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +10 -0
  257. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  258. package/build/super-admin/edit-page/edit-attribute-checkbox.js +16 -4
  259. package/build/super-admin/edit-page/edit-attribute-content.d.ts +9 -0
  260. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  261. package/build/super-admin/edit-page/edit-attribute-content.js +15 -4
  262. package/build/super-admin/edit-page/edit-attribute-input.d.ts +8 -0
  263. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  264. package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
  265. package/build/super-admin/edit-page/edit-attribute.d.ts +6 -0
  266. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  267. package/build/super-admin/edit-page/edit-attribute.js +11 -4
  268. package/build/super-admin/edit-page.d.ts +5 -0
  269. package/build/super-admin/edit-page.d.ts.map +1 -1
  270. package/build/super-admin/edit-page.js +11 -5
  271. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  272. package/build/super-admin/has-edit-config.js +2 -1
  273. package/build/super-admin/index-page.d.ts +4 -0
  274. package/build/super-admin/index-page.d.ts.map +1 -1
  275. package/build/super-admin/index-page.js +9 -4
  276. package/build/super-admin/index.d.ts +4 -0
  277. package/build/super-admin/index.d.ts.map +1 -1
  278. package/build/super-admin/index.js +12 -6
  279. package/build/super-admin/layout/header/index.d.ts +4 -0
  280. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  281. package/build/super-admin/layout/header/index.js +13 -8
  282. package/build/super-admin/layout/index.d.ts +24 -0
  283. package/build/super-admin/layout/index.d.ts.map +1 -1
  284. package/build/super-admin/layout/index.js +33 -5
  285. package/build/super-admin/layout/menu/index.d.ts +2 -0
  286. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  287. package/build/super-admin/layout/menu/index.js +8 -6
  288. package/build/super-admin/layout/menu/menu-content.d.ts +2 -0
  289. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  290. package/build/super-admin/layout/menu/menu-content.js +6 -4
  291. package/build/super-admin/layout/menu/menu-item.d.ts +9 -0
  292. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  293. package/build/super-admin/layout/menu/menu-item.js +15 -4
  294. package/build/super-admin/layout/no-access.d.ts +2 -0
  295. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  296. package/build/super-admin/layout/no-access.js +7 -5
  297. package/build/super-admin/model-class-table.d.ts +4 -0
  298. package/build/super-admin/model-class-table.d.ts.map +1 -1
  299. package/build/super-admin/model-class-table.js +9 -4
  300. package/build/super-admin/models.d.ts.map +1 -1
  301. package/build/super-admin/models.js +2 -1
  302. package/build/super-admin/show-nav.d.ts +2 -0
  303. package/build/super-admin/show-nav.d.ts.map +1 -1
  304. package/build/super-admin/show-nav.js +6 -4
  305. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +17 -1
  306. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  307. package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
  308. package/build/super-admin/show-page/index.d.ts +4 -0
  309. package/build/super-admin/show-page/index.d.ts.map +1 -1
  310. package/build/super-admin/show-page/index.js +9 -4
  311. package/build/super-admin/show-reflection-actions.d.ts +6 -0
  312. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  313. package/build/super-admin/show-reflection-actions.js +11 -4
  314. package/build/super-admin/show-reflection-link.d.ts +4 -0
  315. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  316. package/build/super-admin/show-reflection-link.js +9 -4
  317. package/build/super-admin/show-reflection-page.d.ts +5 -0
  318. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  319. package/build/super-admin/show-reflection-page.js +10 -4
  320. package/build/table/column-content.d.ts +155 -19
  321. package/build/table/column-content.d.ts.map +1 -1
  322. package/build/table/column-content.js +55 -12
  323. package/build/table/column-identifier.d.ts +11 -2
  324. package/build/table/column-identifier.d.ts.map +1 -1
  325. package/build/table/column-identifier.js +7 -2
  326. package/build/table/column-visible.d.ts +11 -2
  327. package/build/table/column-visible.d.ts.map +1 -1
  328. package/build/table/column-visible.js +8 -2
  329. package/build/table/components/column.d.ts +2 -0
  330. package/build/table/components/column.d.ts.map +1 -1
  331. package/build/table/components/column.js +6 -4
  332. package/build/table/components/flat-list.d.ts +2 -0
  333. package/build/table/components/flat-list.d.ts.map +1 -1
  334. package/build/table/components/flat-list.js +6 -4
  335. package/build/table/components/header.d.ts +2 -0
  336. package/build/table/components/header.d.ts.map +1 -1
  337. package/build/table/components/header.js +6 -4
  338. package/build/table/components/row.d.ts +2 -0
  339. package/build/table/components/row.d.ts.map +1 -1
  340. package/build/table/components/row.js +6 -4
  341. package/build/table/filters/attribute-element.d.ts +2 -0
  342. package/build/table/filters/attribute-element.d.ts.map +1 -1
  343. package/build/table/filters/attribute-element.js +7 -7
  344. package/build/table/filters/filter-form.d.ts +58 -0
  345. package/build/table/filters/filter-form.d.ts.map +1 -1
  346. package/build/table/filters/filter-form.js +72 -9
  347. package/build/table/filters/filter.d.ts +2 -0
  348. package/build/table/filters/filter.d.ts.map +1 -1
  349. package/build/table/filters/filter.js +6 -4
  350. package/build/table/filters/index.d.ts +127 -0
  351. package/build/table/filters/index.d.ts.map +1 -1
  352. package/build/table/filters/index.js +21 -4
  353. package/build/table/filters/load-search-modal.d.ts +130 -0
  354. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  355. package/build/table/filters/load-search-modal.js +28 -6
  356. package/build/table/filters/reflection-element.d.ts +2 -0
  357. package/build/table/filters/reflection-element.d.ts.map +1 -1
  358. package/build/table/filters/reflection-element.js +6 -4
  359. package/build/table/filters/save-search-modal.d.ts +134 -0
  360. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  361. package/build/table/filters/save-search-modal.js +36 -5
  362. package/build/table/filters/scope-element.d.ts +6 -0
  363. package/build/table/filters/scope-element.d.ts.map +1 -1
  364. package/build/table/filters/scope-element.js +13 -8
  365. package/build/table/header-column-content.d.ts +7 -0
  366. package/build/table/header-column-content.d.ts.map +1 -1
  367. package/build/table/header-column-content.js +12 -4
  368. package/build/table/header-column.d.ts +50 -0
  369. package/build/table/header-column.d.ts.map +1 -1
  370. package/build/table/header-column.js +32 -5
  371. package/build/table/header-select.d.ts +18 -0
  372. package/build/table/header-select.d.ts.map +1 -1
  373. package/build/table/header-select.js +19 -4
  374. package/build/table/model-callback-args.d.ts +116 -3
  375. package/build/table/model-callback-args.d.ts.map +1 -1
  376. package/build/table/model-callback-args.js +10 -3
  377. package/build/table/model-column.d.ts +136 -0
  378. package/build/table/model-column.d.ts.map +1 -1
  379. package/build/table/model-column.js +27 -4
  380. package/build/table/model-row.d.ts +19 -0
  381. package/build/table/model-row.d.ts.map +1 -1
  382. package/build/table/model-row.js +24 -4
  383. package/build/table/select-calculator.d.ts +37 -2
  384. package/build/table/select-calculator.d.ts.map +1 -1
  385. package/build/table/select-calculator.js +29 -6
  386. package/build/table/settings/column-row.d.ts +6 -0
  387. package/build/table/settings/column-row.d.ts.map +1 -1
  388. package/build/table/settings/column-row.js +13 -12
  389. package/build/table/settings/download-action.d.ts +5 -0
  390. package/build/table/settings/download-action.d.ts.map +1 -1
  391. package/build/table/settings/download-action.js +10 -4
  392. package/build/table/settings/index.d.ts +5 -0
  393. package/build/table/settings/index.d.ts.map +1 -1
  394. package/build/table/settings/index.js +10 -4
  395. package/build/table/should-render-loading-content.d.ts +2 -2
  396. package/build/table/should-render-loading-content.d.ts.map +1 -1
  397. package/build/table/should-render-loading-content.js +3 -2
  398. package/build/table/table-settings.d.ts +236 -43
  399. package/build/table/table-settings.d.ts.map +1 -1
  400. package/build/table/table-settings.js +104 -20
  401. package/build/table/table.d.ts +271 -0
  402. package/build/table/table.d.ts.map +1 -1
  403. package/build/table/table.js +167 -16
  404. package/build/table/use-sorting.d.ts +10 -8
  405. package/build/table/use-sorting.d.ts.map +1 -1
  406. package/build/table/use-sorting.js +16 -8
  407. package/build/table/widths.d.ts +55 -8
  408. package/build/table/widths.d.ts.map +1 -1
  409. package/build/table/widths.js +25 -2
  410. package/build/table/worker-plugins-check-all-checkbox.d.ts +18 -0
  411. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  412. package/build/table/worker-plugins-check-all-checkbox.js +25 -5
  413. package/build/table/worker-plugins-checkbox.d.ts +5 -0
  414. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  415. package/build/table/worker-plugins-checkbox.js +10 -4
  416. package/build/translated-attributes.d.ts +7 -2
  417. package/build/translated-attributes.d.ts.map +1 -1
  418. package/build/translated-attributes.js +8 -2
  419. package/build/translated-collections.d.ts +11 -2
  420. package/build/translated-collections.d.ts.map +1 -1
  421. package/build/translated-collections.js +9 -3
  422. package/build/updated-attribute.d.ts.map +1 -1
  423. package/build/updated-attribute.js +2 -1
  424. package/build/url-encode.d.ts.map +1 -1
  425. package/build/url-encode.js +2 -1
  426. package/build/use-can-can.d.ts +2 -2
  427. package/build/use-can-can.d.ts.map +1 -1
  428. package/build/use-can-can.js +27 -12
  429. package/build/use-collection.d.ts +167 -121
  430. package/build/use-collection.d.ts.map +1 -1
  431. package/build/use-collection.js +113 -44
  432. package/build/use-created-event.d.ts +120 -11
  433. package/build/use-created-event.d.ts.map +1 -1
  434. package/build/use-created-event.js +10 -7
  435. package/build/use-current-user-context.d.ts +2 -2
  436. package/build/use-current-user-context.d.ts.map +1 -1
  437. package/build/use-current-user-context.js +3 -2
  438. package/build/use-current-user.d.ts +86 -70
  439. package/build/use-current-user.d.ts.map +1 -1
  440. package/build/use-current-user.js +36 -8
  441. package/build/use-destroyed-event.d.ts +117 -8
  442. package/build/use-destroyed-event.d.ts.map +1 -1
  443. package/build/use-destroyed-event.js +29 -22
  444. package/build/use-input.d.ts +74 -12
  445. package/build/use-input.d.ts.map +1 -1
  446. package/build/use-input.js +33 -5
  447. package/build/use-model-class-event.d.ts +124 -10
  448. package/build/use-model-class-event.d.ts.map +1 -1
  449. package/build/use-model-class-event.js +26 -16
  450. package/build/use-model-event.d.ts +121 -8
  451. package/build/use-model-event.d.ts.map +1 -1
  452. package/build/use-model-event.js +24 -19
  453. package/build/use-model.d.ts +162 -244
  454. package/build/use-model.d.ts.map +1 -1
  455. package/build/use-model.js +85 -32
  456. package/build/use-resize-observer.d.ts.map +1 -1
  457. package/build/use-resize-observer.js +2 -1
  458. package/build/use-router.d.ts.map +1 -1
  459. package/build/use-router.js +2 -1
  460. package/build/use-screen-layout.d.ts +7 -2
  461. package/build/use-screen-layout.d.ts.map +1 -1
  462. package/build/use-screen-layout.js +8 -5
  463. package/build/use-shape.js +2 -1
  464. package/build/use-styles.d.ts +11 -5
  465. package/build/use-styles.d.ts.map +1 -1
  466. package/build/use-styles.js +16 -9
  467. package/build/use-updated-event.d.ts +66 -182
  468. package/build/use-updated-event.d.ts.map +1 -1
  469. package/build/use-updated-event.js +22 -18
  470. package/build/use-validation-errors.d.ts.map +1 -1
  471. package/build/use-validation-errors.js +2 -1
  472. package/build/utils/button.d.ts +14 -0
  473. package/build/utils/button.d.ts.map +1 -1
  474. package/build/utils/button.js +24 -7
  475. package/build/utils/card.d.ts +9 -0
  476. package/build/utils/card.d.ts.map +1 -1
  477. package/build/utils/card.js +13 -2
  478. package/build/utils/checkbox.d.ts +12 -0
  479. package/build/utils/checkbox.d.ts.map +1 -1
  480. package/build/utils/checkbox.js +18 -4
  481. package/build/utils/checkboxes.d.ts +25 -0
  482. package/build/utils/checkboxes.d.ts.map +1 -1
  483. package/build/utils/checkboxes.js +29 -3
  484. package/build/utils/default-style.d.ts +10 -4
  485. package/build/utils/default-style.d.ts.map +1 -1
  486. package/build/utils/default-style.js +12 -4
  487. package/build/utils/header.d.ts +6 -1
  488. package/build/utils/header.d.ts.map +1 -1
  489. package/build/utils/header.js +4 -2
  490. package/build/utils/icon.d.ts +7 -6
  491. package/build/utils/icon.d.ts.map +1 -1
  492. package/build/utils/icon.js +12 -11
  493. package/build/utils/invalid-feedback.d.ts +4 -0
  494. package/build/utils/invalid-feedback.d.ts.map +1 -1
  495. package/build/utils/invalid-feedback.js +8 -2
  496. package/build/utils/modal.d.ts +2 -0
  497. package/build/utils/modal.d.ts.map +1 -1
  498. package/build/utils/modal.js +9 -7
  499. package/build/utils/text.d.ts +8 -1
  500. package/build/utils/text.d.ts.map +1 -1
  501. package/build/utils/text.js +9 -2
  502. package/build/validation-error.d.ts +5 -2
  503. package/build/validation-error.d.ts.map +1 -1
  504. package/build/validation-error.js +5 -2
  505. package/build/validation-errors.d.ts +57 -15
  506. package/build/validation-errors.d.ts.map +1 -1
  507. package/build/validation-errors.js +37 -8
  508. package/build/websocket-request-client.d.ts +61 -15
  509. package/build/websocket-request-client.d.ts.map +1 -1
  510. package/build/websocket-request-client.js +35 -9
  511. package/build/with-api-maker.d.ts.map +1 -1
  512. package/build/with-api-maker.js +2 -1
  513. package/build/with-collection.d.ts.map +1 -1
  514. package/build/with-collection.js +2 -1
  515. package/build/with-current-user.d.ts.map +1 -1
  516. package/build/with-current-user.js +2 -1
  517. package/build/with-model.d.ts.map +1 -1
  518. package/build/with-model.js +2 -1
  519. package/build/with-router.d.ts.map +1 -1
  520. package/build/with-router.js +2 -1
  521. package/package.json +4 -3
  522. package/build/base-component.d.ts +0 -5
  523. package/build/base-component.d.ts.map +0 -1
  524. package/build/base-component.js +0 -4
package/build/can-can.js CHANGED
@@ -1,3 +1,4 @@
1
+ // @ts-check
1
2
  /* eslint-disable sort-imports */
2
3
  import * as inflection from "inflection";
3
4
  import { EventEmitter } from "eventemitter3";
@@ -5,6 +6,21 @@ import { ReadersWriterLock } from "epic-locks";
5
6
  import { digg } from "diggerize";
6
7
  import Services from "./services.js";
7
8
  const shared = {};
9
+ /**
10
+ * @typedef {{debug?: boolean}} CanOptions
11
+ */
12
+ /**
13
+ * @typedef {import("./base-model.js").BaseModelClassType | {
14
+ * modelClassData?: () => {name?: string},
15
+ * name?: string,
16
+ * resourceData?: () => {name?: string}
17
+ * } | string} AbilitySubject
18
+ */
19
+ /** @typedef {{ability: string, can: boolean, subject: string}} LoadedAbility */
20
+ /** @typedef {{ability: string, callbacks: Array<() => void>, subject: AbilitySubject}} PendingAbility */
21
+ /** @typedef {{request: Array<{ability: string, subject: AbilitySubject}>}} LoadAbilitiesRequest */
22
+ /** @typedef {{abilities: LoadedAbility[]}} LoadAbilitiesResponse */
23
+ /** @typedef {[AbilitySubject, string[]]} AbilityRequest */
8
24
  /** Ability helper and query mapper. */
9
25
  export default class ApiMakerCanCan {
10
26
  abilities = [];
@@ -22,13 +38,22 @@ export default class ApiMakerCanCan {
22
38
  lock = new ReadersWriterLock();
23
39
  abilitiesByName = new Map();
24
40
  debugTokens = new Set();
25
- /** current. */
41
+ /**
42
+ * Returns the shared CanCan helper instance.
43
+ * @returns {ApiMakerCanCan}
44
+ */
26
45
  static current() {
27
46
  if (!shared.currentApiMakerCanCan)
28
47
  shared.currentApiMakerCanCan = new ApiMakerCanCan();
29
48
  return shared.currentApiMakerCanCan;
30
49
  }
31
- /** can. */
50
+ /**
51
+ * Returns the loaded permission value for one ability and subject pair.
52
+ * @param {string} ability
53
+ * @param {AbilitySubject} subject
54
+ * @param {CanOptions} options
55
+ * @returns {boolean | null}
56
+ */
32
57
  can(ability, subject, options = {}) {
33
58
  const foundAbility = this.findAbility(ability, subject);
34
59
  if (foundAbility === undefined) {
@@ -48,7 +73,11 @@ export default class ApiMakerCanCan {
48
73
  return digg(foundAbility, "can");
49
74
  }
50
75
  }
51
- /** recordMissingAbility. */
76
+ /**
77
+ * Queues one ability lookup to be loaded from the backend.
78
+ * @param {string} ability
79
+ * @param {AbilitySubject} subject
80
+ */
52
81
  recordMissingAbility(ability, subject) {
53
82
  let missingAbilitySet = this.missingAbilities.get(subject);
54
83
  if (!missingAbilitySet) {
@@ -71,7 +100,7 @@ export default class ApiMakerCanCan {
71
100
  const missingAbilities = this.missingAbilities;
72
101
  this.missingAbilities = new Map();
73
102
  this.missingAbilitiesTimeout = null;
74
- const abilitiesToLoad = [];
103
+ const abilitiesToLoad = /** @type {AbilityRequest[]} */ ([]);
75
104
  for (const [subject, abilities] of missingAbilities.entries()) {
76
105
  abilitiesToLoad.push([subject, Array.from(abilities)]);
77
106
  }
@@ -79,26 +108,46 @@ export default class ApiMakerCanCan {
79
108
  this.loadAbilities(abilitiesToLoad);
80
109
  }
81
110
  };
82
- /** findAbility. */
111
+ /**
112
+ * Finds one previously loaded ability result.
113
+ * @param {string} ability
114
+ * @param {AbilitySubject} subject
115
+ * @returns {LoadedAbility | undefined}
116
+ */
83
117
  findAbility(ability, subject) {
84
118
  const abilityKey = this.abilityKey(ability, subject);
85
119
  if (!abilityKey)
86
120
  return undefined;
87
121
  return this.abilitiesByName.get(abilityKey);
88
122
  }
89
- /** isAbilityLoaded. */
123
+ /**
124
+ * Returns whether one ability has already been loaded.
125
+ * @param {string} ability
126
+ * @param {AbilitySubject} subject
127
+ * @returns {boolean}
128
+ */
90
129
  isAbilityLoaded(ability, subject) {
91
130
  return this.findAbility(ability, subject) !== undefined;
92
131
  }
93
- /** isReloading. */
132
+ /**
133
+ * Returns whether abilities are currently loading or resetting.
134
+ * @returns {boolean}
135
+ */
94
136
  isReloading() {
95
137
  return this.loadingCount > 0 || this.resettingGeneration !== null;
96
138
  }
97
- /** getCacheKey. */
139
+ /**
140
+ * Returns the cache key that changes whenever loaded abilities change.
141
+ * @returns {number}
142
+ */
98
143
  getCacheKey() {
99
144
  return this.cacheKey;
100
145
  }
101
- /** setDebug. */
146
+ /**
147
+ * Enables or disables debug logging for one caller token.
148
+ * @param {string | symbol} token
149
+ * @param {boolean} enabled
150
+ */
102
151
  setDebug(token, enabled) {
103
152
  if (!token)
104
153
  return;
@@ -109,16 +158,27 @@ export default class ApiMakerCanCan {
109
158
  this.debugTokens.delete(token);
110
159
  }
111
160
  }
112
- /** isDebugging. */
161
+ /**
162
+ * Returns whether any caller has enabled CanCan debug logging.
163
+ * @returns {boolean}
164
+ */
113
165
  isDebugging() {
114
166
  return this.debugTokens.size > 0;
115
167
  }
116
- /** debugLog. */
168
+ /**
169
+ * Writes one debug log message when debugging is enabled.
170
+ * @param {string} message
171
+ */
117
172
  debugLog(message) {
118
173
  if (this.isDebugging()) {
119
174
  console.log(message);
120
175
  }
121
176
  }
177
+ /**
178
+ * Loads a batch of abilities from the backend.
179
+ * @param {AbilityRequest[]} abilities
180
+ * @returns {Promise<void>}
181
+ */
122
182
  async loadAbilities(abilities) {
123
183
  const generation = this.abilitiesGeneration;
124
184
  const loadSummary = [
@@ -159,7 +219,12 @@ export default class ApiMakerCanCan {
159
219
  this.resettingGeneration = null;
160
220
  }
161
221
  }
162
- /** loadAbility. */
222
+ /**
223
+ * Loads one ability and resolves once it is available locally.
224
+ * @param {string} ability
225
+ * @param {AbilitySubject} subject
226
+ * @returns {Promise<void>}
227
+ */
163
228
  loadAbility(ability, subject) {
164
229
  return new Promise((resolve) => {
165
230
  const normalizedAbility = inflection.underscore(ability);
@@ -212,6 +277,12 @@ export default class ApiMakerCanCan {
212
277
  this.resetPromise = null;
213
278
  }
214
279
  }
280
+ /**
281
+ * Resets and reloads one batch of abilities, optionally deduped by key.
282
+ * @param {AbilityRequest[]} abilities
283
+ * @param {string | undefined} reloadKey
284
+ * @returns {Promise<void>}
285
+ */
215
286
  async reloadAbilities(abilities, reloadKey) {
216
287
  if (reloadKey && this.reloadPromises.has(reloadKey)) {
217
288
  this.debugLog(`[can-can-debug] reloadAbilities:dedupe reloadKey=${reloadKey}`);
@@ -254,9 +325,9 @@ export default class ApiMakerCanCan {
254
325
  let requestError;
255
326
  // Load abilities from backend
256
327
  try {
257
- const result = await Services.current().sendRequest("CanCan::LoadAbilities", {
328
+ const result = /** @type {LoadAbilitiesResponse} */ (await Services.current().sendRequest("CanCan::LoadAbilities", /** @type {LoadAbilitiesRequest} */ ({
258
329
  request: abilitiesToLoadData
259
- });
330
+ })));
260
331
  abilities = digg(result, "abilities");
261
332
  if (!Array.isArray(abilities)) {
262
333
  throw new Error(`Expected CanCan::LoadAbilities response abilities to be an array, got: ${typeof abilities}`);
@@ -307,7 +378,10 @@ export default class ApiMakerCanCan {
307
378
  }
308
379
  }
309
380
  };
310
- /** indexAbilitiesByName. */
381
+ /**
382
+ * Indexes loaded abilities by the lookup key used by `findAbility`.
383
+ * @param {LoadedAbility[]} abilities
384
+ */
311
385
  indexAbilitiesByName(abilities) {
312
386
  for (const abilityData of abilities) {
313
387
  if (abilityData && typeof abilityData == "object") {
@@ -318,7 +392,12 @@ export default class ApiMakerCanCan {
318
392
  }
319
393
  }
320
394
  }
321
- /** abilityKey. */
395
+ /**
396
+ * Builds the internal key used to look up one ability result.
397
+ * @param {string} ability
398
+ * @param {AbilitySubject} subject
399
+ * @returns {null | string}
400
+ */
322
401
  abilityKey(ability, subject) {
323
402
  if (!ability)
324
403
  return null;
@@ -327,7 +406,11 @@ export default class ApiMakerCanCan {
327
406
  return null;
328
407
  return `${inflection.underscore(ability)}:${subjectName}`;
329
408
  }
330
- /** subjectName. */
409
+ /**
410
+ * Extracts the subject name sent to the backend ability loader.
411
+ * @param {AbilitySubject} subject
412
+ * @returns {string | null}
413
+ */
331
414
  subjectName(subject) {
332
415
  if (!subject)
333
416
  return null;
@@ -345,11 +428,14 @@ export default class ApiMakerCanCan {
345
428
  }
346
429
  return null;
347
430
  }
348
- /** reportUnhandledAsyncError. */
431
+ /**
432
+ * Re-throws an async error on the microtask queue for existing handlers.
433
+ * @param {Error} error
434
+ */
349
435
  reportUnhandledAsyncError(error) {
350
436
  if (!error)
351
437
  return;
352
438
  Promise.reject(error);
353
439
  }
354
440
  }
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNhbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FuLWNhbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFFcEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0FBRWpCLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFDakMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNkLGVBQWUsR0FBRyxFQUFFLENBQUE7SUFDcEIsbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0lBQ3hCLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUN2QixRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ1osWUFBWSxHQUFHLENBQUMsQ0FBQTtJQUNoQixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQzVCLHVCQUF1QixHQUFHLElBQUksQ0FBQTtJQUM5QixjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUMxQixZQUFZLEdBQUcsSUFBSSxDQUFBO0lBQ25CLG1CQUFtQixHQUFHLElBQUksQ0FBQTtJQUMxQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUMzQixJQUFJLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFBO0lBQzlCLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQzNCLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRXZCLGVBQWU7SUFDZixNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMscUJB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QUNoQixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQTtRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLHlCQUF5QixDQUFFLEtBQUs7UUFDOUIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFNO1FBRWxCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQge1JlYWRlcnNXcml0ZXJMb2NrfSBmcm9tIFwiZXBpYy1sb2Nrc1wiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzLmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqIEFiaWxpdHkgaGVscGVyIGFuZCBxdWVyeSBtYXBwZXIuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckNhbkNhbiB7XG4gIGFiaWxpdGllcyA9IFtdXG4gIGFiaWxpdGllc1RvTG9hZCA9IFtdXG4gIGFiaWxpdGllc1RvTG9hZERhdGEgPSBbXVxuICBhYmlsaXRpZXNHZW5lcmF0aW9uID0gMFxuICBjYWNoZUtleSA9IDBcbiAgbG9hZGluZ0NvdW50ID0gMFxuICBtaXNzaW5nQWJpbGl0aWVzID0gbmV3IE1hcCgpXG4gIG1pc3NpbmdBYmlsaXRpZXNUaW1lb3V0ID0gbnVsbFxuICByZWxvYWRQcm9taXNlcyA9IG5ldyBNYXAoKVxuICByZXNldFByb21pc2UgPSBudWxsXG4gIHJlc2V0dGluZ0dlbmVyYXRpb24gPSBudWxsXG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBsb2NrID0gbmV3IFJlYWRlcnNXcml0ZXJMb2NrKClcbiAgYWJpbGl0aWVzQnlOYW1lID0gbmV3IE1hcCgpXG4gIGRlYnVnVG9rZW5zID0gbmV3IFNldCgpXG5cbiAgLyoqIGN1cnJlbnQuICovXG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW4pIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW4gPSBuZXcgQXBpTWFrZXJDYW5DYW4oKVxuXG4gICAgcmV0dXJuIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW5cbiAgfVxuXG4gIC8qKiBjYW4uICovXG4gIGNhbiAoYWJpbGl0eSwgc3ViamVjdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KVxuXG4gICAgaWYgKGZvdW5kQWJpbGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQWJpbGl0eSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShhYmlsaXR5KVxuICAgICAgdGhpcy5yZWNvcmRNaXNzaW5nQWJpbGl0eShub3JtYWxpemVkQWJpbGl0eSwgc3ViamVjdClcblxuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgbGV0IHN1YmplY3RMYWJlbCA9IHN1YmplY3RcblxuICAgICAgICAvLyBUcmFuc2xhdGUgcmVzb3VyY2UtbW9kZWxzIGludG8gY2xhc3MgbmFtZSBzdHJpbmdzXG4gICAgICAgIGlmICh0eXBlb2Ygc3ViamVjdCA9PSBcImZ1bmN0aW9uXCIgJiYgc3ViamVjdC5tb2RlbENsYXNzRGF0YSkge1xuICAgICAgICAgIHN1YmplY3RMYWJlbCA9IGRpZ2coc3ViamVjdC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEFiaWxpdHkgbm90IGxvYWRlZCAke3N1YmplY3RMYWJlbH0jJHtub3JtYWxpemVkQWJpbGl0eX1gLCB7YWJpbGl0aWVzOiB0aGlzLmFiaWxpdGllcywgYWJpbGl0eSwgc3ViamVjdH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWdnKGZvdW5kQWJpbGl0eSwgXCJjYW5cIilcbiAgICB9XG4gIH1cblxuICAvKiogcmVjb3JkTWlzc2luZ0FiaWxpdHkuICovXG4gIHJlY29yZE1pc3NpbmdBYmlsaXR5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgbGV0IG1pc3NpbmdBYmlsaXR5U2V0ID0gdGhpcy5taXNzaW5nQWJpbGl0aWVzLmdldChzdWJqZWN0KVxuXG4gICAgaWYgKCFtaXNzaW5nQWJpbGl0eVNldCkge1xuICAgICAgbWlzc2luZ0FiaWxpdHlTZXQgPSBuZXcgU2V0KClcbiAgICAgIHRoaXMubWlzc2luZ0FiaWxpdGllcy5zZXQoc3ViamVjdCwgbWlzc2luZ0FiaWxpdHlTZXQpXG4gICAgfVxuXG4gICAgaWYgKG1pc3NpbmdBYmlsaXR5U2V0LmhhcyhhYmlsaXR5KSkgcmV0dXJuXG5cbiAgICBtaXNzaW5nQWJpbGl0eVNldC5hZGQoYWJpbGl0eSlcbiAgICB0aGlzLnF1ZXVlTWlzc2luZ0FiaWxpdGllc0xvYWQoKVxuICB9XG5cbiAgLyoqIHF1ZXVlTWlzc2luZ0FiaWxpdGllc0xvYWQuICovXG4gIHF1ZXVlTWlzc2luZ0FiaWxpdGllc0xvYWQgKCkge1xuICAgIGlmICh0aGlzLm1pc3NpbmdBYmlsaXRpZXNUaW1lb3V0KSByZXR1cm5cblxuICAgIHRoaXMubWlzc2luZ0FiaWxpdGllc1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMubG9hZE1pc3NpbmdBYmlsaXRpZXMsIDApXG4gIH1cblxuICAvKiogbG9hZE1pc3NpbmdBYmlsaXRpZXMuICovXG4gIGxvYWRNaXNzaW5nQWJpbGl0aWVzID0gKCkgPT4ge1xuICAgIGNvbnN0IG1pc3NpbmdBYmlsaXRpZXMgPSB0aGlzLm1pc3NpbmdBYmlsaXRpZXNcblxuICAgIHRoaXMubWlzc2luZ0FiaWxpdGllcyA9IG5ldyBNYXAoKVxuICAgIHRoaXMubWlzc2luZ0FiaWxpdGllc1RpbWVvdXQgPSBudWxsXG5cbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBbc3ViamVjdCwgYWJpbGl0aWVzXSBvZiBtaXNzaW5nQWJpbGl0aWVzLmVudHJpZXMoKSkge1xuICAgICAgYWJpbGl0aWVzVG9Mb2FkLnB1c2goW3N1YmplY3QsIEFycmF5LmZyb20oYWJpbGl0aWVzKV0pXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRBYmlsaXRpZXMoYWJpbGl0aWVzVG9Mb2FkKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBmaW5kQWJpbGl0eS4gKi9cbiAgZmluZEFiaWxpdHkgKGFiaWxpdHksIHN1YmplY3QpIHtcbiAgICBjb25zdCBhYmlsaXR5S2V5ID0gdGhpcy5hYmlsaXR5S2V5KGFiaWxpdHksIHN1YmplY3QpXG4gICAgaWYgKCFhYmlsaXR5S2V5KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICByZXR1cm4gdGhpcy5hYmlsaXRpZXNCeU5hbWUuZ2V0KGFiaWxpdHlLZXkpXG4gIH1cblxuICAvKiogaXNBYmlsaXR5TG9hZGVkLiAqL1xuICBpc0FiaWxpdHlMb2FkZWQgKGFiaWxpdHksIHN1YmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KSAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICAvKiogaXNSZWxvYWRpbmcuICovXG4gIGlzUmVsb2FkaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nQ291bnQgPiAwIHx8IHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiAhPT0gbnVsbFxuICB9XG5cbiAgLyoqIGdldENhY2hlS2V5LiAqL1xuICBnZXRDYWNoZUtleSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVLZXlcbiAgfVxuXG4gIC8qKiBzZXREZWJ1Zy4gKi9cbiAgc2V0RGVidWcgKHRva2VuLCBlbmFibGVkKSB7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuXG5cbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgdGhpcy5kZWJ1Z1Rva2Vucy5hZGQodG9rZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVidWdUb2tlbnMuZGVsZXRlKHRva2VuKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBpc0RlYnVnZ2luZy4gKi9cbiAgaXNEZWJ1Z2dpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLmRlYnVnVG9rZW5zLnNpemUgPiAwXG4gIH1cblxuICAvKiogZGVidWdMb2cuICovXG4gIGRlYnVnTG9nIChtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMuaXNEZWJ1Z2dpbmcoKSkge1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkQWJpbGl0aWVzIChhYmlsaXRpZXMpIHtcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgY29uc3QgbG9hZFN1bW1hcnkgPSBbXG4gICAgICBcIltjYW4tY2FuLWRlYnVnXSBsb2FkQWJpbGl0aWVzOnN0YXJ0XCIsXG4gICAgICBgZ2VuZXJhdGlvbj0ke2dlbmVyYXRpb259YCxcbiAgICAgIGByZXF1ZXN0cz0ke2FiaWxpdGllcy5sZW5ndGh9YFxuICAgIF0uam9pbihcIjsgXCIpXG4gICAgdGhpcy5kZWJ1Z0xvZyhsb2FkU3VtbWFyeSlcblxuICAgIHRoaXMubG9hZGluZ0NvdW50ICs9IDFcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvY2sucmVhZChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllcykge1xuICAgICAgICAgIGNvbnN0IHN1YmplY3QgPSBhYmlsaXR5RGF0YVswXVxuXG4gICAgICAgICAgaWYgKCFzdWJqZWN0KSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3ViamVjdCBnaXZlbiBpbiBhYmlsaXRpZXM6ICR7c3ViamVjdH0gLSAke0pTT04uc3RyaW5naWZ5KGFiaWxpdGllcyl9YClcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWJpbGl0eURhdGFbMV0pKSB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGFuIGFycmF5IG9mIGFiaWxpdGllcyBidXQgZ290OiAke3R5cGVvZiBhYmlsaXR5RGF0YVsxXX06ICR7YWJpbGl0eURhdGFbMV19YClcblxuICAgICAgICAgIGZvciAoY29uc3QgYWJpbGl0eSBvZiBhYmlsaXR5RGF0YVsxXSkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMubG9hZEFiaWxpdHkoYWJpbGl0eSwgc3ViamVjdClcblxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZG9uZVN1bW1hcnkgPSBbXG4gICAgICAgIFwiW2Nhbi1jYW4tZGVidWddIGxvYWRBYmlsaXRpZXM6ZG9uZVwiLFxuICAgICAgICBgZ2VuZXJhdGlvbj0ke2dlbmVyYXRpb259YCxcbiAgICAgICAgYGN1cnJlbnRHZW5lcmF0aW9uPSR7dGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9ufWAsXG4gICAgICAgIGBsb2FkaW5nQ291bnQ9JHt0aGlzLmxvYWRpbmdDb3VudH1gXG4gICAgICBdLmpvaW4oXCI7IFwiKVxuICAgICAgdGhpcy5kZWJ1Z0xvZyhkb25lU3VtbWFyeSlcbiAgICAgIGlmICh0aGlzLmxvYWRpbmdDb3VudCA+IDApIHRoaXMubG9hZGluZ0NvdW50IC09IDFcbiAgICAgIGlmICh0aGlzLnJlc2V0dGluZ0dlbmVyYXRpb24gPT09IGdlbmVyYXRpb24pIHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiA9IG51bGxcbiAgICB9XG4gIH1cblxuICAvKiogbG9hZEFiaWxpdHkuICovXG4gIGxvYWRBYmlsaXR5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQWJpbGl0eSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShhYmlsaXR5KVxuXG4gICAgICBpZiAodGhpcy5pc0FiaWxpdHlMb2FkZWQobm9ybWFsaXplZEFiaWxpdHksIHN1YmplY3QpKSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5hYmlsaXRpZXNUb0xvYWQuZmluZCgoYWJpbGl0eVRvTG9hZCkgPT4gZGlnZyhhYmlsaXR5VG9Mb2FkLCBcImFiaWxpdHlcIikgPT0gbm9ybWFsaXplZEFiaWxpdHkgJiZcbiAgICAgICAgZGlnZyhhYmlsaXR5VG9Mb2FkLCBcInN1YmplY3RcIikgPT0gc3ViamVjdFxuICAgICAgKVxuXG4gICAgICBpZiAoZm91bmRBYmlsaXR5KSB7XG4gICAgICAgIGZvdW5kQWJpbGl0eS5jYWxsYmFja3MucHVzaChyZXNvbHZlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWQucHVzaCh7YWJpbGl0eTogbm9ybWFsaXplZEFiaWxpdHksIGNhbGxiYWNrczogW3Jlc29sdmVdLCBzdWJqZWN0fSlcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhLnB1c2goe2FiaWxpdHk6IG5vcm1hbGl6ZWRBYmlsaXR5LCBzdWJqZWN0fSlcblxuICAgICAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdCgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBxdWV1ZUFiaWxpdGllc1JlcXVlc3QuICovXG4gIHF1ZXVlQWJpbGl0aWVzUmVxdWVzdCAoKSB7XG4gICAgaWYgKHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dCkgcmV0dXJuXG5cbiAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc2VuZEFiaWxpdGllc1JlcXVlc3QsIDApXG4gIH1cblxuICBhc3luYyByZXNldEFiaWxpdGllcyAoKSB7XG4gICAgaWYgKHRoaXMucmVzZXRQcm9taXNlKSByZXR1cm4gdGhpcy5yZXNldFByb21pc2VcblxuICAgIHRoaXMucmVzZXRQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9jay53cml0ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWJpbGl0aWVzID0gW11cbiAgICAgICAgdGhpcy5hYmlsaXRpZXNCeU5hbWUgPSBuZXcgTWFwKClcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uICs9IDFcbiAgICAgICAgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgICAgIHRoaXMuY2FjaGVLZXkgKz0gMVxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJlc2V0U3VtbWFyeSA9IFtcbiAgICAgICAgXCJbY2FuLWNhbi1kZWJ1Z10gcmVzZXRBYmlsaXRpZXNcIixcbiAgICAgICAgYGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgICAgYGNhY2hlS2V5PSR7dGhpcy5jYWNoZUtleX1gLFxuICAgICAgICBgcXVldWVkPSR7dGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhLmxlbmd0aH1gXG4gICAgICBdLmpvaW4oXCI7IFwiKVxuICAgICAgdGhpcy5kZWJ1Z0xvZyhyZXNldFN1bW1hcnkpXG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwib25SZXNldEFiaWxpdGllc1wiKVxuICAgIH0pKClcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0UHJvbWlzZVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlc2V0UHJvbWlzZSA9IG51bGxcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWxvYWRBYmlsaXRpZXMgKGFiaWxpdGllcywgcmVsb2FkS2V5KSB7XG4gICAgaWYgKHJlbG9hZEtleSAmJiB0aGlzLnJlbG9hZFByb21pc2VzLmhhcyhyZWxvYWRLZXkpKSB7XG4gICAgICB0aGlzLmRlYnVnTG9nKGBbY2FuLWNhbi1kZWJ1Z10gcmVsb2FkQWJpbGl0aWVzOmRlZHVwZSByZWxvYWRLZXk9JHtyZWxvYWRLZXl9YClcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZFByb21pc2VzLmdldChyZWxvYWRLZXkpXG4gICAgfVxuXG4gICAgY29uc3QgcmVsb2FkU3VtbWFyeSA9IFtcbiAgICAgIFwiW2Nhbi1jYW4tZGVidWddIHJlbG9hZEFiaWxpdGllczpzdGFydFwiLFxuICAgICAgYHJlbG9hZEtleT0ke3JlbG9hZEtleSB8fCBcIm5vbmVcIn1gLFxuICAgICAgYGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgIGByZXF1ZXN0cz0ke2FiaWxpdGllcy5sZW5ndGh9YFxuICAgIF0uam9pbihcIjsgXCIpXG4gICAgdGhpcy5kZWJ1Z0xvZyhyZWxvYWRTdW1tYXJ5KVxuXG4gICAgLyoqIHByb21pc2UuICovXG4gICAgY29uc3QgcHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0QWJpbGl0aWVzKClcbiAgICAgIGF3YWl0IHRoaXMubG9hZEFiaWxpdGllcyhhYmlsaXRpZXMpXG4gICAgfSkoKVxuXG4gICAgaWYgKHJlbG9hZEtleSkgdGhpcy5yZWxvYWRQcm9taXNlcy5zZXQocmVsb2FkS2V5LCBwcm9taXNlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb21pc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5kZWJ1Z0xvZyhgW2Nhbi1jYW4tZGVidWddIHJlbG9hZEFiaWxpdGllczpkb25lIHJlbG9hZEtleT0ke3JlbG9hZEtleSB8fCBcIm5vbmVcIn07IGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YClcbiAgICAgIGlmIChyZWxvYWRLZXkpIHRoaXMucmVsb2FkUHJvbWlzZXMuZGVsZXRlKHJlbG9hZEtleSlcbiAgICB9XG4gIH1cblxuICAvKiogc2VuZEFiaWxpdGllc1JlcXVlc3QuICovXG4gIHNlbmRBYmlsaXRpZXNSZXF1ZXN0ID0gYXN5bmMgKCkgPT4ge1xuICAgIHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dCA9IG51bGxcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgY29uc3QgYWJpbGl0aWVzVG9Mb2FkID0gdGhpcy5hYmlsaXRpZXNUb0xvYWRcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWREYXRhID0gdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhXG5cbiAgICB0aGlzLmFiaWxpdGllc1RvTG9hZCA9IFtdXG4gICAgdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhID0gW11cbiAgICB0aGlzLmRlYnVnTG9nKGBbY2FuLWNhbi1kZWJ1Z10gc2VuZEFiaWxpdGllc1JlcXVlc3Q6c3RhcnQgZ2VuZXJhdGlvbj0ke2dlbmVyYXRpb259OyBxdWV1ZWQ9JHthYmlsaXRpZXNUb0xvYWREYXRhLmxlbmd0aH1gKVxuXG4gICAgbGV0IGFiaWxpdGllcyA9IFtdXG4gICAgbGV0IGRpZEZhaWwgPSBmYWxzZVxuICAgIGxldCByZXF1ZXN0RXJyb3JcblxuICAgIC8vIExvYWQgYWJpbGl0aWVzIGZyb20gYmFja2VuZFxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJDYW5DYW46OkxvYWRBYmlsaXRpZXNcIiwge1xuICAgICAgICByZXF1ZXN0OiBhYmlsaXRpZXNUb0xvYWREYXRhXG4gICAgICB9KVxuICAgICAgYWJpbGl0aWVzID0gZGlnZyhyZXN1bHQsIFwiYWJpbGl0aWVzXCIpXG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhYmlsaXRpZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQ2FuQ2FuOjpMb2FkQWJpbGl0aWVzIHJlc3BvbnNlIGFiaWxpdGllcyB0byBiZSBhbiBhcnJheSwgZ290OiAke3R5cGVvZiBhYmlsaXRpZXN9YClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZGlkRmFpbCA9IHRydWVcbiAgICAgIHJlcXVlc3RFcnJvciA9IGVycm9yXG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGxvYWQgYWJpbGl0aWVzXCIsIGVycm9yKVxuICAgIH1cblxuICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLmFiaWxpdGllc0dlbmVyYXRpb24pIHtcbiAgICAgIGNvbnN0IHN0YWxlUmVzcG9uc2VEZWJ1ZyA9IFtcbiAgICAgICAgXCJbY2FuLWNhbi1kZWJ1Z10gc2VuZEFiaWxpdGllc1JlcXVlc3Q6c3RhbGUtcmVzcG9uc2VcIixcbiAgICAgICAgYHJlcXVlc3RHZW5lcmF0aW9uPSR7Z2VuZXJhdGlvbn1gLFxuICAgICAgICBgY3VycmVudEdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgICAgYHJlcXVldWU9JHthYmlsaXRpZXNUb0xvYWQubGVuZ3RofWBcbiAgICAgIF0uam9pbihcIjsgXCIpXG4gICAgICB0aGlzLmRlYnVnTG9nKHN0YWxlUmVzcG9uc2VEZWJ1ZylcbiAgICAgIGZvciAoY29uc3QgYWJpbGl0eURhdGEgb2YgYWJpbGl0aWVzVG9Mb2FkKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgYWJpbGl0eURhdGEuY2FsbGJhY2tzKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQWJpbGl0eShhYmlsaXR5RGF0YS5hYmlsaXR5LCBhYmlsaXR5RGF0YS5zdWJqZWN0KS50aGVuKGNhbGxiYWNrKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChkaWRGYWlsKSB7XG4gICAgICB0aGlzLmRlYnVnTG9nKGBbY2FuLWNhbi1kZWJ1Z10gc2VuZEFiaWxpdGllc1JlcXVlc3Q6ZmFpbGVkIGdlbmVyYXRpb249JHtnZW5lcmF0aW9ufTsgcXVldWVkPSR7YWJpbGl0aWVzVG9Mb2FkLmxlbmd0aH1gKVxuICAgICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXNUb0xvYWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBhYmlsaXR5RGF0YS5jYWxsYmFja3MpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzb2x2ZSBjYWxsYmFja3MgdG8gYXZvaWQgZGVhZGxvY2tzIGZvciB3YWl0ZXJzIGV2ZW4gd2hlbiBsb2FkIGZhaWxlZC5cbiAgICAgIGlmIChyZXF1ZXN0RXJyb3IpIHRoaXMucmVwb3J0VW5oYW5kbGVkQXN5bmNFcnJvcihyZXF1ZXN0RXJyb3IpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGxvYWRlZCBhYmlsaXRpZXNcbiAgICB0aGlzLmFiaWxpdGllcyA9IHRoaXMuYWJpbGl0aWVzLmNvbmNhdChhYmlsaXRpZXMpXG4gICAgdGhpcy5pbmRleEFiaWxpdGllc0J5TmFtZShhYmlsaXRpZXMpXG4gICAgdGhpcy5jYWNoZUtleSArPSAxXG4gICAgdGhpcy5kZWJ1Z0xvZyhcbiAgICAgIGBbY2FuLWNhbi1kZWJ1Z10gc2VuZEFiaWxpdGllc1JlcXVlc3Q6c3VjY2VzcyBnZW5lcmF0aW9uPSR7Z2VuZXJhdGlvbn07IGxvYWRlZD0ke2FiaWxpdGllcy5sZW5ndGh9OyBjYWNoZUtleT0ke3RoaXMuY2FjaGVLZXl9YFxuICAgIClcbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwib25BYmlsaXRpZXNMb2FkZWRcIiwge2NhY2hlS2V5OiB0aGlzLmNhY2hlS2V5fSlcblxuICAgIC8vIENhbGwgdGhlIGNhbGxiYWNrcyB0aGF0IGFyZSB3YWl0aW5nIGZvciB0aGUgYWJpbGl0eSB0byBoYXZlIGJlZW4gbG9hZGVkXG4gICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXNUb0xvYWQpIHtcbiAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgYWJpbGl0eURhdGEuY2FsbGJhY2tzKSB7XG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogaW5kZXhBYmlsaXRpZXNCeU5hbWUuICovXG4gIGluZGV4QWJpbGl0aWVzQnlOYW1lIChhYmlsaXRpZXMpIHtcbiAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllcykge1xuICAgICAgaWYgKGFiaWxpdHlEYXRhICYmIHR5cGVvZiBhYmlsaXR5RGF0YSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IGFiaWxpdHlLZXkgPSB0aGlzLmFiaWxpdHlLZXkoZGlnZyhhYmlsaXR5RGF0YSwgXCJhYmlsaXR5XCIpLCBkaWdnKGFiaWxpdHlEYXRhLCBcInN1YmplY3RcIikpXG5cbiAgICAgICAgaWYgKGFiaWxpdHlLZXkpIHtcbiAgICAgICAgICB0aGlzLmFiaWxpdGllc0J5TmFtZS5zZXQoYWJpbGl0eUtleSwgYWJpbGl0eURhdGEpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogYWJpbGl0eUtleS4gKi9cbiAgYWJpbGl0eUtleSAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIGlmICghYWJpbGl0eSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHN1YmplY3ROYW1lID0gdGhpcy5zdWJqZWN0TmFtZShzdWJqZWN0KVxuICAgIGlmICghc3ViamVjdE5hbWUpIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gYCR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKGFiaWxpdHkpfToke3N1YmplY3ROYW1lfWBcbiAgfVxuXG4gIC8qKiBzdWJqZWN0TmFtZS4gKi9cbiAgc3ViamVjdE5hbWUoc3ViamVjdCkge1xuICAgIGlmICghc3ViamVjdCkgcmV0dXJuIG51bGxcblxuICAgIGlmICh0eXBlb2Ygc3ViamVjdCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gc3ViamVjdFxuICAgIH1cblxuICAgIGlmIChzdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhKSB7XG4gICAgICByZXR1cm4gZGlnZyhzdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuICAgIH1cblxuICAgIGlmIChzdWJqZWN0LnJlc291cmNlRGF0YSkge1xuICAgICAgcmV0dXJuIGRpZ2coc3ViamVjdC5yZXNvdXJjZURhdGEoKSwgXCJuYW1lXCIpXG4gICAgfVxuXG4gICAgaWYgKHN1YmplY3QubmFtZSkge1xuICAgICAgcmV0dXJuIHN1YmplY3QubmFtZVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKiogcmVwb3J0VW5oYW5kbGVkQXN5bmNFcnJvci4gKi9cbiAgcmVwb3J0VW5oYW5kbGVkQXN5bmNFcnJvciAoZXJyb3IpIHtcbiAgICBpZiAoIWVycm9yKSByZXR1cm5cblxuICAgIFByb21pc2UucmVqZWN0KGVycm9yKVxuICB9XG59XG4iXX0=
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNhbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FuLWNhbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osaUNBQWlDO0FBQ2pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sWUFBWSxDQUFBO0FBQzVDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBRXBDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQjs7R0FFRztBQUNIOzs7Ozs7R0FNRztBQUNILGdGQUFnRjtBQUNoRix5R0FBeUc7QUFDekcsbUdBQW1HO0FBQ25HLG9FQUFvRTtBQUNwRSwyREFBMkQ7QUFFM0QsdUNBQXVDO0FBQ3ZDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ2QsZUFBZSxHQUFHLEVBQUUsQ0FBQTtJQUNwQixtQkFBbUIsR0FBRyxFQUFFLENBQUE7SUFDeEIsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDWixZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDNUIsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO0lBQzlCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQzFCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFDbkIsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO0lBQzFCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0lBQzNCLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUE7SUFDOUIsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFF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RyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE9BQU87UUFDakIsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQTtRQUV6QixJQUFJLE9BQU8sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU8sT0FBTyxDQUFBO1FBQ2hCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDL0MsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBRSxLQUFLO1FBQzlCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTTtRQUVsQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQge1JlYWRlcnNXcml0ZXJMb2NrfSBmcm9tIFwiZXBpYy1sb2Nrc1wiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzLmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqXG4gKiBAdHlwZWRlZiB7e2RlYnVnPzogYm9vbGVhbn19IENhbk9wdGlvbnNcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLkJhc2VNb2RlbENsYXNzVHlwZSB8IHtcbiAqICAgbW9kZWxDbGFzc0RhdGE/OiAoKSA9PiB7bmFtZT86IHN0cmluZ30sXG4gKiAgIG5hbWU/OiBzdHJpbmcsXG4gKiAgIHJlc291cmNlRGF0YT86ICgpID0+IHtuYW1lPzogc3RyaW5nfVxuICogfSB8IHN0cmluZ30gQWJpbGl0eVN1YmplY3RcbiAqL1xuLyoqIEB0eXBlZGVmIHt7YWJpbGl0eTogc3RyaW5nLCBjYW46IGJvb2xlYW4sIHN1YmplY3Q6IHN0cmluZ319IExvYWRlZEFiaWxpdHkgKi9cbi8qKiBAdHlwZWRlZiB7e2FiaWxpdHk6IHN0cmluZywgY2FsbGJhY2tzOiBBcnJheTwoKSA9PiB2b2lkPiwgc3ViamVjdDogQWJpbGl0eVN1YmplY3R9fSBQZW5kaW5nQWJpbGl0eSAqL1xuLyoqIEB0eXBlZGVmIHt7cmVxdWVzdDogQXJyYXk8e2FiaWxpdHk6IHN0cmluZywgc3ViamVjdDogQWJpbGl0eVN1YmplY3R9Pn19IExvYWRBYmlsaXRpZXNSZXF1ZXN0ICovXG4vKiogQHR5cGVkZWYge3thYmlsaXRpZXM6IExvYWRlZEFiaWxpdHlbXX19IExvYWRBYmlsaXRpZXNSZXNwb25zZSAqL1xuLyoqIEB0eXBlZGVmIHtbQWJpbGl0eVN1YmplY3QsIHN0cmluZ1tdXX0gQWJpbGl0eVJlcXVlc3QgKi9cblxuLyoqIEFiaWxpdHkgaGVscGVyIGFuZCBxdWVyeSBtYXBwZXIuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckNhbkNhbiB7XG4gIGFiaWxpdGllcyA9IFtdXG4gIGFiaWxpdGllc1RvTG9hZCA9IFtdXG4gIGFiaWxpdGllc1RvTG9hZERhdGEgPSBbXVxuICBhYmlsaXRpZXNHZW5lcmF0aW9uID0gMFxuICBjYWNoZUtleSA9IDBcbiAgbG9hZGluZ0NvdW50ID0gMFxuICBtaXNzaW5nQWJpbGl0aWVzID0gbmV3IE1hcCgpXG4gIG1pc3NpbmdBYmlsaXRpZXNUaW1lb3V0ID0gbnVsbFxuICByZWxvYWRQcm9taXNlcyA9IG5ldyBNYXAoKVxuICByZXNldFByb21pc2UgPSBudWxsXG4gIHJlc2V0dGluZ0dlbmVyYXRpb24gPSBudWxsXG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBsb2NrID0gbmV3IFJlYWRlcnNXcml0ZXJMb2NrKClcbiAgYWJpbGl0aWVzQnlOYW1lID0gbmV3IE1hcCgpXG4gIGRlYnVnVG9rZW5zID0gbmV3IFNldCgpXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNoYXJlZCBDYW5DYW4gaGVscGVyIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7QXBpTWFrZXJDYW5DYW59XG4gICAqL1xuICBzdGF0aWMgY3VycmVudCAoKSB7XG4gICAgaWYgKCFzaGFyZWQuY3VycmVudEFwaU1ha2VyQ2FuQ2FuKSBzaGFyZWQuY3VycmVudEFwaU1ha2VyQ2FuQ2FuID0gbmV3IEFwaU1ha2VyQ2FuQ2FuKClcblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyQ2FuQ2FuXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbG9hZGVkIHBlcm1pc3Npb24gdmFsdWUgZm9yIG9uZSBhYmlsaXR5IGFuZCBzdWJqZWN0IHBhaXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5XG4gICAqIEBwYXJhbSB7QWJpbGl0eVN1YmplY3R9IHN1YmplY3RcbiAgICogQHBhcmFtIHtDYW5PcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtib29sZWFuIHwgbnVsbH1cbiAgICovXG4gIGNhbiAoYWJpbGl0eSwgc3ViamVjdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KVxuXG4gICAgaWYgKGZvdW5kQWJpbGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQWJpbGl0eSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShhYmlsaXR5KVxuICAgICAgdGhpcy5yZWNvcmRNaXNzaW5nQWJpbGl0eShub3JtYWxpemVkQWJpbGl0eSwgc3ViamVjdClcblxuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgbGV0IHN1YmplY3RMYWJlbCA9IHN1YmplY3RcblxuICAgICAgICAvLyBUcmFuc2xhdGUgcmVzb3VyY2UtbW9kZWxzIGludG8gY2xhc3MgbmFtZSBzdHJpbmdzXG4gICAgICAgIGlmICh0eXBlb2Ygc3ViamVjdCA9PSBcImZ1bmN0aW9uXCIgJiYgc3ViamVjdC5tb2RlbENsYXNzRGF0YSkge1xuICAgICAgICAgIHN1YmplY3RMYWJlbCA9IGRpZ2coc3ViamVjdC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEFiaWxpdHkgbm90IGxvYWRlZCAke3N1YmplY3RMYWJlbH0jJHtub3JtYWxpemVkQWJpbGl0eX1gLCB7YWJpbGl0aWVzOiB0aGlzLmFiaWxpdGllcywgYWJpbGl0eSwgc3ViamVjdH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWdnKGZvdW5kQWJpbGl0eSwgXCJjYW5cIilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUXVldWVzIG9uZSBhYmlsaXR5IGxvb2t1cCB0byBiZSBsb2FkZWQgZnJvbSB0aGUgYmFja2VuZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFiaWxpdHlcbiAgICogQHBhcmFtIHtBYmlsaXR5U3ViamVjdH0gc3ViamVjdFxuICAgKi9cbiAgcmVjb3JkTWlzc2luZ0FiaWxpdHkgKGFiaWxpdHksIHN1YmplY3QpIHtcbiAgICBsZXQgbWlzc2luZ0FiaWxpdHlTZXQgPSB0aGlzLm1pc3NpbmdBYmlsaXRpZXMuZ2V0KHN1YmplY3QpXG5cbiAgICBpZiAoIW1pc3NpbmdBYmlsaXR5U2V0KSB7XG4gICAgICBtaXNzaW5nQWJpbGl0eVNldCA9IG5ldyBTZXQoKVxuICAgICAgdGhpcy5taXNzaW5nQWJpbGl0aWVzLnNldChzdWJqZWN0LCBtaXNzaW5nQWJpbGl0eVNldClcbiAgICB9XG5cbiAgICBpZiAobWlzc2luZ0FiaWxpdHlTZXQuaGFzKGFiaWxpdHkpKSByZXR1cm5cblxuICAgIG1pc3NpbmdBYmlsaXR5U2V0LmFkZChhYmlsaXR5KVxuICAgIHRoaXMucXVldWVNaXNzaW5nQWJpbGl0aWVzTG9hZCgpXG4gIH1cblxuICAvKiogcXVldWVNaXNzaW5nQWJpbGl0aWVzTG9hZC4gKi9cbiAgcXVldWVNaXNzaW5nQWJpbGl0aWVzTG9hZCAoKSB7XG4gICAgaWYgKHRoaXMubWlzc2luZ0FiaWxpdGllc1RpbWVvdXQpIHJldHVyblxuXG4gICAgdGhpcy5taXNzaW5nQWJpbGl0aWVzVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5sb2FkTWlzc2luZ0FiaWxpdGllcywgMClcbiAgfVxuXG4gIC8qKiBsb2FkTWlzc2luZ0FiaWxpdGllcy4gKi9cbiAgbG9hZE1pc3NpbmdBYmlsaXRpZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgbWlzc2luZ0FiaWxpdGllcyA9IHRoaXMubWlzc2luZ0FiaWxpdGllc1xuXG4gICAgdGhpcy5taXNzaW5nQWJpbGl0aWVzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5taXNzaW5nQWJpbGl0aWVzVGltZW91dCA9IG51bGxcblxuICAgIGNvbnN0IGFiaWxpdGllc1RvTG9hZCA9IC8qKiBAdHlwZSB7QWJpbGl0eVJlcXVlc3RbXX0gKi8gKFtdKVxuXG4gICAgZm9yIChjb25zdCBbc3ViamVjdCwgYWJpbGl0aWVzXSBvZiBtaXNzaW5nQWJpbGl0aWVzLmVudHJpZXMoKSkge1xuICAgICAgYWJpbGl0aWVzVG9Mb2FkLnB1c2goW3N1YmplY3QsIEFycmF5LmZyb20oYWJpbGl0aWVzKV0pXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRBYmlsaXRpZXMoYWJpbGl0aWVzVG9Mb2FkKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBvbmUgcHJldmlvdXNseSBsb2FkZWQgYWJpbGl0eSByZXN1bHQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5XG4gICAqIEBwYXJhbSB7QWJpbGl0eVN1YmplY3R9IHN1YmplY3RcbiAgICogQHJldHVybnMge0xvYWRlZEFiaWxpdHkgfCB1bmRlZmluZWR9XG4gICAqL1xuICBmaW5kQWJpbGl0eSAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIGNvbnN0IGFiaWxpdHlLZXkgPSB0aGlzLmFiaWxpdHlLZXkoYWJpbGl0eSwgc3ViamVjdClcbiAgICBpZiAoIWFiaWxpdHlLZXkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiB0aGlzLmFiaWxpdGllc0J5TmFtZS5nZXQoYWJpbGl0eUtleSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb25lIGFiaWxpdHkgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5XG4gICAqIEBwYXJhbSB7QWJpbGl0eVN1YmplY3R9IHN1YmplY3RcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc0FiaWxpdHlMb2FkZWQgKGFiaWxpdHksIHN1YmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KSAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIGFiaWxpdGllcyBhcmUgY3VycmVudGx5IGxvYWRpbmcgb3IgcmVzZXR0aW5nLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGlzUmVsb2FkaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nQ291bnQgPiAwIHx8IHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiAhPT0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNhY2hlIGtleSB0aGF0IGNoYW5nZXMgd2hlbmV2ZXIgbG9hZGVkIGFiaWxpdGllcyBjaGFuZ2UuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRDYWNoZUtleSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVLZXlcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGRlYnVnIGxvZ2dpbmcgZm9yIG9uZSBjYWxsZXIgdG9rZW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3ltYm9sfSB0b2tlblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWRcbiAgICovXG4gIHNldERlYnVnICh0b2tlbiwgZW5hYmxlZCkge1xuICAgIGlmICghdG9rZW4pIHJldHVyblxuXG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZGVidWdUb2tlbnMuYWRkKHRva2VuKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlYnVnVG9rZW5zLmRlbGV0ZSh0b2tlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIGFueSBjYWxsZXIgaGFzIGVuYWJsZWQgQ2FuQ2FuIGRlYnVnIGxvZ2dpbmcuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNEZWJ1Z2dpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLmRlYnVnVG9rZW5zLnNpemUgPiAwXG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIG9uZSBkZWJ1ZyBsb2cgbWVzc2FnZSB3aGVuIGRlYnVnZ2luZyBpcyBlbmFibGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKi9cbiAgZGVidWdMb2cgKG1lc3NhZ2UpIHtcbiAgICBpZiAodGhpcy5pc0RlYnVnZ2luZygpKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIGJhdGNoIG9mIGFiaWxpdGllcyBmcm9tIHRoZSBiYWNrZW5kLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlSZXF1ZXN0W119IGFiaWxpdGllc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGxvYWRBYmlsaXRpZXMgKGFiaWxpdGllcykge1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLmFiaWxpdGllc0dlbmVyYXRpb25cbiAgICBjb25zdCBsb2FkU3VtbWFyeSA9IFtcbiAgICAgIFwiW2Nhbi1jYW4tZGVidWddIGxvYWRBYmlsaXRpZXM6c3RhcnRcIixcbiAgICAgIGBnZW5lcmF0aW9uPSR7Z2VuZXJhdGlvbn1gLFxuICAgICAgYHJlcXVlc3RzPSR7YWJpbGl0aWVzLmxlbmd0aH1gXG4gICAgXS5qb2luKFwiOyBcIilcbiAgICB0aGlzLmRlYnVnTG9nKGxvYWRTdW1tYXJ5KVxuXG4gICAgdGhpcy5sb2FkaW5nQ291bnQgKz0gMVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubG9jay5yZWFkKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgYWJpbGl0eURhdGEgb2YgYWJpbGl0aWVzKSB7XG4gICAgICAgICAgY29uc3Qgc3ViamVjdCA9IGFiaWxpdHlEYXRhWzBdXG5cbiAgICAgICAgICBpZiAoIXN1YmplY3QpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdWJqZWN0IGdpdmVuIGluIGFiaWxpdGllczogJHtzdWJqZWN0fSAtICR7SlNPTi5zdHJpbmdpZnkoYWJpbGl0aWVzKX1gKVxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhYmlsaXR5RGF0YVsxXSkpIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYW4gYXJyYXkgb2YgYWJpbGl0aWVzIGJ1dCBnb3Q6ICR7dHlwZW9mIGFiaWxpdHlEYXRhWzFdfTogJHthYmlsaXR5RGF0YVsxXX1gKVxuXG4gICAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdHlEYXRhWzFdKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5sb2FkQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KVxuXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkb25lU3VtbWFyeSA9IFtcbiAgICAgICAgXCJbY2FuLWNhbi1kZWJ1Z10gbG9hZEFiaWxpdGllczpkb25lXCIsXG4gICAgICAgIGBnZW5lcmF0aW9uPSR7Z2VuZXJhdGlvbn1gLFxuICAgICAgICBgY3VycmVudEdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgICAgYGxvYWRpbmdDb3VudD0ke3RoaXMubG9hZGluZ0NvdW50fWBcbiAgICAgIF0uam9pbihcIjsgXCIpXG4gICAgICB0aGlzLmRlYnVnTG9nKGRvbmVTdW1tYXJ5KVxuICAgICAgaWYgKHRoaXMubG9hZGluZ0NvdW50ID4gMCkgdGhpcy5sb2FkaW5nQ291bnQgLT0gMVxuICAgICAgaWYgKHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiA9PT0gZ2VuZXJhdGlvbikgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBvbmUgYWJpbGl0eSBhbmQgcmVzb2x2ZXMgb25jZSBpdCBpcyBhdmFpbGFibGUgbG9jYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFiaWxpdHlcbiAgICogQHBhcmFtIHtBYmlsaXR5U3ViamVjdH0gc3ViamVjdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGxvYWRBYmlsaXR5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQWJpbGl0eSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShhYmlsaXR5KVxuXG4gICAgICBpZiAodGhpcy5pc0FiaWxpdHlMb2FkZWQobm9ybWFsaXplZEFiaWxpdHksIHN1YmplY3QpKSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5hYmlsaXRpZXNUb0xvYWQuZmluZCgoYWJpbGl0eVRvTG9hZCkgPT4gZGlnZyhhYmlsaXR5VG9Mb2FkLCBcImFiaWxpdHlcIikgPT0gbm9ybWFsaXplZEFiaWxpdHkgJiZcbiAgICAgICAgZGlnZyhhYmlsaXR5VG9Mb2FkLCBcInN1YmplY3RcIikgPT0gc3ViamVjdFxuICAgICAgKVxuXG4gICAgICBpZiAoZm91bmRBYmlsaXR5KSB7XG4gICAgICAgIGZvdW5kQWJpbGl0eS5jYWxsYmFja3MucHVzaChyZXNvbHZlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWQucHVzaCh7YWJpbGl0eTogbm9ybWFsaXplZEFiaWxpdHksIGNhbGxiYWNrczogW3Jlc29sdmVdLCBzdWJqZWN0fSlcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhLnB1c2goe2FiaWxpdHk6IG5vcm1hbGl6ZWRBYmlsaXR5LCBzdWJqZWN0fSlcblxuICAgICAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdCgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBxdWV1ZUFiaWxpdGllc1JlcXVlc3QuICovXG4gIHF1ZXVlQWJpbGl0aWVzUmVxdWVzdCAoKSB7XG4gICAgaWYgKHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dCkgcmV0dXJuXG5cbiAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc2VuZEFiaWxpdGllc1JlcXVlc3QsIDApXG4gIH1cblxuICBhc3luYyByZXNldEFiaWxpdGllcyAoKSB7XG4gICAgaWYgKHRoaXMucmVzZXRQcm9taXNlKSByZXR1cm4gdGhpcy5yZXNldFByb21pc2VcblxuICAgIHRoaXMucmVzZXRQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9jay53cml0ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWJpbGl0aWVzID0gW11cbiAgICAgICAgdGhpcy5hYmlsaXRpZXNCeU5hbWUgPSBuZXcgTWFwKClcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uICs9IDFcbiAgICAgICAgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgICAgIHRoaXMuY2FjaGVLZXkgKz0gMVxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJlc2V0U3VtbWFyeSA9IFtcbiAgICAgICAgXCJbY2FuLWNhbi1kZWJ1Z10gcmVzZXRBYmlsaXRpZXNcIixcbiAgICAgICAgYGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgICAgYGNhY2hlS2V5PSR7dGhpcy5jYWNoZUtleX1gLFxuICAgICAgICBgcXVldWVkPSR7dGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhLmxlbmd0aH1gXG4gICAgICBdLmpvaW4oXCI7IFwiKVxuICAgICAgdGhpcy5kZWJ1Z0xvZyhyZXNldFN1bW1hcnkpXG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwib25SZXNldEFiaWxpdGllc1wiKVxuICAgIH0pKClcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0UHJvbWlzZVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlc2V0UHJvbWlzZSA9IG51bGxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGFuZCByZWxvYWRzIG9uZSBiYXRjaCBvZiBhYmlsaXRpZXMsIG9wdGlvbmFsbHkgZGVkdXBlZCBieSBrZXkuXG4gICAqIEBwYXJhbSB7QWJpbGl0eVJlcXVlc3RbXX0gYWJpbGl0aWVzXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSByZWxvYWRLZXlcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyByZWxvYWRBYmlsaXRpZXMgKGFiaWxpdGllcywgcmVsb2FkS2V5KSB7XG4gICAgaWYgKHJlbG9hZEtleSAmJiB0aGlzLnJlbG9hZFByb21pc2VzLmhhcyhyZWxvYWRLZXkpKSB7XG4gICAgICB0aGlzLmRlYnVnTG9nKGBbY2FuLWNhbi1kZWJ1Z10gcmVsb2FkQWJpbGl0aWVzOmRlZHVwZSByZWxvYWRLZXk9JHtyZWxvYWRLZXl9YClcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZFByb21pc2VzLmdldChyZWxvYWRLZXkpXG4gICAgfVxuXG4gICAgY29uc3QgcmVsb2FkU3VtbWFyeSA9IFtcbiAgICAgIFwiW2Nhbi1jYW4tZGVidWddIHJlbG9hZEFiaWxpdGllczpzdGFydFwiLFxuICAgICAgYHJlbG9hZEtleT0ke3JlbG9hZEtleSB8fCBcIm5vbmVcIn1gLFxuICAgICAgYGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YCxcbiAgICAgIGByZXF1ZXN0cz0ke2FiaWxpdGllcy5sZW5ndGh9YFxuICAgIF0uam9pbihcIjsgXCIpXG4gICAgdGhpcy5kZWJ1Z0xvZyhyZWxvYWRTdW1tYXJ5KVxuXG4gICAgLyoqIHByb21pc2UuICovXG4gICAgY29uc3QgcHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0QWJpbGl0aWVzKClcbiAgICAgIGF3YWl0IHRoaXMubG9hZEFiaWxpdGllcyhhYmlsaXRpZXMpXG4gICAgfSkoKVxuXG4gICAgaWYgKHJlbG9hZEtleSkgdGhpcy5yZWxvYWRQcm9taXNlcy5zZXQocmVsb2FkS2V5LCBwcm9taXNlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb21pc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5kZWJ1Z0xvZyhgW2Nhbi1jYW4tZGVidWddIHJlbG9hZEFiaWxpdGllczpkb25lIHJlbG9hZEtleT0ke3JlbG9hZEtleSB8fCBcIm5vbmVcIn07IGdlbmVyYXRpb249JHt0aGlzLmFiaWxpdGllc0dlbmVyYXRpb259YClcbiAgICAgIGlmIChyZWxvYWRLZXkpIHRoaXMucmVsb2FkUHJvbWlzZXMuZGVsZXRlKHJlbG9hZEtleSlcbiAgICB9XG4gIH1cblxuICAvKiogc2VuZEFiaWxpdGllc1JlcXVlc3QuICovXG4gIHNlbmRBYmlsaXRpZXNSZXF1ZXN0ID0gYXN5bmMgKCkgPT4ge1xuICAgIHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dCA9IG51bGxcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgY29uc3QgYWJpbGl0aWVzVG9Mb2FkID0gdGhpcy5hYmlsaXRpZXNUb0xvYWRcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWREYXRhID0gdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhXG5cbiAgICB0aGlzLmFiaWxpdGllc1RvTG9hZCA9IFtdXG4gICAgdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhID0gW11cbiAgICB0aGlzLmRlYnVnTG9nKGBbY2FuLWNhbi1kZWJ1Z10gc2VuZEFiaWxpdGllc1JlcXVlc3Q6c3RhcnQgZ2VuZXJhdGlvbj0ke2dlbmVyYXRpb259OyBxdWV1ZWQ9JHthYmlsaXRpZXNUb0xvYWREYXRhLmxlbmd0aH1gKVxuXG4gICAgbGV0IGFiaWxpdGllcyA9IFtdXG4gICAgbGV0IGRpZEZhaWwgPSBmYWxzZVxuICAgIGxldCByZXF1ZXN0RXJyb3JcblxuICAgIC8vIExvYWQgYWJpbGl0aWVzIGZyb20gYmFja2VuZFxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSAvKiogQHR5cGUge0xvYWRBYmlsaXRpZXNSZXNwb25zZX0gKi8gKGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIkNhbkNhbjo6TG9hZEFiaWxpdGllc1wiLCAvKiogQHR5cGUge0xvYWRBYmlsaXRpZXNSZXF1ZXN0fSAqLyAoe1xuICAgICAgICByZXF1ZXN0OiBhYmlsaXRpZXNUb0xvYWREYXRhXG4gICAgICB9KSkpXG4gICAgICBhYmlsaXRpZXMgPSBkaWdnKHJlc3VsdCwgXCJhYmlsaXRpZXNcIilcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFiaWxpdGllcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBDYW5DYW46OkxvYWRBYmlsaXRpZXMgcmVzcG9uc2UgYWJpbGl0aWVzIHRvIGJlIGFuIGFycmF5LCBnb3Q6ICR7dHlwZW9mIGFiaWxpdGllc31gKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkaWRGYWlsID0gdHJ1ZVxuICAgICAgcmVxdWVzdEVycm9yID0gZXJyb3JcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBhYmlsaXRpZXNcIiwgZXJyb3IpXG4gICAgfVxuXG4gICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuYWJpbGl0aWVzR2VuZXJhdGlvbikge1xuICAgICAgY29uc3Qgc3RhbGVSZXNwb25zZURlYnVnID0gW1xuICAgICAgICBcIltjYW4tY2FuLWRlYnVnXSBzZW5kQWJpbGl0aWVzUmVxdWVzdDpzdGFsZS1yZXNwb25zZVwiLFxuICAgICAgICBgcmVxdWVzdEdlbmVyYXRpb249JHtnZW5lcmF0aW9ufWAsXG4gICAgICAgIGBjdXJyZW50R2VuZXJhdGlvbj0ke3RoaXMuYWJpbGl0aWVzR2VuZXJhdGlvbn1gLFxuICAgICAgICBgcmVxdWV1ZT0ke2FiaWxpdGllc1RvTG9hZC5sZW5ndGh9YFxuICAgICAgXS5qb2luKFwiOyBcIilcbiAgICAgIHRoaXMuZGVidWdMb2coc3RhbGVSZXNwb25zZURlYnVnKVxuICAgICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXNUb0xvYWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBhYmlsaXR5RGF0YS5jYWxsYmFja3MpIHtcbiAgICAgICAgICB0aGlzLmxvYWRBYmlsaXR5KGFiaWxpdHlEYXRhLmFiaWxpdHksIGFiaWxpdHlEYXRhLnN1YmplY3QpLnRoZW4oY2FsbGJhY2spXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGRpZEZhaWwpIHtcbiAgICAgIHRoaXMuZGVidWdMb2coYFtjYW4tY2FuLWRlYnVnXSBzZW5kQWJpbGl0aWVzUmVxdWVzdDpmYWlsZWQgZ2VuZXJhdGlvbj0ke2dlbmVyYXRpb259OyBxdWV1ZWQ9JHthYmlsaXRpZXNUb0xvYWQubGVuZ3RofWApXG4gICAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllc1RvTG9hZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGFiaWxpdHlEYXRhLmNhbGxiYWNrcykge1xuICAgICAgICAgIGNhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXNvbHZlIGNhbGxiYWNrcyB0byBhdm9pZCBkZWFkbG9ja3MgZm9yIHdhaXRlcnMgZXZlbiB3aGVuIGxvYWQgZmFpbGVkLlxuICAgICAgaWYgKHJlcXVlc3RFcnJvcikgdGhpcy5yZXBvcnRVbmhhbmRsZWRBc3luY0Vycm9yKHJlcXVlc3RFcnJvcilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgbG9hZGVkIGFiaWxpdGllc1xuICAgIHRoaXMuYWJpbGl0aWVzID0gdGhpcy5hYmlsaXRpZXMuY29uY2F0KGFiaWxpdGllcylcbiAgICB0aGlzLmluZGV4QWJpbGl0aWVzQnlOYW1lKGFiaWxpdGllcylcbiAgICB0aGlzLmNhY2hlS2V5ICs9IDFcbiAgICB0aGlzLmRlYnVnTG9nKFxuICAgICAgYFtjYW4tY2FuLWRlYnVnXSBzZW5kQWJpbGl0aWVzUmVxdWVzdDpzdWNjZXNzIGdlbmVyYXRpb249JHtnZW5lcmF0aW9ufTsgbG9hZGVkPSR7YWJpbGl0aWVzLmxlbmd0aH07IGNhY2hlS2V5PSR7dGhpcy5jYWNoZUtleX1gXG4gICAgKVxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvbkFiaWxpdGllc0xvYWRlZFwiLCB7Y2FjaGVLZXk6IHRoaXMuY2FjaGVLZXl9KVxuXG4gICAgLy8gQ2FsbCB0aGUgY2FsbGJhY2tzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBhYmlsaXR5IHRvIGhhdmUgYmVlbiBsb2FkZWRcbiAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllc1RvTG9hZCkge1xuICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBhYmlsaXR5RGF0YS5jYWxsYmFja3MpIHtcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleGVzIGxvYWRlZCBhYmlsaXRpZXMgYnkgdGhlIGxvb2t1cCBrZXkgdXNlZCBieSBgZmluZEFiaWxpdHlgLlxuICAgKiBAcGFyYW0ge0xvYWRlZEFiaWxpdHlbXX0gYWJpbGl0aWVzXG4gICAqL1xuICBpbmRleEFiaWxpdGllc0J5TmFtZSAoYWJpbGl0aWVzKSB7XG4gICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXMpIHtcbiAgICAgIGlmIChhYmlsaXR5RGF0YSAmJiB0eXBlb2YgYWJpbGl0eURhdGEgPT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBhYmlsaXR5S2V5ID0gdGhpcy5hYmlsaXR5S2V5KGRpZ2coYWJpbGl0eURhdGEsIFwiYWJpbGl0eVwiKSwgZGlnZyhhYmlsaXR5RGF0YSwgXCJzdWJqZWN0XCIpKVxuXG4gICAgICAgIGlmIChhYmlsaXR5S2V5KSB7XG4gICAgICAgICAgdGhpcy5hYmlsaXRpZXNCeU5hbWUuc2V0KGFiaWxpdHlLZXksIGFiaWxpdHlEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgaW50ZXJuYWwga2V5IHVzZWQgdG8gbG9vayB1cCBvbmUgYWJpbGl0eSByZXN1bHQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5XG4gICAqIEBwYXJhbSB7QWJpbGl0eVN1YmplY3R9IHN1YmplY3RcbiAgICogQHJldHVybnMge251bGwgfCBzdHJpbmd9XG4gICAqL1xuICBhYmlsaXR5S2V5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgaWYgKCFhYmlsaXR5KSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3Qgc3ViamVjdE5hbWUgPSB0aGlzLnN1YmplY3ROYW1lKHN1YmplY3QpXG4gICAgaWYgKCFzdWJqZWN0TmFtZSkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eSl9OiR7c3ViamVjdE5hbWV9YFxuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBzdWJqZWN0IG5hbWUgc2VudCB0byB0aGUgYmFja2VuZCBhYmlsaXR5IGxvYWRlci5cbiAgICogQHBhcmFtIHtBYmlsaXR5U3ViamVjdH0gc3ViamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH1cbiAgICovXG4gIHN1YmplY3ROYW1lKHN1YmplY3QpIHtcbiAgICBpZiAoIXN1YmplY3QpIHJldHVybiBudWxsXG5cbiAgICBpZiAodHlwZW9mIHN1YmplY3QgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHN1YmplY3RcbiAgICB9XG5cbiAgICBpZiAoc3ViamVjdC5tb2RlbENsYXNzRGF0YSkge1xuICAgICAgcmV0dXJuIGRpZ2coc3ViamVjdC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcbiAgICB9XG5cbiAgICBpZiAoc3ViamVjdC5yZXNvdXJjZURhdGEpIHtcbiAgICAgIHJldHVybiBkaWdnKHN1YmplY3QucmVzb3VyY2VEYXRhKCksIFwibmFtZVwiKVxuICAgIH1cblxuICAgIGlmIChzdWJqZWN0Lm5hbWUpIHtcbiAgICAgIHJldHVybiBzdWJqZWN0Lm5hbWVcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXRocm93cyBhbiBhc3luYyBlcnJvciBvbiB0aGUgbWljcm90YXNrIHF1ZXVlIGZvciBleGlzdGluZyBoYW5kbGVycy5cbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAgICovXG4gIHJlcG9ydFVuaGFuZGxlZEFzeW5jRXJyb3IgKGVycm9yKSB7XG4gICAgaWYgKCFlcnJvcikgcmV0dXJuXG5cbiAgICBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgfVxufVxuIl19
@@ -1,4 +1,26 @@
1
- declare function _default(): any;
1
+ declare function _default(): ActionCableConsumer;
2
2
  export default _default;
3
3
  export function resetChannelsConsumer(): void;
4
+ export type ActionCablePayloadValue = object | string | number | boolean | null | Array<object | string | number | boolean | null>;
5
+ export type ActionCableSubscription = {
6
+ perform: (action: string, data: {
7
+ [key: string]: ActionCablePayloadValue;
8
+ }) => void;
9
+ unsubscribe: () => void;
10
+ };
11
+ export type ActionCableChannelCallbacks = {
12
+ connected?: () => void;
13
+ disconnected?: () => void;
14
+ received?: (data: {
15
+ [key: string]: ActionCablePayloadValue;
16
+ }) => void;
17
+ rejected?: () => void;
18
+ subscribed?: () => void;
19
+ };
20
+ export type ActionCableConsumer = {
21
+ disconnect: () => void;
22
+ subscriptions: {
23
+ create: (channel: string | object, callbacks?: ActionCableChannelCallbacks) => ActionCableSubscription;
24
+ };
25
+ };
4
26
  //# sourceMappingURL=channels-consumer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels-consumer.d.ts","sourceRoot":"/src/","sources":["channels-consumer.js"],"names":[],"mappings":"AAKe,6BADD,GAAG,CAOhB;;AAGM,yCADO,IAAI,CAQjB"}
1
+ {"version":3,"file":"channels-consumer.d.ts","sourceRoot":"/src/","sources":["channels-consumer.js"],"names":[],"mappings":"AAsBe,6BADD,mBAAmB,CAShC;;AAGM,yCADO,IAAI,CAUjB;sCApCY,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;;aAE3F,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAC,KAAK,IAAI;iBACxE,MAAM,IAAI;;;gBAEV,MAAM,IAAI;mBACV,MAAM,IAAI;eACV,CAAC,IAAI,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAC,KAAK,IAAI;eACxD,MAAM,IAAI;iBACV,MAAM,IAAI;;;gBAEV,MAAM,IAAI;mBACV;QAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,2BAA2B,KAAK,uBAAuB,CAAA;KAAC"}
@@ -1,19 +1,37 @@
1
+ // @ts-check
1
2
  import Config from "./config.js";
2
3
  // @ts-expect-error
3
4
  import { createConsumer } from "@rails/actioncable"; // eslint-disable-line import/no-unresolved
4
- /** @returns {any} */
5
+ /**
6
+ * @typedef {object | string | number | boolean | null | Array<object | string | number | boolean | null>} ActionCablePayloadValue
7
+ * @typedef {object} ActionCableSubscription
8
+ * @property {(action: string, data: {[key: string]: ActionCablePayloadValue}) => void} perform
9
+ * @property {() => void} unsubscribe
10
+ * @typedef {object} ActionCableChannelCallbacks
11
+ * @property {() => void} [connected]
12
+ * @property {() => void} [disconnected]
13
+ * @property {(data: {[key: string]: ActionCablePayloadValue}) => void} [received]
14
+ * @property {() => void} [rejected]
15
+ * @property {() => void} [subscribed]
16
+ * @typedef {object} ActionCableConsumer
17
+ * @property {() => void} disconnect
18
+ * @property {{create: (channel: string | object, callbacks?: ActionCableChannelCallbacks) => ActionCableSubscription}} subscriptions
19
+ */
20
+ /** @returns {ActionCableConsumer} */
5
21
  export default () => {
6
- if (!globalThis.apiMakerChannelsConsumer) {
7
- globalThis.apiMakerChannelsConsumer = createConsumer(Config.getCableUrl());
22
+ const globalChannelsConsumer = /** @type {{apiMakerChannelsConsumer?: ActionCableConsumer}} */ (globalThis);
23
+ if (!globalChannelsConsumer.apiMakerChannelsConsumer) {
24
+ globalChannelsConsumer.apiMakerChannelsConsumer = /** @type {ActionCableConsumer} */ (createConsumer(Config.getCableUrl()));
8
25
  }
9
- return globalThis.apiMakerChannelsConsumer;
26
+ return globalChannelsConsumer.apiMakerChannelsConsumer;
10
27
  };
11
28
  /** @returns {void} */
12
29
  export const resetChannelsConsumer = () => {
13
- if (!globalThis.apiMakerChannelsConsumer) {
30
+ const globalChannelsConsumer = /** @type {{apiMakerChannelsConsumer?: ActionCableConsumer}} */ (globalThis);
31
+ if (!globalChannelsConsumer.apiMakerChannelsConsumer) {
14
32
  return;
15
33
  }
16
- globalThis.apiMakerChannelsConsumer.disconnect();
17
- delete globalThis.apiMakerChannelsConsumer;
34
+ globalChannelsConsumer.apiMakerChannelsConsumer.disconnect();
35
+ delete globalChannelsConsumer.apiMakerChannelsConsumer;
18
36
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMtY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNoYW5uZWxzLWNvbnN1bWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxtQkFBbUI7QUFDbkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFBLENBQUMsMkNBQTJDO0FBRTdGLHFCQUFxQjtBQUNyQixlQUFlLEdBQUcsRUFBRTtJQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsVUFBVSxDQUFDLHdCQUF3QixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsT0FBTTtJQUNSLENBQUM7SUFFRCxVQUFVLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDaEQsT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUE7QUFDNUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZyBmcm9tIFwiLi9jb25maWcuanNcIlxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHtjcmVhdGVDb25zdW1lcn0gZnJvbSBcIkByYWlscy9hY3Rpb25jYWJsZVwiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLXVucmVzb2x2ZWRcblxuLyoqIEByZXR1cm5zIHthbnl9ICovXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFwaU1ha2VyQ2hhbm5lbHNDb25zdW1lciA9IGNyZWF0ZUNvbnN1bWVyKENvbmZpZy5nZXRDYWJsZVVybCgpKVxuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyXG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBjb25zdCByZXNldENoYW5uZWxzQ29uc3VtZXIgPSAoKSA9PiB7XG4gIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXIpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyLmRpc2Nvbm5lY3QoKVxuICBkZWxldGUgZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXJcbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMtY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNoYW5uZWxzLWNvbnN1bWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsbUJBQW1CO0FBQ25CLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQSxDQUFDLDJDQUEyQztBQUU3Rjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILHFDQUFxQztBQUNyQyxlQUFlLEdBQUcsRUFBRTtJQUNsQixNQUFNLHNCQUFzQixHQUFHLCtEQUErRCxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFM0csSUFBSSxDQUFDLHNCQUFzQixDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDckQsc0JBQXNCLENBQUMsd0JBQXdCLEdBQUcsa0NBQWtDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM3SCxDQUFDO0lBRUQsT0FBTyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQTtBQUN4RCxDQUFDLENBQUE7QUFFRCxzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sc0JBQXNCLEdBQUcsK0RBQStELENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUUzRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNyRCxPQUFNO0lBQ1IsQ0FBQztJQUVELHNCQUFzQixDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzVELE9BQU8sc0JBQXNCLENBQUMsd0JBQXdCLENBQUE7QUFDeEQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuL2NvbmZpZy5qc1wiXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5pbXBvcnQge2NyZWF0ZUNvbnN1bWVyfSBmcm9tIFwiQHJhaWxzL2FjdGlvbmNhYmxlXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IEFycmF5PG9iamVjdCB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsPn0gQWN0aW9uQ2FibGVQYXlsb2FkVmFsdWVcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFjdGlvbkNhYmxlU3Vic2NyaXB0aW9uXG4gKiBAcHJvcGVydHkgeyhhY3Rpb246IHN0cmluZywgZGF0YToge1trZXk6IHN0cmluZ106IEFjdGlvbkNhYmxlUGF5bG9hZFZhbHVlfSkgPT4gdm9pZH0gcGVyZm9ybVxuICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSB1bnN1YnNjcmliZVxuICogQHR5cGVkZWYge29iamVjdH0gQWN0aW9uQ2FibGVDaGFubmVsQ2FsbGJhY2tzXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IFtjb25uZWN0ZWRdXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IFtkaXNjb25uZWN0ZWRdXG4gKiBAcHJvcGVydHkgeyhkYXRhOiB7W2tleTogc3RyaW5nXTogQWN0aW9uQ2FibGVQYXlsb2FkVmFsdWV9KSA9PiB2b2lkfSBbcmVjZWl2ZWRdXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IFtyZWplY3RlZF1cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gW3N1YnNjcmliZWRdXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBBY3Rpb25DYWJsZUNvbnN1bWVyXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IGRpc2Nvbm5lY3RcbiAqIEBwcm9wZXJ0eSB7e2NyZWF0ZTogKGNoYW5uZWw6IHN0cmluZyB8IG9iamVjdCwgY2FsbGJhY2tzPzogQWN0aW9uQ2FibGVDaGFubmVsQ2FsbGJhY2tzKSA9PiBBY3Rpb25DYWJsZVN1YnNjcmlwdGlvbn19IHN1YnNjcmlwdGlvbnNcbiAqL1xuXG4vKiogQHJldHVybnMge0FjdGlvbkNhYmxlQ29uc3VtZXJ9ICovXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIGNvbnN0IGdsb2JhbENoYW5uZWxzQ29uc3VtZXIgPSAvKiogQHR5cGUge3thcGlNYWtlckNoYW5uZWxzQ29uc3VtZXI/OiBBY3Rpb25DYWJsZUNvbnN1bWVyfX0gKi8gKGdsb2JhbFRoaXMpXG5cbiAgaWYgKCFnbG9iYWxDaGFubmVsc0NvbnN1bWVyLmFwaU1ha2VyQ2hhbm5lbHNDb25zdW1lcikge1xuICAgIGdsb2JhbENoYW5uZWxzQ29uc3VtZXIuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyID0gLyoqIEB0eXBlIHtBY3Rpb25DYWJsZUNvbnN1bWVyfSAqLyAoY3JlYXRlQ29uc3VtZXIoQ29uZmlnLmdldENhYmxlVXJsKCkpKVxuICB9XG5cbiAgcmV0dXJuIGdsb2JhbENoYW5uZWxzQ29uc3VtZXIuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyXG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBjb25zdCByZXNldENoYW5uZWxzQ29uc3VtZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGdsb2JhbENoYW5uZWxzQ29uc3VtZXIgPSAvKiogQHR5cGUge3thcGlNYWtlckNoYW5uZWxzQ29uc3VtZXI/OiBBY3Rpb25DYWJsZUNvbnN1bWVyfX0gKi8gKGdsb2JhbFRoaXMpXG5cbiAgaWYgKCFnbG9iYWxDaGFubmVsc0NvbnN1bWVyLmFwaU1ha2VyQ2hhbm5lbHNDb25zdW1lcikge1xuICAgIHJldHVyblxuICB9XG5cbiAgZ2xvYmFsQ2hhbm5lbHNDb25zdW1lci5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXIuZGlzY29ubmVjdCgpXG4gIGRlbGV0ZSBnbG9iYWxDaGFubmVsc0NvbnN1bWVyLmFwaU1ha2VyQ2hhbm5lbHNDb25zdW1lclxufVxuIl19
@@ -1,3 +1,4 @@
1
+ // @ts-check
1
2
  import Collection from "./collection.js";
2
3
  import { digg } from "diggerize";
3
4
  import memo from "set-state-compare/build/memo.js";
@@ -52,4 +53,4 @@ CollectionLoader.propTypes = propTypesExact({
52
53
  selectColumns: PropTypes.object
53
54
  });
54
55
  export default memo(CollectionLoader);
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbGxlY3Rpb24tbG9hZGVyLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBLENBQUMsbUNBQW1DO0FBQ3RFLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDLFNBQVMsZ0JBQWdCLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxTQUFTLEVBQUM7SUFDakQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzdCLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLGtEQUFrRCxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUN6RyxNQUFNLGNBQWMsR0FBRztRQUNyQixxQkFBcUI7UUFDckIsY0FBYztRQUNkLFNBQVM7UUFDVCxXQUFXO1FBQ1gsYUFBYTtRQUNiLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGNBQWM7UUFDZCwrQkFBK0I7UUFDL0IsMkJBQTJCO0tBQzVCLENBQUE7SUFDRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFFckIsS0FBSSxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUU5QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsdUhBQXVIO1FBQ3ZILENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDakQsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRWQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztJQUMxQyxTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDM0IsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzVDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7SUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQy9CLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSztJQUN4QixVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0lBQ3JDLHlCQUF5QixFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQ3pDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQ3JDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLO0lBQ3pCLFdBQVcsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDM0IsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQ3pCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN4QixhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU07Q0FDaEMsQ0FBQyxDQUFBO0FBRUYsZUFBZSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuL2NvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUNvbGxlY3Rpb24gZnJvbSBcIi4vdXNlLWNvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCIuL3VzZS1zaGFwZS5qc1wiXG5cbmZ1bmN0aW9uIENvbGxlY3Rpb25Mb2FkZXIoe2NvbXBvbmVudCwgLi4ucmVzdFByb3BzfSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtc3R5bGVcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHJlc3RQcm9wcylcbiAgY29uc3QgdXNlQ29sbGVjdGlvblJlc3VsdCA9IHVzZUNvbGxlY3Rpb24oLyoqIEB0eXBlIHtQYXJhbWV0ZXJzPHR5cGVvZiB1c2VDb2xsZWN0aW9uPlswXX0gKi8gKHJlc3RQcm9wcykpXG4gIGNvbnN0IGNhY2hlUGFydHNLZXlzID0gW1xuICAgIFwibW9kZWxJZHNDYWNoZVN0cmluZ1wiLFxuICAgIFwib3ZlcmFsbENvdW50XCIsXG4gICAgXCJxUGFyYW1zXCIsXG4gICAgXCJxdWVyeU5hbWVcIixcbiAgICBcInF1ZXJ5UGVyS2V5XCIsXG4gICAgXCJxdWVyeVFOYW1lXCIsXG4gICAgXCJxdWVyeVNOYW1lXCIsXG4gICAgXCJxdWVyeVBhZ2VOYW1lXCIsXG4gICAgXCJzZWFyY2hQYXJhbXNcIixcbiAgICBcInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XCIsXG4gICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgXVxuICBjb25zdCBjYWNoZVBhcnRzID0gW11cblxuICBmb3IoY29uc3QgY2FjaGVQYXJ0c0tleSBvZiBjYWNoZVBhcnRzS2V5cykge1xuICAgIGNhY2hlUGFydHMucHVzaChkaWdnKHVzZUNvbGxlY3Rpb25SZXN1bHQsIGNhY2hlUGFydHNLZXkpKVxuICB9XG5cbiAgcy51cGRhdGVNZXRhKHtjb21wb25lbnQsIHVzZUNvbGxlY3Rpb25SZXN1bHR9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gTWlycm9yIGNvbGxlY3Rpb24gcmVzdWx0cyBpbnRvIHRoZSBob3N0IGNvbXBvbmVudCBhZnRlciBjb21taXQgc28gYXN5bmMgbG9hZHMgbmV2ZXIgdXBkYXRlIGFuIHVubW91bnRlZCByZW5kZXIgcGF0aC5cbiAgICBzLm0uY29tcG9uZW50LnNldFN0YXRlKHMubS51c2VDb2xsZWN0aW9uUmVzdWx0KVxuICB9LCBjYWNoZVBhcnRzKVxuXG4gIHJldHVybiBudWxsXG59XG5cbkNvbGxlY3Rpb25Mb2FkZXIucHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICBhYmlsaXRpZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbGxlY3Rpb246IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbGxlY3Rpb24pLFxuICBjb21wb25lbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZGVmYXVsdFBhcmFtczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb2RlbHNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICBwYWdpbmF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgcHJlbG9hZHM6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJhbnNhY2s6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdFxufSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhDb2xsZWN0aW9uTG9hZGVyKVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbGxlY3Rpb24tbG9hZGVyLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxVQUFVLE1BQU0saUJBQWlCLENBQUE7QUFDeEMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQSxDQUFDLG1DQUFtQztBQUN0RSxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyQyxTQUFTLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxFQUFFLEdBQUcsU0FBUyxFQUFDO0lBQ2pELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM3QixNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDekcsTUFBTSxjQUFjLEdBQUc7UUFDckIscUJBQXFCO1FBQ3JCLGNBQWM7UUFDZCxTQUFTO1FBQ1QsV0FBVztRQUNYLGFBQWE7UUFDYixZQUFZO1FBQ1osWUFBWTtRQUNaLGVBQWU7UUFDZixjQUFjO1FBQ2QsK0JBQStCO1FBQy9CLDJCQUEyQjtLQUM1QixDQUFBO0lBQ0QsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBRXJCLEtBQUksTUFBTSxhQUFhLElBQUksY0FBYyxFQUFFLENBQUM7UUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUE7SUFFOUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLHVIQUF1SDtRQUN2SCxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2pELENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUVkLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDMUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUM1QyxTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0lBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsTUFBTTtJQUMvQixPQUFPLEVBQUUsU0FBUyxDQUFDLEtBQUs7SUFDeEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVTtJQUNyQyx5QkFBeUIsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUN6QyxxQkFBcUIsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUNyQyxjQUFjLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDOUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQzFCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSztJQUN6QixXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDM0IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQzNCLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN6QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0NBQ2hDLENBQUMsQ0FBQTtBQUVGLGVBQWUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuL2NvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUNvbGxlY3Rpb24gZnJvbSBcIi4vdXNlLWNvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCIuL3VzZS1zaGFwZS5qc1wiXG5cbmZ1bmN0aW9uIENvbGxlY3Rpb25Mb2FkZXIoe2NvbXBvbmVudCwgLi4ucmVzdFByb3BzfSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtc3R5bGVcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHJlc3RQcm9wcylcbiAgY29uc3QgdXNlQ29sbGVjdGlvblJlc3VsdCA9IHVzZUNvbGxlY3Rpb24oLyoqIEB0eXBlIHtQYXJhbWV0ZXJzPHR5cGVvZiB1c2VDb2xsZWN0aW9uPlswXX0gKi8gKHJlc3RQcm9wcykpXG4gIGNvbnN0IGNhY2hlUGFydHNLZXlzID0gW1xuICAgIFwibW9kZWxJZHNDYWNoZVN0cmluZ1wiLFxuICAgIFwib3ZlcmFsbENvdW50XCIsXG4gICAgXCJxUGFyYW1zXCIsXG4gICAgXCJxdWVyeU5hbWVcIixcbiAgICBcInF1ZXJ5UGVyS2V5XCIsXG4gICAgXCJxdWVyeVFOYW1lXCIsXG4gICAgXCJxdWVyeVNOYW1lXCIsXG4gICAgXCJxdWVyeVBhZ2VOYW1lXCIsXG4gICAgXCJzZWFyY2hQYXJhbXNcIixcbiAgICBcInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XCIsXG4gICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgXVxuICBjb25zdCBjYWNoZVBhcnRzID0gW11cblxuICBmb3IoY29uc3QgY2FjaGVQYXJ0c0tleSBvZiBjYWNoZVBhcnRzS2V5cykge1xuICAgIGNhY2hlUGFydHMucHVzaChkaWdnKHVzZUNvbGxlY3Rpb25SZXN1bHQsIGNhY2hlUGFydHNLZXkpKVxuICB9XG5cbiAgcy51cGRhdGVNZXRhKHtjb21wb25lbnQsIHVzZUNvbGxlY3Rpb25SZXN1bHR9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gTWlycm9yIGNvbGxlY3Rpb24gcmVzdWx0cyBpbnRvIHRoZSBob3N0IGNvbXBvbmVudCBhZnRlciBjb21taXQgc28gYXN5bmMgbG9hZHMgbmV2ZXIgdXBkYXRlIGFuIHVubW91bnRlZCByZW5kZXIgcGF0aC5cbiAgICBzLm0uY29tcG9uZW50LnNldFN0YXRlKHMubS51c2VDb2xsZWN0aW9uUmVzdWx0KVxuICB9LCBjYWNoZVBhcnRzKVxuXG4gIHJldHVybiBudWxsXG59XG5cbkNvbGxlY3Rpb25Mb2FkZXIucHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICBhYmlsaXRpZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbGxlY3Rpb246IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbGxlY3Rpb24pLFxuICBjb21wb25lbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZGVmYXVsdFBhcmFtczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb2RlbHNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICBwYWdpbmF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgcHJlbG9hZHM6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJhbnNhY2s6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdFxufSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhDb2xsZWN0aW9uTG9hZGVyKVxuIl19