@decaf-ts/for-nest 0.11.1 → 0.11.2-refactor.2

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 (370) hide show
  1. package/README.md +1 -1
  2. package/dist/for-nest.cjs +2654 -2
  3. package/dist/for-nest.js +2756 -2
  4. package/lib/cjs/auth/AuthInterceptor.cjs +90 -0
  5. package/lib/cjs/auth/DecafAuthHandler.cjs +37 -0
  6. package/lib/cjs/auth/DecafAuthModule.cjs +56 -0
  7. package/lib/cjs/auth/constants.cjs +10 -0
  8. package/lib/cjs/auth/decorators.cjs +28 -0
  9. package/lib/cjs/auth/index.cjs +23 -0
  10. package/lib/cjs/bin/cli.cjs +2 -2
  11. package/lib/cjs/cli-module.cjs +64 -7
  12. package/lib/cjs/constants.cjs +5 -6
  13. package/lib/cjs/controllers.cjs +13 -109
  14. package/lib/cjs/core-module.cjs +8 -8
  15. package/lib/cjs/decaf-model/DecafModelModule.cjs +23 -4
  16. package/lib/cjs/decaf-model/FromModelController.cjs +751 -789
  17. package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs +53 -16
  18. package/lib/cjs/decaf-model/decorators/ApiParamsFromModel.cjs +2 -2
  19. package/lib/cjs/decaf-model/decorators/DecafBody.cjs +2 -2
  20. package/lib/cjs/decaf-model/decorators/DecafParams.cjs +2 -2
  21. package/lib/cjs/decaf-model/decorators/controller-config.cjs +29 -0
  22. package/lib/cjs/decaf-model/decorators/decorators.cjs +5 -45
  23. package/lib/cjs/decaf-model/decorators/expose.cjs +13 -0
  24. package/lib/cjs/decaf-model/decorators/index.cjs +3 -2
  25. package/lib/cjs/decaf-model/decorators/types.cjs +2 -2
  26. package/lib/cjs/decaf-model/decorators/utils.cjs +2 -2
  27. package/lib/cjs/decaf-model/index.cjs +28 -19
  28. package/lib/cjs/decaf-model/types.cjs +2 -2
  29. package/lib/cjs/decaf-model/utils.cjs +2 -2
  30. package/lib/cjs/decoration.cjs +2 -2
  31. package/lib/cjs/decorators.cjs +85 -0
  32. package/lib/cjs/events-module/DecafStreamModule.cjs +2 -2
  33. package/lib/cjs/events-module/EventsController.cjs +2 -2
  34. package/lib/cjs/events-module/constant.cjs +2 -2
  35. package/lib/cjs/events-module/index.cjs +2 -2
  36. package/lib/cjs/events-module/utils.cjs +2 -2
  37. package/lib/cjs/factory/NestBootstraper.cjs +2 -2
  38. package/lib/cjs/factory/errors/cors.cjs +2 -2
  39. package/lib/cjs/factory/errors/index.cjs +2 -2
  40. package/lib/cjs/factory/errors/throttling.cjs +2 -2
  41. package/lib/cjs/factory/exceptions/DecafErrorFilter.cjs +2 -2
  42. package/lib/cjs/factory/exceptions/decorators.cjs +2 -2
  43. package/lib/cjs/factory/exceptions/index.cjs +2 -2
  44. package/lib/cjs/factory/index.cjs +2 -2
  45. package/lib/cjs/factory/openapi/DtoBuilder.cjs +37 -6
  46. package/lib/cjs/factory/openapi/SwaggerBuilder.cjs +2 -2
  47. package/lib/cjs/factory/openapi/SwaggerCustomUI.cjs +2 -2
  48. package/lib/cjs/factory/openapi/constants.cjs +2 -2
  49. package/lib/cjs/factory/openapi/index.cjs +2 -2
  50. package/lib/cjs/index.cjs +8 -7
  51. package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs +25 -21
  52. package/lib/cjs/interceptors/index.cjs +3 -4
  53. package/lib/cjs/module.cjs +5 -2
  54. package/lib/cjs/overrides/Adapter.cjs +2 -2
  55. package/lib/cjs/overrides/ModelBuilderExtensions.cjs +2 -2
  56. package/lib/cjs/overrides/constants.cjs +2 -2
  57. package/lib/cjs/overrides/decoration.cjs +2 -2
  58. package/lib/cjs/overrides/helpers.cjs +2 -2
  59. package/lib/cjs/overrides/index.cjs +3 -2
  60. package/lib/cjs/overrides/logging.cjs +5 -0
  61. package/lib/cjs/overrides/overrides.cjs +2 -2
  62. package/lib/cjs/request/DecafAuthHandler.cjs +5 -39
  63. package/lib/cjs/request/DecafHandlerExecutor.cjs +2 -2
  64. package/lib/cjs/request/DecafRequestContext.cjs +11 -20
  65. package/lib/cjs/request/DecafResponseInterceptor.cjs +3 -3
  66. package/lib/cjs/request/index.cjs +2 -2
  67. package/lib/cjs/swagger-types.cjs +2 -2
  68. package/lib/cjs/types.cjs +2 -2
  69. package/lib/cjs/utils.cjs +2 -2
  70. package/lib/cjs/webhooks/DecafWebhookModule.cjs +11 -12
  71. package/lib/cjs/webhooks/controllers.cjs +10 -10
  72. package/lib/cjs/webhooks/index.cjs +2 -15
  73. package/lib/cjs/webhooks/types.cjs +2 -2
  74. package/lib/esm/auth/AuthInterceptor.js +81 -0
  75. package/lib/esm/auth/DecafAuthHandler.js +31 -0
  76. package/lib/esm/auth/DecafAuthModule.js +48 -0
  77. package/lib/esm/auth/constants.js +6 -0
  78. package/lib/esm/auth/decorators.js +22 -0
  79. package/lib/esm/auth/index.js +6 -0
  80. package/lib/esm/bin/cli.js +1 -1
  81. package/lib/esm/cli-module.js +63 -6
  82. package/lib/esm/constants.js +3 -4
  83. package/lib/esm/controllers.js +13 -109
  84. package/lib/esm/core-module.js +7 -7
  85. package/lib/esm/decaf-model/DecafModelModule.js +22 -3
  86. package/lib/esm/decaf-model/FromModelController.js +753 -791
  87. package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js +53 -15
  88. package/lib/esm/decaf-model/decorators/ApiParamsFromModel.js +1 -1
  89. package/lib/esm/decaf-model/decorators/DecafBody.js +1 -1
  90. package/lib/esm/decaf-model/decorators/DecafParams.js +1 -1
  91. package/lib/esm/decaf-model/decorators/controller-config.js +25 -0
  92. package/lib/esm/decaf-model/decorators/decorators.js +2 -43
  93. package/lib/esm/decaf-model/decorators/expose.js +9 -0
  94. package/lib/esm/decaf-model/decorators/index.js +2 -1
  95. package/lib/esm/decaf-model/decorators/types.js +1 -1
  96. package/lib/esm/decaf-model/decorators/utils.js +1 -1
  97. package/lib/esm/decaf-model/index.js +11 -4
  98. package/lib/esm/decaf-model/types.js +1 -1
  99. package/lib/esm/decaf-model/utils.js +1 -1
  100. package/lib/esm/decoration.js +1 -1
  101. package/lib/esm/decorators.js +79 -0
  102. package/lib/esm/events-module/DecafStreamModule.js +1 -1
  103. package/lib/esm/events-module/EventsController.js +1 -1
  104. package/lib/esm/events-module/constant.js +1 -1
  105. package/lib/esm/events-module/index.js +1 -1
  106. package/lib/esm/events-module/utils.js +1 -1
  107. package/lib/esm/factory/NestBootstraper.js +1 -1
  108. package/lib/esm/factory/errors/cors.js +1 -1
  109. package/lib/esm/factory/errors/index.js +1 -1
  110. package/lib/esm/factory/errors/throttling.js +1 -1
  111. package/lib/esm/factory/exceptions/DecafErrorFilter.js +1 -1
  112. package/lib/esm/factory/exceptions/decorators.js +1 -1
  113. package/lib/esm/factory/exceptions/index.js +1 -1
  114. package/lib/esm/factory/index.js +1 -1
  115. package/lib/esm/factory/openapi/DtoBuilder.js +36 -5
  116. package/lib/esm/factory/openapi/SwaggerBuilder.js +1 -1
  117. package/lib/esm/factory/openapi/SwaggerCustomUI.js +1 -1
  118. package/lib/esm/factory/openapi/constants.js +1 -1
  119. package/lib/esm/factory/openapi/index.js +1 -1
  120. package/lib/esm/index.js +7 -6
  121. package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +25 -21
  122. package/lib/esm/interceptors/index.js +2 -3
  123. package/lib/esm/module.js +4 -1
  124. package/lib/esm/overrides/Adapter.js +1 -1
  125. package/lib/esm/overrides/ModelBuilderExtensions.js +1 -1
  126. package/lib/esm/overrides/constants.js +1 -1
  127. package/lib/esm/overrides/decoration.js +1 -1
  128. package/lib/esm/overrides/helpers.js +1 -1
  129. package/lib/esm/overrides/index.js +2 -1
  130. package/lib/esm/overrides/logging.js +2 -0
  131. package/lib/esm/overrides/overrides.js +1 -1
  132. package/lib/esm/request/DecafAuthHandler.js +2 -36
  133. package/lib/esm/request/DecafHandlerExecutor.js +1 -1
  134. package/lib/esm/request/DecafRequestContext.js +10 -19
  135. package/lib/esm/request/DecafResponseInterceptor.js +2 -2
  136. package/lib/esm/request/index.js +1 -1
  137. package/lib/esm/swagger-types.js +1 -1
  138. package/lib/esm/types.js +1 -1
  139. package/lib/esm/utils.js +1 -1
  140. package/lib/esm/webhooks/DecafWebhookModule.js +5 -6
  141. package/lib/esm/webhooks/controllers.js +2 -2
  142. package/lib/esm/webhooks/index.js +1 -2
  143. package/lib/esm/webhooks/types.js +1 -1
  144. package/lib/types/{interceptors → auth}/AuthInterceptor.d.cts +4 -1
  145. package/lib/types/{interceptors → auth}/AuthInterceptor.d.mts +4 -1
  146. package/lib/types/auth/DecafAuthHandler.d.cts +22 -0
  147. package/lib/types/auth/DecafAuthHandler.d.mts +22 -0
  148. package/lib/types/auth/DecafAuthModule.d.cts +9 -0
  149. package/lib/types/auth/DecafAuthModule.d.mts +9 -0
  150. package/lib/types/auth/constants.d.cts +5 -0
  151. package/lib/types/auth/constants.d.mts +5 -0
  152. package/lib/types/auth/decorators.d.cts +4 -0
  153. package/lib/types/auth/decorators.d.mts +4 -0
  154. package/lib/types/auth/index.d.cts +6 -0
  155. package/lib/types/auth/index.d.mts +6 -0
  156. package/lib/types/cli-module.d.cts +1 -4
  157. package/lib/types/cli-module.d.mts +1 -4
  158. package/lib/types/constants.d.cts +2 -3
  159. package/lib/types/constants.d.mts +2 -3
  160. package/lib/types/controllers.d.cts +7 -12
  161. package/lib/types/controllers.d.mts +7 -12
  162. package/lib/types/decaf-model/DecafModelModule.d.cts +1 -0
  163. package/lib/types/decaf-model/DecafModelModule.d.mts +1 -0
  164. package/lib/types/decaf-model/FromModelController.d.cts +40 -52
  165. package/lib/types/decaf-model/FromModelController.d.mts +40 -52
  166. package/lib/types/decaf-model/decorators/ApiOperationFromModel.d.cts +0 -2
  167. package/lib/types/decaf-model/decorators/ApiOperationFromModel.d.mts +0 -2
  168. package/lib/types/decaf-model/decorators/controller-config.d.cts +18 -0
  169. package/lib/types/decaf-model/decorators/controller-config.d.mts +18 -0
  170. package/lib/types/decaf-model/decorators/decorators.d.cts +1 -29
  171. package/lib/types/decaf-model/decorators/decorators.d.mts +1 -29
  172. package/lib/types/decaf-model/decorators/expose.d.cts +1 -0
  173. package/lib/types/decaf-model/decorators/expose.d.mts +1 -0
  174. package/lib/types/decaf-model/decorators/index.d.cts +1 -0
  175. package/lib/types/decaf-model/decorators/index.d.mts +1 -0
  176. package/lib/types/decaf-model/decorators/types.d.cts +8 -21
  177. package/lib/types/decaf-model/decorators/types.d.mts +8 -21
  178. package/lib/types/decaf-model/index.d.cts +11 -3
  179. package/lib/types/decaf-model/index.d.mts +11 -3
  180. package/lib/types/decaf-model/utils.d.cts +2 -1
  181. package/lib/types/decaf-model/utils.d.mts +2 -1
  182. package/lib/types/decorators.d.cts +34 -0
  183. package/lib/types/decorators.d.mts +34 -0
  184. package/lib/types/factory/openapi/DtoBuilder.d.cts +7 -3
  185. package/lib/types/factory/openapi/DtoBuilder.d.mts +7 -3
  186. package/lib/types/index.d.cts +5 -5
  187. package/lib/types/index.d.mts +5 -5
  188. package/lib/types/interceptors/DecafRequestHandlerInterceptor.d.cts +1 -2
  189. package/lib/types/interceptors/DecafRequestHandlerInterceptor.d.mts +1 -2
  190. package/lib/types/interceptors/index.d.cts +1 -2
  191. package/lib/types/interceptors/index.d.mts +1 -2
  192. package/lib/types/overrides/Adapter.d.cts +1 -1
  193. package/lib/types/overrides/Adapter.d.mts +1 -1
  194. package/lib/types/overrides/index.d.cts +1 -0
  195. package/lib/types/overrides/index.d.mts +1 -0
  196. package/lib/types/overrides/logging.d.cts +1 -0
  197. package/lib/types/overrides/logging.d.mts +1 -0
  198. package/lib/types/request/DecafAuthHandler.d.cts +1 -10
  199. package/lib/types/request/DecafAuthHandler.d.mts +1 -10
  200. package/lib/types/request/DecafRequestContext.d.cts +4 -5
  201. package/lib/types/request/DecafRequestContext.d.mts +4 -5
  202. package/lib/types/types.d.cts +12 -24
  203. package/lib/types/types.d.mts +12 -24
  204. package/lib/types/webhooks/controllers.d.cts +1 -1
  205. package/lib/types/webhooks/controllers.d.mts +1 -1
  206. package/lib/types/webhooks/index.d.cts +0 -1
  207. package/lib/types/webhooks/index.d.mts +0 -1
  208. package/package.json +5 -13
  209. package/dist/for-nest.cjs.map +0 -1
  210. package/dist/for-nest.js.map +0 -1
  211. package/lib/cjs/bin/cli.cjs.map +0 -1
  212. package/lib/cjs/cli-module.cjs.map +0 -1
  213. package/lib/cjs/constants.cjs.map +0 -1
  214. package/lib/cjs/controllers.cjs.map +0 -1
  215. package/lib/cjs/core-module.cjs.map +0 -1
  216. package/lib/cjs/decaf-model/DecafModelModule.cjs.map +0 -1
  217. package/lib/cjs/decaf-model/FromModelController.cjs.map +0 -1
  218. package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs.map +0 -1
  219. package/lib/cjs/decaf-model/decorators/ApiParamsFromModel.cjs.map +0 -1
  220. package/lib/cjs/decaf-model/decorators/DecafBody.cjs.map +0 -1
  221. package/lib/cjs/decaf-model/decorators/DecafParams.cjs.map +0 -1
  222. package/lib/cjs/decaf-model/decorators/decorators.cjs.map +0 -1
  223. package/lib/cjs/decaf-model/decorators/index.cjs.map +0 -1
  224. package/lib/cjs/decaf-model/decorators/types.cjs.map +0 -1
  225. package/lib/cjs/decaf-model/decorators/utils.cjs.map +0 -1
  226. package/lib/cjs/decaf-model/index.cjs.map +0 -1
  227. package/lib/cjs/decaf-model/types.cjs.map +0 -1
  228. package/lib/cjs/decaf-model/utils.cjs.map +0 -1
  229. package/lib/cjs/decoration.cjs.map +0 -1
  230. package/lib/cjs/events-module/DecafStreamModule.cjs.map +0 -1
  231. package/lib/cjs/events-module/EventsController.cjs.map +0 -1
  232. package/lib/cjs/events-module/constant.cjs.map +0 -1
  233. package/lib/cjs/events-module/index.cjs.map +0 -1
  234. package/lib/cjs/events-module/utils.cjs.map +0 -1
  235. package/lib/cjs/factory/NestBootstraper.cjs.map +0 -1
  236. package/lib/cjs/factory/errors/cors.cjs.map +0 -1
  237. package/lib/cjs/factory/errors/index.cjs.map +0 -1
  238. package/lib/cjs/factory/errors/throttling.cjs.map +0 -1
  239. package/lib/cjs/factory/exceptions/DecafErrorFilter.cjs.map +0 -1
  240. package/lib/cjs/factory/exceptions/decorators.cjs.map +0 -1
  241. package/lib/cjs/factory/exceptions/index.cjs.map +0 -1
  242. package/lib/cjs/factory/index.cjs.map +0 -1
  243. package/lib/cjs/factory/openapi/DtoBuilder.cjs.map +0 -1
  244. package/lib/cjs/factory/openapi/SwaggerBuilder.cjs.map +0 -1
  245. package/lib/cjs/factory/openapi/SwaggerCustomUI.cjs.map +0 -1
  246. package/lib/cjs/factory/openapi/constants.cjs.map +0 -1
  247. package/lib/cjs/factory/openapi/index.cjs.map +0 -1
  248. package/lib/cjs/index.cjs.map +0 -1
  249. package/lib/cjs/interceptors/AuthInterceptor.cjs +0 -52
  250. package/lib/cjs/interceptors/AuthInterceptor.cjs.map +0 -1
  251. package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs.map +0 -1
  252. package/lib/cjs/interceptors/context.cjs +0 -18
  253. package/lib/cjs/interceptors/context.cjs.map +0 -1
  254. package/lib/cjs/interceptors/index.cjs.map +0 -1
  255. package/lib/cjs/migrations/index.cjs +0 -35
  256. package/lib/cjs/migrations/index.cjs.map +0 -1
  257. package/lib/cjs/migrations/migration-module.cjs +0 -60
  258. package/lib/cjs/migrations/migration-module.cjs.map +0 -1
  259. package/lib/cjs/migrations/migration-options.cjs +0 -4
  260. package/lib/cjs/migrations/migration-options.cjs.map +0 -1
  261. package/lib/cjs/module.cjs.map +0 -1
  262. package/lib/cjs/overrides/Adapter.cjs.map +0 -1
  263. package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +0 -1
  264. package/lib/cjs/overrides/constants.cjs.map +0 -1
  265. package/lib/cjs/overrides/decoration.cjs.map +0 -1
  266. package/lib/cjs/overrides/helpers.cjs.map +0 -1
  267. package/lib/cjs/overrides/index.cjs.map +0 -1
  268. package/lib/cjs/overrides/overrides.cjs.map +0 -1
  269. package/lib/cjs/ram/RamRequestTransformer.cjs +0 -26
  270. package/lib/cjs/ram/RamRequestTransformer.cjs.map +0 -1
  271. package/lib/cjs/ram/index.cjs +0 -19
  272. package/lib/cjs/ram/index.cjs.map +0 -1
  273. package/lib/cjs/request/DecafAuthHandler.cjs.map +0 -1
  274. package/lib/cjs/request/DecafHandlerExecutor.cjs.map +0 -1
  275. package/lib/cjs/request/DecafRequestContext.cjs.map +0 -1
  276. package/lib/cjs/request/DecafResponseInterceptor.cjs.map +0 -1
  277. package/lib/cjs/request/index.cjs.map +0 -1
  278. package/lib/cjs/swagger-types.cjs.map +0 -1
  279. package/lib/cjs/types.cjs.map +0 -1
  280. package/lib/cjs/utils.cjs.map +0 -1
  281. package/lib/cjs/webhooks/DecafWebhookModule.cjs.map +0 -1
  282. package/lib/cjs/webhooks/controllers.cjs.map +0 -1
  283. package/lib/cjs/webhooks/index.cjs.map +0 -1
  284. package/lib/cjs/webhooks/types.cjs.map +0 -1
  285. package/lib/esm/bin/cli.js.map +0 -1
  286. package/lib/esm/cli-module.js.map +0 -1
  287. package/lib/esm/constants.js.map +0 -1
  288. package/lib/esm/controllers.js.map +0 -1
  289. package/lib/esm/core-module.js.map +0 -1
  290. package/lib/esm/decaf-model/DecafModelModule.js.map +0 -1
  291. package/lib/esm/decaf-model/FromModelController.js.map +0 -1
  292. package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js.map +0 -1
  293. package/lib/esm/decaf-model/decorators/ApiParamsFromModel.js.map +0 -1
  294. package/lib/esm/decaf-model/decorators/DecafBody.js.map +0 -1
  295. package/lib/esm/decaf-model/decorators/DecafParams.js.map +0 -1
  296. package/lib/esm/decaf-model/decorators/decorators.js.map +0 -1
  297. package/lib/esm/decaf-model/decorators/index.js.map +0 -1
  298. package/lib/esm/decaf-model/decorators/types.js.map +0 -1
  299. package/lib/esm/decaf-model/decorators/utils.js.map +0 -1
  300. package/lib/esm/decaf-model/index.js.map +0 -1
  301. package/lib/esm/decaf-model/types.js.map +0 -1
  302. package/lib/esm/decaf-model/utils.js.map +0 -1
  303. package/lib/esm/decoration.js.map +0 -1
  304. package/lib/esm/events-module/DecafStreamModule.js.map +0 -1
  305. package/lib/esm/events-module/EventsController.js.map +0 -1
  306. package/lib/esm/events-module/constant.js.map +0 -1
  307. package/lib/esm/events-module/index.js.map +0 -1
  308. package/lib/esm/events-module/utils.js.map +0 -1
  309. package/lib/esm/factory/NestBootstraper.js.map +0 -1
  310. package/lib/esm/factory/errors/cors.js.map +0 -1
  311. package/lib/esm/factory/errors/index.js.map +0 -1
  312. package/lib/esm/factory/errors/throttling.js.map +0 -1
  313. package/lib/esm/factory/exceptions/DecafErrorFilter.js.map +0 -1
  314. package/lib/esm/factory/exceptions/decorators.js.map +0 -1
  315. package/lib/esm/factory/exceptions/index.js.map +0 -1
  316. package/lib/esm/factory/index.js.map +0 -1
  317. package/lib/esm/factory/openapi/DtoBuilder.js.map +0 -1
  318. package/lib/esm/factory/openapi/SwaggerBuilder.js.map +0 -1
  319. package/lib/esm/factory/openapi/SwaggerCustomUI.js.map +0 -1
  320. package/lib/esm/factory/openapi/constants.js.map +0 -1
  321. package/lib/esm/factory/openapi/index.js.map +0 -1
  322. package/lib/esm/index.js.map +0 -1
  323. package/lib/esm/interceptors/AuthInterceptor.js +0 -43
  324. package/lib/esm/interceptors/AuthInterceptor.js.map +0 -1
  325. package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +0 -1
  326. package/lib/esm/interceptors/context.js +0 -12
  327. package/lib/esm/interceptors/context.js.map +0 -1
  328. package/lib/esm/interceptors/index.js.map +0 -1
  329. package/lib/esm/migrations/index.js +0 -18
  330. package/lib/esm/migrations/index.js.map +0 -1
  331. package/lib/esm/migrations/migration-module.js +0 -52
  332. package/lib/esm/migrations/migration-module.js.map +0 -1
  333. package/lib/esm/migrations/migration-options.js +0 -7
  334. package/lib/esm/migrations/migration-options.js.map +0 -1
  335. package/lib/esm/module.js.map +0 -1
  336. package/lib/esm/overrides/Adapter.js.map +0 -1
  337. package/lib/esm/overrides/ModelBuilderExtensions.js.map +0 -1
  338. package/lib/esm/overrides/constants.js.map +0 -1
  339. package/lib/esm/overrides/decoration.js.map +0 -1
  340. package/lib/esm/overrides/helpers.js.map +0 -1
  341. package/lib/esm/overrides/index.js.map +0 -1
  342. package/lib/esm/overrides/overrides.js.map +0 -1
  343. package/lib/esm/ram/RamRequestTransformer.js +0 -21
  344. package/lib/esm/ram/RamRequestTransformer.js.map +0 -1
  345. package/lib/esm/ram/index.js +0 -2
  346. package/lib/esm/ram/index.js.map +0 -1
  347. package/lib/esm/request/DecafAuthHandler.js.map +0 -1
  348. package/lib/esm/request/DecafHandlerExecutor.js.map +0 -1
  349. package/lib/esm/request/DecafRequestContext.js.map +0 -1
  350. package/lib/esm/request/DecafResponseInterceptor.js.map +0 -1
  351. package/lib/esm/request/index.js.map +0 -1
  352. package/lib/esm/swagger-types.js.map +0 -1
  353. package/lib/esm/types.js.map +0 -1
  354. package/lib/esm/utils.js.map +0 -1
  355. package/lib/esm/webhooks/DecafWebhookModule.js.map +0 -1
  356. package/lib/esm/webhooks/controllers.js.map +0 -1
  357. package/lib/esm/webhooks/index.js.map +0 -1
  358. package/lib/esm/webhooks/types.js.map +0 -1
  359. package/lib/types/interceptors/context.d.cts +0 -6
  360. package/lib/types/interceptors/context.d.mts +0 -6
  361. package/lib/types/migrations/index.d.cts +0 -17
  362. package/lib/types/migrations/index.d.mts +0 -17
  363. package/lib/types/migrations/migration-module.d.cts +0 -15
  364. package/lib/types/migrations/migration-module.d.mts +0 -15
  365. package/lib/types/migrations/migration-options.d.cts +0 -11
  366. package/lib/types/migrations/migration-options.d.mts +0 -11
  367. package/lib/types/ram/RamRequestTransformer.d.cts +0 -5
  368. package/lib/types/ram/RamRequestTransformer.d.mts +0 -5
  369. package/lib/types/ram/index.d.cts +0 -1
  370. package/lib/types/ram/index.d.mts +0 -1
@@ -25,8 +25,8 @@ const DecafRequestHandlerInterceptor_js_1 = require("./../interceptors/DecafRequ
25
25
  const constants_js_1 = require("./../constants.cjs");
26
26
  const core_3 = require("@nestjs/core");
27
27
  const index_js_2 = require("./../decaf-model/index.cjs");
28
- const context_js_1 = require("./../interceptors/context.cjs");
29
28
  const server_1 = require("@decaf-ts/for-http/server");
29
+ const hooks_1 = require("@decaf-ts/for-http/hooks");
30
30
  const controllers_js_1 = require("./controllers.cjs");
31
31
  let DecafWebhookModule = class DecafWebhookModule {
32
32
  static { DecafWebhookModule_1 = this; }
@@ -61,8 +61,7 @@ let DecafWebhookModule = class DecafWebhookModule {
61
61
  const c = options.conf[i];
62
62
  const possibleTransf = c.slice(2, c.length);
63
63
  let transformer = possibleTransf.pop();
64
- if (!transformer ||
65
- !transformer.from) {
64
+ if (!transformer || !transformer.from) {
66
65
  const contr = core_2.Adapter.transformerFor(clients[i].flavour);
67
66
  if (!contr)
68
67
  throw new db_decorators_1.InternalError(`No transformer found for flavour ${clients[i].flavour}.`);
@@ -75,10 +74,10 @@ let DecafWebhookModule = class DecafWebhookModule {
75
74
  throw new db_decorators_1.InternalError(`Failed to boot transformer for ${clients[i].flavour}: ${e}`);
76
75
  }
77
76
  }
78
- (0, context_js_1.requestToContextTransformer)(clients[i].flavour)(transformer);
79
- (0, decoration_1.uses)(clients[i].flavour)(server_1.WebhookSubscription);
80
- (0, decoration_1.uses)(clients[i].flavour)(server_1.WebhookEventRecord);
81
- (0, decoration_1.uses)(clients[i].flavour)(server_1.WebhookDelivery);
77
+ (0, server_1.requestToContextTransformer)(clients[i].flavour)(transformer);
78
+ (0, decoration_1.uses)(clients[i].flavour)(hooks_1.WebhookSubscription);
79
+ (0, decoration_1.uses)(clients[i].flavour)(hooks_1.WebhookEventRecord);
80
+ (0, decoration_1.uses)(clients[i].flavour)(hooks_1.WebhookDelivery);
82
81
  }
83
82
  log.info("persistence layer created successfully!");
84
83
  if (options.initialization) {
@@ -98,9 +97,9 @@ let DecafWebhookModule = class DecafWebhookModule {
98
97
  static async forRootAsync(options) {
99
98
  const adapters = await this.bootPersistence(options);
100
99
  const controllers = [
101
- index_js_2.FromModelController.create(server_1.WebhookSubscription),
102
- index_js_2.FromModelController.create(server_1.WebhookEventRecord),
103
- index_js_2.FromModelController.create(server_1.WebhookDelivery),
100
+ index_js_2.FromModelController.create(hooks_1.WebhookSubscription),
101
+ index_js_2.FromModelController.create(hooks_1.WebhookEventRecord),
102
+ index_js_2.FromModelController.create(hooks_1.WebhookDelivery),
104
103
  controllers_js_1.WebhookSubscriptionActionsController,
105
104
  controllers_js_1.WebhookEventActionsController,
106
105
  ];
@@ -137,5 +136,5 @@ exports.DecafWebhookModule = DecafWebhookModule = DecafWebhookModule_1 = __decor
137
136
  ], DecafWebhookModule);
138
137
  exports.DecafWebhooksModule = DecafWebhookModule;
139
138
  async function runWebhooksMigrations() { }
140
- //# sourceMappingURL=DecafWebhookModule.js.map
141
- //# sourceMappingURL=DecafWebhookModule.js.map
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZXZWJob29rTW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dlYmhvb2tzL0RlY2FmV2ViaG9va01vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFlLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQW1CO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw2Q0FBd0M7QUFDdkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLDREQUF1RDtBQUNoRyxPQUFPLEVBQUUsY0FBYyxFQUFFLDBCQUFxQjtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQ0FBdUI7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBQ3BCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixvQ0FBb0MsR0FDckMseUJBQXNCO0FBR2hCLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCOzthQUNkLFlBQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFrQixDQUFDLEFBQWxDLENBQW1DO0lBR2pELE1BQU0s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O1lBQy9DLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQzNDLG9DQUFvQztZQUNwQyw2QkFBNkI7U0FDOUIsQ0FBQztRQUVGLE9BQU87WUFDTCxNQUFNLEVBQUUsb0JBQWtCO1lBQzFCLFdBQVc7WUFDWCxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxDQUFDLFFBQVEsQ0FBQztvQkFDcEI7d0JBQ0UsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDL0QsTUFBTSxFQUFFLG9CQUFrQjtxQkFDM0I7aUJBQ0YsQ0FBQzthQUNIO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG1CQUFtQjtnQkFDbkIsb0JBQW9CO2dCQUNwQjtvQkFDRSxPQUFPLEVBQUUsY0FBYztvQkFDdkIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTtpQkFDOUQ7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFFBQVEsRUFBRSw4QkFBOEI7aUJBQ3pDO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztTQUNyRCxDQUFDO0lBQ0osQ0FBQzs7QUFySFUsa0JBQWtCO0lBRDlCLE1BQU0sQ0FBQyxFQUFFLENBQUM7R0FDRSxrQkFBa0IsQ0FzSDlCOztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLEtBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljTW9kdWxlLCBNb2R1bGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbmltcG9ydCB7IEFkYXB0ZXIsIFBlcnNpc3RlbmNlU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIHVzZXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IERlY2FmUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiLi4vcmVxdWVzdFwiO1xuaW1wb3J0IHsgRGVjYWZIYW5kbGVyRXhlY3V0b3IgfSBmcm9tIFwiLi4vcmVxdWVzdC9EZWNhZkhhbmRsZXJFeGVjdXRvclwiO1xuaW1wb3J0IHsgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yIH0gZnJvbSBcIi4uL2ludGVyY2VwdG9ycy9EZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3JcIjtcbmltcG9ydCB7IERFQ0FGX0hBTkRMRVJTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQVBQX0lOVEVSQ0VQVE9SIH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuaW1wb3J0IHsgRGVjYWZXZWJob29rTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBGcm9tTW9kZWxDb250cm9sbGVyIH0gZnJvbSBcIi4uL2RlY2FmLW1vZGVsXCI7XG5pbXBvcnQgeyByZXF1ZXN0VG9Db250ZXh0VHJhbnNmb3JtZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1odHRwL3NlcnZlclwiO1xuaW1wb3J0IHtcbiAgV2ViaG9va0RlbGl2ZXJ5LFxuICBXZWJob29rRXZlbnRSZWNvcmQsXG4gIFdlYmhvb2tTdWJzY3JpcHRpb24sXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvaG9va3NcIjtcbmltcG9ydCB7XG4gIFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyLFxuICBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIsXG59IGZyb20gXCIuL2NvbnRyb2xsZXJzXCI7XG5cbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZXZWJob29rTW9kdWxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlciA9IExvZ2dpbmcuZm9yKERlY2FmV2ViaG9va01vZHVsZSk7XG4gIHByaXZhdGUgc3RhdGljIF9wZXJzaXN0ZW5jZT86IFBlcnNpc3RlbmNlU2VydmljZTxBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+O1xuXG4gIHByaXZhdGUgc3RhdGljIGdldCBsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlcjtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBib290UGVyc2lzdGVuY2UoXG4gICAgb3B0aW9uczogRGVjYWZXZWJob29rTW9kdWxlT3B0aW9uc1xuICApOiBQcm9taXNlPEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PltdPiB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYm9vdFBlcnNpc3RlbmNlKTtcbiAgICBpZiAoIXRoaXMuX3BlcnNpc3RlbmNlKSB7XG4gICAgICBjb25zdCB0cmltbWVkID0gb3B0aW9ucy5jb25mLm1hcCgoW2NvbnRyLCBjZmcsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlID0gYXJncy5wb3AoKTtcbiAgICAgICAgaWYgKCFwb3NzaWJsZSkgcmV0dXJuIFtjb250ciwgY2ZnXTtcbiAgICAgICAgcmV0dXJuIFtjb250ciwgY2ZnLCAuLi5hcmdzXTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcGVyc2lzdGVuY2UgPSBuZXcgUGVyc2lzdGVuY2VTZXJ2aWNlKCk7XG4gICAgICBhd2FpdCB0aGlzLl9wZXJzaXN0ZW5jZS5ib290KHRyaW1tZWQpO1xuXG4gICAgICBjb25zdCBjbGllbnRzID0gdGhpcy5fcGVyc2lzdGVuY2UuY2xpZW50O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbGllbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gKEFkYXB0ZXIgYXMgYW55KS5fY2FjaGUgfHwgKChBZGFwdGVyIGFzIGFueSkuX2NhY2hlID0ge30pO1xuICAgICAgICBjb25zdCB3ZWJob29rS2V5cyA9IFtcbiAgICAgICAgICBjbGllbnRzW2ldLmZsYXZvdXIsXG4gICAgICAgICAgY2xpZW50c1tpXS5hbGlhcyxcbiAgICAgICAgICBcIndlYmhvb2tfZGVsaXZlcmllc1wiLFxuICAgICAgICAgIFwid2ViaG9va19ldmVudHNcIixcbiAgICAgICAgICBcIndlYmhvb2tfc3Vic2NyaXB0aW9uc1wiLFxuICAgICAgICBdLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gISF2YWx1ZSk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHdlYmhvb2tLZXlzKSB7XG4gICAgICAgICAgY2FjaGVba2V5XSA9IGNsaWVudHNbaV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gb3B0aW9ucy5jb25mW2ldO1xuICAgICAgICBjb25zdCBwb3NzaWJsZVRyYW5zZiA9IGMuc2xpY2UoMiwgYy5sZW5ndGgpO1xuICAgICAgICBsZXQgdHJhbnNmb3JtZXIgPSBwb3NzaWJsZVRyYW5zZi5wb3AoKTtcbiAgICAgICAgaWYgKCF0cmFuc2Zvcm1lciB8fCAhKHRyYW5zZm9ybWVyIGFzIHsgZnJvbT86IHVua25vd24gfSkuZnJvbSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRyID0gQWRhcHRlci50cmFuc2Zvcm1lckZvcihjbGllbnRzW2ldLmZsYXZvdXIpO1xuICAgICAgICAgIGlmICghY29udHIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgYE5vIHRyYW5zZm9ybWVyIGZvdW5kIGZvciBmbGF2b3VyICR7Y2xpZW50c1tpXS5mbGF2b3VyfS5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lciA9IChjb250ciBhcyBhbnkpLmZyb21cbiAgICAgICAgICAgICAgPyBjb250clxuICAgICAgICAgICAgICA6IG5ldyAoY29udHIgYXMgQ29uc3RydWN0b3I8YW55PikoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBib290IHRyYW5zZm9ybWVyIGZvciAke2NsaWVudHNbaV0uZmxhdm91cn06ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0VG9Db250ZXh0VHJhbnNmb3JtZXIoY2xpZW50c1tpXS5mbGF2b3VyKSh0cmFuc2Zvcm1lcik7XG5cbiAgICAgICAgdXNlcyhjbGllbnRzW2ldLmZsYXZvdXIpKFdlYmhvb2tTdWJzY3JpcHRpb24pO1xuICAgICAgICB1c2VzKGNsaWVudHNbaV0uZmxhdm91cikoV2ViaG9va0V2ZW50UmVjb3JkKTtcbiAgICAgICAgdXNlcyhjbGllbnRzW2ldLmZsYXZvdXIpKFdlYmhvb2tEZWxpdmVyeSk7XG4gICAgICB9XG4gICAgICBsb2cuaW5mbyhcInBlcnNpc3RlbmNlIGxheWVyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiKTtcblxuICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbGl6YXRpb24pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBvcHRpb25zLmluaXRpYWxpemF0aW9uKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGluaXRpYWxpemUgd2ViaG9vayBtb2R1bGU6ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZXJzaXN0ZW5jZS5jbGllbnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZm9yUm9vdChcbiAgICBvcHRpb25zOiBEZWNhZldlYmhvb2tNb2R1bGVPcHRpb25zXG4gICk6IFByb21pc2U8RHluYW1pY01vZHVsZT4ge1xuICAgIHJldHVybiB0aGlzLmZvclJvb3RBc3luYyhvcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBmb3JSb290QXN5bmMoXG4gICAgb3B0aW9uczogRGVjYWZXZWJob29rTW9kdWxlT3B0aW9uc1xuICApOiBQcm9taXNlPER5bmFtaWNNb2R1bGU+IHtcbiAgICBjb25zdCBhZGFwdGVycyA9IGF3YWl0IHRoaXMuYm9vdFBlcnNpc3RlbmNlKG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gW1xuICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUoV2ViaG9va1N1YnNjcmlwdGlvbiksXG4gICAgICBGcm9tTW9kZWxDb250cm9sbGVyLmNyZWF0ZShXZWJob29rRXZlbnRSZWNvcmQpLFxuICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUoV2ViaG9va0RlbGl2ZXJ5KSxcbiAgICAgIFdlYmhvb2tTdWJzY3JpcHRpb25BY3Rpb25zQ29udHJvbGxlcixcbiAgICAgIFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZldlYmhvb2tNb2R1bGUsXG4gICAgICBjb250cm9sbGVycyxcbiAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgUm91dGVyTW9kdWxlLnJlZ2lzdGVyKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXRoOiAob3B0aW9ucy53ZWJob29rQXBpUGF0aCB8fCBcIndlYmhvb2tzXCIpLnJlcGxhY2UoL15cXC8vLCBcIlwiKSxcbiAgICAgICAgICAgIG1vZHVsZTogRGVjYWZXZWJob29rTW9kdWxlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pLFxuICAgICAgXSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgICAgICBEZWNhZkhhbmRsZXJFeGVjdXRvcixcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IERFQ0FGX0hBTkRMRVJTLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG9wdGlvbnMuaGFuZGxlcnM/Lm1hcCgoSCkgPT4gbmV3IEgoKSkgPz8gW10sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5URVJDRVBUT1IsXG4gICAgICAgICAgdXNlQ2xhc3M6IERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBleHBvcnRzOiBbRGVjYWZSZXF1ZXN0Q29udGV4dCwgRGVjYWZIYW5kbGVyRXhlY3V0b3JdLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IERlY2FmV2ViaG9va3NNb2R1bGUgPSBEZWNhZldlYmhvb2tNb2R1bGU7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XZWJob29rc01pZ3JhdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7fVxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZXZWJob29rTW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGVjYWZXZWJob29rTW9kdWxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlJQSxzREFBaUQ7QUFqSWpELElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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LENBQUM7YUFDTDtZQUNELFNBQVMsRUFBRTtnQkFDUCw4QkFBbUI7Z0JBQ25CLDhDQUFvQjtnQkFDcEI7b0JBQ0ksT0FBTyxFQUFFLDZCQUFjO29CQUN2QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO2lCQUNoRTtnQkFDRDtvQkFDSSxPQUFPLEVBQUUsc0JBQWU7b0JBQ3hCLFFBQVEsRUFBRSxrRUFBOEI7aUJBQzNDO2FBQ0o7WUFDRCxPQUFPLEVBQUUsQ0FBQyw4QkFBbUIsRUFBRSw4Q0FBb0IsQ0FBQztTQUN2RCxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUM7QUFJTyxnREFBa0I7QUFIM0IsNkJBQUEsa0JBQWtCLEdBQUcsb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0lBQ25ELElBQUEsZUFBTSxFQUFDLEVBQUUsQ0FBQztDQUNiLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUVWLFFBQUEsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDL0MsS0FBSyxVQUFVLHFCQUFxQixLQUFLLENBQUM7QUFDakQsa2haQUFraFoiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgRGVjYWZXZWJob29rTW9kdWxlXzE7XG5pbXBvcnQgeyBNb2R1bGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbmltcG9ydCB7IEFkYXB0ZXIsIFBlcnNpc3RlbmNlU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdXNlcyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRGVjYWZSZXF1ZXN0Q29udGV4dCB9IGZyb20gXCIuLy4uL3JlcXVlc3QvaW5kZXguanNcIjtcbmltcG9ydCB7IERlY2FmSGFuZGxlckV4ZWN1dG9yIH0gZnJvbSBcIi4vLi4vcmVxdWVzdC9EZWNhZkhhbmRsZXJFeGVjdXRvci5qc1wiO1xuaW1wb3J0IHsgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yIH0gZnJvbSBcIi4vLi4vaW50ZXJjZXB0b3JzL0RlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvci5qc1wiO1xuaW1wb3J0IHsgREVDQUZfSEFORExFUlMgfSBmcm9tIFwiLi8uLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IEFQUF9JTlRFUkNFUFRPUiB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbmltcG9ydCB7IEZyb21Nb2RlbENvbnRyb2xsZXIgfSBmcm9tIFwiLi8uLi9kZWNhZi1tb2RlbC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcmVxdWVzdFRvQ29udGV4dFRyYW5zZm9ybWVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcbmltcG9ydCB7IFdlYmhvb2tEZWxpdmVyeSwgV2ViaG9va0V2ZW50UmVjb3JkLCBXZWJob29rU3Vic2NyaXB0aW9uLCB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvaG9va3NcIjtcbmltcG9ydCB7IFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyLCBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIsIH0gZnJvbSBcIi4vY29udHJvbGxlcnMuanNcIjtcbmxldCBEZWNhZldlYmhvb2tNb2R1bGUgPSBjbGFzcyBEZWNhZldlYmhvb2tNb2R1bGUge1xuICAgIHN0YXRpYyB7IERlY2FmV2ViaG9va01vZHVsZV8xID0gdGhpczsgfVxuICAgIHN0YXRpYyB7IHRoaXMuX2xvZ2dlciA9IExvZ2dpbmcuZm9yKERlY2FmV2ViaG9va01vZHVsZV8xKTsgfVxuICAgIHN0YXRpYyBnZXQgbG9nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgYm9vdFBlcnNpc3RlbmNlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYm9vdFBlcnNpc3RlbmNlKTtcbiAgICAgICAgaWYgKCF0aGlzLl9wZXJzaXN0ZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IG9wdGlvbnMuY29uZi5tYXAoKFtjb250ciwgY2ZnLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlID0gYXJncy5wb3AoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBvc3NpYmxlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRyLCBjZmddO1xuICAgICAgICAgICAgICAgIHJldHVybiBbY29udHIsIGNmZywgLi4uYXJnc107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gbmV3IFBlcnNpc3RlbmNlU2VydmljZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcGVyc2lzdGVuY2UuYm9vdCh0cmltbWVkKTtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudHMgPSB0aGlzLl9wZXJzaXN0ZW5jZS5jbGllbnQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsaWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZSA9IEFkYXB0ZXIuX2NhY2hlIHx8IChBZGFwdGVyLl9jYWNoZSA9IHt9KTtcbiAgICAgICAgICAgICAgICBjb25zdCB3ZWJob29rS2V5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50c1tpXS5mbGF2b3VyLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRzW2ldLmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBcIndlYmhvb2tfZGVsaXZlcmllc1wiLFxuICAgICAgICAgICAgICAgICAgICBcIndlYmhvb2tfZXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwid2ViaG9va19zdWJzY3JpcHRpb25zXCIsXG4gICAgICAgICAgICAgICAgXS5maWx0ZXIoKHZhbHVlKSA9PiAhIXZhbHVlKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB3ZWJob29rS2V5cykge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gY2xpZW50c1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IG9wdGlvbnMuY29uZltpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NzaWJsZVRyYW5zZiA9IGMuc2xpY2UoMiwgYy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm1lciA9IHBvc3NpYmxlVHJhbnNmLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtZXIgfHwgIXRyYW5zZm9ybWVyLmZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHIgPSBBZGFwdGVyLnRyYW5zZm9ybWVyRm9yKGNsaWVudHNbaV0uZmxhdm91cik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udHIpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gdHJhbnNmb3JtZXIgZm91bmQgZm9yIGZsYXZvdXIgJHtjbGllbnRzW2ldLmZsYXZvdXJ9LmApO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZXIgPSBjb250ci5mcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb250clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IGNvbnRyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gYm9vdCB0cmFuc2Zvcm1lciBmb3IgJHtjbGllbnRzW2ldLmZsYXZvdXJ9OiAke2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVxdWVzdFRvQ29udGV4dFRyYW5zZm9ybWVyKGNsaWVudHNbaV0uZmxhdm91cikodHJhbnNmb3JtZXIpO1xuICAgICAgICAgICAgICAgIHVzZXMoY2xpZW50c1tpXS5mbGF2b3VyKShXZWJob29rU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB1c2VzKGNsaWVudHNbaV0uZmxhdm91cikoV2ViaG9va0V2ZW50UmVjb3JkKTtcbiAgICAgICAgICAgICAgICB1c2VzKGNsaWVudHNbaV0uZmxhdm91cikoV2ViaG9va0RlbGl2ZXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvZy5pbmZvKFwicGVyc2lzdGVuY2UgbGF5ZXIgY3JlYXRlZCBzdWNjZXNzZnVsbHkhXCIpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbGl6YXRpb24pIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBvcHRpb25zLmluaXRpYWxpemF0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB3ZWJob29rIG1vZHVsZTogJHtlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcGVyc2lzdGVuY2UuY2xpZW50O1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgZm9yUm9vdChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvclJvb3RBc3luYyhvcHRpb25zKTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGZvclJvb3RBc3luYyhvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGFkYXB0ZXJzID0gYXdhaXQgdGhpcy5ib290UGVyc2lzdGVuY2Uob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gW1xuICAgICAgICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUoV2ViaG9va1N1YnNjcmlwdGlvbiksXG4gICAgICAgICAgICBGcm9tTW9kZWxDb250cm9sbGVyLmNyZWF0ZShXZWJob29rRXZlbnRSZWNvcmQpLFxuICAgICAgICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUoV2ViaG9va0RlbGl2ZXJ5KSxcbiAgICAgICAgICAgIFdlYmhvb2tTdWJzY3JpcHRpb25BY3Rpb25zQ29udHJvbGxlcixcbiAgICAgICAgICAgIFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kdWxlOiBEZWNhZldlYmhvb2tNb2R1bGVfMSxcbiAgICAgICAgICAgIGNvbnRyb2xsZXJzLFxuICAgICAgICAgICAgaW1wb3J0czogW1xuICAgICAgICAgICAgICAgIFJvdXRlck1vZHVsZS5yZWdpc3RlcihbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IChvcHRpb25zLndlYmhvb2tBcGlQYXRoIHx8IFwid2ViaG9va3NcIikucmVwbGFjZSgvXlxcLy8sIFwiXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlOiBEZWNhZldlYmhvb2tNb2R1bGVfMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICBEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgICAgICAgICAgICAgIERlY2FmSGFuZGxlckV4ZWN1dG9yLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogREVDQUZfSEFORExFUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG9wdGlvbnMuaGFuZGxlcnM/Lm1hcCgoSCkgPT4gbmV3IEgoKSkgPz8gW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTlRFUkNFUFRPUixcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGV4cG9ydHM6IFtEZWNhZlJlcXVlc3RDb250ZXh0LCBEZWNhZkhhbmRsZXJFeGVjdXRvcl0sXG4gICAgICAgIH07XG4gICAgfVxufTtcbkRlY2FmV2ViaG9va01vZHVsZSA9IERlY2FmV2ViaG9va01vZHVsZV8xID0gX19kZWNvcmF0ZShbXG4gICAgTW9kdWxlKHt9KVxuXSwgRGVjYWZXZWJob29rTW9kdWxlKTtcbmV4cG9ydCB7IERlY2FmV2ViaG9va01vZHVsZSB9O1xuZXhwb3J0IGNvbnN0IERlY2FmV2ViaG9va3NNb2R1bGUgPSBEZWNhZldlYmhvb2tNb2R1bGU7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2ViaG9va3NNaWdyYXRpb25zKCkgeyB9XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSR1ZqWVdaWFpXSm9iMjlyVFc5a2RXeGxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMM2RsWW1odmIydHpMMFJsWTJGbVYyVmlhRzl2YTAxdlpIVnNaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPMEZCUVVFc1QwRkJUeXhGUVVGcFFpeE5RVUZOTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU4yUkN4UFFVRlBMRVZCUVVVc1dVRkJXU3hGUVVGRkxFMUJRVTBzWTBGQll5eERRVUZETzBGQlF6VkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRGVFUXNUMEZCVHl4RlFVRmxMRWxCUVVrc1JVRkJSU3hOUVVGTkxITkNRVUZ6UWl4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVU0xUXl4UFFVRlBMRVZCUVVVc2JVSkJRVzFDTEVWQlFVVXNPRUpCUVcxQ08wRkJRMnBFTEU5QlFVOHNSVUZCUlN4dlFrRkJiMElzUlVGQlJTdzJRMEZCZDBNN1FVRkRka1VzVDBGQlR5eEZRVUZGTERoQ1FVRTRRaXhGUVVGRkxEUkVRVUYxUkR0QlFVTm9SeXhQUVVGUExFVkJRVVVzWTBGQll5eEZRVUZGTERCQ1FVRnhRanRCUVVNNVF5eFBRVUZQTEVWQlFVVXNaVUZCWlN4RlFVRkZMRTFCUVUwc1kwRkJZeXhEUVVGRE8wRkJSUzlETEU5QlFVOHNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeHJRMEZCZFVJN1FVRkRja1FzVDBGQlR5eEZRVUZGTERKQ1FVRXlRaXhGUVVGRkxFMUJRVTBzTWtKQlFUSkNMRU5CUVVNN1FVRkRlRVVzVDBGQlR5eEZRVU5NTEdWQlFXVXNSVUZEWml4clFrRkJhMElzUlVGRGJFSXNiVUpCUVcxQ0xFZEJRM0JDTEUxQlFVMHNNRUpCUVRCQ0xFTkJRVU03UVVGRGJFTXNUMEZCVHl4RlFVTk1MRFpDUVVFMlFpeEZRVU0zUWl4dlEwRkJiME1zUjBGRGNrTXNlVUpCUVhOQ08wRkJSMmhDTEVsQlFVMHNhMEpCUVd0Q0xFZEJRWGhDTEUxQlFVMHNhMEpCUVd0Q096dGhRVU5rTEZsQlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExHOUNRVUZyUWl4RFFVRkRMRUZCUVd4RExFTkJRVzFETzBsQlIycEVMRTFCUVUwc1MwRkJTeXhIUVVGSE8xRkJRM0JDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVOMFFpeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRekZDTEU5QlFXdERPMUZCUld4RExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0UlFVTXZReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMWxCUTNaQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEZWtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVNMVFpeEpRVUZKTEVOQlFVTXNVVUZCVVR0dlFrRkJSU3hQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlF5OUNMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdXVUZETjBNc1RVRkJUU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVWMFF5eE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU42UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETzJkQ1FVTjRReXhOUVVGTkxFdEJRVXNzUjBGQlNTeFBRVUZsTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVVc1QwRkJaU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRlRVVzVFVGQlRTeFhRVUZYTEVkQlFVYzdiMEpCUTJ4Q0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBPMjlDUVVOc1FpeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTenR2UWtGRGFFSXNiMEpCUVc5Q08yOUNRVU53UWl4blFrRkJaMEk3YjBKQlEyaENMSFZDUVVGMVFqdHBRa0ZEZUVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFXMUNMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdaMEpCUXpsRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWMEZCVnl4RlFVRkZMRU5CUVVNN2IwSkJRemxDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpGQ0xFTkJRVU03WjBKQlJVUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNVUlzVFVGQlRTeGpRVUZqTEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVNMVF5eEpRVUZKTEZkQlFWY3NSMEZCUnl4alFVRmpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEzWkRMRWxCUVVrc1EwRkJReXhYUVVGWExFbEJRVWtzUTBGQlJTeFhRVUZyUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yOUNRVU01UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHZRa0ZEZWtRc1NVRkJTU3hEUVVGRExFdEJRVXM3ZDBKQlExSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYjBOQlFXOURMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZETVVRc1EwRkJRenR2UWtGRFNpeEpRVUZKTEVOQlFVTTdkMEpCUTBnc1YwRkJWeXhIUVVGSkxFdEJRV0VzUTBGQlF5eEpRVUZKT3pSQ1FVTXZRaXhEUVVGRExFTkJRVU1zUzBGQlN6czBRa0ZEVUN4RFFVRkRMRU5CUVVNc1NVRkJTeXhMUVVFd1FpeEZRVUZGTEVOQlFVTTdiMEpCUTNoRExFTkJRVU03YjBKQlFVTXNUMEZCVHl4RFFVRlZMRVZCUVVVc1EwRkJRenQzUWtGRGNFSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYTBOQlFXdERMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUXpkRUxFTkJRVU03YjBKQlEwb3NRMEZCUXp0blFrRkRTQ3hEUVVGRE8yZENRVU5FTERKQ1FVRXlRaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZGTjBRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMmRDUVVNNVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03V1VGRE5VTXNRMEZCUXp0WlFVTkVMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zZVVOQlFYbERMRU5CUVVNc1EwRkJRenRaUVVWd1JDeEpRVUZKTEU5QlFVOHNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRuUWtGRE0wSXNTVUZCU1N4RFFVRkRPMjlDUVVOSUxFMUJRVTBzVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMmRDUVVOcVF5eERRVUZETzJkQ1FVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03YjBKQlEzQkNMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRVU1zZDBOQlFYZERMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEzWkZMRU5CUVVNN1dVRkRTQ3hEUVVGRE8xRkJRMGdzUTBGQlF6dFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVVkVMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVU5zUWl4UFFVRnJRenRSUVVWc1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGNFTXNRMEZCUXp0SlFVVkVMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zV1VGQldTeERRVU4yUWl4UFFVRnJRenRSUVVWc1F5eE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEY2tRc1RVRkJUU3hYUVVGWExFZEJRVWM3V1VGRGJFSXNiVUpCUVcxQ0xFTkJRVU1zVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhEUVVGRE8xbEJReTlETEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRaUVVNNVF5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETzFsQlF6TkRMRzlEUVVGdlF6dFpRVU53UXl3MlFrRkJOa0k3VTBGRE9VSXNRMEZCUXp0UlFVVkdMRTlCUVU4N1dVRkRUQ3hOUVVGTkxFVkJRVVVzYjBKQlFXdENPMWxCUXpGQ0xGZEJRVmM3V1VGRFdDeFBRVUZQTEVWQlFVVTdaMEpCUTFBc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF6dHZRa0ZEY0VJN2QwSkJRMFVzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1NVRkJTU3hWUVVGVkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJRenQzUWtGREwwUXNUVUZCVFN4RlFVRkZMRzlDUVVGclFqdHhRa0ZETTBJN2FVSkJRMFlzUTBGQlF6dGhRVU5JTzFsQlEwUXNVMEZCVXl4RlFVRkZPMmRDUVVOVUxHMUNRVUZ0UWp0blFrRkRia0lzYjBKQlFXOUNPMmRDUVVOd1FqdHZRa0ZEUlN4UFFVRlBMRVZCUVVVc1kwRkJZenR2UWtGRGRrSXNWVUZCVlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSVHRwUWtGRE9VUTdaMEpCUTBRN2IwSkJRMFVzVDBGQlR5eEZRVUZGTEdWQlFXVTdiMEpCUTNoQ0xGRkJRVkVzUlVGQlJTdzRRa0ZCT0VJN2FVSkJRM3BETzJGQlEwWTdXVUZEUkN4UFFVRlBMRVZCUVVVc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dFRRVU55UkN4RFFVRkRPMGxCUTBvc1EwRkJRenM3UVVGeVNGVXNhMEpCUVd0Q08wbEJSRGxDTEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNN1IwRkRSU3hyUWtGQmEwSXNRMEZ6U0RsQ096dEJRVVZFTEUxQlFVMHNRMEZCUXl4TlFVRk5MRzFDUVVGdFFpeEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJSWFJFTEUxQlFVMHNRMEZCUXl4TFFVRkxMRlZCUVZVc2NVSkJRWEZDTEV0QlFXMUNMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QkVlVzVoYldsalRXOWtkV3hsTENCTmIyUjFiR1VnZlNCbWNtOXRJRndpUUc1bGMzUnFjeTlqYjIxdGIyNWNJanRjYm1sdGNHOXlkQ0I3SUZKdmRYUmxjazF2WkhWc1pTQjlJR1p5YjIwZ1hDSkFibVZ6ZEdwekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN0lFRmtZWEIwWlhJc0lGQmxjbk5wYzNSbGJtTmxVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVhVzF3YjNKMElIc2dTVzUwWlhKdVlXeEZjbkp2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHSXRaR1ZqYjNKaGRHOXljMXdpTzF4dWFXMXdiM0owSUhzZ1EyOXVjM1J5ZFdOMGIzSXNJSFZ6WlhNZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmxZMjl5WVhScGIyNWNJanRjYm1sdGNHOXlkQ0I3SUV4dloyZHBibWNnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJ4dloyZHBibWRjSWp0Y2JtbHRjRzl5ZENCN0lFUmxZMkZtVW1WeGRXVnpkRU52Ym5SbGVIUWdmU0JtY205dElGd2lMaTR2Y21WeGRXVnpkRndpTzF4dWFXMXdiM0owSUhzZ1JHVmpZV1pJWVc1a2JHVnlSWGhsWTNWMGIzSWdmU0JtY205dElGd2lMaTR2Y21WeGRXVnpkQzlFWldOaFpraGhibVJzWlhKRmVHVmpkWFJ2Y2x3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaU1pYRjFaWE4wU0dGdVpHeGxja2x1ZEdWeVkyVndkRzl5SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5WTJWd2RHOXljeTlFWldOaFpsSmxjWFZsYzNSSVlXNWtiR1Z5U1c1MFpYSmpaWEIwYjNKY0lqdGNibWx0Y0c5eWRDQjdJRVJGUTBGR1gwaEJUa1JNUlZKVElIMGdabkp2YlNCY0lpNHVMMk52Ym5OMFlXNTBjMXdpTzF4dWFXMXdiM0owSUhzZ1FWQlFYMGxPVkVWU1EwVlFWRTlTSUgwZ1puSnZiU0JjSWtCdVpYTjBhbk12WTI5eVpWd2lPMXh1YVcxd2IzSjBJSHNnUkdWallXWlhaV0pvYjI5clRXOWtkV3hsVDNCMGFXOXVjeUI5SUdaeWIyMGdYQ0l1TDNSNWNHVnpYQ0k3WEc1cGJYQnZjblFnZXlCR2NtOXRUVzlrWld4RGIyNTBjbTlzYkdWeUlIMGdabkp2YlNCY0lpNHVMMlJsWTJGbUxXMXZaR1ZzWENJN1hHNXBiWEJ2Y25RZ2V5QnlaWEYxWlhOMFZHOURiMjUwWlhoMFZISmhibk5tYjNKdFpYSWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlp2Y2kxb2RIUndMM05sY25abGNsd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1YyVmlhRzl2YTBSbGJHbDJaWEo1TEZ4dUlDQlhaV0pvYjI5clJYWmxiblJTWldOdmNtUXNYRzRnSUZkbFltaHZiMnRUZFdKelkzSnBjSFJwYjI0c1hHNTlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZabTl5TFdoMGRIQXZhRzl2YTNOY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUZkbFltaHZiMnRGZG1WdWRFRmpkR2x2Ym5ORGIyNTBjbTlzYkdWeUxGeHVJQ0JYWldKb2IyOXJVM1ZpYzJOeWFYQjBhVzl1UVdOMGFXOXVjME52Ym5SeWIyeHNaWElzWEc1OUlHWnliMjBnWENJdUwyTnZiblJ5YjJ4c1pYSnpYQ0k3WEc1Y2JrQk5iMlIxYkdVb2UzMHBYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHVmpZV1pYWldKb2IyOXJUVzlrZFd4bElIdGNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdYMnh2WjJkbGNpQTlJRXh2WjJkcGJtY3VabTl5S0VSbFkyRm1WMlZpYUc5dmEwMXZaSFZzWlNrN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklGOXdaWEp6YVhOMFpXNWpaVDg2SUZCbGNuTnBjM1JsYm1ObFUyVnlkbWxqWlR4QlpHRndkR1Z5UEdGdWVTd2dZVzU1TENCaGJua3NJR0Z1ZVQ0K08xeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2RsZENCc2IyY29LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJ4dloyZGxjanRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJoYzNsdVl5QmliMjkwVUdWeWMybHpkR1Z1WTJVb1hHNGdJQ0FnYjNCMGFXOXVjem9nUkdWallXWlhaV0pvYjI5clRXOWtkV3hsVDNCMGFXOXVjMXh1SUNBcE9pQlFjbTl0YVhObFBFRmtZWEIwWlhJOFlXNTVMQ0JoYm5rc0lHRnVlU3dnWVc1NVBsdGRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2JHOW5JRDBnZEdocGN5NXNiMmN1Wm05eUtIUm9hWE11WW05dmRGQmxjbk5wYzNSbGJtTmxLVHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVYM0JsY25OcGMzUmxibU5sS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IwY21sdGJXVmtJRDBnYjNCMGFXOXVjeTVqYjI1bUxtMWhjQ2dvVzJOdmJuUnlMQ0JqWm1jc0lDNHVMbUZ5WjNOZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ2YzNOcFlteGxJRDBnWVhKbmN5NXdiM0FvS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3YjNOemFXSnNaU2tnY21WMGRYSnVJRnRqYjI1MGNpd2dZMlpuWFR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ0amIyNTBjaXdnWTJabkxDQXVMaTVoY21kelhUdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdkR2hwY3k1ZmNHVnljMmx6ZEdWdVkyVWdQU0J1WlhjZ1VHVnljMmx6ZEdWdVkyVlRaWEoyYVdObEtDazdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbDl3WlhKemFYTjBaVzVqWlM1aWIyOTBLSFJ5YVcxdFpXUXBPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmpiR2xsYm5SeklEMGdkR2hwY3k1ZmNHVnljMmx6ZEdWdVkyVXVZMnhwWlc1ME8xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmpiR2xsYm5SekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR05oWTJobElEMGdLRUZrWVhCMFpYSWdZWE1nWVc1NUtTNWZZMkZqYUdVZ2ZId2dLQ2hCWkdGd2RHVnlJR0Z6SUdGdWVTa3VYMk5oWTJobElEMGdlMzBwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IzWldKb2IyOXJTMlY1Y3lBOUlGdGNiaUFnSUNBZ0lDQWdJQ0JqYkdsbGJuUnpXMmxkTG1ac1lYWnZkWElzWEc0Z0lDQWdJQ0FnSUNBZ1kyeHBaVzUwYzF0cFhTNWhiR2xoY3l4Y2JpQWdJQ0FnSUNBZ0lDQmNJbmRsWW1odmIydGZaR1ZzYVhabGNtbGxjMXdpTEZ4dUlDQWdJQ0FnSUNBZ0lGd2lkMlZpYUc5dmExOWxkbVZ1ZEhOY0lpeGNiaUFnSUNBZ0lDQWdJQ0JjSW5kbFltaHZiMnRmYzNWaWMyTnlhWEIwYVc5dWMxd2lMRnh1SUNBZ0lDQWdJQ0JkTG1acGJIUmxjaWdvZG1Gc2RXVXBPaUIyWVd4MVpTQnBjeUJ6ZEhKcGJtY2dQVDRnSVNGMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2EyVjVJRzltSUhkbFltaHZiMnRMWlhsektTQjdYRzRnSUNBZ0lDQWdJQ0FnWTJGamFHVmJhMlY1WFNBOUlHTnNhV1Z1ZEhOYmFWMDdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JqSUQwZ2IzQjBhVzl1Y3k1amIyNW1XMmxkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3YjNOemFXSnNaVlJ5WVc1elppQTlJR011YzJ4cFkyVW9NaXdnWXk1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNCc1pYUWdkSEpoYm5ObWIzSnRaWElnUFNCd2IzTnphV0pzWlZSeVlXNXpaaTV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGMGNtRnVjMlp2Y20xbGNpQjhmQ0FoS0hSeVlXNXpabTl5YldWeUlHRnpJSHNnWm5KdmJUODZJSFZ1YTI1dmQyNGdmU2t1Wm5KdmJTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR052Ym5SeUlEMGdRV1JoY0hSbGNpNTBjbUZ1YzJadmNtMWxja1p2Y2loamJHbGxiblJ6VzJsZExtWnNZWFp2ZFhJcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNnaFkyOXVkSElwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWUU1dklIUnlZVzV6Wm05eWJXVnlJR1p2ZFc1a0lHWnZjaUJtYkdGMmIzVnlJQ1I3WTJ4cFpXNTBjMXRwWFM1bWJHRjJiM1Z5ZlM1Z1hHNGdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMWxjaUE5SUNoamIyNTBjaUJoY3lCaGJua3BMbVp5YjIxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnUHlCamIyNTBjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJRzVsZHlBb1kyOXVkSElnWVhNZ1EyOXVjM1J5ZFdOMGIzSThZVzU1UGlrb0tUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsT2lCMWJtdHViM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1lFWmhhV3hsWkNCMGJ5QmliMjkwSUhSeVlXNXpabTl5YldWeUlHWnZjaUFrZTJOc2FXVnVkSE5iYVYwdVpteGhkbTkxY24wNklDUjdaWDFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWEYxWlhOMFZHOURiMjUwWlhoMFZISmhibk5tYjNKdFpYSW9ZMnhwWlc1MGMxdHBYUzVtYkdGMmIzVnlLU2gwY21GdWMyWnZjbTFsY2lrN1hHNWNiaUFnSUNBZ0lDQWdkWE5sY3loamJHbGxiblJ6VzJsZExtWnNZWFp2ZFhJcEtGZGxZbWh2YjJ0VGRXSnpZM0pwY0hScGIyNHBPMXh1SUNBZ0lDQWdJQ0IxYzJWektHTnNhV1Z1ZEhOYmFWMHVabXhoZG05MWNpa29WMlZpYUc5dmEwVjJaVzUwVW1WamIzSmtLVHRjYmlBZ0lDQWdJQ0FnZFhObGN5aGpiR2xsYm5SelcybGRMbVpzWVhadmRYSXBLRmRsWW1odmIydEVaV3hwZG1WeWVTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnNiMmN1YVc1bWJ5aGNJbkJsY25OcGMzUmxibU5sSUd4aGVXVnlJR055WldGMFpXUWdjM1ZqWTJWemMyWjFiR3g1SVZ3aUtUdGNibHh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk11YVc1cGRHbGhiR2w2WVhScGIyNHBJSHRjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0JoZDJGcGRDQnZjSFJwYjI1ekxtbHVhWFJwWVd4cGVtRjBhVzl1S0NrN1hHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVTZJSFZ1YTI1dmQyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhnUm1GcGJHVmtJSFJ2SUdsdWFYUnBZV3hwZW1VZ2QyVmlhRzl2YXlCdGIyUjFiR1U2SUNSN1pYMWdLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5d1pYSnphWE4wWlc1alpTNWpiR2xsYm5RN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1lYTjVibU1nWm05eVVtOXZkQ2hjYmlBZ0lDQnZjSFJwYjI1ek9pQkVaV05oWmxkbFltaHZiMnROYjJSMWJHVlBjSFJwYjI1elhHNGdJQ2s2SUZCeWIyMXBjMlU4UkhsdVlXMXBZMDF2WkhWc1pUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVp2Y2xKdmIzUkJjM2x1WXlodmNIUnBiMjV6S1R0Y2JpQWdmVnh1WEc0Z0lITjBZWFJwWXlCaGMzbHVZeUJtYjNKU2IyOTBRWE41Ym1Nb1hHNGdJQ0FnYjNCMGFXOXVjem9nUkdWallXWlhaV0pvYjI5clRXOWtkV3hsVDNCMGFXOXVjMXh1SUNBcE9pQlFjbTl0YVhObFBFUjVibUZ0YVdOTmIyUjFiR1UrSUh0Y2JpQWdJQ0JqYjI1emRDQmhaR0Z3ZEdWeWN5QTlJR0YzWVdsMElIUm9hWE11WW05dmRGQmxjbk5wYzNSbGJtTmxLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lHTnZibk4wSUdOdmJuUnliMnhzWlhKeklEMGdXMXh1SUNBZ0lDQWdSbkp2YlUxdlpHVnNRMjl1ZEhKdmJHeGxjaTVqY21WaGRHVW9WMlZpYUc5dmExTjFZbk5qY21sd2RHbHZiaWtzWEc0Z0lDQWdJQ0JHY205dFRXOWtaV3hEYjI1MGNtOXNiR1Z5TG1OeVpXRjBaU2hYWldKb2IyOXJSWFpsYm5SU1pXTnZjbVFwTEZ4dUlDQWdJQ0FnUm5KdmJVMXZaR1ZzUTI5dWRISnZiR3hsY2k1amNtVmhkR1VvVjJWaWFHOXZhMFJsYkdsMlpYSjVLU3hjYmlBZ0lDQWdJRmRsWW1odmIydFRkV0p6WTNKcGNIUnBiMjVCWTNScGIyNXpRMjl1ZEhKdmJHeGxjaXhjYmlBZ0lDQWdJRmRsWW1odmIydEZkbVZ1ZEVGamRHbHZibk5EYjI1MGNtOXNiR1Z5TEZ4dUlDQWdJRjA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdiVzlrZFd4bE9pQkVaV05oWmxkbFltaHZiMnROYjJSMWJHVXNYRzRnSUNBZ0lDQmpiMjUwY205c2JHVnljeXhjYmlBZ0lDQWdJR2x0Y0c5eWRITTZJRnRjYmlBZ0lDQWdJQ0FnVW05MWRHVnlUVzlrZFd4bExuSmxaMmx6ZEdWeUtGdGNiaUFnSUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndZWFJvT2lBb2IzQjBhVzl1Y3k1M1pXSm9iMjlyUVhCcFVHRjBhQ0I4ZkNCY0luZGxZbWh2YjJ0elhDSXBMbkpsY0d4aFkyVW9MMTVjWEM4dkxDQmNJbHdpS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzF2WkhWc1pUb2dSR1ZqWVdaWFpXSm9iMjlyVFc5a2RXeGxMRnh1SUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lGMHBMRnh1SUNBZ0lDQWdYU3hjYmlBZ0lDQWdJSEJ5YjNacFpHVnljem9nVzF4dUlDQWdJQ0FnSUNCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMExGeHVJQ0FnSUNBZ0lDQkVaV05oWmtoaGJtUnNaWEpGZUdWamRYUnZjaXhjYmlBZ0lDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNBZ0lIQnliM1pwWkdVNklFUkZRMEZHWDBoQlRrUk1SVkpUTEZ4dUlDQWdJQ0FnSUNBZ0lIVnpaVVpoWTNSdmNuazZJQ2dwSUQwK0lHOXdkR2x2Ym5NdWFHRnVaR3hsY25NL0xtMWhjQ2dvU0NrZ1BUNGdibVYzSUVnb0tTa2dQejhnVzEwc1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnSUNCd2NtOTJhV1JsT2lCQlVGQmZTVTVVUlZKRFJWQlVUMUlzWEc0Z0lDQWdJQ0FnSUNBZ2RYTmxRMnhoYzNNNklFUmxZMkZtVW1WeGRXVnpkRWhoYm1Sc1pYSkpiblJsY21ObGNIUnZjaXhjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUYwc1hHNGdJQ0FnSUNCbGVIQnZjblJ6T2lCYlJHVmpZV1pTWlhGMVpYTjBRMjl1ZEdWNGRDd2dSR1ZqWVdaSVlXNWtiR1Z5UlhobFkzVjBiM0pkTEZ4dUlDQWdJSDA3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJRVJsWTJGbVYyVmlhRzl2YTNOTmIyUjFiR1VnUFNCRVpXTmhabGRsWW1odmIydE5iMlIxYkdVN1hHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeWRXNVhaV0pvYjI5cmMwMXBaM0poZEdsdmJuTW9LVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdmVnh1SWwxOSJdfQ==
@@ -23,21 +23,21 @@ const common_1 = require("@nestjs/common");
23
23
  const core_1 = require("@decaf-ts/core");
24
24
  const controllers_js_1 = require("./../controllers.cjs");
25
25
  const index_js_1 = require("./../request/index.cjs");
26
- const server_1 = require("@decaf-ts/for-http/server");
26
+ const hooks_1 = require("@decaf-ts/for-http/hooks");
27
27
  let WebhookSubscriptionActionsController = WebhookSubscriptionActionsController_1 = class WebhookSubscriptionActionsController extends controllers_js_1.DecafController {
28
28
  constructor(clientContext) {
29
29
  super(clientContext, WebhookSubscriptionActionsController_1.name);
30
30
  }
31
31
  async deactivate(id) {
32
32
  const { ctx } = (await this.logCtx([], "deactivate", true)).for(this.deactivate);
33
- const repo = core_1.Repository.forModel(server_1.WebhookSubscription);
33
+ const repo = core_1.Repository.forModel(hooks_1.WebhookSubscription);
34
34
  const current = await repo.read(id, ctx);
35
35
  current.active = false;
36
36
  return repo.update(current, ctx);
37
37
  }
38
38
  async reactivate(id) {
39
39
  const { ctx } = (await this.logCtx([], "reactivate", true)).for(this.reactivate);
40
- const repo = core_1.Repository.forModel(server_1.WebhookSubscription);
40
+ const repo = core_1.Repository.forModel(hooks_1.WebhookSubscription);
41
41
  const current = await repo.read(id, ctx);
42
42
  current.active = true;
43
43
  return repo.update(current, ctx);
@@ -68,8 +68,8 @@ let WebhookEventActionsController = WebhookEventActionsController_1 = class Webh
68
68
  }
69
69
  async replay(id) {
70
70
  const { ctx } = (await this.logCtx([], "replay", true)).for(this.replay);
71
- const eventRepo = core_1.Repository.forModel(server_1.WebhookEventRecord);
72
- const deliveryRepo = core_1.Repository.forModel(server_1.WebhookDelivery);
71
+ const eventRepo = core_1.Repository.forModel(hooks_1.WebhookEventRecord);
72
+ const deliveryRepo = core_1.Repository.forModel(hooks_1.WebhookDelivery);
73
73
  try {
74
74
  let event;
75
75
  try {
@@ -87,7 +87,7 @@ let WebhookEventActionsController = WebhookEventActionsController_1 = class Webh
87
87
  }
88
88
  let deliveries = [];
89
89
  try {
90
- deliveries = await (0, server_1.collectPagedResults)(() => deliveryRepo
90
+ deliveries = await (0, hooks_1.collectPagedResults)(() => deliveryRepo
91
91
  .select()
92
92
  .where(deliveryRepo.attr("eventId").eq(event.id))
93
93
  .orderBy("createdAt", core_1.OrderDirection.ASC)
@@ -107,7 +107,7 @@ let WebhookEventActionsController = WebhookEventActionsController_1 = class Webh
107
107
  }
108
108
  const now = new Date();
109
109
  for (const delivery of deliveries) {
110
- delivery.status = server_1.WebhookStatus.PENDING;
110
+ delivery.status = hooks_1.WebhookStatus.PENDING;
111
111
  delivery.attempts = 0;
112
112
  delivery.nextAttemptAt = now;
113
113
  delivery.lastAttemptAt = null;
@@ -115,7 +115,7 @@ let WebhookEventActionsController = WebhookEventActionsController_1 = class Webh
115
115
  delivery.responseStatus = undefined;
116
116
  delivery.responseBody = undefined;
117
117
  }
118
- event.status = server_1.WebhookStatus.PENDING;
118
+ event.status = hooks_1.WebhookStatus.PENDING;
119
119
  event.deliveriesSucceeded = 0;
120
120
  event.deliveriesFailed = 0;
121
121
  event.nextAttemptAt = now;
@@ -147,5 +147,5 @@ exports.WebhookEventActionsController = WebhookEventActionsController = WebhookE
147
147
  (0, common_1.Controller)("webhook-events"),
148
148
  __metadata("design:paramtypes", [index_js_1.DecafRequestContext])
149
149
  ], WebhookEventActionsController);
150
- //# sourceMappingURL=controllers.js.map
151
- //# sourceMappingURL=controllers.js.map
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViaG9va3MvY29udHJvbGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQWEsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBdUI7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDhCQUFtQjtBQUVqRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLDBCQUEwQixDQUFDO0FBRzNCLElBQU0sb0NBQW9DLDRDQUExQyxNQUFNLG9DQUFxQyxTQUFRLGVBQStCO0lBQ3ZGLFlBQVksYUFBa0M7UUFDNUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxzQ0FBb0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsVUFBVSxDQUFjLEVBQVU7UUFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzdELElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUc5QixtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdkIsT0FBTyxJQUFJLENB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R0FBRyxDQUFDO1lBQzFCLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBRXRCLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxZQUFZLENBQUMsU0FBUyxDQUMxQixVQUFVLEVBQ1YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBUyxDQUFDLENBQ3RELENBQUM7Z0JBQ0osQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AsNEZBQTRGO2dCQUM5RixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQS9FTztJQURMLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDTCxXQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTs7OzsyREE4RXhCO0FBcEZVLDZCQUE2QjtJQUR6QyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7cUNBRUEsbUJBQW1CO0dBRG5DLDZCQUE2QixDQXFGekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250cm9sbGVyLCBQYXJhbSwgUG9zdCB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSwgdHlwZSBSZXBvLCBPcmRlckRpcmVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRGVjYWZDb250cm9sbGVyIH0gZnJvbSBcIi4uL2NvbnRyb2xsZXJzXCI7XG5pbXBvcnQgeyBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4uL3JlcXVlc3RcIjtcbmltcG9ydCB7IERlY2FmU2VydmVyQ3R4IH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgV2ViaG9va0RlbGl2ZXJ5LFxuICBXZWJob29rRXZlbnRSZWNvcmQsXG4gIFdlYmhvb2tTdGF0dXMsXG4gIFdlYmhvb2tTdWJzY3JpcHRpb24sXG4gIGNvbGxlY3RQYWdlZFJlc3VsdHMsXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvaG9va3NcIjtcblxuQENvbnRyb2xsZXIoXCJ3ZWJob29rLXN1YnNjcmlwdGlvbnNcIilcbmV4cG9ydCBjbGFzcyBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIgZXh0ZW5kcyBEZWNhZkNvbnRyb2xsZXI8RGVjYWZTZXJ2ZXJDdHg+IHtcbiAgY29uc3RydWN0b3IoY2xpZW50Q29udGV4dDogRGVjYWZSZXF1ZXN0Q29udGV4dCkge1xuICAgIHN1cGVyKGNsaWVudENvbnRleHQsIFdlYmhvb2tTdWJzY3JpcHRpb25BY3Rpb25zQ29udHJvbGxlci5uYW1lKTtcbiAgfVxuXG4gIEBQb3N0KFwiOmlkL2RlYWN0aXZhdGVcIilcbiAgYXN5bmMgZGVhY3RpdmF0ZShAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChbXSwgXCJkZWFjdGl2YXRlXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmRlYWN0aXZhdGVcbiAgICApO1xuICAgIGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsPFxuICAgICAgV2ViaG9va1N1YnNjcmlwdGlvbixcbiAgICAgIFJlcG88V2ViaG9va1N1YnNjcmlwdGlvbj5cbiAgICA+KFdlYmhvb2tTdWJzY3JpcHRpb24pO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZXBvLnJlYWQoaWQsIGN0eCk7XG4gICAgY3VycmVudC5hY3RpdmUgPSBmYWxzZTtcbiAgICByZXR1cm4gcmVwby51cGRhdGUoY3VycmVudCwgY3R4KTtcbiAgfVxuXG4gIEBQb3N0KFwiOmlkL3JlYWN0aXZhdGVcIilcbiAgYXN5bmMgcmVhY3RpdmF0ZShAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChbXSwgXCJyZWFjdGl2YXRlXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLnJlYWN0aXZhdGVcbiAgICApO1xuICAgIGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsPFxuICAgICAgV2ViaG9va1N1YnNjcmlwdGlvbixcbiAgICAgIFJlcG88V2ViaG9va1N1YnNjcmlwdGlvbj5cbiAgICA+KFdlYmhvb2tTdWJzY3JpcHRpb24pO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZXBvLnJlYWQoaWQsIGN0eCk7XG4gICAgY3VycmVudC5hY3RpdmUgPSB0cnVlO1xuICAgIHJldHVybiByZXBvLnVwZGF0ZShjdXJyZW50LCBjdHgpO1xuICB9XG59XG5cbkBDb250cm9sbGVyKFwid2ViaG9vay1ldmVudHNcIilcbmV4cG9ydCBjbGFzcyBXZWJob29rRXZlbnRBY3Rpb25zQ29udHJvbGxlciBleHRlbmRzIERlY2FmQ29udHJvbGxlcjxEZWNhZlNlcnZlckN0eD4ge1xuICBjb25zdHJ1Y3RvcihjbGllbnRDb250ZXh0OiBEZWNhZlJlcXVlc3RDb250ZXh0KSB7XG4gICAgc3VwZXIoY2xpZW50Q29udGV4dCwgV2ViaG9va0V2ZW50QWN0aW9uc0NvbnRyb2xsZXIubmFtZSk7XG4gIH1cblxuICBAUG9zdChcIjppZC9yZXBsYXlcIilcbiAgYXN5bmMgcmVwbGF5KEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KFtdLCBcInJlcGxheVwiLCB0cnVlKSkuZm9yKHRoaXMucmVwbGF5KTtcbiAgICBjb25zdCBldmVudFJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsPFxuICAgICAgV2ViaG9va0V2ZW50UmVjb3JkLFxuICAgICAgUmVwbzxXZWJob29rRXZlbnRSZWNvcmQ+XG4gICAgPihXZWJob29rRXZlbnRSZWNvcmQpO1xuICAgIGNvbnN0IGRlbGl2ZXJ5UmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWw8XG4gICAgICBXZWJob29rRGVsaXZlcnksXG4gICAgICBSZXBvPFdlYmhvb2tEZWxpdmVyeT5cbiAgICA+KFdlYmhvb2tEZWxpdmVyeSk7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBldmVudDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV2ZW50ID0gYXdhaXQgZXZlbnRSZXBvLnJlYWQoaWQsIGN0eCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBldmVudHMgPSBhd2FpdCBldmVudFJlcG9cbiAgICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgICAud2hlcmUoZXZlbnRSZXBvLmF0dHIoXCJpZFwiKS5lcShpZCkpXG4gICAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgICAgLmV4ZWN1dGUoY3R4KTtcbiAgICAgICAgaWYgKCFldmVudHMubGVuZ3RoKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgZXZlbnQgPSBldmVudHNbMF07XG4gICAgICB9XG4gICAgICBsZXQgZGVsaXZlcmllczogYW55W10gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlbGl2ZXJpZXMgPSBhd2FpdCBjb2xsZWN0UGFnZWRSZXN1bHRzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBkZWxpdmVyeVJlcG9cbiAgICAgICAgICAgICAgLnNlbGVjdCgpXG4gICAgICAgICAgICAgIC53aGVyZShkZWxpdmVyeVJlcG8uYXR0cihcImV2ZW50SWRcIikuZXEoZXZlbnQuaWQpKVxuICAgICAgICAgICAgICAub3JkZXJCeShcImNyZWF0ZWRBdFwiLCBPcmRlckRpcmVjdGlvbi5BU0MpXG4gICAgICAgICAgICAgIC50aGVuQnkoXCJpZFwiLCBPcmRlckRpcmVjdGlvbi5BU0MpXG4gICAgICAgICAgICAgIC5wYWdpbmF0ZSgyNTAsIGN0eCksXG4gICAgICAgICAgMjUwLFxuICAgICAgICAgIGN0eFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGVsaXZlcmllcyA9IGF3YWl0IGRlbGl2ZXJ5UmVwb1xuICAgICAgICAgICAgLnNlbGVjdCgpXG4gICAgICAgICAgICAud2hlcmUoZGVsaXZlcnlSZXBvLmF0dHIoXCJldmVudElkXCIpLmVxKGV2ZW50LmlkKSlcbiAgICAgICAgICAgIC5leGVjdXRlKGN0eCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGRlbGl2ZXJpZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgICAgZm9yIChjb25zdCBkZWxpdmVyeSBvZiBkZWxpdmVyaWVzKSB7XG4gICAgICAgIGRlbGl2ZXJ5LnN0YXR1cyA9IFdlYmhvb2tTdGF0dXMuUEVORElORztcbiAgICAgICAgZGVsaXZlcnkuYXR0ZW1wdHMgPSAwO1xuICAgICAgICBkZWxpdmVyeS5uZXh0QXR0ZW1wdEF0ID0gbm93O1xuICAgICAgICBkZWxpdmVyeS5sYXN0QXR0ZW1wdEF0ID0gbnVsbCBhcyBhbnk7XG4gICAgICAgIGRlbGl2ZXJ5LmVycm9yTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgZGVsaXZlcnkucmVzcG9uc2VTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGl2ZXJ5LnJlc3BvbnNlQm9keSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZXZlbnQuc3RhdHVzID0gV2ViaG9va1N0YXR1cy5QRU5ESU5HO1xuICAgICAgZXZlbnQuZGVsaXZlcmllc1N1Y2NlZWRlZCA9IDA7XG4gICAgICBldmVudC5kZWxpdmVyaWVzRmFpbGVkID0gMDtcbiAgICAgIGV2ZW50Lm5leHRBdHRlbXB0QXQgPSBub3c7XG4gICAgICBldmVudC51cGRhdGVkQXQgPSBub3c7XG5cbiAgICAgIGlmIChkZWxpdmVyaWVzLmxlbmd0aCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGRlbGl2ZXJ5UmVwby51cGRhdGVBbGwoXG4gICAgICAgICAgICBkZWxpdmVyaWVzLFxuICAgICAgICAgICAgY3R4Lm92ZXJyaWRlKHsgYXBwbHlVcGRhdGVWYWxpZGF0aW9uOiBmYWxzZSB9IGFzIGFueSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBSZXBsYXkgc3RpbGwgcmVzZXRzIHRoZSBldmVudCBzdGF0ZSBldmVuIGlmIGJ1bGsgZGVsaXZlcnkgdXBkYXRlcyBhcmUgbm90IHF1ZXJ5YWJsZSBoZXJlLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZXZlbnRSZXBvLnVwZGF0ZShldmVudCwgY3R4KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250cm9sbGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQztBQUNGLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxTQUFTO0lBQ25FLE9BQU8sVUFBVSxNQUFNLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQztBQUNGLElBQUksc0NBQXNDLEVBQUUsK0JBQStCLENBQUM7QUFDNUUsMkNBQXlEO0FBQ3pELHlDQUE0RDtBQUM1RCx3REFBc0Q7QUFDdEQsb0RBQTREO0FBQzVELG9EQUF5STtBQUN6SSxJQUFJLG9DQUFvQyxHQUFHLHNDQUFzQyxHQUFHLE1BQU0sb0NBQXFDLFNBQVEsZ0NBQWU7SUFDbEosWUFBWSxhQUFhO1FBQ3JCLEtBQUssQ0FBQyxhQUFhLEVBQUUsc0NBQXNDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNmLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRixNQUFNLElBQUksR0FBRyxpQkFBVSxDQUFDLFFBQVEsQ0FBQywyQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ2YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sSUFBSSxHQUFHLGlCQUFVLENBQUMsUUFBUSxDQUFDLDJCQUFtQixDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDSixDQUFDO0FBbUJPLG9GQUFvQztBQWxCN0MsVUFBVSxDQUFDO0lBQ1AsSUFBQSxhQUFJLEVBQUMsZ0JBQWdCLENBQUM7SUFDdEIsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFBLGNBQUssRUFBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUNuQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDO0NBQzNDLEVBQUUsb0NBQW9DLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RSxVQUFVLENBQUM7SUFDUCxJQUFBLGFBQUksRUFBQyxnQkFBZ0IsQ0FBQztJQUN0QixPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUEsY0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO0lBQ25DLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSxvQ0FBb0MsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZFLCtDQUFBLG9DQUFvQyxHQUFHLHNDQUFzQyxHQUFHLFVBQVUsQ0FBQztJQUN2RixJQUFBLG1CQUFVLEVBQUMsdUJBQXVCLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsOEJBQW1CLENBQUMsQ0FBQztDQUN6RCxFQUFFLG9DQUFvQyxDQUFDLENBQUM7QUFFekMsSUFBSSw2QkFBNkIsR0FBRywrQkFBK0IsR0FBRyxNQUFNLDZCQUE4QixTQUFRLGdDQUFlO0lBQzdILFlBQVksYUFBYTtRQUNyQixLQUFLLENBQUMsYUFBYSxFQUFFLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDWCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsaUJBQVUsQ0FBQyxRQUFRLENBQUMsMEJBQWtCLENBQUMsQ0FBQztRQUMxRCxNQUFNLFlBQVksR0FBRyxpQkFBVSxDQUFDLFFBQVEsQ0FBQyx1QkFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUM7WUFDVixJQUFJLENBQUM7Z0JBQ0QsS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTO3FCQUN6QixNQUFNLEVBQUU7cUJBQ1IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNsQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO29CQUNkLE1BQU0sS0FBSyxDQUFDO2dCQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7WUFDRCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDO2dCQUNELFVBQVUsR0FBRyxNQUFNLElBQUEsMkJBQW1CLEVBQUMsR0FBRyxFQUFFLENBQUMsWUFBWTtxQkFDcEQsTUFBTSxFQUFFO3FCQUNSLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ2hELE9BQU8sQ0FBQyxXQUFXLEVBQUUscUJBQWMsQ0FBQyxHQUFHLENBQUM7cUJBQ3hDLE1BQU0sQ0FBQyxJQUFJLEVBQUUscUJBQWMsQ0FBQyxHQUFHLENBQUM7cUJBQ2hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxNQUFNLENBQUM7Z0JBQ0gsSUFBSSxDQUFDO29CQUNELFVBQVUsR0FBRyxNQUFNLFlBQVk7eUJBQzFCLE1BQU0sRUFBRTt5QkFDUixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsTUFBTSxDQUFDO29CQUNILFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsTUFBTSxHQUFHLHFCQUFhLENBQUMsT0FBTyxDQUFDO2dCQUN4QyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsUUFBUSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7Z0JBQzdCLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUM5QixRQUFRLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztnQkFDbEMsUUFBUSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLENBQUM7WUFDRCxLQUFLLENBQUMsTUFBTSxHQUFHLHFCQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3JDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMzQixLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztZQUMxQixLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUN0QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDO29CQUNELE1BQU0sWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0YsQ0FBQztnQkFDRCxNQUFNLENBQUM7b0JBQ0gsNEZBQTRGO2dCQUNoRyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFZTyxzRUFBNkI7QUFYdEMsVUFBVSxDQUFDO0lBQ1AsSUFBQSxhQUFJLEVBQUMsWUFBWSxDQUFDO0lBQ2xCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztDQUMzQyxFQUFFLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsd0NBQUEsNkJBQTZCLEdBQUcsK0JBQStCLEdBQUcsVUFBVSxDQUFDO0lBQ3pFLElBQUEsbUJBQVUsRUFBQyxnQkFBZ0IsQ0FBQztJQUM1QixVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyw4QkFBbUIsQ0FBQyxDQUFDO0NBQ3pELEVBQUUsNkJBQTZCLENBQUMsQ0FBQztBQUVsQywwaldBQTBqVyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG52YXIgX19wYXJhbSA9ICh0aGlzICYmIHRoaXMuX19wYXJhbSkgfHwgZnVuY3Rpb24gKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufTtcbnZhciBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXJfMSwgV2ViaG9va0V2ZW50QWN0aW9uc0NvbnRyb2xsZXJfMTtcbmltcG9ydCB7IENvbnRyb2xsZXIsIFBhcmFtLCBQb3N0IH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5LCBPcmRlckRpcmVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRGVjYWZDb250cm9sbGVyIH0gZnJvbSBcIi4vLi4vY29udHJvbGxlcnMuanNcIjtcbmltcG9ydCB7IERlY2FmUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiLi8uLi9yZXF1ZXN0L2luZGV4LmpzXCI7XG5pbXBvcnQgeyBXZWJob29rRGVsaXZlcnksIFdlYmhvb2tFdmVudFJlY29yZCwgV2ViaG9va1N0YXR1cywgV2ViaG9va1N1YnNjcmlwdGlvbiwgY29sbGVjdFBhZ2VkUmVzdWx0cywgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1odHRwL2hvb2tzXCI7XG5sZXQgV2ViaG9va1N1YnNjcmlwdGlvbkFjdGlvbnNDb250cm9sbGVyID0gV2ViaG9va1N1YnNjcmlwdGlvbkFjdGlvbnNDb250cm9sbGVyXzEgPSBjbGFzcyBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIgZXh0ZW5kcyBEZWNhZkNvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKGNsaWVudENvbnRleHQpIHtcbiAgICAgICAgc3VwZXIoY2xpZW50Q29udGV4dCwgV2ViaG9va1N1YnNjcmlwdGlvbkFjdGlvbnNDb250cm9sbGVyXzEubmFtZSk7XG4gICAgfVxuICAgIGFzeW5jIGRlYWN0aXZhdGUoaWQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChbXSwgXCJkZWFjdGl2YXRlXCIsIHRydWUpKS5mb3IodGhpcy5kZWFjdGl2YXRlKTtcbiAgICAgICAgY29uc3QgcmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoV2ViaG9va1N1YnNjcmlwdGlvbik7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZXBvLnJlYWQoaWQsIGN0eCk7XG4gICAgICAgIGN1cnJlbnQuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXBvLnVwZGF0ZShjdXJyZW50LCBjdHgpO1xuICAgIH1cbiAgICBhc3luYyByZWFjdGl2YXRlKGlkKSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW10sIFwicmVhY3RpdmF0ZVwiLCB0cnVlKSkuZm9yKHRoaXMucmVhY3RpdmF0ZSk7XG4gICAgICAgIGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKFdlYmhvb2tTdWJzY3JpcHRpb24pO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVwby5yZWFkKGlkLCBjdHgpO1xuICAgICAgICBjdXJyZW50LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiByZXBvLnVwZGF0ZShjdXJyZW50LCBjdHgpO1xuICAgIH1cbn07XG5fX2RlY29yYXRlKFtcbiAgICBQb3N0KFwiOmlkL2RlYWN0aXZhdGVcIiksXG4gICAgX19wYXJhbSgwLCBQYXJhbShcImlkXCIpKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nXSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIucHJvdG90eXBlLCBcImRlYWN0aXZhdGVcIiwgbnVsbCk7XG5fX2RlY29yYXRlKFtcbiAgICBQb3N0KFwiOmlkL3JlYWN0aXZhdGVcIiksXG4gICAgX19wYXJhbSgwLCBQYXJhbShcImlkXCIpKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nXSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIucHJvdG90eXBlLCBcInJlYWN0aXZhdGVcIiwgbnVsbCk7XG5XZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIgPSBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXJfMSA9IF9fZGVjb3JhdGUoW1xuICAgIENvbnRyb2xsZXIoXCJ3ZWJob29rLXN1YnNjcmlwdGlvbnNcIiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtEZWNhZlJlcXVlc3RDb250ZXh0XSlcbl0sIFdlYmhvb2tTdWJzY3JpcHRpb25BY3Rpb25zQ29udHJvbGxlcik7XG5leHBvcnQgeyBXZWJob29rU3Vic2NyaXB0aW9uQWN0aW9uc0NvbnRyb2xsZXIgfTtcbmxldCBXZWJob29rRXZlbnRBY3Rpb25zQ29udHJvbGxlciA9IFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyXzEgPSBjbGFzcyBXZWJob29rRXZlbnRBY3Rpb25zQ29udHJvbGxlciBleHRlbmRzIERlY2FmQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoY2xpZW50Q29udGV4dCkge1xuICAgICAgICBzdXBlcihjbGllbnRDb250ZXh0LCBXZWJob29rRXZlbnRBY3Rpb25zQ29udHJvbGxlcl8xLm5hbWUpO1xuICAgIH1cbiAgICBhc3luYyByZXBsYXkoaWQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChbXSwgXCJyZXBsYXlcIiwgdHJ1ZSkpLmZvcih0aGlzLnJlcGxheSk7XG4gICAgICAgIGNvbnN0IGV2ZW50UmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoV2ViaG9va0V2ZW50UmVjb3JkKTtcbiAgICAgICAgY29uc3QgZGVsaXZlcnlSZXBvID0gUmVwb3NpdG9yeS5mb3JNb2RlbChXZWJob29rRGVsaXZlcnkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGV2ZW50O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmVudCA9IGF3YWl0IGV2ZW50UmVwby5yZWFkKGlkLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnRzID0gYXdhaXQgZXZlbnRSZXBvXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgICAgICAgICAud2hlcmUoZXZlbnRSZXBvLmF0dHIoXCJpZFwiKS5lcShpZCkpXG4gICAgICAgICAgICAgICAgICAgIC5saW1pdCgxKVxuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZShjdHgpO1xuICAgICAgICAgICAgICAgIGlmICghZXZlbnRzLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSBldmVudHNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGVsaXZlcmllcyA9IFtdO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkZWxpdmVyaWVzID0gYXdhaXQgY29sbGVjdFBhZ2VkUmVzdWx0cygoKSA9PiBkZWxpdmVyeVJlcG9cbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdCgpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZShkZWxpdmVyeVJlcG8uYXR0cihcImV2ZW50SWRcIikuZXEoZXZlbnQuaWQpKVxuICAgICAgICAgICAgICAgICAgICAub3JkZXJCeShcImNyZWF0ZWRBdFwiLCBPcmRlckRpcmVjdGlvbi5BU0MpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuQnkoXCJpZFwiLCBPcmRlckRpcmVjdGlvbi5BU0MpXG4gICAgICAgICAgICAgICAgICAgIC5wYWdpbmF0ZSgyNTAsIGN0eCksIDI1MCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkZWxpdmVyaWVzID0gYXdhaXQgZGVsaXZlcnlSZXBvXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIC53aGVyZShkZWxpdmVyeVJlcG8uYXR0cihcImV2ZW50SWRcIikuZXEoZXZlbnQuaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGUoY3R4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICBkZWxpdmVyaWVzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVsaXZlcnkgb2YgZGVsaXZlcmllcykge1xuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5LnN0YXR1cyA9IFdlYmhvb2tTdGF0dXMuUEVORElORztcbiAgICAgICAgICAgICAgICBkZWxpdmVyeS5hdHRlbXB0cyA9IDA7XG4gICAgICAgICAgICAgICAgZGVsaXZlcnkubmV4dEF0dGVtcHRBdCA9IG5vdztcbiAgICAgICAgICAgICAgICBkZWxpdmVyeS5sYXN0QXR0ZW1wdEF0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBkZWxpdmVyeS5lcnJvck1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZGVsaXZlcnkucmVzcG9uc2VTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZGVsaXZlcnkucmVzcG9uc2VCb2R5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuc3RhdHVzID0gV2ViaG9va1N0YXR1cy5QRU5ESU5HO1xuICAgICAgICAgICAgZXZlbnQuZGVsaXZlcmllc1N1Y2NlZWRlZCA9IDA7XG4gICAgICAgICAgICBldmVudC5kZWxpdmVyaWVzRmFpbGVkID0gMDtcbiAgICAgICAgICAgIGV2ZW50Lm5leHRBdHRlbXB0QXQgPSBub3c7XG4gICAgICAgICAgICBldmVudC51cGRhdGVkQXQgPSBub3c7XG4gICAgICAgICAgICBpZiAoZGVsaXZlcmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZWxpdmVyeVJlcG8udXBkYXRlQWxsKGRlbGl2ZXJpZXMsIGN0eC5vdmVycmlkZSh7IGFwcGx5VXBkYXRlVmFsaWRhdGlvbjogZmFsc2UgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlcGxheSBzdGlsbCByZXNldHMgdGhlIGV2ZW50IHN0YXRlIGV2ZW4gaWYgYnVsayBkZWxpdmVyeSB1cGRhdGVzIGFyZSBub3QgcXVlcnlhYmxlIGhlcmUuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGV2ZW50UmVwby51cGRhdGUoZXZlbnQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbn07XG5fX2RlY29yYXRlKFtcbiAgICBQb3N0KFwiOmlkL3JlcGxheVwiKSxcbiAgICBfX3BhcmFtKDAsIFBhcmFtKFwiaWRcIikpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBGdW5jdGlvbiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtTdHJpbmddKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyLnByb3RvdHlwZSwgXCJyZXBsYXlcIiwgbnVsbCk7XG5XZWJob29rRXZlbnRBY3Rpb25zQ29udHJvbGxlciA9IFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyXzEgPSBfX2RlY29yYXRlKFtcbiAgICBDb250cm9sbGVyKFwid2ViaG9vay1ldmVudHNcIiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtEZWNhZlJlcXVlc3RDb250ZXh0XSlcbl0sIFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyKTtcbmV4cG9ydCB7IFdlYmhvb2tFdmVudEFjdGlvbnNDb250cm9sbGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1ZEhKdmJHeGxjbk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12ZDJWaWFHOXZhM012WTI5dWRISnZiR3hsY25NdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenRCUVVGQkxFOUJRVThzUlVGQlJTeFZRVUZWTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlJTeFZRVUZWTEVWQlFXRXNZMEZCWXl4RlFVRkZMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEZGtVc1QwRkJUeXhGUVVGRkxHVkJRV1VzUlVGQlJTdzBRa0ZCZFVJN1FVRkRha1FzVDBGQlR5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxEaENRVUZ0UWp0QlFVVnFSQ3hQUVVGUExFVkJRMHdzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeGhRVUZoTEVWQlEySXNiVUpCUVcxQ0xFVkJRMjVDTEcxQ1FVRnRRaXhIUVVOd1FpeE5RVUZOTERCQ1FVRXdRaXhEUVVGRE8wRkJSek5DTEVsQlFVMHNiME5CUVc5RExEUkRRVUV4UXl4TlFVRk5MRzlEUVVGeFF5eFRRVUZSTEdWQlFTdENPMGxCUTNaR0xGbEJRVmtzWVVGQmEwTTdVVUZETlVNc1MwRkJTeXhEUVVGRExHRkJRV0VzUlVGQlJTeHpRMEZCYjBNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU5zUlN4RFFVRkRPMGxCUjBzc1FVRkJUaXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZqTEVWQlFWVTdVVUZEZEVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRemRFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJoQ0xFTkJRVU03VVVGRFJpeE5RVUZOTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVjNVFpeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8xRkJRM1pDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRla01zVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRka0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU51UXl4RFFVRkRPMGxCUjBzc1FVRkJUaXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZqTEVWQlFWVTdVVUZEZEVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRemRFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTJoQ0xFTkJRVU03VVVGRFJpeE5RVUZOTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVjNVFpeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8xRkJRM1pDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRla01zVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRkRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU51UXl4RFFVRkRPME5CUTBZc1EwRkJRVHRCUVRGQ1R6dEpRVVJNTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dEpRVU5NTEZkQlFVRXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGQk96czdPM05GUVZjMVFqdEJRVWRMTzBsQlJFd3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzBsQlEwd3NWMEZCUVN4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVUU3T3pzN2MwVkJWelZDTzBGQkwwSlZMRzlEUVVGdlF6dEpRVVJvUkN4VlFVRlZMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTTdjVU5CUlZBc2JVSkJRVzFDTzBkQlJHNURMRzlEUVVGdlF5eERRV2REYUVRN08wRkJSMDBzU1VGQlRTdzJRa0ZCTmtJc2NVTkJRVzVETEUxQlFVMHNOa0pCUVRoQ0xGTkJRVkVzWlVGQkswSTdTVUZEYUVZc1dVRkJXU3hoUVVGclF6dFJRVU0xUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hGUVVGRkxDdENRVUUyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdTVUZIU3l4QlFVRk9MRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRV01zUlVGQlZUdFJRVU5zUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZWtVc1RVRkJUU3hUUVVGVExFZEJRVWNzVlVGQlZTeERRVUZETEZGQlFWRXNRMEZIYmtNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVZDBReXhsUVVGbExFTkJRVU1zUTBGQlF6dFJRVU51UWl4SlFVRkpMRU5CUVVNN1dVRkRTQ3hKUVVGSkxFdEJRVXNzUTBGQlF6dFpRVU5XTEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hMUVVGTExFZEJRVWNzVFVGQlRTeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU40UXl4RFFVRkRPMWxCUVVNc1QwRkJUeXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEWml4TlFVRk5MRTFCUVUwc1IwRkJSeXhOUVVGTkxGTkJRVk03Y1VKQlF6TkNMRTFCUVUwc1JVRkJSVHR4UWtGRFVpeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN2NVSkJRMnhETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJRMUlzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOb1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwN2IwSkJRVVVzVFVGQlRTeExRVUZMTEVOQlFVTTdaMEpCUTJoRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRUlzUTBGQlF6dFpRVU5FTEVsQlFVa3NWVUZCVlN4SFFVRlZMRVZCUVVVc1EwRkJRenRaUVVNelFpeEpRVUZKTEVOQlFVTTdaMEpCUTBnc1ZVRkJWU3hIUVVGSExFMUJRVTBzYlVKQlFXMUNMRU5CUTNCRExFZEJRVWNzUlVGQlJTeERRVU5JTEZsQlFWazdjVUpCUTFRc1RVRkJUU3hGUVVGRk8zRkNRVU5TTEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03Y1VKQlEyaEVMRTlCUVU4c1EwRkJReXhYUVVGWExFVkJRVVVzWTBGQll5eERRVUZETEVkQlFVY3NRMEZCUXp0eFFrRkRlRU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRE8zRkNRVU5vUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVU4yUWl4SFFVRkhMRVZCUTBnc1IwRkJSeXhEUVVOS0xFTkJRVU03V1VGRFNpeERRVUZETzFsQlFVTXNUVUZCVFN4RFFVRkRPMmRDUVVOUUxFbEJRVWtzUTBGQlF6dHZRa0ZEU0N4VlFVRlZMRWRCUVVjc1RVRkJUU3haUVVGWk8zbENRVU0xUWl4TlFVRk5MRVZCUVVVN2VVSkJRMUlzUzBGQlN5eERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenQ1UWtGRGFFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4RFFVRkRPMmRDUVVGRExFMUJRVTBzUTBGQlF6dHZRa0ZEVUN4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4RFFVRkRPMWxCUTBnc1EwRkJRenRaUVVORUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNN1dVRkZka0lzUzBGQlN5eE5RVUZOTEZGQlFWRXNTVUZCU1N4VlFVRlZMRVZCUVVVc1EwRkJRenRuUWtGRGJFTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkJSeXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETzJkQ1FVTjRReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRkRUlzVVVGQlVTeERRVUZETEdGQlFXRXNSMEZCUnl4SFFVRkhMRU5CUVVNN1owSkJRemRDTEZGQlFWRXNRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJWeXhEUVVGRE8yZENRVU55UXl4UlFVRlJMRU5CUVVNc1dVRkJXU3hIUVVGSExGTkJRVk1zUTBGQlF6dG5Ra0ZEYkVNc1VVRkJVU3hEUVVGRExHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTTdaMEpCUTNCRExGRkJRVkVzUTBGQlF5eFpRVUZaTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNCRExFTkJRVU03V1VGRlJDeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMR0ZCUVdFc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRGNrTXNTMEZCU3l4RFFVRkRMRzFDUVVGdFFpeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTTVRaXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRek5DTEV0QlFVc3NRMEZCUXl4aFFVRmhMRWRCUVVjc1IwRkJSeXhEUVVGRE8xbEJRekZDTEV0QlFVc3NRMEZCUXl4VFFVRlRMRWRCUVVjc1IwRkJSeXhEUVVGRE8xbEJSWFJDTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU4wUWl4SlFVRkpMRU5CUVVNN2IwSkJRMGdzVFVGQlRTeFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVTXhRaXhWUVVGVkxFVkJRMVlzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMSEZDUVVGeFFpeEZRVUZGTEV0QlFVc3NSVUZCVXl4RFFVRkRMRU5CUTNSRUxFTkJRVU03WjBKQlEwb3NRMEZCUXp0blFrRkJReXhOUVVGTkxFTkJRVU03YjBKQlExQXNORVpCUVRSR08yZENRVU01Uml4RFFVRkRPMWxCUTBnc1EwRkJRenRaUVVORUxFOUJRVThzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFTXNRMEZCUXp0UlFVRkRMRTlCUVU4c1MwRkJTeXhGUVVGRkxFTkJRVU03V1VGRFppeE5RVUZOTEV0QlFVc3NRMEZCUXp0UlFVTmtMRU5CUVVNN1NVRkRTQ3hEUVVGRE8wTkJRMFlzUTBGQlFUdEJRUzlGVHp0SlFVUk1MRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRFRDeFhRVUZCTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRVHM3T3pzeVJFRTRSWGhDTzBGQmNFWlZMRFpDUVVFMlFqdEpRVVI2UXl4VlFVRlZMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdjVU5CUlVFc2JVSkJRVzFDTzBkQlJHNURMRFpDUVVFMlFpeERRWEZHZWtNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QkRiMjUwY205c2JHVnlMQ0JRWVhKaGJTd2dVRzl6ZENCOUlHWnliMjBnWENKQWJtVnpkR3B6TDJOdmJXMXZibHdpTzF4dWFXMXdiM0owSUhzZ1VtVndiM05wZEc5eWVTd2dkSGx3WlNCU1pYQnZMQ0JQY21SbGNrUnBjbVZqZEdsdmJpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaRGIyNTBjbTlzYkdWeUlIMGdabkp2YlNCY0lpNHVMMk52Ym5SeWIyeHNaWEp6WENJN1hHNXBiWEJ2Y25RZ2V5QkVaV05oWmxKbGNYVmxjM1JEYjI1MFpYaDBJSDBnWm5KdmJTQmNJaTR1TDNKbGNYVmxjM1JjSWp0Y2JtbHRjRzl5ZENCN0lFUmxZMkZtVTJWeWRtVnlRM1I0SUgwZ1puSnZiU0JjSWk0dUwyTnZibk4wWVc1MGMxd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1YyVmlhRzl2YTBSbGJHbDJaWEo1TEZ4dUlDQlhaV0pvYjI5clJYWmxiblJTWldOdmNtUXNYRzRnSUZkbFltaHZiMnRUZEdGMGRYTXNYRzRnSUZkbFltaHZiMnRUZFdKelkzSnBjSFJwYjI0c1hHNGdJR052Ykd4bFkzUlFZV2RsWkZKbGMzVnNkSE1zWEc1OUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlptOXlMV2gwZEhBdmFHOXZhM05jSWp0Y2JseHVRRU52Ym5SeWIyeHNaWElvWENKM1pXSm9iMjlyTFhOMVluTmpjbWx3ZEdsdmJuTmNJaWxjYm1WNGNHOXlkQ0JqYkdGemN5QlhaV0pvYjI5clUzVmljMk55YVhCMGFXOXVRV04wYVc5dWMwTnZiblJ5YjJ4c1pYSWdaWGgwWlc1a2N5QkVaV05oWmtOdmJuUnliMnhzWlhJOFJHVmpZV1pUWlhKMlpYSkRkSGcrSUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWTJ4cFpXNTBRMjl1ZEdWNGREb2dSR1ZqWVdaU1pYRjFaWE4wUTI5dWRHVjRkQ2tnZTF4dUlDQWdJSE4xY0dWeUtHTnNhV1Z1ZEVOdmJuUmxlSFFzSUZkbFltaHZiMnRUZFdKelkzSnBjSFJwYjI1QlkzUnBiMjV6UTI5dWRISnZiR3hsY2k1dVlXMWxLVHRjYmlBZ2ZWeHVYRzRnSUVCUWIzTjBLRndpT21sa0wyUmxZV04wYVhaaGRHVmNJaWxjYmlBZ1lYTjVibU1nWkdWaFkzUnBkbUYwWlNoQVVHRnlZVzBvWENKcFpGd2lLU0JwWkRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnWTI5dWMzUWdleUJqZEhnZ2ZTQTlJQ2hoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hiWFN3Z1hDSmtaV0ZqZEdsMllYUmxYQ0lzSUhSeWRXVXBLUzVtYjNJb1hHNGdJQ0FnSUNCMGFHbHpMbVJsWVdOMGFYWmhkR1ZjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhKbGNHOGdQU0JTWlhCdmMybDBiM0o1TG1admNrMXZaR1ZzUEZ4dUlDQWdJQ0FnVjJWaWFHOXZhMU4xWW5OamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUZKbGNHODhWMlZpYUc5dmExTjFZbk5qY21sd2RHbHZiajVjYmlBZ0lDQStLRmRsWW1odmIydFRkV0p6WTNKcGNIUnBiMjRwTzF4dUlDQWdJR052Ym5OMElHTjFjbkpsYm5RZ1BTQmhkMkZwZENCeVpYQnZMbkpsWVdRb2FXUXNJR04wZUNrN1hHNGdJQ0FnWTNWeWNtVnVkQzVoWTNScGRtVWdQU0JtWVd4elpUdGNiaUFnSUNCeVpYUjFjbTRnY21Wd2J5NTFjR1JoZEdVb1kzVnljbVZ1ZEN3Z1kzUjRLVHRjYmlBZ2ZWeHVYRzRnSUVCUWIzTjBLRndpT21sa0wzSmxZV04wYVhaaGRHVmNJaWxjYmlBZ1lYTjVibU1nY21WaFkzUnBkbUYwWlNoQVVHRnlZVzBvWENKcFpGd2lLU0JwWkRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnWTI5dWMzUWdleUJqZEhnZ2ZTQTlJQ2hoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hiWFN3Z1hDSnlaV0ZqZEdsMllYUmxYQ0lzSUhSeWRXVXBLUzVtYjNJb1hHNGdJQ0FnSUNCMGFHbHpMbkpsWVdOMGFYWmhkR1ZjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhKbGNHOGdQU0JTWlhCdmMybDBiM0o1TG1admNrMXZaR1ZzUEZ4dUlDQWdJQ0FnVjJWaWFHOXZhMU4xWW5OamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUZKbGNHODhWMlZpYUc5dmExTjFZbk5qY21sd2RHbHZiajVjYmlBZ0lDQStLRmRsWW1odmIydFRkV0p6WTNKcGNIUnBiMjRwTzF4dUlDQWdJR052Ym5OMElHTjFjbkpsYm5RZ1BTQmhkMkZwZENCeVpYQnZMbkpsWVdRb2FXUXNJR04wZUNrN1hHNGdJQ0FnWTNWeWNtVnVkQzVoWTNScGRtVWdQU0IwY25WbE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhCdkxuVndaR0YwWlNoamRYSnlaVzUwTENCamRIZ3BPMXh1SUNCOVhHNTlYRzVjYmtCRGIyNTBjbTlzYkdWeUtGd2lkMlZpYUc5dmF5MWxkbVZ1ZEhOY0lpbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCWFpXSm9iMjlyUlhabGJuUkJZM1JwYjI1elEyOXVkSEp2Ykd4bGNpQmxlSFJsYm1SeklFUmxZMkZtUTI5dWRISnZiR3hsY2p4RVpXTmhabE5sY25abGNrTjBlRDRnZTF4dUlDQmpiMjV6ZEhKMVkzUnZjaWhqYkdsbGJuUkRiMjUwWlhoME9pQkVaV05oWmxKbGNYVmxjM1JEYjI1MFpYaDBLU0I3WEc0Z0lDQWdjM1Z3WlhJb1kyeHBaVzUwUTI5dWRHVjRkQ3dnVjJWaWFHOXZhMFYyWlc1MFFXTjBhVzl1YzBOdmJuUnliMnhzWlhJdWJtRnRaU2s3WEc0Z0lIMWNibHh1SUNCQVVHOXpkQ2hjSWpwcFpDOXlaWEJzWVhsY0lpbGNiaUFnWVhONWJtTWdjbVZ3YkdGNUtFQlFZWEpoYlNoY0ltbGtYQ0lwSUdsa09pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0I3SUdOMGVDQjlJRDBnS0dGM1lXbDBJSFJvYVhNdWJHOW5RM1I0S0Z0ZExDQmNJbkpsY0d4aGVWd2lMQ0IwY25WbEtTa3VabTl5S0hSb2FYTXVjbVZ3YkdGNUtUdGNiaUFnSUNCamIyNXpkQ0JsZG1WdWRGSmxjRzhnUFNCU1pYQnZjMmwwYjNKNUxtWnZjazF2WkdWc1BGeHVJQ0FnSUNBZ1YyVmlhRzl2YTBWMlpXNTBVbVZqYjNKa0xGeHVJQ0FnSUNBZ1VtVndienhYWldKb2IyOXJSWFpsYm5SU1pXTnZjbVErWEc0Z0lDQWdQaWhYWldKb2IyOXJSWFpsYm5SU1pXTnZjbVFwTzF4dUlDQWdJR052Ym5OMElHUmxiR2wyWlhKNVVtVndieUE5SUZKbGNHOXphWFJ2Y25rdVptOXlUVzlrWld3OFhHNGdJQ0FnSUNCWFpXSm9iMjlyUkdWc2FYWmxjbmtzWEc0Z0lDQWdJQ0JTWlhCdlBGZGxZbWh2YjJ0RVpXeHBkbVZ5ZVQ1Y2JpQWdJQ0ErS0ZkbFltaHZiMnRFWld4cGRtVnllU2s3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUd4bGRDQmxkbVZ1ZER0Y2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJR1YyWlc1MElEMGdZWGRoYVhRZ1pYWmxiblJTWlhCdkxuSmxZV1FvYVdRc0lHTjBlQ2s3WEc0Z0lDQWdJQ0I5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmxkbVZ1ZEhNZ1BTQmhkMkZwZENCbGRtVnVkRkpsY0c5Y2JpQWdJQ0FnSUNBZ0lDQXVjMlZzWldOMEtDbGNiaUFnSUNBZ0lDQWdJQ0F1ZDJobGNtVW9aWFpsYm5SU1pYQnZMbUYwZEhJb1hDSnBaRndpS1M1bGNTaHBaQ2twWEc0Z0lDQWdJQ0FnSUNBZ0xteHBiV2wwS0RFcFhHNGdJQ0FnSUNBZ0lDQWdMbVY0WldOMWRHVW9ZM1I0S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZsZG1WdWRITXViR1Z1WjNSb0tTQjBhSEp2ZHlCbGNuSnZjanRjYmlBZ0lDQWdJQ0FnWlhabGJuUWdQU0JsZG1WdWRITmJNRjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JzWlhRZ1pHVnNhWFpsY21sbGN6b2dZVzU1VzEwZ1BTQmJYVHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lHUmxiR2wyWlhKcFpYTWdQU0JoZDJGcGRDQmpiMnhzWldOMFVHRm5aV1JTWlhOMWJIUnpLRnh1SUNBZ0lDQWdJQ0FnSUNncElEMCtYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXeHBkbVZ5ZVZKbGNHOWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xuTmxiR1ZqZENncFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUM1M2FHVnlaU2hrWld4cGRtVnllVkpsY0c4dVlYUjBjaWhjSW1WMlpXNTBTV1JjSWlrdVpYRW9aWFpsYm5RdWFXUXBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXViM0prWlhKQ2VTaGNJbU55WldGMFpXUkJkRndpTENCUGNtUmxja1JwY21WamRHbHZiaTVCVTBNcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUM1MGFHVnVRbmtvWENKcFpGd2lMQ0JQY21SbGNrUnBjbVZqZEdsdmJpNUJVME1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzV3WVdkcGJtRjBaU2d5TlRBc0lHTjBlQ2tzWEc0Z0lDQWdJQ0FnSUNBZ01qVXdMRnh1SUNBZ0lDQWdJQ0FnSUdOMGVGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmU0JqWVhSamFDQjdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdaR1ZzYVhabGNtbGxjeUE5SUdGM1lXbDBJR1JsYkdsMlpYSjVVbVZ3YjF4dUlDQWdJQ0FnSUNBZ0lDQWdMbk5sYkdWamRDZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdWQyaGxjbVVvWkdWc2FYWmxjbmxTWlhCdkxtRjBkSElvWENKbGRtVnVkRWxrWENJcExtVnhLR1YyWlc1MExtbGtLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDNWxlR1ZqZFhSbEtHTjBlQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnZTF4dUlDQWdJQ0FnSUNBZ0lHUmxiR2wyWlhKcFpYTWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyOXVjM1FnYm05M0lEMGdibVYzSUVSaGRHVW9LVHRjYmx4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCa1pXeHBkbVZ5ZVNCdlppQmtaV3hwZG1WeWFXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdSbGJHbDJaWEo1TG5OMFlYUjFjeUE5SUZkbFltaHZiMnRUZEdGMGRYTXVVRVZPUkVsT1J6dGNiaUFnSUNBZ0lDQWdaR1ZzYVhabGNua3VZWFIwWlcxd2RITWdQU0F3TzF4dUlDQWdJQ0FnSUNCa1pXeHBkbVZ5ZVM1dVpYaDBRWFIwWlcxd2RFRjBJRDBnYm05M08xeHVJQ0FnSUNBZ0lDQmtaV3hwZG1WeWVTNXNZWE4wUVhSMFpXMXdkRUYwSUQwZ2JuVnNiQ0JoY3lCaGJuazdYRzRnSUNBZ0lDQWdJR1JsYkdsMlpYSjVMbVZ5Y205eVRXVnpjMkZuWlNBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdaR1ZzYVhabGNua3VjbVZ6Y0c5dWMyVlRkR0YwZFhNZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJR1JsYkdsMlpYSjVMbkpsYzNCdmJuTmxRbTlrZVNBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdaWFpsYm5RdWMzUmhkSFZ6SUQwZ1YyVmlhRzl2YTFOMFlYUjFjeTVRUlU1RVNVNUhPMXh1SUNBZ0lDQWdaWFpsYm5RdVpHVnNhWFpsY21sbGMxTjFZMk5sWldSbFpDQTlJREE3WEc0Z0lDQWdJQ0JsZG1WdWRDNWtaV3hwZG1WeWFXVnpSbUZwYkdWa0lEMGdNRHRjYmlBZ0lDQWdJR1YyWlc1MExtNWxlSFJCZEhSbGJYQjBRWFFnUFNCdWIzYzdYRzRnSUNBZ0lDQmxkbVZ1ZEM1MWNHUmhkR1ZrUVhRZ1BTQnViM2M3WEc1Y2JpQWdJQ0FnSUdsbUlDaGtaV3hwZG1WeWFXVnpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJR0YzWVdsMElHUmxiR2wyWlhKNVVtVndieTUxY0dSaGRHVkJiR3dvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV3hwZG1WeWFXVnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kzUjRMbTkyWlhKeWFXUmxLSHNnWVhCd2JIbFZjR1JoZEdWV1lXeHBaR0YwYVc5dU9pQm1ZV3h6WlNCOUlHRnpJR0Z1ZVNsY2JpQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0I5SUdOaGRHTm9JSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlNaWEJzWVhrZ2MzUnBiR3dnY21WelpYUnpJSFJvWlNCbGRtVnVkQ0J6ZEdGMFpTQmxkbVZ1SUdsbUlHSjFiR3NnWkdWc2FYWmxjbmtnZFhCa1lYUmxjeUJoY21VZ2JtOTBJSEYxWlhKNVlXSnNaU0JvWlhKbExseHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z1pYWmxiblJTWlhCdkxuVndaR0YwWlNobGRtVnVkQ3dnWTNSNEtUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2daWEp5YjNJN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -14,21 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.verifyWebhookSignature = exports.signWebhookPayload = exports.computeNextAttempt = exports.WebhookSubscriptionService = exports.WebhookSubscription = exports.WebhookStatus = exports.WebhookSignatureMiddleware = exports.WebhookPublisherService = exports.WebhookEventRecord = exports.WebhookDeliveryService = exports.WebhookDelivery = void 0;
18
17
  __exportStar(require("./DecafWebhookModule.cjs"), exports);
19
18
  __exportStar(require("./controllers.cjs"), exports);
20
19
  __exportStar(require("./types.cjs"), exports);
21
- var server_1 = require("@decaf-ts/for-http/server");
22
- Object.defineProperty(exports, "WebhookDelivery", { enumerable: true, get: function () { return server_1.WebhookDelivery; } });
23
- Object.defineProperty(exports, "WebhookDeliveryService", { enumerable: true, get: function () { return server_1.WebhookDeliveryService; } });
24
- Object.defineProperty(exports, "WebhookEventRecord", { enumerable: true, get: function () { return server_1.WebhookEventRecord; } });
25
- Object.defineProperty(exports, "WebhookPublisherService", { enumerable: true, get: function () { return server_1.WebhookPublisherService; } });
26
- Object.defineProperty(exports, "WebhookSignatureMiddleware", { enumerable: true, get: function () { return server_1.WebhookSignatureMiddleware; } });
27
- Object.defineProperty(exports, "WebhookStatus", { enumerable: true, get: function () { return server_1.WebhookStatus; } });
28
- Object.defineProperty(exports, "WebhookSubscription", { enumerable: true, get: function () { return server_1.WebhookSubscription; } });
29
- Object.defineProperty(exports, "WebhookSubscriptionService", { enumerable: true, get: function () { return server_1.WebhookSubscriptionService; } });
30
- Object.defineProperty(exports, "computeNextAttempt", { enumerable: true, get: function () { return server_1.computeNextAttempt; } });
31
- Object.defineProperty(exports, "signWebhookPayload", { enumerable: true, get: function () { return server_1.signWebhookPayload; } });
32
- Object.defineProperty(exports, "verifyWebhookSignature", { enumerable: true, get: function () { return server_1.verifyWebhookSignature; } });
33
- //# sourceMappingURL=index.js.map
34
- //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViaG9va3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXFDO0FBQ3JDLGlDQUE4QjtBQUM5QiwyQkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9EZWNhZldlYmhvb2tNb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRyb2xsZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQXdDO0FBQ3hDLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0Isc2FBQXNhIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vRGVjYWZXZWJob29rTW9kdWxlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb250cm9sbGVycy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12ZDJWaWFHOXZhM012YVc1a1pYZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc2QwTkJRWEZETzBGQlEzSkRMR2xEUVVFNFFqdEJRVU01UWl3eVFrRkJkMElpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnS2lCbWNtOXRJRndpTGk5RVpXTmhabGRsWW1odmIydE5iMlIxYkdWY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMk52Ym5SeWIyeHNaWEp6WENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOTBlWEJsYzF3aU8xeHVJbDE5Il19
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
4
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViaG9va3MvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIsIENvbmZpZ09mIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjYWZSZXF1ZXN0SGFuZGxlciB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY2FmV2ViaG9va01vZHVsZU9wdGlvbnM8XG4gIENPTkYgPSBhbnksXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPENPTkYsIGFueSwgYW55LCBhbnk+ID0gQWRhcHRlcjxDT05GLCBhbnksIGFueSwgYW55Pixcbj4ge1xuICBjb25mOiBbXG4gICAgQ29uc3RydWN0b3I8QT4sXG4gICAgQ29uZmlnT2Y8QT4sXG4gICAgLi4uYXJnczpcbiAgICAgIHwgYW55W11cbiAgICAgIHwgW1xuICAgICAgICAgIC4uLmFueVtdLFxuICAgICAgICAgIGFueSxcbiAgICAgICAgXSxcbiAgXVtdO1xuICBoYW5kbGVycz86IFR5cGU8RGVjYWZSZXF1ZXN0SGFuZGxlcj5bXTtcbiAgaW5pdGlhbGl6YXRpb24/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogUm91dGVyIHByZWZpeCBmb3IgdGhlIHdlYmhvb2sgY29udHJvbGxlcnMuXG4gICAqIEBkZWZhdWx0IFwiL3dlYmhvb2tzXCJcbiAgICovXG4gIHdlYmhvb2tBcGlQYXRoPzogc3RyaW5nO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhvQ0FBOG9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZkMlZpYUc5dmEzTXZkSGx3WlhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRUZrWVhCMFpYSXNJRU52Ym1acFowOW1JSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlqYjNKbFhDSTdYRzVwYlhCdmNuUWdleUJEYjI1emRISjFZM1J2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHVmpiM0poZEdsdmJsd2lPMXh1YVcxd2IzSjBJSHNnVkhsd1pTQjlJR1p5YjIwZ1hDSkFibVZ6ZEdwekwyTnZiVzF2Ymx3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaU1pYRjFaWE4wU0dGdVpHeGxjaUI5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFUmxZMkZtVjJWaWFHOXZhMDF2WkhWc1pVOXdkR2x2Ym5NOFhHNGdJRU5QVGtZZ1BTQmhibmtzWEc0Z0lFRWdaWGgwWlc1a2N5QkJaR0Z3ZEdWeVBFTlBUa1lzSUdGdWVTd2dZVzU1TENCaGJuaytJRDBnUVdSaGNIUmxjanhEVDA1R0xDQmhibmtzSUdGdWVTd2dZVzU1UGl4Y2JqNGdlMXh1SUNCamIyNW1PaUJiWEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0k4UVQ0c1hHNGdJQ0FnUTI5dVptbG5UMlk4UVQ0c1hHNGdJQ0FnTGk0dVlYSm5jenBjYmlBZ0lDQWdJSHdnWVc1NVcxMWNiaUFnSUNBZ0lId2dXMXh1SUNBZ0lDQWdJQ0FnSUM0dUxtRnVlVnRkTEZ4dUlDQWdJQ0FnSUNBZ0lHRnVlU3hjYmlBZ0lDQWdJQ0FnWFN4Y2JpQWdYVnRkTzF4dUlDQm9ZVzVrYkdWeWN6ODZJRlI1Y0dVOFJHVmpZV1pTWlhGMVpYTjBTR0Z1Wkd4bGNqNWJYVHRjYmlBZ2FXNXBkR2xoYkdsNllYUnBiMjQvT2lBb0tTQTlQaUJRY205dGFYTmxQSFp2YVdRK08xeHVJQ0F2S2lwY2JpQWdJQ29nVW05MWRHVnlJSEJ5WldacGVDQm1iM0lnZEdobElIZGxZbWh2YjJzZ1kyOXVkSEp2Ykd4bGNuTXVYRzRnSUNBcUlFQmtaV1poZFd4MElGd2lMM2RsWW1odmIydHpYQ0pjYmlBZ0lDb3ZYRzRnSUhkbFltaHZiMnRCY0dsUVlYUm9Qem9nYzNSeWFXNW5PMXh1ZlZ4dUlsMTkiXX0=
@@ -0,0 +1,81 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Injectable, Inject, Optional, Scope, } from "@nestjs/common";
14
+ import { Reflector } from "@nestjs/core";
15
+ import { Logging } from "@decaf-ts/logging";
16
+ import { Adapter } from "@decaf-ts/core";
17
+ import { AUTH_HANDLER, AUTH_META_KEY, IS_PUBLIC_KEY, REQUIRED_ROLES_KEY, SKIP_MODEL_ROLES_KEY } from "./constants.js";
18
+ import { DecafRequestContext } from "./../request/DecafRequestContext.js";
19
+ let AuthInterceptor = class AuthInterceptor {
20
+ constructor(reflector, requestContext, authHandler) {
21
+ this.reflector = reflector;
22
+ this.requestContext = requestContext;
23
+ this.authHandler = authHandler;
24
+ }
25
+ async intercept(ctx, next) {
26
+ const log = Logging.for(this).for(this.intercept);
27
+ const isPublic = this.reflector.getAllAndOverride(IS_PUBLIC_KEY, [
28
+ ctx.getHandler(),
29
+ ctx.getClass(),
30
+ ]);
31
+ const modelName = this.reflector.get(AUTH_META_KEY, ctx.getHandler()) ??
32
+ this.reflector.get(AUTH_META_KEY, ctx.getClass());
33
+ const requiredRoles = this.reflector.getAllAndOverride(REQUIRED_ROLES_KEY, [ctx.getHandler(), ctx.getClass()]);
34
+ const skipModelRoles = this.reflector.getAllAndOverride(SKIP_MODEL_ROLES_KEY, [ctx.getHandler(), ctx.getClass()]);
35
+ const effectiveModel = skipModelRoles ? undefined : modelName;
36
+ log.verbose(`Intercepted request${modelName ? ` for ${modelName}` : ""}`);
37
+ if (isPublic) {
38
+ log.debug(`Public route — skipping auth`);
39
+ }
40
+ else if (this.authHandler) {
41
+ await this.authHandler.authorize(ctx, effectiveModel, requiredRoles, this.requestContext);
42
+ }
43
+ else {
44
+ log.debug(`No auth handler registered`);
45
+ }
46
+ // Transformers run AFTER auth so they can read auth-populated fields
47
+ // (e.g. `user`) from the context and map them to adapter-specific keys
48
+ // (e.g. `UUID` for RamAdapter's @createdBy/@updatedBy handlers).
49
+ await this.applyTransformers();
50
+ const user = this.requestContext.getOrUndefined("user");
51
+ const organization = this.requestContext.getOrUndefined("organization");
52
+ if (user || organization) {
53
+ const currentLog = this.requestContext.get("logger");
54
+ const childLog = currentLog.for({ user, organization });
55
+ this.requestContext.accumulate({ logger: childLog });
56
+ }
57
+ return next.handle();
58
+ }
59
+ async applyTransformers() {
60
+ const flavours = Adapter.flavoursToTransform();
61
+ if (!flavours)
62
+ return;
63
+ for (const flavour of flavours) {
64
+ const transformer = Adapter.transformerFor(flavour);
65
+ if (!transformer)
66
+ continue;
67
+ const from = await transformer.from(this.requestContext);
68
+ if (from)
69
+ this.requestContext.accumulate(from);
70
+ }
71
+ }
72
+ };
73
+ AuthInterceptor = __decorate([
74
+ Injectable({ scope: Scope.REQUEST }),
75
+ __param(2, Optional()),
76
+ __param(2, Inject(AUTH_HANDLER)),
77
+ __metadata("design:paramtypes", [Reflector,
78
+ DecafRequestContext, Object])
79
+ ], AuthInterceptor);
80
+ export { AuthInterceptor };
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aEludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvQXV0aEludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxVQUFVLEVBSVYsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSXpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHVCQUFvQjtBQUVuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNENBQXVDO0FBRzlELElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFDMUIsWUFDbUIsU0FBb0IsRUFDbEIsY0FBbUMsRUFDSCxXQUF5QjtRQUYzRCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUNILGdCQUFXLEdBQVgsV0FBVyxDQUFjO0lBQzNFLENBQUM7SUFFSixLQUFLLENBQUMsU0FBUyxDQUNiLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFVLGFBQWEsRUFBRTtZQUN4RSxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2hCLEdBQUcsQ0FBQyxRQUFRLEVBQUU7U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FD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M0IsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUtoQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQUUsV0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7cUNBRkwsU0FBUztRQUNGLG1CQUFtQjtHQUg3QyxlQUFlLENBaUYzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE5lc3RJbnRlcmNlcHRvcixcbiAgRXhlY3V0aW9uQ29udGV4dCxcbiAgQ2FsbEhhbmRsZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNjb3BlLFxufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFJlZmxlY3RvciB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUmVxdWVzdFRvQ29udGV4dFRyYW5zZm9ybWVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcblxuaW1wb3J0IHsgQVVUSF9IQU5ETEVSLCBBVVRIX01FVEFfS0VZLCBJU19QVUJMSUNfS0VZLCBSRVFVSVJFRF9ST0xFU19LRVksIFNLSVBfTU9ERUxfUk9MRVNfS0VZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhIYW5kbGVyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4uL3JlcXVlc3QvRGVjYWZSZXF1ZXN0Q29udGV4dFwiO1xuXG5ASW5qZWN0YWJsZSh7IHNjb3BlOiBTY29wZS5SRVFVRVNUIH0pXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgTmVzdEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZsZWN0b3I6IFJlZmxlY3RvcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdENvbnRleHQ6IERlY2FmUmVxdWVzdENvbnRleHQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVRIX0hBTkRMRVIpIHByaXZhdGUgcmVhZG9ubHkgYXV0aEhhbmRsZXI/OiBBdXRoSGFuZGxlclxuICApIHt9XG5cbiAgYXN5bmMgaW50ZXJjZXB0KFxuICAgIGN0eDogRXhlY3V0aW9uQ29udGV4dCxcbiAgICBuZXh0OiBDYWxsSGFuZGxlclxuICApOiBQcm9taXNlPE9ic2VydmFibGU8YW55Pj4ge1xuICAgIGNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KS5mb3IodGhpcy5pbnRlcmNlcHQpO1xuXG4gICAgY29uc3QgaXNQdWJsaWMgPSB0aGlzLnJlZmxlY3Rvci5nZXRBbGxBbmRPdmVycmlkZTxib29sZWFuPihJU19QVUJMSUNfS0VZLCBbXG4gICAgICBjdHguZ2V0SGFuZGxlcigpLFxuICAgICAgY3R4LmdldENsYXNzKCksXG4gICAgXSk7XG5cbiAgICBjb25zdCBtb2RlbE5hbWUgPVxuICAgICAgdGhpcy5yZWZsZWN0b3IuZ2V0PHN0cmluZyB8IENvbnN0cnVjdG9yPihcbiAgICAgICAgQVVUSF9NRVRBX0tFWSxcbiAgICAgICAgY3R4LmdldEhhbmRsZXIoKVxuICAgICAgKSA/P1xuICAgICAgdGhpcy5yZWZsZWN0b3IuZ2V0PHN0cmluZyB8IENvbnN0cnVjdG9yPihBVVRIX01FVEFfS0VZLCBjdHguZ2V0Q2xhc3MoKSk7XG5cbiAgICBjb25zdCByZXF1aXJlZFJvbGVzID0gdGhpcy5yZWZsZWN0b3IuZ2V0QWxsQW5kT3ZlcnJpZGU8c3RyaW5nW10+KFxuICAgICAgUkVRVUlSRURfUk9MRVNfS0VZLFxuICAgICAgW2N0eC5nZXRIYW5kbGVyKCksIGN0eC5nZXRDbGFzcygpXVxuICAgICk7XG5cbiAgICBjb25zdCBza2lwTW9kZWxSb2xlcyA9IHRoaXMucmVmbGVjdG9yLmdldEFsbEFuZE92ZXJyaWRlPGJvb2xlYW4+KFxuICAgICAgU0tJUF9NT0RFTF9ST0xFU19LRVksXG4gICAgICBbY3R4LmdldEhhbmRsZXIoKSwgY3R4LmdldENsYXNzKCldXG4gICAgKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZU1vZGVsID0gc2tpcE1vZGVsUm9sZXMgPyB1bmRlZmluZWQgOiBtb2RlbE5hbWU7XG5cbiAgICBsb2cudmVyYm9zZShgSW50ZXJjZXB0ZWQgcmVxdWVzdCR7bW9kZWxOYW1lID8gYCBmb3IgJHttb2RlbE5hbWV9YCA6IFwiXCJ9YCk7XG5cbiAgICBpZiAoaXNQdWJsaWMpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUHVibGljIHJvdXRlIOKAlCBza2lwcGluZyBhdXRoYCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF1dGhIYW5kbGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLmF1dGhIYW5kbGVyLmF1dGhvcml6ZShcbiAgICAgICAgY3R4LFxuICAgICAgICBlZmZlY3RpdmVNb2RlbCBhcyBzdHJpbmcgfCBDb25zdHJ1Y3RvcixcbiAgICAgICAgcmVxdWlyZWRSb2xlcyxcbiAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKGBObyBhdXRoIGhhbmRsZXIgcmVnaXN0ZXJlZGApO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybWVycyBydW4gQUZURVIgYXV0aCBzbyB0aGV5IGNhbiByZWFkIGF1dGgtcG9wdWxhdGVkIGZpZWxkc1xuICAgIC8vIChlLmcuIGB1c2VyYCkgZnJvbSB0aGUgY29udGV4dCBhbmQgbWFwIHRoZW0gdG8gYWRhcHRlci1zcGVjaWZpYyBrZXlzXG4gICAgLy8gKGUuZy4gYFVVSURgIGZvciBSYW1BZGFwdGVyJ3MgQGNyZWF0ZWRCeS9AdXBkYXRlZEJ5IGhhbmRsZXJzKS5cbiAgICBhd2FpdCB0aGlzLmFwcGx5VHJhbnNmb3JtZXJzKCk7XG5cbiAgICBjb25zdCB1c2VyID0gdGhpcy5yZXF1ZXN0Q29udGV4dC5nZXRPclVuZGVmaW5lZChcInVzZXJcIiBhcyBhbnkpO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IHRoaXMucmVxdWVzdENvbnRleHQuZ2V0T3JVbmRlZmluZWQoXCJvcmdhbml6YXRpb25cIiBhcyBhbnkpO1xuICAgIGlmICh1c2VyIHx8IG9yZ2FuaXphdGlvbikge1xuICAgICAgY29uc3QgY3VycmVudExvZyA9IHRoaXMucmVxdWVzdENvbnRleHQuZ2V0KFwibG9nZ2VyXCIgYXMgYW55KTtcbiAgICAgIGNvbnN0IGNoaWxkTG9nID0gY3VycmVudExvZy5mb3IoeyB1c2VyLCBvcmdhbml6YXRpb24gfSk7XG4gICAgICB0aGlzLnJlcXVlc3RDb250ZXh0LmFjY3VtdWxhdGUoeyBsb2dnZXI6IGNoaWxkTG9nIH0gYXMgYW55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseVRyYW5zZm9ybWVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmbGF2b3VycyA9IEFkYXB0ZXIuZmxhdm91cnNUb1RyYW5zZm9ybSgpO1xuICAgIGlmICghZmxhdm91cnMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgZmxhdm91ciBvZiBmbGF2b3Vycykge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBBZGFwdGVyLnRyYW5zZm9ybWVyRm9yKFxuICAgICAgICBmbGF2b3VyXG4gICAgICApIGFzIFJlcXVlc3RUb0NvbnRleHRUcmFuc2Zvcm1lcjxhbnk+O1xuICAgICAgaWYgKCF0cmFuc2Zvcm1lcikgY29udGludWU7XG4gICAgICBjb25zdCBmcm9tID0gYXdhaXQgdHJhbnNmb3JtZXIuZnJvbSh0aGlzLnJlcXVlc3RDb250ZXh0KTtcbiAgICAgIGlmIChmcm9tKSB0aGlzLnJlcXVlc3RDb250ZXh0LmFjY3VtdWxhdGUoZnJvbSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { AuthorizationError } from "@decaf-ts/core";
2
+ import { AuthHandler } from "@decaf-ts/for-http/server";
3
+ /**
4
+ * Simple auth handler that reads a role string from the `Authorization: Bearer <role>` header.
5
+ *
6
+ * Only overrides {@link AuthHandler.extractFromAuth} to return the bearer token as
7
+ * both the user identifier and the single role. The base class `bindToContext`
8
+ * (`ctx.accumulate(data)`) is sufficient — the transformer/adapter is responsible
9
+ * for mapping context fields to adapter-specific keys like `UUID`.
10
+ */
11
+ export class DecafAuthHandler extends AuthHandler {
12
+ parseRequest(req) {
13
+ const userRole = req.headers.authorization?.split(" ")[1];
14
+ return userRole;
15
+ }
16
+ extractFromAuth(ctx) {
17
+ const req = ctx.switchToHttp().getRequest();
18
+ const userRole = this.parseRequest(req);
19
+ if (!userRole)
20
+ throw new AuthorizationError("Unauthenticated");
21
+ return { user: userRole, roles: [userRole] };
22
+ }
23
+ }
24
+ /**
25
+ * Alias for {@link DecafAuthHandler} kept for backward compatibility.
26
+ * The "role" variant previously returned roles from `authorize`; with the base
27
+ * class now orchestrating role checks internally, the two classes are equivalent.
28
+ */
29
+ export class DecafRoleAuthHandler extends DecafAuthHandler {
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZBdXRoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL0RlY2FmQXV0aEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBR2xFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsV0FJckM7SUFDVyxZQUFZLENBQUMsR0FBUTtRQUM3QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFXLENBQUM7UUFDcEUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVTLGVBQWUsQ0FBQyxHQUFxQjtRQUM3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQXV0aEhhbmRsZXIsIEF1dGhEYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcbmltcG9ydCB7IERlY2FmUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiLi4vcmVxdWVzdC9EZWNhZlJlcXVlc3RDb250ZXh0XCI7XG5cbi8qKlxuICogU2ltcGxlIGF1dGggaGFuZGxlciB0aGF0IHJlYWRzIGEgcm9sZSBzdHJpbmcgZnJvbSB0aGUgYEF1dGhvcml6YXRpb246IEJlYXJlciA8cm9sZT5gIGhlYWRlci5cbiAqXG4gKiBPbmx5IG92ZXJyaWRlcyB7QGxpbmsgQXV0aEhhbmRsZXIuZXh0cmFjdEZyb21BdXRofSB0byByZXR1cm4gdGhlIGJlYXJlciB0b2tlbiBhc1xuICogYm90aCB0aGUgdXNlciBpZGVudGlmaWVyIGFuZCB0aGUgc2luZ2xlIHJvbGUuIFRoZSBiYXNlIGNsYXNzIGBiaW5kVG9Db250ZXh0YFxuICogKGBjdHguYWNjdW11bGF0ZShkYXRhKWApIGlzIHN1ZmZpY2llbnQg4oCUIHRoZSB0cmFuc2Zvcm1lci9hZGFwdGVyIGlzIHJlc3BvbnNpYmxlXG4gKiBmb3IgbWFwcGluZyBjb250ZXh0IGZpZWxkcyB0byBhZGFwdGVyLXNwZWNpZmljIGtleXMgbGlrZSBgVVVJRGAuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWNhZkF1dGhIYW5kbGVyIGV4dGVuZHMgQXV0aEhhbmRsZXI8XG4gIEV4ZWN1dGlvbkNvbnRleHQsXG4gIERlY2FmUmVxdWVzdENvbnRleHQsXG4gIEF1dGhEYXRhXG4+IHtcbiAgcHJvdGVjdGVkIHBhcnNlUmVxdWVzdChyZXE6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlclJvbGUgPSByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uPy5zcGxpdChcIiBcIilbMV0gYXMgc3RyaW5nO1xuICAgIHJldHVybiB1c2VyUm9sZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHRyYWN0RnJvbUF1dGgoY3R4OiBFeGVjdXRpb25Db250ZXh0KTogQXV0aERhdGEge1xuICAgIGNvbnN0IHJlcSA9IGN0eC5zd2l0Y2hUb0h0dHAoKS5nZXRSZXF1ZXN0KCk7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLnBhcnNlUmVxdWVzdChyZXEpO1xuICAgIGlmICghdXNlclJvbGUpIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJVbmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgcmV0dXJuIHsgdXNlcjogdXNlclJvbGUsIHJvbGVzOiBbdXNlclJvbGVdIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIERlY2FmQXV0aEhhbmRsZXJ9IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKiBUaGUgXCJyb2xlXCIgdmFyaWFudCBwcmV2aW91c2x5IHJldHVybmVkIHJvbGVzIGZyb20gYGF1dGhvcml6ZWA7IHdpdGggdGhlIGJhc2VcbiAqIGNsYXNzIG5vdyBvcmNoZXN0cmF0aW5nIHJvbGUgY2hlY2tzIGludGVybmFsbHksIHRoZSB0d28gY2xhc3NlcyBhcmUgZXF1aXZhbGVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlY2FmUm9sZUF1dGhIYW5kbGVyIGV4dGVuZHMgRGVjYWZBdXRoSGFuZGxlciB7fVxuIl19
@@ -0,0 +1,48 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var DecafAuthModule_1;
8
+ import { Module } from "@nestjs/common";
9
+ import { APP_INTERCEPTOR } from "@nestjs/core";
10
+ import { AuthInterceptor } from "./AuthInterceptor.js";
11
+ import { AUTH_HANDLER } from "./constants.js";
12
+ import { DecafRequestHandlerInterceptor } from "./../interceptors/DecafRequestHandlerInterceptor.js";
13
+ let DecafAuthModule = DecafAuthModule_1 = class DecafAuthModule {
14
+ static forRoot(options = {}) {
15
+ const providers = [
16
+ AuthInterceptor,
17
+ DecafRequestHandlerInterceptor,
18
+ {
19
+ provide: APP_INTERCEPTOR,
20
+ useClass: DecafRequestHandlerInterceptor,
21
+ },
22
+ ];
23
+ if (options.handler) {
24
+ providers.push(options.handler);
25
+ providers.push({
26
+ provide: AUTH_HANDLER,
27
+ useClass: options.handler,
28
+ });
29
+ }
30
+ if (options.global) {
31
+ providers.push({
32
+ provide: APP_INTERCEPTOR,
33
+ useExisting: AuthInterceptor,
34
+ });
35
+ }
36
+ return {
37
+ module: DecafAuthModule_1,
38
+ global: options.global ?? false,
39
+ providers,
40
+ exports: [AuthInterceptor, AUTH_HANDLER],
41
+ };
42
+ }
43
+ };
44
+ DecafAuthModule = DecafAuthModule_1 = __decorate([
45
+ Module({})
46
+ ], DecafAuthModule);
47
+ export { DecafAuthModule };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZBdXRoTW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvRGVjYWZBdXRoTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQWlCLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBMEI7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBb0I7QUFDM0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLDREQUF1RDtBQVN6RixJQUFNLGVBQWUsdUJBQXJCLE1BQU0sZUFBZTtJQUMxQixNQUFNLENBQUMsT0FBTyxDQUNaLFVBQWtDLEVBQUU7UUFFcEMsTUFBTSxTQUFTLEdBQStCO1lBQzVDLGVBQWU7WUFDZiw4QkFBOEI7WUFDOUI7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFFBQVEsRUFBRSw4QkFBOEI7YUFDekM7U0FDRixDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixPQUFPLEVBQUUsWUFBWTtnQkFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQzFCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixTQUFtQixDQUFDLElBQUksQ0FBQztnQkFDeEIsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFdBQVcsRUFBRSxlQUFlO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLGlCQUFlO1lBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDL0IsU0FBUztZQUNULE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7U0FDekMsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBbkNZLGVBQWU7SUFEM0IsTUFBTSxDQUFDLEVBQUUsQ0FBQztHQUNFLGVBQWUsQ0FtQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY01vZHVsZSwgTW9kdWxlLCBUeXBlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBBUFBfSU5URVJDRVBUT1IgfSBmcm9tIFwiQG5lc3Rqcy9jb3JlXCI7XG5cbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gXCIuL0F1dGhJbnRlcmNlcHRvclwiO1xuaW1wb3J0IHsgQVVUSF9IQU5ETEVSIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IgfSBmcm9tIFwiLi4vaW50ZXJjZXB0b3JzL0RlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvclwiO1xuaW1wb3J0IHsgQXV0aEhhbmRsZXIgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgRGVjYWZBdXRoTW9kdWxlT3B0aW9ucyA9IHtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgaGFuZGxlcj86IFR5cGU8QXV0aEhhbmRsZXI+O1xufTtcblxuQE1vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBEZWNhZkF1dGhNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBvcHRpb25zOiBEZWNhZkF1dGhNb2R1bGVPcHRpb25zID0ge31cbiAgKTogRHluYW1pY01vZHVsZSB7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBEeW5hbWljTW9kdWxlW1wicHJvdmlkZXJzXCJdID0gW1xuICAgICAgQXV0aEludGVyY2VwdG9yLFxuICAgICAgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBBUFBfSU5URVJDRVBUT1IsXG4gICAgICAgIHVzZUNsYXNzOiBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBpZiAob3B0aW9ucy5oYW5kbGVyKSB7XG4gICAgICBwcm92aWRlcnMucHVzaChvcHRpb25zLmhhbmRsZXIpO1xuICAgICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgICBwcm92aWRlOiBBVVRIX0hBTkRMRVIsXG4gICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLmhhbmRsZXIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICAgIChwcm92aWRlcnMgYXMgYW55W10pLnB1c2goe1xuICAgICAgICBwcm92aWRlOiBBUFBfSU5URVJDRVBUT1IsXG4gICAgICAgIHVzZUV4aXN0aW5nOiBBdXRoSW50ZXJjZXB0b3IsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZkF1dGhNb2R1bGUsXG4gICAgICBnbG9iYWw6IG9wdGlvbnMuZ2xvYmFsID8/IGZhbHNlLFxuICAgICAgcHJvdmlkZXJzLFxuICAgICAgZXhwb3J0czogW0F1dGhJbnRlcmNlcHRvciwgQVVUSF9IQU5ETEVSXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export const AUTH_HANDLER = Symbol("AUTH_HANDLER");
2
+ export const AUTH_META_KEY = "auth:meta";
3
+ export const IS_PUBLIC_KEY = "isPublic";
4
+ export const REQUIRED_ROLES_KEY = "requiredRoles";
5
+ export const SKIP_MODEL_ROLES_KEY = "skipModelRoles";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBVVRIX0hBTkRMRVIgPSBTeW1ib2woXCJBVVRIX0hBTkRMRVJcIik7XG5leHBvcnQgY29uc3QgQVVUSF9NRVRBX0tFWSA9IFwiYXV0aDptZXRhXCI7XG5leHBvcnQgY29uc3QgSVNfUFVCTElDX0tFWSA9IFwiaXNQdWJsaWNcIjtcbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9ST0xFU19LRVkgPSBcInJlcXVpcmVkUm9sZXNcIjtcbmV4cG9ydCBjb25zdCBTS0lQX01PREVMX1JPTEVTX0tFWSA9IFwic2tpcE1vZGVsUm9sZXNcIjtcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { applyDecorators, SetMetadata, UseInterceptors } from "@nestjs/common";
2
+ import { ApiBearerAuth, ApiSecurity } from "@nestjs/swagger";
3
+ import { AUTH_META_KEY, IS_PUBLIC_KEY, REQUIRED_ROLES_KEY } from "./constants.js";
4
+ import { AuthInterceptor } from "./AuthInterceptor.js";
5
+ export function Auth(model) {
6
+ const resource = model
7
+ ? typeof model === "string"
8
+ ? model
9
+ : model.name
10
+ : undefined;
11
+ const decs = [ApiBearerAuth(), UseInterceptors(AuthInterceptor)];
12
+ if (resource)
13
+ decs.push(SetMetadata(AUTH_META_KEY, resource));
14
+ return applyDecorators(...decs);
15
+ }
16
+ export function Public() {
17
+ return applyDecorators(SetMetadata(IS_PUBLIC_KEY, true));
18
+ }
19
+ export function RequireRoles(...roles) {
20
+ return applyDecorators(ApiSecurity("bearer"), SetMetadata(REQUIRED_ROLES_KEY, roles), UseInterceptors(AuthInterceptor));
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx1QkFBb0I7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBMEI7QUFFcEQsTUFBTSxVQUFVLElBQUksQ0FBQyxLQUE0QjtJQUMvQyxNQUFNLFFBQVEsR0FBRyxLQUFLO1FBQ3BCLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQ2QsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNkLE1BQU0sSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDakUsSUFBSSxRQUFRO1FBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUQsT0FBTyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQUcsS0FBZTtJQUM3QyxPQUFPLGVBQWUsQ0FDcEIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUNyQixXQUFXLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQ3RDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FDakMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcHBseURlY29yYXRvcnMsIFNldE1ldGFkYXRhLCBVc2VJbnRlcmNlcHRvcnMgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFwaUJlYXJlckF1dGgsIEFwaVNlY3VyaXR5IH0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlclwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuaW1wb3J0IHsgQVVUSF9NRVRBX0tFWSwgSVNfUFVCTElDX0tFWSwgUkVRVUlSRURfUk9MRVNfS0VZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBBdXRoSW50ZXJjZXB0b3IgfSBmcm9tIFwiLi9BdXRoSW50ZXJjZXB0b3JcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIEF1dGgobW9kZWw/OiBzdHJpbmcgfCBDb25zdHJ1Y3Rvcikge1xuICBjb25zdCByZXNvdXJjZSA9IG1vZGVsXG4gICAgPyB0eXBlb2YgbW9kZWwgPT09IFwic3RyaW5nXCJcbiAgICAgID8gbW9kZWxcbiAgICAgIDogbW9kZWwubmFtZVxuICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBkZWNzID0gW0FwaUJlYXJlckF1dGgoKSwgVXNlSW50ZXJjZXB0b3JzKEF1dGhJbnRlcmNlcHRvcildO1xuICBpZiAocmVzb3VyY2UpIGRlY3MucHVzaChTZXRNZXRhZGF0YShBVVRIX01FVEFfS0VZLCByZXNvdXJjZSkpO1xuICByZXR1cm4gYXBwbHlEZWNvcmF0b3JzKC4uLmRlY3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHVibGljKCkge1xuICByZXR1cm4gYXBwbHlEZWNvcmF0b3JzKFNldE1ldGFkYXRhKElTX1BVQkxJQ19LRVksIHRydWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVSb2xlcyguLi5yb2xlczogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGFwcGx5RGVjb3JhdG9ycyhcbiAgICBBcGlTZWN1cml0eShcImJlYXJlclwiKSxcbiAgICBTZXRNZXRhZGF0YShSRVFVSVJFRF9ST0xFU19LRVksIHJvbGVzKSxcbiAgICBVc2VJbnRlcmNlcHRvcnMoQXV0aEludGVyY2VwdG9yKVxuICApO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export * from "./constants.js";
2
+ export * from "./AuthInterceptor.js";
3
+ export * from "./DecafAuthHandler.js";
4
+ export * from "./decorators.js";
5
+ export * from "./DecafAuthModule.js";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBNEI7QUFDNUIscUNBQWtDO0FBQ2xDLHNDQUFtQztBQUNuQyxnQ0FBNkI7QUFDN0IscUNBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9BdXRoSW50ZXJjZXB0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0RlY2FmQXV0aEhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0RlY2FmQXV0aE1vZHVsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEF1dGhIYW5kbGVyIGFzIEF1dGhIYW5kbGVyQmFzZSxcbiAgQXV0aERhdGEsXG4gIFVzZXJEYXRhLFxuICBBdXRoUmVxdWVzdExpa2UsXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import nest from "./../cli-module.js";
2
2
  nest().parse(process.argv);
3
- //# sourceMappingURL=cli.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLDJCQUFzQjtBQUVqQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5lc3QgZnJvbSBcIi4uL2NsaS1tb2R1bGVcIjtcblxubmVzdCgpLnBhcnNlKHByb2Nlc3MuYXJndik7XG4iXX0=