taon 18.0.20 → 18.0.21

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 (298) hide show
  1. package/README.md +114 -118
  2. package/assets/shared/logo-header-admin-mode.png +0 -0
  3. package/assets/shared/shared_folder_info.txt +1 -1
  4. package/bin/start.js +279 -279
  5. package/bin/taon +6 -6
  6. package/bin/taon-debug +5 -5
  7. package/bin/taon-debug-brk +5 -5
  8. package/browser/README.md +24 -24
  9. package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
  10. package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
  11. package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
  12. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  13. package/browser/esm2022/lib/base-classes/base.mjs +3 -1
  14. package/browser/esm2022/lib/context-db-migrations.mjs +410 -0
  15. package/browser/esm2022/lib/create-context.mjs +17 -4
  16. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  17. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  18. package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  19. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  20. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  21. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  22. package/browser/esm2022/lib/endpoint-context.mjs +83 -49
  23. package/browser/esm2022/lib/index.mjs +4 -1
  24. package/browser/esm2022/lib/inject.mjs +1 -1
  25. package/browser/esm2022/lib/models.mjs +30 -1
  26. package/browser/esm2022/lib/symbols.mjs +2 -1
  27. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  28. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  29. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  30. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  31. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  32. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  33. package/browser/fesm2022/taon.mjs +673 -420
  34. package/browser/fesm2022/taon.mjs.map +1 -1
  35. package/browser/lib/base-classes/base-class.d.ts +1 -1
  36. package/browser/lib/base-classes/base-context.d.ts +3 -0
  37. package/browser/lib/base-classes/base-controller.d.ts +2 -1
  38. package/browser/lib/base-classes/base-migration.d.ts +12 -0
  39. package/browser/lib/base-classes/base.d.ts +5 -0
  40. package/browser/lib/context-db-migrations.d.ts +17 -0
  41. package/browser/lib/create-context.d.ts +4 -1
  42. package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
  43. package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
  44. package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
  45. package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
  46. package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
  47. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  48. package/browser/lib/endpoint-context.d.ts +12 -5
  49. package/browser/lib/index.d.ts +14 -1
  50. package/browser/lib/models.d.ts +44 -19
  51. package/browser/lib/symbols.d.ts +1 -0
  52. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  53. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  54. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  55. package/client/README.md +24 -24
  56. package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
  57. package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
  58. package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
  59. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  60. package/client/esm2022/lib/base-classes/base.mjs +3 -1
  61. package/client/esm2022/lib/context-db-migrations.mjs +410 -0
  62. package/client/esm2022/lib/create-context.mjs +17 -4
  63. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  64. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  65. package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  66. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  67. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  68. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  69. package/client/esm2022/lib/endpoint-context.mjs +83 -49
  70. package/client/esm2022/lib/index.mjs +4 -1
  71. package/client/esm2022/lib/inject.mjs +1 -1
  72. package/client/esm2022/lib/models.mjs +30 -1
  73. package/client/esm2022/lib/symbols.mjs +2 -1
  74. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  75. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  76. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  77. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  78. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  79. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  80. package/client/fesm2022/taon.mjs +673 -420
  81. package/client/fesm2022/taon.mjs.map +1 -1
  82. package/client/lib/base-classes/base-class.d.ts +1 -1
  83. package/client/lib/base-classes/base-context.d.ts +3 -0
  84. package/client/lib/base-classes/base-controller.d.ts +2 -1
  85. package/client/lib/base-classes/base-migration.d.ts +12 -0
  86. package/client/lib/base-classes/base.d.ts +5 -0
  87. package/client/lib/context-db-migrations.d.ts +17 -0
  88. package/client/lib/create-context.d.ts +4 -1
  89. package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
  90. package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
  91. package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
  92. package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
  93. package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
  94. package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  95. package/client/lib/endpoint-context.d.ts +12 -5
  96. package/client/lib/index.d.ts +14 -1
  97. package/client/lib/models.d.ts +44 -19
  98. package/client/lib/symbols.d.ts +1 -0
  99. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  100. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  101. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  102. package/lib/base-classes/base-class.d.ts +1 -1
  103. package/lib/base-classes/base-class.js +1 -1
  104. package/lib/base-classes/base-context.d.ts +3 -0
  105. package/lib/base-classes/base-controller.d.ts +2 -1
  106. package/lib/base-classes/base-controller.js +2 -1
  107. package/lib/base-classes/base-controller.js.map +1 -1
  108. package/lib/base-classes/base-migration.d.ts +11 -0
  109. package/lib/base-classes/base-migration.js +41 -0
  110. package/lib/base-classes/base-migration.js.map +1 -0
  111. package/lib/base-classes/base-repository.js +4 -4
  112. package/lib/base-classes/base-repository.js.map +1 -1
  113. package/lib/base-classes/base-subscriber-for-entity.js +19 -19
  114. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  115. package/lib/base-classes/base.d.ts +5 -0
  116. package/lib/base-classes/base.js +2 -0
  117. package/lib/base-classes/base.js.map +1 -1
  118. package/lib/context-db-migrations.d.ts +16 -0
  119. package/lib/context-db-migrations.js +585 -0
  120. package/lib/context-db-migrations.js.map +1 -0
  121. package/lib/create-context.d.ts +4 -1
  122. package/lib/create-context.js +30 -21
  123. package/lib/create-context.js.map +1 -1
  124. package/lib/decorators/classes/controller-decorator.d.ts +3 -0
  125. package/lib/decorators/classes/controller-decorator.js +3 -0
  126. package/lib/decorators/classes/controller-decorator.js.map +1 -1
  127. package/lib/decorators/classes/entity-decorator.d.ts +3 -0
  128. package/lib/decorators/classes/entity-decorator.js +3 -0
  129. package/lib/decorators/classes/entity-decorator.js.map +1 -1
  130. package/lib/decorators/classes/migration-decorator.d.ts +7 -0
  131. package/lib/decorators/classes/migration-decorator.js +27 -0
  132. package/lib/decorators/classes/migration-decorator.js.map +1 -0
  133. package/lib/decorators/classes/provider-decorator.d.ts +3 -0
  134. package/lib/decorators/classes/provider-decorator.js +3 -0
  135. package/lib/decorators/classes/provider-decorator.js.map +1 -1
  136. package/lib/decorators/classes/repository-decorator.d.ts +3 -0
  137. package/lib/decorators/classes/repository-decorator.js +3 -0
  138. package/lib/decorators/classes/repository-decorator.js.map +1 -1
  139. package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  140. package/lib/decorators/classes/subscriber-decorator.js +4 -1
  141. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  142. package/lib/endpoint-context.d.ts +12 -5
  143. package/lib/endpoint-context.js +234 -189
  144. package/lib/endpoint-context.js.map +1 -1
  145. package/lib/index.d.ts +14 -1
  146. package/lib/index.js +5 -1
  147. package/lib/index.js.map +1 -1
  148. package/lib/inject.js +0 -2
  149. package/lib/inject.js.map +1 -1
  150. package/lib/models.d.ts +44 -19
  151. package/lib/models.js +45 -0
  152. package/lib/models.js.map +1 -1
  153. package/lib/symbols.d.ts +1 -0
  154. package/lib/symbols.js +1 -0
  155. package/lib/symbols.js.map +1 -1
  156. package/lib/ui/directives/index.js +2 -2
  157. package/lib/ui/index.js +2 -2
  158. package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  159. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  160. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
  161. package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
  162. package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
  163. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
  164. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  165. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  166. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  167. package/lib/ui/taon-progress-bar/index.js +2 -2
  168. package/lib/ui/taon-session-passcode/index.js +2 -2
  169. package/lib/ui/taon-table/index.js +2 -2
  170. package/migrations/index.d.ts +1 -0
  171. package/migrations/index.js +6 -0
  172. package/migrations/index.js.map +1 -0
  173. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  174. package/migrations/migrations_index._auto-generated_.js +4 -0
  175. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  176. package/package.json +7 -7
  177. package/taon.jsonc +47 -47
  178. package/tmp-environment.json +32 -29
  179. package/websql/README.md +24 -24
  180. package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
  181. package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
  182. package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
  183. package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
  184. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  185. package/websql/esm2022/lib/base-classes/base.mjs +3 -1
  186. package/websql/esm2022/lib/context-db-migrations.mjs +269 -0
  187. package/websql/esm2022/lib/create-context.mjs +17 -4
  188. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  189. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  190. package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  191. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  192. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  193. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  194. package/websql/esm2022/lib/endpoint-context.mjs +117 -85
  195. package/websql/esm2022/lib/index.mjs +4 -1
  196. package/websql/esm2022/lib/inject.mjs +1 -1
  197. package/websql/esm2022/lib/models.mjs +28 -1
  198. package/websql/esm2022/lib/symbols.mjs +2 -1
  199. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  200. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  201. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  202. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  203. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  204. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  205. package/websql/fesm2022/taon.mjs +564 -460
  206. package/websql/fesm2022/taon.mjs.map +1 -1
  207. package/websql/lib/base-classes/base-class.d.ts +1 -1
  208. package/websql/lib/base-classes/base-context.d.ts +3 -0
  209. package/websql/lib/base-classes/base-controller.d.ts +2 -1
  210. package/websql/lib/base-classes/base-migration.d.ts +12 -0
  211. package/websql/lib/base-classes/base.d.ts +5 -0
  212. package/websql/lib/context-db-migrations.d.ts +17 -0
  213. package/websql/lib/create-context.d.ts +4 -1
  214. package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
  215. package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
  216. package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
  217. package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
  218. package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
  219. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  220. package/websql/lib/endpoint-context.d.ts +12 -5
  221. package/websql/lib/index.d.ts +14 -1
  222. package/websql/lib/models.d.ts +44 -19
  223. package/websql/lib/symbols.d.ts +1 -0
  224. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  225. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  226. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  227. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  228. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  229. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  230. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  231. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  232. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  233. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  234. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  235. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  236. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  237. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  238. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  239. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  240. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  241. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  242. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  243. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  244. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  245. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  246. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  247. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  248. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  249. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  250. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  251. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  252. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  253. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  254. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  255. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  256. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  257. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  258. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  259. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  260. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  261. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  262. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  263. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
  264. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
  265. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
  266. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
  267. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
  268. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
  269. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
  270. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
  271. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
  272. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
  273. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
  274. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
  275. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
  276. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
  277. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
  278. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
  279. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
  280. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  281. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  282. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  283. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  284. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  285. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  286. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  287. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  288. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  289. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  290. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  291. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  292. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  293. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  294. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  295. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  296. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  297. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  298. /package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.d.ts → taon-admin.models.d.ts} +0 -0
@@ -15,20 +15,20 @@ let BaseRepository = class BaseRepository extends BaseInjector {
15
15
  }
16
16
  get dbQuery() {
17
17
  if (!this.__dbQuery) {
18
- if (!this.__endpoint_context__) {
18
+ if (!this.ctx) {
19
19
  return; // TODO
20
20
  throw new Error(`[BaseRepository] Context not inited for class ${ClassHelpers.getName(this)}`);
21
21
  }
22
- const connection = this.__endpoint_context__?.connection;
22
+ const connection = this.ctx?.connection;
23
23
  if (!connection) {
24
- throw new Error(`[BaseRepository] Database not inited for context ${this.__endpoint_context__?.contextName}`);
24
+ throw new Error(`[BaseRepository] Database not inited for context ${this.ctx?.contextName}`);
25
25
  }
26
26
  this.__dbQuery = new MySqlQuerySource(connection);
27
27
  }
28
28
  return this.__dbQuery;
29
29
  }
30
30
  get connection() {
31
- return this.__endpoint_context__?.connection;
31
+ return this.ctx?.connection;
32
32
  }
33
33
  get repository() {
34
34
  return this.__repository;
@@ -428,4 +428,4 @@ BaseRepository = __decorate([
428
428
  export { BaseRepository };
429
429
  ;
430
430
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLXJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQTBCQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUdqQyxJQUFlLGNBQWMsR0FBN0IsTUFBZSxjQUVwQixTQUFRLFlBQVk7SUFRcEIsWUFFVSxzQkFBaUM7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFGQSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVc7UUFHekMsYUFBYTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztJQUNyRCxDQUFDO0lBTUQsSUFBVyxPQUFPO1FBRWhCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsT0FBTztnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxZQUFZLENBQUMsT0FBTyxDQUNuRSxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQztZQUN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FDN0YsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUV4QixDQUFDO0lBSUQsSUFBVyxVQUFVO1FBRW5CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQztJQUUvQyxDQUFDO0lBT0QsSUFBYyxVQUFVO1FBRXRCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUUzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFFZixPQUFPLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBYSxDQUFDO0lBRXpDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsSUFBSTtRQUVoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFFekIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBRXpCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFFN0IsQ0FBQztJQU1ELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBYTtRQUV4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksYUFBYSxHQUFRLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUNWLDRDQUE0QyxZQUFZLENBQUMsT0FBTyxDQUM5RCxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFvQixJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDOzsyQ0FFcUIsR0FBRyxDQUFDLFdBQVc7Ozs7Ozs7Ozs7O1NBV2pELENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDVix5Q0FBeUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN0RSxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUNqRCxZQUFZLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUM1QyxDQUFRLENBQUM7SUFPWixDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBYztRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQVksRUFDWixPQUVDO1FBR0QsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQVksQ0FBQztRQUU1QixLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQVM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsSUFBWSxFQUNaLE9BRUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWUsRUFDZixPQUVDO1FBR0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFFaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsS0FBZSxFQUNmLE9BRUM7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFpQkQ7OztPQUdHO0lBd0NIOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQXVCLEVBQUUsR0FBRyxXQUFxQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFJRDs7Ozs7Ozs7T0FRRztJQUNILE9BQU8sQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFLRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBb0M7UUFFL0MsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0IsVUFBVSxHQUFJLFVBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQVM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE9BQU8sYUFBYSxDQUFDO0lBRXZCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBb0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBbUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxLQUFLLENBQUMsVUFBVSxDQUNkLGFBQTJDO1FBRzNDLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsRUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUQsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUVoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFpQztRQUNoRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQWdFRDs7T0FFRztJQUNILFVBQVUsQ0FDUixNQUFTLEVBQ1QsT0FBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQTZCRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxNQUFTLEVBQ1QsT0FBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUNKLE1BQXlFO1FBRXpFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUlELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUV2QixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBVyxDQUFDO1FBQzNCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFtQixFQUFFLElBQVk7UUFFaEQsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUNFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUTtnQkFDN0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUNoRSxFQUNELENBQUM7Z0JBQ0Qsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFXLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUd4QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNwQjtvQkFDRSxFQUFFO2lCQUNJLEVBQ1I7b0JBQ0UsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO2lCQUNOLENBQ1QsQ0FBQztZQU1KLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQVM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFlO1FBRTlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBVyxDQUFDLENBQUMsT0FBTztZQUNuQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBOEJEOzs7O09BSUc7SUFDSCxNQUFNLENBQ0osZ0JBRW9DLEVBQ3BDLHNCQUF3RDtRQUV4RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUNSLFFBUzRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUNMLFFBUzRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFpQztRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxPQUFPLENBQ0wsS0FBNEQ7UUFFNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsT0FBaUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxNQUFNLENBQ0osS0FBNEQ7UUFFNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBZUQsRUFBRTtJQUNGOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsT0FBaUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FDWixLQUE0RDtRQUU1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFJRDs7Ozs7Ozs7O09BU0c7SUFDSCxTQUFTLENBQUMsR0FBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsT0FBK0I7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUNQLEtBQTREO1FBRTVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUlEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FDVCxFQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFJRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsT0FBK0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUNiLEtBQTREO1FBRTVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFhLEVBQUUsVUFBa0I7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBSUQ7O09BRUc7SUFDSCxTQUFTLENBQ1AsVUFBb0MsRUFDcEMsWUFBb0IsRUFDcEIsS0FBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFJRDs7T0FFRztJQUNILFNBQVMsQ0FDUCxVQUFvQyxFQUNwQyxZQUFvQixFQUNwQixLQUFzQjtRQUV0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFPVixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBR3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFFaEMsQ0FBQztJQUlELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBbUI7UUFFN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBUztTQUNyQixDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUVmLENBQUM7Q0FFRixDQUFBO0FBdjNCcUIsY0FBYztJQURuQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzs7R0FDMUIsY0FBYyxDQXUzQm5DOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHR5cGUge1xuICBEYXRhU291cmNlLFxuICBEZWVwUGFydGlhbCxcbiAgRGVsZXRlUmVzdWx0LFxuICBGaW5kTWFueU9wdGlvbnMsXG4gIEZpbmRPbmVPcHRpb25zLFxuICBGaW5kT3B0aW9uc1doZXJlLFxuICBJbnNlcnRSZXN1bHQsXG5cbiAgUmVtb3ZlT3B0aW9ucyxcbiAgUmVwb3NpdG9yeSxcbiAgU2F2ZU9wdGlvbnMsXG4gIFVwZGF0ZVJlc3VsdCxcbn0gZnJvbSAndGFvbi10eXBlb3JtJztcblxuaW1wb3J0IHR5cGUgeyBRdWVyeURlZXBQYXJ0aWFsRW50aXR5IH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3F1ZXJ5LWJ1aWxkZXIvUXVlcnlQYXJ0aWFsRW50aXR5JztcblxuaW1wb3J0IHR5cGUgeyBVcHNlcnRPcHRpb25zIH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3JlcG9zaXRvcnkvVXBzZXJ0T3B0aW9ucyc7XG5cblxuXG5pbXBvcnQgdHlwZSB7IERhdGFTb3VyY2UgYXMgRGF0YVNvdXJjZVR5cGUgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcbmltcG9ydCB7IEVuZHBvaW50Q29udGV4dCB9IGZyb20gJy4uL2VuZHBvaW50LWNvbnRleHQnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4uL2hlbHBlcnMvY2xhc3MtaGVscGVycyc7XG5pbXBvcnQgeyBNeVNxbFF1ZXJ5U291cmNlIH0gZnJvbSAndGFvbi10eXBlLXNxbC93ZWJzcWwnO1xuaW1wb3J0IHsgVGFvblJlcG9zaXRvcnkgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvcmVwb3NpdG9yeS1kZWNvcmF0b3InO1xuaW1wb3J0IHsgQmFzZUluamVjdG9yIH0gZnJvbSAnLi9iYXNlLWluamVjdG9yJztcblxuXG5jb25zdCBJTkRFWF9LRVlTX05PX0ZPUl9VUERBVEUgPSBbJ2lkJ107XG5cbkBUYW9uUmVwb3NpdG9yeSh7IGNsYXNzTmFtZTogJ0Jhc2VSZXBvc2l0b3J5JyB9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXBvc2l0b3J5PFxuICBFbnRpdHkgZXh0ZW5kcyB7IGlkPzogYW55IH0sXG4+IGV4dGVuZHMgQmFzZUluamVjdG9yIHtcblxuXG5cblxuXG5cbiAgYWJzdHJhY3QgZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueTtcbiAgY29uc3RydWN0b3IoXG5cbiAgICBwcml2YXRlIF9fZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5lbnRpdHlDbGFzc1Jlc29sdmVGbiA9IF9fZW50aXR5Q2xhc3NSZXNvbHZlRm47XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBfX2RiUXVlcnk6IE15U3FsUXVlcnlTb3VyY2U7XG5cbiAgcHVibGljIGdldCBkYlF1ZXJ5KCk6IE15U3FsUXVlcnlTb3VyY2Uge1xuXG4gICAgaWYgKCF0aGlzLl9fZGJRdWVyeSkge1xuICAgICAgaWYgKCF0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fKSB7XG4gICAgICAgIHJldHVybjsgLy8gVE9ET1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtCYXNlUmVwb3NpdG9yeV0gQ29udGV4dCBub3QgaW5pdGVkIGZvciBjbGFzcyAke0NsYXNzSGVscGVycy5nZXROYW1lKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXz8uY29ubmVjdGlvbjtcbiAgICAgIGlmICghY29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtCYXNlUmVwb3NpdG9yeV0gRGF0YWJhc2Ugbm90IGluaXRlZCBmb3IgY29udGV4dCAke3RoaXMuX19lbmRwb2ludF9jb250ZXh0X18/LmNvbnRleHROYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9fZGJRdWVyeSA9IG5ldyBNeVNxbFF1ZXJ5U291cmNlKGNvbm5lY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fX2RiUXVlcnk7XG5cbiAgfVxuXG5cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKTogRGF0YVNvdXJjZVR5cGUge1xuXG4gICAgcmV0dXJuIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18/LmNvbm5lY3Rpb247XG5cbiAgfVxuXG5cblxuXG4gIHByaXZhdGUgX19yZXBvc2l0b3J5OiBSZXBvc2l0b3J5PEVudGl0eT47XG5cbiAgcHJvdGVjdGVkIGdldCByZXBvc2l0b3J5KCkge1xuXG4gICAgcmV0dXJuIHRoaXMuX19yZXBvc2l0b3J5O1xuXG4gIH1cblxuICAvKipcbiAgICogdGFyZ2V0IGZvciByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgZ2V0IHRhcmdldCgpOiBGdW5jdGlvbiB7XG5cbiAgICByZXR1cm4gdGhpcz8ucmVwb3NpdG9yeT8udGFyZ2V0IGFzIGFueTtcblxuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHJlcG9zaXRvcnlcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgcmVwbygpIHtcblxuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnk7XG5cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeUV4aXN0cygpOiBib29sZWFuIHtcblxuICAgIHJldHVybiAhIXRoaXMuX19yZXBvc2l0b3J5O1xuXG4gIH1cblxuXG5cblxuXG4gIGFzeW5jIF9faW5pdChjb250ZXh0PzogYW55KSB7XG5cbiAgICBpZiAodGhpcy5fX3JlcG9zaXRvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGVudGl0eUNsYXNzRm46IGFueSA9IHRoaXMuZW50aXR5Q2xhc3NSZXNvbHZlRm4oKTtcbiAgICBpZiAoIWVudGl0eUNsYXNzRm4pIHtcbiAgICAgIEhlbHBlcnMud2FybihcbiAgICAgICAgYEVudGl0eSBjbGFzcyBub3QgcHJvdmlkZWQgZm9yIHJlcG9zaXRvcnkgJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdHg6IEVuZHBvaW50Q29udGV4dCA9IHRoaXMuX19lbmRwb2ludF9jb250ZXh0X187XG4gICAgaWYgKGN0eC5yZW1vdGVIb3N0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjdHguY29ubmVjdGlvbjtcblxuICAgIGlmICghY29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcblxuICAgICAgICBDb25uZWN0aW9uIG5vdCBmb3VuZCBmb3IgY29udGV4dCAke2N0eC5jb250ZXh0TmFtZX1cblxuXG4gICAgICAgIE1heWJlIHlvdSBmb3Jnb3QgdG8gaW5pdCBkYXRhYmFzZSA/XG5cbiAgICAgICAgVGFvbi5jcmVhdGVDb250ZXh0KHtcbiAgICAgICAgLi4uXG4gICAgICAgIGRhdGFiYXNlOnRydWVcbiAgICAgICAgLi4uXG4gICAgICAgIH0pXG5cbiAgICAgICAgYCk7XG4gICAgfVxuXG4gICAgaWYgKCFlbnRpdHlDbGFzc0ZuKSB7XG4gICAgICBIZWxwZXJzLndhcm4oXG4gICAgICAgIGBFbnRpdHkgY2xhc3Mgbm90IGZvdW5kIGZvciByZXBvc2l0b3J5ICR7Q2xhc3NIZWxwZXJzLmdldE5hbWUodGhpcyl9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fX3JlcG9zaXRvcnkgPSAoYXdhaXQgY29ubmVjdGlvbi5nZXRSZXBvc2l0b3J5KFxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE9yZ2luYWxDbGFzcyhlbnRpdHlDbGFzc0ZuKSxcbiAgICApKSBhcyBhbnk7XG5cblxuXG5cblxuXG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBlbnRpdHkgaGFzIGFuIGlkLlxuICAgKiBJZiBlbnRpdHkgY29tcG9zaXRlIGNvbXBvc2UgaWRzLCBpdCB3aWxsIGNoZWNrIHRoZW0gYWxsLlxuICAgKi9cbiAgaGFzSWQoZW50aXR5OiBFbnRpdHkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmhhc0lkKGVudGl0eSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEdldHMgZW50aXR5IG1peGVkIGlkLlxuICAgKi9cbiAgZ2V0SWQoZW50aXR5OiBFbnRpdHkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0SWQoZW50aXR5KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICBTYXZlcyBhIGdpdmVuIGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAqIElmIGVudGl0eSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICovXG4gIGFzeW5jIHNhdmUoXG4gICAgaXRlbTogRW50aXR5LFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHk+IHtcblxuICAgIGxldCBtb2RlbCA9IGF3YWl0IHRoaXMucmVwby5jcmVhdGUoaXRlbSk7XG5cbiAgICBtb2RlbCA9IGF3YWl0IHRoaXMucmVwby5zYXZlKG1vZGVsLCBvcHRpb25zKTtcbiAgICBjb25zdCB7IGlkIH0gPSBtb2RlbCBhcyBhbnk7XG5cbiAgICBtb2RlbCA9IGF3YWl0IHRoaXMucmVwby5maW5kT25lKHtcbiAgICAgIHdoZXJlOiB7IGlkIH0gYXMgYW55LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuXG4gIH1cblxuICAvKipcbiAgICogYWxpYXMgdG8gc2F2ZVxuICAgKiAtPiBpdCB3aWxsIGFjdHVhbGwgY3JlYXRlIG5ldyBlbnRpdHkgaW4gZGJcbiAgICogaW4gb3Bvc2l0ZSB0byB0eXBlb3JtIGNyZWF0ZSBtZXRob2RcbiAgICovXG4gIGFzeW5jIGNyZWF0ZShcbiAgICBpdGVtOiBFbnRpdHksXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnNhdmUoaXRlbSwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBidWxrU2F2ZShcbiAgICBpdGVtczogRW50aXR5W10sXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG5cbiAgICBjb25zdCBtb2RlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xuXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMuc2F2ZShpdGVtLCBvcHRpb25zKTtcbiAgICAgIG1vZGVscy5wdXNoKG1vZGVsKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVscztcblxuICB9XG5cbiAgYXN5bmMgYnVsa0NyZWF0ZShcbiAgICBpdGVtczogRW50aXR5W10sXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa1NhdmUoaXRlbXMsIG9wdGlvbnMpO1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIFNhdmVzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAqIElmIGVudGl0aWVzIGRvIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICovXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbXVsdGlwbGUgZW50aXRpZXMgKG9yIGVudGl0eS1saWtlIG9iamVjdHMpIGludG8gYSBnaXZlbiBlbnRpdHkuXG4gICAqL1xuICBtZXJnZShtZXJnZUludG9FbnRpdHk6IEVudGl0eSwgLi4uZW50aXR5TGlrZXM6IEVudGl0eVtdKTogRW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLm1lcmdlKG1lcmdlSW50b0VudGl0eSwgLi4uZW50aXR5TGlrZXMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBmcm9tIHRoZSBnaXZlbiBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdC4gSWYgZW50aXR5IGFscmVhZHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLCB0aGVuXG4gICAqIGl0IGxvYWRzIGl0IChhbmQgZXZlcnl0aGluZyByZWxhdGVkIHRvIGl0KSwgcmVwbGFjZXMgYWxsIHZhbHVlcyB3aXRoIHRoZSBuZXcgb25lcyBmcm9tIHRoZSBnaXZlbiBvYmplY3RcbiAgICogYW5kIHJldHVybnMgdGhpcyBuZXcgZW50aXR5LiBUaGlzIG5ldyBlbnRpdHkgaXMgYWN0dWFsbHkgYSBsb2FkZWQgZnJvbSB0aGUgZGIgZW50aXR5IHdpdGggYWxsIHByb3BlcnRpZXNcbiAgICogcmVwbGFjZWQgZnJvbSB0aGUgbmV3IG9iamVjdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGdpdmVuIGVudGl0eS1saWtlIG9iamVjdCBtdXN0IGhhdmUgYW4gZW50aXR5IGlkIC8gcHJpbWFyeSBrZXkgdG8gZmluZCBlbnRpdHkgYnkuXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIGVudGl0eSB3aXRoIGdpdmVuIGlkIHdhcyBub3QgZm91bmQuXG4gICAqL1xuICBwcmVsb2FkKGVudGl0eUxpa2U6IEVudGl0eSk6IFByb21pc2U8RW50aXR5IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5wcmVsb2FkKGVudGl0eUxpa2UpO1xuICB9XG5cblxuXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBlbnRpdGllcyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIGFzeW5jIHJlbW92ZShpZE9yRW50aXR5OiBudW1iZXIgfCBzdHJpbmcgfCBFbnRpdHkpOiBQcm9taXNlPEVudGl0eT4ge1xuXG4gICAgaWYgKF8uaXNPYmplY3QoaWRPckVudGl0eSkpIHtcbiAgICAgIGlkT3JFbnRpdHkgPSAoaWRPckVudGl0eSBhcyBFbnRpdHkpLmlkO1xuICAgIH1cbiAgICBjb25zdCBkZWxldGVkRW50aXR5ID0gYXdhaXQgdGhpcy5yZXBvLmZpbmRPbmUoe1xuICAgICAgd2hlcmU6IHsgaWQ6IGlkT3JFbnRpdHkgfSBhcyBhbnksXG4gICAgfSk7XG5cbiAgICBjb25zdCBpZENvcHkgPSBkZWxldGVkRW50aXR5LmlkO1xuICAgIGF3YWl0IHRoaXMucmVwby5yZW1vdmUoZGVsZXRlZEVudGl0eSk7XG5cbiAgICBkZWxldGVkRW50aXR5LmlkID0gaWRDb3B5O1xuICAgIHJldHVybiBkZWxldGVkRW50aXR5O1xuXG4gIH1cblxuICAvKipcbiAgICogYWxpYXMgdG8gcmVtb3ZlXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWRPckVudGl0eTogbnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmUoaWRPckVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogYWxpYXMgdG8gcmVtb3ZlQnlJZFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQnlJZChpZDogbnVtYmVyIHwgc3RyaW5nKTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmUoaWQpO1xuICB9XG4gIGFzeW5jIGJ1bGtSZW1vdmUoXG4gICAgaWRzT3JFbnRpdGllczogKG51bWJlciB8IHN0cmluZyB8IEVudGl0eSlbXSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuXG4gICAgaWRzT3JFbnRpdGllcyA9IGlkc09yRW50aXRpZXMubWFwKGlkID0+IHtcbiAgICAgIHJldHVybiBfLmlzT2JqZWN0KGlkKSA/IChpZCBhcyBFbnRpdHkpLmlkIDogaWQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb2RlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaWRzT3JFbnRpdGllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGlkID0gaWRzT3JFbnRpdGllc1tpbmRleF07XG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMucmVtb3ZlKGlkKTtcbiAgICAgIG1vZGVscy5wdXNoKG1vZGVsKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVscztcblxuICB9XG5cbiAgYXN5bmMgYnVsa0RlbGV0ZShpZHM6IChudW1iZXIgfCBzdHJpbmcgfCBFbnRpdHkpW10pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa1JlbW92ZShpZHMpO1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgKi9cbiAgc29mdFJlbW92ZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFRbXT47XG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhbGwgZ2l2ZW4gZW50aXRpZXMuXG4gICAqL1xuICBzb2Z0UmVtb3ZlPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0aWVzOiBUW10sXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICApOiBQcm9taXNlPChUICYgRW50aXR5KVtdPjtcbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGEgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgc29mdFJlbW92ZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdHk6IFQsXG4gICAgb3B0aW9uczogU2F2ZU9wdGlvbnMgJiB7XG4gICAgICByZWxvYWQ6IGZhbHNlO1xuICAgIH0sXG4gICk6IFByb21pc2U8VD47XG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhIGdpdmVuIGVudGl0eS5cbiAgICovXG4gIHNvZnRSZW1vdmU8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxUICYgRW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zb2Z0UmVtb3ZlKGVudGl0eSwgb3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFJlY292ZXJzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICByZWNvdmVyPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0aWVzOiBUW10sXG4gICAgb3B0aW9uczogU2F2ZU9wdGlvbnMgJiB7XG4gICAgICByZWxvYWQ6IGZhbHNlO1xuICAgIH0sXG4gICk6IFByb21pc2U8VFtdPjtcbiAgLyoqXG4gICAqIFJlY292ZXJzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICByZWNvdmVyPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0aWVzOiBUW10sXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICApOiBQcm9taXNlPChUICYgRW50aXR5KVtdPjtcbiAgLyoqXG4gICAqIFJlY292ZXJzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHJlY292ZXI8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKipcbiAgICogUmVjb3ZlcnMgYSBnaXZlbiBlbnRpdHkgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVjb3ZlcjxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdHk6IFQsXG4gICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICApOiBQcm9taXNlPFQgJiBFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnJlY292ZXIoZW50aXR5LCBvcHRpb25zKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogSW5zZXJ0cyBhIGdpdmVuIGVudGl0eSBpbnRvIHRoZSBkYXRhYmFzZS5cbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBJTlNFUlQgcXVlcnkuXG4gICAqIERvZXMgbm90IGNoZWNrIGlmIGVudGl0eSBleGlzdCBpbiB0aGUgZGF0YWJhc2UsIHNvIHF1ZXJ5IHdpbGwgZmFpbCBpZiBkdXBsaWNhdGUgZW50aXR5IGlzIGJlaW5nIGluc2VydGVkLlxuICAgKi9cbiAgaW5zZXJ0KFxuICAgIGVudGl0eTogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+IHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8SW5zZXJ0UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5pbnNlcnQoZW50aXR5KTtcbiAgfVxuXG5cblxuICBhc3luYyB1cGRhdGUoaXRlbTogRW50aXR5KSB7XG5cbiAgICBjb25zdCB7IGlkIH0gPSBpdGVtIGFzIGFueTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGVCeUlkKGlkLCBpdGVtKTtcblxuICB9XG5cbiAgYXN5bmMgdXBkYXRlQnlJZChpZDogbnVtYmVyIHwgc3RyaW5nLCBpdGVtOiBFbnRpdHkpIHtcblxuICAgIGNvbnN0IGFsbG93ZWRQcm9wc1RvVXBkYXRlID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaXRlbSkge1xuICAgICAgaWYgKFxuICAgICAgICBfLmlzT2JqZWN0KGl0ZW0pICYmXG4gICAgICAgIGl0ZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICB0eXBlb2YgaXRlbVtrZXldICE9PSAnb2JqZWN0JyAmJlxuICAgICAgICAhXy5pc1VuZGVmaW5lZChcbiAgICAgICAgICB0aGlzLnJlcG8ubWV0YWRhdGEub3duQ29sdW1ucy5maW5kKGMgPT4gYy5wcm9wZXJ0eU5hbWUgPT09IGtleSksXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBhbGxvd2VkUHJvcHNUb1VwZGF0ZS5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxvd2VkUHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSBhbGxvd2VkUHJvcHNUb1VwZGF0ZVtpXTtcbiAgICAgIGlmICghSU5ERVhfS0VZU19OT19GT1JfVVBEQVRFLmluY2x1ZGVzKGtleS50b0xvd2VyQ2FzZSgpKSkge1xuXG4gICAgICAgIGNvbnN0IHRvU2V0ID0gaXRlbVtrZXldO1xuXG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXBvLnVwZGF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBba2V5XTogdG9TZXQsXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICk7XG5cblxuXG5cblxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBpZCB9IGFzIGFueSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RlbDtcblxuICB9XG4gIGFzeW5jIGJ1bGtVcGRhdGUoaXRlbXM6IEVudGl0eVtdKSB7XG5cbiAgICBjb25zdCBtb2RlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgY29uc3QgeyBpZCB9ID0gaXRlbSBhcyBhbnk7IC8vIFRPT0RcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy51cGRhdGVCeUlkKGlkLCBpdGVtKTtcbiAgICAgIG1vZGVscy5wdXNoKG1vZGVsKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgbW9kZWxzIH07XG5cbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIEluc2VydHMgYSBnaXZlbiBlbnRpdHkgaW50byB0aGUgZGF0YWJhc2UsIHVubGVzcyBhIHVuaXF1ZSBjb25zdHJhaW50IGNvbmZsaWN0cyB0aGVuIHVwZGF0ZXMgdGhlIGVudGl0eVxuICAgKiBVbmxpa2Ugc2F2ZSBtZXRob2QgZXhlY3V0ZXMgYSBwcmltaXRpdmUgb3BlcmF0aW9uIHdpdGhvdXQgY2FzY2FkZXMsIHJlbGF0aW9ucyBhbmQgb3RoZXIgb3BlcmF0aW9ucyBpbmNsdWRlZC5cbiAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IElOU0VSVCAuLi4gT04gQ09ORkxJQ1QgRE8gVVBEQVRFL09OIERVUExJQ0FURSBLRVkgVVBEQVRFIHF1ZXJ5LlxuICAgKi9cbiAgdXBzZXJ0KFxuICAgIGVudGl0eU9yRW50aXRpZXM6XG4gICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PlxuICAgICAgfCBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5bXSxcbiAgICBjb25mbGljdFBhdGhzT3JPcHRpb25zOiBzdHJpbmdbXSB8IFVwc2VydE9wdGlvbnM8RW50aXR5PixcbiAgKTogUHJvbWlzZTxJbnNlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnVwc2VydChlbnRpdHlPckVudGl0aWVzLCBjb25mbGljdFBhdGhzT3JPcHRpb25zKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgZW50aXRpZXMgYnkgYSBnaXZlbiBjcml0ZXJpYS5cbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBTT0ZULURFTEVURSBxdWVyeS5cbiAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHNvZnREZWxldGUoXG4gICAgY3JpdGVyaWE6XG4gICAgICB8IHN0cmluZ1xuICAgICAgfCBzdHJpbmdbXVxuICAgICAgfCBudW1iZXJcbiAgICAgIHwgbnVtYmVyW11cbiAgICAgIHwgRGF0ZVxuICAgICAgfCBEYXRlW11cblxuXG4gICAgICB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PixcbiAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnNvZnREZWxldGUoY3JpdGVyaWEpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBlbnRpdGllcyBieSBhIGdpdmVuIGNyaXRlcmlhLlxuICAgKiBVbmxpa2Ugc2F2ZSBtZXRob2QgZXhlY3V0ZXMgYSBwcmltaXRpdmUgb3BlcmF0aW9uIHdpdGhvdXQgY2FzY2FkZXMsIHJlbGF0aW9ucyBhbmQgb3RoZXIgb3BlcmF0aW9ucyBpbmNsdWRlZC5cbiAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IFNPRlQtREVMRVRFIHF1ZXJ5LlxuICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVzdG9yZShcbiAgICBjcml0ZXJpYTpcbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IHN0cmluZ1tdXG4gICAgICB8IG51bWJlclxuICAgICAgfCBudW1iZXJbXVxuICAgICAgfCBEYXRlXG4gICAgICB8IERhdGVbXVxuXG5cbiAgICAgIHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+LFxuICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8ucmVzdG9yZShjcml0ZXJpYSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIG9wdGlvbnMuXG4gICAqIFVzZWZ1bCBmb3IgcGFnaW5hdGlvbi5cbiAgICovXG4gIGNvdW50KG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jb3VudChvcHRpb25zKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ291bnRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucy5cbiAgICogVXNlZnVsIGZvciBwYWdpbmF0aW9uLlxuICAgKi9cbiAgY291bnRCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jb3VudEJ5KHdoZXJlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAqL1xuICBmaW5kKG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5Pik6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmQob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKi9cbiAgZmluZEJ5KFxuICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZEJ5KHdoZXJlKTtcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgLy9cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKiBBbHNvIGNvdW50cyBhbGwgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBjb25kaXRpb25zLFxuICAgKiBidXQgaWdub3JlcyBwYWdpbmF0aW9uIHNldHRpbmdzIChmcm9tIGFuZCB0YWtlIG9wdGlvbnMpLlxuICAgKi9cbiAgZmluZEFuZENvdW50KG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5Pik6IFByb21pc2U8W0VudGl0eVtdLCBudW1iZXJdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kQW5kQ291bnQob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gV0hFUkUgY29uZGl0aW9ucy5cbiAgICogQWxzbyBjb3VudHMgYWxsIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucyxcbiAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICovXG4gIGZpbmRBbmRDb3VudEJ5KFxuICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgKTogUHJvbWlzZTxbRW50aXR5W10sIG51bWJlcl0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRBbmRDb3VudEJ5KHdoZXJlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZW50aXRpZXMgd2l0aCBpZHMuXG4gICAqIE9wdGlvbmFsbHkgZmluZCBvcHRpb25zIG9yIGNvbmRpdGlvbnMgY2FuIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZmluZEJ5YCBtZXRob2QgaW5zdGVhZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJbmAgb3BlcmF0b3IsIGZvciBleGFtcGxlOlxuICAgKlxuICAgKiAuZmluZEJ5KHtcbiAgICogICAgIGlkOiBJbihbMSwgMiwgM10pXG4gICAqIH0pXG4gICAqL1xuICBmaW5kQnlJZHMoaWRzOiBhbnlbXSk6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRCeUlkcyhpZHMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBGaW5kcyBmaXJzdCBlbnRpdHkgYnkgYSBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICovXG4gIGZpbmRPbmUob3B0aW9uczogRmluZE9uZU9wdGlvbnM8RW50aXR5Pik6IFByb21pc2U8RW50aXR5IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZShvcHRpb25zKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICovXG4gIGZpbmRPbmVCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8RW50aXR5IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZUJ5KHdoZXJlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiBpZC5cbiAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRPbmVCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICpcbiAgICogLmZpbmRPbmVCeSh7XG4gICAqICAgICBpZDogMSAvLyB3aGVyZSBcImlkXCIgaXMgeW91ciBwcmltYXJ5IGNvbHVtbiBuYW1lXG4gICAqIH0pXG4gICAqL1xuICBmaW5kT25lQnlJZChcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSxcblxuICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVCeUlkKGlkKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IGJ5IGEgZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZWplY3RzIHdpdGggZXJyb3IuXG4gICAqL1xuICBmaW5kT25lT3JGYWlsKG9wdGlvbnM6IEZpbmRPbmVPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZU9yRmFpbChvcHRpb25zKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJlamVjdHMgd2l0aCBlcnJvci5cbiAgICovXG4gIGZpbmRPbmVCeU9yRmFpbChcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kT25lQnlPckZhaWwod2hlcmUpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHJhdyBTUUwgcXVlcnkgYW5kIHJldHVybnMgYSByYXcgZGF0YWJhc2UgcmVzdWx0cy5cbiAgICogUmF3IHF1ZXJ5IGV4ZWN1dGlvbiBpcyBzdXBwb3J0ZWQgb25seSBieSByZWxhdGlvbmFsIGRhdGFiYXNlcyAoTW9uZ29EQiBpcyBub3Qgc3VwcG9ydGVkKS5cbiAgICovXG4gIHF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5xdWVyeShxdWVyeSwgcGFyYW1ldGVycyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW4gdGFibGUvY29sbGVjdGlvbiAodHJ1bmNhdGVzL2Ryb3BzIGl0KS5cbiAgICpcbiAgICogTm90ZTogdGhpcyBtZXRob2QgdXNlcyBUUlVOQ0FURSBhbmQgbWF5IG5vdCB3b3JrIGFzIHlvdSBleHBlY3QgaW4gdHJhbnNhY3Rpb25zIG9uIHNvbWUgcGxhdGZvcm1zLlxuICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81OTcyNzM4LzkyNTE1MVxuICAgKi9cbiAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jbGVhcigpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAqL1xuICBpbmNyZW1lbnQoXG4gICAgY29uZGl0aW9uczogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+LFxuICAgIHByb3BlcnR5UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5pbmNyZW1lbnQoY29uZGl0aW9ucywgcHJvcGVydHlQYXRoLCB2YWx1ZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIERlY3JlbWVudHMgc29tZSBjb2x1bW4gYnkgcHJvdmlkZWQgdmFsdWUgb2YgdGhlIGVudGl0aWVzIG1hdGNoZWQgZ2l2ZW4gY29uZGl0aW9ucy5cbiAgICovXG4gIGRlY3JlbWVudChcbiAgICBjb25kaXRpb25zOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4sXG4gICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmRlY3JlbWVudChjb25kaXRpb25zLCBwcm9wZXJ0eVBhdGgsIHZhbHVlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZpbmRBbmRDb3VudCBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBnZXRBbGwoKSB7XG5cblxuXG5cblxuXG4gICAgY29uc3QgdG90YWxDb3VudCA9IGF3YWl0IHRoaXMucmVwby5jb3VudCgpO1xuICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMucmVwby5maW5kKCk7XG5cblxuICAgIHJldHVybiB7IG1vZGVscywgdG90YWxDb3VudCB9O1xuXG4gIH1cblxuXG5cbiAgYXN5bmMgZ2V0QnkoaWQ6IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8RW50aXR5PiB7XG5cbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IGF3YWl0IHRoaXMucmVwby5maW5kT25lKHtcbiAgICAgIHdoZXJlOiB7IGlkIH0gYXMgYW55LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuXG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2UtcmVwb3NpdG9yeS50cyJdfQ==
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLXJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQTBCQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUdqQyxJQUFlLGNBQWMsR0FBN0IsTUFBZSxjQUVwQixTQUFRLFlBQVk7SUFRcEIsWUFFVSxzQkFBaUM7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFGQSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVc7UUFHekMsYUFBYTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztJQUNyRCxDQUFDO0lBTUQsSUFBVyxPQUFPO1FBRWhCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMsT0FBTztnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxZQUFZLENBQUMsT0FBTyxDQUNuRSxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFB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QUFLLEdBQUcsTUFBTSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBUztTQUNyQixDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUVmLENBQUM7Q0FFRixDQUFBO0FBdjNCcUIsY0FBYztJQURuQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzs7R0FDMUIsY0FBYyxDQXUzQm5DOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHR5cGUge1xuICBEYXRhU291cmNlLFxuICBEZWVwUGFydGlhbCxcbiAgRGVsZXRlUmVzdWx0LFxuICBGaW5kTWFueU9wdGlvbnMsXG4gIEZpbmRPbmVPcHRpb25zLFxuICBGaW5kT3B0aW9uc1doZXJlLFxuICBJbnNlcnRSZXN1bHQsXG5cbiAgUmVtb3ZlT3B0aW9ucyxcbiAgUmVwb3NpdG9yeSxcbiAgU2F2ZU9wdGlvbnMsXG4gIFVwZGF0ZVJlc3VsdCxcbn0gZnJvbSAndGFvbi10eXBlb3JtJztcblxuaW1wb3J0IHR5cGUgeyBRdWVyeURlZXBQYXJ0aWFsRW50aXR5IH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3F1ZXJ5LWJ1aWxkZXIvUXVlcnlQYXJ0aWFsRW50aXR5JztcblxuaW1wb3J0IHR5cGUgeyBVcHNlcnRPcHRpb25zIH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3JlcG9zaXRvcnkvVXBzZXJ0T3B0aW9ucyc7XG5cblxuXG5pbXBvcnQgdHlwZSB7IERhdGFTb3VyY2UgYXMgRGF0YVNvdXJjZVR5cGUgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcbmltcG9ydCB7IEVuZHBvaW50Q29udGV4dCB9IGZyb20gJy4uL2VuZHBvaW50LWNvbnRleHQnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4uL2hlbHBlcnMvY2xhc3MtaGVscGVycyc7XG5pbXBvcnQgeyBNeVNxbFF1ZXJ5U291cmNlIH0gZnJvbSAndGFvbi10eXBlLXNxbC93ZWJzcWwnO1xuaW1wb3J0IHsgVGFvblJlcG9zaXRvcnkgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvcmVwb3NpdG9yeS1kZWNvcmF0b3InO1xuaW1wb3J0IHsgQmFzZUluamVjdG9yIH0gZnJvbSAnLi9iYXNlLWluamVjdG9yJztcblxuXG5jb25zdCBJTkRFWF9LRVlTX05PX0ZPUl9VUERBVEUgPSBbJ2lkJ107XG5cbkBUYW9uUmVwb3NpdG9yeSh7IGNsYXNzTmFtZTogJ0Jhc2VSZXBvc2l0b3J5JyB9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXBvc2l0b3J5PFxuICBFbnRpdHkgZXh0ZW5kcyB7IGlkPzogYW55IH0sXG4+IGV4dGVuZHMgQmFzZUluamVjdG9yIHtcblxuXG5cblxuXG5cbiAgYWJzdHJhY3QgZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueTtcbiAgY29uc3RydWN0b3IoXG5cbiAgICBwcml2YXRlIF9fZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5lbnRpdHlDbGFzc1Jlc29sdmVGbiA9IF9fZW50aXR5Q2xhc3NSZXNvbHZlRm47XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBfX2RiUXVlcnk6IE15U3FsUXVlcnlTb3VyY2U7XG5cbiAgcHVibGljIGdldCBkYlF1ZXJ5KCk6IE15U3FsUXVlcnlTb3VyY2Uge1xuXG4gICAgaWYgKCF0aGlzLl9fZGJRdWVyeSkge1xuICAgICAgaWYgKCF0aGlzLmN0eCkge1xuICAgICAgICByZXR1cm47IC8vIFRPRE9cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQmFzZVJlcG9zaXRvcnldIENvbnRleHQgbm90IGluaXRlZCBmb3IgY2xhc3MgJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY3R4Py5jb25uZWN0aW9uO1xuICAgICAgaWYgKCFjb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0Jhc2VSZXBvc2l0b3J5XSBEYXRhYmFzZSBub3QgaW5pdGVkIGZvciBjb250ZXh0ICR7dGhpcy5jdHg/LmNvbnRleHROYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9fZGJRdWVyeSA9IG5ldyBNeVNxbFF1ZXJ5U291cmNlKGNvbm5lY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fX2RiUXVlcnk7XG5cbiAgfVxuXG5cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKTogRGF0YVNvdXJjZVR5cGUge1xuXG4gICAgcmV0dXJuIHRoaXMuY3R4Py5jb25uZWN0aW9uO1xuXG4gIH1cblxuXG5cblxuICBwcml2YXRlIF9fcmVwb3NpdG9yeTogUmVwb3NpdG9yeTxFbnRpdHk+O1xuXG4gIHByb3RlY3RlZCBnZXQgcmVwb3NpdG9yeSgpIHtcblxuICAgIHJldHVybiB0aGlzLl9fcmVwb3NpdG9yeTtcblxuICB9XG5cbiAgLyoqXG4gICAqIHRhcmdldCBmb3IgcmVwb3NpdG9yeVxuICAgKi9cbiAgcHVibGljIGdldCB0YXJnZXQoKTogRnVuY3Rpb24ge1xuXG4gICAgcmV0dXJuIHRoaXM/LnJlcG9zaXRvcnk/LnRhcmdldCBhcyBhbnk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBhbGlhcyB0byByZXBvc2l0b3J5XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHJlcG8oKSB7XG5cbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5O1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlFeGlzdHMoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gISF0aGlzLl9fcmVwb3NpdG9yeTtcblxuICB9XG5cblxuXG5cblxuICBhc3luYyBfX2luaXQoY29udGV4dD86IGFueSkge1xuXG4gICAgaWYgKHRoaXMuX19yZXBvc2l0b3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBlbnRpdHlDbGFzc0ZuOiBhbnkgPSB0aGlzLmVudGl0eUNsYXNzUmVzb2x2ZUZuKCk7XG4gICAgaWYgKCFlbnRpdHlDbGFzc0ZuKSB7XG4gICAgICBIZWxwZXJzLndhcm4oXG4gICAgICAgIGBFbnRpdHkgY2xhc3Mgbm90IHByb3ZpZGVkIGZvciByZXBvc2l0b3J5ICR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3R4OiBFbmRwb2ludENvbnRleHQgPSB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fO1xuICAgIGlmIChjdHgucmVtb3RlSG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25uZWN0aW9uID0gY3R4LmNvbm5lY3Rpb247XG5cbiAgICBpZiAoIWNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXG5cbiAgICAgICAgQ29ubmVjdGlvbiBub3QgZm91bmQgZm9yIGNvbnRleHQgJHtjdHguY29udGV4dE5hbWV9XG5cblxuICAgICAgICBNYXliZSB5b3UgZm9yZ290IHRvIGluaXQgZGF0YWJhc2UgP1xuXG4gICAgICAgIFRhb24uY3JlYXRlQ29udGV4dCh7XG4gICAgICAgIC4uLlxuICAgICAgICBkYXRhYmFzZTp0cnVlXG4gICAgICAgIC4uLlxuICAgICAgICB9KVxuXG4gICAgICAgIGApO1xuICAgIH1cblxuICAgIGlmICghZW50aXR5Q2xhc3NGbikge1xuICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICBgRW50aXR5IGNsYXNzIG5vdCBmb3VuZCBmb3IgcmVwb3NpdG9yeSAke0NsYXNzSGVscGVycy5nZXROYW1lKHRoaXMpfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX19yZXBvc2l0b3J5ID0gKGF3YWl0IGNvbm5lY3Rpb24uZ2V0UmVwb3NpdG9yeShcbiAgICAgIENsYXNzSGVscGVycy5nZXRPcmdpbmFsQ2xhc3MoZW50aXR5Q2xhc3NGbiksXG4gICAgKSkgYXMgYW55O1xuXG5cblxuXG5cblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZW50aXR5IGhhcyBhbiBpZC5cbiAgICogSWYgZW50aXR5IGNvbXBvc2l0ZSBjb21wb3NlIGlkcywgaXQgd2lsbCBjaGVjayB0aGVtIGFsbC5cbiAgICovXG4gIGhhc0lkKGVudGl0eTogRW50aXR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5oYXNJZChlbnRpdHkpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBHZXRzIGVudGl0eSBtaXhlZCBpZC5cbiAgICovXG4gIGdldElkKGVudGl0eTogRW50aXR5KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldElkKGVudGl0eSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAgU2F2ZXMgYSBnaXZlbiBlbnRpdHkgaW4gdGhlIGRhdGFiYXNlLlxuICAgKiBJZiBlbnRpdHkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAqL1xuICBhc3luYyBzYXZlKFxuICAgIGl0ZW06IEVudGl0eSxcbiAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMgJiB7XG4gICAgICByZWxvYWQ6IGZhbHNlO1xuICAgIH0sXG4gICk6IFByb21pc2U8RW50aXR5PiB7XG5cbiAgICBsZXQgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uY3JlYXRlKGl0ZW0pO1xuXG4gICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uc2F2ZShtb2RlbCwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBpZCB9ID0gbW9kZWwgYXMgYW55O1xuXG4gICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBpZCB9IGFzIGFueSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RlbDtcblxuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHNhdmVcbiAgICogLT4gaXQgd2lsbCBhY3R1YWxsIGNyZWF0ZSBuZXcgZW50aXR5IGluIGRiXG4gICAqIGluIG9wb3NpdGUgdG8gdHlwZW9ybSBjcmVhdGUgbWV0aG9kXG4gICAqL1xuICBhc3luYyBjcmVhdGUoXG4gICAgaXRlbTogRW50aXR5LFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlKGl0ZW0sIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgYnVsa1NhdmUoXG4gICAgaXRlbXM6IEVudGl0eVtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcblxuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLnNhdmUoaXRlbSwgb3B0aW9ucyk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbHM7XG5cbiAgfVxuXG4gIGFzeW5jIGJ1bGtDcmVhdGUoXG4gICAgaXRlbXM6IEVudGl0eVtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtTYXZlKGl0ZW1zLCBvcHRpb25zKTtcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBTYXZlcyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogTWVyZ2VzIG11bHRpcGxlIGVudGl0aWVzIChvciBlbnRpdHktbGlrZSBvYmplY3RzKSBpbnRvIGEgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgbWVyZ2UobWVyZ2VJbnRvRW50aXR5OiBFbnRpdHksIC4uLmVudGl0eUxpa2VzOiBFbnRpdHlbXSk6IEVudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5tZXJnZShtZXJnZUludG9FbnRpdHksIC4uLmVudGl0eUxpa2VzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgZnJvbSB0aGUgZ2l2ZW4gcGxhaW4gamF2YXNjcmlwdCBvYmplY3QuIElmIGVudGl0eSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgdGhlblxuICAgKiBpdCBsb2FkcyBpdCAoYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdCksIHJlcGxhY2VzIGFsbCB2YWx1ZXMgd2l0aCB0aGUgbmV3IG9uZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqIGFuZCByZXR1cm5zIHRoaXMgbmV3IGVudGl0eS4gVGhpcyBuZXcgZW50aXR5IGlzIGFjdHVhbGx5IGEgbG9hZGVkIGZyb20gdGhlIGRiIGVudGl0eSB3aXRoIGFsbCBwcm9wZXJ0aWVzXG4gICAqIHJlcGxhY2VkIGZyb20gdGhlIG5ldyBvYmplY3QuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBnaXZlbiBlbnRpdHktbGlrZSBvYmplY3QgbXVzdCBoYXZlIGFuIGVudGl0eSBpZCAvIHByaW1hcnkga2V5IHRvIGZpbmQgZW50aXR5IGJ5LlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBlbnRpdHkgd2l0aCBnaXZlbiBpZCB3YXMgbm90IGZvdW5kLlxuICAgKi9cbiAgcHJlbG9hZChlbnRpdHlMaWtlOiBFbnRpdHkpOiBQcm9taXNlPEVudGl0eSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8ucHJlbG9hZChlbnRpdHlMaWtlKTtcbiAgfVxuXG5cblxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXRpZXMgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBhc3luYyByZW1vdmUoaWRPckVudGl0eTogbnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KTogUHJvbWlzZTxFbnRpdHk+IHtcblxuICAgIGlmIChfLmlzT2JqZWN0KGlkT3JFbnRpdHkpKSB7XG4gICAgICBpZE9yRW50aXR5ID0gKGlkT3JFbnRpdHkgYXMgRW50aXR5KS5pZDtcbiAgICB9XG4gICAgY29uc3QgZGVsZXRlZEVudGl0eSA9IGF3YWl0IHRoaXMucmVwby5maW5kT25lKHtcbiAgICAgIHdoZXJlOiB7IGlkOiBpZE9yRW50aXR5IH0gYXMgYW55LFxuICAgIH0pO1xuXG4gICAgY29uc3QgaWRDb3B5ID0gZGVsZXRlZEVudGl0eS5pZDtcbiAgICBhd2FpdCB0aGlzLnJlcG8ucmVtb3ZlKGRlbGV0ZWRFbnRpdHkpO1xuXG4gICAgZGVsZXRlZEVudGl0eS5pZCA9IGlkQ29weTtcbiAgICByZXR1cm4gZGVsZXRlZEVudGl0eTtcblxuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHJlbW92ZVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGlkT3JFbnRpdHk6IG51bWJlciB8IHN0cmluZyB8IEVudGl0eSk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlKGlkT3JFbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHJlbW92ZUJ5SWRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlKGlkKTtcbiAgfVxuICBhc3luYyBidWxrUmVtb3ZlKFxuICAgIGlkc09yRW50aXRpZXM6IChudW1iZXIgfCBzdHJpbmcgfCBFbnRpdHkpW10sXG4gICk6IFByb21pc2U8RW50aXR5W10+IHtcblxuICAgIGlkc09yRW50aXRpZXMgPSBpZHNPckVudGl0aWVzLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4gXy5pc09iamVjdChpZCkgPyAoaWQgYXMgRW50aXR5KS5pZCA6IGlkO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGlkc09yRW50aXRpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpZCA9IGlkc09yRW50aXRpZXNbaW5kZXhdO1xuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLnJlbW92ZShpZCk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbHM7XG5cbiAgfVxuXG4gIGFzeW5jIGJ1bGtEZWxldGUoaWRzOiAobnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KVtdKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtSZW1vdmUoaWRzKTtcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICovXG4gIHNvZnRSZW1vdmU8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXRpZXM6IFRbXSxcbiAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxUW10+O1xuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgKi9cbiAgc29mdFJlbW92ZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT47XG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhIGdpdmVuIGVudGl0eS5cbiAgICovXG4gIHNvZnRSZW1vdmU8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYSBnaXZlbiBlbnRpdHkuXG4gICAqL1xuICBzb2Z0UmVtb3ZlPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0eTogVCxcbiAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICk6IFByb21pc2U8VCAmIEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uc29mdFJlbW92ZShlbnRpdHksIG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBSZWNvdmVycyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVjb3ZlcjxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFRbXT47XG4gIC8qKlxuICAgKiBSZWNvdmVycyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVjb3ZlcjxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT47XG4gIC8qKlxuICAgKiBSZWNvdmVycyBhIGdpdmVuIGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICByZWNvdmVyPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0eTogVCxcbiAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxUPjtcbiAgLyoqXG4gICAqIFJlY292ZXJzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHJlY292ZXI8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxUICYgRW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5yZWNvdmVyKGVudGl0eSwgb3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEluc2VydHMgYSBnaXZlbiBlbnRpdHkgaW50byB0aGUgZGF0YWJhc2UuXG4gICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgKiBFeGVjdXRlcyBmYXN0IGFuZCBlZmZpY2llbnQgSU5TRVJUIHF1ZXJ5LlxuICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLCBzbyBxdWVyeSB3aWxsIGZhaWwgaWYgZHVwbGljYXRlIGVudGl0eSBpcyBiZWluZyBpbnNlcnRlZC5cbiAgICovXG4gIGluc2VydChcbiAgICBlbnRpdHk6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PiB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEluc2VydFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uaW5zZXJ0KGVudGl0eSk7XG4gIH1cblxuXG5cbiAgYXN5bmMgdXBkYXRlKGl0ZW06IEVudGl0eSkge1xuXG4gICAgY29uc3QgeyBpZCB9ID0gaXRlbSBhcyBhbnk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlQnlJZChpZCwgaXRlbSk7XG5cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZywgaXRlbTogRW50aXR5KSB7XG5cbiAgICBjb25zdCBhbGxvd2VkUHJvcHNUb1VwZGF0ZSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgXy5pc09iamVjdChpdGVtKSAmJlxuICAgICAgICBpdGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgdHlwZW9mIGl0ZW1ba2V5XSAhPT0gJ29iamVjdCcgJiZcbiAgICAgICAgIV8uaXNVbmRlZmluZWQoXG4gICAgICAgICAgdGhpcy5yZXBvLm1ldGFkYXRhLm93bkNvbHVtbnMuZmluZChjID0+IGMucHJvcGVydHlOYW1lID09PSBrZXkpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgYWxsb3dlZFByb3BzVG9VcGRhdGUucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsb3dlZFByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gYWxsb3dlZFByb3BzVG9VcGRhdGVbaV07XG4gICAgICBpZiAoIUlOREVYX0tFWVNfTk9fRk9SX1VQREFURS5pbmNsdWRlcyhrZXkudG9Mb3dlckNhc2UoKSkpIHtcblxuICAgICAgICBjb25zdCB0b1NldCA9IGl0ZW1ba2V5XTtcblxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVwby51cGRhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAge1xuICAgICAgICAgICAgW2tleV06IHRvU2V0LFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICApO1xuXG5cblxuXG5cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1vZGVsID0gYXdhaXQgdGhpcy5yZXBvLmZpbmRPbmUoe1xuICAgICAgd2hlcmU6IHsgaWQgfSBhcyBhbnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG5cbiAgfVxuICBhc3luYyBidWxrVXBkYXRlKGl0ZW1zOiBFbnRpdHlbXSkge1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW0gYXMgYW55OyAvLyBUT09EXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMudXBkYXRlQnlJZChpZCwgaXRlbSk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiB7IG1vZGVscyB9O1xuXG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIGEgZ2l2ZW4gZW50aXR5IGludG8gdGhlIGRhdGFiYXNlLCB1bmxlc3MgYSB1bmlxdWUgY29uc3RyYWludCBjb25mbGljdHMgdGhlbiB1cGRhdGVzIHRoZSBlbnRpdHlcbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIERPIFVQREFURS9PTiBEVVBMSUNBVEUgS0VZIFVQREFURSBxdWVyeS5cbiAgICovXG4gIHVwc2VydChcbiAgICBlbnRpdHlPckVudGl0aWVzOlxuICAgICAgfCBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5cbiAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+W10sXG4gICAgY29uZmxpY3RQYXRoc09yT3B0aW9uczogc3RyaW5nW10gfCBVcHNlcnRPcHRpb25zPEVudGl0eT4sXG4gICk6IFByb21pc2U8SW5zZXJ0UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cHNlcnQoZW50aXR5T3JFbnRpdGllcywgY29uZmxpY3RQYXRoc09yT3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGVudGl0aWVzIGJ5IGEgZ2l2ZW4gY3JpdGVyaWEuXG4gICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgKiBFeGVjdXRlcyBmYXN0IGFuZCBlZmZpY2llbnQgU09GVC1ERUxFVEUgcXVlcnkuXG4gICAqIERvZXMgbm90IGNoZWNrIGlmIGVudGl0eSBleGlzdCBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBzb2Z0RGVsZXRlKFxuICAgIGNyaXRlcmlhOlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgc3RyaW5nW11cbiAgICAgIHwgbnVtYmVyXG4gICAgICB8IG51bWJlcltdXG4gICAgICB8IERhdGVcbiAgICAgIHwgRGF0ZVtdXG5cblxuICAgICAgfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4sXG4gICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zb2Z0RGVsZXRlKGNyaXRlcmlhKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogUmVzdG9yZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjcml0ZXJpYS5cbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBTT0ZULURFTEVURSBxdWVyeS5cbiAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHJlc3RvcmUoXG4gICAgY3JpdGVyaWE6XG4gICAgICB8IHN0cmluZ1xuICAgICAgfCBzdHJpbmdbXVxuICAgICAgfCBudW1iZXJcbiAgICAgIHwgbnVtYmVyW11cbiAgICAgIHwgRGF0ZVxuICAgICAgfCBEYXRlW11cblxuXG4gICAgICB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PixcbiAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnJlc3RvcmUoY3JpdGVyaWEpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDb3VudHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBvcHRpb25zLlxuICAgKiBVc2VmdWwgZm9yIHBhZ2luYXRpb24uXG4gICAqL1xuICBjb3VudChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY291bnQob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAqIFVzZWZ1bCBmb3IgcGFnaW5hdGlvbi5cbiAgICovXG4gIGNvdW50QnkoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY291bnRCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKi9cbiAgZmluZChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kKG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICovXG4gIGZpbmRCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRCeSh3aGVyZSk7XG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8vXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICogQWxzbyBjb3VudHMgYWxsIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucyxcbiAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICovXG4gIGZpbmRBbmRDb3VudChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPFtFbnRpdHlbXSwgbnVtYmVyXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZEFuZENvdW50KG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIFdIRVJFIGNvbmRpdGlvbnMuXG4gICAqIEFsc28gY291bnRzIGFsbCBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMsXG4gICAqIGJ1dCBpZ25vcmVzIHBhZ2luYXRpb24gc2V0dGluZ3MgKGZyb20gYW5kIHRha2Ugb3B0aW9ucykuXG4gICAqL1xuICBmaW5kQW5kQ291bnRCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8W0VudGl0eVtdLCBudW1iZXJdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kQW5kQ291bnRCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHdpdGggaWRzLlxuICAgKiBPcHRpb25hbGx5IGZpbmQgb3B0aW9ucyBvciBjb25kaXRpb25zIGNhbiBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICpcbiAgICogLmZpbmRCeSh7XG4gICAqICAgICBpZDogSW4oWzEsIDIsIDNdKVxuICAgKiB9KVxuICAgKi9cbiAgZmluZEJ5SWRzKGlkczogYW55W10pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kQnlJZHMoaWRzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IGJ5IGEgZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAqL1xuICBmaW5kT25lKG9wdGlvbnM6IEZpbmRPbmVPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmUob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAqL1xuICBmaW5kT25lQnkoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gaWQuXG4gICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBmaW5kT25lQnlgIG1ldGhvZCBpbnN0ZWFkIGluIGNvbmp1bmN0aW9uIHdpdGggYEluYCBvcGVyYXRvciwgZm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIC5maW5kT25lQnkoe1xuICAgKiAgICAgaWQ6IDEgLy8gd2hlcmUgXCJpZFwiIGlzIHlvdXIgcHJpbWFyeSBjb2x1bW4gbmFtZVxuICAgKiB9KVxuICAgKi9cbiAgZmluZE9uZUJ5SWQoXG4gICAgaWQ6IG51bWJlciB8IHN0cmluZyB8IERhdGUsXG5cbiAgKTogUHJvbWlzZTxFbnRpdHkgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kT25lQnlJZChpZCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSBieSBhIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgKi9cbiAgZmluZE9uZU9yRmFpbChvcHRpb25zOiBGaW5kT25lT3B0aW9uczxFbnRpdHk+KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVPckZhaWwob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZWplY3RzIHdpdGggZXJyb3IuXG4gICAqL1xuICBmaW5kT25lQnlPckZhaWwoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZUJ5T3JGYWlsKHdoZXJlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSByYXcgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIGEgcmF3IGRhdGFiYXNlIHJlc3VsdHMuXG4gICAqIFJhdyBxdWVyeSBleGVjdXRpb24gaXMgc3VwcG9ydGVkIG9ubHkgYnkgcmVsYXRpb25hbCBkYXRhYmFzZXMgKE1vbmdvREIgaXMgbm90IHN1cHBvcnRlZCkuXG4gICAqL1xuICBxdWVyeShxdWVyeTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8ucXVlcnkocXVlcnksIHBhcmFtZXRlcnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGdpdmVuIHRhYmxlL2NvbGxlY3Rpb24gKHRydW5jYXRlcy9kcm9wcyBpdCkuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgbWV0aG9kIHVzZXMgVFJVTkNBVEUgYW5kIG1heSBub3Qgd29yayBhcyB5b3UgZXhwZWN0IGluIHRyYW5zYWN0aW9ucyBvbiBzb21lIHBsYXRmb3Jtcy5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTk3MjczOC85MjUxNTFcbiAgICovXG4gIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY2xlYXIoKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogSW5jcmVtZW50cyBzb21lIGNvbHVtbiBieSBwcm92aWRlZCB2YWx1ZSBvZiB0aGUgZW50aXRpZXMgbWF0Y2hlZCBnaXZlbiBjb25kaXRpb25zLlxuICAgKi9cbiAgaW5jcmVtZW50KFxuICAgIGNvbmRpdGlvbnM6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uaW5jcmVtZW50KGNvbmRpdGlvbnMsIHByb3BlcnR5UGF0aCwgdmFsdWUpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBEZWNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAqL1xuICBkZWNyZW1lbnQoXG4gICAgY29uZGl0aW9uczogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+LFxuICAgIHByb3BlcnR5UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5kZWNyZW1lbnQoY29uZGl0aW9ucywgcHJvcGVydHlQYXRoLCB2YWx1ZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBmaW5kQW5kQ291bnQgaW5zdGVhZFxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsKCkge1xuXG5cblxuXG5cblxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhd2FpdCB0aGlzLnJlcG8uY291bnQoKTtcbiAgICBjb25zdCBtb2RlbHMgPSBhd2FpdCB0aGlzLnJlcG8uZmluZCgpO1xuXG5cbiAgICByZXR1cm4geyBtb2RlbHMsIHRvdGFsQ291bnQgfTtcblxuICB9XG5cblxuXG4gIGFzeW5jIGdldEJ5KGlkOiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPEVudGl0eT4ge1xuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBhd2FpdCB0aGlzLnJlcG8uZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBpZCB9IGFzIGFueSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RlbDtcblxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLXJlcG9zaXRvcnkudHMiXX0=
@@ -15,133 +15,133 @@ let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector
15
15
  * Called after entity is loaded.
16
16
  */
17
17
  afterLoad(entity) {
18
- this.__endpoint_context__.logDb &&
18
+ this.ctx.logDb &&
19
19
  console.log(`AFTER ENTITY LOADED: `, entity);
20
20
  }
21
21
  /**
22
22
  * Called before query execution.
23
23
  */
24
24
  beforeQuery(event) {
25
- this.__endpoint_context__.logDb &&
25
+ this.ctx.logDb &&
26
26
  console.log(`BEFORE QUERY: `, event.query);
27
27
  }
28
28
  /**
29
29
  * Called after query execution.
30
30
  */
31
31
  afterQuery(event) {
32
- this.__endpoint_context__.logDb &&
32
+ this.ctx.logDb &&
33
33
  console.log(`AFTER QUERY: `, event.query);
34
34
  }
35
35
  /**
36
36
  * Called before entity insertion.
37
37
  */
38
38
  beforeInsert(event) {
39
- this.__endpoint_context__.logDb &&
39
+ this.ctx.logDb &&
40
40
  console.log(`BEFORE ENTITY INSERTED: `, event.entity);
41
41
  }
42
42
  /**
43
43
  * Called after entity insertion.
44
44
  */
45
45
  afterInsert(event) {
46
- this.__endpoint_context__.logDb &&
46
+ this.ctx.logDb &&
47
47
  console.log(`AFTER ENTITY INSERTED: `, event.entity);
48
48
  }
49
49
  /**
50
50
  * Called before entity update.
51
51
  */
52
52
  beforeUpdate(event) {
53
- this.__endpoint_context__.logDb &&
53
+ this.ctx.logDb &&
54
54
  console.log(`BEFORE ENTITY UPDATED: `, event.entity);
55
55
  }
56
56
  /**
57
57
  * Called after entity update.
58
58
  */
59
59
  afterUpdate(event) {
60
- this.__endpoint_context__.logDb &&
60
+ this.ctx.logDb &&
61
61
  console.log(`AFTER ENTITY UPDATED: `, event.entity);
62
62
  }
63
63
  /**
64
64
  * Called before entity removal.
65
65
  */
66
66
  beforeRemove(event) {
67
- this.__endpoint_context__.logDb &&
67
+ this.ctx.logDb &&
68
68
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
69
69
  }
70
70
  /**
71
71
  * Called after entity removal.
72
72
  */
73
73
  afterRemove(event) {
74
- this.__endpoint_context__.logDb &&
74
+ this.ctx.logDb &&
75
75
  console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
76
76
  }
77
77
  /**
78
78
  * Called before entity removal.
79
79
  */
80
80
  beforeSoftRemove(event) {
81
- this.__endpoint_context__.logDb &&
81
+ this.ctx.logDb &&
82
82
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
83
83
  }
84
84
  /**
85
85
  * Called after entity removal.
86
86
  */
87
87
  afterSoftRemove(event) {
88
- this.__endpoint_context__.logDb &&
88
+ this.ctx.logDb &&
89
89
  console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
90
90
  }
91
91
  /**
92
92
  * Called before entity recovery.
93
93
  */
94
94
  beforeRecover(event) {
95
- this.__endpoint_context__.logDb &&
95
+ this.ctx.logDb &&
96
96
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
97
97
  }
98
98
  /**
99
99
  * Called after entity recovery.
100
100
  */
101
101
  afterRecover(event) {
102
- this.__endpoint_context__.logDb &&
102
+ this.ctx.logDb &&
103
103
  console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
104
104
  }
105
105
  /**
106
106
  * Called before transaction start.
107
107
  */
108
108
  beforeTransactionStart(event) {
109
- this.__endpoint_context__.logDb &&
109
+ this.ctx.logDb &&
110
110
  console.log(`BEFORE TRANSACTION STARTED: `, event);
111
111
  }
112
112
  /**
113
113
  * Called after transaction start.
114
114
  */
115
115
  afterTransactionStart(event) {
116
- this.__endpoint_context__.logDb &&
116
+ this.ctx.logDb &&
117
117
  console.log(`AFTER TRANSACTION STARTED: `, event);
118
118
  }
119
119
  /**
120
120
  * Called before transaction commit.
121
121
  */
122
122
  beforeTransactionCommit(event) {
123
- this.__endpoint_context__.logDb &&
123
+ this.ctx.logDb &&
124
124
  console.log(`BEFORE TRANSACTION COMMITTED: `, event);
125
125
  }
126
126
  /**
127
127
  * Called after transaction commit.
128
128
  */
129
129
  afterTransactionCommit(event) {
130
- this.__endpoint_context__.logDb &&
130
+ this.ctx.logDb &&
131
131
  console.log(`AFTER TRANSACTION COMMITTED: `, event);
132
132
  }
133
133
  /**
134
134
  * Called before transaction rollback.
135
135
  */
136
136
  beforeTransactionRollback(event) {
137
- this.__endpoint_context__.logDb &&
137
+ this.ctx.logDb &&
138
138
  console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
139
139
  }
140
140
  /**
141
141
  * Called after transaction rollback.
142
142
  */
143
143
  afterTransactionRollback(event) {
144
- this.__endpoint_context__.logDb &&
144
+ this.ctx.logDb &&
145
145
  console.log(`AFTER TRANSACTION ROLLBACK: `, event);
146
146
  }
147
147
  };
@@ -153,4 +153,4 @@ BaseSubscriberForEntity = __decorate([
153
153
  export { BaseSubscriberForEntity };
154
154
  ;
155
155
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdWJzY3JpYmVyLWZvci1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBTXJFLElBQWUsdUJBQXVCLEdBQXRDLE1BQWUsdUJBQ3BCLFNBQVEsWUFBWTtJQUtwQjs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQVU7UUFFcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFFbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUF1QjtRQUNsQyxJQUFJLENBQUMsb0JBQW9CLENBQUMs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LEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUE2QjtRQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSztZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLEtBQStCO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsS0FBK0I7UUFDdEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0YsQ0FBQTtBQWpMcUIsdUJBQXVCO0lBSDVDLGNBQWMsQ0FBQztRQUNkLFNBQVMsRUFBRSx5QkFBeUI7S0FDckMsQ0FBQztHQUNvQix1QkFBdUIsQ0FpTDVDOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7ICAgRW50aXR5U3Vic2NyaWJlckludGVyZmFjZSwgICBSZWNvdmVyRXZlbnQsICAgU29mdFJlbW92ZUV2ZW50LCAgIEluc2VydEV2ZW50LCAgIFRyYW5zYWN0aW9uU3RhcnRFdmVudCwgICBUcmFuc2FjdGlvbkNvbW1pdEV2ZW50LCAgIFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCwgICBSZW1vdmVFdmVudCwgICBVcGRhdGVFdmVudCwgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBCYXNlSW5qZWN0b3IgfSBmcm9tICcuL2Jhc2UtaW5qZWN0b3InO1xuaW1wb3J0IHsgVGFvblN1YnNjcmliZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvc3Vic2NyaWJlci1kZWNvcmF0b3InO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cbkBUYW9uU3Vic2NyaWJlcih7XG4gIGNsYXNzTmFtZTogJ0Jhc2VTdWJzY3JpYmVyRm9yRW50aXR5Jyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN1YnNjcmliZXJGb3JFbnRpdHk8RW50aXR5ID0gYW55PlxuICBleHRlbmRzIEJhc2VJbmplY3RvclxuICBpbXBsZW1lbnRzIEVudGl0eVN1YnNjcmliZXJJbnRlcmZhY2VcbntcbiAgYWJzdHJhY3QgbGlzdGVuVG8oKTogbmV3ICguLi5hcmdzKSA9PiBFbnRpdHk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgaXMgbG9hZGVkLlxuICAgKi9cbiAgYWZ0ZXJMb2FkKGVudGl0eTogYW55KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIEVOVElUWSBMT0FERUQ6IGAsIGVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBxdWVyeSBleGVjdXRpb24uXG4gICAqL1xuICBiZWZvcmVRdWVyeShldmVudDogYW55KSB7XG5cbiAgICB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fLmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQkVGT1JFIFFVRVJZOiBgLCBldmVudC5xdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAgICovXG4gIGFmdGVyUXVlcnkoZXZlbnQ6IGFueSkge1xuXG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIFFVRVJZOiBgLCBldmVudC5xdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlbnRpdHkgaW5zZXJ0aW9uLlxuICAgKi9cbiAgYmVmb3JlSW5zZXJ0KGV2ZW50OiBJbnNlcnRFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEJFRk9SRSBFTlRJVFkgSU5TRVJURUQ6IGAsIGV2ZW50LmVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVudGl0eSBpbnNlcnRpb24uXG4gICAqL1xuICBhZnRlckluc2VydChldmVudDogSW5zZXJ0RXZlbnQ8YW55Pikge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBFTlRJVFkgSU5TRVJURUQ6IGAsIGV2ZW50LmVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlbnRpdHkgdXBkYXRlLlxuICAgKi9cbiAgYmVmb3JlVXBkYXRlKGV2ZW50OiBVcGRhdGVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEJFRk9SRSBFTlRJVFkgVVBEQVRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHVwZGF0ZS5cbiAgICovXG4gIGFmdGVyVXBkYXRlKGV2ZW50OiBVcGRhdGVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIEVOVElUWSBVUERBVEVEOiBgLCBldmVudC5lbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZW50aXR5IHJlbW92YWwuXG4gICAqL1xuICBiZWZvcmVSZW1vdmUoZXZlbnQ6IFJlbW92ZUV2ZW50PGFueT4pIHtcbiAgICB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fLmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEJFRk9SRSBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBSRU1PVkVEOiBgLFxuICAgICAgICBldmVudC5lbnRpdHksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgcmVtb3ZhbC5cbiAgICovXG4gIGFmdGVyUmVtb3ZlKGV2ZW50OiBSZW1vdmVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBBRlRFUiBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBSRU1PVkVEOiBgLFxuICAgICAgICBldmVudC5lbnRpdHksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZW50aXR5IHJlbW92YWwuXG4gICAqL1xuICBiZWZvcmVTb2Z0UmVtb3ZlKGV2ZW50OiBTb2Z0UmVtb3ZlRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFNPRlQgUkVNT1ZFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHJlbW92YWwuXG4gICAqL1xuICBhZnRlclNvZnRSZW1vdmUoZXZlbnQ6IFNvZnRSZW1vdmVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXy5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBBRlRFUiBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBTT0ZUIFJFTU9WRUQ6IGAsXG4gICAgICAgIGV2ZW50LmVudGl0eSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlbnRpdHkgcmVjb3ZlcnkuXG4gICAqL1xuICBiZWZvcmVSZWNvdmVyKGV2ZW50OiBSZWNvdmVyRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFQ09WRVJFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHJlY292ZXJ5LlxuICAgKi9cbiAgYWZ0ZXJSZWNvdmVyKGV2ZW50OiBSZWNvdmVyRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQUZURVIgRU5USVRZIFdJVEggSUQgJHtldmVudC5lbnRpdHlJZH0gUkVDT1ZFUkVEOiBgLFxuICAgICAgICBldmVudC5lbnRpdHksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgdHJhbnNhY3Rpb24gc3RhcnQuXG4gICAqL1xuICBiZWZvcmVUcmFuc2FjdGlvblN0YXJ0KGV2ZW50OiBUcmFuc2FjdGlvblN0YXJ0RXZlbnQpIHtcbiAgICB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fLmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQkVGT1JFIFRSQU5TQUNUSU9OIFNUQVJURUQ6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdHJhbnNhY3Rpb24gc3RhcnQuXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uU3RhcnQoZXZlbnQ6IFRyYW5zYWN0aW9uU3RhcnRFdmVudCkge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBTVEFSVEVEOiBgLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSB0cmFuc2FjdGlvbiBjb21taXQuXG4gICAqL1xuICBiZWZvcmVUcmFuc2FjdGlvbkNvbW1pdChldmVudDogVHJhbnNhY3Rpb25Db21taXRFdmVudCkge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gQ09NTUlUVEVEOiBgLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIHRyYW5zYWN0aW9uIGNvbW1pdC5cbiAgICovXG4gIGFmdGVyVHJhbnNhY3Rpb25Db21taXQoZXZlbnQ6IFRyYW5zYWN0aW9uQ29tbWl0RXZlbnQpIHtcbiAgICB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fLmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQUZURVIgVFJBTlNBQ1RJT04gQ09NTUlUVEVEOiBgLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSB0cmFuc2FjdGlvbiByb2xsYmFjay5cbiAgICovXG4gIGJlZm9yZVRyYW5zYWN0aW9uUm9sbGJhY2soZXZlbnQ6IFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCkge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gUk9MTEJBQ0s6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdHJhbnNhY3Rpb24gcm9sbGJhY2suXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uUm9sbGJhY2soZXZlbnQ6IFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCkge1xuICAgIHRoaXMuX19lbmRwb2ludF9jb250ZXh0X18ubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBST0xMQkFDSzogYCwgZXZlbnQpO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9iYXNlLWNsYXNzZXMvYmFzZS1zdWJzY3JpYmVyLWZvci1lbnRpdHkudHMiXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdWJzY3JpYmVyLWZvci1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBTXJFLElBQWUsdUJBQXVCLEdBQXRDLE1BQWUsdUJBQ3BCLFNBQVEsWUFBWTtJQUtwQjs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQVU7UUFFcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFFbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUF1QjtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDWixP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O0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUE2QjtRQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLEtBQStCO1FBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsS0FBK0I7UUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0YsQ0FBQTtBQWpMcUIsdUJBQXVCO0lBSDVDLGNBQWMsQ0FBQztRQUNkLFNBQVMsRUFBRSx5QkFBeUI7S0FDckMsQ0FBQztHQUNvQix1QkFBdUIsQ0FpTDVDOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7ICAgRW50aXR5U3Vic2NyaWJlckludGVyZmFjZSwgICBSZWNvdmVyRXZlbnQsICAgU29mdFJlbW92ZUV2ZW50LCAgIEluc2VydEV2ZW50LCAgIFRyYW5zYWN0aW9uU3RhcnRFdmVudCwgICBUcmFuc2FjdGlvbkNvbW1pdEV2ZW50LCAgIFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCwgICBSZW1vdmVFdmVudCwgICBVcGRhdGVFdmVudCwgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBCYXNlSW5qZWN0b3IgfSBmcm9tICcuL2Jhc2UtaW5qZWN0b3InO1xuaW1wb3J0IHsgVGFvblN1YnNjcmliZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvc3Vic2NyaWJlci1kZWNvcmF0b3InO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cbkBUYW9uU3Vic2NyaWJlcih7XG4gIGNsYXNzTmFtZTogJ0Jhc2VTdWJzY3JpYmVyRm9yRW50aXR5Jyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN1YnNjcmliZXJGb3JFbnRpdHk8RW50aXR5ID0gYW55PlxuICBleHRlbmRzIEJhc2VJbmplY3RvclxuICBpbXBsZW1lbnRzIEVudGl0eVN1YnNjcmliZXJJbnRlcmZhY2VcbntcbiAgYWJzdHJhY3QgbGlzdGVuVG8oKTogbmV3ICguLi5hcmdzKSA9PiBFbnRpdHk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgaXMgbG9hZGVkLlxuICAgKi9cbiAgYWZ0ZXJMb2FkKGVudGl0eTogYW55KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBFTlRJVFkgTE9BREVEOiBgLCBlbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgcXVlcnkgZXhlY3V0aW9uLlxuICAgKi9cbiAgYmVmb3JlUXVlcnkoZXZlbnQ6IGFueSkge1xuXG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgUVVFUlk6IGAsIGV2ZW50LnF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgcXVlcnkgZXhlY3V0aW9uLlxuICAgKi9cbiAgYWZ0ZXJRdWVyeShldmVudDogYW55KSB7XG5cbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIFFVRVJZOiBgLCBldmVudC5xdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlbnRpdHkgaW5zZXJ0aW9uLlxuICAgKi9cbiAgYmVmb3JlSW5zZXJ0KGV2ZW50OiBJbnNlcnRFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgRU5USVRZIElOU0VSVEVEOiBgLCBldmVudC5lbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgaW5zZXJ0aW9uLlxuICAgKi9cbiAgYWZ0ZXJJbnNlcnQoZXZlbnQ6IEluc2VydEV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIEVOVElUWSBJTlNFUlRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSB1cGRhdGUuXG4gICAqL1xuICBiZWZvcmVVcGRhdGUoZXZlbnQ6IFVwZGF0ZUV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEJFRk9SRSBFTlRJVFkgVVBEQVRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHVwZGF0ZS5cbiAgICovXG4gIGFmdGVyVXBkYXRlKGV2ZW50OiBVcGRhdGVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBFTlRJVFkgVVBEQVRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYmVmb3JlUmVtb3ZlKGV2ZW50OiBSZW1vdmVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFTU9WRUQ6IGAsXG4gICAgICAgIGV2ZW50LmVudGl0eSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYWZ0ZXJSZW1vdmUoZXZlbnQ6IFJlbW92ZUV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBBRlRFUiBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBSRU1PVkVEOiBgLFxuICAgICAgICBldmVudC5lbnRpdHksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZW50aXR5IHJlbW92YWwuXG4gICAqL1xuICBiZWZvcmVTb2Z0UmVtb3ZlKGV2ZW50OiBTb2Z0UmVtb3ZlRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEJFRk9SRSBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBTT0ZUIFJFTU9WRUQ6IGAsXG4gICAgICAgIGV2ZW50LmVudGl0eSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYWZ0ZXJTb2Z0UmVtb3ZlKGV2ZW50OiBTb2Z0UmVtb3ZlRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEFGVEVSIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFNPRlQgUkVNT1ZFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSByZWNvdmVyeS5cbiAgICovXG4gIGJlZm9yZVJlY292ZXIoZXZlbnQ6IFJlY292ZXJFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFQ09WRVJFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHJlY292ZXJ5LlxuICAgKi9cbiAgYWZ0ZXJSZWNvdmVyKGV2ZW50OiBSZWNvdmVyRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEFGVEVSIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFQ09WRVJFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIHRyYW5zYWN0aW9uIHN0YXJ0LlxuICAgKi9cbiAgYmVmb3JlVHJhbnNhY3Rpb25TdGFydChldmVudDogVHJhbnNhY3Rpb25TdGFydEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gU1RBUlRFRDogYCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB0cmFuc2FjdGlvbiBzdGFydC5cbiAgICovXG4gIGFmdGVyVHJhbnNhY3Rpb25TdGFydChldmVudDogVHJhbnNhY3Rpb25TdGFydEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBTVEFSVEVEOiBgLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSB0cmFuc2FjdGlvbiBjb21taXQuXG4gICAqL1xuICBiZWZvcmVUcmFuc2FjdGlvbkNvbW1pdChldmVudDogVHJhbnNhY3Rpb25Db21taXRFdmVudCkge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQkVGT1JFIFRSQU5TQUNUSU9OIENPTU1JVFRFRDogYCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB0cmFuc2FjdGlvbiBjb21taXQuXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uQ29tbWl0KGV2ZW50OiBUcmFuc2FjdGlvbkNvbW1pdEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBDT01NSVRURUQ6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIHRyYW5zYWN0aW9uIHJvbGxiYWNrLlxuICAgKi9cbiAgYmVmb3JlVHJhbnNhY3Rpb25Sb2xsYmFjayhldmVudDogVHJhbnNhY3Rpb25Sb2xsYmFja0V2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gUk9MTEJBQ0s6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdHJhbnNhY3Rpb24gcm9sbGJhY2suXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uUm9sbGJhY2soZXZlbnQ6IFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCkge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQUZURVIgVFJBTlNBQ1RJT04gUk9MTEJBQ0s6IGAsIGV2ZW50KTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5LnRzIl19
@@ -7,6 +7,7 @@ import * as provider from './base-provider';
7
7
  import * as baseClass from './base-class';
8
8
  import * as baseContext from './base-context';
9
9
  import * as baseSubscriberEntity from './base-subscriber-for-entity';
10
+ import * as baseMigration from './base-migration';
10
11
  export var Base;
11
12
  (function (Base) {
12
13
  Base.Controller = controller.BaseController;
@@ -17,8 +18,9 @@ export var Base;
17
18
  Base.Class = baseClass.BaseClass;
18
19
  Base.Repository = repository.BaseRepository;
19
20
  Base.SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;
21
+ Base.Migration = baseMigration.BaseMigration;
20
22
  Base.Context = baseContext.BaseContext;
21
23
  })(Base || (Base = {}));
22
24
  ;
23
25
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9iYXNlLWNsYXNzZXMvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssb0JBQW9CLE1BQU0sOEJBQThCLENBQUM7QUFDckUsTUFBTSxLQUFXLElBQUksQ0FXcEI7QUFYRCxXQUFpQixJQUFJO0lBQ0wsZUFBVSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDdkMsbUJBQWMsR0FBRyxjQUFjLENBQUMsa0JBQWtCLENBQUM7SUFDbkQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDM0IsbUJBQWMsR0FBRyxjQUFjLENBQUMsa0JBQWtCLENBQUM7SUFFbkQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDakMsVUFBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDNUIsZUFBVSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDdkMsd0JBQW1CLEdBQUcsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7SUFDcEUsWUFBTyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7QUFDakQsQ0FBQyxFQVhnQixJQUFJLEtBQUosSUFBSSxRQVdwQjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCAqIGFzIGNvbnRyb2xsZXIgZnJvbSAnLi9iYXNlLWNvbnRyb2xsZXInO1xuaW1wb3J0ICogYXMgY3J1ZENvbnRyb2xsZXIgZnJvbSAnLi9iYXNlLWNydWQtY29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBlbnRpdHkgZnJvbSAnLi9iYXNlLWVudGl0eSc7XG5pbXBvcnQgKiBhcyBhYnN0cmFjdEVudGl0eSBmcm9tICcuL2Jhc2UtYWJzdHJhY3QtZW50aXR5JztcbmltcG9ydCAqIGFzIHJlcG9zaXRvcnkgZnJvbSAnLi9iYXNlLXJlcG9zaXRvcnknO1xuaW1wb3J0ICogYXMgcHJvdmlkZXIgZnJvbSAnLi9iYXNlLXByb3ZpZGVyJztcbmltcG9ydCAqIGFzIGJhc2VDbGFzcyBmcm9tICcuL2Jhc2UtY2xhc3MnO1xuaW1wb3J0ICogYXMgYmFzZUNvbnRleHQgZnJvbSAnLi9iYXNlLWNvbnRleHQnO1xuaW1wb3J0ICogYXMgYmFzZVN1YnNjcmliZXJFbnRpdHkgZnJvbSAnLi9iYXNlLXN1YnNjcmliZXItZm9yLWVudGl0eSc7XG5leHBvcnQgbmFtZXNwYWNlIEJhc2Uge1xuICBleHBvcnQgaW1wb3J0IENvbnRyb2xsZXIgPSBjb250cm9sbGVyLkJhc2VDb250cm9sbGVyO1xuICBleHBvcnQgaW1wb3J0IENydWRDb250cm9sbGVyID0gY3J1ZENvbnRyb2xsZXIuQmFzZUNydWRDb250cm9sbGVyO1xuICBleHBvcnQgaW1wb3J0IEVudGl0eSA9IGVudGl0eS5CYXNlRW50aXR5O1xuICBleHBvcnQgaW1wb3J0IEFic3RyYWN0RW50aXR5ID0gYWJzdHJhY3RFbnRpdHkuQmFzZUFic3RyYWN0RW50aXR5O1xuICBleHBvcnQgaW1wb3J0IEFic3RyYWN0RW50aXR5T21pdEtleXMgPSBhYnN0cmFjdEVudGl0eS5BYnN0cmFjdEVudGl0eU9taXRLZXlzO1xuICBleHBvcnQgaW1wb3J0IFByb3ZpZGVyID0gcHJvdmlkZXIuQmFzZVByb3ZpZGVyO1xuICBleHBvcnQgaW1wb3J0IENsYXNzID0gYmFzZUNsYXNzLkJhc2VDbGFzcztcbiAgZXhwb3J0IGltcG9ydCBSZXBvc2l0b3J5ID0gcmVwb3NpdG9yeS5CYXNlUmVwb3NpdG9yeTtcbiAgZXhwb3J0IGltcG9ydCBTdWJzY3JpYmVyRm9yRW50aXR5ID0gYmFzZVN1YnNjcmliZXJFbnRpdHkuQmFzZVN1YnNjcmliZXJGb3JFbnRpdHk7XG4gIGV4cG9ydCBjb25zdCBDb250ZXh0ID0gYmFzZUNvbnRleHQuQmFzZUNvbnRleHQ7XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9iYXNlLWNsYXNzZXMvYmFzZS50cyJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9iYXNlLWNsYXNzZXMvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssb0JBQW9CLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxNQUFNLEtBQVcsSUFBSSxDQVlwQjtBQVpELFdBQWlCLElBQUk7SUFDTCxlQUFVLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUN2QyxtQkFBYyxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztJQUNuRCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUMzQixtQkFBYyxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztJQUVuRCxhQUFRLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUNqQyxVQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM1QixlQUFVLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUN2Qyx3QkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQztJQUNuRSxjQUFTLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxZQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztBQUNqRCxDQUFDLEVBWmdCLElBQUksS0FBSixJQUFJLFFBWXBCO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwREFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0ICogYXMgY29udHJvbGxlciBmcm9tICcuL2Jhc2UtY29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBjcnVkQ29udHJvbGxlciBmcm9tICcuL2Jhc2UtY3J1ZC1jb250cm9sbGVyJztcbmltcG9ydCAqIGFzIGVudGl0eSBmcm9tICcuL2Jhc2UtZW50aXR5JztcbmltcG9ydCAqIGFzIGFic3RyYWN0RW50aXR5IGZyb20gJy4vYmFzZS1hYnN0cmFjdC1lbnRpdHknO1xuaW1wb3J0ICogYXMgcmVwb3NpdG9yeSBmcm9tICcuL2Jhc2UtcmVwb3NpdG9yeSc7XG5pbXBvcnQgKiBhcyBwcm92aWRlciBmcm9tICcuL2Jhc2UtcHJvdmlkZXInO1xuaW1wb3J0ICogYXMgYmFzZUNsYXNzIGZyb20gJy4vYmFzZS1jbGFzcyc7XG5pbXBvcnQgKiBhcyBiYXNlQ29udGV4dCBmcm9tICcuL2Jhc2UtY29udGV4dCc7XG5pbXBvcnQgKiBhcyBiYXNlU3Vic2NyaWJlckVudGl0eSBmcm9tICcuL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5JztcbmltcG9ydCAqIGFzIGJhc2VNaWdyYXRpb24gZnJvbSAnLi9iYXNlLW1pZ3JhdGlvbic7XG5leHBvcnQgbmFtZXNwYWNlIEJhc2Uge1xuICBleHBvcnQgaW1wb3J0IENvbnRyb2xsZXIgPSBjb250cm9sbGVyLkJhc2VDb250cm9sbGVyO1xuICBleHBvcnQgaW1wb3J0IENydWRDb250cm9sbGVyID0gY3J1ZENvbnRyb2xsZXIuQmFzZUNydWRDb250cm9sbGVyO1xuICBleHBvcnQgaW1wb3J0IEVudGl0eSA9IGVudGl0eS5CYXNlRW50aXR5O1xuICBleHBvcnQgaW1wb3J0IEFic3RyYWN0RW50aXR5ID0gYWJzdHJhY3RFbnRpdHkuQmFzZUFic3RyYWN0RW50aXR5O1xuICBleHBvcnQgaW1wb3J0IEFic3RyYWN0RW50aXR5T21pdEtleXMgPSBhYnN0cmFjdEVudGl0eS5BYnN0cmFjdEVudGl0eU9taXRLZXlzO1xuICBleHBvcnQgaW1wb3J0IFByb3ZpZGVyID0gcHJvdmlkZXIuQmFzZVByb3ZpZGVyO1xuICBleHBvcnQgaW1wb3J0IENsYXNzID0gYmFzZUNsYXNzLkJhc2VDbGFzcztcbiAgZXhwb3J0IGltcG9ydCBSZXBvc2l0b3J5ID0gcmVwb3NpdG9yeS5CYXNlUmVwb3NpdG9yeTtcbiAgZXhwb3J0IGltcG9ydCBTdWJzY3JpYmVyRm9yRW50aXR5ID0gYmFzZVN1YnNjcmliZXJFbnRpdHkuQmFzZVN1YnNjcmliZXJGb3JFbnRpdHk7XG4gIGV4cG9ydCBpbXBvcnQgTWlncmF0aW9uID0gYmFzZU1pZ3JhdGlvbi5CYXNlTWlncmF0aW9uO1xuICBleHBvcnQgY29uc3QgQ29udGV4dCA9IGJhc2VDb250ZXh0LkJhc2VDb250ZXh0O1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2UudHMiXX0=