@coolon/angular-ui-powerups 16.1.0-aplpha.168 → 16.1.0-aplpha.17

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 (249) hide show
  1. package/assets/activities/activities.scss +3 -5
  2. package/assets/activities/input-activities.scss +6 -14
  3. package/assets/form.scss +27 -74
  4. package/assets/icons.scss +0 -1
  5. package/assets/styles.scss +0 -2
  6. package/assets/table.scss +19 -41
  7. package/assets/tabs.scss +5 -15
  8. package/esm2022/lib/animations/slide-animations.mjs +10 -15
  9. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  10. package/esm2022/lib/components/commands/command/command.component.mjs +29 -34
  11. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +3 -11
  12. package/esm2022/lib/components/commands/command-face.mjs +11 -12
  13. package/esm2022/lib/components/commands/group/popup-aware.component.mjs +8 -31
  14. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +23 -25
  15. package/esm2022/lib/components/commands/group/popup-menu/more-menu.component.mjs +20 -11
  16. package/esm2022/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +7 -12
  17. package/esm2022/lib/components/commands/group/popup-menu/popup-menu.component.mjs +20 -11
  18. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +6 -8
  19. package/esm2022/lib/components/commands/separator.component.mjs +12 -6
  20. package/esm2022/lib/components/components.module.mjs +30 -55
  21. package/esm2022/lib/components/disposable-component.mjs +7 -32
  22. package/esm2022/lib/components/exports.mjs +5 -14
  23. package/esm2022/lib/components/forms/abstract-input.component.mjs +12 -55
  24. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +4 -4
  25. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +6 -8
  26. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +4 -4
  27. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +9 -84
  28. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +3 -40
  29. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +10 -11
  30. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +11 -30
  31. package/esm2022/lib/components/forms/text-input/text-input.component.mjs +4 -8
  32. package/esm2022/lib/components/icon/icon.component.mjs +4 -7
  33. package/esm2022/lib/components/loadable-component.mjs +8 -24
  34. package/esm2022/lib/components/resize-aware.component.mjs +24 -61
  35. package/esm2022/lib/components/switch-case/switch-case.component.mjs +7 -5
  36. package/esm2022/lib/components/tables/abstract-table-model.mjs +63 -112
  37. package/esm2022/lib/components/tables/abstract-table.component.mjs +5 -19
  38. package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
  39. package/esm2022/lib/components/tables/column/column-model.mjs +6 -16
  40. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  41. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  42. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  43. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  44. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  45. package/esm2022/lib/components/tables/column/selection-column-model.mjs +13 -35
  46. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +2 -2
  47. package/esm2022/lib/components/tables/editor/edit-session.mjs +1 -1
  48. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +2 -4
  49. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
  50. package/esm2022/lib/components/tables/paginator/paginator.component.mjs +1 -1
  51. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +5 -23
  52. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  53. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +4 -7
  54. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +40 -150
  55. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +6 -6
  56. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.mjs +33 -0
  57. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +60 -0
  58. package/esm2022/lib/components/tables/table/table-model.mjs +3 -12
  59. package/esm2022/lib/components/tables/table/table.component.mjs +61 -39
  60. package/esm2022/lib/components/tables/table-row-menu/table-row-menu.component.mjs +84 -0
  61. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
  62. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  63. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  64. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +5 -12
  65. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +7 -4
  66. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  67. package/esm2022/lib/directives/command.directive.mjs +7 -18
  68. package/esm2022/lib/directives/directives.module.mjs +1 -1
  69. package/esm2022/lib/directives/exports.mjs +1 -2
  70. package/esm2022/lib/directives/highlight.pipe.mjs +8 -9
  71. package/esm2022/lib/interaction/abstract-interaction-context.mjs +7 -6
  72. package/esm2022/lib/interaction/activity.mjs +21 -20
  73. package/esm2022/lib/interaction/alert.mjs +2 -2
  74. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +8 -11
  75. package/esm2022/lib/interaction/components/abstract-dialog.component.mjs +41 -1
  76. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +16 -28
  77. package/esm2022/lib/interaction/components/activity-body/activity-body.component.mjs +2 -8
  78. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +15 -46
  79. package/esm2022/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +15 -53
  80. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  81. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  82. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  83. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  84. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +10 -10
  85. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +8 -4
  86. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +8 -4
  87. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +9 -7
  88. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  89. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +4 -4
  90. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +5 -21
  91. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  92. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +2 -4
  93. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +4 -8
  94. package/esm2022/lib/interaction/confirm.mjs +2 -26
  95. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  96. package/esm2022/lib/interaction/exports.mjs +1 -6
  97. package/esm2022/lib/interaction/interaction-context.mjs +2 -3
  98. package/esm2022/lib/interaction/interaction.module.mjs +14 -22
  99. package/esm2022/lib/interaction/services/interaction-service-routing-adapter.mjs +4 -4
  100. package/esm2022/lib/interaction/services/interaction.service.mjs +6 -18
  101. package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +2 -2
  102. package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +4 -23
  103. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +5 -4
  104. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +9 -7
  105. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  106. package/esm2022/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +1 -1
  107. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  108. package/esm2022/lib/place/guards/place.guard.mjs +5 -6
  109. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  110. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
  111. package/esm2022/lib/place/navigation/session/navigation-session.mjs +2 -2
  112. package/esm2022/lib/place/place-auth-service.mjs +6 -7
  113. package/esm2022/lib/place/place-component.mjs +19 -29
  114. package/esm2022/lib/place/place-definition.mjs +4 -15
  115. package/esm2022/lib/place/place-history.mjs +2 -2
  116. package/esm2022/lib/place/place-router.mjs +23 -27
  117. package/esm2022/lib/place/place.decorator.mjs +2 -2
  118. package/esm2022/lib/place/place.module.mjs +5 -1
  119. package/esm2022/lib/place/route/formatter.mjs +2 -2
  120. package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
  121. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  122. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  123. package/esm2022/lib/place/visit-segment.mjs +2 -2
  124. package/esm2022/lib/place/visit.mjs +2 -2
  125. package/esm2022/lib/services/exports.mjs +1 -2
  126. package/fesm2022/coolon-angular-ui-powerups.mjs +1085 -2523
  127. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  128. package/lib/animations/slide-animations.d.ts +0 -1
  129. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  130. package/lib/components/commands/command/command.component.d.ts +8 -8
  131. package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
  132. package/lib/components/commands/command-face.d.ts +9 -8
  133. package/lib/components/commands/group/popup-aware.component.d.ts +4 -9
  134. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +4 -4
  135. package/lib/components/commands/group/popup-menu/more-menu.component.d.ts +4 -2
  136. package/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.d.ts +0 -2
  137. package/lib/components/commands/group/popup-menu/popup-menu.component.d.ts +4 -2
  138. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  139. package/lib/components/commands/separator.component.d.ts +4 -2
  140. package/lib/components/components.module.d.ts +55 -60
  141. package/lib/components/disposable-component.d.ts +3 -16
  142. package/lib/components/exports.d.ts +4 -13
  143. package/lib/components/forms/abstract-input.component.d.ts +5 -13
  144. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  145. package/lib/components/forms/number-input/number-input.component.d.ts +4 -16
  146. package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
  147. package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
  148. package/lib/components/forms/string-input/string-input.component.d.ts +1 -7
  149. package/lib/components/forms/text-input/text-input.component.d.ts +0 -3
  150. package/lib/components/loadable-component.d.ts +5 -10
  151. package/lib/components/resize-aware.component.d.ts +5 -24
  152. package/lib/components/switch-case/switch-case.component.d.ts +3 -2
  153. package/lib/components/tables/abstract-table-model.d.ts +25 -50
  154. package/lib/components/tables/abstract-table.component.d.ts +3 -4
  155. package/lib/components/tables/column/column-list-model.d.ts +13 -0
  156. package/lib/components/tables/column/column-model.d.ts +3 -7
  157. package/lib/components/tables/column/custom-template-column-model.d.ts +2 -3
  158. package/lib/components/tables/column/custom-value-column-model.d.ts +2 -3
  159. package/lib/components/tables/column/editor-controls-column-model.d.ts +2 -3
  160. package/lib/components/tables/column/list-propery-column-model.d.ts +2 -3
  161. package/lib/components/tables/column/property-column-model.d.ts +2 -3
  162. package/lib/components/tables/column/selection-column-model.d.ts +4 -10
  163. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  164. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  165. package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
  166. package/lib/components/tables/renderer/cell-portal-ref.d.ts +12 -20
  167. package/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.d.ts +1 -1
  168. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +16 -40
  169. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +3 -2
  170. package/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.d.ts +15 -0
  171. package/lib/components/tables/renderer/{table-custom-more-menu/table-custom-more-menu.component.d.ts → table-more-menu/table-more-menu.component.d.ts} +7 -8
  172. package/lib/components/tables/table/table-model.d.ts +4 -4
  173. package/lib/components/tables/table/table.component.d.ts +10 -14
  174. package/lib/components/tables/table-row-menu/table-row-menu.component.d.ts +28 -0
  175. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  176. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  177. package/lib/components/tables/tree-table/tree-table-component.d.ts +0 -3
  178. package/lib/components/tables/tree-table/tree-table-model.d.ts +5 -4
  179. package/lib/directives/command.directive.d.ts +4 -6
  180. package/lib/directives/exports.d.ts +0 -1
  181. package/lib/interaction/abstract-interaction-context.d.ts +1 -1
  182. package/lib/interaction/activity.d.ts +7 -7
  183. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -2
  184. package/lib/interaction/components/abstract-dialog.component.d.ts +14 -5
  185. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +9 -12
  186. package/lib/interaction/components/activity-body/activity-body.component.d.ts +1 -2
  187. package/lib/interaction/components/activity-container/activity-container.component.d.ts +4 -10
  188. package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +3 -3
  189. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  190. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +1 -6
  191. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  192. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +3 -5
  193. package/lib/interaction/confirm.d.ts +0 -4
  194. package/lib/interaction/exports.d.ts +0 -5
  195. package/lib/interaction/interaction-context.d.ts +1 -7
  196. package/lib/interaction/interaction.module.d.ts +33 -35
  197. package/lib/interaction/services/interaction-service-routing-adapter.d.ts +2 -2
  198. package/lib/interaction/services/interaction.service.d.ts +1 -2
  199. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.d.ts +1 -1
  200. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.d.ts +1 -3
  201. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -3
  202. package/lib/place/place-auth-service.d.ts +4 -4
  203. package/lib/place/place-component.d.ts +5 -7
  204. package/lib/place/place-definition.d.ts +0 -2
  205. package/lib/place/place-router.d.ts +2 -6
  206. package/lib/place/place.module.d.ts +5 -4
  207. package/lib/services/exports.d.ts +0 -1
  208. package/package.json +4 -6
  209. package/assets/draw.scss +0 -20
  210. package/assets/layout.scss +0 -3
  211. package/esm2022/lib/components/commands/button-renderer/button-renderer.component.mjs +0 -115
  212. package/esm2022/lib/components/file/file-download/file-download.component.mjs +0 -78
  213. package/esm2022/lib/components/forms/form-field.mjs +0 -2
  214. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
  215. package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
  216. package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
  217. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +0 -38
  218. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +0 -7
  219. package/esm2022/lib/components/tables/renderer/table-action-column/menu-builder.mjs +0 -2
  220. package/esm2022/lib/components/tables/renderer/table-action-column/table-action-column.component.mjs +0 -153
  221. package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.mjs +0 -45
  222. package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu.component.mjs +0 -71
  223. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +0 -30
  224. package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
  225. package/esm2022/lib/interaction/activity-context.mjs +0 -4
  226. package/esm2022/lib/interaction/components/alert-renderer/alert-renderer.component.mjs +0 -55
  227. package/esm2022/lib/interaction/components/confirm-renderer/confirm-renderer.component.mjs +0 -54
  228. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -134
  229. package/esm2022/lib/interaction/interaction-context-provider.mjs +0 -17
  230. package/esm2022/lib/services/loading-monitor.mjs +0 -81
  231. package/lib/components/commands/button-renderer/button-renderer.component.d.ts +0 -30
  232. package/lib/components/file/file-download/file-download.component.d.ts +0 -43
  233. package/lib/components/forms/form-field.d.ts +0 -5
  234. package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
  235. package/lib/components/tables/column/column-manager.d.ts +0 -19
  236. package/lib/components/tables/column/column-order-manager.d.ts +0 -20
  237. package/lib/components/tables/footer/footer-row-model.d.ts +0 -22
  238. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +0 -6
  239. package/lib/components/tables/renderer/table-action-column/menu-builder.d.ts +0 -7
  240. package/lib/components/tables/renderer/table-action-column/table-action-column.component.d.ts +0 -42
  241. package/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.d.ts +0 -19
  242. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +0 -11
  243. package/lib/directives/resize-observer.directive.d.ts +0 -16
  244. package/lib/interaction/activity-context.d.ts +0 -9
  245. package/lib/interaction/components/alert-renderer/alert-renderer.component.d.ts +0 -17
  246. package/lib/interaction/components/confirm-renderer/confirm-renderer.component.d.ts +0 -15
  247. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
  248. package/lib/interaction/interaction-context-provider.d.ts +0 -11
  249. package/lib/services/loading-monitor.d.ts +0 -29
@@ -1,5 +1,5 @@
1
1
  import { assert } from '@coolon/pectin';
2
- import { isEqual } from 'lodash-es';
2
+ import { isEqual } from 'lodash';
3
3
  /**
4
4
  * This class handles the logic around canDeactivate for a given router state transition. It's core responsibilities are:
5
5
  * 1. Ensure we only ask the component to deactivate once on a given navigation cycle (since visit sanitisation can result in multiple round trips to through the router.)
@@ -84,4 +84,4 @@ export class PlaceComponentDeactivationHandler {
84
84
  return !nextState.includesPathOf(this.component.placeDefinition);
85
85
  }
86
86
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFNbEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGlDQUFpQztJQUl2QjtJQUFvQztJQUErQztJQUZoRyxvQkFBb0IsQ0FBaUM7SUFFN0QsWUFBcUIsU0FBeUIsRUFBVyxpQkFBb0MsRUFBVyxrQkFBMkI7UUFBOUcsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBVyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFTO1FBQ2pJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO0lBQ1gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUF1QixFQUFFLFNBQXNCO1FBQ2pFLDJFQUEyRTtRQUMzRSxvRkFBb0Y7UUFDcEYsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDOUIsd0ZBQXdGO1lBQ3hGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUdELFdBQVc7SUFDRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsVUFBdUIsRUFBRSxTQUFzQjtRQUNwRix5R0FBeUc7UUFDekcsK0lBQStJO1FBQy9JLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtZQUVyQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsOEJBQThCLEVBQUUsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSw2QkFBNkI7b0JBQ2pFLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDZCQUE2QixFQUFFLENBQUM7b0JBQ3BFLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7aUJBQU07Z0JBQ0wscURBQXFEO2dCQUNyRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3hFLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDL0UsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBRUQscURBQXFEO1FBQ3JELDhIQUE4SDtRQUM5SCwrR0FBK0c7UUFDL0csSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM3RyxxR0FBcUc7WUFDckcsd0RBQXdEO1lBQ3hELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3BGLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsQ0FBQztnQkFDNUYsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE9BQU8sUUFBUSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxtREFBbUQ7WUFDbkQsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzFIO0lBQ0gsQ0FBQztJQUVTLHdCQUF3QixDQUFDLFNBQXNCO1FBQ3ZELHFGQUFxRjtRQUNyRixnRkFBZ0Y7UUFDaEYsMENBQTBDO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc3NlcnR9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtQbGFjZUNvbXBvbmVudH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7UGxhY2VEZWZpbml0aW9ufSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gJy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQge05hdmlnYXRpb25TZXNzaW9ufSBmcm9tICcuL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGxvZ2ljIGFyb3VuZCBjYW5EZWFjdGl2YXRlIGZvciBhIGdpdmVuIHJvdXRlciBzdGF0ZSB0cmFuc2l0aW9uLiAgSXQncyBjb3JlIHJlc3BvbnNpYmlsaXRpZXMgYXJlOlxuICogMS4gRW5zdXJlIHdlIG9ubHkgYXNrIHRoZSBjb21wb25lbnQgdG8gZGVhY3RpdmF0ZSBvbmNlIG9uIGEgZ2l2ZW4gbmF2aWdhdGlvbiBjeWNsZSAoc2luY2UgdmlzaXQgc2FuaXRpc2F0aW9uIGNhbiByZXN1bHQgaW4gbXVsdGlwbGUgcm91bmQgdHJpcHMgdG8gdGhyb3VnaCB0aGUgcm91dGVyLilcbiAqIDIuIEVuc3VyZSBvbmx5IHRoZSBwcmltYXJ5IHBsYWNlIGNvbXBvbmVudCBpcyBhc2tlZCB3aGVuIHRoZXJlIGFyZSBuZXN0ZWQgcGxhY2VzLiAgVGhlIHByaW1hcnkgY29tcG9uZW50IGlzIHRoZSBvbmUgYXQgdGhlIHRvcFxuICogICAgb2YgdGhlIHJvdXRpbmcgY2hhbmdlIHRyZWUuXG4gKiAzLiBBdXRvbWF0aWNhbGx5IGhhbmRsZSBzdGFuZGFyZCBpbnRlcmFjdGlvbiBzY2VuYXJpb3Mgb24gdGhlIGNvbXBvbmVudHMgYmVoYWxmLlxuICovXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyIHtcblxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGVQcm9taXNlOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb246IE5hdmlnYXRpb25TZXNzaW9uLCByZWFkb25seSBpc1ByaW1hcnlDb21wb25lbnQ6IGJvb2xlYW4pIHtcbiAgICBhc3NlcnQubm90TmlsKGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXQgcm91dGVySW50ZXJhY3Rpb25BZGFwdGVyKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmludGVyYWN0aW9uU2VydmljZUFkYXB0ZXI7XG4gIH1cblxuICBnZXQgdXJsU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi51cmxTZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOlBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbjtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBwcm9taXNlIGZyb20gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICBpZiAoIXRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBjcmVhdGluZyBkZWFjdGl2YXRlIHByb21pc2UgZm9yIC0+ICR7dGhpcy5jb21wb25lbnQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UgPSB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQoY3VycmVudFVybCwgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2U7XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBhc3luYyBjYW5EZWFjdGl2YXRlQ29tcG9uZW50KGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxVcmxTbmFwc2hvdCB8IGJvb2xlYW4+IHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNhbmNlbCBhbnkgYWN0aXZlIGFjdGl2aXRpZXMgaWYgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAvLyBJZiB3ZSBoYW5kbGVkIG1vcmUgdGhhbiBqdXN0IHRoZSBwb3Agc3RhdGUgdGhlbiBpdCBsZWFkcyB0byB0aGUgVUkgaWdub3JpbmcgY2xpY2tzIGFuZCBqdXN0IGNhbmNlbGxpbmcgdGhpbmdzIHdoaWNoIGlzIGRlZXBseSBkaXNjb25jZXJ0aW5nLlxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmlzUG9wU3RhdGUpIHtcblxuICAgICAgaWYgKHRoaXMuaXNQcmltYXJ5Q29tcG9uZW50ICYmIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmlzTW9kYWxBY3RpdmUoKSkge1xuICAgICAgICBjb25zdCByb3V0ZUlkcyA9IHRoaXMudXJsU2VydmljZS5nZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwobmV4dFN0YXRlLnVybCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJZHMgPSB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5nZXRBY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMoKTtcbiAgICAgICAgaWYgKCFpc0VxdWFsKGN1cnJlbnRJZHMsIHJvdXRlSWRzKSkgeyAvLyB3aHkgYW0gSSBjaGVja2luZyB0aGlzPz8/P1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmNhbmNlbEN1cnJlbnRNb2RhbEludGVyYWN0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBpbiBwbGFjZSBpbnRlcmFjdGlvblxuICAgICAgICBpZiAodGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5jYW5jZWxDb21wb25lbnRJbnRlcmFjdGlvbih0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYmVmb3JlIG5vdy4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbiAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyIGRpYWxvZy5cbiAgICBpZiAodGhpcy5pc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlKSkge1xuICAgICAgY29uc3QgY2FuTGVhdmUgPSBhd2FpdCB0aGlzLmNvbXBvbmVudC5fY2FuTGVhdmVQbGFjZSh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmNhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgLy8gVGhlIGNvbXBvbmVudCBoYXMgYW4gYWN0aXZlIGludGVyYWN0aW9uIGJ1dCBubyBkZWFjdGl2YXRpb24gaG9vay4gIFJhdGhlciB0aGFuIGd1ZXNzaW5nIHdoYXQgdG8gZG9cbiAgICAgIC8vIHdlJ2xsIGp1c3QgY2FuY2VsIHRoZSBuYXZpZ2F0aW9uIGFuZCBwcmludCBhIHdhcm5pbmcuXG4gICAgICBpZiAoY2FuTGVhdmUgJiYgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdSb3V0ZSBjaGFuZ2VkIHdoaWxlIGNvbXBvbmVudCBoYXMgYWN0aXZlIGludGVyYWN0aW9uLCBjYW5jZWxsaW5nIG5hdmlnYXRpb24nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FuTGVhdmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVpdGhlciBhbiBpbnRlcmFjdGlvbiBvciB2aXNpdCBwYXJhbWV0ZXIgY2hhbmdlLlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tcG9uZW50Ll9jYW5DaGFuZ2VSb3V0ZVBhcmFtZXRlcnModGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi5jYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEJlY2F1c2UgcGxhY2VzIHdpdGggYSByb3V0ZS1pZCBjb3ZlciB0d28gcm91dGUgc2VnbWVudHMgd2UgZ2V0IGFza2VkIHRvIGRlYWN0aXZhdGVcbiAgICAvLyBpZiB0aGUgcm91dGUgaWQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gIFNvIGlmIG91ciBwYXRoIGlzIHN0aWxsIHByZXNlbnQgdGhlIHVybFxuICAgIC8vIHRoZW4gd2Ugc2hvdWxkbid0IGRlYWN0aXZhdGUgdGhlIHBsYWNlLlxuICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFNL0I7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGlDQUFpQztJQUl2QjtJQUFvQztJQUErQztJQUZoRyxvQkFBb0IsQ0FBaUM7SUFFN0QsWUFBcUIsU0FBeUIsRUFBVyxpQkFBb0MsRUFBVyxrQkFBMkI7UUFBOUcsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBVyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFTO1FBQ2pJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO0lBQ1gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUF1QixFQUFFLFNBQXNCO1FBQ2pFLDJFQUEyRTtRQUMzRSxvRkFBb0Y7UUFDcEYsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDOUIsd0ZBQXdGO1lBQ3hGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUdELFdBQVc7SUFDRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsVUFBdUIsRUFBRSxTQUFzQjtRQUNwRix5R0FBeUc7UUFDekcsK0lBQStJO1FBQy9JLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtZQUVyQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsOEJBQThCLEVBQUUsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSw2QkFBNkI7b0JBQ2pFLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDZCQUE2QixFQUFFLENBQUM7b0JBQ3BFLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7aUJBQU07Z0JBQ0wscURBQXFEO2dCQUNyRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3hFLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDL0UsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBRUQscURBQXFEO1FBQ3JELDhIQUE4SDtRQUM5SCwrR0FBK0c7UUFDL0csSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM3RyxxR0FBcUc7WUFDckcsd0RBQXdEO1lBQ3hELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3BGLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsQ0FBQztnQkFDNUYsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE9BQU8sUUFBUSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxtREFBbUQ7WUFDbkQsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzFIO0lBQ0gsQ0FBQztJQUVTLHdCQUF3QixDQUFDLFNBQXNCO1FBQ3ZELHFGQUFxRjtRQUNyRixnRkFBZ0Y7UUFDaEYsMENBQTBDO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc3NlcnR9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtQbGFjZUNvbXBvbmVudH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7UGxhY2VEZWZpbml0aW9ufSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gJy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQge05hdmlnYXRpb25TZXNzaW9ufSBmcm9tICcuL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGxvZ2ljIGFyb3VuZCBjYW5EZWFjdGl2YXRlIGZvciBhIGdpdmVuIHJvdXRlciBzdGF0ZSB0cmFuc2l0aW9uLiAgSXQncyBjb3JlIHJlc3BvbnNpYmlsaXRpZXMgYXJlOlxuICogMS4gRW5zdXJlIHdlIG9ubHkgYXNrIHRoZSBjb21wb25lbnQgdG8gZGVhY3RpdmF0ZSBvbmNlIG9uIGEgZ2l2ZW4gbmF2aWdhdGlvbiBjeWNsZSAoc2luY2UgdmlzaXQgc2FuaXRpc2F0aW9uIGNhbiByZXN1bHQgaW4gbXVsdGlwbGUgcm91bmQgdHJpcHMgdG8gdGhyb3VnaCB0aGUgcm91dGVyLilcbiAqIDIuIEVuc3VyZSBvbmx5IHRoZSBwcmltYXJ5IHBsYWNlIGNvbXBvbmVudCBpcyBhc2tlZCB3aGVuIHRoZXJlIGFyZSBuZXN0ZWQgcGxhY2VzLiAgVGhlIHByaW1hcnkgY29tcG9uZW50IGlzIHRoZSBvbmUgYXQgdGhlIHRvcFxuICogICAgb2YgdGhlIHJvdXRpbmcgY2hhbmdlIHRyZWUuXG4gKiAzLiBBdXRvbWF0aWNhbGx5IGhhbmRsZSBzdGFuZGFyZCBpbnRlcmFjdGlvbiBzY2VuYXJpb3Mgb24gdGhlIGNvbXBvbmVudHMgYmVoYWxmLlxuICovXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyIHtcblxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGVQcm9taXNlOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb246IE5hdmlnYXRpb25TZXNzaW9uLCByZWFkb25seSBpc1ByaW1hcnlDb21wb25lbnQ6IGJvb2xlYW4pIHtcbiAgICBhc3NlcnQubm90TmlsKGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXQgcm91dGVySW50ZXJhY3Rpb25BZGFwdGVyKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmludGVyYWN0aW9uU2VydmljZUFkYXB0ZXI7XG4gIH1cblxuICBnZXQgdXJsU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi51cmxTZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOlBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbjtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBwcm9taXNlIGZyb20gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICBpZiAoIXRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBjcmVhdGluZyBkZWFjdGl2YXRlIHByb21pc2UgZm9yIC0+ICR7dGhpcy5jb21wb25lbnQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UgPSB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQoY3VycmVudFVybCwgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2U7XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBhc3luYyBjYW5EZWFjdGl2YXRlQ29tcG9uZW50KGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxVcmxTbmFwc2hvdCB8IGJvb2xlYW4+IHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNhbmNlbCBhbnkgYWN0aXZlIGFjdGl2aXRpZXMgaWYgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAvLyBJZiB3ZSBoYW5kbGVkIG1vcmUgdGhhbiBqdXN0IHRoZSBwb3Agc3RhdGUgdGhlbiBpdCBsZWFkcyB0byB0aGUgVUkgaWdub3JpbmcgY2xpY2tzIGFuZCBqdXN0IGNhbmNlbGxpbmcgdGhpbmdzIHdoaWNoIGlzIGRlZXBseSBkaXNjb25jZXJ0aW5nLlxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmlzUG9wU3RhdGUpIHtcblxuICAgICAgaWYgKHRoaXMuaXNQcmltYXJ5Q29tcG9uZW50ICYmIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmlzTW9kYWxBY3RpdmUoKSkge1xuICAgICAgICBjb25zdCByb3V0ZUlkcyA9IHRoaXMudXJsU2VydmljZS5nZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwobmV4dFN0YXRlLnVybCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJZHMgPSB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5nZXRBY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMoKTtcbiAgICAgICAgaWYgKCFpc0VxdWFsKGN1cnJlbnRJZHMsIHJvdXRlSWRzKSkgeyAvLyB3aHkgYW0gSSBjaGVja2luZyB0aGlzPz8/P1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLmNhbmNlbEN1cnJlbnRNb2RhbEludGVyYWN0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBpbiBwbGFjZSBpbnRlcmFjdGlvblxuICAgICAgICBpZiAodGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5jYW5jZWxDb21wb25lbnRJbnRlcmFjdGlvbih0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYmVmb3JlIG5vdy4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbiAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyIGRpYWxvZy5cbiAgICBpZiAodGhpcy5pc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlKSkge1xuICAgICAgY29uc3QgY2FuTGVhdmUgPSBhd2FpdCB0aGlzLmNvbXBvbmVudC5fY2FuTGVhdmVQbGFjZSh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmNhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgLy8gVGhlIGNvbXBvbmVudCBoYXMgYW4gYWN0aXZlIGludGVyYWN0aW9uIGJ1dCBubyBkZWFjdGl2YXRpb24gaG9vay4gIFJhdGhlciB0aGFuIGd1ZXNzaW5nIHdoYXQgdG8gZG9cbiAgICAgIC8vIHdlJ2xsIGp1c3QgY2FuY2VsIHRoZSBuYXZpZ2F0aW9uIGFuZCBwcmludCBhIHdhcm5pbmcuXG4gICAgICBpZiAoY2FuTGVhdmUgJiYgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIuaXNDb21wb25lbnRJbnRlcmFjdGluZyh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdSb3V0ZSBjaGFuZ2VkIHdoaWxlIGNvbXBvbmVudCBoYXMgYWN0aXZlIGludGVyYWN0aW9uLCBjYW5jZWxsaW5nIG5hdmlnYXRpb24nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FuTGVhdmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVpdGhlciBhbiBpbnRlcmFjdGlvbiBvciB2aXNpdCBwYXJhbWV0ZXIgY2hhbmdlLlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tcG9uZW50Ll9jYW5DaGFuZ2VSb3V0ZVBhcmFtZXRlcnModGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi5jYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc0dvaW5nVG9BRGlmZmVyZW50UGxhY2UobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEJlY2F1c2UgcGxhY2VzIHdpdGggYSByb3V0ZS1pZCBjb3ZlciB0d28gcm91dGUgc2VnbWVudHMgd2UgZ2V0IGFza2VkIHRvIGRlYWN0aXZhdGVcbiAgICAvLyBpZiB0aGUgcm91dGUgaWQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gIFNvIGlmIG91ciBwYXRoIGlzIHN0aWxsIHByZXNlbnQgdGhlIHVybFxuICAgIC8vIHRoZW4gd2Ugc2hvdWxkbid0IGRlYWN0aXZhdGUgdGhlIHBsYWNlLlxuICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { lang } from '@coolon/typescript-utilities';
2
- import { isEqual } from 'lodash-es';
2
+ import { isEqual } from 'lodash';
3
3
  import { NavigationSession } from '../navigation-session';
4
4
  import { RemoveLastInteractionFromUrlNavigationSession } from './remove-last-interaction-from-url-navigation-session';
5
5
  export class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {
@@ -13,7 +13,10 @@ export class SynchroniseInteractionContextIdsWithRoute extends NavigationSession
13
13
  return true;
14
14
  }
15
15
  notifyActive() {
16
- this.syncInteractionIdsWithRouter();
16
+ // TODO: Do I still need this??
17
+ setTimeout(() => {
18
+ this.syncInteractionIdsWithRouter();
19
+ });
17
20
  }
18
21
  // @Trace()
19
22
  onRouterEnd(event) {
@@ -83,4 +86,4 @@ export class SynchroniseInteractionContextIdsWithRoute extends NavigationSession
83
86
  lang.methodNotSupported();
84
87
  }
85
88
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkNBQTZDLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUVwSCxNQUFNLE9BQU8seUNBQTBDLFNBQVEsaUJBQWlCO0lBSVI7SUFGN0QsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixZQUFZLE9BQTBCLEVBQUUsV0FBbUIsRUFBVyxzQkFBK0I7UUFDbkcsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUR3QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVM7SUFFckcsQ0FBQztJQUVELElBQWEsaUJBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdRLFlBQVk7UUFDbkIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7SUFDRixXQUFXLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO0lBQ0YsaUJBQWlCLENBQUMsS0FBdUI7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lB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ZW50IjpbImltcG9ydCB7TmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7bGFuZ30gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5cbmltcG9ydCB7aXNFcXVhbH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7TmF2aWdhdGlvbkNvbnRleHR9IGZyb20gJy4uL25hdmlnYXRpb24tY29udGV4dCc7XG5pbXBvcnQge05hdmlnYXRpb25TZXNzaW9ufSBmcm9tICcuLi9uYXZpZ2F0aW9uLXNlc3Npb24nO1xuaW1wb3J0IHtSZW1vdmVMYXN0SW50ZXJhY3Rpb25Gcm9tVXJsTmF2aWdhdGlvblNlc3Npb259IGZyb20gJy4vcmVtb3ZlLWxhc3QtaW50ZXJhY3Rpb24tZnJvbS11cmwtbmF2aWdhdGlvbi1zZXNzaW9uJztcblxuZXhwb3J0IGNsYXNzIFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlIGV4dGVuZHMgTmF2aWdhdGlvblNlc3Npb24ge1xuXG4gIHJlYWRvbmx5IGlzUG9wU3RhdGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCwgc3RhcnRpbmdVcmw6IHN0cmluZywgcmVhZG9ubHkgd2FzVHJpZ2dlcmVkQnlQb3BTdGF0ZTogYm9vbGVhbikge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0YXJ0aW5nVXJsKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBpc0ludGVyYWN0aW9uU3luYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgb3ZlcnJpZGUgbm90aWZ5QWN0aXZlKCkge1xuICAgIHRoaXMuc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcigpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb3ZlcnJpZGUgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQuZmluaXNoUm91dGluZ1Nlc3Npb24oKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG92ZXJyaWRlIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0LmZpbmlzaFJvdXRpbmdTZXNzaW9uKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBzeW5jSW50ZXJhY3Rpb25JZHNXaXRoUm91dGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRJZHMgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZUFkYXB0ZXIuZ2V0QWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzKCk7XG4gICAgY29uc3QgcHJldmlvdXNJZHMgPSB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudExvY2F0aW9uVXJsU25hcHNob3QoKS5nZXRJbnRlcmFjdGlvbklkcygpO1xuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IHN5bmNocm9uaXNlSW50ZXJhY3Rpb25JZHNgLCB7IGlzOiBjdXJyZW50SWRzLmpvaW4oJywnKSwgd2FzOiBwcmV2aW91c0lkcy5qb2luKCcsJykgfSk7XG4gICAgaWYgKGlzRXF1YWwoY3VycmVudElkcywgcHJldmlvdXNJZHMpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnIyMjIEFjdGl2aXR5IGNvbnRleHQgaWRzIHdlcmUgdGhlIHNhbWUsIHNraXBwaW5nJyk7XG4gICAgICB0aGlzLmNvbnRleHQuZmluaXNoUm91dGluZ1Nlc3Npb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXNJZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RBY3Rpdml0eSA9IGN1cnJlbnRJZHMubGVuZ3RoID4gcHJldmlvdXNJZHMubGVuZ3RoICYmIHByZXZpb3VzSWRzLmxlbmd0aCA8IDE7XG4gICAgICAgIHRoaXMuYWRkQWN0aXZpdHlDb250ZXh0VG9Sb3V0ZShjdXJyZW50SWRzLCBpc0ZpcnN0QWN0aXZpdHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBY3Rpdml0eUNvbnRleHRGcm9tUm91dGUoY3VycmVudElkcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYWRkQWN0aXZpdHlDb250ZXh0VG9Sb3V0ZShhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdLCBpc0ZpcnN0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclNuYXBzaG90KCkudXBkYXRlSW50ZXJhY3Rpb25JZHMoYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzKTtcbiAgICB0aGlzLmNvbnRleHQubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwge1xuICAgICAgcmVwbGFjZVVybDogIWlzRmlyc3RcbiAgICB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoIXRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb25VcmxTbmFwc2hvdCgpLmhhc0ludGVyYWN0aW9uSWRzKGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkcykpIHtcbiAgICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYEV4cGVjdGVkIHVybCB0byBiZSAke3VybFNuYXBzaG90LnVybH0gYnV0IHdhcyAke3RoaXMudXJsU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb25VcmwoKX1gKTtcbiAgICAgICAgLy8gdGhpcy51cmxTZXJ2aWNlLnJlc2V0QnJvd3NlckxvY2F0aW9uKHVybFNuYXBzaG90LnVybCwge3JlcGxhY2VDdXJyZW50OiAhaXNGaXJzdH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIHJlbW92ZUFjdGl2aXR5Q29udGV4dEZyb21Sb3V0ZShhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCB1cmxTbmFwc2hvdCA9IHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyU25hcHNob3QoKS51cGRhdGVJbnRlcmFjdGlvbklkcyhhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZCk7XG4gICAgY29uc3QgaXNSZW1vdmluZ0xhc3RBY3Rpdml0eSA9IGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkLmxlbmd0aCA8IDE7XG4gICAgaWYgKGlzUmVtb3ZpbmdMYXN0QWN0aXZpdHkpIHtcbiAgICAgIGlmICh0aGlzLndhc1RyaWdnZXJlZEJ5UG9wU3RhdGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlbW92YWwgd2FzIHRyaWdnZXJlZCBieSBwb3Agc3RhdGUsIG5vdGhpbmcgdG8gZG8uJyk7XG4gICAgICAgIC8vICAgbm9vcC4gIE91ciB1cmwgd2lsbCBiZSBiYWNrIHRvIHRoZSBub24gaW50ZXJhY3Rpb24gdmVyc2lvbiBub3cgc28gd2UgZG9udCcgbmVlZCB0byBkbyBhbnl0aGluZy5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG5vdyB3ZSBqdXN0IHBvcCBvdXIgaW50ZXJhY3Rpb24gaWQncyBmcm9tIHRoZSBicm93c2VyIGhpc3RvcnkuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBSZW1vdmFsIG9mIHRoZSBsYXN0IGFjdGl2aXR5IHdhc24ndCB0cmlnZ2VyZWQgYnkgcG9wIHN0YXRlIHNvIHdlIGhhdmUgdG8gdHJpZ2dlciBvbmUgdG8gY2xlYW4gdGhlIGhpc3RvcnlgKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBSZW1vdmVMYXN0SW50ZXJhY3Rpb25Gcm9tVXJsTmF2aWdhdGlvblNlc3Npb24odGhpcy5jb250ZXh0LCB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnRyYW5zaXRpb25UbyhzZXNzaW9uKTtcbiAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmJhY2soKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2UndmUgcmVtb3ZlZCBhbiBpbnRlcmFjdGlvbiwgYnV0IHdlIHN0aWxsIGhhdmUgcmVtYWluaW5nIGFjdGl2aXRpZXMgc28gd2VcbiAgICAgIC8vIHVwZGF0ZSB0aGUgdXJsIGluIHBsYWNlIGlmIGl0IHdhc24ndCBhIHBvcCBzdGF0ZS4gSWYgaXQgd2FzIGEgcG9wIHN0YXRlIHdlIG5lZWRcbiAgICAgIC8vIHRvICBwdXNoIGl0IGJhY2sgdXAuXG4gICAgICAvLyB0aGlzLnVybFNlcnZpY2UucmVzZXRCcm93c2VyTG9jYXRpb24odXJsU25hcHNob3QudXJsLCB7IHJlcGxhY2VDdXJyZW50OiAhdGhpcy53YXNUcmlnZ2VyZWRCeVBvcFN0YXRlIH0pO1xuICAgICAgdGhpcy5jb250ZXh0Lm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIHtyZXBsYWNlVXJsOiAhdGhpcy53YXNUcmlnZ2VyZWRCeVBvcFN0YXRlfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2FuRGVhY3RpdmF0ZUNhbmNlbGxlZEV2ZW50U2NlbmFyaW8obmV3VXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsYW5nLm1ldGhvZE5vdFN1cHBvcnRlZCgpO1xuICB9XG5cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL3BsYWNlL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUUvQixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkNBQTZDLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUVwSCxNQUFNLE9BQU8seUNBQTBDLFNBQVEsaUJBQWlCO0lBSVI7SUFGN0QsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUU1QixZQUFZLE9BQTBCLEVBQUUsV0FBbUIsRUFBVyxzQkFBK0I7UUFDbkcsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUR3QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVM7SUFFckcsQ0FBQztJQUVELElBQWEsaUJBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdRLFlBQVk7UUFDbkIsK0JBQStCO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO0lBQ0YsV0FBVyxDQUFDLEtBQW9CO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztJQUNGLGlCQUFp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RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2xhbmd9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuXG5pbXBvcnQge2lzRXF1YWx9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge05hdmlnYXRpb25Db250ZXh0fSBmcm9tICcuLi9uYXZpZ2F0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uU2Vzc2lvbn0gZnJvbSAnLi4vbmF2aWdhdGlvbi1zZXNzaW9uJztcbmltcG9ydCB7UmVtb3ZlTGFzdEludGVyYWN0aW9uRnJvbVVybE5hdmlnYXRpb25TZXNzaW9ufSBmcm9tICcuL3JlbW92ZS1sYXN0LWludGVyYWN0aW9uLWZyb20tdXJsLW5hdmlnYXRpb24tc2Vzc2lvbic7XG5cbmV4cG9ydCBjbGFzcyBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZSBleHRlbmRzIE5hdmlnYXRpb25TZXNzaW9uIHtcblxuICByZWFkb25seSBpc1BvcFN0YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogTmF2aWdhdGlvbkNvbnRleHQsIHN0YXJ0aW5nVXJsOiBzdHJpbmcsIHJlYWRvbmx5IHdhc1RyaWdnZXJlZEJ5UG9wU3RhdGU6IGJvb2xlYW4pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdGFydGluZ1VybCk7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgaXNJbnRlcmFjdGlvblN5bmMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIG92ZXJyaWRlIG5vdGlmeUFjdGl2ZSgpIHtcbiAgICAvLyBUT0RPOiBEbyBJIHN0aWxsIG5lZWQgdGhpcz8/XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNJbnRlcmFjdGlvbklkc1dpdGhSb3V0ZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG92ZXJyaWRlIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0LmZpbmlzaFJvdXRpbmdTZXNzaW9uKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvdmVycmlkZSBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5maW5pc2hSb3V0aW5nU2Vzc2lvbigpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgc3luY0ludGVyYWN0aW9uSWRzV2l0aFJvdXRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SWRzID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2VBZGFwdGVyLmdldEFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkcygpO1xuICAgIGNvbnN0IHByZXZpb3VzSWRzID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRMb2NhdGlvblVybFNuYXBzaG90KCkuZ2V0SW50ZXJhY3Rpb25JZHMoKTtcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBzeW5jaHJvbmlzZUludGVyYWN0aW9uSWRzYCwgeyBpczogY3VycmVudElkcy5qb2luKCcsJyksIHdhczogcHJldmlvdXNJZHMuam9pbignLCcpIH0pO1xuICAgIGlmIChpc0VxdWFsKGN1cnJlbnRJZHMsIHByZXZpb3VzSWRzKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coJyMjIyBBY3Rpdml0eSBjb250ZXh0IGlkcyB3ZXJlIHRoZSBzYW1lLCBza2lwcGluZycpO1xuICAgICAgdGhpcy5jb250ZXh0LmZpbmlzaFJvdXRpbmdTZXNzaW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50SWRzLmxlbmd0aCA+IHByZXZpb3VzSWRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBpc0ZpcnN0QWN0aXZpdHkgPSBjdXJyZW50SWRzLmxlbmd0aCA+IHByZXZpb3VzSWRzLmxlbmd0aCAmJiBwcmV2aW91c0lkcy5sZW5ndGggPCAxO1xuICAgICAgICB0aGlzLmFkZEFjdGl2aXR5Q29udGV4dFRvUm91dGUoY3VycmVudElkcywgaXNGaXJzdEFjdGl2aXR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQWN0aXZpdHlDb250ZXh0RnJvbVJvdXRlKGN1cnJlbnRJZHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFkZEFjdGl2aXR5Q29udGV4dFRvUm91dGUoYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzOiByZWFkb25seSBzdHJpbmdbXSwgaXNGaXJzdDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJTbmFwc2hvdCgpLnVwZGF0ZUludGVyYWN0aW9uSWRzKGFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkcyk7XG4gICAgdGhpcy5jb250ZXh0Lm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIHtcbiAgICAgIHJlcGxhY2VVcmw6ICFpc0ZpcnN0XG4gICAgfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudExvY2F0aW9uVXJsU25hcHNob3QoKS5oYXNJbnRlcmFjdGlvbklkcyhhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMpKSB7XG4gICAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBFeHBlY3RlZCB1cmwgdG8gYmUgJHt1cmxTbmFwc2hvdC51cmx9IGJ1dCB3YXMgJHt0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudExvY2F0aW9uVXJsKCl9YCk7XG4gICAgICAgIC8vIHRoaXMudXJsU2VydmljZS5yZXNldEJyb3dzZXJMb2NhdGlvbih1cmxTbmFwc2hvdC51cmwsIHtyZXBsYWNlQ3VycmVudDogIWlzRmlyc3R9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICAvLyBAVHJhY2UoKVxuICByZW1vdmVBY3Rpdml0eUNvbnRleHRGcm9tUm91dGUoYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWQ6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclNuYXBzaG90KCkudXBkYXRlSW50ZXJhY3Rpb25JZHMoYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWQpO1xuICAgIGNvbnN0IGlzUmVtb3ZpbmdMYXN0QWN0aXZpdHkgPSBhY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZC5sZW5ndGggPCAxO1xuICAgIGlmIChpc1JlbW92aW5nTGFzdEFjdGl2aXR5KSB7XG4gICAgICBpZiAodGhpcy53YXNUcmlnZ2VyZWRCeVBvcFN0YXRlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZW1vdmFsIHdhcyB0cmlnZ2VyZWQgYnkgcG9wIHN0YXRlLCBub3RoaW5nIHRvIGRvLicpO1xuICAgICAgICAvLyAgIG5vb3AuICBPdXIgdXJsIHdpbGwgYmUgYmFjayB0byB0aGUgbm9uIGludGVyYWN0aW9uIHZlcnNpb24gbm93IHNvIHdlIGRvbnQnIG5lZWQgdG8gZG8gYW55dGhpbmcuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3cgd2UganVzdCBwb3Agb3VyIGludGVyYWN0aW9uIGlkJ3MgZnJvbSB0aGUgYnJvd3NlciBoaXN0b3J5LlxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgUmVtb3ZhbCBvZiB0aGUgbGFzdCBhY3Rpdml0eSB3YXNuJ3QgdHJpZ2dlcmVkIGJ5IHBvcCBzdGF0ZSBzbyB3ZSBoYXZlIHRvIHRyaWdnZXIgb25lIHRvIGNsZWFuIHRoZSBoaXN0b3J5YCk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgUmVtb3ZlTGFzdEludGVyYWN0aW9uRnJvbVVybE5hdmlnYXRpb25TZXNzaW9uKHRoaXMuY29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSk7XG4gICAgICAgIHRoaXMuY29udGV4dC50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgICAgIHRoaXMudXJsU2VydmljZS5iYWNrKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlJ3ZlIHJlbW92ZWQgYW4gaW50ZXJhY3Rpb24sIGJ1dCB3ZSBzdGlsbCBoYXZlIHJlbWFpbmluZyBhY3Rpdml0aWVzIHNvIHdlXG4gICAgICAvLyB1cGRhdGUgdGhlIHVybCBpbiBwbGFjZSBpZiBpdCB3YXNuJ3QgYSBwb3Agc3RhdGUuIElmIGl0IHdhcyBhIHBvcCBzdGF0ZSB3ZSBuZWVkXG4gICAgICAvLyB0byAgcHVzaCBpdCBiYWNrIHVwLlxuICAgICAgLy8gdGhpcy51cmxTZXJ2aWNlLnJlc2V0QnJvd3NlckxvY2F0aW9uKHVybFNuYXBzaG90LnVybCwgeyByZXBsYWNlQ3VycmVudDogIXRoaXMud2FzVHJpZ2dlcmVkQnlQb3BTdGF0ZSB9KTtcbiAgICAgIHRoaXMuY29udGV4dC5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LCB7IHJlcGxhY2VVcmw6ICF0aGlzLndhc1RyaWdnZXJlZEJ5UG9wU3RhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2FuRGVhY3RpdmF0ZUNhbmNlbGxlZEV2ZW50U2NlbmFyaW8obmV3VXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsYW5nLm1ldGhvZE5vdFN1cHBvcnRlZCgpO1xuICB9XG5cbn1cbiJdfQ==
@@ -17,7 +17,7 @@ export class NavigationSession extends GarbageCollector {
17
17
  this.startingUrl = startingUrl;
18
18
  // console.log(`new ${this.constructor.name}`)
19
19
  // TODO: can I get away without creating one every time?
20
- this._interactionContext = this.context.routerInteractionAdapter.createNavigationSessionInteractionContext();
20
+ this._interactionContext = this.context.routerInteractionAdapter.createExclusiveInteractionContext();
21
21
  this.onDispose(() => {
22
22
  // the interaction context can be detached during the back button cancellation state transition
23
23
  // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be
@@ -173,4 +173,4 @@ export class NavigationSession extends GarbageCollector {
173
173
  return context;
174
174
  }
175
175
  }
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBTzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFHMUY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGdCQUFnQjtJQVd6QztJQUFxQztJQVQxRCxpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFDekIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0lBRTFELDZCQUE2QixHQUFHLElBQUksR0FBRyxFQUFxRCxDQUFDO0lBSTdGLG1CQUFtQixDQUFxQjtJQUVoRCxZQUFxQixPQUEwQixFQUFXLFdBQW1CO1FBQzNFLEtBQUssRUFBRSxDQUFDO1FBRFcsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUUzRSw4Q0FBOEM7UUFDOUMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLHlDQUF5QyxFQUFFLENBQUM7UUFDN0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsK0ZBQStGO1lBQy9GLDhGQUE4RjtZQUM5RixpR0FBaUc7WUFDakcsOEZBQThGO1lBQzlGLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENB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QU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDM0YscUdBQXFHO1FBQ3JHLG1CQUFtQjtRQUNuQixNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQ3JGLHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUNsRSwrQkFBK0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0QsK0JBQStCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMseUNBQXlDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUlTLCtDQUErQyxDQUFDLEdBQVc7UUFDbkUsc0ZBQXNGO1FBQ3RGLHdHQUF3RztRQUN4RyxvQ0FBb0M7UUFDcEMsaUJBQWlCO1FBQ2pCLHNFQUFzRTtRQUN0RSx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxxQ0FBcUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyRXZlbnR9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7R2FyYmFnZUNvbGxlY3RvciwgbGFuZywgTG9nZ2VyfSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2VSb3V0aW5nQWRhcHRlcn0gZnJvbSBcIi4uLy4uLy4uL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLXNlcnZpY2Utcm91dGluZy1hZGFwdGVyXCI7XG5pbXBvcnQge1BsYWNlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcGxhY2UtY29tcG9uZW50XCI7XG5pbXBvcnQge1BsYWNlRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3BsYWNlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7VXJsU2VydmljZX0gZnJvbSBcIi4uLy4uL3VybC1zZXJ2aWNlXCI7XG5pbXBvcnQge1VybFNuYXBzaG90fSBmcm9tIFwiLi4vLi4vdXJsLXNuYXBzaG90XCI7XG5pbXBvcnQge1Zpc2l0fSBmcm9tIFwiLi4vLi4vdmlzaXRcIjtcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tIFwiLi4vLi4vdmlzaXQtc2VnbWVudFwiO1xuaW1wb3J0IHtQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJ9IGZyb20gXCIuLi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXJcIjtcbmltcG9ydCB7TmF2aWdhdGlvbkNvbnRleHR9IGZyb20gXCIuL25hdmlnYXRpb24tY29udGV4dFwiO1xuXG4vKipcbiAqIFRyYW5zaWVudCBzdGF0ZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdmlnYXRpb25TZXNzaW9uIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgZGVidWdQcm9wZXJ0eUtleXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX3Zpc2l0U2VnbWVudHMgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXRTZWdtZW50PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFBsYWNlQ29tcG9uZW50LCBQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXI+KCk7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzUG9wU3RhdGU6IGJvb2xlYW47XG5cblxuICBwcml2YXRlIF9pbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCwgcmVhZG9ubHkgc3RhcnRpbmdVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gY29uc29sZS5sb2coYG5ldyAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKVxuICAgIC8vIFRPRE86IGNhbiBJIGdldCBhd2F5IHdpdGhvdXQgY3JlYXRpbmcgb25lIGV2ZXJ5IHRpbWU/XG4gICAgdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcy5jb250ZXh0LnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbkludGVyYWN0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMub25EaXNwb3NlKCgpID0+IHtcbiAgICAgIC8vIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGNhbiBiZSBkZXRhY2hlZCBkdXJpbmcgdGhlIGJhY2sgYnV0dG9uIGNhbmNlbGxhdGlvbiBzdGF0ZSB0cmFuc2l0aW9uXG4gICAgICAvLyBhcyB0aGUgdHJhbnNpdGlvbiBpcyBzeW5jaHJvbm91cyBhbmQgYWN0aXZpdHlDYW5jZWxsYXRpb24gaXNuJ3QuICBPdGhlcndpc2UgZGlzcG9zZSB3aWxsIGJlXG4gICAgICAvLyBjYWxsZWQgYmVmb3JlIHRoZSBjb250ZXh0IGhhcyBiZWVuIGNhbmNlbGxlZC4gIEl0IG1pZ2h0IGJlIHdvcmsgaGF2aW5nIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0XG4gICAgICAvLyBhdXRvbWF0aWNhbGx5IGNhbmNlbCBpZiB0aGUgY29udGV4dCBpcyBkaXNwb3NlZCBzbyB3ZSBkb24ndCBoYXZlIHdvcnJ5IGFib3V0IGRldGFjaGluZyBldGMuXG4gICAgICBpZiAodGhpcy5faW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICAgIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dC5kaXNwb3NlKCk7IC8vIG9yIGRvIHNvbWV0aGluZyBsaWtlIGNhbmNlbEFuZERpc3Bvc2U/XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNJbnRlcmFjdGlvblN5bmMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG5cbiAgZ2V0IHVybFNlcnZpY2UoKTogVXJsU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC51cmxTZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IGludGVyYWN0aW9uU2VydmljZUFkYXB0ZXIoKTogSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyO1xuICB9XG5cbiAgaW5pdGlhbGlzZVZpc2l0U2VnbWVudHModmlzaXQ6IFZpc2l0KSB7XG4gICAgdmlzaXQuc2VnbWVudHMuZm9yRWFjaChpdCA9PiB0aGlzLnVwZGF0ZVZpc2l0U2VnbWVudChpdCkpXG4gIH1cblxuICB1cGRhdGVWaXNpdFNlZ21lbnQoc2VnbWVudDogVmlzaXRTZWdtZW50KSB7XG4gICAgLy8gY29uc29sZS5sb2coYHVwZGF0ZVZpc2l0U2VnbWVudGAsIHNlZ21lbnQudG9EZWJ1Z1N0cmluZygpKTtcbiAgICB0aGlzLl92aXNpdFNlZ21lbnRzLnNldChzZWdtZW50LnBsYWNlRGVmaW5pdGlvbiwgc2VnbWVudCk7XG4gIH1cblxuXG4gIGdldFZpc2l0U2VnbWVudEZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLl92aXNpdFNlZ21lbnRzLmdldChwbGFjZURlZik7XG4gICAgLy8gY29uc29sZS5sb2coYEdldHRpbmcgdmlzaXQgZm9yICR7cGxhY2VEZWYuY29tcG9uZW50Lm5hbWV9YCwge3Zpc2l0fSk7XG4gICAgcmV0dXJuIHZpc2l0O1xuICB9XG5cbiAgY3JlYXRlVXBkYXRlZFZpc2l0KHVybDogc3RyaW5nKSA6VmlzaXQge1xuICAgIC8vIFRoZSB2aXNpdCBzZWdtZW50cyBjYW4gaGF2ZSBhcmJpcmFyeSBwbGFjZXMgaW4gdGhlbSBhZnRlciByZWRpcmVjdHNcbiAgICAvLyBzbyB3ZSBoYXZlIHRvIGZpbHRlciB0aGVtIGJhc2VkIG9uIHRoZSBmaW5hbCB1cmwuXG4gICAgY29uc3Qgc25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCBmaWx0ZXJlZFNlZ21lbnRzID0gQXJyYXkuZnJvbSh0aGlzLl92aXNpdFNlZ21lbnRzLnZhbHVlcygpKVxuICAgICAgLmZpbHRlcihpdCA9PiBzbmFwc2hvdC5jb250YWluc1Zpc2l0U2VnbWVudChpdCkpO1xuICAgIHJldHVybiBWaXNpdC5mcm9tU2VnbWVudHMoZmlsdGVyZWRTZWdtZW50cyk7XG4gIH1cblxuICBnZXQgY2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dCgpOiBJbnRlcmFjdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGlvbkNvbnRleHQ7XG4gIH1cblxuICBub3RpZnlBY3RpdmUoKSB7XG4gICAgLy8gbm9vcC5cbiAgfVxuXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgLy8gbmF2aWdhdGlvbiBzZXNzaW9ucyBjYW4gaGF2ZSBtYW55IGNhbmNlbCBzdGFydCBjeWNsZXMgZHVlIHRvIHBsYWNlIGd1YXJkIHJlZGlyZWN0c1xuICAgIHRoaXMuaWdub3JlKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uVXJsQ2hhbmdlKHVybDogc3RyaW5nKSB7XG4gICAgLy8gTm9ybWFsbHkgd2UganVzdCBpZ25vcmUgdGhlc2UgYnV0IHRoZXkgYXJlIHRoZSBvbmx5IHdheSBvZiBkZXRlY3RpbmcgaWYgdGhlIGJhY2sgYnV0dG9uXG4gICAgLy8gd2FzIGNsaWNrZWQgZHVyaW5nIGEgY2FuRGVhY3RpdmF0ZSBwcm9taXNlLlxuICAgIC8vIDEuIGEgcm91dGUgaXMgaW4gcHJvZ3Jlc3MgYW5kIGF3YWl0aW5nIGEgY2FuRGVhY3RpdmF0ZUd1YXJkXG4gICAgLy8gMi4gdGhlIHVzZXIgdGhlIGNsaWNrcyB0aGUgYmFjayBidXR0b24uXG4gICAgLy8gU28gdG8gaGFuZGxlIHRoYXQgc2NlbmFyaW8gd2UgbmVlZCB0byBjaGVjayBpZiB3ZSd2ZSBnb3QgYSBjYW4gZGVhY3RpdmF0ZSBpbnRlcmFjdGlvbiBpblxuICAgIC8vIHByb2dyZXNzIGFuZCB0aGUgZG8gdGhlIGFwcHJvcHJpYXRlIGNsZWFuIHVwLlxuICAgIGlmICh0aGlzLmNhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQgJiYgdGhpcy5jYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuY2FuY2VsQ2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uKHVybCk7XG4gICAgfVxuICB9XG5cbiAgb25Qb3BTdGF0ZShldmVudDogTmF2aWdhdGlvblN0YXJ0KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIGdldFZpc2l0U2VnbWVudHMoKTogVmlzaXRTZWdtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Zpc2l0U2VnbWVudHMudmFsdWVzKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlsbGVnYWxUcmFuc2l0aW9uPFI+KG1lc3NhZ2U6IHN0cmluZyB8IFJvdXRlckV2ZW50KTogUiB7XG4gICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGAke21lc3NhZ2UudG9TdHJpbmcoKX0gbm90IHN1cHBvcnRlZCBieSAke3RoaXMudG9TdHJpbmcoKX1gKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjdXJyZW50Um91dGVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCk7XG4gIH1cblxuICByZXNldEJyb3dzZXJMb2NhdGlvbih1cmwsIG9wdGlvbnM6IHsgcmVwbGFjZUN1cnJlbnQ6IGJvb2xlYW4gfSA9IHsgcmVwbGFjZUN1cnJlbnQ6IGZhbHNlIH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiByZXNldHRpbmcgYnJvd3NlciBsb2NhdGlvbiB0bzogJHt1cmx9YCk7XG4gICAgdGhpcy51cmxTZXJ2aWNlLnJlc2V0QnJvd3NlckxvY2F0aW9uKHVybCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgcmVwYWlyQnJvd3Nlckhpc3RvcnlBbmRVcmxBZnRlckd1YXJkQ2FuY2VsbGF0aW9uKHBvcHBlZEhpc3RvcnlUb1JlcGxhY2U6IHN0cmluZywgYWN0aXZlVXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBJbXBvcnRhbnQ6IEkgdHJpZWQgdG8gcGVyZm9ybSB0aGlzIGZpeCBhdCBhIGxhdGVyIHBvaW50IGludCBoZSByb3V0aW5nIGN5Y2xlIGJ1dCBpdCBjcmVhdGVkIGFsbCBraW5kcyBvZlxuICAgIC8vIHN0cmFuZ2VuZXNzLlxuICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhcIldPUkstQVJPVU5EOiBVcGRhdGluZyBicm93c2VyIGxvY2F0aW9uIGFmdGVyIHBvcCBzdGF0ZSAtIHNlZSBhbmd1bGFyIGlzc3VlICMxMzU4NlwiKTtcbiAgICAvLyBjb25zb2xlLmxvZyhgcmVwbGFjaW5nICR7dGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRMb2NhdGlvblVybFNuYXBzaG90KCkudXJsfSB3aXRoICR7cG9wcGVkSGlzdG9yeVRvUmVwbGFjZX1gKTtcbiAgICB0aGlzLnVybFNlcnZpY2UucmVzZXRCcm93c2VyTG9jYXRpb24ocG9wcGVkSGlzdG9yeVRvUmVwbGFjZSwgeyByZXBsYWNlQ3VycmVudDogdHJ1ZSB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyhgcHVzaGluZyAke2FjdGl2ZVVybH0gYmFjayBvbnRvIHRoZSBoaXN0b3J5LmApO1xuICAgIHRoaXMudXJsU2VydmljZS5yZXNldEJyb3dzZXJMb2NhdGlvbihhY3RpdmVVcmwsIHsgcmVwbGFjZUN1cnJlbnQ6IGZhbHNlIH0pO1xuICB9XG5cblxuICBpZ25vcmUoZXZlbnQ6IFJvdXRlckV2ZW50LCByZWFzb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZWFzb24gPSByZWFzb24gPyBgIC0+ICR7cmVhc29ufWAgOiBcIlwiO1xuICAgIC8vIExvZ2dlci5nZXQodGhpcykuaW5mbyhgSWdub3Jpbmcgcm91dGVyIGV2ZW50JHtyZWFzb259OiAke2V2ZW50LmNvbnN0cnVjdG9yLm5hbWV9IC0+ICR7ZXZlbnQudXJsfSA6OiAke3RoaXMudG9TdHJpbmcoKX1gKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0oJHt0aGlzLmRlYnVnU3RhdGUoKX0pYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWJ1Z1N0YXRlKHByb3BlcnRpZXM/OiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAocHJvcGVydGllcyB8fCB0aGlzLmRlYnVnUHJvcGVydHlLZXlzKS5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gYCR7cH06ICR7dGhpc1twXX1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcbiAgfVxuXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGVQbGFjZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50VXJsOiBVcmxTbmFwc2hvdCwgbmV4dFVybDogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IGNhbkRlYWN0aXZhdGVQbGFjZSgke2NvbXBvbmVudC5wbGFjZURlZmluaXRpb24ucGF0aH0sICR7Y3VycmVudFVybC51cmx9IC0+ICR7bmV4dFVybC51cmx9KWApO1xuICAgIC8vIGxvb2t1cCB0aGUgaGFuZGxlciBhbmQgY3JlYXRlIGl0IGlmIHdlJ3ZlIG5vdCBzZWVuIGl0IHlldFxuICAgIGxldCBoYW5kbGVyID0gdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5nZXQoY29tcG9uZW50KTtcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgIGNvbnN0IGlzUHJpbWFyeUhhbmRsZXIgPSB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNpemUgPT09IDA7IC8vIG9ubHkgcHJpbWFyeSBoYW5kbGVyIGNhbmNlbHMgdGhlIGFwcCBtb2RlbCBpbnRlcmF0aW9uc1xuICAgICAgaGFuZGxlciA9IG5ldyBQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXIoY29tcG9uZW50LCB0aGlzLCBpc1ByaW1hcnlIYW5kbGVyKTtcbiAgICAgIHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KGNvbXBvbmVudCwgaGFuZGxlcik7XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVyLmNhbkRlYWN0aXZhdGUoY3VycmVudFVybCwgbmV4dFVybCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gY2FuRGVhY3RpdmF0ZVBsYWNlKCR7Y29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbi5wYXRofSk6ICR7cmVzdWx0fWApO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbENhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbihuZXdVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgYmFjayBidXR0b24gcHJlc3NlZCBkdXJpbmcgbmF2aWdhdGlvbiBzZXNzaW9uIGludGVyYWN0aW9uIHByb21pc2VgKTtcbiAgICAvLyBkZXRhY2ggdGhlIGludGVyYWN0aW9uIGZyb20gdGhlIHNlc3Npb24gc28gaXQgZG9lc24ndCBnZXQgZGlzcG9zZWQgdW50aWwgdGhlIGFjdGl2aXR5IGhhcyBmaW5pc2hlZFxuICAgIC8vIGFsbCBpdCdzIHRoaW5ncy5cbiAgICBjb25zdCBjYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcy5kZXRhY2hDYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0KCk7XG4gICAgLy8gVE9ETzogSSBuZWVkIHRvIG1ha2UgdGhlIGV4Y2x1c2l2ZSBpbnRlcmFjdGlvbiBjb250ZXh0IGRpc2FsbG93IG5lc3RlZCBhY3Rpdml0aWVzIG9yXG4gICAgLy8gICAgICAgdGhhdCB3b3VsZCBtZXNzIHRoaW5ncyB1cCBlbnRpcmVseS4gT3IsIGNhbiBJIGRvIGEgY29udGV4dC5hYm9ydEFsbCgpLnRoZW4oLi4pXG4gICAgTG9nZ2VyLmdldCh0aGlzKS5pbmZvKFwiY2FuY2VsbGluZyBjdXJyZW50IG5hdmlnYXRpb24gYWN0aXZpdHkuLlwiKTtcbiAgICBjYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LmNhbmNlbEFjdGl2ZUFjdGl2aXR5KCkudGhlbigoKSA9PiB7XG4gICAgICBjYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0LmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaGFuZGxlQ2FuRGVhY3RpdmF0ZUNhbmNlbGxlZEV2ZW50U2NlbmFyaW8obmV3VXJsKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhbmRsZUNhbkRlYWN0aXZhdGVDYW5jZWxsZWRFdmVudFNjZW5hcmlvKG5ld1VybDogc3RyaW5nKTogdm9pZFxuXG4gIHByb3RlY3RlZCByZWluc3RhdGVVcmxBZnRlckFuZ3VsYXJDaGFuZ2VkSXRPbkNhbmNlbGxhdGlvbih1cmw6IHN0cmluZykge1xuICAgIC8vIEFuZ3VsYXIgY2FsbHMgX3RoaXMucmVzZXRVcmxUb0N1cnJlbnRVcmxUcmVlKCkgb24gY2FuY2VsbGluZyBhbmQgZnVja3Mgb3VyIGhpc3RvcnkuXG4gICAgLy8gU28gdGhpcyBtZWFucyB0aGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRoZSB1cmwgd2Ugd2FudCB0byBnbyBiYWNrIHRvLCBhbmQgbm90IHRoZSBvbmUgdGhhdCB3YXMgb25cbiAgICAvLyBpdCBiZWZvcmUgdGhlIGNhbmNlbCBldmVudCBmaXJlZC5cbiAgICAvLyBTbyB3ZSBuZWVkIHRvOlxuICAgIC8vIC0gcmVwbGFjZSB0aGUganVzdCBpbnNlcnRlZCB1cmwgd2l0aCB0aGUgb25lIHRoYXQgdXNlZCB0byBiZSB0aGVyZS5cbiAgICAvLyAtIHB1c2ggb3VyIGFjdHVhbCB1cmwgYmFjayBvbnRvIHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgIHRoaXMucmVzZXRCcm93c2VyTG9jYXRpb24odXJsLCB7IHJlcGxhY2VDdXJyZW50OiB0cnVlIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRldGFjaENhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQoKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dCA9IG51bGw7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBTzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFHMUY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGdCQUFnQjtJQVd6QztJQUFxQztJQVQxRCxpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFDekIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0lBRTFELDZCQUE2QixHQUFHLElBQUksR0FBRyxFQUFxRCxDQUFDO0lBSTdGLG1CQUFtQixDQUFxQjtJQUVoRCxZQUFxQixPQUEwQixFQUFXLFdBQW1CO1FBQzNFLEtBQUssRUFBRSxDQUFDO1FBRFcsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUUzRSw4Q0FBOEM7UUFDOUMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDckcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsK0ZBQStGO1lBQy9GLDhGQUE4RjtZQUM5RixpR0FBaUc7WUFDakcsOEZBQThGO1lBQzlGLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENB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QU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDM0YscUdBQXFHO1FBQ3JHLG1CQUFtQjtRQUNuQixNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQ3JGLHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUNsRSwrQkFBK0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0QsK0JBQStCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMseUNBQXlDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUlTLCtDQUErQyxDQUFDLEdBQVc7UUFDbkUsc0ZBQXNGO1FBQ3RGLHdHQUF3RztRQUN4RyxvQ0FBb0M7UUFDcEMsaUJBQWlCO1FBQ2pCLHNFQUFzRTtRQUN0RSx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxxQ0FBcUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyRXZlbnR9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7R2FyYmFnZUNvbGxlY3RvciwgbGFuZywgTG9nZ2VyfSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2VSb3V0aW5nQWRhcHRlcn0gZnJvbSBcIi4uLy4uLy4uL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLXNlcnZpY2Utcm91dGluZy1hZGFwdGVyXCI7XG5pbXBvcnQge1BsYWNlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcGxhY2UtY29tcG9uZW50XCI7XG5pbXBvcnQge1BsYWNlRGVmaW5pdGlvbn0gZnJvbSBcIi4uLy4uL3BsYWNlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7VXJsU2VydmljZX0gZnJvbSBcIi4uLy4uL3VybC1zZXJ2aWNlXCI7XG5pbXBvcnQge1VybFNuYXBzaG90fSBmcm9tIFwiLi4vLi4vdXJsLXNuYXBzaG90XCI7XG5pbXBvcnQge1Zpc2l0fSBmcm9tIFwiLi4vLi4vdmlzaXRcIjtcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tIFwiLi4vLi4vdmlzaXQtc2VnbWVudFwiO1xuaW1wb3J0IHtQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJ9IGZyb20gXCIuLi9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXJcIjtcbmltcG9ydCB7TmF2aWdhdGlvbkNvbnRleHR9IGZyb20gXCIuL25hdmlnYXRpb24tY29udGV4dFwiO1xuXG4vKipcbiAqIFRyYW5zaWVudCBzdGF0ZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdmlnYXRpb25TZXNzaW9uIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgZGVidWdQcm9wZXJ0eUtleXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX3Zpc2l0U2VnbWVudHMgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXRTZWdtZW50PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFBsYWNlQ29tcG9uZW50LCBQbGFjZUNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXI+KCk7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzUG9wU3RhdGU6IGJvb2xlYW47XG5cblxuICBwcml2YXRlIF9pbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dCwgcmVhZG9ubHkgc3RhcnRpbmdVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gY29uc29sZS5sb2coYG5ldyAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKVxuICAgIC8vIFRPRE86IGNhbiBJIGdldCBhd2F5IHdpdGhvdXQgY3JlYXRpbmcgb25lIGV2ZXJ5IHRpbWU/XG4gICAgdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcy5jb250ZXh0LnJvdXRlckludGVyYWN0aW9uQWRhcHRlci5jcmVhdGVFeGNsdXNpdmVJbnRlcmFjdGlvbkNvbnRleHQoKTtcbiAgICB0aGlzLm9uRGlzcG9zZSgoKSA9PiB7XG4gICAgICAvLyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBjYW4gYmUgZGV0YWNoZWQgZHVyaW5nIHRoZSBiYWNrIGJ1dHRvbiBjYW5jZWxsYXRpb24gc3RhdGUgdHJhbnNpdGlvblxuICAgICAgLy8gYXMgdGhlIHRyYW5zaXRpb24gaXMgc3luY2hyb25vdXMgYW5kIGFjdGl2aXR5Q2FuY2VsbGF0aW9uIGlzbid0LiAgT3RoZXJ3aXNlIGRpc3Bvc2Ugd2lsbCBiZVxuICAgICAgLy8gY2FsbGVkIGJlZm9yZSB0aGUgY29udGV4dCBoYXMgYmVlbiBjYW5jZWxsZWQuICBJdCBtaWdodCBiZSB3b3JrIGhhdmluZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dFxuICAgICAgLy8gYXV0b21hdGljYWxseSBjYW5jZWwgaWYgdGhlIGNvbnRleHQgaXMgZGlzcG9zZWQgc28gd2UgZG9uJ3QgaGF2ZSB3b3JyeSBhYm91dCBkZXRhY2hpbmcgZXRjLlxuICAgICAgaWYgKHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgICB0aGlzLl9pbnRlcmFjdGlvbkNvbnRleHQuZGlzcG9zZSgpOyAvLyBvciBkbyBzb21ldGhpbmcgbGlrZSBjYW5jZWxBbmREaXNwb3NlP1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW50ZXJhY3Rpb25TeW5jKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIGdldCB1cmxTZXJ2aWNlKCk6IFVybFNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQudXJsU2VydmljZTtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvblNlcnZpY2VBZGFwdGVyKCk6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJvdXRlckludGVyYWN0aW9uQWRhcHRlcjtcbiAgfVxuXG4gIGluaXRpYWxpc2VWaXNpdFNlZ21lbnRzKHZpc2l0OiBWaXNpdCkge1xuICAgIHZpc2l0LnNlZ21lbnRzLmZvckVhY2goaXQgPT4gdGhpcy51cGRhdGVWaXNpdFNlZ21lbnQoaXQpKVxuICB9XG5cbiAgdXBkYXRlVmlzaXRTZWdtZW50KHNlZ21lbnQ6IFZpc2l0U2VnbWVudCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGB1cGRhdGVWaXNpdFNlZ21lbnRgLCBzZWdtZW50LnRvRGVidWdTdHJpbmcoKSk7XG4gICAgdGhpcy5fdmlzaXRTZWdtZW50cy5zZXQoc2VnbWVudC5wbGFjZURlZmluaXRpb24sIHNlZ21lbnQpO1xuICB9XG5cblxuICBnZXRWaXNpdFNlZ21lbnRGb3IocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy5fdmlzaXRTZWdtZW50cy5nZXQocGxhY2VEZWYpO1xuICAgIC8vIGNvbnNvbGUubG9nKGBHZXR0aW5nIHZpc2l0IGZvciAke3BsYWNlRGVmLmNvbXBvbmVudC5uYW1lfWAsIHt2aXNpdH0pO1xuICAgIHJldHVybiB2aXNpdDtcbiAgfVxuXG4gIGNyZWF0ZVVwZGF0ZWRWaXNpdCh1cmw6IHN0cmluZykgOlZpc2l0IHtcbiAgICAvLyBUaGUgdmlzaXQgc2VnbWVudHMgY2FuIGhhdmUgYXJiaXJhcnkgcGxhY2VzIGluIHRoZW0gYWZ0ZXIgcmVkaXJlY3RzXG4gICAgLy8gc28gd2UgaGF2ZSB0byBmaWx0ZXIgdGhlbSBiYXNlZCBvbiB0aGUgZmluYWwgdXJsLlxuICAgIGNvbnN0IHNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLnBhcnNlVXJsKHVybCk7XG4gICAgY29uc3QgZmlsdGVyZWRTZWdtZW50cyA9IEFycmF5LmZyb20odGhpcy5fdmlzaXRTZWdtZW50cy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoaXQgPT4gc25hcHNob3QuY29udGFpbnNWaXNpdFNlZ21lbnQoaXQpKTtcbiAgICByZXR1cm4gVmlzaXQuZnJvbVNlZ21lbnRzKGZpbHRlcmVkU2VnbWVudHMpO1xuICB9XG5cbiAgZ2V0IGNhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbkNvbnRleHQoKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3Rpb25Db250ZXh0O1xuICB9XG5cbiAgbm90aWZ5QWN0aXZlKCkge1xuICAgIC8vIG5vb3AuXG4gIH1cblxuICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IHZvaWQge1xuICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbnMgY2FuIGhhdmUgbWFueSBjYW5jZWwgc3RhcnQgY3ljbGVzIGR1ZSB0byBwbGFjZSBndWFyZCByZWRpcmVjdHNcbiAgICB0aGlzLmlnbm9yZShldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblVybENoYW5nZSh1cmw6IHN0cmluZykge1xuICAgIC8vIE5vcm1hbGx5IHdlIGp1c3QgaWdub3JlIHRoZXNlIGJ1dCB0aGV5IGFyZSB0aGUgb25seSB3YXkgb2YgZGV0ZWN0aW5nIGlmIHRoZSBiYWNrIGJ1dHRvblxuICAgIC8vIHdhcyBjbGlja2VkIGR1cmluZyBhIGNhbkRlYWN0aXZhdGUgcHJvbWlzZS5cbiAgICAvLyAxLiBhIHJvdXRlIGlzIGluIHByb2dyZXNzIGFuZCBhd2FpdGluZyBhIGNhbkRlYWN0aXZhdGVHdWFyZFxuICAgIC8vIDIuIHRoZSB1c2VyIHRoZSBjbGlja3MgdGhlIGJhY2sgYnV0dG9uLlxuICAgIC8vIFNvIHRvIGhhbmRsZSB0aGF0IHNjZW5hcmlvIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UndmUgZ290IGEgY2FuIGRlYWN0aXZhdGUgaW50ZXJhY3Rpb24gaW5cbiAgICAvLyBwcm9ncmVzcyBhbmQgdGhlIGRvIHRoZSBhcHByb3ByaWF0ZSBjbGVhbiB1cC5cbiAgICBpZiAodGhpcy5jYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0ICYmIHRoaXMuY2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICB0aGlzLmNhbmNlbENhbkRlYWN0aXZhdGVJbnRlcmFjdGlvbih1cmwpO1xuICAgIH1cbiAgfVxuXG4gIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmlsbGVnYWxUcmFuc2l0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuaWxsZWdhbFRyYW5zaXRpb24oZXZlbnQpO1xuICB9XG5cbiAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5pbGxlZ2FsVHJhbnNpdGlvbihldmVudCk7XG4gIH1cblxuICBnZXRWaXNpdFNlZ21lbnRzKCk6IFZpc2l0U2VnbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl92aXNpdFNlZ21lbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbGxlZ2FsVHJhbnNpdGlvbjxSPihtZXNzYWdlOiBzdHJpbmcgfCBSb3V0ZXJFdmVudCk6IFIge1xuICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZShgJHttZXNzYWdlLnRvU3RyaW5nKCl9IG5vdCBzdXBwb3J0ZWQgYnkgJHt0aGlzLnRvU3RyaW5nKCl9YCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudFJvdXRlclVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpO1xuICB9XG5cbiAgcmVzZXRCcm93c2VyTG9jYXRpb24odXJsLCBvcHRpb25zOiB7IHJlcGxhY2VDdXJyZW50OiBib29sZWFuIH0gPSB7IHJlcGxhY2VDdXJyZW50OiBmYWxzZSB9KSB7XG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gcmVzZXR0aW5nIGJyb3dzZXIgbG9jYXRpb24gdG86ICR7dXJsfWApO1xuICAgIHRoaXMudXJsU2VydmljZS5yZXNldEJyb3dzZXJMb2NhdGlvbih1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIHJlcGFpckJyb3dzZXJIaXN0b3J5QW5kVXJsQWZ0ZXJHdWFyZENhbmNlbGxhdGlvbihwb3BwZWRIaXN0b3J5VG9SZXBsYWNlOiBzdHJpbmcsIGFjdGl2ZVVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gSW1wb3J0YW50OiBJIHRyaWVkIHRvIHBlcmZvcm0gdGhpcyBmaXggYXQgYSBsYXRlciBwb2ludCBpbnQgaGUgcm91dGluZyBjeWNsZSBidXQgaXQgY3JlYXRlZCBhbGwga2luZHMgb2ZcbiAgICAvLyBzdHJhbmdlbmVzcy5cbiAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oXCJXT1JLLUFST1VORDogVXBkYXRpbmcgYnJvd3NlciBsb2NhdGlvbiBhZnRlciBwb3Agc3RhdGUgLSBzZWUgYW5ndWxhciBpc3N1ZSAjMTM1ODZcIik7XG4gICAgLy8gY29uc29sZS5sb2coYHJlcGxhY2luZyAke3RoaXMudXJsU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb25VcmxTbmFwc2hvdCgpLnVybH0gd2l0aCAke3BvcHBlZEhpc3RvcnlUb1JlcGxhY2V9YCk7XG4gICAgdGhpcy51cmxTZXJ2aWNlLnJlc2V0QnJvd3NlckxvY2F0aW9uKHBvcHBlZEhpc3RvcnlUb1JlcGxhY2UsIHsgcmVwbGFjZUN1cnJlbnQ6IHRydWUgfSk7XG4gICAgLy8gY29uc29sZS5sb2coYHB1c2hpbmcgJHthY3RpdmVVcmx9IGJhY2sgb250byB0aGUgaGlzdG9yeS5gKTtcbiAgICB0aGlzLnVybFNlcnZpY2UucmVzZXRCcm93c2VyTG9jYXRpb24oYWN0aXZlVXJsLCB7IHJlcGxhY2VDdXJyZW50OiBmYWxzZSB9KTtcbiAgfVxuXG5cbiAgaWdub3JlKGV2ZW50OiBSb3V0ZXJFdmVudCwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgcmVhc29uID0gcmVhc29uID8gYCAtPiAke3JlYXNvbn1gIDogXCJcIjtcbiAgICAvLyBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYElnbm9yaW5nIHJvdXRlciBldmVudCR7cmVhc29ufTogJHtldmVudC5jb25zdHJ1Y3Rvci5uYW1lfSAtPiAke2V2ZW50LnVybH0gOjogJHt0aGlzLnRvU3RyaW5nKCl9YCk7XG4gIH1cblxuICBvdmVycmlkZSB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9KCR7dGhpcy5kZWJ1Z1N0YXRlKCl9KWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVidWdTdGF0ZShwcm9wZXJ0aWVzPzogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gKHByb3BlcnRpZXMgfHwgdGhpcy5kZWJ1Z1Byb3BlcnR5S2V5cykubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIGAke3B9OiAke3RoaXNbcF19YDtcbiAgICB9KS5qb2luKFwiLCBcIik7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRVcmw6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBjYW5EZWFjdGl2YXRlUGxhY2UoJHtjb21wb25lbnQucGxhY2VEZWZpbml0aW9uLnBhdGh9LCAke2N1cnJlbnRVcmwudXJsfSAtPiAke25leHRVcmwudXJsfSlgKTtcbiAgICAvLyBsb29rdXAgdGhlIGhhbmRsZXIgYW5kIGNyZWF0ZSBpdCBpZiB3ZSd2ZSBub3Qgc2VlbiBpdCB5ZXRcbiAgICBsZXQgaGFuZGxlciA9IHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuZ2V0KGNvbXBvbmVudCk7XG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICBjb25zdCBpc1ByaW1hcnlIYW5kbGVyID0gdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5zaXplID09PSAwOyAvLyBvbmx5IHByaW1hcnkgaGFuZGxlciBjYW5jZWxzIHRoZSBhcHAgbW9kZWwgaW50ZXJhdGlvbnNcbiAgICAgIGhhbmRsZXIgPSBuZXcgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyKGNvbXBvbmVudCwgdGhpcywgaXNQcmltYXJ5SGFuZGxlcik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChjb21wb25lbnQsIGhhbmRsZXIpO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlci5jYW5EZWFjdGl2YXRlKGN1cnJlbnRVcmwsIG5leHRVcmwpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIGNhbkRlYWN0aXZhdGVQbGFjZSgke2NvbXBvbmVudC5wbGFjZURlZmluaXRpb24ucGF0aH0pOiAke3Jlc3VsdH1gKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxDYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb24obmV3VXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYGJhY2sgYnV0dG9uIHByZXNzZWQgZHVyaW5nIG5hdmlnYXRpb24gc2Vzc2lvbiBpbnRlcmFjdGlvbiBwcm9taXNlYCk7XG4gICAgLy8gZGV0YWNoIHRoZSBpbnRlcmFjdGlvbiBmcm9tIHRoZSBzZXNzaW9uIHNvIGl0IGRvZXNuJ3QgZ2V0IGRpc3Bvc2VkIHVudGlsIHRoZSBhY3Rpdml0eSBoYXMgZmluaXNoZWRcbiAgICAvLyBhbGwgaXQncyB0aGluZ3MuXG4gICAgY29uc3QgY2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dCA9IHRoaXMuZGV0YWNoQ2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dCgpO1xuICAgIC8vIFRPRE86IEkgbmVlZCB0byBtYWtlIHRoZSBleGNsdXNpdmUgaW50ZXJhY3Rpb24gY29udGV4dCBkaXNhbGxvdyBuZXN0ZWQgYWN0aXZpdGllcyBvclxuICAgIC8vICAgICAgIHRoYXQgd291bGQgbWVzcyB0aGluZ3MgdXAgZW50aXJlbHkuIE9yLCBjYW4gSSBkbyBhIGNvbnRleHQuYWJvcnRBbGwoKS50aGVuKC4uKVxuICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhcImNhbmNlbGxpbmcgY3VycmVudCBuYXZpZ2F0aW9uIGFjdGl2aXR5Li5cIik7XG4gICAgY2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dC5jYW5jZWxBY3RpdmVBY3Rpdml0eSgpLnRoZW4oKCkgPT4ge1xuICAgICAgY2FuRGVhY3RpdmF0ZUludGVyYWN0aW9uQ29udGV4dC5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmhhbmRsZUNhbkRlYWN0aXZhdGVDYW5jZWxsZWRFdmVudFNjZW5hcmlvKG5ld1VybCk7XG4gIH1cblxuICBhYnN0cmFjdCBoYW5kbGVDYW5EZWFjdGl2YXRlQ2FuY2VsbGVkRXZlbnRTY2VuYXJpbyhuZXdVcmw6IHN0cmluZyk6IHZvaWRcblxuICBwcm90ZWN0ZWQgcmVpbnN0YXRlVXJsQWZ0ZXJBbmd1bGFyQ2hhbmdlZEl0T25DYW5jZWxsYXRpb24odXJsOiBzdHJpbmcpIHtcbiAgICAvLyBBbmd1bGFyIGNhbGxzIF90aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpIG9uIGNhbmNlbGxpbmcgYW5kIGZ1Y2tzIG91ciBoaXN0b3J5LlxuICAgIC8vIFNvIHRoaXMgbWVhbnMgdGhhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyB0aGUgdXJsIHdlIHdhbnQgdG8gZ28gYmFjayB0bywgYW5kIG5vdCB0aGUgb25lIHRoYXQgd2FzIG9uXG4gICAgLy8gaXQgYmVmb3JlIHRoZSBjYW5jZWwgZXZlbnQgZmlyZWQuXG4gICAgLy8gU28gd2UgbmVlZCB0bzpcbiAgICAvLyAtIHJlcGxhY2UgdGhlIGp1c3QgaW5zZXJ0ZWQgdXJsIHdpdGggdGhlIG9uZSB0aGF0IHVzZWQgdG8gYmUgdGhlcmUuXG4gICAgLy8gLSBwdXNoIG91ciBhY3R1YWwgdXJsIGJhY2sgb250byB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICB0aGlzLnJlc2V0QnJvd3NlckxvY2F0aW9uKHVybCwgeyByZXBsYWNlQ3VycmVudDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXRhY2hDYW5EZWFjdGl2YXRlSW50ZXJhY3Rpb25Db250ZXh0KCk6IEludGVyYWN0aW9uQ29udGV4dCB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2ludGVyYWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9pbnRlcmFjdGlvbkNvbnRleHQgPSBudWxsO1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG59XG4iXX0=
@@ -108,8 +108,7 @@ export class PlaceAuthService extends GarbageCollector {
108
108
  enablePlace(placeDefinition, options) {
109
109
  const { chain } = Dsl.disposeWith(this);
110
110
  const when$ = options.when$ ? options.when$ : chain(options.unless$).isFalsey();
111
- // NOTE: we're wrapping the when$ so callers can pass in the same model multiple times (pectin doesn't support depending on multiples of the same model yet)
112
- this.enabledPlaceChecker.enableWhen(PlaceComponent.getDefinition(placeDefinition), chain(when$).isTruthy(), options);
111
+ this.enabledPlaceChecker.enableWhen(PlaceComponent.getDefinition(placeDefinition), when$, options);
113
112
  }
114
113
  async waitUntilAuthenticationReady() {
115
114
  await toPromise(this, this._authNReady$);
@@ -118,12 +117,12 @@ export class PlaceAuthService extends GarbageCollector {
118
117
  await toPromise(this, this._authZReady$);
119
118
  await this.enabledPlaceChecker.waitUntilReady(placeDef);
120
119
  }
121
- async getAuthenticationFailureRedirect(activatedRoute, state) {
122
- const redirect = await this.authNOptions.redirectTo(activatedRoute, state);
120
+ getAuthenticationFailureRedirect(activatedRoute, state) {
121
+ const redirect = this.authNOptions.redirectTo(activatedRoute, state);
123
122
  return redirect instanceof Visit ? redirect : Visit.goto(redirect);
124
123
  }
125
- async getAuthorisationFailureRedirectOptions(component) {
126
- return (await this.authZOptions.redirectTo(component)).map(it => it instanceof Visit ? it : Visit.goto(it));
124
+ getAuthorisationFailureRedirectOptions(component) {
125
+ return this.authZOptions.redirectTo(component).map(it => it instanceof Visit ? it : Visit.goto(it));
127
126
  }
128
127
  isAuthenticated() {
129
128
  return this.accessGuard$.value.isAuthenticated();
@@ -149,4 +148,4 @@ export class PlaceAuthService extends GarbageCollector {
149
148
  }
150
149
  PlaceAuthService.AccessGuard = AccessGuard;
151
150
  })(PlaceAuthService || (PlaceAuthService = {}));
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtYXV0aC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtYXV0aC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxhQUFhLEVBR2Isb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFHaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUc5QixTQUFTLFNBQVMsQ0FBQyxZQUFrQyxFQUFFLFVBQStCO0lBQ3BGLGtGQUFrRjtJQUNsRixNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7SUFDekYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBSSxVQUFnQyxFQUFFLE9BQStDLEVBQUUsUUFBNEM7SUFDM0osNENBQTRDO0lBQzVDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN6QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7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Q0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxLQUFLLENBQUMsc0NBQXNDLENBQUMsU0FBd0M7UUFDbkYsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDbEQsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0NBQ0Y7QUFFRCxXQUFpQixnQkFBZ0I7SUFzQi9CLE1BQWEsV0FBVztRQUVIO1FBQ0E7UUFGbkIsWUFDbUIsYUFBc0IsRUFDdEIsU0FBNkI7WUFEN0Isa0JBQWEsR0FBYixhQUFhLENBQVM7WUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFFaEQsQ0FBQztRQUVELGVBQWU7WUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDNUIsQ0FBQztRQUVELFlBQVksQ0FBQyxlQUFnQztZQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQztLQUVGO0lBZlksNEJBQVcsY0FldkIsQ0FBQTtBQUVILENBQUMsRUF2Q2dCLGdCQUFnQixLQUFoQixnQkFBZ0IsUUF1Q2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBBbmRWYWx1ZU1vZGVsLFxuICBDb21wdXRlZE1vZGVsTWVjaGFuaWNzLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRGlzcG9zYWJsZSxcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBIYXNWYWx1ZSxcbiAgTXVsdGlNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBSZWR1Y2luZ1ZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1BsYWNlQWNjZXNzR3VhcmR9IGZyb20gXCIuL3BsYWNlLWFjY2Vzcy1ndWFyZFwiO1xuaW1wb3J0IHtQbGFjZUNvbXBvbmVudH0gZnJvbSBcIi4vcGxhY2UtY29tcG9uZW50XCI7XG5pbXBvcnQge1BsYWNlRGVmaW5pdGlvbn0gZnJvbSBcIi4vcGxhY2UtZGVmaW5pdGlvblwiO1xuaW1wb3J0IHtWaXNpdH0gZnJvbSBcIi4vdmlzaXRcIjtcblxuXG5mdW5jdGlvbiB0b1Byb21pc2UoZGlzcG9zZWRXaXRoOiBEaXNwb3NhYmxlLkNvbGxlY3RvciwgY29uZGl0aW9uJDogVmFsdWVNb2RlbDxib29sZWFuPikge1xuICAvLyBUT0RPOiBtb3ZlIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBwZWN0aW4gd2l0aCBhIHdhaXRVbml0KG1vZGVsJCkuaXNUcnV0aHkoKSBEU0wuXG4gIGNvbnN0IHt3aGVufSA9IERzbC5kaXNwb3NlV2l0aChkaXNwb3NlZFdpdGgpO1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICB3aGVuKGNvbmRpdGlvbiQpLmJlY29tZXNUcnV0aHkoKCkgPT4gcmVzb2x2ZSgpLCB7b25jZTogdHJ1ZSwgaW5pdGlhbFZhbHVlOiBcImV2YWx1YXRlXCJ9KVxuICB9KTtcbn1cblxuZnVuY3Rpb24gd2l0aFBvc3Rwb25lVW50aWw8VD4oZGlzcG9zYWJsZTogRGlzcG9zYWJsZS5Db2xsZWN0b3IsIG9wdGlvbnM6IENvbXB1dGVkTW9kZWxNZWNoYW5pY3MuUG9zdHBvbmVPcHRpb25zLCBjYWxsYmFjazogKHZhbHVlJDogVmFsdWVNb2RlbDxib29sZWFuPikgPT4gVCk6IFQgfCB1bmRlZmluZWQge1xuICAvLyBUT0RPOiBtb3ZlIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBwb3dlcnVwc1xuICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKGRpc3Bvc2FibGUpO1xuICBpZiAob3B0aW9ucy5wb3N0cG9uZVVudGlsKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKG9wdGlvbnMucG9zdHBvbmVVbnRpbCk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5wb3N0cG9uZVdoaWxlKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGNoYWluKG9wdGlvbnMucG9zdHBvbmVXaGlsZSkuaXNGYWxzZXkoKSlcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5cbmNsYXNzIFBsYWNlQXV0aEd1YXJkIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhZHlQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uLFxuICAgICAgICAgICAgICByZWFkb25seSBlbmFibGVkJDogVmFsdWVNb2RlbDxib29sZWFuPixcbiAgICAgICAgICAgICAgb3B0aW9uczogQ29tcHV0ZWRNb2RlbE1lY2hhbmljcy5Qb3N0cG9uZU9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5yZWFkeVByb21pc2UgPSB3aXRoUG9zdHBvbmVVbnRpbCh0aGlzLCBvcHRpb25zLCBjb25kaXRpb24kID0+IHtcbiAgICAgIHJldHVybiB0b1Byb21pc2UodGhpcywgY29uZGl0aW9uJClcbiAgICB9KSA/PyBQcm9taXNlLnJlc29sdmUoKVxuICB9XG5cbiAgYXN5bmMgd2FpdFVudGlsUmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeVByb21pc2U7XG4gIH1cbn1cblxuXG5jbGFzcyBFbmFibGVkUGxhY2VDaGVja2VyIGV4dGVuZHMgUmVkdWNpbmdWYWx1ZU1vZGVsPFBsYWNlQXV0aFNlcnZpY2UuQXV0aG9yaXNhdGlvbkNoZWNrLCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUd1YXJkcyQgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxQbGFjZUF1dGhHdWFyZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUd1YXJkc0J5UGxhY2VEZWYkOiBNdWx0aU1hcE1vZGVsQ2hhaW48UGxhY2VEZWZpbml0aW9uLCBQbGFjZUF1dGhHdWFyZD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoW10pO1xuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5wbGFjZUd1YXJkc0J5UGxhY2VEZWYkID0gY2hhaW4odGhpcy5wbGFjZUd1YXJkcyQpLmluZGV4TWFueUJ5KFwicGxhY2VEZWZpbml0aW9uXCIpO1xuICB9XG5cbiAgZW5hYmxlV2hlbihwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbiwgY29uZGl0aW9uJDogVmFsdWVNb2RlbDxib29sZWFuPiwgb3B0aW9uczogQ29tcHV0ZWRNb2RlbE1lY2hhbmljcy5Qb3N0cG9uZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMucGxhY2VHdWFyZHMkLnB1c2gobmV3IFBsYWNlQXV0aEd1YXJkKHBsYWNlRGVmaW5pdGlvbiwgY29uZGl0aW9uJCwgb3B0aW9ucykpO1xuICAgIHRoaXMudHJhY2tTb3VyY2UoY29uZGl0aW9uJCk7XG4gIH1cblxuICBpc0F1dGhvcmlzZWQocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlKHBsYWNlRGVmKTtcbiAgfVxuXG4gIGNvbXB1dGUodmFsdWVzOiB2b2lkW10pOiAocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChkZWYpID0+IHRoaXMuY2hlY2tQcmVkaWNhdGVzQnlQbGFjZShkZWYpXG4gIH1cblxuICBwcml2YXRlIGNoZWNrUHJlZGljYXRlc0J5UGxhY2UoZGVmOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICBjb25zdCBwbGFjZVByZWRpY2F0ZXMgPSB0aGlzLnBsYWNlR3VhcmRzQnlQbGFjZURlZiQuZ2V0KGRlZik7XG4gICAgaWYgKCFwbGFjZVByZWRpY2F0ZXMgfHwgcGxhY2VQcmVkaWNhdGVzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGxhY2VQcmVkaWNhdGVzLnJlZHVjZSgoc3VtLCBtb2RlbCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICYmIG1vZGVsLmVuYWJsZWQkLnZhbHVlO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd2FpdFVudGlsUmVhZHkocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBsYWNlQXV0aEd1YXJkcyA9IHRoaXMucGxhY2VHdWFyZHNCeVBsYWNlRGVmJC5nZXQocGxhY2VEZWYpO1xuICAgIGlmIChwbGFjZUF1dGhHdWFyZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHBsYWNlQXV0aEd1YXJkcy5tYXAoaXQgPT4gaXQud2FpdFVudGlsUmVhZHkoKSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGxhY2VBdXRoU2VydmljZSBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG5cbiAgcHJpdmF0ZSBhdXRoWk9wdGlvbnM6IFBsYWNlQXV0aFNlcnZpY2UuQXV0aG9yaXNhdGlvbk9wdGlvbnM7XG4gIHByaXZhdGUgYXV0aE5PcHRpb25zOiBQbGFjZUF1dGhTZXJ2aWNlLkF1dGhlbnRpY2F0aW9uT3B0aW9ucztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRoTlJlYWR5JCA9IG5ldyBBbmRWYWx1ZU1vZGVsKCkuc2V0RGVmYXVsdCh0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFpSZWFkeSQgPSBuZXcgQW5kVmFsdWVNb2RlbCgpLnNldERlZmF1bHQodHJ1ZSk7XG4gIHByaXZhdGUgYXV0aGVudGljYXRlZCQgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8Ym9vbGVhbj4pLndpdGhEZWZhdWx0KHRydWUpO1xuICBwcml2YXRlIGF1dGhDaGVja2VyJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxQbGFjZUF1dGhTZXJ2aWNlLkF1dGhvcmlzYXRpb25DaGVjaz4pLndpdGhEZWZhdWx0KCgpID0+IHRydWUpO1xuICBwcml2YXRlIGVuYWJsZWRQbGFjZUNoZWNrZXIgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRW5hYmxlZFBsYWNlQ2hlY2tlcigpKTtcblxuICByZWFkb25seSBhY2Nlc3NHdWFyZCQ6IFZhbHVlTW9kZWw8UGxhY2VBdXRoU2VydmljZS5BY2Nlc3NHdWFyZD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuYWNjZXNzR3VhcmQkID0gY2hhaW4ucmVkdWNlKHRoaXMuYXV0aGVudGljYXRlZCQsXG4gICAgICB0aGlzLmF1dGhDaGVja2VyJCxcbiAgICAgIHRoaXMuZW5hYmxlZFBsYWNlQ2hlY2tlcixcbiAgICAgIChhdXRoZW50aWNhdGVkLCBhdXRoQ2hlY2ssIGVuYWJsZWRQbGFjZUNoZWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGxhY2VBdXRoU2VydmljZS5BY2Nlc3NHdWFyZChhdXRoZW50aWNhdGVkLCBkZWYgPT4gYXV0aENoZWNrKGRlZikgJiYgZW5hYmxlZFBsYWNlQ2hlY2soZGVmKSk7XG4gICAgICB9KVxuICB9XG5cbiAgY29uZmlndXJlQXV0aGVudGljYXRpb24ob3B0aW9uczogUGxhY2VBdXRoU2VydmljZS5BdXRoZW50aWNhdGlvbk9wdGlvbnMpIHtcbiAgICB0aGlzLmF1dGhOT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkJC5zZXREZWxlZ2F0ZShvcHRpb25zLmlzQXV0aGVudGljYXRlZCQpXG4gICAgd2l0aFBvc3Rwb25lVW50aWwodGhpcywgb3B0aW9ucywgY29uZGl0aW9uJCA9PiB0aGlzLl9hdXRoTlJlYWR5JC5hZGRTb3VyY2UoY29uZGl0aW9uJCkpXG4gIH1cblxuICBjb25maWd1cmVBdXRob3Jpc2F0aW9uKG9wdGlvbnM6IFBsYWNlQXV0aFNlcnZpY2UuQXV0aG9yaXNhdGlvbk9wdGlvbnMpIHtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuYXV0aFpPcHRpb25zID0gb3B0aW9ucztcbiAgICBsZXQgYXV0aENoZWNrZXIkID0gVmFsdWVNb2RlbC5jb25zdGFudChkZWYgPT4gb3B0aW9ucy5pc0F1dGhvcmlzZWQoZGVmKSk7XG4gICAgaWYgKG9wdGlvbnMuZGVwZW5kc09uJCkge1xuICAgICAgLy8gaGF2ZSB0byByZXR1cm4gYSBuZXcgZnVudGlvbiBvciB0aGUgdmFsdWUgbW9kZWwgd29uJ3QgZmlyZSBhIGNoYW5nZSBldmVudFxuICAgICAgYXV0aENoZWNrZXIkID0gY2hhaW4oYXV0aENoZWNrZXIkKS5tYXAoaXQgPT4gZGVmID0+IGl0KGRlZiksIHtkZXBlbmRzT246IG9wdGlvbnMuZGVwZW5kc09uJH0pXG4gICAgfVxuICAgIHRoaXMuYXV0aENoZWNrZXIkLnNldERlbGVnYXRlKGF1dGhDaGVja2VyJCk7XG4gICAgd2l0aFBvc3Rwb25lVW50aWwodGhpcywgb3B0aW9ucywgY29uZGl0aW9uJCA9PiB0aGlzLl9hdXRoWlJlYWR5JC5hZGRTb3VyY2UoY29uZGl0aW9uJCkpXG4gIH1cblxuICBlbmFibGVQbGFjZShwbGFjZURlZmluaXRpb246IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBvcHRpb25zOiBQbGFjZUF1dGhTZXJ2aWNlLkF1dGhQbGFjZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIGNvbnN0IHdoZW4kID0gb3B0aW9ucy53aGVuJCA/IG9wdGlvbnMud2hlbiQgOiBjaGFpbihvcHRpb25zLnVubGVzcyQpLmlzRmFsc2V5KClcbiAgICAvLyBOT1RFOiB3ZSdyZSB3cmFwcGluZyB0aGUgd2hlbiQgc28gY2FsbGVycyBjYW4gcGFzcyBpbiB0aGUgc2FtZSBtb2RlbCBtdWx0aXBsZSB0aW1lcyAocGVjdGluIGRvZXNuJ3Qgc3VwcG9ydCBkZXBlbmRpbmcgb24gbXVsdGlwbGVzIG9mIHRoZSBzYW1lIG1vZGVsIHlldClcbiAgICB0aGlzLmVuYWJsZWRQbGFjZUNoZWNrZXIuZW5hYmxlV2hlbihQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHBsYWNlRGVmaW5pdGlvbiksIGNoYWluKHdoZW4kKS5pc1RydXRoeSgpLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgYXN5bmMgd2FpdFVudGlsQXV0aGVudGljYXRpb25SZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0b1Byb21pc2UodGhpcywgdGhpcy5fYXV0aE5SZWFkeSQpO1xuICB9XG5cbiAgYXN5bmMgd2FpdFVudGlsQXV0aG9yaXNhdGlvblJlYWR5Rm9yKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0b1Byb21pc2UodGhpcywgdGhpcy5fYXV0aFpSZWFkeSQpXG4gICAgYXdhaXQgdGhpcy5lbmFibGVkUGxhY2VDaGVja2VyLndhaXRVbnRpbFJlYWR5KHBsYWNlRGVmKVxuICB9XG5cbiAgYXN5bmMgZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxWaXNpdD4ge1xuICAgIGNvbnN0IHJlZGlyZWN0ID0gYXdhaXQgdGhpcy5hdXRoTk9wdGlvbnMucmVkaXJlY3RUbyhhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpO1xuICAgIHJldHVybiByZWRpcmVjdCBpbnN0YW5jZW9mIFZpc2l0ID8gcmVkaXJlY3QgOiBWaXNpdC5nb3RvKHJlZGlyZWN0KTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcmlzYXRpb25GYWlsdXJlUmVkaXJlY3RPcHRpb25zKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQcm9taXNlPFZpc2l0W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXV0aFpPcHRpb25zLnJlZGlyZWN0VG8oY29tcG9uZW50KSkubWFwKGl0ID0+IGl0IGluc3RhbmNlb2YgVmlzaXQgPyBpdCA6IFZpc2l0LmdvdG8oaXQpKTtcbiAgfVxuXG4gIGlzQXV0aGVudGljYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NHdWFyZCQudmFsdWUuaXNBdXRoZW50aWNhdGVkKClcbiAgfVxuXG4gIGlzQXV0aG9yaXNlZChjOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NHdWFyZCQudmFsdWUuaXNBdXRob3Jpc2VkKGMpXG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUF1dGhTZXJ2aWNlIHtcblxuICBleHBvcnQgdHlwZSBBdXRob3Jpc2F0aW9uQ2hlY2sgPSAoZGVmOiBQbGFjZURlZmluaXRpb24pID0+IGJvb2xlYW47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBdXRoZW50aWNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb21wdXRlZE1vZGVsTWVjaGFuaWNzLlBvc3Rwb25lT3B0aW9ucyB7XG4gICAgaXNBdXRoZW50aWNhdGVkJDogVmFsdWVNb2RlbDxib29sZWFuPjtcblxuICAgIHJlZGlyZWN0VG8oYWN0aXZhdGVkUm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBWaXNpdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHwgUHJvbWlzZTxWaXNpdD4gfCBQcm9taXNlPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBDb21wdXRlZE1vZGVsTWVjaGFuaWNzLlBvc3Rwb25lT3B0aW9ucyB7XG4gICAgaXNBdXRob3Jpc2VkOiBBdXRob3Jpc2F0aW9uQ2hlY2s7XG4gICAgZGVwZW5kc09uJD86IEhhc1ZhbHVlPGFueT47XG5cbiAgICByZWRpcmVjdFRvKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiAoQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4gfCBWaXNpdClbXSB8IFByb21pc2U8KENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHwgVmlzaXQpW10+O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBdXRoUGxhY2VPcHRpb25zIGV4dGVuZHMgQ29tcHV0ZWRNb2RlbE1lY2hhbmljcy5Qb3N0cG9uZU9wdGlvbnMge1xuICAgIHdoZW4kPzogVmFsdWVNb2RlbDxib29sZWFuPjtcbiAgICB1bmxlc3MkPzogVmFsdWVNb2RlbDxib29sZWFuPjtcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBBY2Nlc3NHdWFyZCBpbXBsZW1lbnRzIFBsYWNlQWNjZXNzR3VhcmQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGVkOiBib29sZWFuLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGVja0F1dGg6IEF1dGhvcmlzYXRpb25DaGVja1xuICAgICkge1xuICAgIH1cblxuICAgIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmF1dGhlbnRpY2F0ZWQ7XG4gICAgfVxuXG4gICAgaXNBdXRob3Jpc2VkKHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja0F1dGgocGxhY2VEZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtYXV0aC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtYXV0aC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxhQUFhLEVBR2Isb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFHaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUc5QixTQUFTLFNBQVMsQ0FBQyxZQUFrQyxFQUFFLFVBQStCO0lBQ3BGLGtGQUFrRjtJQUNsRixNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7SUFDekYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBSSxVQUFnQyxFQUFFLE9BQStDLEVBQUUsUUFBNEM7SUFDM0osNENBQTRDO0lBQzVDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN6QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7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SSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBa0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDaEQsQ0FBQztDQUNGO0FBRUQsV0FBaUIsZ0JBQWdCO0lBc0IvQixNQUFhLFdBQVc7UUFFSDtRQUNBO1FBRm5CLFlBQ21CLGFBQXNCLEVBQ3RCLFNBQTZCO1lBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUFTO1lBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBRWhELENBQUM7UUFFRCxlQUFlO1lBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFFRCxZQUFZLENBQUMsZUFBZ0M7WUFDM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FFRjtJQWZZLDRCQUFXLGNBZXZCLENBQUE7QUFFSCxDQUFDLEVBdkNnQixnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBdUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtcbiAgQW5kVmFsdWVNb2RlbCxcbiAgQ29tcHV0ZWRNb2RlbE1lY2hhbmljcyxcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgSGFzVmFsdWUsXG4gIE11bHRpTWFwTW9kZWxDaGFpbixcbiAgTXV0YWJsZUxpc3RNb2RlbCxcbiAgUmVkdWNpbmdWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHtQbGFjZUFjY2Vzc0d1YXJkfSBmcm9tIFwiLi9wbGFjZS1hY2Nlc3MtZ3VhcmRcIjtcbmltcG9ydCB7UGxhY2VDb21wb25lbnR9IGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHtQbGFjZURlZmluaXRpb259IGZyb20gXCIuL3BsYWNlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7VmlzaXR9IGZyb20gXCIuL3Zpc2l0XCI7XG5cblxuZnVuY3Rpb24gdG9Qcm9taXNlKGRpc3Bvc2VkV2l0aDogRGlzcG9zYWJsZS5Db2xsZWN0b3IsIGNvbmRpdGlvbiQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pIHtcbiAgLy8gVE9ETzogbW92ZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcGVjdGluIHdpdGggYSB3YWl0VW5pdChtb2RlbCQpLmlzVHJ1dGh5KCkgRFNMLlxuICBjb25zdCB7d2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgoZGlzcG9zZWRXaXRoKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgd2hlbihjb25kaXRpb24kKS5iZWNvbWVzVHJ1dGh5KCgpID0+IHJlc29sdmUoKSwge29uY2U6IHRydWUsIGluaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwifSlcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhQb3N0cG9uZVVudGlsPFQ+KGRpc3Bvc2FibGU6IERpc3Bvc2FibGUuQ29sbGVjdG9yLCBvcHRpb25zOiBDb21wdXRlZE1vZGVsTWVjaGFuaWNzLlBvc3Rwb25lT3B0aW9ucywgY2FsbGJhY2s6ICh2YWx1ZSQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pID0+IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgLy8gVE9ETzogbW92ZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcG93ZXJ1cHNcbiAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aChkaXNwb3NhYmxlKTtcbiAgaWYgKG9wdGlvbnMucG9zdHBvbmVVbnRpbCkge1xuICAgIHJldHVybiBjYWxsYmFjayhvcHRpb25zLnBvc3Rwb25lVW50aWwpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucG9zdHBvbmVXaGlsZSkge1xuICAgIHJldHVybiBjYWxsYmFjayhjaGFpbihvcHRpb25zLnBvc3Rwb25lV2hpbGUpLmlzRmFsc2V5KCkpXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuXG5jbGFzcyBQbGFjZUF1dGhHdWFyZCBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYWR5UHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgZW5hYmxlZCQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4sXG4gICAgICAgICAgICAgIG9wdGlvbnM6IENvbXB1dGVkTW9kZWxNZWNoYW5pY3MuUG9zdHBvbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMucmVhZHlQcm9taXNlID0gd2l0aFBvc3Rwb25lVW50aWwodGhpcywgb3B0aW9ucywgY29uZGl0aW9uJCA9PiB7XG4gICAgICByZXR1cm4gdG9Qcm9taXNlKHRoaXMsIGNvbmRpdGlvbiQpXG4gICAgfSkgPz8gUHJvbWlzZS5yZXNvbHZlKClcbiAgfVxuXG4gIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVhZHlQcm9taXNlO1xuICB9XG59XG5cblxuY2xhc3MgRW5hYmxlZFBsYWNlQ2hlY2tlciBleHRlbmRzIFJlZHVjaW5nVmFsdWVNb2RlbDxQbGFjZUF1dGhTZXJ2aWNlLkF1dGhvcmlzYXRpb25DaGVjaywgdm9pZD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VHdWFyZHMkID0gbmV3IE11dGFibGVMaXN0TW9kZWw8UGxhY2VBdXRoR3VhcmQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VHdWFyZHNCeVBsYWNlRGVmJDogTXVsdGlNYXBNb2RlbENoYWluPFBsYWNlRGVmaW5pdGlvbiwgUGxhY2VBdXRoR3VhcmQ+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFtdKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMucGxhY2VHdWFyZHNCeVBsYWNlRGVmJCA9IGNoYWluKHRoaXMucGxhY2VHdWFyZHMkKS5pbmRleE1hbnlCeShcInBsYWNlRGVmaW5pdGlvblwiKTtcbiAgfVxuXG4gIGVuYWJsZVdoZW4ocGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIGNvbmRpdGlvbiQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4sIG9wdGlvbnM6IENvbXB1dGVkTW9kZWxNZWNoYW5pY3MuUG9zdHBvbmVPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLnBsYWNlR3VhcmRzJC5wdXNoKG5ldyBQbGFjZUF1dGhHdWFyZChwbGFjZURlZmluaXRpb24sIGNvbmRpdGlvbiQsIG9wdGlvbnMpKTtcbiAgICB0aGlzLnRyYWNrU291cmNlKGNvbmRpdGlvbiQpO1xuICB9XG5cbiAgaXNBdXRob3Jpc2VkKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZShwbGFjZURlZik7XG4gIH1cblxuICBjb21wdXRlKHZhbHVlczogdm9pZFtdKTogKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiAoZGVmKSA9PiB0aGlzLmNoZWNrUHJlZGljYXRlc0J5UGxhY2UoZGVmKVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1ByZWRpY2F0ZXNCeVBsYWNlKGRlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgY29uc3QgcGxhY2VQcmVkaWNhdGVzID0gdGhpcy5wbGFjZUd1YXJkc0J5UGxhY2VEZWYkLmdldChkZWYpO1xuICAgIGlmICghcGxhY2VQcmVkaWNhdGVzIHx8IHBsYWNlUHJlZGljYXRlcy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBsYWNlUHJlZGljYXRlcy5yZWR1Y2UoKHN1bSwgbW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1bSAmJiBtb2RlbC5lbmFibGVkJC52YWx1ZTtcbiAgICAgIH0sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdhaXRVbnRpbFJlYWR5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwbGFjZUF1dGhHdWFyZHMgPSB0aGlzLnBsYWNlR3VhcmRzQnlQbGFjZURlZiQuZ2V0KHBsYWNlRGVmKTtcbiAgICBpZiAocGxhY2VBdXRoR3VhcmRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwbGFjZUF1dGhHdWFyZHMubWFwKGl0ID0+IGl0LndhaXRVbnRpbFJlYWR5KCkpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBsYWNlQXV0aFNlcnZpY2UgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuXG4gIHByaXZhdGUgYXV0aFpPcHRpb25zOiBQbGFjZUF1dGhTZXJ2aWNlLkF1dGhvcmlzYXRpb25PcHRpb25zO1xuICBwcml2YXRlIGF1dGhOT3B0aW9uczogUGxhY2VBdXRoU2VydmljZS5BdXRoZW50aWNhdGlvbk9wdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aE5SZWFkeSQgPSBuZXcgQW5kVmFsdWVNb2RlbCgpLnNldERlZmF1bHQodHJ1ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhaUmVhZHkkID0gbmV3IEFuZFZhbHVlTW9kZWwoKS5zZXREZWZhdWx0KHRydWUpO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZWQkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KS53aXRoRGVmYXVsdCh0cnVlKTtcbiAgcHJpdmF0ZSBhdXRoQ2hlY2tlciQgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8UGxhY2VBdXRoU2VydmljZS5BdXRob3Jpc2F0aW9uQ2hlY2s+KS53aXRoRGVmYXVsdCgoKSA9PiB0cnVlKTtcbiAgcHJpdmF0ZSBlbmFibGVkUGxhY2VDaGVja2VyID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEVuYWJsZWRQbGFjZUNoZWNrZXIoKSk7XG5cbiAgcmVhZG9ubHkgYWNjZXNzR3VhcmQkOiBWYWx1ZU1vZGVsPFBsYWNlQXV0aFNlcnZpY2UuQWNjZXNzR3VhcmQ+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmFjY2Vzc0d1YXJkJCA9IGNoYWluLnJlZHVjZSh0aGlzLmF1dGhlbnRpY2F0ZWQkLFxuICAgICAgdGhpcy5hdXRoQ2hlY2tlciQsXG4gICAgICB0aGlzLmVuYWJsZWRQbGFjZUNoZWNrZXIsXG4gICAgICAoYXV0aGVudGljYXRlZCwgYXV0aENoZWNrLCBlbmFibGVkUGxhY2VDaGVjaykgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBsYWNlQXV0aFNlcnZpY2UuQWNjZXNzR3VhcmQoYXV0aGVudGljYXRlZCwgZGVmID0+IGF1dGhDaGVjayhkZWYpICYmIGVuYWJsZWRQbGFjZUNoZWNrKGRlZikpO1xuICAgICAgfSlcbiAgfVxuXG4gIGNvbmZpZ3VyZUF1dGhlbnRpY2F0aW9uKG9wdGlvbnM6IFBsYWNlQXV0aFNlcnZpY2UuQXV0aGVudGljYXRpb25PcHRpb25zKSB7XG4gICAgdGhpcy5hdXRoTk9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuYXV0aGVudGljYXRlZCQuc2V0RGVsZWdhdGUob3B0aW9ucy5pc0F1dGhlbnRpY2F0ZWQkKVxuICAgIHdpdGhQb3N0cG9uZVVudGlsKHRoaXMsIG9wdGlvbnMsIGNvbmRpdGlvbiQgPT4gdGhpcy5fYXV0aE5SZWFkeSQuYWRkU291cmNlKGNvbmRpdGlvbiQpKVxuICB9XG5cbiAgY29uZmlndXJlQXV0aG9yaXNhdGlvbihvcHRpb25zOiBQbGFjZUF1dGhTZXJ2aWNlLkF1dGhvcmlzYXRpb25PcHRpb25zKSB7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmF1dGhaT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgbGV0IGF1dGhDaGVja2VyJCA9IFZhbHVlTW9kZWwuY29uc3RhbnQoZGVmID0+IG9wdGlvbnMuaXNBdXRob3Jpc2VkKGRlZikpO1xuICAgIGlmIChvcHRpb25zLmRlcGVuZHNPbiQpIHtcbiAgICAgIC8vIGhhdmUgdG8gcmV0dXJuIGEgbmV3IGZ1bnRpb24gb3IgdGhlIHZhbHVlIG1vZGVsIHdvbid0IGZpcmUgYSBjaGFuZ2UgZXZlbnRcbiAgICAgIGF1dGhDaGVja2VyJCA9IGNoYWluKGF1dGhDaGVja2VyJCkubWFwKGl0ID0+IGRlZiA9PiBpdChkZWYpLCB7ZGVwZW5kc09uOiBvcHRpb25zLmRlcGVuZHNPbiR9KVxuICAgIH1cbiAgICB0aGlzLmF1dGhDaGVja2VyJC5zZXREZWxlZ2F0ZShhdXRoQ2hlY2tlciQpO1xuICAgIHdpdGhQb3N0cG9uZVVudGlsKHRoaXMsIG9wdGlvbnMsIGNvbmRpdGlvbiQgPT4gdGhpcy5fYXV0aFpSZWFkeSQuYWRkU291cmNlKGNvbmRpdGlvbiQpKVxuICB9XG5cbiAgZW5hYmxlUGxhY2UocGxhY2VEZWZpbml0aW9uOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Piwgb3B0aW9uczogUGxhY2VBdXRoU2VydmljZS5BdXRoUGxhY2VPcHRpb25zKSB7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBjb25zdCB3aGVuJCA9IG9wdGlvbnMud2hlbiQgPyBvcHRpb25zLndoZW4kIDogY2hhaW4ob3B0aW9ucy51bmxlc3MkKS5pc0ZhbHNleSgpXG4gICAgdGhpcy5lbmFibGVkUGxhY2VDaGVja2VyLmVuYWJsZVdoZW4oUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihwbGFjZURlZmluaXRpb24pLCB3aGVuJCwgb3B0aW9ucyk7XG4gIH1cblxuXG4gIGFzeW5jIHdhaXRVbnRpbEF1dGhlbnRpY2F0aW9uUmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdG9Qcm9taXNlKHRoaXMsIHRoaXMuX2F1dGhOUmVhZHkkKTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRVbnRpbEF1dGhvcmlzYXRpb25SZWFkeUZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdG9Qcm9taXNlKHRoaXMsIHRoaXMuX2F1dGhaUmVhZHkkKVxuICAgIGF3YWl0IHRoaXMuZW5hYmxlZFBsYWNlQ2hlY2tlci53YWl0VW50aWxSZWFkeShwbGFjZURlZilcbiAgfVxuXG4gIGdldEF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlZGlyZWN0KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHtcbiAgICBjb25zdCByZWRpcmVjdCA9IHRoaXMuYXV0aE5PcHRpb25zLnJlZGlyZWN0VG8oYWN0aXZhdGVkUm91dGUsIHN0YXRlKTtcbiAgICByZXR1cm4gcmVkaXJlY3QgaW5zdGFuY2VvZiBWaXNpdCA/IHJlZGlyZWN0IDogVmlzaXQuZ290byhyZWRpcmVjdCk7XG4gIH1cblxuICBnZXRBdXRob3Jpc2F0aW9uRmFpbHVyZVJlZGlyZWN0T3B0aW9ucyhjb21wb25lbnQ6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogVmlzaXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFpPcHRpb25zLnJlZGlyZWN0VG8oY29tcG9uZW50KS5tYXAoaXQgPT4gaXQgaW5zdGFuY2VvZiBWaXNpdCA/IGl0IDogVmlzaXQuZ290byhpdCkpO1xuICB9XG5cbiAgaXNBdXRoZW50aWNhdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmFjY2Vzc0d1YXJkJC52YWx1ZS5pc0F1dGhlbnRpY2F0ZWQoKVxuICB9XG5cbiAgaXNBdXRob3Jpc2VkKGM6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFjY2Vzc0d1YXJkJC52YWx1ZS5pc0F1dGhvcmlzZWQoYylcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlQXV0aFNlcnZpY2Uge1xuXG4gIGV4cG9ydCB0eXBlIEF1dGhvcmlzYXRpb25DaGVjayA9IChkZWY6IFBsYWNlRGVmaW5pdGlvbikgPT4gYm9vbGVhbjtcblxuICBleHBvcnQgaW50ZXJmYWNlIEF1dGhlbnRpY2F0aW9uT3B0aW9ucyBleHRlbmRzIENvbXB1dGVkTW9kZWxNZWNoYW5pY3MuUG9zdHBvbmVPcHRpb25zIHtcbiAgICBpc0F1dGhlbnRpY2F0ZWQkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuXG4gICAgcmVkaXJlY3RUbyhhY3RpdmF0ZWRSb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF1dGhvcmlzYXRpb25PcHRpb25zIGV4dGVuZHMgQ29tcHV0ZWRNb2RlbE1lY2hhbmljcy5Qb3N0cG9uZU9wdGlvbnMge1xuICAgIGlzQXV0aG9yaXNlZDogQXV0aG9yaXNhdGlvbkNoZWNrO1xuICAgIGRlcGVuZHNPbiQ/OiBIYXNWYWx1ZTxhbnk+O1xuXG4gICAgcmVkaXJlY3RUbyhjb21wb25lbnQ6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogKENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHwgVmlzaXQpW107XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF1dGhQbGFjZU9wdGlvbnMgZXh0ZW5kcyBDb21wdXRlZE1vZGVsTWVjaGFuaWNzLlBvc3Rwb25lT3B0aW9ucyB7XG4gICAgd2hlbiQ/OiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuICAgIHVubGVzcyQ/OiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEFjY2Vzc0d1YXJkIGltcGxlbWVudHMgUGxhY2VBY2Nlc3NHdWFyZCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4sXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrQXV0aDogQXV0aG9yaXNhdGlvbkNoZWNrXG4gICAgKSB7XG4gICAgfVxuXG4gICAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aGVudGljYXRlZDtcbiAgICB9XG5cbiAgICBpc0F1dGhvcmlzZWQocGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrQXV0aChwbGFjZURlZmluaXRpb24pO1xuICAgIH1cblxuICB9XG5cbn1cbiJdfQ==
@@ -1,11 +1,12 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Directive, HostBinding, inject } from '@angular/core';
3
- import { ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router';
2
+ import { Directive, inject } from '@angular/core';
3
+ import { ActivatedRouteSnapshot } from '@angular/router';
4
4
  import { assert, Binding, DebugContext, Dsl, Guard, lang, ListModel, MutableValueModel } from '@coolon/pectin';
5
- import { Klass, MemoizeGet } from '@coolon/typescript-utilities';
6
- import { isEmpty, isNil } from 'lodash-es';
5
+ import { Klass } from '@coolon/typescript-utilities';
6
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator';
7
+ import { isNil } from 'lodash';
7
8
  import 'reflect-metadata';
8
- import { LoadableComponent } from "../components/loadable-component";
9
+ import { DisposableComponent } from '../components/disposable-component';
9
10
  import { PlaceDefinition } from './place-definition';
10
11
  import { PlaceRouter } from "./place-router";
11
12
  import * as i0 from "@angular/core";
@@ -21,38 +22,31 @@ export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
21
22
  // return true;
22
23
  // }
23
24
  // }
24
- export class PlaceComponent extends LoadableComponent {
25
+ export class PlaceComponent extends DisposableComponent {
25
26
  _placeReadyCallbacks = [];
26
- visit$ = new MutableValueModel();
27
+ visitModel = new MutableValueModel();
27
28
  _inVisitUpdate = new Guard();
28
29
  _active = new MutableValueModel(false);
29
30
  interactionContext;
30
31
  childPlaces$;
31
- // private readonly _parameterChangeInterceptors: ParameterChangeInterceptor<any>[] = [];
32
- placeId;
33
32
  placeRouter = inject(PlaceRouter);
34
- activatedRoute = inject(ActivatedRoute);
35
33
  constructor() {
36
34
  super();
37
35
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
38
36
  when(this._active).becomesTruthy(() => this._notifyPlaceReady());
39
37
  this.childPlaces$ = ListModel.constant(this.placeDefinition.children.map(d => d.component));
40
- this.placeId = this.placeDefinition.placeId;
41
- if (isEmpty(this.placeId)) {
42
- lang.illegalState("placeId property is missing from the route data parameters");
43
- }
44
38
  }
45
39
  initialiseVisit(visit, notifyVisitChanged) {
46
- assert.isNil(this.visit$.value);
40
+ assert.isNil(this.visitModel.value);
47
41
  const { when } = Dsl.disposeWith(this);
48
- this.visit$.value = visit;
49
- DebugContext.getOrCreate(this.visit$).tag(`${this.placeDefinition.component.name}.visit$`);
42
+ this.visitModel.value = visit;
43
+ DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
50
44
  // we track if the any of the bindings updated the route. If so we remember it and update the
51
45
  // route in one go at the end.
52
46
  this.placeDefinition
53
47
  .getVisitParameterDefs()
54
48
  .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
55
- when(this.visit$).changes((current, previous) => {
49
+ when(this.visitModel).changes((current, previous) => {
56
50
  notifyVisitChanged(current, previous);
57
51
  }, { unless: this._inVisitUpdate });
58
52
  // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
@@ -71,11 +65,11 @@ export class PlaceComponent extends LoadableComponent {
71
65
  assert.isTruthy(this.isInitialised());
72
66
  assert.notNil(visit);
73
67
  this._inVisitUpdate.whileTrue(() => {
74
- this.visit$.value = visit;
68
+ this.visitModel.value = visit;
75
69
  });
76
70
  }
77
71
  isInitialised() {
78
- return !!this.visit$.value;
72
+ return !!this.visitModel.value;
79
73
  }
80
74
  // @Trace()
81
75
  /**
@@ -85,9 +79,8 @@ export class PlaceComponent extends LoadableComponent {
85
79
  */
86
80
  installAndInitialiseBinding(initialVisit, parameterDef) {
87
81
  const model = this[parameterDef.propertyName];
88
- assert.notNil(model);
89
82
  DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
90
- const binding = this.registerDisposable(new Binding(this.visit$, model, {
83
+ const binding = this.registerDisposable(new Binding(this.visitModel, model, {
91
84
  toRight(visit) {
92
85
  const value = visit.getParameterValue(parameterDef);
93
86
  // console.log('push to component', { name: parameterDef.name, value, visit });
@@ -167,19 +160,16 @@ export class PlaceComponent extends LoadableComponent {
167
160
  this._placeReadyCallbacks.push(callback);
168
161
  }
169
162
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
170
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, host: { properties: { "attr.place-id": "this.placeId" } }, usesInheritance: true, ngImport: i0 });
163
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
171
164
  }
172
165
  __decorate([
173
- MemoizeGet(),
166
+ Memoize(),
174
167
  __metadata("design:type", PlaceDefinition),
175
168
  __metadata("design:paramtypes", [])
176
169
  ], PlaceComponent.prototype, "placeDefinition", null);
177
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceComponent, decorators: [{
178
171
  type: Directive
179
- }], ctorParameters: function () { return []; }, propDecorators: { placeId: [{
180
- type: HostBinding,
181
- args: ["attr.place-id"]
182
- }], placeDefinition: [] } });
172
+ }], ctorParameters: function () { return []; }, propDecorators: { placeDefinition: [] } });
183
173
  (function (PlaceComponent) {
184
174
  function isPlaceComponentConstructor(target) {
185
175
  return lang.constructorChain(target).includes(PlaceComponent);
@@ -211,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
211
201
  // initialValue: 'evaluationUnlessNil' | 'evaluate'
212
202
  // }
213
203
  })(PlaceComponent || (PlaceComponent = {}));
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLFlBQVksRUFDWixHQUFHLEVBQ0gsS0FBSyxFQUVMLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTNDLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztBQUNuRSxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFHekUsd0NBQXdDO0FBQ3hDLHVLQUF1SztBQUN2SyxNQUFNO0FBQ04sRUFBRTtBQUNGLHdGQUF3RjtBQUN4RixtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLElBQUk7QUFHSixNQUFNLE9BQU8s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QUFxQixZQUFZLHNCQUFzQixFQUFFO1lBQzNELE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztZQUNsRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLFNBQVMsRUFBRSxDQUFDLENBQUM7YUFDL0Y7WUFDRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakU7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQzdFO0lBQ0gsQ0FBQztJQVZlLDRCQUFhLGdCQVU1QixDQUFBO0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBb0MsRUFBRSxVQUEyQjtRQUNoRyxPQUFPLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRmUsK0JBQWdCLG1CQUUvQixDQUFBO0lBRUQsNEhBQTRIO0lBRTVILHNDQUFzQztJQUN0QyxxREFBcUQ7SUFDckQsSUFBSTtBQUdOLENBQUMsRUFqQ2dCLGNBQWMsS0FBZCxjQUFjLFFBaUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBIb3N0QmluZGluZywgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3R9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJpbmRpbmcsXG4gIENvbnN0cnVjdGFibGUsXG4gIERlYnVnQ29udGV4dCxcbiAgRHNsLFxuICBHdWFyZCxcbiAgSU11dGFibGVIYXNWYWx1ZSxcbiAgbGFuZyxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQge0tsYXNzLCBNZW1vaXplR2V0fSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7aXNFbXB0eSwgaXNOaWx9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHtMb2FkYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbG9hZGFibGUtY29tcG9uZW50XCI7XG5pbXBvcnQge0ludGVyYWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQge1BsYWNlRGVmaW5pdGlvbn0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7UGxhY2VSb3V0ZXJ9IGZyb20gXCIuL3BsYWNlLXJvdXRlclwiO1xuaW1wb3J0IHtQYXJhbWV0ZXJEZWZpbml0aW9ufSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uJztcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tICcuL3Zpc2l0LXNlZ21lbnQnO1xuXG5cbi8vIFJBS0U6IG1ha2luZyB0aGlzIFN5bWJvbCguLi4pIGJyb2tlIHRoaW5ncy5cbmV4cG9ydCBjb25zdCBERUZJTklUSU9OX01FVEFfREFUQV9LRVkgPSAnUExBQ0VfREVGSU5JVElPTl9PUFRJT05TJztcbi8vIHRoaXMgb25lIHNlZW1zIG9rLlxuZXhwb3J0IGNvbnN0IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSA9IFN5bWJvbCgncGxhY2U6cm91dGU6cGFyYW1ldGVycycpO1xuXG5cbi8vIGNsYXNzIFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yPFQ+IHtcbi8vICAgY29uc3RydWN0b3IocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+LCBtb2RlbDogVmFsdWVNb2RlbDxUPiwgY2FsbGJhY2s6IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdENhbGxiYWNrPFQ+LCBvcHRpb25zOiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRPcHRpb25zKSB7XG4vLyAgIH1cbi8vXG4vLyAgIGFzeW5jIGNhblByb2NlZWQobmV4dFN0YXRlOiBWaXNpdFNlZ21lbnQsIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4vLyAgICAgcmV0dXJuIHRydWU7XG4vLyAgIH1cbi8vIH1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnQgZXh0ZW5kcyBMb2FkYWJsZUNvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VSZWFkeUNhbGxiYWNrczogKCgpPT52b2lkKVtdID0gW107XG4gIHByaXZhdGUgdmlzaXQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0U2VnbWVudD4oKTtcbiAgcHJpdmF0ZSBfaW5WaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIF9hY3RpdmUgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGludGVyYWN0aW9uQ29udGV4dD86IEludGVyYWN0aW9uQ29udGV4dDtcbiAgcmVhZG9ubHkgY2hpbGRQbGFjZXMkOiBMaXN0TW9kZWw8Q29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4+O1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcnM6IFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yPGFueT5bXSA9IFtdO1xuXG4gIEBIb3N0QmluZGluZyhcImF0dHIucGxhY2UtaWRcIilcbiAgcmVhZG9ubHkgcGxhY2VJZDogc3RyaW5nO1xuXG5cbiAgY2FuRGVhY3RpdmF0ZT8oaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwbGFjZVJvdXRlciA9IGluamVjdChQbGFjZVJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgd2hlbih0aGlzLl9hY3RpdmUpLmJlY29tZXNUcnV0aHkoKCkgPT4gdGhpcy5fbm90aWZ5UGxhY2VSZWFkeSgpKTtcbiAgICB0aGlzLmNoaWxkUGxhY2VzJCA9IExpc3RNb2RlbC5jb25zdGFudCh0aGlzLnBsYWNlRGVmaW5pdGlvbi5jaGlsZHJlbi5tYXAoZCA9PiBkLmNvbXBvbmVudCkpO1xuICAgIHRoaXMucGxhY2VJZCA9IHRoaXMucGxhY2VEZWZpbml0aW9uLnBsYWNlSWQ7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5wbGFjZUlkKSkge1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoXCJwbGFjZUlkIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSB0aGUgcm91dGUgZGF0YSBwYXJhbWV0ZXJzXCIpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluaXRpYWxpc2VWaXNpdCh2aXNpdDogVmlzaXRTZWdtZW50LCBub3RpZnlWaXNpdENoYW5nZWQ6IChjdXJyZW50OiBWaXNpdFNlZ21lbnQsIHByZXZpb3VzOiBWaXNpdFNlZ21lbnQpID0+IHZvaWQpIHtcbiAgICBhc3NlcnQuaXNOaWwodGhpcy52aXNpdCQudmFsdWUpO1xuXG4gICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy52aXNpdCQudmFsdWUgPSB2aXNpdDtcbiAgICBEZWJ1Z0NvbnRleHQuZ2V0T3JDcmVhdGUodGhpcy52aXNpdCQpLnRhZyhgJHt0aGlzLnBsYWNlRGVmaW5pdGlvbi5jb21wb25lbnQubmFtZX0udmlzaXQkYCk7XG5cbiAgICAvLyB3ZSB0cmFjayBpZiB0aGUgYW55IG9mIHRoZSBiaW5kaW5ncyB1cGRhdGVkIHRoZSByb3V0ZS4gIElmIHNvIHdlIHJlbWVtYmVyIGl0IGFuZCB1cGRhdGUgdGhlXG4gICAgLy8gcm91dGUgaW4gb25lIGdvIGF0IHRoZSBlbmQuXG4gICAgdGhpcy5wbGFjZURlZmluaXRpb25cbiAgICAgIC5nZXRWaXNpdFBhcmFtZXRlckRlZnMoKVxuICAgICAgLmZvckVhY2gocGFyYW1ldGVyRGVmID0+IHRoaXMuaW5zdGFsbEFuZEluaXRpYWxpc2VCaW5kaW5nKHZpc2l0LCBwYXJhbWV0ZXJEZWYpKTtcblxuICAgIHdoZW4odGhpcy52aXNpdCQpLmNoYW5nZXMoKGN1cnJlbnQsIHByZXZpb3VzKSA9PiB7XG4gICAgICBub3RpZnlWaXNpdENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpO1xuICAgIH0sIHt1bmxlc3M6IHRoaXMuX2luVmlzaXRVcGRhdGV9KTtcblxuICAgIC8vIFRPRE86IHRoaXMgbmVlZHMgdG8gZG8gYSByZXBsYWNlIHVybCBvcHRpb24gc28gdGhhdCB0aGUgbmV3IHVybCBpc24ndCBwdXQgaW4gdGhlIGhpc3RvcnkuLi4uIGZvclxuICAgIC8vICAgICAgIG5vdyB3ZSdyZSBub3QgZG9pbmcgaXQgYXMgaXQncyBhIGZhaXIgYml0IG9mIGVmZm9ydCBhbmQgd2lsbCBvbmx5IGFmZmVjdCBwZW9wbGUgaWYgdGhleSdyZVxuICAgIC8vICAgICAgIGN1dHRpbmcgYW5kIHBhc3RpbmcgdXJscyB0byBlYWNoIG90aGVyLlxuICAgIC8vIC8vIHRoZSBiaW5kaW5nIHByb2Nlc3MgY2FuIHVwZGF0ZSB0aGUgdmlzaXQgKGUuZy4gaWYgYSBzZWxlY3Rpb24gbW9kZWwgaGFzIGFscmVhZHkgc2VsZWN0ZWQgZHVyaW5nXG4gICAgLy8gLy8gY29tcG9uZW50IGNvbnN0cnVjdGlvbikgYW5kIHRoZXJlIHdhcyBubyB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIHJvdXRlXG4gICAgLy8gaWYgKHZpc2l0Lmhhc1JvdXRpbmdDaGFuZ2VkRnJvbSh0aGlzLnZpc2l0TW9kZWwudmFsdWUpKSB7XG4gICAgLy8gICBub3RpZnlWaXNpdENoYW5nZWQodGhpcy52aXNpdE1vZGVsLnZhbHVlLCB2aXNpdClcbiAgICAvLyB9XG4gIH1cblxuICBnZXQgY2hpbGRQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRQbGFjZXMkLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZpc2l0KHZpc2l0OiBWaXNpdFNlZ21lbnQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0luaXRpYWxpc2VkKCkpO1xuICAgIGFzc2VydC5ub3ROaWwodmlzaXQpO1xuICAgIHRoaXMuX2luVmlzaXRVcGRhdGUud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMudmlzaXQkLnZhbHVlID0gdmlzaXQ7XG4gICAgfSk7XG4gIH1cblxuICBpc0luaXRpYWxpc2VkKCkge1xuICAgIHJldHVybiAhIXRoaXMudmlzaXQkLnZhbHVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgLyoqXG4gICAqIEluaXRpYWxpc2VkIHRoZSBjb21wb25lbnQgYmluZGluZ3MuICBJZiBhbnkgYmluZGluZyBoYXMgYW4gaW5pdGlhbCBtb2RlbCB2YWx1ZSAoZS5nLiBhIHNlbGVjdGlvbiBtb2RlbFxuICAgKiBpbml0aWFsaXNlZCBkdXJpbmcgdGhlIGNvbnN0cnVjdG9yKSBhbmQgdGhlIHJvdXRlIGhhcyBub3RoaW5nLCB0aGVuIHRoZSB2aXNpdCB3aWxsIGJlIHVkcGF0ZWQgYW5kIHRoaXNcbiAgICogbWV0aG9kIHdpbGwgcmV0dXJuIHR1cmUgdG8gbm9maXkgdGhlIHRoZSB2aXNpdCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHByaXZhdGUgaW5zdGFsbEFuZEluaXRpYWxpc2VCaW5kaW5nPFQsIFM+KGluaXRpYWxWaXNpdDogVmlzaXRTZWdtZW50LCBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXNbcGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZV0gYXMgSU11dGFibGVIYXNWYWx1ZTxUPjtcbiAgICBhc3NlcnQubm90TmlsKG1vZGVsKTtcbiAgICBEZWJ1Z0NvbnRleHQudGFnKG1vZGVsLCBgJHt0aGlzLnBsYWNlRGVmaW5pdGlvbi5jb21wb25lbnQubmFtZX0uJHtwYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lfWApO1xuICAgIGNvbnN0IGJpbmRpbmcgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgQmluZGluZyh0aGlzLnZpc2l0JCwgbW9kZWwsIHtcbiAgICAgIHRvUmlnaHQodmlzaXQ6IFZpc2l0U2VnbWVudCk6IFQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZpc2l0LmdldFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckRlZik7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwdXNoIHRvIGNvbXBvbmVudCcsIHsgbmFtZTogcGFyYW1ldGVyRGVmLm5hbWUsIHZhbHVlLCB2aXNpdCB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHRvTGVmdCh2YWx1ZTogVCwgY3VycmVudFZpc2l0PzogVmlzaXRTZWdtZW50KTogVmlzaXRTZWdtZW50IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3B1c2ggdG8gcm91dGUnLCB7IG5hbWU6IHBhcmFtZXRlckRlZi5uYW1lLCB2YWx1ZSwgY3VycmVudFZpc2l0IH0pO1xuICAgICAgICByZXR1cm4gY3VycmVudFZpc2l0LnJlcGxhY2UocGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgLy8gTm93IHdlIG5lZWQgdG8gaW5pdGlhbGlzZSB0aGUgYmluZGluZyBkaXJlY3Rpb24uICBJZiB3ZSBoYXZlIGEgdmFsdWUgaW4gdGhlIFVybCB0aGVuIHdlIHNob3VsZCBhbHdheXMgcHVzaFxuICAgIC8vIHRoYXQgdG8gdGhlIHZpZXcuICBJZiB3ZSBkb24ndCBhbmQgdGhlIHZpZXcgYWxyZWFkeSBoYXMgYSB2YWx1ZSAoZS5nLiBhIHNlbGVjdGlvbiBtb2RlbCBoYXMgYWxyZWFkeSBpbml0aWFsaXNlZCBpbiB0aGVcbiAgICAvLyBjb21wb25lbnQgY29uc3RydWN0b3IpIHRoZW4gd2Ugc2hvdWxkIHB1c2ggdGhhdCB0byB0aGUgcm91dGUuXG4gICAgY29uc3QgaXNJblZpc2l0ID0gIWlzTmlsKGluaXRpYWxWaXNpdC5nZXRQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXJEZWYpKTtcbiAgICBjb25zdCBpc0luTW9kZWwgPSAhaXNOaWwobW9kZWwudmFsdWUpO1xuICAgIGlmICghaXNJblZpc2l0ICYmIGlzSW5Nb2RlbCkge1xuICAgICAgYmluZGluZy53cml0ZUxlZnQoKTsgLy8gcHVzaCBpdCB0byB0aGUgcm91dGVcbiAgICB9IGVsc2Uge1xuICAgICAgYmluZGluZy53cml0ZVJpZ2h0KCk7IC8vIHB1c2ggaXQgdG8gdGhlIG1vZGVsXG4gICAgfVxuICB9XG5cbiAgQE1lbW9pemVHZXQoKVxuICBnZXQgcGxhY2VEZWZpbml0aW9uKCk6IFBsYWNlRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24odGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBleHRlbmRzIFBsYWNlQ29tcG9uZW50IGJ1dCBkb2Vzbid0IGhhdmUgQFBsYWNlKHsuLn0pIGRlY29yYXRvci5gKVxuICAgIH1cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZS5yZWFkb25seSQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSByb3V0ZXIgdG8gc2VlIGlmIHRoaXMgY29tcG9uZW50IGNhbiBkZWFjdGl2YXRlLiAgVGhpcyBpc24ndCBjYWxsZWQgZm9yIHJvdXRlIHBhcmFtZXRlciBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW50ZXJhY3Rpb25Db250ZXh0XG4gICAqL1xuICBhc3luYyBfY2FuTGVhdmVQbGFjZShpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkRlYWN0aXZhdGUgPyB0aGlzLmNhbkRlYWN0aXZhdGUoaW50ZXJhY3Rpb25Db250ZXh0KSA6IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSByb3V0ZXIgdG8gc2VlIGlmIHRoaXMgY29tcG9uZW50IGNhbiBkZWFjdGl2YXRlLiAgVGhpcyBpc24ndCBjYWxsZWQgZm9yIHJvdXRlIHBhcmFtZXRlciBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW50ZXJhY3Rpb25Db250ZXh0XG4gICAqIEBwYXJhbSBuZXh0U3RhdGVcbiAgICovXG4gIGFzeW5jIF9jYW5DaGFuZ2VSb3V0ZVBhcmFtZXRlcnMoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQsIG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBpZiAodGhpcy5fcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIGNvbnN0IHZpc2l0ID0gbmV4dFN0YXRlLmNyZWF0ZVZpc2l0U2VnbWVudEZvcih0aGlzLnBsYWNlRGVmaW5pdGlvbik7XG4gICAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGg7IGkrKykge1xuICAgIC8vICAgICBjb25zdCBpbnRlcmNlcHRvciA9IHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yc1tpXTtcbiAgICAvLyAgICAgY29uc3Qga2VlcEdvaW5nID0gYXdhaXQgaW50ZXJjZXB0b3IuY2FuUHJvY2VlZCh2aXNpdCwgaW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICAvLyAgICAgaWYgKCFrZWVwR29pbmcpIHtcbiAgICAvLyAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIHJvdXRlciB3aGVuIHRoZSBwbGFjZSBpcyByZWFkeSB0byBpbnRlcmFjdCBhZnRlciBhbnkgYW5pbWF0aW9ucyBoYXZlIHJ1bi5cbiAgICovXG4gIF9ub3RpZnlBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYWN0aXZlLnZhbHVlID0gYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHdoZW4gdGhlIHBsYWNlIGlzIHJlYWR5IHRvIGludGVyYWN0IGFmdGVyIGFueSBhbmltYXRpb25zIGhhdmUgcnVuLlxuICAgKi9cbiAgX25vdGlmeVBsYWNlUmVhZHkoKSB7XG4gICAgaWYgKHRoaXMub25QbGFjZVJlYWR5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fcGxhY2VSZWFkeUNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ092ZXJyaWRpbmcgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5IGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBVc2UgUGxhY2VDb21wb25lbnQub25QbGFjZVJlYWR5KCgpID0+IHsuLi4gZG8gc3R1ZmYuLi59KSBpbnN0ZWFkLicpO1xuICAgICAgdGhpcy5vblBsYWNlUmVhZHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBvblBsYWNlUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9wbGFjZVJlYWR5Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gaW50ZXJjZXB0VmlzaXRQYXJhbWV0ZXJDaGFuZ2U8VD4obW9kZWw6IFZhbHVlTW9kZWw8VD4sIGNhbGxiYWNrOiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRDYWxsYmFjazxUPiwgb3B0aW9ucz86IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdE9wdGlvbnMpIHtcbiAgLy8gICBjb25zdCBwYXJhbWV0ZXJEZWYgPSBQYXJhbWV0ZXJEZWZpbml0aW9uLmdldChtb2RlbCk7XG4gIC8vICAgdGhpcy5fcGFyYW1ldGVyQ2hhbmdlSW50ZXJjZXB0b3JzLnB1c2gobmV3IFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yKHBhcmFtZXRlckRlZiwgbW9kZWwsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG4gIC8vIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlQ29tcG9uZW50IHtcblxuICBleHBvcnQgZnVuY3Rpb24gaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldDogYW55KTogdGFyZ2V0IGlzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gbGFuZy5jb25zdHJ1Y3RvckNoYWluKHRhcmdldCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4pLmluY2x1ZGVzKFBsYWNlQ29tcG9uZW50KTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBhcmFtZXRlcnMoa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgIHJldHVybiBLbGFzcy5nZXQoa2xhc3MpLmdldE1ldGFkYXRhTGlzdChST1VURV9QQVJBTUVURVJfTElTVF9LRVkpIGFzIFBhcmFtZXRlckRlZmluaXRpb248YW55PltdO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldERlZmluaXRpb24oc25hcHNob3RPckNvbnN0cnVjdG9yOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQbGFjZURlZmluaXRpb24ge1xuICAgIGlmIChzbmFwc2hvdE9yQ29uc3RydWN0b3IgaW5zdGFuY2VvZiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBzbmFwc2hvdE9yQ29uc3RydWN0b3IuY29tcG9uZW50O1xuICAgICAgaWYgKCFpc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IoY29tcG9uZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjdGl2YXRlZFJvdXRlU25hcHNob3QgY29tcG9uZW50IGlzIG5vdCBhIFBsYWNlQ29tcG9uZW50LCBnb3QgJHtjb21wb25lbnR9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIGNvbXBvbmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgc25hcHNob3RPckNvbnN0cnVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIGRlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBkZWZpbml0aW9uLCBrbGFzcyk7XG4gIH1cblxuICAvLyBleHBvcnQgdHlwZSBJbnRlcmNlcHRDYWxsYmFjazxUPiA9IChpczogVCwgd2FzOiBULCBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLy8gZXhwb3J0IGludGVyZmFjZSBJbnRlcmNlcHRPcHRpb25zIHtcbiAgLy8gICBpbml0aWFsVmFsdWU6ICdldmFsdWF0aW9uVW5sZXNzTmlsJyB8ICdldmFsdWF0ZSdcbiAgLy8gfVxuXG5cbn1cbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2UtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsTUFBTSxFQUNOLE9BQU8sRUFFUCxZQUFZLEVBQ1osR0FBRyxFQUNILEtBQUssRUFFTCxJQUFJLEVBQ0osU0FBUyxFQUNULGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM3QixPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTNDLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztBQUNuRSxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFHekUsd0NBQXdDO0FBQ3hDLHVLQUF1SztBQUN2SyxNQUFNO0FBQ04sRUFBRTtBQUNGLHdGQUF3RjtBQUN4RixtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLElBQUk7QUFHSixNQUFNLE9B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QUFDO1NBQzdFO0lBQ0gsQ0FBQztJQVZlLDRCQUFhLGdCQVU1QixDQUFBO0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBb0MsRUFBRSxVQUEyQjtRQUNoRyxPQUFPLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRmUsK0JBQWdCLG1CQUUvQixDQUFBO0lBRUQsNEhBQTRIO0lBRTVILHNDQUFzQztJQUN0QyxxREFBcUQ7SUFDckQsSUFBSTtBQUdOLENBQUMsRUFqQ2dCLGNBQWMsS0FBZCxjQUFjLFFBaUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWJ1Z0NvbnRleHQsXG4gIERzbCxcbiAgR3VhcmQsXG4gIElNdXRhYmxlSGFzVmFsdWUsXG4gIGxhbmcsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHtLbGFzc30gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQge01lbW9pemV9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvcic7XG5pbXBvcnQge2lzTmlsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7RGlzcG9zYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQge0ludGVyYWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQge1BsYWNlRGVmaW5pdGlvbn0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7UGxhY2VSb3V0ZXJ9IGZyb20gXCIuL3BsYWNlLXJvdXRlclwiO1xuaW1wb3J0IHtQYXJhbWV0ZXJEZWZpbml0aW9ufSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uJztcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gJy4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tICcuL3Zpc2l0LXNlZ21lbnQnO1xuXG5cbi8vIFJBS0U6IG1ha2luZyB0aGlzIFN5bWJvbCguLi4pIGJyb2tlIHRoaW5ncy5cbmV4cG9ydCBjb25zdCBERUZJTklUSU9OX01FVEFfREFUQV9LRVkgPSAnUExBQ0VfREVGSU5JVElPTl9PUFRJT05TJztcbi8vIHRoaXMgb25lIHNlZW1zIG9rLlxuZXhwb3J0IGNvbnN0IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSA9IFN5bWJvbCgncGxhY2U6cm91dGU6cGFyYW1ldGVycycpO1xuXG5cbi8vIGNsYXNzIFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yPFQ+IHtcbi8vICAgY29uc3RydWN0b3IocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+LCBtb2RlbDogVmFsdWVNb2RlbDxUPiwgY2FsbGJhY2s6IFBsYWNlQ29tcG9uZW50LkludGVyY2VwdENhbGxiYWNrPFQ+LCBvcHRpb25zOiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRPcHRpb25zKSB7XG4vLyAgIH1cbi8vXG4vLyAgIGFzeW5jIGNhblByb2NlZWQobmV4dFN0YXRlOiBWaXNpdFNlZ21lbnQsIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4vLyAgICAgcmV0dXJuIHRydWU7XG4vLyAgIH1cbi8vIH1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wbGFjZVJlYWR5Q2FsbGJhY2tzOiAoKCk9PnZvaWQpW10gPSBbXTtcbiAgcHJpdmF0ZSB2aXNpdE1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0U2VnbWVudD4oKTtcbiAgcHJpdmF0ZSBfaW5WaXNpdFVwZGF0ZSA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIF9hY3RpdmUgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGludGVyYWN0aW9uQ29udGV4dD86IEludGVyYWN0aW9uQ29udGV4dDtcbiAgcmVhZG9ubHkgY2hpbGRQbGFjZXMkOiBMaXN0TW9kZWw8Q29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4+O1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcnM6IFBhcmFtZXRlckNoYW5nZUludGVyY2VwdG9yPGFueT5bXSA9IFtdO1xuXG5cbiAgY2FuRGVhY3RpdmF0ZT8oaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwbGFjZVJvdXRlciA9IGluamVjdChQbGFjZVJvdXRlcik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9ufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMuX2FjdGl2ZSkuYmVjb21lc1RydXRoeSgoKSA9PiB0aGlzLl9ub3RpZnlQbGFjZVJlYWR5KCkpO1xuICAgIHRoaXMuY2hpbGRQbGFjZXMkID0gTGlzdE1vZGVsLmNvbnN0YW50KHRoaXMucGxhY2VEZWZpbml0aW9uLmNoaWxkcmVuLm1hcChkID0+IGQuY29tcG9uZW50KSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGlzZVZpc2l0KHZpc2l0OiBWaXNpdFNlZ21lbnQsIG5vdGlmeVZpc2l0Q2hhbmdlZDogKGN1cnJlbnQ6IFZpc2l0U2VnbWVudCwgcHJldmlvdXM6IFZpc2l0U2VnbWVudCkgPT4gdm9pZCkge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnZpc2l0TW9kZWwudmFsdWUpO1xuXG4gICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy52aXNpdE1vZGVsLnZhbHVlID0gdmlzaXQ7XG4gICAgRGVidWdDb250ZXh0LmdldE9yQ3JlYXRlKHRoaXMudmlzaXRNb2RlbCkudGFnKGAke3RoaXMucGxhY2VEZWZpbml0aW9uLmNvbXBvbmVudC5uYW1lfS52aXNpdE1vZGVsYCk7XG5cbiAgICAvLyB3ZSB0cmFjayBpZiB0aGUgYW55IG9mIHRoZSBiaW5kaW5ncyB1cGRhdGVkIHRoZSByb3V0ZS4gIElmIHNvIHdlIHJlbWVtYmVyIGl0IGFuZCB1cGRhdGUgdGhlXG4gICAgLy8gcm91dGUgaW4gb25lIGdvIGF0IHRoZSBlbmQuXG4gICAgdGhpcy5wbGFjZURlZmluaXRpb25cbiAgICAgIC5nZXRWaXNpdFBhcmFtZXRlckRlZnMoKVxuICAgICAgLmZvckVhY2gocGFyYW1ldGVyRGVmID0+IHRoaXMuaW5zdGFsbEFuZEluaXRpYWxpc2VCaW5kaW5nKHZpc2l0LCBwYXJhbWV0ZXJEZWYpKTtcblxuICAgIHdoZW4odGhpcy52aXNpdE1vZGVsKS5jaGFuZ2VzKChjdXJyZW50LCBwcmV2aW91cykgPT4ge1xuICAgICAgbm90aWZ5VmlzaXRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTtcbiAgICB9LCB7dW5sZXNzOiB0aGlzLl9pblZpc2l0VXBkYXRlfSk7XG5cbiAgICAvLyBUT0RPOiB0aGlzIG5lZWRzIHRvIGRvIGEgcmVwbGFjZSB1cmwgb3B0aW9uIHNvIHRoYXQgdGhlIG5ldyB1cmwgaXNuJ3QgcHV0IGluIHRoZSBoaXN0b3J5Li4uLiBmb3JcbiAgICAvLyAgICAgICBub3cgd2UncmUgbm90IGRvaW5nIGl0IGFzIGl0J3MgYSBmYWlyIGJpdCBvZiBlZmZvcnQgYW5kIHdpbGwgb25seSBhZmZlY3QgcGVvcGxlIGlmIHRoZXkncmVcbiAgICAvLyAgICAgICBjdXR0aW5nIGFuZCBwYXN0aW5nIHVybHMgdG8gZWFjaCBvdGhlci5cbiAgICAvLyAvLyB0aGUgYmluZGluZyBwcm9jZXNzIGNhbiB1cGRhdGUgdGhlIHZpc2l0IChlLmcuIGlmIGEgc2VsZWN0aW9uIG1vZGVsIGhhcyBhbHJlYWR5IHNlbGVjdGVkIGR1cmluZ1xuICAgIC8vIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3Rpb24pIGFuZCB0aGVyZSB3YXMgbm8gdmFsdWUgc3BlY2lmaWVkIGluIHRoZSByb3V0ZVxuICAgIC8vIGlmICh2aXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20odGhpcy52aXNpdE1vZGVsLnZhbHVlKSkge1xuICAgIC8vICAgbm90aWZ5VmlzaXRDaGFuZ2VkKHRoaXMudmlzaXRNb2RlbC52YWx1ZSwgdmlzaXQpXG4gICAgLy8gfVxuICB9XG5cbiAgZ2V0IGNoaWxkUGxhY2VzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkUGxhY2VzJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWaXNpdCh2aXNpdDogVmlzaXRTZWdtZW50KSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTtcbiAgICBhc3NlcnQubm90TmlsKHZpc2l0KTtcbiAgICB0aGlzLl9pblZpc2l0VXBkYXRlLndoaWxlVHJ1ZSgoKSA9PiB7XG4gICAgICB0aGlzLnZpc2l0TW9kZWwudmFsdWUgPSB2aXNpdDtcbiAgICB9KTtcbiAgfVxuXG4gIGlzSW5pdGlhbGlzZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpdE1vZGVsLnZhbHVlO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgLyoqXG4gICAqIEluaXRpYWxpc2VkIHRoZSBjb21wb25lbnQgYmluZGluZ3MuICBJZiBhbnkgYmluZGluZyBoYXMgYW4gaW5pdGlhbCBtb2RlbCB2YWx1ZSAoZS5nLiBhIHNlbGVjdGlvbiBtb2RlbFxuICAgKiBpbml0aWFsaXNlZCBkdXJpbmcgdGhlIGNvbnN0cnVjdG9yKSBhbmQgdGhlIHJvdXRlIGhhcyBub3RoaW5nLCB0aGVuIHRoZSB2aXNpdCB3aWxsIGJlIHVkcGF0ZWQgYW5kIHRoaXNcbiAgICogbWV0aG9kIHdpbGwgcmV0dXJuIHR1cmUgdG8gbm9maXkgdGhlIHRoZSB2aXNpdCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHByaXZhdGUgaW5zdGFsbEFuZEluaXRpYWxpc2VCaW5kaW5nPFQsIFM+KGluaXRpYWxWaXNpdDogVmlzaXRTZWdtZW50LCBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXNbcGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZV0gYXMgSU11dGFibGVIYXNWYWx1ZTxUPjtcbiAgICBEZWJ1Z0NvbnRleHQudGFnKG1vZGVsLCBgJHt0aGlzLnBsYWNlRGVmaW5pdGlvbi5jb21wb25lbnQubmFtZX0uJHtwYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lfWApO1xuICAgIGNvbnN0IGJpbmRpbmcgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgQmluZGluZyh0aGlzLnZpc2l0TW9kZWwsIG1vZGVsLCB7XG4gICAgICB0b1JpZ2h0KHZpc2l0OiBWaXNpdFNlZ21lbnQpOiBUIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2aXNpdC5nZXRQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXJEZWYpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byBjb21wb25lbnQnLCB7IG5hbWU6IHBhcmFtZXRlckRlZi5uYW1lLCB2YWx1ZSwgdmlzaXQgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQodmFsdWU6IFQsIGN1cnJlbnRWaXNpdD86IFZpc2l0U2VnbWVudCk6IFZpc2l0U2VnbWVudCB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwdXNoIHRvIHJvdXRlJywgeyBuYW1lOiBwYXJhbWV0ZXJEZWYubmFtZSwgdmFsdWUsIGN1cnJlbnRWaXNpdCB9KTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWaXNpdC5yZXBsYWNlKHBhcmFtZXRlckRlZiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGluaXRpYWxpc2UgdGhlIGJpbmRpbmcgZGlyZWN0aW9uLiAgSWYgd2UgaGF2ZSBhIHZhbHVlIGluIHRoZSBVcmwgdGhlbiB3ZSBzaG91bGQgYWx3YXlzIHB1c2hcbiAgICAvLyB0aGF0IHRvIHRoZSB2aWV3LiAgSWYgd2UgZG9uJ3QgYW5kIHRoZSB2aWV3IGFscmVhZHkgaGFzIGEgdmFsdWUgKGUuZy4gYSBzZWxlY3Rpb24gbW9kZWwgaGFzIGFscmVhZHkgaW5pdGlhbGlzZWQgaW4gdGhlXG4gICAgLy8gY29tcG9uZW50IGNvbnN0cnVjdG9yKSB0aGVuIHdlIHNob3VsZCBwdXNoIHRoYXQgdG8gdGhlIHJvdXRlLlxuICAgIGNvbnN0IGlzSW5WaXNpdCA9ICFpc05pbChpbml0aWFsVmlzaXQuZ2V0UGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyRGVmKSk7XG4gICAgY29uc3QgaXNJbk1vZGVsID0gIWlzTmlsKG1vZGVsLnZhbHVlKTtcbiAgICBpZiAoIWlzSW5WaXNpdCAmJiBpc0luTW9kZWwpIHtcbiAgICAgIGJpbmRpbmcud3JpdGVMZWZ0KCk7IC8vIHB1c2ggaXQgdG8gdGhlIHJvdXRlXG4gICAgfSBlbHNlIHtcbiAgICAgIGJpbmRpbmcud3JpdGVSaWdodCgpOyAvLyBwdXNoIGl0IHRvIHRoZSBtb2RlbFxuICAgIH1cbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOiBQbGFjZURlZmluaXRpb24ge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHRoaXMuY29uc3RydWN0b3IgYXMgYW55IGFzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gZXh0ZW5kcyBQbGFjZUNvbXBvbmVudCBidXQgZG9lc24ndCBoYXZlIEBQbGFjZSh7Li59KSBkZWNvcmF0b3IuYClcbiAgICB9XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBnZXQgYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmUucmVhZG9ubHkkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKi9cbiAgYXN5bmMgX2NhbkxlYXZlUGxhY2UoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5EZWFjdGl2YXRlID8gdGhpcy5jYW5EZWFjdGl2YXRlKGludGVyYWN0aW9uQ29udGV4dCkgOiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcm91dGVyIHRvIHNlZSBpZiB0aGlzIGNvbXBvbmVudCBjYW4gZGVhY3RpdmF0ZS4gIFRoaXMgaXNuJ3QgY2FsbGVkIGZvciByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcy5cbiAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgKiBAcGFyYW0gbmV4dFN0YXRlXG4gICAqL1xuICBhc3luYyBfY2FuQ2hhbmdlUm91dGVQYXJhbWV0ZXJzKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gaWYgKHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBjb25zdCB2aXNpdCA9IG5leHRTdGF0ZS5jcmVhdGVWaXNpdFNlZ21lbnRGb3IodGhpcy5wbGFjZURlZmluaXRpb24pO1xuICAgIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9wYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSB0aGlzLl9wYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcnNbaV07XG4gICAgLy8gICAgIGNvbnN0IGtlZXBHb2luZyA9IGF3YWl0IGludGVyY2VwdG9yLmNhblByb2NlZWQodmlzaXQsIGludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgLy8gICAgIGlmICgha2VlcEdvaW5nKSB7XG4gICAgLy8gICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSByb3V0ZXIgd2hlbiB0aGUgcGxhY2UgaXMgcmVhZHkgdG8gaW50ZXJhY3QgYWZ0ZXIgYW55IGFuaW1hdGlvbnMgaGF2ZSBydW4uXG4gICAqL1xuICBfbm90aWZ5QWN0aXZlKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2FjdGl2ZS52YWx1ZSA9IGFjdGl2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIHJvdXRlciB3aGVuIHRoZSBwbGFjZSBpcyByZWFkeSB0byBpbnRlcmFjdCBhZnRlciBhbnkgYW5pbWF0aW9ucyBoYXZlIHJ1bi5cbiAgICovXG4gIF9ub3RpZnlQbGFjZVJlYWR5KCkge1xuICAgIGlmICh0aGlzLm9uUGxhY2VSZWFkeS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuX3BsYWNlUmVhZHlDYWxsYmFja3MuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxsYmFjaygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdPdmVycmlkaW5nIFBsYWNlQ29tcG9uZW50Lm9uUGxhY2VSZWFkeSBoYXMgYmVlbiBkZXByZWNhdGVkLiAgVXNlIFBsYWNlQ29tcG9uZW50Lm9uUGxhY2VSZWFkeSgoKSA9PiB7Li4uIGRvIHN0dWZmLi4ufSkgaW5zdGVhZC4nKTtcbiAgICAgIHRoaXMub25QbGFjZVJlYWR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgb25QbGFjZVJlYWR5KGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fcGxhY2VSZWFkeUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIGludGVyY2VwdFZpc2l0UGFyYW1ldGVyQ2hhbmdlPFQ+KG1vZGVsOiBWYWx1ZU1vZGVsPFQ+LCBjYWxsYmFjazogUGxhY2VDb21wb25lbnQuSW50ZXJjZXB0Q2FsbGJhY2s8VD4sIG9wdGlvbnM/OiBQbGFjZUNvbXBvbmVudC5JbnRlcmNlcHRPcHRpb25zKSB7XG4gIC8vICAgY29uc3QgcGFyYW1ldGVyRGVmID0gUGFyYW1ldGVyRGVmaW5pdGlvbi5nZXQobW9kZWwpO1xuICAvLyAgIHRoaXMuX3BhcmFtZXRlckNoYW5nZUludGVyY2VwdG9ycy5wdXNoKG5ldyBQYXJhbWV0ZXJDaGFuZ2VJbnRlcmNlcHRvcihwYXJhbWV0ZXJEZWYsIG1vZGVsLCBjYWxsYmFjaywgb3B0aW9ucykpO1xuICAvLyB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3Rvcih0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIGxhbmcuY29uc3RydWN0b3JDaGFpbih0YXJnZXQgYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVQYXJhbWV0ZXJzKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdIHtcbiAgICByZXR1cm4gS2xhc3MuZ2V0KGtsYXNzKS5nZXRNZXRhZGF0YUxpc3QoUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZKSBhcyBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKHNuYXBzaG90T3JDb25zdHJ1Y3RvcjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICBpZiAoc25hcHNob3RPckNvbnN0cnVjdG9yIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gc25hcHNob3RPckNvbnN0cnVjdG9yLmNvbXBvbmVudDtcbiAgICAgIGlmICghaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGNvbXBvbmVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IGNvbXBvbmVudCBpcyBub3QgYSBQbGFjZUNvbXBvbmVudCwgZ290ICR7Y29tcG9uZW50fWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBjb21wb25lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIHNuYXBzaG90T3JDb25zdHJ1Y3Rvcik7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBkZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgZGVmaW5pdGlvbiwga2xhc3MpO1xuICB9XG5cbiAgLy8gZXhwb3J0IHR5cGUgSW50ZXJjZXB0Q2FsbGJhY2s8VD4gPSAoaXM6IFQsIHdhczogVCwgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8vIGV4cG9ydCBpbnRlcmZhY2UgSW50ZXJjZXB0T3B0aW9ucyB7XG4gIC8vICAgaW5pdGlhbFZhbHVlOiAnZXZhbHVhdGlvblVubGVzc05pbCcgfCAnZXZhbHVhdGUnXG4gIC8vIH1cblxuXG59XG4iXX0=