@angular/core 18.2.5 → 18.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/LICENSE +21 -0
  2. package/esm2022/index.mjs +2 -2
  3. package/esm2022/primitives/event-dispatch/contract_binary.mjs +2 -2
  4. package/esm2022/primitives/event-dispatch/index.mjs +2 -2
  5. package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +2 -2
  6. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +2 -2
  7. package/esm2022/primitives/event-dispatch/src/attribute.mjs +2 -2
  8. package/esm2022/primitives/event-dispatch/src/bootstrap_app_scoped.mjs +2 -2
  9. package/esm2022/primitives/event-dispatch/src/bootstrap_global.mjs +2 -2
  10. package/esm2022/primitives/event-dispatch/src/cache.mjs +2 -2
  11. package/esm2022/primitives/event-dispatch/src/char.mjs +2 -2
  12. package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +2 -2
  13. package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +2 -2
  14. package/esm2022/primitives/event-dispatch/src/event.mjs +2 -2
  15. package/esm2022/primitives/event-dispatch/src/event_contract_container.mjs +2 -2
  16. package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +2 -2
  17. package/esm2022/primitives/event-dispatch/src/event_contract_multi_container.mjs +2 -2
  18. package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +2 -2
  19. package/esm2022/primitives/event-dispatch/src/event_handler.mjs +2 -2
  20. package/esm2022/primitives/event-dispatch/src/event_info.mjs +2 -2
  21. package/esm2022/primitives/event-dispatch/src/event_type.mjs +2 -2
  22. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +2 -2
  23. package/esm2022/primitives/event-dispatch/src/key_code.mjs +2 -2
  24. package/esm2022/primitives/event-dispatch/src/property.mjs +2 -2
  25. package/esm2022/primitives/event-dispatch/src/restriction.mjs +2 -2
  26. package/esm2022/primitives/signals/index.mjs +2 -2
  27. package/esm2022/primitives/signals/src/computed.mjs +2 -2
  28. package/esm2022/primitives/signals/src/equality.mjs +2 -2
  29. package/esm2022/primitives/signals/src/errors.mjs +2 -2
  30. package/esm2022/primitives/signals/src/graph.mjs +2 -2
  31. package/esm2022/primitives/signals/src/signal.mjs +2 -2
  32. package/esm2022/primitives/signals/src/watch.mjs +2 -2
  33. package/esm2022/primitives/signals/src/weak_ref.mjs +2 -2
  34. package/esm2022/public_api.mjs +2 -2
  35. package/esm2022/rxjs-interop/index.mjs +2 -2
  36. package/esm2022/rxjs-interop/public_api.mjs +2 -2
  37. package/esm2022/rxjs-interop/src/index.mjs +2 -2
  38. package/esm2022/rxjs-interop/src/output_from_observable.mjs +2 -2
  39. package/esm2022/rxjs-interop/src/output_to_observable.mjs +2 -2
  40. package/esm2022/rxjs-interop/src/take_until_destroyed.mjs +2 -2
  41. package/esm2022/rxjs-interop/src/to_observable.mjs +2 -2
  42. package/esm2022/rxjs-interop/src/to_signal.mjs +3 -3
  43. package/esm2022/src/application/application_config.mjs +2 -2
  44. package/esm2022/src/application/application_init.mjs +1 -1
  45. package/esm2022/src/application/application_module.mjs +2 -2
  46. package/esm2022/src/application/application_ngmodule_factory_compiler.mjs +2 -2
  47. package/esm2022/src/application/application_ref.mjs +2 -2
  48. package/esm2022/src/application/application_tokens.mjs +2 -2
  49. package/esm2022/src/application/create_application.mjs +2 -2
  50. package/esm2022/src/authoring/input/input.mjs +2 -2
  51. package/esm2022/src/authoring/input/input_signal.mjs +2 -2
  52. package/esm2022/src/authoring/input/input_signal_node.mjs +2 -2
  53. package/esm2022/src/authoring/input/input_type_checking.mjs +2 -2
  54. package/esm2022/src/authoring/model/model.mjs +2 -2
  55. package/esm2022/src/authoring/model/model_signal.mjs +2 -2
  56. package/esm2022/src/authoring/output/output.mjs +2 -2
  57. package/esm2022/src/authoring/output/output_emitter_ref.mjs +2 -2
  58. package/esm2022/src/authoring/output/output_ref.mjs +2 -2
  59. package/esm2022/src/authoring/queries.mjs +2 -2
  60. package/esm2022/src/authoring.mjs +2 -2
  61. package/esm2022/src/cached_injector_service.mjs +2 -2
  62. package/esm2022/src/change_detection/change_detection.mjs +2 -2
  63. package/esm2022/src/change_detection/change_detector_ref.mjs +2 -2
  64. package/esm2022/src/change_detection/constants.mjs +2 -2
  65. package/esm2022/src/change_detection/differs/default_iterable_differ.mjs +2 -2
  66. package/esm2022/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
  67. package/esm2022/src/change_detection/differs/iterable_differs.mjs +2 -2
  68. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +2 -2
  69. package/esm2022/src/change_detection/pipe_transform.mjs +2 -2
  70. package/esm2022/src/change_detection/scheduling/exhaustive_check_no_changes.mjs +2 -2
  71. package/esm2022/src/change_detection/scheduling/flags.mjs +2 -2
  72. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +2 -2
  73. package/esm2022/src/change_detection/scheduling/zoneless_scheduling.mjs +2 -2
  74. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  75. package/esm2022/src/change_detection.mjs +2 -2
  76. package/esm2022/src/compiler/compiler_facade.mjs +2 -2
  77. package/esm2022/src/compiler/compiler_facade_interface.mjs +2 -2
  78. package/esm2022/src/console.mjs +2 -2
  79. package/esm2022/src/core.mjs +2 -2
  80. package/esm2022/src/core_private_export.mjs +3 -4
  81. package/esm2022/src/core_reactivity_export.mjs +2 -2
  82. package/esm2022/src/core_reactivity_export_internal.mjs +3 -2
  83. package/esm2022/src/core_render3_private_export.mjs +2 -2
  84. package/esm2022/src/debug/debug_node.mjs +2 -2
  85. package/esm2022/src/defer/cleanup.mjs +2 -2
  86. package/esm2022/src/defer/discovery.mjs +2 -2
  87. package/esm2022/src/defer/dom_triggers.mjs +2 -2
  88. package/esm2022/src/defer/idle_scheduler.mjs +2 -2
  89. package/esm2022/src/defer/instructions.mjs +2 -2
  90. package/esm2022/src/defer/interfaces.mjs +2 -2
  91. package/esm2022/src/defer/timer_scheduler.mjs +2 -2
  92. package/esm2022/src/defer/utils.mjs +2 -2
  93. package/esm2022/src/di/contextual.mjs +2 -2
  94. package/esm2022/src/di/create_injector.mjs +2 -2
  95. package/esm2022/src/di/forward_ref.mjs +2 -2
  96. package/esm2022/src/di/host_attribute_token.mjs +2 -2
  97. package/esm2022/src/di/host_tag_name_token.mjs +2 -2
  98. package/esm2022/src/di/index.mjs +2 -2
  99. package/esm2022/src/di/initializer_token.mjs +2 -2
  100. package/esm2022/src/di/inject_switch.mjs +2 -2
  101. package/esm2022/src/di/injectable.mjs +2 -2
  102. package/esm2022/src/di/injection_token.mjs +2 -2
  103. package/esm2022/src/di/injector.mjs +2 -2
  104. package/esm2022/src/di/injector_compatibility.mjs +2 -2
  105. package/esm2022/src/di/injector_marker.mjs +2 -2
  106. package/esm2022/src/di/injector_token.mjs +2 -2
  107. package/esm2022/src/di/interface/defs.mjs +2 -2
  108. package/esm2022/src/di/interface/injector.mjs +2 -2
  109. package/esm2022/src/di/interface/provider.mjs +2 -2
  110. package/esm2022/src/di/internal_tokens.mjs +2 -2
  111. package/esm2022/src/di/jit/environment.mjs +2 -2
  112. package/esm2022/src/di/jit/injectable.mjs +2 -2
  113. package/esm2022/src/di/jit/util.mjs +2 -2
  114. package/esm2022/src/di/metadata.mjs +2 -2
  115. package/esm2022/src/di/metadata_attr.mjs +2 -2
  116. package/esm2022/src/di/null_injector.mjs +2 -2
  117. package/esm2022/src/di/provider_collection.mjs +2 -2
  118. package/esm2022/src/di/provider_token.mjs +2 -2
  119. package/esm2022/src/di/r3_injector.mjs +2 -2
  120. package/esm2022/src/di/scope.mjs +2 -2
  121. package/esm2022/src/di.mjs +2 -2
  122. package/esm2022/src/error_details_base_url.mjs +2 -2
  123. package/esm2022/src/error_handler.mjs +2 -2
  124. package/esm2022/src/errors.mjs +2 -2
  125. package/esm2022/src/event_delegation_utils.mjs +3 -58
  126. package/esm2022/src/event_emitter.mjs +2 -2
  127. package/esm2022/src/hydration/annotate.mjs +2 -2
  128. package/esm2022/src/hydration/api.mjs +2 -2
  129. package/esm2022/src/hydration/cleanup.mjs +2 -2
  130. package/esm2022/src/hydration/compression.mjs +2 -2
  131. package/esm2022/src/hydration/error_handling.mjs +2 -2
  132. package/esm2022/src/hydration/event_replay.mjs +4 -8
  133. package/esm2022/src/hydration/i18n.mjs +2 -2
  134. package/esm2022/src/hydration/interfaces.mjs +2 -2
  135. package/esm2022/src/hydration/node_lookup_utils.mjs +2 -2
  136. package/esm2022/src/hydration/skip_hydration.mjs +2 -2
  137. package/esm2022/src/hydration/tokens.mjs +2 -6
  138. package/esm2022/src/hydration/utils.mjs +2 -2
  139. package/esm2022/src/hydration/views.mjs +2 -2
  140. package/esm2022/src/i18n/locale_data_api.mjs +2 -2
  141. package/esm2022/src/i18n/locale_en.mjs +2 -2
  142. package/esm2022/src/i18n/localization.mjs +2 -2
  143. package/esm2022/src/i18n/tokens.mjs +2 -2
  144. package/esm2022/src/i18n/utils.mjs +2 -2
  145. package/esm2022/src/image_performance_warning.mjs +26 -8
  146. package/esm2022/src/interface/lifecycle_hooks.mjs +1 -1
  147. package/esm2022/src/interface/simple_change.mjs +2 -2
  148. package/esm2022/src/interface/type.mjs +2 -2
  149. package/esm2022/src/linker/compiler.mjs +2 -2
  150. package/esm2022/src/linker/component_factory.mjs +2 -2
  151. package/esm2022/src/linker/component_factory_resolver.mjs +2 -2
  152. package/esm2022/src/linker/destroy_ref.mjs +2 -2
  153. package/esm2022/src/linker/element_ref.mjs +2 -2
  154. package/esm2022/src/linker/ng_module_factory.mjs +2 -2
  155. package/esm2022/src/linker/ng_module_factory_loader.mjs +2 -2
  156. package/esm2022/src/linker/ng_module_factory_loader_impl.mjs +2 -2
  157. package/esm2022/src/linker/ng_module_registration.mjs +2 -2
  158. package/esm2022/src/linker/query_list.mjs +2 -2
  159. package/esm2022/src/linker/template_ref.mjs +2 -2
  160. package/esm2022/src/linker/view_container_ref.mjs +2 -2
  161. package/esm2022/src/linker/view_ref.mjs +2 -2
  162. package/esm2022/src/linker.mjs +2 -2
  163. package/esm2022/src/metadata/di.mjs +2 -2
  164. package/esm2022/src/metadata/directives.mjs +2 -2
  165. package/esm2022/src/metadata/do_bootstrap.mjs +2 -2
  166. package/esm2022/src/metadata/ng_module.mjs +2 -2
  167. package/esm2022/src/metadata/ng_module_def.mjs +2 -2
  168. package/esm2022/src/metadata/resource_loading.mjs +2 -2
  169. package/esm2022/src/metadata/schema.mjs +2 -2
  170. package/esm2022/src/metadata/view.mjs +2 -2
  171. package/esm2022/src/metadata.mjs +2 -2
  172. package/esm2022/src/pending_tasks.mjs +2 -2
  173. package/esm2022/src/platform/bootstrap.mjs +1 -1
  174. package/esm2022/src/platform/platform.mjs +2 -2
  175. package/esm2022/src/platform/platform_core_providers.mjs +2 -2
  176. package/esm2022/src/platform/platform_destroy_listeners.mjs +2 -2
  177. package/esm2022/src/platform/platform_ref.mjs +2 -2
  178. package/esm2022/src/r3_symbols.mjs +2 -2
  179. package/esm2022/src/reflection/platform_reflection_capabilities.mjs +2 -2
  180. package/esm2022/src/reflection/reflection_capabilities.mjs +2 -2
  181. package/esm2022/src/render/api.mjs +2 -2
  182. package/esm2022/src/render/api_flags.mjs +2 -2
  183. package/esm2022/src/render.mjs +2 -2
  184. package/esm2022/src/render3/after_render/api.mjs +2 -2
  185. package/esm2022/src/render3/after_render/hooks.mjs +4 -3
  186. package/esm2022/src/render3/after_render/manager.mjs +4 -4
  187. package/esm2022/src/render3/apply_value_input_field.mjs +2 -2
  188. package/esm2022/src/render3/assert.mjs +2 -2
  189. package/esm2022/src/render3/bindings.mjs +2 -2
  190. package/esm2022/src/render3/chained_injector.mjs +2 -2
  191. package/esm2022/src/render3/collect_native_nodes.mjs +2 -2
  192. package/esm2022/src/render3/component.mjs +2 -2
  193. package/esm2022/src/render3/component_ref.mjs +3 -3
  194. package/esm2022/src/render3/context_discovery.mjs +2 -2
  195. package/esm2022/src/render3/debug/framework_injector_profiler.mjs +2 -2
  196. package/esm2022/src/render3/debug/injector_profiler.mjs +2 -2
  197. package/esm2022/src/render3/debug/set_debug_info.mjs +2 -2
  198. package/esm2022/src/render3/definition.mjs +2 -2
  199. package/esm2022/src/render3/definition_factory.mjs +2 -2
  200. package/esm2022/src/render3/deps_tracker/api.mjs +2 -2
  201. package/esm2022/src/render3/deps_tracker/deps_tracker.mjs +2 -2
  202. package/esm2022/src/render3/di.mjs +2 -2
  203. package/esm2022/src/render3/di_setup.mjs +2 -2
  204. package/esm2022/src/render3/errors.mjs +2 -2
  205. package/esm2022/src/render3/errors_di.mjs +2 -2
  206. package/esm2022/src/render3/features/copy_definition_feature.mjs +2 -2
  207. package/esm2022/src/render3/features/host_directives_feature.mjs +2 -2
  208. package/esm2022/src/render3/features/inherit_definition_feature.mjs +2 -2
  209. package/esm2022/src/render3/features/input_transforms_feature.mjs +2 -2
  210. package/esm2022/src/render3/features/ng_onchanges_feature.mjs +2 -2
  211. package/esm2022/src/render3/features/providers_feature.mjs +1 -1
  212. package/esm2022/src/render3/features/standalone_feature.mjs +2 -2
  213. package/esm2022/src/render3/fields.mjs +2 -2
  214. package/esm2022/src/render3/global_utils_api.mjs +2 -2
  215. package/esm2022/src/render3/hooks.mjs +2 -2
  216. package/esm2022/src/render3/i18n/i18n_apply.mjs +2 -2
  217. package/esm2022/src/render3/i18n/i18n_debug.mjs +2 -2
  218. package/esm2022/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
  219. package/esm2022/src/render3/i18n/i18n_locale_id.mjs +2 -2
  220. package/esm2022/src/render3/i18n/i18n_parse.mjs +2 -2
  221. package/esm2022/src/render3/i18n/i18n_postprocess.mjs +2 -2
  222. package/esm2022/src/render3/i18n/i18n_tree_shaking.mjs +2 -2
  223. package/esm2022/src/render3/i18n/i18n_util.mjs +2 -2
  224. package/esm2022/src/render3/index.mjs +2 -2
  225. package/esm2022/src/render3/instructions/advance.mjs +2 -2
  226. package/esm2022/src/render3/instructions/all.mjs +2 -2
  227. package/esm2022/src/render3/instructions/attribute.mjs +2 -2
  228. package/esm2022/src/render3/instructions/attribute_interpolation.mjs +1 -1
  229. package/esm2022/src/render3/instructions/change_detection.mjs +2 -2
  230. package/esm2022/src/render3/instructions/class_map_interpolation.mjs +2 -2
  231. package/esm2022/src/render3/instructions/component_instance.mjs +2 -2
  232. package/esm2022/src/render3/instructions/control_flow.mjs +2 -2
  233. package/esm2022/src/render3/instructions/di.mjs +2 -2
  234. package/esm2022/src/render3/instructions/di_attr.mjs +2 -2
  235. package/esm2022/src/render3/instructions/element.mjs +2 -2
  236. package/esm2022/src/render3/instructions/element_container.mjs +2 -2
  237. package/esm2022/src/render3/instructions/element_validation.mjs +2 -2
  238. package/esm2022/src/render3/instructions/get_current_view.mjs +1 -1
  239. package/esm2022/src/render3/instructions/host_property.mjs +2 -2
  240. package/esm2022/src/render3/instructions/i18n.mjs +2 -2
  241. package/esm2022/src/render3/instructions/i18n_icu_container_visitor.mjs +2 -2
  242. package/esm2022/src/render3/instructions/interpolation.mjs +2 -2
  243. package/esm2022/src/render3/instructions/let_declaration.mjs +2 -2
  244. package/esm2022/src/render3/instructions/listener.mjs +2 -2
  245. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +2 -2
  246. package/esm2022/src/render3/instructions/namespace.mjs +2 -2
  247. package/esm2022/src/render3/instructions/next_context.mjs +2 -2
  248. package/esm2022/src/render3/instructions/projection.mjs +2 -2
  249. package/esm2022/src/render3/instructions/property.mjs +2 -2
  250. package/esm2022/src/render3/instructions/property_interpolation.mjs +1 -1
  251. package/esm2022/src/render3/instructions/queries.mjs +2 -2
  252. package/esm2022/src/render3/instructions/queries_signals.mjs +2 -2
  253. package/esm2022/src/render3/instructions/render.mjs +2 -2
  254. package/esm2022/src/render3/instructions/shared.mjs +2 -2
  255. package/esm2022/src/render3/instructions/storage.mjs +2 -2
  256. package/esm2022/src/render3/instructions/style_map_interpolation.mjs +2 -2
  257. package/esm2022/src/render3/instructions/style_prop_interpolation.mjs +2 -2
  258. package/esm2022/src/render3/instructions/styling.mjs +2 -2
  259. package/esm2022/src/render3/instructions/template.mjs +2 -2
  260. package/esm2022/src/render3/instructions/text.mjs +2 -2
  261. package/esm2022/src/render3/instructions/text_interpolation.mjs +2 -2
  262. package/esm2022/src/render3/instructions/two_way.mjs +2 -2
  263. package/esm2022/src/render3/instructions/write_to_directive_input.mjs +2 -2
  264. package/esm2022/src/render3/interfaces/attribute_marker.mjs +2 -2
  265. package/esm2022/src/render3/interfaces/container.mjs +2 -2
  266. package/esm2022/src/render3/interfaces/context.mjs +2 -2
  267. package/esm2022/src/render3/interfaces/definition.mjs +2 -2
  268. package/esm2022/src/render3/interfaces/document.mjs +2 -2
  269. package/esm2022/src/render3/interfaces/i18n.mjs +2 -2
  270. package/esm2022/src/render3/interfaces/injector.mjs +2 -2
  271. package/esm2022/src/render3/interfaces/input_flags.mjs +2 -2
  272. package/esm2022/src/render3/interfaces/lview_tracking.mjs +2 -2
  273. package/esm2022/src/render3/interfaces/node.mjs +1 -1
  274. package/esm2022/src/render3/interfaces/projection.mjs +2 -2
  275. package/esm2022/src/render3/interfaces/public_definitions.mjs +2 -2
  276. package/esm2022/src/render3/interfaces/query.mjs +2 -2
  277. package/esm2022/src/render3/interfaces/renderer.mjs +2 -2
  278. package/esm2022/src/render3/interfaces/renderer_dom.mjs +2 -2
  279. package/esm2022/src/render3/interfaces/sanitization.mjs +2 -2
  280. package/esm2022/src/render3/interfaces/styling.mjs +2 -2
  281. package/esm2022/src/render3/interfaces/type_checks.mjs +2 -2
  282. package/esm2022/src/render3/interfaces/view.mjs +2 -2
  283. package/esm2022/src/render3/jit/directive.mjs +2 -2
  284. package/esm2022/src/render3/jit/environment.mjs +2 -2
  285. package/esm2022/src/render3/jit/jit_options.mjs +1 -1
  286. package/esm2022/src/render3/jit/module.mjs +2 -2
  287. package/esm2022/src/render3/jit/module_patch.mjs +2 -2
  288. package/esm2022/src/render3/jit/partial.mjs +2 -2
  289. package/esm2022/src/render3/jit/pipe.mjs +2 -2
  290. package/esm2022/src/render3/jit/util.mjs +2 -2
  291. package/esm2022/src/render3/list_reconciliation.mjs +2 -2
  292. package/esm2022/src/render3/local_compilation.mjs +2 -2
  293. package/esm2022/src/render3/metadata.mjs +2 -2
  294. package/esm2022/src/render3/namespaces.mjs +2 -2
  295. package/esm2022/src/render3/ng_module_ref.mjs +2 -2
  296. package/esm2022/src/render3/node_assert.mjs +2 -2
  297. package/esm2022/src/render3/node_manipulation.mjs +2 -2
  298. package/esm2022/src/render3/node_manipulation_i18n.mjs +2 -2
  299. package/esm2022/src/render3/node_selector_matcher.mjs +2 -2
  300. package/esm2022/src/render3/pipe.mjs +2 -2
  301. package/esm2022/src/render3/profiler.mjs +2 -2
  302. package/esm2022/src/render3/profiler_types.mjs +2 -2
  303. package/esm2022/src/render3/pure_function.mjs +2 -2
  304. package/esm2022/src/render3/query.mjs +2 -2
  305. package/esm2022/src/render3/query_reactive.mjs +2 -2
  306. package/esm2022/src/render3/reactive_lview_consumer.mjs +2 -2
  307. package/esm2022/src/render3/reactivity/api.mjs +2 -2
  308. package/esm2022/src/render3/reactivity/asserts.mjs +2 -2
  309. package/esm2022/src/render3/reactivity/computed.mjs +2 -2
  310. package/esm2022/src/render3/reactivity/effect.mjs +2 -2
  311. package/esm2022/src/render3/reactivity/signal.mjs +2 -2
  312. package/esm2022/src/render3/reactivity/untracked.mjs +2 -2
  313. package/esm2022/src/render3/scope.mjs +2 -2
  314. package/esm2022/src/render3/state.mjs +2 -2
  315. package/esm2022/src/render3/styling/class_differ.mjs +2 -2
  316. package/esm2022/src/render3/styling/static_styling.mjs +2 -2
  317. package/esm2022/src/render3/styling/style_binding_list.mjs +2 -2
  318. package/esm2022/src/render3/styling/styling_parser.mjs +2 -2
  319. package/esm2022/src/render3/tokens.mjs +2 -2
  320. package/esm2022/src/render3/util/attrs_utils.mjs +1 -1
  321. package/esm2022/src/render3/util/change_detection_utils.mjs +2 -2
  322. package/esm2022/src/render3/util/discovery_utils.mjs +2 -2
  323. package/esm2022/src/render3/util/global_utils.mjs +2 -2
  324. package/esm2022/src/render3/util/injector_discovery_utils.mjs +2 -2
  325. package/esm2022/src/render3/util/injector_utils.mjs +2 -2
  326. package/esm2022/src/render3/util/misc_utils.mjs +2 -2
  327. package/esm2022/src/render3/util/stringify_utils.mjs +2 -2
  328. package/esm2022/src/render3/util/view_traversal_utils.mjs +2 -2
  329. package/esm2022/src/render3/util/view_utils.mjs +2 -2
  330. package/esm2022/src/render3/view_engine_compatibility_prebound.mjs +2 -2
  331. package/esm2022/src/render3/view_manipulation.mjs +2 -2
  332. package/esm2022/src/render3/view_ref.mjs +2 -2
  333. package/esm2022/src/sanitization/bypass.mjs +2 -2
  334. package/esm2022/src/sanitization/html_sanitizer.mjs +2 -2
  335. package/esm2022/src/sanitization/iframe_attrs_validation.mjs +2 -2
  336. package/esm2022/src/sanitization/inert_body.mjs +2 -2
  337. package/esm2022/src/sanitization/sanitization.mjs +2 -2
  338. package/esm2022/src/sanitization/sanitizer.mjs +2 -2
  339. package/esm2022/src/sanitization/security.mjs +2 -2
  340. package/esm2022/src/sanitization/url_sanitizer.mjs +2 -2
  341. package/esm2022/src/testability/testability.mjs +2 -2
  342. package/esm2022/src/transfer_state.mjs +2 -2
  343. package/esm2022/src/util/array_utils.mjs +2 -2
  344. package/esm2022/src/util/assert.mjs +2 -2
  345. package/esm2022/src/util/callback_scheduler.mjs +2 -2
  346. package/esm2022/src/util/char_code.mjs +2 -2
  347. package/esm2022/src/util/closure.mjs +2 -2
  348. package/esm2022/src/util/coercion.mjs +2 -2
  349. package/esm2022/src/util/comparison.mjs +2 -2
  350. package/esm2022/src/util/decorators.mjs +2 -2
  351. package/esm2022/src/util/dom.mjs +2 -2
  352. package/esm2022/src/util/empty.mjs +2 -2
  353. package/esm2022/src/util/errors.mjs +2 -2
  354. package/esm2022/src/util/global.mjs +2 -2
  355. package/esm2022/src/util/is_dev_mode.mjs +2 -2
  356. package/esm2022/src/util/iterable.mjs +2 -2
  357. package/esm2022/src/util/lang.mjs +2 -2
  358. package/esm2022/src/util/ng_dev_mode.mjs +2 -2
  359. package/esm2022/src/util/ng_i18n_closure_mode.mjs +2 -2
  360. package/esm2022/src/util/ng_jit_mode.mjs +2 -2
  361. package/esm2022/src/util/ng_reflect.mjs +2 -2
  362. package/esm2022/src/util/noop.mjs +2 -2
  363. package/esm2022/src/util/performance.mjs +2 -2
  364. package/esm2022/src/util/property.mjs +2 -2
  365. package/esm2022/src/util/security/trusted_type_defs.mjs +2 -2
  366. package/esm2022/src/util/security/trusted_types.mjs +2 -2
  367. package/esm2022/src/util/security/trusted_types_bypass.mjs +2 -2
  368. package/esm2022/src/util/stringify.mjs +2 -2
  369. package/esm2022/src/version.mjs +3 -3
  370. package/esm2022/src/view/provider_flags.mjs +2 -2
  371. package/esm2022/src/zone/async-stack-tagging.mjs +2 -2
  372. package/esm2022/src/zone/ng_zone.mjs +2 -2
  373. package/esm2022/src/zone.mjs +2 -2
  374. package/esm2022/testing/index.mjs +2 -2
  375. package/esm2022/testing/public_api.mjs +2 -2
  376. package/esm2022/testing/src/application_error_handler.mjs +5 -5
  377. package/esm2022/testing/src/async.mjs +2 -2
  378. package/esm2022/testing/src/component_fixture.mjs +2 -2
  379. package/esm2022/testing/src/defer.mjs +2 -2
  380. package/esm2022/testing/src/fake_async.mjs +2 -2
  381. package/esm2022/testing/src/logger.mjs +5 -5
  382. package/esm2022/testing/src/metadata_override.mjs +2 -2
  383. package/esm2022/testing/src/metadata_overrider.mjs +2 -2
  384. package/esm2022/testing/src/resolvers.mjs +2 -2
  385. package/esm2022/testing/src/styling.mjs +2 -2
  386. package/esm2022/testing/src/test_bed.mjs +2 -2
  387. package/esm2022/testing/src/test_bed_common.mjs +2 -2
  388. package/esm2022/testing/src/test_bed_compiler.mjs +2 -2
  389. package/esm2022/testing/src/test_hooks.mjs +2 -2
  390. package/esm2022/testing/src/testing.mjs +2 -2
  391. package/esm2022/testing/src/testing_internal.mjs +2 -2
  392. package/fesm2022/core.mjs +41 -113
  393. package/fesm2022/core.mjs.map +1 -1
  394. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  395. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  396. package/fesm2022/primitives/signals.mjs +1 -1
  397. package/fesm2022/primitives/signals.mjs.map +1 -1
  398. package/fesm2022/rxjs-interop.mjs +2 -2
  399. package/fesm2022/rxjs-interop.mjs.map +1 -1
  400. package/fesm2022/testing.mjs +4 -4
  401. package/fesm2022/testing.mjs.map +1 -1
  402. package/index.d.ts +41 -55
  403. package/package.json +1 -1
  404. package/primitives/event-dispatch/index.d.ts +1 -1
  405. package/primitives/signals/index.d.ts +1 -1
  406. package/rxjs-interop/index.d.ts +1 -1
  407. package/schematics/migrations/after-render-phase/bundle.js +270 -270
  408. package/schematics/migrations/http-providers/bundle.js +273 -273
  409. package/schematics/migrations/invalid-two-way-bindings/bundle.js +164 -164
  410. package/schematics/ng-generate/control-flow-migration/bundle.js +273 -273
  411. package/schematics/ng-generate/inject-migration/bundle.js +284 -277
  412. package/schematics/ng-generate/route-lazy-loading/bundle.js +270 -284
  413. package/schematics/ng-generate/standalone-migration/bundle.js +457 -455
  414. package/testing/index.d.ts +1 -1
  415. package/esm2022/src/event_dispatch/event_delegation.mjs +0 -43
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /*
9
9
  * Names of events that are special to jsaction. These are not all
@@ -323,4 +323,4 @@ const EARLY_EVENT_TYPES = BUBBLE_EVENT_TYPES.concat(CAPTURE_EVENT_TYPES);
323
323
  * Whether or not an event type is registered in the early contract.
324
324
  */
325
325
  export const isEarlyEventType = (eventType) => EARLY_EVENT_TYPES.indexOf(eventType) >= 0;
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2Qjs7O09BR0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxNQUFNLEVBQUUsUUFBUTtJQUVoQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7Ozs7O09BS0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7O09BRUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLE9BQU87SUFFZDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLFNBQVM7SUFFbEI7O09BRUc7SUFDSCxJQUFJLEVBQUUsTUFBTTtJQUVaOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQVU7SUFFcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxTQUFTO0lBRWxCOzs7T0FHRztJQUNILFFBQVEsRUFBRSxVQUFVO0lBRXBCOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsU0FBUztJQUVsQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7Ozs7T0FJRztJQUNILFNBQVMsRUFBRSxXQUFXO0lBRXRCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFB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LEVBQUUsQ0FDdEQsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU5QyxrREFBa0Q7QUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUV6RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKlxuICogTmFtZXMgb2YgZXZlbnRzIHRoYXQgYXJlIHNwZWNpYWwgdG8ganNhY3Rpb24uIFRoZXNlIGFyZSBub3QgYWxsXG4gKiBldmVudCB0eXBlcyB0aGF0IGFyZSBsZWdhbCB0byB1c2UgaW4gZWl0aGVyIEhUTUwgb3IgdGhlIGFkZEV2ZW50KClcbiAqIEFQSSwgYnV0IHRoZXNlIGFyZSB0aGUgb25lcyB0aGF0IGFyZSB0cmVhdGVkIHNwZWNpYWxseS4gQWxsIG90aGVyXG4gKiBET00gZXZlbnRzIGNhbiBiZSB1c2VkIGluIGVpdGhlciBhZGRFdmVudCgpIG9yIGluIHRoZSB2YWx1ZSBvZiB0aGVcbiAqIGpzYWN0aW9uIGF0dHJpYnV0ZS4gQmV3YXJlIG9mIGJyb3dzZXIgc3BlY2lmaWMgZXZlbnRzIG9yIGV2ZW50c1xuICogdGhhdCBkb24ndCBidWJibGUgdGhvdWdoOiBJZiB0aGV5IGFyZSBub3QgbWVudGlvbmVkIGhlcmUsIHRoZW5cbiAqIGV2ZW50IGNvbnRyYWN0IGRvZXNuJ3Qgd29yayBhcm91bmQgdGhlaXIgcGVjdWxpYXJpdGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50VHlwZSA9IHtcbiAgLyoqXG4gICAqIE1vdXNlIG1pZGRsZSBjbGljaywgaW50cm9kdWNlZCBpbiBDaHJvbWUgNTUgYW5kIG5vdCB5ZXQgc3VwcG9ydGVkIG9uXG4gICAqIG90aGVyIGJyb3dzZXJzLlxuICAgKi9cbiAgQVVYQ0xJQ0s6ICdhdXhjbGljaycsXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFuZ2UgZXZlbnQgZmlyZWQgYnkgYnJvd3NlcnMgd2hlbiB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgb2YgaW5wdXQsXG4gICAqIHNlbGVjdCwgYW5kIHRleHRhcmVhIGVsZW1lbnRzIGFyZSBjaGFuZ2VkLlxuICAgKi9cbiAgQ0hBTkdFOiAnY2hhbmdlJyxcblxuICAvKipcbiAgICogVGhlIGNsaWNrIGV2ZW50LiBJbiBhZGRFdmVudCgpIHJlZmVycyB0byBhbGwgY2xpY2sgZXZlbnRzLCBpbiB0aGVcbiAgICoganNhY3Rpb24gYXR0cmlidXRlIGl0IHJlZmVycyB0byB0aGUgdW5tb2RpZmllZCBjbGljayBhbmQgRW50ZXIvU3BhY2VcbiAgICoga2V5cHJlc3MgZXZlbnRzLiAgSW4gdGhlIGxhdHRlciBjYXNlLCBhIGpzYWN0aW9uIGNsaWNrIHdpbGwgYmUgdHJpZ2dlcmVkLFxuICAgKiBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zLiAgU2VlIGNsaWNrbW9kIGFuZCBjbGlja29ubHksIGJlbG93LlxuICAgKi9cbiAgQ0xJQ0s6ICdjbGljaycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUganNhY3Rpb24gZm9yIGEgbW9kaWZpZWQgY2xpY2sgZXZlbnQgKGkuZS4gYSBtb3VzZVxuICAgKiBjbGljayB3aXRoIHRoZSBtb2RpZmllciBrZXkgQ21kL0N0cmwgcHJlc3NlZCkuIFRoaXMgZXZlbnQgaXNuJ3RcbiAgICogc2VwYXJhdGVseSBlbmFibGVkIGluIGFkZEV2ZW50KCksIGJlY2F1c2UgaW4gdGhlIERPTSwgaXQncyBqdXN0IGFcbiAgICogY2xpY2sgZXZlbnQuXG4gICAqL1xuICBDTElDS01PRDogJ2NsaWNrbW9kJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBqc2FjdGlvbiBmb3IgYSBjbGljay1vbmx5IGV2ZW50LiAgQ2xpY2stb25seSBkb2Vzbid0IHRha2VcbiAgICogaW50byBhY2NvdW50IHRoZSBjYXNlIHdoZXJlIGFuIGVsZW1lbnQgd2l0aCBmb2N1cyByZWNlaXZlcyBhbiBFbnRlci9TcGFjZVxuICAgKiBrZXlwcmVzcy4gIFRoaXMgZXZlbnQgaXNuJ3Qgc2VwYXJhdGVseSBlbmFibGVkIGluIGFkZEV2ZW50KCkuXG4gICAqL1xuICBDTElDS09OTFk6ICdjbGlja29ubHknLFxuXG4gIC8qKlxuICAgKiBUaGUgZGJsY2xpY2sgZXZlbnQuXG4gICAqL1xuICBEQkxDTElDSzogJ2RibGNsaWNrJyxcblxuICAvKipcbiAgICogRm9jdXMgZG9lc24ndCBidWJibGUsIGJ1dCB5b3UgY2FuIHVzZSBpdCBpbiBhZGRFdmVudCgpIGFuZFxuICAgKiBqc2FjdGlvbiBhbnl3YXkuIEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmcgdW5kZXIgdGhlXG4gICAqIGhvb2QuXG4gICAqL1xuICBGT0NVUzogJ2ZvY3VzJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBvbmx5IGV4aXN0cyBpbiBJRS4gRm9yIGFkZEV2ZW50KCkgYW5kIGpzYWN0aW9uLCB1c2VcbiAgICogZm9jdXMgaW5zdGVhZDsgRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZyBldmVuIHRob3VnaFxuICAgKiBmb2N1cyBkb2Vzbid0IGJ1YmJsZS5cbiAgICovXG4gIEZPQ1VTSU46ICdmb2N1c2luJyxcblxuICAvKipcbiAgICogQW5hbG9nIHRvIGZvY3VzLlxuICAgKi9cbiAgQkxVUjogJ2JsdXInLFxuXG4gIC8qKlxuICAgKiBBbmFsb2cgdG8gZm9jdXNpbi5cbiAgICovXG4gIEZPQ1VTT1VUOiAnZm9jdXNvdXQnLFxuXG4gIC8qKlxuICAgKiBTdWJtaXQgZG9lc24ndCBidWJibGUsIHNvIGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggZXZlbnRcbiAgICogY29udHJhY3QuIEhvd2V2ZXIsIHRoZSBicm93c2VyIGhlbHBmdWxseSBmaXJlcyBhIGNsaWNrIGV2ZW50IG9uXG4gICAqIHRoZSBzdWJtaXQgYnV0dG9uIG9mIGEgZm9ybSAoZXZlbiBpZiB0aGUgZm9ybSBpcyBub3Qgc3VibWl0dGVkIGJ5XG4gICAqIGEgY2xpY2sgb24gdGhlIHN1Ym1pdCBidXR0b24pLiBTbyB5b3Ugc2hvdWxkIGhhbmRsZSBjbGljayBvbiB0aGVcbiAgICogc3VibWl0IGJ1dHRvbiBpbnN0ZWFkLlxuICAgKi9cbiAgU1VCTUlUOiAnc3VibWl0JyxcblxuICAvKipcbiAgICogVGhlIGtleWRvd24gZXZlbnQuIEluIGFkZEV2ZW50KCkgYW5kIG5vbi1jbGljayBqc2FjdGlvbiBpdCByZXByZXNlbnRzIHRoZVxuICAgKiByZWd1bGFyIERPTSBrZXlkb3duIGV2ZW50LiBJdCByZXByZXNlbnRzIGNsaWNrIGFjdGlvbnMgaW4gbm9uLUdlY2tvXG4gICAqIGJyb3dzZXJzLlxuICAgKi9cbiAgS0VZRE9XTjogJ2tleWRvd24nLFxuXG4gIC8qKlxuICAgKiBUaGUga2V5cHJlc3MgZXZlbnQuIEluIGFkZEV2ZW50KCkgYW5kIG5vbi1jbGljayBqc2FjdGlvbiBpdCByZXByZXNlbnRzIHRoZVxuICAgKiByZWd1bGFyIERPTSBrZXlwcmVzcyBldmVudC4gSXQgcmVwcmVzZW50cyBjbGljayBhY3Rpb25zIGluIEdlY2tvIGJyb3dzZXJzLlxuICAgKi9cbiAgS0VZUFJFU1M6ICdrZXlwcmVzcycsXG5cbiAgLyoqXG4gICAqIFRoZSBrZXl1cCBldmVudC4gSW4gYWRkRXZlbnQoKSBhbmQgbm9uLWNsaWNrIGpzYWN0aW9uIGl0IHJlcHJlc2VudHMgdGhlXG4gICAqIHJlZ3VsYXIgRE9NIGtleXVwIGV2ZW50LiBJdCByZXByZXNlbnRzIGNsaWNrIGFjdGlvbnMgaW4gbm9uLUdlY2tvXG4gICAqIGJyb3dzZXJzLlxuICAgKi9cbiAgS0VZVVA6ICdrZXl1cCcsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZXVwIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgbW91c2V1cCBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZXVwIGV2ZW50LlxuICAgKi9cbiAgTU9VU0VVUDogJ21vdXNldXAnLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2Vkb3duIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgbW91c2VlbnRlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZW92ZXIgZXZlbnQuXG4gICAqL1xuICBNT1VTRURPV046ICdtb3VzZWRvd24nLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2VvdmVyIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgbW91c2VlbnRlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZW92ZXIgZXZlbnQuXG4gICAqL1xuICBNT1VTRU9WRVI6ICdtb3VzZW92ZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2VvdXQgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZW92ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogbW91c2VvdXQgZXZlbnQuXG4gICAqL1xuICBNT1VTRU9VVDogJ21vdXNlb3V0JyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlZW50ZXIgZXZlbnQuIERvZXMgbm90IGJ1YmJsZSBhbmQgZmlyZXMgaW5kaXZpZHVhbGx5IG9uIGVhY2hcbiAgICogZWxlbWVudCBiZWluZyBlbnRlcmVkIHdpdGhpbiBhIERPTSB0cmVlLlxuICAgKi9cbiAgTU9VU0VFTlRFUjogJ21vdXNlZW50ZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2VsZWF2ZSBldmVudC4gRG9lcyBub3QgYnViYmxlIGFuZCBmaXJlcyBpbmRpdmlkdWFsbHkgb24gZWFjaFxuICAgKiBlbGVtZW50IGJlaW5nIGVudGVyZWQgd2l0aGluIGEgRE9NIHRyZWUuXG4gICAqL1xuICBNT1VTRUxFQVZFOiAnbW91c2VsZWF2ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZW1vdmUgZXZlbnQuXG4gICAqL1xuICBNT1VTRU1PVkU6ICdtb3VzZW1vdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcnVwIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgcG9pbnRlcnVwIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIHBvaW50ZXJ1cCBldmVudC5cbiAgICovXG4gIFBPSU5URVJVUDogJ3BvaW50ZXJ1cCcsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyZG93biBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIHBvaW50ZXJlbnRlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZW92ZXIgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVSRE9XTjogJ3BvaW50ZXJkb3duJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJvdmVyIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgcG9pbnRlcmVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIHBvaW50ZXJvdmVyIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUk9WRVI6ICdwb2ludGVyb3ZlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyb3V0IGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgcG9pbnRlcm92ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogcG9pbnRlcm91dCBldmVudC5cbiAgICovXG4gIFBPSU5URVJPVVQ6ICdwb2ludGVyb3V0JyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJlbnRlciBldmVudC4gRG9lcyBub3QgYnViYmxlIGFuZCBmaXJlcyBpbmRpdmlkdWFsbHkgb24gZWFjaFxuICAgKiBlbGVtZW50IGJlaW5nIGVudGVyZWQgd2l0aGluIGEgRE9NIHRyZWUuXG4gICAqL1xuICBQT0lOVEVSRU5URVI6ICdwb2ludGVyZW50ZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcmxlYXZlIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIFBPSU5URVJMRUFWRTogJ3BvaW50ZXJsZWF2ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVybW92ZSBldmVudC5cbiAgICovXG4gIFBPSU5URVJNT1ZFOiAncG9pbnRlcm1vdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcmNhbmNlbCBldmVudC5cbiAgICovXG4gIFBPSU5URVJDQU5DRUw6ICdwb2ludGVyY2FuY2VsJyxcblxuICAvKipcbiAgICogVGhlIGdvdHBvaW50ZXJjYXB0dXJlIGV2ZW50IGlzIGZpcmVkIHdoZW5cbiAgICogRWxlbWVudC5zZXRQb2ludGVyQ2FwdHVyZShwb2ludGVySWQpIGlzIGNhbGxlZCBvbiBhIG1vdXNlIGlucHV0LCBvclxuICAgKiBpbXBsaWNpdGx5IHdoZW4gYSB0b3VjaCBpbnB1dCBiZWdpbnMuXG4gICAqL1xuICBHT1RQT0lOVEVSQ0FQVFVSRTogJ2dvdHBvaW50ZXJjYXB0dXJlJyxcblxuICAvKipcbiAgICogVGhlIGxvc3Rwb2ludGVyY2FwdHVyZSBldmVudCBpcyBmaXJlZCB3aGVuXG4gICAqIEVsZW1lbnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHBvaW50ZXJJZCkgaXMgY2FsbGVkLCBvciBpbXBsaWNpdGx5IGFmdGVyIGFcbiAgICogdG91Y2ggaW5wdXQgZW5kcy5cbiAgICovXG4gIExPU1RQT0lOVEVSQ0FQVFVSRTogJ2xvc3Rwb2ludGVyY2FwdHVyZScsXG5cbiAgLyoqXG4gICAqIFRoZSBlcnJvciBldmVudC4gVGhlIGVycm9yIGV2ZW50IGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW5cbiAgICogYWRkRXZlbnQoKSBhbmQganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHVuZGVyXG4gICAqIHRoZSBob29kIChleGNlcHQgaW4gSUU4IHdoaWNoIGRvZXMgbm90IHVzZSBlcnJvciBldmVudHMpLlxuICAgKi9cbiAgRVJST1I6ICdlcnJvcicsXG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkIGV2ZW50LiBUaGUgbG9hZCBldmVudCBkb2Vzbid0IGJ1YmJsZSwgYnV0IHlvdSBjYW4gdXNlIGl0IGluXG4gICAqIGFkZEV2ZW50KCkgYW5kIGpzYWN0aW9uIGFueXdheS4gRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZ1xuICAgKiB1bmRlciB0aGUgaG9vZC5cbiAgICovXG4gIExPQUQ6ICdsb2FkJyxcblxuICAvKipcbiAgICogVGhlIHVubG9hZCBldmVudC5cbiAgICovXG4gIFVOTE9BRDogJ3VubG9hZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0b3VjaHN0YXJ0IGV2ZW50LiBCdWJibGVzLCB3aWxsIG9ubHkgZXZlciBmaXJlIGluIGJyb3dzZXJzIHdpdGhcbiAgICogdG91Y2ggc3VwcG9ydC5cbiAgICovXG4gIFRPVUNIU1RBUlQ6ICd0b3VjaHN0YXJ0JyxcblxuICAvKipcbiAgICogVGhlIHRvdWNoZW5kIGV2ZW50LiBCdWJibGVzLCB3aWxsIG9ubHkgZXZlciBmaXJlIGluIGJyb3dzZXJzIHdpdGhcbiAgICogdG91Y2ggc3VwcG9ydC5cbiAgICovXG4gIFRPVUNIRU5EOiAndG91Y2hlbmQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG91Y2htb3ZlIGV2ZW50LiBCdWJibGVzLCB3aWxsIG9ubHkgZXZlciBmaXJlIGluIGJyb3dzZXJzIHdpdGhcbiAgICogdG91Y2ggc3VwcG9ydC5cbiAgICovXG4gIFRPVUNITU9WRTogJ3RvdWNobW92ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBldmVudC5cbiAgICovXG4gIElOUFVUOiAnaW5wdXQnLFxuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGV2ZW50LlxuICAgKi9cbiAgU0NST0xMOiAnc2Nyb2xsJyxcblxuICAvKipcbiAgICogVGhlIHRvZ2dsZSBldmVudC4gVGhlIHRvZ2dsZSBldmVudCBkb2Vzbid0IGJ1YmJsZSwgYnV0IHlvdSBjYW4gdXNlIGl0IGluXG4gICAqIGFkZEV2ZW50KCkgYW5kIGpzYWN0aW9uIGFueXdheS4gRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZ1xuICAgKiB1bmRlciB0aGUgaG9vZC5cbiAgICovXG4gIFRPR0dMRTogJ3RvZ2dsZScsXG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGV2ZW50LiBUaGUgYWN0dWFsIGN1c3RvbSBldmVudCB0eXBlIGlzIGRlY2xhcmVkIGFzIHRoZSAndHlwZSdcbiAgICogZmllbGQgaW4gdGhlIGV2ZW50IGRldGFpbHMuIFN1cHBvcnRlZCBpbiBGaXJlZm94IDYrLCBJRSA5KywgYW5kIGFsbCBDaHJvbWVcbiAgICogdmVyc2lvbnMuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbmFtZS4gVXNlcnMgc2hvdWxkIHVzZSBqc2FjdGlvbidzIGZpcmVDdXN0b21FdmVudCB0b1xuICAgKiBmaXJlIGN1c3RvbSBldmVudHMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoaXMgdHlwZSB0byBjcmVhdGUgdGhlbS5cbiAgICovXG4gIENVU1RPTTogJ19jdXN0b20nLFxufTtcblxuLyoqIEFsbCBldmVudCB0eXBlcyB0aGF0IGRvIG5vdCBidWJibGUgb3IgY2FwdHVyZSBhbmQgbmVlZCBhIHBvbHlmaWxsLiAqL1xuZXhwb3J0IGNvbnN0IE1PVVNFX1NQRUNJQUxfRVZFTlRfVFlQRVMgPSBbXG4gIEV2ZW50VHlwZS5NT1VTRUVOVEVSLFxuICBFdmVudFR5cGUuTU9VU0VMRUFWRSxcbiAgJ3BvaW50ZXJlbnRlcicsXG4gICdwb2ludGVybGVhdmUnLFxuXTtcblxuLyoqIEFsbCBldmVudCB0eXBlcyB0aGF0IGFyZSByZWdpc3RlcmVkIGluIHRoZSBidWJibGUgcGhhc2UuICovXG5leHBvcnQgY29uc3QgQlVCQkxFX0VWRU5UX1RZUEVTID0gW1xuICBFdmVudFR5cGUuQ0xJQ0ssXG4gIEV2ZW50VHlwZS5EQkxDTElDSyxcbiAgRXZlbnRUeXBlLkZPQ1VTSU4sXG4gIEV2ZW50VHlwZS5GT0NVU09VVCxcbiAgRXZlbnRUeXBlLktFWURPV04sXG4gIEV2ZW50VHlwZS5LRVlVUCxcbiAgRXZlbnRUeXBlLktFWVBSRVNTLFxuICBFdmVudFR5cGUuTU9VU0VPVkVSLFxuICBFdmVudFR5cGUuTU9VU0VPVVQsXG4gIEV2ZW50VHlwZS5TVUJNSVQsXG4gIEV2ZW50VHlwZS5UT1VDSFNUQVJULFxuICBFdmVudFR5cGUuVE9VQ0hFTkQsXG4gIEV2ZW50VHlwZS5UT1VDSE1PVkUsXG4gICd0b3VjaGNhbmNlbCcsXG5cbiAgJ2F1eGNsaWNrJyxcbiAgJ2NoYW5nZScsXG4gICdjb21wb3NpdGlvbnN0YXJ0JyxcbiAgJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgJ2NvbXBvc2l0aW9uZW5kJyxcbiAgJ2JlZm9yZWlucHV0JyxcbiAgJ2lucHV0JyxcbiAgJ3NlbGVjdCcsXG5cbiAgJ2NvcHknLFxuICAnY3V0JyxcbiAgJ3Bhc3RlJyxcbiAgJ21vdXNlZG93bicsXG4gICdtb3VzZXVwJyxcbiAgJ3doZWVsJyxcbiAgJ2NvbnRleHRtZW51JyxcblxuICAnZHJhZ292ZXInLFxuICAnZHJhZ2VudGVyJyxcbiAgJ2RyYWdsZWF2ZScsXG4gICdkcm9wJyxcbiAgJ2RyYWdzdGFydCcsXG4gICdkcmFnZW5kJyxcblxuICAncG9pbnRlcmRvd24nLFxuICAncG9pbnRlcm1vdmUnLFxuICAncG9pbnRlcnVwJyxcbiAgJ3BvaW50ZXJjYW5jZWwnLFxuICAncG9pbnRlcm92ZXInLFxuICAncG9pbnRlcm91dCcsXG4gICdnb3Rwb2ludGVyY2FwdHVyZScsXG4gICdsb3N0cG9pbnRlcmNhcHR1cmUnLFxuXG4gIC8vIFZpZGVvIGV2ZW50cy5cbiAgJ2VuZGVkJyxcbiAgJ2xvYWRlZG1ldGFkYXRhJyxcblxuICAvLyBQYWdlIHZpc2liaWxpdHkgZXZlbnRzLlxuICAncGFnZWhpZGUnLFxuICAncGFnZXNob3cnLFxuICAndmlzaWJpbGl0eWNoYW5nZScsXG5cbiAgLy8gQ29udGVudCB2aXNpYmlsaXR5IGV2ZW50cy5cbiAgJ2JlZm9yZW1hdGNoJyxcbl07XG5cbi8qKiBBbGwgZXZlbnQgdHlwZXMgdGhhdCBhcmUgcmVnaXN0ZXJlZCBpbiB0aGUgY2FwdHVyZSBwaGFzZS4gKi9cbmV4cG9ydCBjb25zdCBDQVBUVVJFX0VWRU5UX1RZUEVTID0gW1xuICBFdmVudFR5cGUuRk9DVVMsXG4gIEV2ZW50VHlwZS5CTFVSLFxuICBFdmVudFR5cGUuRVJST1IsXG4gIEV2ZW50VHlwZS5MT0FELFxuICBFdmVudFR5cGUuVE9HR0xFLFxuXTtcblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCBhbiBldmVudCB0eXBlIHNob3VsZCBiZSByZWdpc3RlcmVkIGluIHRoZSBjYXB0dXJlIHBoYXNlLlxuICogQHBhcmFtIGV2ZW50VHlwZVxuICogQHJldHVybnMgYm9vbFxuICovXG5leHBvcnQgY29uc3QgaXNDYXB0dXJlRXZlbnRUeXBlID0gKGV2ZW50VHlwZTogc3RyaW5nKSA9PlxuICBDQVBUVVJFX0VWRU5UX1RZUEVTLmluZGV4T2YoZXZlbnRUeXBlKSA+PSAwO1xuXG4vKiogQWxsIGV2ZW50IHR5cGVzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgZWFybHkuICAqL1xuY29uc3QgRUFSTFlfRVZFTlRfVFlQRVMgPSBCVUJCTEVfRVZFTlRfVFlQRVMuY29uY2F0KENBUFRVUkVfRVZFTlRfVFlQRVMpO1xuXG4vKipcbiAqIFdoZXRoZXIgb3Igbm90IGFuIGV2ZW50IHR5cGUgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgZWFybHkgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Vhcmx5RXZlbnRUeXBlID0gKGV2ZW50VHlwZTogc3RyaW5nKSA9PiBFQVJMWV9FVkVOVF9UWVBFUy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMDtcbiJdfQ==
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2Qjs7O09BR0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxNQUFNLEVBQUUsUUFBUTtJQUVoQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7Ozs7O09BS0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7O09BRUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLE9BQU87SUFFZDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLFNBQVM7SUFFbEI7O09BRUc7SUFDSCxJQUFJLEVBQUUsTUFBTTtJQUVaOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQVU7SUFFcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxTQUFTO0lBRWxCOzs7T0FHRztJQUNILFFBQVEsRUFBRSxVQUFVO0lBRXBCOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsU0FBUztJQUVsQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7Ozs7T0FJRztJQUNILFNBQVMsRUFBRSxXQUFXO0lBRXRCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFB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LEVBQUUsQ0FDdEQsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU5QyxrREFBa0Q7QUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUV6RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuLypcbiAqIE5hbWVzIG9mIGV2ZW50cyB0aGF0IGFyZSBzcGVjaWFsIHRvIGpzYWN0aW9uLiBUaGVzZSBhcmUgbm90IGFsbFxuICogZXZlbnQgdHlwZXMgdGhhdCBhcmUgbGVnYWwgdG8gdXNlIGluIGVpdGhlciBIVE1MIG9yIHRoZSBhZGRFdmVudCgpXG4gKiBBUEksIGJ1dCB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgdHJlYXRlZCBzcGVjaWFsbHkuIEFsbCBvdGhlclxuICogRE9NIGV2ZW50cyBjYW4gYmUgdXNlZCBpbiBlaXRoZXIgYWRkRXZlbnQoKSBvciBpbiB0aGUgdmFsdWUgb2YgdGhlXG4gKiBqc2FjdGlvbiBhdHRyaWJ1dGUuIEJld2FyZSBvZiBicm93c2VyIHNwZWNpZmljIGV2ZW50cyBvciBldmVudHNcbiAqIHRoYXQgZG9uJ3QgYnViYmxlIHRob3VnaDogSWYgdGhleSBhcmUgbm90IG1lbnRpb25lZCBoZXJlLCB0aGVuXG4gKiBldmVudCBjb250cmFjdCBkb2Vzbid0IHdvcmsgYXJvdW5kIHRoZWlyIHBlY3VsaWFyaXRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudFR5cGUgPSB7XG4gIC8qKlxuICAgKiBNb3VzZSBtaWRkbGUgY2xpY2ssIGludHJvZHVjZWQgaW4gQ2hyb21lIDU1IGFuZCBub3QgeWV0IHN1cHBvcnRlZCBvblxuICAgKiBvdGhlciBicm93c2Vycy5cbiAgICovXG4gIEFVWENMSUNLOiAnYXV4Y2xpY2snLFxuXG4gIC8qKlxuICAgKiBUaGUgY2hhbmdlIGV2ZW50IGZpcmVkIGJ5IGJyb3dzZXJzIHdoZW4gdGhlIGB2YWx1ZWAgYXR0cmlidXRlIG9mIGlucHV0LFxuICAgKiBzZWxlY3QsIGFuZCB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgY2hhbmdlZC5cbiAgICovXG4gIENIQU5HRTogJ2NoYW5nZScsXG5cbiAgLyoqXG4gICAqIFRoZSBjbGljayBldmVudC4gSW4gYWRkRXZlbnQoKSByZWZlcnMgdG8gYWxsIGNsaWNrIGV2ZW50cywgaW4gdGhlXG4gICAqIGpzYWN0aW9uIGF0dHJpYnV0ZSBpdCByZWZlcnMgdG8gdGhlIHVubW9kaWZpZWQgY2xpY2sgYW5kIEVudGVyL1NwYWNlXG4gICAqIGtleXByZXNzIGV2ZW50cy4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgYSBqc2FjdGlvbiBjbGljayB3aWxsIGJlIHRyaWdnZXJlZCxcbiAgICogZm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucy4gIFNlZSBjbGlja21vZCBhbmQgY2xpY2tvbmx5LCBiZWxvdy5cbiAgICovXG4gIENMSUNLOiAnY2xpY2snLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGpzYWN0aW9uIGZvciBhIG1vZGlmaWVkIGNsaWNrIGV2ZW50IChpLmUuIGEgbW91c2VcbiAgICogY2xpY2sgd2l0aCB0aGUgbW9kaWZpZXIga2V5IENtZC9DdHJsIHByZXNzZWQpLiBUaGlzIGV2ZW50IGlzbid0XG4gICAqIHNlcGFyYXRlbHkgZW5hYmxlZCBpbiBhZGRFdmVudCgpLCBiZWNhdXNlIGluIHRoZSBET00sIGl0J3MganVzdCBhXG4gICAqIGNsaWNrIGV2ZW50LlxuICAgKi9cbiAgQ0xJQ0tNT0Q6ICdjbGlja21vZCcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUganNhY3Rpb24gZm9yIGEgY2xpY2stb25seSBldmVudC4gIENsaWNrLW9ubHkgZG9lc24ndCB0YWtlXG4gICAqIGludG8gYWNjb3VudCB0aGUgY2FzZSB3aGVyZSBhbiBlbGVtZW50IHdpdGggZm9jdXMgcmVjZWl2ZXMgYW4gRW50ZXIvU3BhY2VcbiAgICoga2V5cHJlc3MuICBUaGlzIGV2ZW50IGlzbid0IHNlcGFyYXRlbHkgZW5hYmxlZCBpbiBhZGRFdmVudCgpLlxuICAgKi9cbiAgQ0xJQ0tPTkxZOiAnY2xpY2tvbmx5JyxcblxuICAvKipcbiAgICogVGhlIGRibGNsaWNrIGV2ZW50LlxuICAgKi9cbiAgREJMQ0xJQ0s6ICdkYmxjbGljaycsXG5cbiAgLyoqXG4gICAqIEZvY3VzIGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW4gYWRkRXZlbnQoKSBhbmRcbiAgICoganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHVuZGVyIHRoZVxuICAgKiBob29kLlxuICAgKi9cbiAgRk9DVVM6ICdmb2N1cycsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgb25seSBleGlzdHMgaW4gSUUuIEZvciBhZGRFdmVudCgpIGFuZCBqc2FjdGlvbiwgdXNlXG4gICAqIGZvY3VzIGluc3RlYWQ7IEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmcgZXZlbiB0aG91Z2hcbiAgICogZm9jdXMgZG9lc24ndCBidWJibGUuXG4gICAqL1xuICBGT0NVU0lOOiAnZm9jdXNpbicsXG5cbiAgLyoqXG4gICAqIEFuYWxvZyB0byBmb2N1cy5cbiAgICovXG4gIEJMVVI6ICdibHVyJyxcblxuICAvKipcbiAgICogQW5hbG9nIHRvIGZvY3VzaW4uXG4gICAqL1xuICBGT0NVU09VVDogJ2ZvY3Vzb3V0JyxcblxuICAvKipcbiAgICogU3VibWl0IGRvZXNuJ3QgYnViYmxlLCBzbyBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoIGV2ZW50XG4gICAqIGNvbnRyYWN0LiBIb3dldmVyLCB0aGUgYnJvd3NlciBoZWxwZnVsbHkgZmlyZXMgYSBjbGljayBldmVudCBvblxuICAgKiB0aGUgc3VibWl0IGJ1dHRvbiBvZiBhIGZvcm0gKGV2ZW4gaWYgdGhlIGZvcm0gaXMgbm90IHN1Ym1pdHRlZCBieVxuICAgKiBhIGNsaWNrIG9uIHRoZSBzdWJtaXQgYnV0dG9uKS4gU28geW91IHNob3VsZCBoYW5kbGUgY2xpY2sgb24gdGhlXG4gICAqIHN1Ym1pdCBidXR0b24gaW5zdGVhZC5cbiAgICovXG4gIFNVQk1JVDogJ3N1Ym1pdCcsXG5cbiAgLyoqXG4gICAqIFRoZSBrZXlkb3duIGV2ZW50LiBJbiBhZGRFdmVudCgpIGFuZCBub24tY2xpY2sganNhY3Rpb24gaXQgcmVwcmVzZW50cyB0aGVcbiAgICogcmVndWxhciBET00ga2V5ZG93biBldmVudC4gSXQgcmVwcmVzZW50cyBjbGljayBhY3Rpb25zIGluIG5vbi1HZWNrb1xuICAgKiBicm93c2Vycy5cbiAgICovXG4gIEtFWURPV046ICdrZXlkb3duJyxcblxuICAvKipcbiAgICogVGhlIGtleXByZXNzIGV2ZW50LiBJbiBhZGRFdmVudCgpIGFuZCBub24tY2xpY2sganNhY3Rpb24gaXQgcmVwcmVzZW50cyB0aGVcbiAgICogcmVndWxhciBET00ga2V5cHJlc3MgZXZlbnQuIEl0IHJlcHJlc2VudHMgY2xpY2sgYWN0aW9ucyBpbiBHZWNrbyBicm93c2Vycy5cbiAgICovXG4gIEtFWVBSRVNTOiAna2V5cHJlc3MnLFxuXG4gIC8qKlxuICAgKiBUaGUga2V5dXAgZXZlbnQuIEluIGFkZEV2ZW50KCkgYW5kIG5vbi1jbGljayBqc2FjdGlvbiBpdCByZXByZXNlbnRzIHRoZVxuICAgKiByZWd1bGFyIERPTSBrZXl1cCBldmVudC4gSXQgcmVwcmVzZW50cyBjbGljayBhY3Rpb25zIGluIG5vbi1HZWNrb1xuICAgKiBicm93c2Vycy5cbiAgICovXG4gIEtFWVVQOiAna2V5dXAnLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2V1cCBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIG1vdXNldXAgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogbW91c2V1cCBldmVudC5cbiAgICovXG4gIE1PVVNFVVA6ICdtb3VzZXVwJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlZG93biBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIG1vdXNlZW50ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogbW91c2VvdmVyIGV2ZW50LlxuICAgKi9cbiAgTU9VU0VET1dOOiAnbW91c2Vkb3duJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlb3ZlciBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIG1vdXNlZW50ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogbW91c2VvdmVyIGV2ZW50LlxuICAgKi9cbiAgTU9VU0VPVkVSOiAnbW91c2VvdmVyJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlb3V0IGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgbW91c2VvdmVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3V0IGV2ZW50LlxuICAgKi9cbiAgTU9VU0VPVVQ6ICdtb3VzZW91dCcsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZWVudGVyIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIE1PVVNFRU5URVI6ICdtb3VzZWVudGVyJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlbGVhdmUgZXZlbnQuIERvZXMgbm90IGJ1YmJsZSBhbmQgZmlyZXMgaW5kaXZpZHVhbGx5IG9uIGVhY2hcbiAgICogZWxlbWVudCBiZWluZyBlbnRlcmVkIHdpdGhpbiBhIERPTSB0cmVlLlxuICAgKi9cbiAgTU9VU0VMRUFWRTogJ21vdXNlbGVhdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2Vtb3ZlIGV2ZW50LlxuICAgKi9cbiAgTU9VU0VNT1ZFOiAnbW91c2Vtb3ZlJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJ1cCBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIHBvaW50ZXJ1cCBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBwb2ludGVydXAgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVSVVA6ICdwb2ludGVydXAnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcmRvd24gZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVyZW50ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogbW91c2VvdmVyIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUkRPV046ICdwb2ludGVyZG93bicsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyb3ZlciBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIHBvaW50ZXJlbnRlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBwb2ludGVyb3ZlciBldmVudC5cbiAgICovXG4gIFBPSU5URVJPVkVSOiAncG9pbnRlcm92ZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcm91dCBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIHBvaW50ZXJvdmVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIHBvaW50ZXJvdXQgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVST1VUOiAncG9pbnRlcm91dCcsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyZW50ZXIgZXZlbnQuIERvZXMgbm90IGJ1YmJsZSBhbmQgZmlyZXMgaW5kaXZpZHVhbGx5IG9uIGVhY2hcbiAgICogZWxlbWVudCBiZWluZyBlbnRlcmVkIHdpdGhpbiBhIERPTSB0cmVlLlxuICAgKi9cbiAgUE9JTlRFUkVOVEVSOiAncG9pbnRlcmVudGVyJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJsZWF2ZSBldmVudC4gRG9lcyBub3QgYnViYmxlIGFuZCBmaXJlcyBpbmRpdmlkdWFsbHkgb24gZWFjaFxuICAgKiBlbGVtZW50IGJlaW5nIGVudGVyZWQgd2l0aGluIGEgRE9NIHRyZWUuXG4gICAqL1xuICBQT0lOVEVSTEVBVkU6ICdwb2ludGVybGVhdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcm1vdmUgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVSTU9WRTogJ3BvaW50ZXJtb3ZlJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJjYW5jZWwgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVSQ0FOQ0VMOiAncG9pbnRlcmNhbmNlbCcsXG5cbiAgLyoqXG4gICAqIFRoZSBnb3Rwb2ludGVyY2FwdHVyZSBldmVudCBpcyBmaXJlZCB3aGVuXG4gICAqIEVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUocG9pbnRlcklkKSBpcyBjYWxsZWQgb24gYSBtb3VzZSBpbnB1dCwgb3JcbiAgICogaW1wbGljaXRseSB3aGVuIGEgdG91Y2ggaW5wdXQgYmVnaW5zLlxuICAgKi9cbiAgR09UUE9JTlRFUkNBUFRVUkU6ICdnb3Rwb2ludGVyY2FwdHVyZScsXG5cbiAgLyoqXG4gICAqIFRoZSBsb3N0cG9pbnRlcmNhcHR1cmUgZXZlbnQgaXMgZmlyZWQgd2hlblxuICAgKiBFbGVtZW50LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShwb2ludGVySWQpIGlzIGNhbGxlZCwgb3IgaW1wbGljaXRseSBhZnRlciBhXG4gICAqIHRvdWNoIGlucHV0IGVuZHMuXG4gICAqL1xuICBMT1NUUE9JTlRFUkNBUFRVUkU6ICdsb3N0cG9pbnRlcmNhcHR1cmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgZXZlbnQuIFRoZSBlcnJvciBldmVudCBkb2Vzbid0IGJ1YmJsZSwgYnV0IHlvdSBjYW4gdXNlIGl0IGluXG4gICAqIGFkZEV2ZW50KCkgYW5kIGpzYWN0aW9uIGFueXdheS4gRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZyB1bmRlclxuICAgKiB0aGUgaG9vZCAoZXhjZXB0IGluIElFOCB3aGljaCBkb2VzIG5vdCB1c2UgZXJyb3IgZXZlbnRzKS5cbiAgICovXG4gIEVSUk9SOiAnZXJyb3InLFxuXG4gIC8qKlxuICAgKiBUaGUgbG9hZCBldmVudC4gVGhlIGxvYWQgZXZlbnQgZG9lc24ndCBidWJibGUsIGJ1dCB5b3UgY2FuIHVzZSBpdCBpblxuICAgKiBhZGRFdmVudCgpIGFuZCBqc2FjdGlvbiBhbnl3YXkuIEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmdcbiAgICogdW5kZXIgdGhlIGhvb2QuXG4gICAqL1xuICBMT0FEOiAnbG9hZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB1bmxvYWQgZXZlbnQuXG4gICAqL1xuICBVTkxPQUQ6ICd1bmxvYWQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG91Y2hzdGFydCBldmVudC4gQnViYmxlcywgd2lsbCBvbmx5IGV2ZXIgZmlyZSBpbiBicm93c2VycyB3aXRoXG4gICAqIHRvdWNoIHN1cHBvcnQuXG4gICAqL1xuICBUT1VDSFNUQVJUOiAndG91Y2hzdGFydCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0b3VjaGVuZCBldmVudC4gQnViYmxlcywgd2lsbCBvbmx5IGV2ZXIgZmlyZSBpbiBicm93c2VycyB3aXRoXG4gICAqIHRvdWNoIHN1cHBvcnQuXG4gICAqL1xuICBUT1VDSEVORDogJ3RvdWNoZW5kJyxcblxuICAvKipcbiAgICogVGhlIHRvdWNobW92ZSBldmVudC4gQnViYmxlcywgd2lsbCBvbmx5IGV2ZXIgZmlyZSBpbiBicm93c2VycyB3aXRoXG4gICAqIHRvdWNoIHN1cHBvcnQuXG4gICAqL1xuICBUT1VDSE1PVkU6ICd0b3VjaG1vdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZXZlbnQuXG4gICAqL1xuICBJTlBVVDogJ2lucHV0JyxcblxuICAvKipcbiAgICogVGhlIHNjcm9sbCBldmVudC5cbiAgICovXG4gIFNDUk9MTDogJ3Njcm9sbCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0b2dnbGUgZXZlbnQuIFRoZSB0b2dnbGUgZXZlbnQgZG9lc24ndCBidWJibGUsIGJ1dCB5b3UgY2FuIHVzZSBpdCBpblxuICAgKiBhZGRFdmVudCgpIGFuZCBqc2FjdGlvbiBhbnl3YXkuIEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmdcbiAgICogdW5kZXIgdGhlIGhvb2QuXG4gICAqL1xuICBUT0dHTEU6ICd0b2dnbGUnLFxuXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBldmVudC4gVGhlIGFjdHVhbCBjdXN0b20gZXZlbnQgdHlwZSBpcyBkZWNsYXJlZCBhcyB0aGUgJ3R5cGUnXG4gICAqIGZpZWxkIGluIHRoZSBldmVudCBkZXRhaWxzLiBTdXBwb3J0ZWQgaW4gRmlyZWZveCA2KywgSUUgOSssIGFuZCBhbGwgQ2hyb21lXG4gICAqIHZlcnNpb25zLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG5hbWUuIFVzZXJzIHNob3VsZCB1c2UganNhY3Rpb24ncyBmaXJlQ3VzdG9tRXZlbnQgdG9cbiAgICogZmlyZSBjdXN0b20gZXZlbnRzIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGlzIHR5cGUgdG8gY3JlYXRlIHRoZW0uXG4gICAqL1xuICBDVVNUT006ICdfY3VzdG9tJyxcbn07XG5cbi8qKiBBbGwgZXZlbnQgdHlwZXMgdGhhdCBkbyBub3QgYnViYmxlIG9yIGNhcHR1cmUgYW5kIG5lZWQgYSBwb2x5ZmlsbC4gKi9cbmV4cG9ydCBjb25zdCBNT1VTRV9TUEVDSUFMX0VWRU5UX1RZUEVTID0gW1xuICBFdmVudFR5cGUuTU9VU0VFTlRFUixcbiAgRXZlbnRUeXBlLk1PVVNFTEVBVkUsXG4gICdwb2ludGVyZW50ZXInLFxuICAncG9pbnRlcmxlYXZlJyxcbl07XG5cbi8qKiBBbGwgZXZlbnQgdHlwZXMgdGhhdCBhcmUgcmVnaXN0ZXJlZCBpbiB0aGUgYnViYmxlIHBoYXNlLiAqL1xuZXhwb3J0IGNvbnN0IEJVQkJMRV9FVkVOVF9UWVBFUyA9IFtcbiAgRXZlbnRUeXBlLkNMSUNLLFxuICBFdmVudFR5cGUuREJMQ0xJQ0ssXG4gIEV2ZW50VHlwZS5GT0NVU0lOLFxuICBFdmVudFR5cGUuRk9DVVNPVVQsXG4gIEV2ZW50VHlwZS5LRVlET1dOLFxuICBFdmVudFR5cGUuS0VZVVAsXG4gIEV2ZW50VHlwZS5LRVlQUkVTUyxcbiAgRXZlbnRUeXBlLk1PVVNFT1ZFUixcbiAgRXZlbnRUeXBlLk1PVVNFT1VULFxuICBFdmVudFR5cGUuU1VCTUlULFxuICBFdmVudFR5cGUuVE9VQ0hTVEFSVCxcbiAgRXZlbnRUeXBlLlRPVUNIRU5ELFxuICBFdmVudFR5cGUuVE9VQ0hNT1ZFLFxuICAndG91Y2hjYW5jZWwnLFxuXG4gICdhdXhjbGljaycsXG4gICdjaGFuZ2UnLFxuICAnY29tcG9zaXRpb25zdGFydCcsXG4gICdjb21wb3NpdGlvbnVwZGF0ZScsXG4gICdjb21wb3NpdGlvbmVuZCcsXG4gICdiZWZvcmVpbnB1dCcsXG4gICdpbnB1dCcsXG4gICdzZWxlY3QnLFxuXG4gICdjb3B5JyxcbiAgJ2N1dCcsXG4gICdwYXN0ZScsXG4gICdtb3VzZWRvd24nLFxuICAnbW91c2V1cCcsXG4gICd3aGVlbCcsXG4gICdjb250ZXh0bWVudScsXG5cbiAgJ2RyYWdvdmVyJyxcbiAgJ2RyYWdlbnRlcicsXG4gICdkcmFnbGVhdmUnLFxuICAnZHJvcCcsXG4gICdkcmFnc3RhcnQnLFxuICAnZHJhZ2VuZCcsXG5cbiAgJ3BvaW50ZXJkb3duJyxcbiAgJ3BvaW50ZXJtb3ZlJyxcbiAgJ3BvaW50ZXJ1cCcsXG4gICdwb2ludGVyY2FuY2VsJyxcbiAgJ3BvaW50ZXJvdmVyJyxcbiAgJ3BvaW50ZXJvdXQnLFxuICAnZ290cG9pbnRlcmNhcHR1cmUnLFxuICAnbG9zdHBvaW50ZXJjYXB0dXJlJyxcblxuICAvLyBWaWRlbyBldmVudHMuXG4gICdlbmRlZCcsXG4gICdsb2FkZWRtZXRhZGF0YScsXG5cbiAgLy8gUGFnZSB2aXNpYmlsaXR5IGV2ZW50cy5cbiAgJ3BhZ2VoaWRlJyxcbiAgJ3BhZ2VzaG93JyxcbiAgJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gIC8vIENvbnRlbnQgdmlzaWJpbGl0eSBldmVudHMuXG4gICdiZWZvcmVtYXRjaCcsXG5dO1xuXG4vKiogQWxsIGV2ZW50IHR5cGVzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGNhcHR1cmUgcGhhc2UuICovXG5leHBvcnQgY29uc3QgQ0FQVFVSRV9FVkVOVF9UWVBFUyA9IFtcbiAgRXZlbnRUeXBlLkZPQ1VTLFxuICBFdmVudFR5cGUuQkxVUixcbiAgRXZlbnRUeXBlLkVSUk9SLFxuICBFdmVudFR5cGUuTE9BRCxcbiAgRXZlbnRUeXBlLlRPR0dMRSxcbl07XG5cbi8qKlxuICogV2hldGhlciBvciBub3QgYW4gZXZlbnQgdHlwZSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgY2FwdHVyZSBwaGFzZS5cbiAqIEBwYXJhbSBldmVudFR5cGVcbiAqIEByZXR1cm5zIGJvb2xcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ2FwdHVyZUV2ZW50VHlwZSA9IChldmVudFR5cGU6IHN0cmluZykgPT5cbiAgQ0FQVFVSRV9FVkVOVF9UWVBFUy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMDtcblxuLyoqIEFsbCBldmVudCB0eXBlcyB0aGF0IGFyZSByZWdpc3RlcmVkIGVhcmx5LiAgKi9cbmNvbnN0IEVBUkxZX0VWRU5UX1RZUEVTID0gQlVCQkxFX0VWRU5UX1RZUEVTLmNvbmNhdChDQVBUVVJFX0VWRU5UX1RZUEVTKTtcblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCBhbiBldmVudCB0eXBlIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIGVhcmx5IGNvbnRyYWN0LlxuICovXG5leHBvcnQgY29uc3QgaXNFYXJseUV2ZW50VHlwZSA9IChldmVudFR5cGU6IHN0cmluZykgPT4gRUFSTFlfRVZFTlRfVFlQRVMuaW5kZXhPZihldmVudFR5cGUpID49IDA7XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * @fileoverview Implements the local event handling contract. This
@@ -226,4 +226,4 @@ export class EventContract {
226
226
  }
227
227
  }
228
228
  }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRjb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRjb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFHTCx1QkFBdUIsR0FDeEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssWUFBWSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUF5QnZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sYUFBYTthQUNqQiwwQkFBcUIsR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUE4QnJELFlBQVksZ0JBQStDO1FBMUIzRDs7Ozs7O1dBTUc7UUFDSyxrQkFBYSxHQUFrQyxFQUFFLENBQUM7UUFFbEQsc0NBQWlDLEdBQThCLEVBQUUsQ0FBQztRQUUxRTs7Ozs7O1dBTUc7UUFDSyxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBb0MsRUFBRSxDQUFDO1FBRzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQWlCLEVBQUUsS0FBWSxFQUFFLFNBQWtCO1FBQ3JFLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyw2QkFBNkI7UUFDMUQsZ0JBQWdCLENBQUMsU0FBUztRQUMxQixZQUFZLENBQUMsS0FBSztRQUNsQixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBaUI7UUFDNUMs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UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGtCQUFrQixDQUFDLFVBQXNCLEVBQUUsV0FBd0I7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsVUFBc0IsRUFBRSxXQUF3QjtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIHRoZSBsb2NhbCBldmVudCBoYW5kbGluZyBjb250cmFjdC4gVGhpc1xuICogYWxsb3dzIERPTSBvYmplY3RzIGluIGEgY29udGFpbmVyIHRoYXQgZW50ZXJzIGludG8gdGhpcyBjb250cmFjdCB0b1xuICogZGVmaW5lIGV2ZW50IGhhbmRsZXJzIHdoaWNoIGFyZSBleGVjdXRlZCBpbiBhIGxvY2FsIGNvbnRleHQuXG4gKlxuICogT25lIEV2ZW50Q29udHJhY3QgaW5zdGFuY2UgY2FuIG1hbmFnZSB0aGUgY29udHJhY3QgZm9yIG11bHRpcGxlXG4gKiBjb250YWluZXJzLCB3aGljaCBhcmUgYWRkZWQgdXNpbmcgdGhlIGFkZENvbnRhaW5lcigpIG1ldGhvZC5cbiAqXG4gKiBFdmVudHMgY2FuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIGFkZEV2ZW50KCkgbWV0aG9kLlxuICpcbiAqIEEgRGlzcGF0Y2hlciBpcyBhZGRlZCB1c2luZyB0aGUgcmVnaXN0ZXJEaXNwYXRjaGVyKCkgbWV0aG9kLiBVbnRpbCB0aGVyZSBpc1xuICogYSBkaXNwYXRjaGVyLCBldmVudHMgYXJlIHF1ZXVlZC4gVGhlIGlkZWEgaXMgdGhhdCB0aGUgRXZlbnRDb250cmFjdFxuICogY2xhc3MgaXMgaW5saW5lZCBpbiB0aGUgSFRNTCBvZiB0aGUgdG9wIGxldmVsIHBhZ2UgYW5kIGluc3RhbnRpYXRlZFxuICogcmlnaHQgYWZ0ZXIgdGhlIHN0YXJ0IG9mIDxib2R5Pi4gVGhlIERpc3BhdGNoZXIgY2xhc3MgaXMgY29udGFpbmVkXG4gKiBpbiB0aGUgZXh0ZXJuYWwgZGVmZXJyZWQganMsIGFuZCBpbnN0YW50aWF0ZWQgYW5kIHJlZ2lzdGVyZWQgd2l0aFxuICogRXZlbnRDb250cmFjdCB3aGVuIHRoZSBleHRlcm5hbCBqYXZhc2NyaXB0IGluIHRoZSBwYWdlIGxvYWRzLiBUaGVcbiAqIGV4dGVybmFsIGphdmFzY3JpcHQgd2lsbCBhbHNvIHJlZ2lzdGVyIHRoZSBqc2FjdGlvbiBoYW5kbGVycywgd2hpY2hcbiAqIHRoZW4gcGljayB1cCB0aGUgcXVldWVkIGV2ZW50cyBhdCB0aGUgdGltZSBvZiByZWdpc3RyYXRpb24uXG4gKlxuICogU2luY2UgdGhpcyBjbGFzcyBpcyBtZWFudCB0byBiZSBpbmxpbmVkIGluIHRoZSBtYWluIHBhZ2UgSFRNTCwgdGhlXG4gKiBzaXplIG9mIHRoZSBiaW5hcnkgY29tcGlsZWQgZnJvbSB0aGlzIGZpbGUgTVVTVCBiZSBrZXB0IGFzIHNtYWxsIGFzXG4gKiBwb3NzaWJsZSBhbmQgdGh1cyBpdHMgZGVwZW5kZW5jaWVzIHRvIGEgbWluaW11bS5cbiAqL1xuXG5pbXBvcnQge1xuICBFYXJseUpzYWN0aW9uRGF0YSxcbiAgRWFybHlKc2FjdGlvbkRhdGFDb250YWluZXIsXG4gIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzLFxufSBmcm9tICcuL2Vhcmx5ZXZlbnRjb250cmFjdCc7XG5pbXBvcnQgKiBhcyBldmVudExpYiBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7RXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXJ9IGZyb20gJy4vZXZlbnRfY29udHJhY3RfY29udGFpbmVyJztcbmltcG9ydCB7TU9VU0VfU1BFQ0lBTF9TVVBQT1JUfSBmcm9tICcuL2V2ZW50X2NvbnRyYWN0X2RlZmluZXMnO1xuaW1wb3J0ICogYXMgZXZlbnRJbmZvTGliIGZyb20gJy4vZXZlbnRfaW5mbyc7XG5pbXBvcnQge01PVVNFX1NQRUNJQUxfRVZFTlRfVFlQRVN9IGZyb20gJy4vZXZlbnRfdHlwZSc7XG5pbXBvcnQge1Jlc3RyaWN0aW9ufSBmcm9tICcuL3Jlc3RyaWN0aW9uJztcblxuLyoqXG4gKiBUaGUgQVBJIG9mIGFuIEV2ZW50Q29udHJhY3QgdGhhdCBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgY29tcGlsYXRpb24gdW5pdC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVucmVuYW1lZEV2ZW50Q29udHJhY3Qge1xuICAvLyBBbGlhcyBmb3IgSnNjdGlvbiBFdmVudENvbnRyYWN0IHJlZ2lzdGVyRGlzcGF0Y2hlci5cbiAgZWNyZChkaXNwYXRjaGVyOiBEaXNwYXRjaGVyLCByZXN0cmljdGlvbjogUmVzdHJpY3Rpb24pOiB2b2lkO1xufVxuXG4vKiogQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB0byBoYW5kbGUgZXZlbnRzIGNhcHR1cmVkIGJ5IHRoZSBFdmVudENvbnRyYWN0LiAqL1xuZXhwb3J0IHR5cGUgRGlzcGF0Y2hlciA9IChldmVudEluZm86IGV2ZW50SW5mb0xpYi5FdmVudEluZm8sIGdsb2JhbERpc3BhdGNoPzogYm9vbGVhbikgPT4gdm9pZDtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBhbiBldmVudCBkaXNwYXRjaGVkIGZyb20gdGhlIGJyb3dzZXIuXG4gKlxuICogZXZlbnRUeXBlOiBNYXkgZGlmZmVyIGZyb20gYGV2ZW50LnR5cGVgIGlmIEpTQWN0aW9uIHVzZXMgYVxuICogc2hvcnQtaGFuZCBuYW1lIG9yIGlzIHBhdGNoaW5nIG92ZXIgYW4gbm9uLWJ1YmJsaW5nIGV2ZW50IHdpdGggYSBidWJibGluZ1xuICogdmFyaWFudC5cbiAqIGV2ZW50OiBUaGUgbmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBjb250YWluZXI6IFRoZSBjb250YWluZXIgZm9yIHRoaXMgZGlzcGF0Y2guXG4gKi9cbnR5cGUgRXZlbnRIYW5kbGVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBldmVudDogRXZlbnQsIGNvbnRhaW5lcjogRWxlbWVudCkgPT4gdm9pZDtcblxuLyoqXG4gKiBFdmVudENvbnRyYWN0IGludGVyY2VwdHMgZXZlbnRzIGluIHRoZSBidWJibGluZyBwaGFzZSBhdCB0aGVcbiAqIGJvdW5kYXJ5IG9mIGEgY29udGFpbmVyIGVsZW1lbnQsIGFuZCBtYXBzIHRoZW0gdG8gZ2VuZXJpYyBhY3Rpb25zXG4gKiB3aGljaCBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBjdXN0b20ganNhY3Rpb24gYXR0cmlidXRlIGluXG4gKiBIVE1MLiBCZWhhdmlvciBvZiB0aGUgYXBwbGljYXRpb24gaXMgdGhlbiBzcGVjaWZpZWQgaW4gdGVybXMgb2ZcbiAqIGhhbmRsZXIgZm9yIHN1Y2ggYWN0aW9ucywgY2YuIGpzYWN0aW9uLkRpc3BhdGNoZXIgaW4gZGlzcGF0Y2hlci5qcy5cbiAqXG4gKiBUaGlzIGhhcyBzZXZlcmFsIGJlbmVmaXRzOiAoMSkgTm8gRE9NIGV2ZW50IGhhbmRsZXJzIG5lZWQgdG8gYmVcbiAqIHJlZ2lzdGVyZWQgb24gdGhlIHNwZWNpZmljIGVsZW1lbnRzIGluIHRoZSBVSS4gKDIpIFRoZSBzZXQgb2ZcbiAqIGV2ZW50cyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gaGFuZGxlIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGVybXNcbiAqIG9mIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhhbiBpbiB0ZXJtcyBvZiBET01cbiAqIGV2ZW50cy4gKDMpIEludm9jYXRpb24gb2YgaGFuZGxlcnMgY2FuIGJlIGRlbGF5ZWQgYW5kIGhhbmRsZXJzIGNhblxuICogYmUgZGVsYXkgbG9hZGVkIGluIGEgZ2VuZXJpYyB3YXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudENvbnRyYWN0IGltcGxlbWVudHMgVW5yZW5hbWVkRXZlbnRDb250cmFjdCB7XG4gIHN0YXRpYyBNT1VTRV9TUEVDSUFMX1NVUFBPUlQgPSBNT1VTRV9TUEVDSUFMX1NVUFBPUlQ7XG5cbiAgcHJpdmF0ZSBjb250YWluZXJNYW5hZ2VyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlciB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBET00gZXZlbnRzIHdoaWNoIHRoaXMgY29udHJhY3QgY292ZXJzLiBVc2VkIHRvIHByZXZlbnQgZG91YmxlXG4gICAqIHJlZ2lzdHJhdGlvbiBvZiBldmVudCB0eXBlcy4gVGhlIHZhbHVlIG9mIHRoZSBtYXAgaXMgdGhlXG4gICAqIGludGVybmFsbHkgY3JlYXRlZCBET00gZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlXG4gICAqIERPTSBldmVudHMuIFNlZSBhZGRFdmVudCgpLlxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXJzOiB7W2tleTogc3RyaW5nXTogRXZlbnRIYW5kbGVyfSA9IHt9O1xuXG4gIHByaXZhdGUgYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwYXRjaGVyIGZ1bmN0aW9uLiBFdmVudHMgYXJlIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGZvclxuICAgKiBoYW5kbGluZyBvbmNlIGl0IHdhcyBzZXQgdXNpbmcgdGhlIHJlZ2lzdGVyRGlzcGF0Y2hlcigpIG1ldGhvZC4gVGhpcyBpc1xuICAgKiBkb25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHBhc3NlZCBmcm9tIGFub3RoZXIganNiaW5hcnksIHNvIHBhc3NpbmcgdGhlXG4gICAqIGluc3RhbmNlIGFuZCBpbnZva2luZyB0aGUgbWV0aG9kIGhlcmUgd291bGQgcmVxdWlyZSB0byBsZWF2ZSB0aGUgbWV0aG9kXG4gICAqIHVub2JmdXNjYXRlZC5cbiAgICovXG4gIHByaXZhdGUgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzdXNwZW5kZWQgYEV2ZW50SW5mb2AgdGhhdCB3aWxsIGJlIGRpc3BhdGNoZWRcbiAgICogYXMgc29vbiBhcyB0aGUgYERpc3BhdGNoZXJgIGlzIHJlZ2lzdGVyZWQuXG4gICAqL1xuICBwcml2YXRlIHF1ZXVlZEV2ZW50SW5mb3M6IGV2ZW50SW5mb0xpYi5FdmVudEluZm9bXSB8IG51bGwgPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihjb250YWluZXJNYW5hZ2VyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlcikge1xuICAgIHRoaXMuY29udGFpbmVyTWFuYWdlciA9IGNvbnRhaW5lck1hbmFnZXI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBldmVudDogRXZlbnQsIGNvbnRhaW5lcjogRWxlbWVudCkge1xuICAgIGNvbnN0IGV2ZW50SW5mbyA9IGV2ZW50SW5mb0xpYi5jcmVhdGVFdmVudEluZm9Gcm9tUGFyYW1ldGVycyhcbiAgICAgIC8qIGV2ZW50VHlwZT0gKi8gZXZlbnRUeXBlLFxuICAgICAgLyogZXZlbnQ9ICovIGV2ZW50LFxuICAgICAgLyogdGFyZ2V0RWxlbWVudD0gKi8gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQsXG4gICAgICAvKiBjb250YWluZXI9ICovIGNvbnRhaW5lcixcbiAgICAgIC8qIHRpbWVzdGFtcD0gKi8gRGF0ZS5ub3coKSxcbiAgICApO1xuICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKGV2ZW50SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFuIGBFdmVudEluZm9gLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudEluZm8oZXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoZXIpIHtcbiAgICAgIC8vIEFsbCBldmVudHMgYXJlIHF1ZXVlZCB3aGVuIHRoZSBkaXNwYXRjaGVyIGlzbid0IHlldCBsb2FkZWQuXG4gICAgICBldmVudEluZm9MaWIuc2V0SXNSZXBsYXkoZXZlbnRJbmZvLCB0cnVlKTtcbiAgICAgIHRoaXMucXVldWVkRXZlbnRJbmZvcz8ucHVzaChldmVudEluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoZXIoZXZlbnRJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGpzYWN0aW9uIGhhbmRsZXJzIHRvIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50IHR5cGUgZ2l2ZW4gYnlcbiAgICogbmFtZS5cbiAgICpcbiAgICogSWYgdGhlIGV2ZW50IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgdGhpcyBkb2VzIG5vdGhpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVmaXhlZEV2ZW50VHlwZSBJZiBzdXBwbGllZCwgdGhpcyBldmVudCBpcyB1c2VkIGluXG4gICAqICAgICB0aGUgYWN0dWFsIGJyb3dzZXIgZXZlbnQgcmVnaXN0cmF0aW9uIGluc3RlYWQgb2YgdGhlIG5hbWUgdGhhdCBpc1xuICAgKiAgICAgZXhwb3NlZCB0byBqc2FjdGlvbi4gVXNlIHRoaXMgaWYgeW91IGUuZy4gd2FudCB1c2VycyB0byBiZSBhYmxlXG4gICAqICAgICB0byBzdWJzY3JpYmUgdG8ganNhY3Rpb249XCJ0cmFuc2l0aW9uRW5kOmZvb1wiIHdoaWxlIHRoZSB1bmRlcmx5aW5nXG4gICAqICAgICBldmVudCBpcyB3ZWJraXRUcmFuc2l0aW9uRW5kIGluIG9uZSBicm93c2VyIGFuZCBtb3pUcmFuc2l0aW9uRW5kXG4gICAqICAgICBpbiBhbm90aGVyLlxuICAgKi9cbiAgYWRkRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIHByZWZpeGVkRXZlbnRUeXBlPzogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50VHlwZSBpbiB0aGlzLmV2ZW50SGFuZGxlcnMgfHwgIXRoaXMuY29udGFpbmVyTWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghRXZlbnRDb250cmFjdC5NT1VTRV9TUEVDSUFMX1NVUFBPUlQgJiYgTU9VU0VfU1BFQ0lBTF9FVkVOVF9UWVBFUy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50SGFuZGxlciA9IChldmVudFR5cGU6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjb250YWluZXI6IEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoZXZlbnRUeXBlLCBldmVudCwgY29udGFpbmVyKTtcbiAgICB9O1xuXG4gICAgLy8gU3RvcmUgdGhlIGNhbGxiYWNrIHRvIGFsbG93IHVzIHRvIHJlcGxheSBldmVudHMuXG4gICAgdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50VHlwZV0gPSBldmVudEhhbmRsZXI7XG5cbiAgICBjb25zdCBicm93c2VyRXZlbnRUeXBlID0gZXZlbnRMaWIuZ2V0QnJvd3NlckV2ZW50VHlwZShwcmVmaXhlZEV2ZW50VHlwZSB8fCBldmVudFR5cGUpO1xuXG4gICAgaWYgKGJyb3dzZXJFdmVudFR5cGUgIT09IGV2ZW50VHlwZSkge1xuICAgICAgY29uc3QgZXZlbnRUeXBlcyA9IHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzW2Jyb3dzZXJFdmVudFR5cGVdIHx8IFtdO1xuICAgICAgZXZlbnRUeXBlcy5wdXNoKGV2ZW50VHlwZSk7XG4gICAgICB0aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSA9IGV2ZW50VHlwZXM7XG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYnJvd3NlckV2ZW50VHlwZSwgKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgIHJldHVybiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlcihldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcXVldWVkIGVhcmx5IGV2ZW50cyBhbmQgcmVwbGF5IHRoZW0gdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXJcbiAgICogaW4gdGhlIHByb3ZpZGVkIGV2ZW50IGNvbnRyYWN0LiBPbmNlIGFsbCB0aGUgZXZlbnRzIGFyZSByZXBsYXllZCwgaXQgY2xlYW5zXG4gICAqIHVwIHRoZSBlYXJseSBjb250cmFjdC5cbiAgICovXG4gIHJlcGxheUVhcmx5RXZlbnRzKGVhcmx5SnNhY3Rpb25EYXRhOiBFYXJseUpzYWN0aW9uRGF0YSB8IHVuZGVmaW5lZCA9IHdpbmRvdy5fZWpzYSkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBlYXJseSBjb250cmFjdCBpcyBwcmVzZW50IGFuZCBwcmV2ZW50IGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuICAgIC8vIG1vcmUgdGhhbiBvbmNlLlxuICAgIGlmICghZWFybHlKc2FjdGlvbkRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXBsYXkgdGhlIGVhcmx5IGNvbnRyYWN0IGV2ZW50cy5cbiAgICB0aGlzLnJlcGxheUVhcmx5RXZlbnRJbmZvcyhlYXJseUpzYWN0aW9uRGF0YS5xKTtcblxuICAgIC8vIENsZWFuIHVwIHRoZSBlYXJseSBjb250cmFjdC5cbiAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycyhlYXJseUpzYWN0aW9uRGF0YSk7XG4gICAgZGVsZXRlIHdpbmRvdy5fZWpzYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYXlzIGFsbCB0aGUgZWFybHkgYEV2ZW50SW5mb2Agb2JqZWN0cywgZGlzcGF0Y2hpbmcgdGhlbSB0aHJvdWdoIHRoZSBub3JtYWxcbiAgICogYEV2ZW50Q29udHJhY3RgIGZsb3cuXG4gICAqL1xuICByZXBsYXlFYXJseUV2ZW50SW5mb3MoZWFybHlFdmVudEluZm9zOiBldmVudEluZm9MaWIuRXZlbnRJbmZvW10pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVhcmx5RXZlbnRJbmZvcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWFybHlFdmVudEluZm86IGV2ZW50SW5mb0xpYi5FdmVudEluZm8gPSBlYXJseUV2ZW50SW5mb3NbaV07XG4gICAgICBjb25zdCBldmVudFR5cGVzID0gdGhpcy5nZXRFdmVudFR5cGVzRm9yQnJvd3NlckV2ZW50VHlwZShlYXJseUV2ZW50SW5mby5ldmVudFR5cGUpO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBldmVudFR5cGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50SW5mbyA9IGV2ZW50SW5mb0xpYi5jbG9uZUV2ZW50SW5mbyhlYXJseUV2ZW50SW5mbyk7XG4gICAgICAgIC8vIEV2ZW50SW5mbyBldmVudFR5cGUgbWFwcyB0byBKU0FjdGlvbidzIGludGVybmFsIGV2ZW50IHR5cGUsXG4gICAgICAgIC8vIHJhdGhlciB0aGFuIHRoZSBicm93c2VyIGV2ZW50IHR5cGUuXG4gICAgICAgIGV2ZW50SW5mb0xpYi5zZXRFdmVudFR5cGUoZXZlbnRJbmZvLCBldmVudFR5cGVzW2pdKTtcbiAgICAgICAgdGhpcy5oYW5kbGVFdmVudEluZm8oZXZlbnRJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgSlNBY3Rpb24gZXZlbnQgdHlwZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBnaXZlblxuICAgKiBicm93c2VyIGV2ZW50IHR5cGUuXG4gICAqL1xuICBwcml2YXRlIGdldEV2ZW50VHlwZXNGb3JCcm93c2VyRXZlbnRUeXBlKGJyb3dzZXJFdmVudFR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGV2ZW50VHlwZXMgPSBbXTtcbiAgICBpZiAodGhpcy5ldmVudEhhbmRsZXJzW2Jyb3dzZXJFdmVudFR5cGVdKSB7XG4gICAgICBldmVudFR5cGVzLnB1c2goYnJvd3NlckV2ZW50VHlwZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSkge1xuICAgICAgZXZlbnRUeXBlcy5wdXNoKC4uLnRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzW2Jyb3dzZXJFdmVudFR5cGVdKTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50VHlwZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiBmb3IgYSBnaXZlbiBldmVudCB0eXBlLlxuICAgKi9cbiAgaGFuZGxlcihldmVudFR5cGU6IHN0cmluZyk6IEV2ZW50SGFuZGxlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyB1cCB0aGUgZXZlbnQgY29udHJhY3QuIFRoaXMgcmVzZXRzIGFsbCBvZiB0aGUgYEV2ZW50Q29udHJhY3RgJ3NcbiAgICogaW50ZXJuYWwgc3RhdGUuIFVzZXJzIGFyZSByZXNwb25zaWJsZSBmb3Igbm90IHVzaW5nIHRoaXMgYEV2ZW50Q29udHJhY3RgXG4gICAqIGFmdGVyIGl0IGhhcyBiZWVuIGNsZWFuZWQgdXAuXG4gICAqL1xuICBjbGVhblVwKCkge1xuICAgIHRoaXMuY29udGFpbmVyTWFuYWdlciEuY2xlYW5VcCgpO1xuICAgIHRoaXMuY29udGFpbmVyTWFuYWdlciA9IG51bGw7XG4gICAgdGhpcy5ldmVudEhhbmRsZXJzID0ge307XG4gICAgdGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXMgPSB7fTtcbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBudWxsO1xuICAgIHRoaXMucXVldWVkRXZlbnRJbmZvcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgZGlzcGF0Y2hlciBmdW5jdGlvbi4gRXZlbnQgaW5mbyBvZiBlYWNoIGV2ZW50IG1hcHBlZCB0b1xuICAgKiBhIGpzYWN0aW9uIGlzIHBhc3NlZCBmb3IgaGFuZGxpbmcgdG8gdGhpcyBjYWxsYmFjay4gVGhlIHF1ZXVlZFxuICAgKiBldmVudHMgYXJlIHBhc3NlZCBhcyB3ZWxsIHRvIHRoZSBkaXNwYXRjaGVyIGZvciBsYXRlciByZXBsYXlpbmdcbiAgICogb25jZSB0aGUgZGlzcGF0Y2hlciBpcyByZWdpc3RlcmVkLiBDbGVhcnMgdGhlIGV2ZW50IHF1ZXVlIHRvIG51bGwuXG4gICAqXG4gICAqIEBwYXJhbSBkaXNwYXRjaGVyIFRoZSBkaXNwYXRjaGVyIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcmVzdHJpY3Rpb25cbiAgICovXG4gIHJlZ2lzdGVyRGlzcGF0Y2hlcihkaXNwYXRjaGVyOiBEaXNwYXRjaGVyLCByZXN0cmljdGlvbjogUmVzdHJpY3Rpb24pIHtcbiAgICB0aGlzLmVjcmQoZGlzcGF0Y2hlciwgcmVzdHJpY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVuYW1lZCBhbGlhcyBmb3IgcmVnaXN0ZXJEaXNwYXRjaGVyLiBOZWNlc3NhcnkgZm9yIGFueSBjb2RlYmFzZXMgdGhhdFxuICAgKiBzcGxpdCB0aGUgYEV2ZW50Q29udHJhY3RgIGFuZCBgRGlzcGF0Y2hlcmAgY29kZSBpbnRvIGRpZmZlcmVudCBjb21waWxhdGlvblxuICAgKiB1bml0cy5cbiAgICovXG4gIGVjcmQoZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciwgcmVzdHJpY3Rpb246IFJlc3RyaWN0aW9uKSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcblxuICAgIGlmICh0aGlzLnF1ZXVlZEV2ZW50SW5mb3M/Lmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnF1ZXVlZEV2ZW50SW5mb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFdmVudEluZm8odGhpcy5xdWV1ZWRFdmVudEluZm9zW2ldKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucXVldWVkRXZlbnRJbmZvcyA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRjb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRjb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFHTCx1QkFBdUIsR0FDeEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssWUFBWSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUF5QnZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sYUFBYTthQUNqQiwwQkFBcUIsR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUE4QnJELFlBQVksZ0JBQStDO1FBMUIzRDs7Ozs7O1dBTUc7UUFDSyxrQkFBYSxHQUFrQyxFQUFFLENBQUM7UUFFbEQsc0NBQWlDLEdBQThCLEVBQUUsQ0FBQztRQUUxRTs7Ozs7O1dBTUc7UUFDSyxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBb0MsRUFBRSxDQUFDO1FBRzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQWlCLEVBQUUsS0FBWSxFQUFFLFNBQWtCO1FBQ3JFLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyw2QkFBNkI7UUFDMUQsZ0JBQWdCLENBQUMsU0FBUztRQUMxQixZQUFZLENBQUMsS0FBSztRQUNsQixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBaUI7UUFDNUMs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UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGtCQUFrQixDQUFDLFVBQXNCLEVBQUUsV0FBd0I7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsVUFBc0IsRUFBRSxXQUF3QjtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgSW1wbGVtZW50cyB0aGUgbG9jYWwgZXZlbnQgaGFuZGxpbmcgY29udHJhY3QuIFRoaXNcbiAqIGFsbG93cyBET00gb2JqZWN0cyBpbiBhIGNvbnRhaW5lciB0aGF0IGVudGVycyBpbnRvIHRoaXMgY29udHJhY3QgdG9cbiAqIGRlZmluZSBldmVudCBoYW5kbGVycyB3aGljaCBhcmUgZXhlY3V0ZWQgaW4gYSBsb2NhbCBjb250ZXh0LlxuICpcbiAqIE9uZSBFdmVudENvbnRyYWN0IGluc3RhbmNlIGNhbiBtYW5hZ2UgdGhlIGNvbnRyYWN0IGZvciBtdWx0aXBsZVxuICogY29udGFpbmVycywgd2hpY2ggYXJlIGFkZGVkIHVzaW5nIHRoZSBhZGRDb250YWluZXIoKSBtZXRob2QuXG4gKlxuICogRXZlbnRzIGNhbiBiZSByZWdpc3RlcmVkIHVzaW5nIHRoZSBhZGRFdmVudCgpIG1ldGhvZC5cbiAqXG4gKiBBIERpc3BhdGNoZXIgaXMgYWRkZWQgdXNpbmcgdGhlIHJlZ2lzdGVyRGlzcGF0Y2hlcigpIG1ldGhvZC4gVW50aWwgdGhlcmUgaXNcbiAqIGEgZGlzcGF0Y2hlciwgZXZlbnRzIGFyZSBxdWV1ZWQuIFRoZSBpZGVhIGlzIHRoYXQgdGhlIEV2ZW50Q29udHJhY3RcbiAqIGNsYXNzIGlzIGlubGluZWQgaW4gdGhlIEhUTUwgb2YgdGhlIHRvcCBsZXZlbCBwYWdlIGFuZCBpbnN0YW50aWF0ZWRcbiAqIHJpZ2h0IGFmdGVyIHRoZSBzdGFydCBvZiA8Ym9keT4uIFRoZSBEaXNwYXRjaGVyIGNsYXNzIGlzIGNvbnRhaW5lZFxuICogaW4gdGhlIGV4dGVybmFsIGRlZmVycmVkIGpzLCBhbmQgaW5zdGFudGlhdGVkIGFuZCByZWdpc3RlcmVkIHdpdGhcbiAqIEV2ZW50Q29udHJhY3Qgd2hlbiB0aGUgZXh0ZXJuYWwgamF2YXNjcmlwdCBpbiB0aGUgcGFnZSBsb2Fkcy4gVGhlXG4gKiBleHRlcm5hbCBqYXZhc2NyaXB0IHdpbGwgYWxzbyByZWdpc3RlciB0aGUganNhY3Rpb24gaGFuZGxlcnMsIHdoaWNoXG4gKiB0aGVuIHBpY2sgdXAgdGhlIHF1ZXVlZCBldmVudHMgYXQgdGhlIHRpbWUgb2YgcmVnaXN0cmF0aW9uLlxuICpcbiAqIFNpbmNlIHRoaXMgY2xhc3MgaXMgbWVhbnQgdG8gYmUgaW5saW5lZCBpbiB0aGUgbWFpbiBwYWdlIEhUTUwsIHRoZVxuICogc2l6ZSBvZiB0aGUgYmluYXJ5IGNvbXBpbGVkIGZyb20gdGhpcyBmaWxlIE1VU1QgYmUga2VwdCBhcyBzbWFsbCBhc1xuICogcG9zc2libGUgYW5kIHRodXMgaXRzIGRlcGVuZGVuY2llcyB0byBhIG1pbmltdW0uXG4gKi9cblxuaW1wb3J0IHtcbiAgRWFybHlKc2FjdGlvbkRhdGEsXG4gIEVhcmx5SnNhY3Rpb25EYXRhQ29udGFpbmVyLFxuICByZW1vdmVBbGxFdmVudExpc3RlbmVycyxcbn0gZnJvbSAnLi9lYXJseWV2ZW50Y29udHJhY3QnO1xuaW1wb3J0ICogYXMgZXZlbnRMaWIgZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQge0V2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyfSBmcm9tICcuL2V2ZW50X2NvbnRyYWN0X2NvbnRhaW5lcic7XG5pbXBvcnQge01PVVNFX1NQRUNJQUxfU1VQUE9SVH0gZnJvbSAnLi9ldmVudF9jb250cmFjdF9kZWZpbmVzJztcbmltcG9ydCAqIGFzIGV2ZW50SW5mb0xpYiBmcm9tICcuL2V2ZW50X2luZm8nO1xuaW1wb3J0IHtNT1VTRV9TUEVDSUFMX0VWRU5UX1RZUEVTfSBmcm9tICcuL2V2ZW50X3R5cGUnO1xuaW1wb3J0IHtSZXN0cmljdGlvbn0gZnJvbSAnLi9yZXN0cmljdGlvbic7XG5cbi8qKlxuICogVGhlIEFQSSBvZiBhbiBFdmVudENvbnRyYWN0IHRoYXQgaXMgc2FmZSB0byBjYWxsIGZyb20gYW55IGNvbXBpbGF0aW9uIHVuaXQuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVbnJlbmFtZWRFdmVudENvbnRyYWN0IHtcbiAgLy8gQWxpYXMgZm9yIEpzY3Rpb24gRXZlbnRDb250cmFjdCByZWdpc3RlckRpc3BhdGNoZXIuXG4gIGVjcmQoZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciwgcmVzdHJpY3Rpb246IFJlc3RyaWN0aW9uKTogdm9pZDtcbn1cblxuLyoqIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gaGFuZGxlIGV2ZW50cyBjYXB0dXJlZCBieSB0aGUgRXZlbnRDb250cmFjdC4gKi9cbmV4cG9ydCB0eXBlIERpc3BhdGNoZXIgPSAoZXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvLCBnbG9iYWxEaXNwYXRjaD86IGJvb2xlYW4pID0+IHZvaWQ7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgYW4gZXZlbnQgZGlzcGF0Y2hlZCBmcm9tIHRoZSBicm93c2VyLlxuICpcbiAqIGV2ZW50VHlwZTogTWF5IGRpZmZlciBmcm9tIGBldmVudC50eXBlYCBpZiBKU0FjdGlvbiB1c2VzIGFcbiAqIHNob3J0LWhhbmQgbmFtZSBvciBpcyBwYXRjaGluZyBvdmVyIGFuIG5vbi1idWJibGluZyBldmVudCB3aXRoIGEgYnViYmxpbmdcbiAqIHZhcmlhbnQuXG4gKiBldmVudDogVGhlIG5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogY29udGFpbmVyOiBUaGUgY29udGFpbmVyIGZvciB0aGlzIGRpc3BhdGNoLlxuICovXG50eXBlIEV2ZW50SGFuZGxlciA9IChldmVudFR5cGU6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjb250YWluZXI6IEVsZW1lbnQpID0+IHZvaWQ7XG5cbi8qKlxuICogRXZlbnRDb250cmFjdCBpbnRlcmNlcHRzIGV2ZW50cyBpbiB0aGUgYnViYmxpbmcgcGhhc2UgYXQgdGhlXG4gKiBib3VuZGFyeSBvZiBhIGNvbnRhaW5lciBlbGVtZW50LCBhbmQgbWFwcyB0aGVtIHRvIGdlbmVyaWMgYWN0aW9uc1xuICogd2hpY2ggYXJlIHNwZWNpZmllZCB1c2luZyB0aGUgY3VzdG9tIGpzYWN0aW9uIGF0dHJpYnV0ZSBpblxuICogSFRNTC4gQmVoYXZpb3Igb2YgdGhlIGFwcGxpY2F0aW9uIGlzIHRoZW4gc3BlY2lmaWVkIGluIHRlcm1zIG9mXG4gKiBoYW5kbGVyIGZvciBzdWNoIGFjdGlvbnMsIGNmLiBqc2FjdGlvbi5EaXNwYXRjaGVyIGluIGRpc3BhdGNoZXIuanMuXG4gKlxuICogVGhpcyBoYXMgc2V2ZXJhbCBiZW5lZml0czogKDEpIE5vIERPTSBldmVudCBoYW5kbGVycyBuZWVkIHRvIGJlXG4gKiByZWdpc3RlcmVkIG9uIHRoZSBzcGVjaWZpYyBlbGVtZW50cyBpbiB0aGUgVUkuICgyKSBUaGUgc2V0IG9mXG4gKiBldmVudHMgdGhhdCB0aGUgYXBwbGljYXRpb24gaGFzIHRvIGhhbmRsZSBjYW4gYmUgc3BlY2lmaWVkIGluIHRlcm1zXG4gKiBvZiB0aGUgc2VtYW50aWNzIG9mIHRoZSBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4gaW4gdGVybXMgb2YgRE9NXG4gKiBldmVudHMuICgzKSBJbnZvY2F0aW9uIG9mIGhhbmRsZXJzIGNhbiBiZSBkZWxheWVkIGFuZCBoYW5kbGVycyBjYW5cbiAqIGJlIGRlbGF5IGxvYWRlZCBpbiBhIGdlbmVyaWMgd2F5LlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRDb250cmFjdCBpbXBsZW1lbnRzIFVucmVuYW1lZEV2ZW50Q29udHJhY3Qge1xuICBzdGF0aWMgTU9VU0VfU1BFQ0lBTF9TVVBQT1JUID0gTU9VU0VfU1BFQ0lBTF9TVVBQT1JUO1xuXG4gIHByaXZhdGUgY29udGFpbmVyTWFuYWdlcjogRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgRE9NIGV2ZW50cyB3aGljaCB0aGlzIGNvbnRyYWN0IGNvdmVycy4gVXNlZCB0byBwcmV2ZW50IGRvdWJsZVxuICAgKiByZWdpc3RyYXRpb24gb2YgZXZlbnQgdHlwZXMuIFRoZSB2YWx1ZSBvZiB0aGUgbWFwIGlzIHRoZVxuICAgKiBpbnRlcm5hbGx5IGNyZWF0ZWQgRE9NIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZVxuICAgKiBET00gZXZlbnRzLiBTZWUgYWRkRXZlbnQoKS5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgZXZlbnRIYW5kbGVyczoge1trZXk6IHN0cmluZ106IEV2ZW50SGFuZGxlcn0gPSB7fTtcblxuICBwcml2YXRlIGJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlczoge1trZXk6IHN0cmluZ106IHN0cmluZ1tdfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGF0Y2hlciBmdW5jdGlvbi4gRXZlbnRzIGFyZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBmb3JcbiAgICogaGFuZGxpbmcgb25jZSBpdCB3YXMgc2V0IHVzaW5nIHRoZSByZWdpc3RlckRpc3BhdGNoZXIoKSBtZXRob2QuIFRoaXMgaXNcbiAgICogZG9uZSBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgZnJvbSBhbm90aGVyIGpzYmluYXJ5LCBzbyBwYXNzaW5nIHRoZVxuICAgKiBpbnN0YW5jZSBhbmQgaW52b2tpbmcgdGhlIG1ldGhvZCBoZXJlIHdvdWxkIHJlcXVpcmUgdG8gbGVhdmUgdGhlIG1ldGhvZFxuICAgKiB1bm9iZnVzY2F0ZWQuXG4gICAqL1xuICBwcml2YXRlIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc3VzcGVuZGVkIGBFdmVudEluZm9gIHRoYXQgd2lsbCBiZSBkaXNwYXRjaGVkXG4gICAqIGFzIHNvb24gYXMgdGhlIGBEaXNwYXRjaGVyYCBpcyByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBxdWV1ZWRFdmVudEluZm9zOiBldmVudEluZm9MaWIuRXZlbnRJbmZvW10gfCBudWxsID0gW107XG5cbiAgY29uc3RydWN0b3IoY29udGFpbmVyTWFuYWdlcjogRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIpIHtcbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIgPSBjb250YWluZXJNYW5hZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudChldmVudFR5cGU6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjb250YWluZXI6IEVsZW1lbnQpIHtcbiAgICBjb25zdCBldmVudEluZm8gPSBldmVudEluZm9MaWIuY3JlYXRlRXZlbnRJbmZvRnJvbVBhcmFtZXRlcnMoXG4gICAgICAvKiBldmVudFR5cGU9ICovIGV2ZW50VHlwZSxcbiAgICAgIC8qIGV2ZW50PSAqLyBldmVudCxcbiAgICAgIC8qIHRhcmdldEVsZW1lbnQ9ICovIGV2ZW50LnRhcmdldCBhcyBFbGVtZW50LFxuICAgICAgLyogY29udGFpbmVyPSAqLyBjb250YWluZXIsXG4gICAgICAvKiB0aW1lc3RhbXA9ICovIERhdGUubm93KCksXG4gICAgKTtcbiAgICB0aGlzLmhhbmRsZUV2ZW50SW5mbyhldmVudEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhbiBgRXZlbnRJbmZvYC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRXZlbnRJbmZvKGV2ZW50SW5mbzogZXZlbnRJbmZvTGliLkV2ZW50SW5mbykge1xuICAgIGlmICghdGhpcy5kaXNwYXRjaGVyKSB7XG4gICAgICAvLyBBbGwgZXZlbnRzIGFyZSBxdWV1ZWQgd2hlbiB0aGUgZGlzcGF0Y2hlciBpc24ndCB5ZXQgbG9hZGVkLlxuICAgICAgZXZlbnRJbmZvTGliLnNldElzUmVwbGF5KGV2ZW50SW5mbywgdHJ1ZSk7XG4gICAgICB0aGlzLnF1ZXVlZEV2ZW50SW5mb3M/LnB1c2goZXZlbnRJbmZvKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaGVyKGV2ZW50SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBqc2FjdGlvbiBoYW5kbGVycyB0byBiZSBjYWxsZWQgZm9yIHRoZSBldmVudCB0eXBlIGdpdmVuIGJ5XG4gICAqIG5hbWUuXG4gICAqXG4gICAqIElmIHRoZSBldmVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHRoaXMgZG9lcyBub3RoaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcHJlZml4ZWRFdmVudFR5cGUgSWYgc3VwcGxpZWQsIHRoaXMgZXZlbnQgaXMgdXNlZCBpblxuICAgKiAgICAgdGhlIGFjdHVhbCBicm93c2VyIGV2ZW50IHJlZ2lzdHJhdGlvbiBpbnN0ZWFkIG9mIHRoZSBuYW1lIHRoYXQgaXNcbiAgICogICAgIGV4cG9zZWQgdG8ganNhY3Rpb24uIFVzZSB0aGlzIGlmIHlvdSBlLmcuIHdhbnQgdXNlcnMgdG8gYmUgYWJsZVxuICAgKiAgICAgdG8gc3Vic2NyaWJlIHRvIGpzYWN0aW9uPVwidHJhbnNpdGlvbkVuZDpmb29cIiB3aGlsZSB0aGUgdW5kZXJseWluZ1xuICAgKiAgICAgZXZlbnQgaXMgd2Via2l0VHJhbnNpdGlvbkVuZCBpbiBvbmUgYnJvd3NlciBhbmQgbW96VHJhbnNpdGlvbkVuZFxuICAgKiAgICAgaW4gYW5vdGhlci5cbiAgICovXG4gIGFkZEV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBwcmVmaXhlZEV2ZW50VHlwZT86IHN0cmluZykge1xuICAgIGlmIChldmVudFR5cGUgaW4gdGhpcy5ldmVudEhhbmRsZXJzIHx8ICF0aGlzLmNvbnRhaW5lck1hbmFnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIUV2ZW50Q29udHJhY3QuTU9VU0VfU1BFQ0lBTF9TVVBQT1JUICYmIE1PVVNFX1NQRUNJQUxfRVZFTlRfVFlQRVMuaW5kZXhPZihldmVudFR5cGUpID49IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudEhhbmRsZXIgPSAoZXZlbnRUeXBlOiBzdHJpbmcsIGV2ZW50OiBFdmVudCwgY29udGFpbmVyOiBFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnQsIGNvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIC8vIFN0b3JlIHRoZSBjYWxsYmFjayB0byBhbGxvdyB1cyB0byByZXBsYXkgZXZlbnRzLlxuICAgIHRoaXMuZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdID0gZXZlbnRIYW5kbGVyO1xuXG4gICAgY29uc3QgYnJvd3NlckV2ZW50VHlwZSA9IGV2ZW50TGliLmdldEJyb3dzZXJFdmVudFR5cGUocHJlZml4ZWRFdmVudFR5cGUgfHwgZXZlbnRUeXBlKTtcblxuICAgIGlmIChicm93c2VyRXZlbnRUeXBlICE9PSBldmVudFR5cGUpIHtcbiAgICAgIGNvbnN0IGV2ZW50VHlwZXMgPSB0aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSB8fCBbXTtcbiAgICAgIGV2ZW50VHlwZXMucHVzaChldmVudFR5cGUpO1xuICAgICAgdGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXNbYnJvd3NlckV2ZW50VHlwZV0gPSBldmVudFR5cGVzO1xuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGJyb3dzZXJFdmVudFR5cGUsIChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBldmVudEhhbmRsZXIoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHF1ZXVlZCBlYXJseSBldmVudHMgYW5kIHJlcGxheSB0aGVtIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyXG4gICAqIGluIHRoZSBwcm92aWRlZCBldmVudCBjb250cmFjdC4gT25jZSBhbGwgdGhlIGV2ZW50cyBhcmUgcmVwbGF5ZWQsIGl0IGNsZWFuc1xuICAgKiB1cCB0aGUgZWFybHkgY29udHJhY3QuXG4gICAqL1xuICByZXBsYXlFYXJseUV2ZW50cyhlYXJseUpzYWN0aW9uRGF0YTogRWFybHlKc2FjdGlvbkRhdGEgfCB1bmRlZmluZWQgPSB3aW5kb3cuX2Vqc2EpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgZWFybHkgY29udHJhY3QgaXMgcHJlc2VudCBhbmQgcHJldmVudCBjYWxsaW5nIHRoaXMgZnVuY3Rpb25cbiAgICAvLyBtb3JlIHRoYW4gb25jZS5cbiAgICBpZiAoIWVhcmx5SnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVwbGF5IHRoZSBlYXJseSBjb250cmFjdCBldmVudHMuXG4gICAgdGhpcy5yZXBsYXlFYXJseUV2ZW50SW5mb3MoZWFybHlKc2FjdGlvbkRhdGEucSk7XG5cbiAgICAvLyBDbGVhbiB1cCB0aGUgZWFybHkgY29udHJhY3QuXG4gICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoZWFybHlKc2FjdGlvbkRhdGEpO1xuICAgIGRlbGV0ZSB3aW5kb3cuX2Vqc2E7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGF5cyBhbGwgdGhlIGVhcmx5IGBFdmVudEluZm9gIG9iamVjdHMsIGRpc3BhdGNoaW5nIHRoZW0gdGhyb3VnaCB0aGUgbm9ybWFsXG4gICAqIGBFdmVudENvbnRyYWN0YCBmbG93LlxuICAgKi9cbiAgcmVwbGF5RWFybHlFdmVudEluZm9zKGVhcmx5RXZlbnRJbmZvczogZXZlbnRJbmZvTGliLkV2ZW50SW5mb1tdKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlYXJseUV2ZW50SW5mb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVhcmx5RXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvID0gZWFybHlFdmVudEluZm9zW2ldO1xuICAgICAgY29uc3QgZXZlbnRUeXBlcyA9IHRoaXMuZ2V0RXZlbnRUeXBlc0ZvckJyb3dzZXJFdmVudFR5cGUoZWFybHlFdmVudEluZm8uZXZlbnRUeXBlKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXZlbnRUeXBlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBldmVudEluZm8gPSBldmVudEluZm9MaWIuY2xvbmVFdmVudEluZm8oZWFybHlFdmVudEluZm8pO1xuICAgICAgICAvLyBFdmVudEluZm8gZXZlbnRUeXBlIG1hcHMgdG8gSlNBY3Rpb24ncyBpbnRlcm5hbCBldmVudCB0eXBlLFxuICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUgYnJvd3NlciBldmVudCB0eXBlLlxuICAgICAgICBldmVudEluZm9MaWIuc2V0RXZlbnRUeXBlKGV2ZW50SW5mbywgZXZlbnRUeXBlc1tqXSk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKGV2ZW50SW5mbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIEpTQWN0aW9uIGV2ZW50IHR5cGVzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW5cbiAgICogYnJvd3NlciBldmVudCB0eXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFdmVudFR5cGVzRm9yQnJvd3NlckV2ZW50VHlwZShicm93c2VyRXZlbnRUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBldmVudFR5cGVzID0gW107XG4gICAgaWYgKHRoaXMuZXZlbnRIYW5kbGVyc1ticm93c2VyRXZlbnRUeXBlXSkge1xuICAgICAgZXZlbnRUeXBlcy5wdXNoKGJyb3dzZXJFdmVudFR5cGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXNbYnJvd3NlckV2ZW50VHlwZV0pIHtcbiAgICAgIGV2ZW50VHlwZXMucHVzaCguLi50aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSk7XG4gICAgfVxuICAgIHJldHVybiBldmVudFR5cGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gZXZlbnQgdHlwZS5cbiAgICovXG4gIGhhbmRsZXIoZXZlbnRUeXBlOiBzdHJpbmcpOiBFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgdGhlIGV2ZW50IGNvbnRyYWN0LiBUaGlzIHJlc2V0cyBhbGwgb2YgdGhlIGBFdmVudENvbnRyYWN0YCdzXG4gICAqIGludGVybmFsIHN0YXRlLiBVc2VycyBhcmUgcmVzcG9uc2libGUgZm9yIG5vdCB1c2luZyB0aGlzIGBFdmVudENvbnRyYWN0YFxuICAgKiBhZnRlciBpdCBoYXMgYmVlbiBjbGVhbmVkIHVwLlxuICAgKi9cbiAgY2xlYW5VcCgpIHtcbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIhLmNsZWFuVXAoKTtcbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRIYW5kbGVycyA9IHt9O1xuICAgIHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzID0ge307XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gbnVsbDtcbiAgICB0aGlzLnF1ZXVlZEV2ZW50SW5mb3MgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGRpc3BhdGNoZXIgZnVuY3Rpb24uIEV2ZW50IGluZm8gb2YgZWFjaCBldmVudCBtYXBwZWQgdG9cbiAgICogYSBqc2FjdGlvbiBpcyBwYXNzZWQgZm9yIGhhbmRsaW5nIHRvIHRoaXMgY2FsbGJhY2suIFRoZSBxdWV1ZWRcbiAgICogZXZlbnRzIGFyZSBwYXNzZWQgYXMgd2VsbCB0byB0aGUgZGlzcGF0Y2hlciBmb3IgbGF0ZXIgcmVwbGF5aW5nXG4gICAqIG9uY2UgdGhlIGRpc3BhdGNoZXIgaXMgcmVnaXN0ZXJlZC4gQ2xlYXJzIHRoZSBldmVudCBxdWV1ZSB0byBudWxsLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzcGF0Y2hlciBUaGUgZGlzcGF0Y2hlciBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHJlc3RyaWN0aW9uXG4gICAqL1xuICByZWdpc3RlckRpc3BhdGNoZXIoZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciwgcmVzdHJpY3Rpb246IFJlc3RyaWN0aW9uKSB7XG4gICAgdGhpcy5lY3JkKGRpc3BhdGNoZXIsIHJlc3RyaWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlbmFtZWQgYWxpYXMgZm9yIHJlZ2lzdGVyRGlzcGF0Y2hlci4gTmVjZXNzYXJ5IGZvciBhbnkgY29kZWJhc2VzIHRoYXRcbiAgICogc3BsaXQgdGhlIGBFdmVudENvbnRyYWN0YCBhbmQgYERpc3BhdGNoZXJgIGNvZGUgaW50byBkaWZmZXJlbnQgY29tcGlsYXRpb25cbiAgICogdW5pdHMuXG4gICAqL1xuICBlY3JkKGRpc3BhdGNoZXI6IERpc3BhdGNoZXIsIHJlc3RyaWN0aW9uOiBSZXN0cmljdGlvbikge1xuICAgIHRoaXMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG5cbiAgICBpZiAodGhpcy5xdWV1ZWRFdmVudEluZm9zPy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWV1ZWRFdmVudEluZm9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKHRoaXMucXVldWVkRXZlbnRJbmZvc1tpXSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlZEV2ZW50SW5mb3MgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * If on a Macintosh with an extended keyboard, the Enter key located in the
@@ -16,4 +16,4 @@ export const ENTER = 13;
16
16
  export const SPACE = 32;
17
17
  /** Special keycodes used by jsaction for the generic click action. */
18
18
  export const KeyCode = { MAC_ENTER, ENTER, SPACE };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X2NvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL2tleV9jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFM0IscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFeEIscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFeEIsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBJZiBvbiBhIE1hY2ludG9zaCB3aXRoIGFuIGV4dGVuZGVkIGtleWJvYXJkLCB0aGUgRW50ZXIga2V5IGxvY2F0ZWQgaW4gdGhlXG4gKiBudW1lcmljIHBhZCBoYXMgYSBkaWZmZXJlbnQgQVNDSUkgY29kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BQ19FTlRFUiA9IDM7XG5cbi8qKiBUaGUgRW50ZXIga2V5LiAqL1xuZXhwb3J0IGNvbnN0IEVOVEVSID0gMTM7XG5cbi8qKiBUaGUgU3BhY2Uga2V5LiAqL1xuZXhwb3J0IGNvbnN0IFNQQUNFID0gMzI7XG5cbi8qKiBTcGVjaWFsIGtleWNvZGVzIHVzZWQgYnkganNhY3Rpb24gZm9yIHRoZSBnZW5lcmljIGNsaWNrIGFjdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBLZXlDb2RlID0ge01BQ19FTlRFUiwgRU5URVIsIFNQQUNFfTtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X2NvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL2tleV9jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFM0IscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFeEIscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFeEIsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbi8qKlxuICogSWYgb24gYSBNYWNpbnRvc2ggd2l0aCBhbiBleHRlbmRlZCBrZXlib2FyZCwgdGhlIEVudGVyIGtleSBsb2NhdGVkIGluIHRoZVxuICogbnVtZXJpYyBwYWQgaGFzIGEgZGlmZmVyZW50IEFTQ0lJIGNvZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBNQUNfRU5URVIgPSAzO1xuXG4vKiogVGhlIEVudGVyIGtleS4gKi9cbmV4cG9ydCBjb25zdCBFTlRFUiA9IDEzO1xuXG4vKiogVGhlIFNwYWNlIGtleS4gKi9cbmV4cG9ydCBjb25zdCBTUEFDRSA9IDMyO1xuXG4vKiogU3BlY2lhbCBrZXljb2RlcyB1c2VkIGJ5IGpzYWN0aW9uIGZvciB0aGUgZ2VuZXJpYyBjbGljayBhY3Rpb24uICovXG5leHBvcnQgY29uc3QgS2V5Q29kZSA9IHtNQUNfRU5URVIsIEVOVEVSLCBTUEFDRX07XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /** All properties that are used by jsaction. */
9
9
  export const Property = {
@@ -24,4 +24,4 @@ export const Property = {
24
24
  */
25
25
  OWNER: '__owner',
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL3Byb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEI7Ozs7Ozs7T0FPRztJQUNILFFBQVEsRUFBRSxZQUFxQjtJQUMvQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxTQUFrQjtDQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBBbGwgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIGJ5IGpzYWN0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IFByb3BlcnR5ID0ge1xuICAvKipcbiAgICogVGhlIHBhcnNlZCB2YWx1ZSBvZiB0aGUganNhY3Rpb24gYXR0cmlidXRlIGlzIHN0b3JlZCBpbiB0aGlzXG4gICAqIHByb3BlcnR5IG9uIHRoZSBET00gbm9kZS4gVGhlIHBhcnNlZCB2YWx1ZSBpcyBhbiBPYmplY3QuIFRoZVxuICAgKiBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgb2JqZWN0IGFyZSB0aGUgZXZlbnRzOyB0aGUgdmFsdWVzIGFyZSB0aGVcbiAgICogbmFtZXMgb2YgdGhlIGFjdGlvbnMuIFRoaXMgcHJvcGVydHkgaXMgYXR0YWNoZWQgZXZlbiBvbiBub2Rlc1xuICAgKiB0aGF0IGRvbid0IGhhdmUgYSBqc2FjdGlvbiBhdHRyaWJ1dGUgYXMgYW4gb3B0aW1pemF0aW9uLCBiZWNhdXNlXG4gICAqIHByb3BlcnR5IGxvb2t1cCBpcyBmYXN0ZXIgdGhhbiBhdHRyaWJ1dGUgYWNjZXNzLlxuICAgKi9cbiAgSlNBQ1RJT046ICdfX2pzYWN0aW9uJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIFRoZSBvd25lciBwcm9wZXJ0eSByZWZlcmVuY2VzIGFuIGEgbG9naWNhbCBvd25lciBmb3IgYSBET00gbm9kZS4gSlNBY3Rpb25cbiAgICogd2lsbCBmb2xsb3cgdGhpcyByZWZlcmVuY2UgaW5zdGVhZCBvZiBwYXJlbnROb2RlIHdoZW4gdHJhdmVyc2luZyB0aGUgRE9NXG4gICAqIHRvIGZpbmQganNhY3Rpb24gYXR0cmlidXRlcy4gVGhpcyBhbGxvd3Mgb3ZlcmxheWluZyBhIGxvZ2ljYWwgc3RydWN0dXJlXG4gICAqIG92ZXIgYSBkb2N1bWVudCB3aGVyZSB0aGUgRE9NIHN0cnVjdHVyZSBjYW4ndCByZWZsZWN0IHRoYXQgc3RydWN0dXJlLlxuICAgKi9cbiAgT1dORVI6ICdfX293bmVyJyBhcyBjb25zdCxcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIE5vZGUge1xuICAgIFtQcm9wZXJ0eS5KU0FDVElPTl0/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkfTtcbiAgICBbUHJvcGVydHkuT1dORVJdPzogUGFyZW50Tm9kZTtcbiAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL3Byb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEI7Ozs7Ozs7T0FPRztJQUNILFFBQVEsRUFBRSxZQUFxQjtJQUMvQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxTQUFrQjtDQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG4vKiogQWxsIHByb3BlcnRpZXMgdGhhdCBhcmUgdXNlZCBieSBqc2FjdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBQcm9wZXJ0eSA9IHtcbiAgLyoqXG4gICAqIFRoZSBwYXJzZWQgdmFsdWUgb2YgdGhlIGpzYWN0aW9uIGF0dHJpYnV0ZSBpcyBzdG9yZWQgaW4gdGhpc1xuICAgKiBwcm9wZXJ0eSBvbiB0aGUgRE9NIG5vZGUuIFRoZSBwYXJzZWQgdmFsdWUgaXMgYW4gT2JqZWN0LiBUaGVcbiAgICogcHJvcGVydHkgbmFtZXMgb2YgdGhlIG9iamVjdCBhcmUgdGhlIGV2ZW50czsgdGhlIHZhbHVlcyBhcmUgdGhlXG4gICAqIG5hbWVzIG9mIHRoZSBhY3Rpb25zLiBUaGlzIHByb3BlcnR5IGlzIGF0dGFjaGVkIGV2ZW4gb24gbm9kZXNcbiAgICogdGhhdCBkb24ndCBoYXZlIGEganNhY3Rpb24gYXR0cmlidXRlIGFzIGFuIG9wdGltaXphdGlvbiwgYmVjYXVzZVxuICAgKiBwcm9wZXJ0eSBsb29rdXAgaXMgZmFzdGVyIHRoYW4gYXR0cmlidXRlIGFjY2Vzcy5cbiAgICovXG4gIEpTQUNUSU9OOiAnX19qc2FjdGlvbicgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgcHJvcGVydHkgcmVmZXJlbmNlcyBhbiBhIGxvZ2ljYWwgb3duZXIgZm9yIGEgRE9NIG5vZGUuIEpTQWN0aW9uXG4gICAqIHdpbGwgZm9sbG93IHRoaXMgcmVmZXJlbmNlIGluc3RlYWQgb2YgcGFyZW50Tm9kZSB3aGVuIHRyYXZlcnNpbmcgdGhlIERPTVxuICAgKiB0byBmaW5kIGpzYWN0aW9uIGF0dHJpYnV0ZXMuIFRoaXMgYWxsb3dzIG92ZXJsYXlpbmcgYSBsb2dpY2FsIHN0cnVjdHVyZVxuICAgKiBvdmVyIGEgZG9jdW1lbnQgd2hlcmUgdGhlIERPTSBzdHJ1Y3R1cmUgY2FuJ3QgcmVmbGVjdCB0aGF0IHN0cnVjdHVyZS5cbiAgICovXG4gIE9XTkVSOiAnX19vd25lcicgYXMgY29uc3QsXG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBOb2RlIHtcbiAgICBbUHJvcGVydHkuSlNBQ1RJT05dPzoge1trZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZH07XG4gICAgW1Byb3BlcnR5Lk9XTkVSXT86IFBhcmVudE5vZGU7XG4gIH1cbn1cbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * @fileoverview An enum to control who can call certain jsaction APIs.
@@ -12,4 +12,4 @@ export var Restriction;
12
12
  (function (Restriction) {
13
13
  Restriction[Restriction["I_AM_THE_JSACTION_FRAMEWORK"] = 0] = "I_AM_THE_JSACTION_FRAMEWORK";
14
14
  })(Restriction || (Restriction = {}));
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL3Jlc3RyaWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBRUgsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQiwyRkFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEFuIGVudW0gdG8gY29udHJvbCB3aG8gY2FuIGNhbGwgY2VydGFpbiBqc2FjdGlvbiBBUElzLlxuICovXG5cbmV4cG9ydCBlbnVtIFJlc3RyaWN0aW9uIHtcbiAgSV9BTV9USEVfSlNBQ1RJT05fRlJBTUVXT1JLLFxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHJpY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL3Jlc3RyaWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBRUgsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQiwyRkFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBBbiBlbnVtIHRvIGNvbnRyb2wgd2hvIGNhbiBjYWxsIGNlcnRhaW4ganNhY3Rpb24gQVBJcy5cbiAqL1xuXG5leHBvcnQgZW51bSBSZXN0cmljdGlvbiB7XG4gIElfQU1fVEhFX0pTQUNUSU9OX0ZSQU1FV09SSyxcbn1cbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  export { createComputed } from './src/computed';
9
9
  export { defaultEquals } from './src/equality';
@@ -12,4 +12,4 @@ export { REACTIVE_NODE, SIGNAL, consumerAfterComputation, consumerBeforeComputat
12
12
  export { SIGNAL_NODE, createSignal, runPostSignalSetFn, setPostSignalSetFn, signalSetFn, signalUpdateFn, } from './src/signal';
13
13
  export { createWatch } from './src/watch';
14
14
  export { setAlternateWeakRefImpl } from './src/weak_ref';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFrQixhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUNMLGFBQWEsRUFHYixNQUFNLEVBQ04sd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsV0FBVyxFQUdYLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFnRCxXQUFXLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtDb21wdXRlZE5vZGUsIGNyZWF0ZUNvbXB1dGVkfSBmcm9tICcuL3NyYy9jb21wdXRlZCc7XG5leHBvcnQge1ZhbHVlRXF1YWxpdHlGbiwgZGVmYXVsdEVxdWFsc30gZnJvbSAnLi9zcmMvZXF1YWxpdHknO1xuZXhwb3J0IHtzZXRUaHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3J9IGZyb20gJy4vc3JjL2Vycm9ycyc7XG5leHBvcnQge1xuICBSRUFDVElWRV9OT0RFLFxuICBSZWFjdGl2ZSxcbiAgUmVhY3RpdmVOb2RlLFxuICBTSUdOQUwsXG4gIGNvbnN1bWVyQWZ0ZXJDb21wdXRhdGlvbixcbiAgY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbixcbiAgY29uc3VtZXJEZXN0cm95LFxuICBjb25zdW1lck1hcmtEaXJ0eSxcbiAgY29uc3VtZXJQb2xsUHJvZHVjZXJzRm9yQ2hhbmdlLFxuICBnZXRBY3RpdmVDb25zdW1lcixcbiAgaXNJbk5vdGlmaWNhdGlvblBoYXNlLFxuICBpc1JlYWN0aXZlLFxuICBwcm9kdWNlckFjY2Vzc2VkLFxuICBwcm9kdWNlckluY3JlbWVudEVwb2NoLFxuICBwcm9kdWNlck5vdGlmeUNvbnN1bWVycyxcbiAgcHJvZHVjZXJVcGRhdGVWYWx1ZVZlcnNpb24sXG4gIHByb2R1Y2VyVXBkYXRlc0FsbG93ZWQsXG4gIHNldEFjdGl2ZUNvbnN1bWVyLFxufSBmcm9tICcuL3NyYy9ncmFwaCc7XG5leHBvcnQge1xuICBTSUdOQUxfTk9ERSxcbiAgU2lnbmFsR2V0dGVyLFxuICBTaWduYWxOb2RlLFxuICBjcmVhdGVTaWduYWwsXG4gIHJ1blBvc3RTaWduYWxTZXRGbixcbiAgc2V0UG9zdFNpZ25hbFNldEZuLFxuICBzaWduYWxTZXRGbixcbiAgc2lnbmFsVXBkYXRlRm4sXG59IGZyb20gJy4vc3JjL3NpZ25hbCc7XG5leHBvcnQge1dhdGNoLCBXYXRjaENsZWFudXBGbiwgV2F0Y2hDbGVhbnVwUmVnaXN0ZXJGbiwgY3JlYXRlV2F0Y2h9IGZyb20gJy4vc3JjL3dhdGNoJztcbmV4cG9ydCB7c2V0QWx0ZXJuYXRlV2Vha1JlZkltcGx9IGZyb20gJy4vc3JjL3dlYWtfcmVmJztcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFrQixhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUNMLGFBQWEsRUFHYixNQUFNLEVBQ04sd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsV0FBVyxFQUdYLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFnRCxXQUFXLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmV4cG9ydCB7Q29tcHV0ZWROb2RlLCBjcmVhdGVDb21wdXRlZH0gZnJvbSAnLi9zcmMvY29tcHV0ZWQnO1xuZXhwb3J0IHtWYWx1ZUVxdWFsaXR5Rm4sIGRlZmF1bHRFcXVhbHN9IGZyb20gJy4vc3JjL2VxdWFsaXR5JztcbmV4cG9ydCB7c2V0VGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yfSBmcm9tICcuL3NyYy9lcnJvcnMnO1xuZXhwb3J0IHtcbiAgUkVBQ1RJVkVfTk9ERSxcbiAgUmVhY3RpdmUsXG4gIFJlYWN0aXZlTm9kZSxcbiAgU0lHTkFMLFxuICBjb25zdW1lckFmdGVyQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyQmVmb3JlQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyRGVzdHJveSxcbiAgY29uc3VtZXJNYXJrRGlydHksXG4gIGNvbnN1bWVyUG9sbFByb2R1Y2Vyc0ZvckNoYW5nZSxcbiAgZ2V0QWN0aXZlQ29uc3VtZXIsXG4gIGlzSW5Ob3RpZmljYXRpb25QaGFzZSxcbiAgaXNSZWFjdGl2ZSxcbiAgcHJvZHVjZXJBY2Nlc3NlZCxcbiAgcHJvZHVjZXJJbmNyZW1lbnRFcG9jaCxcbiAgcHJvZHVjZXJOb3RpZnlDb25zdW1lcnMsXG4gIHByb2R1Y2VyVXBkYXRlVmFsdWVWZXJzaW9uLFxuICBwcm9kdWNlclVwZGF0ZXNBbGxvd2VkLFxuICBzZXRBY3RpdmVDb25zdW1lcixcbn0gZnJvbSAnLi9zcmMvZ3JhcGgnO1xuZXhwb3J0IHtcbiAgU0lHTkFMX05PREUsXG4gIFNpZ25hbEdldHRlcixcbiAgU2lnbmFsTm9kZSxcbiAgY3JlYXRlU2lnbmFsLFxuICBydW5Qb3N0U2lnbmFsU2V0Rm4sXG4gIHNldFBvc3RTaWduYWxTZXRGbixcbiAgc2lnbmFsU2V0Rm4sXG4gIHNpZ25hbFVwZGF0ZUZuLFxufSBmcm9tICcuL3NyYy9zaWduYWwnO1xuZXhwb3J0IHtXYXRjaCwgV2F0Y2hDbGVhbnVwRm4sIFdhdGNoQ2xlYW51cFJlZ2lzdGVyRm4sIGNyZWF0ZVdhdGNofSBmcm9tICcuL3NyYy93YXRjaCc7XG5leHBvcnQge3NldEFsdGVybmF0ZVdlYWtSZWZJbXBsfSBmcm9tICcuL3NyYy93ZWFrX3JlZic7XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { defaultEquals } from './equality';
9
9
  import { consumerAfterComputation, consumerBeforeComputation, producerAccessed, producerUpdateValueVersion, REACTIVE_NODE, SIGNAL, } from './graph';
@@ -91,4 +91,4 @@ const COMPUTED_NODE = /* @__PURE__ */ (() => {
91
91
  },
92
92
  };
93
93
  })();
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGFBQWEsRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0sU0FBUyxDQUFDO0FBZ0NqQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUksV0FBb0I7SUFDcEQsTUFBTSxJQUFJLEdBQW9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFFL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLHlEQUF5RDtRQUN6RCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyw2Q0FBNkM7UUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNELFFBQThCLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQy9DLE9BQU8sUUFBd0MsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxLQUFLLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ0gsTUFBTSxTQUFTLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV2RCxrRkFBa0Y7QUFDbEYsMkVBQTJFO0FBQzNFLDhFQUE4RTtBQUM5RSxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDMUMsT0FBTztRQUNMLEdBQUcsYUFBYTtRQUNoQixLQUFLLEVBQUUsS0FBSztRQUNaLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsYUFBYTtRQUVwQixxQkFBcUIsQ0FBQyxJQUEyQjtZQUMvQyx1RkFBdUY7WUFDdkYsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7UUFDMUQsQ0FBQztRQUVELHNCQUFzQixDQUFDLElBQTJCO1lBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsMERBQTBEO2dCQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFFdkIsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxRQUFpQixDQUFDO1lBQ3RCLElBQUksQ0FBQztnQkFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ25CLENBQUM7b0JBQVMsQ0FBQztnQkFDVCx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELElBQ0UsUUFBUSxLQUFLLEtBQUs7Z0JBQ2xCLFFBQVEsS0FBSyxPQUFPO2dCQUNwQixRQUFRLEtBQUssT0FBTztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0QsdURBQXVEO2dCQUN2RCwyQkFBMkI7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtkZWZhdWx0RXF1YWxzLCBWYWx1ZUVxdWFsaXR5Rm59IGZyb20gJy4vZXF1YWxpdHknO1xuaW1wb3J0IHtcbiAgY29uc3VtZXJBZnRlckNvbXB1dGF0aW9uLFxuICBjb25zdW1lckJlZm9yZUNvbXB1dGF0aW9uLFxuICBwcm9kdWNlckFjY2Vzc2VkLFxuICBwcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbixcbiAgUkVBQ1RJVkVfTk9ERSxcbiAgUmVhY3RpdmVOb2RlLFxuICBTSUdOQUwsXG59IGZyb20gJy4vZ3JhcGgnO1xuXG4vKipcbiAqIEEgY29tcHV0YXRpb24sIHdoaWNoIGRlcml2ZXMgYSB2YWx1ZSBmcm9tIGEgZGVjbGFyYXRpdmUgcmVhY3RpdmUgZXhwcmVzc2lvbi5cbiAqXG4gKiBgQ29tcHV0ZWRgcyBhcmUgYm90aCBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycyBvZiByZWFjdGl2aXR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkTm9kZTxUPiBleHRlbmRzIFJlYWN0aXZlTm9kZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wdXRhdGlvbiwgb3Igb25lIG9mIHRoZSBzZW50aW5lbCB2YWx1ZXMgYWJvdmUgKGBVTlNFVGAsIGBDT01QVVRJTkdgLFxuICAgKiBgRVJST1JgKS5cbiAgICovXG4gIHZhbHVlOiBUO1xuXG4gIC8qKlxuICAgKiBJZiBgdmFsdWVgIGlzIGBFUlJPUkVEYCwgdGhlIGVycm9yIGNhdWdodCBmcm9tIHRoZSBsYXN0IGNvbXB1dGF0aW9uIGF0dGVtcHQgd2hpY2ggd2lsbFxuICAgKiBiZSByZS10aHJvd24uXG4gICAqL1xuICBlcnJvcjogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGNvbXB1dGF0aW9uIGZ1bmN0aW9uIHdoaWNoIHdpbGwgcHJvZHVjZSBhIG5ldyB2YWx1ZS5cbiAgICovXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBUO1xuXG4gIGVxdWFsOiBWYWx1ZUVxdWFsaXR5Rm48VD47XG59XG5cbmV4cG9ydCB0eXBlIENvbXB1dGVkR2V0dGVyPFQ+ID0gKCgpID0+IFQpICYge1xuICBbU0lHTkFMXTogQ29tcHV0ZWROb2RlPFQ+O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBjb21wdXRlZCBzaWduYWwgd2hpY2ggZGVyaXZlcyBhIHJlYWN0aXZlIHZhbHVlIGZyb20gYW4gZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkPFQ+KGNvbXB1dGF0aW9uOiAoKSA9PiBUKTogQ29tcHV0ZWRHZXR0ZXI8VD4ge1xuICBjb25zdCBub2RlOiBDb21wdXRlZE5vZGU8VD4gPSBPYmplY3QuY3JlYXRlKENPTVBVVEVEX05PREUpO1xuICBub2RlLmNvbXB1dGF0aW9uID0gY29tcHV0YXRpb247XG5cbiAgY29uc3QgY29tcHV0ZWQgPSAoKSA9PiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIG5lZWRzIHVwZGF0aW5nIGJlZm9yZSByZXR1cm5pbmcgaXQuXG4gICAgcHJvZHVjZXJVcGRhdGVWYWx1ZVZlcnNpb24obm9kZSk7XG5cbiAgICAvLyBSZWNvcmQgdGhhdCBzb21lb25lIGxvb2tlZCBhdCB0aGlzIHNpZ25hbC5cbiAgICBwcm9kdWNlckFjY2Vzc2VkKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUudmFsdWUgPT09IEVSUk9SRUQpIHtcbiAgICAgIHRocm93IG5vZGUuZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gIH07XG4gIChjb21wdXRlZCBhcyBDb21wdXRlZEdldHRlcjxUPilbU0lHTkFMXSA9IG5vZGU7XG4gIHJldHVybiBjb21wdXRlZCBhcyB1bmtub3duIGFzIENvbXB1dGVkR2V0dGVyPFQ+O1xufVxuXG4vKipcbiAqIEEgZGVkaWNhdGVkIHN5bWJvbCB1c2VkIGJlZm9yZSBhIGNvbXB1dGVkIHZhbHVlIGhhcyBiZWVuIGNhbGN1bGF0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICogRXhwbGljaXRseSB0eXBlZCBhcyBgYW55YCBzbyB3ZSBjYW4gdXNlIGl0IGFzIHNpZ25hbCdzIHZhbHVlLlxuICovXG5jb25zdCBVTlNFVDogYW55ID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgnVU5TRVQnKTtcblxuLyoqXG4gKiBBIGRlZGljYXRlZCBzeW1ib2wgdXNlZCBpbiBwbGFjZSBvZiBhIGNvbXB1dGVkIHNpZ25hbCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGF0IGEgZ2l2ZW4gY29tcHV0YXRpb25cbiAqIGlzIGluIHByb2dyZXNzLiBVc2VkIHRvIGRldGVjdCBjeWNsZXMgaW4gY29tcHV0YXRpb24gY2hhaW5zLlxuICogRXhwbGljaXRseSB0eXBlZCBhcyBgYW55YCBzbyB3ZSBjYW4gdXNlIGl0IGFzIHNpZ25hbCdzIHZhbHVlLlxuICovXG5jb25zdCBDT01QVVRJTkc6IGFueSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woJ0NPTVBVVElORycpO1xuXG4vKipcbiAqIEEgZGVkaWNhdGVkIHN5bWJvbCB1c2VkIGluIHBsYWNlIG9mIGEgY29tcHV0ZWQgc2lnbmFsIHZhbHVlIHRvIGluZGljYXRlIHRoYXQgYSBnaXZlbiBjb21wdXRhdGlvblxuICogZmFpbGVkLiBUaGUgdGhyb3duIGVycm9yIGlzIGNhY2hlZCB1bnRpbCB0aGUgY29tcHV0YXRpb24gZ2V0cyBkaXJ0eSBhZ2Fpbi5cbiAqIEV4cGxpY2l0bHkgdHlwZWQgYXMgYGFueWAgc28gd2UgY2FuIHVzZSBpdCBhcyBzaWduYWwncyB2YWx1ZS5cbiAqL1xuY29uc3QgRVJST1JFRDogYW55ID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgnRVJST1JFRCcpO1xuXG4vLyBOb3RlOiBVc2luZyBhbiBJSUZFIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIHNwcmVhZCBhc3NpZ25tZW50IGlzIG5vdCBjb25zaWRlcmVkXG4vLyBhIHNpZGUtZWZmZWN0LCBlbmRpbmcgdXAgcHJlc2VydmluZyBgQ09NUFVURURfTk9ERWAgYW5kIGBSRUFDVElWRV9OT0RFYC5cbi8vIFRPRE86IHJlbW92ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkL2lzc3Vlcy8zMzkyIGlzIHJlc29sdmVkLlxuY29uc3QgQ09NUFVURURfTk9ERSA9IC8qIEBfX1BVUkVfXyAqLyAoKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLlJFQUNUSVZFX05PREUsXG4gICAgdmFsdWU6IFVOU0VULFxuICAgIGRpcnR5OiB0cnVlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGVxdWFsOiBkZWZhdWx0RXF1YWxzLFxuXG4gICAgcHJvZHVjZXJNdXN0UmVjb21wdXRlKG5vZGU6IENvbXB1dGVkTm9kZTx1bmtub3duPik6IGJvb2xlYW4ge1xuICAgICAgLy8gRm9yY2UgYSByZWNvbXB1dGF0aW9uIGlmIHRoZXJlJ3Mgbm8gY3VycmVudCB2YWx1ZSwgb3IgaWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgaW4gdGhlXG4gICAgICAvLyBwcm9jZXNzIG9mIGJlaW5nIGNhbGN1bGF0ZWQgKHdoaWNoIHNob3VsZCB0aHJvdyBhbiBlcnJvcikuXG4gICAgICByZXR1cm4gbm9kZS52YWx1ZSA9PT0gVU5TRVQgfHwgbm9kZS52YWx1ZSA9PT0gQ09NUFVUSU5HO1xuICAgIH0sXG5cbiAgICBwcm9kdWNlclJlY29tcHV0ZVZhbHVlKG5vZGU6IENvbXB1dGVkTm9kZTx1bmtub3duPik6IHZvaWQge1xuICAgICAgaWYgKG5vZGUudmFsdWUgPT09IENPTVBVVElORykge1xuICAgICAgICAvLyBPdXIgY29tcHV0YXRpb24gc29tZWhvdyBsZWQgdG8gYSBjeWNsaWMgcmVhZCBvZiBpdHNlbGYuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGV0ZWN0ZWQgY3ljbGUgaW4gY29tcHV0YXRpb25zLicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IG5vZGUudmFsdWU7XG4gICAgICBub2RlLnZhbHVlID0gQ09NUFVUSU5HO1xuXG4gICAgICBjb25zdCBwcmV2Q29uc3VtZXIgPSBjb25zdW1lckJlZm9yZUNvbXB1dGF0aW9uKG5vZGUpO1xuICAgICAgbGV0IG5ld1ZhbHVlOiB1bmtub3duO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3VmFsdWUgPSBub2RlLmNvbXB1dGF0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBFUlJPUkVEO1xuICAgICAgICBub2RlLmVycm9yID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3VtZXJBZnRlckNvbXB1dGF0aW9uKG5vZGUsIHByZXZDb25zdW1lcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgb2xkVmFsdWUgIT09IFVOU0VUICYmXG4gICAgICAgIG9sZFZhbHVlICE9PSBFUlJPUkVEICYmXG4gICAgICAgIG5ld1ZhbHVlICE9PSBFUlJPUkVEICYmXG4gICAgICAgIG5vZGUuZXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIC8vIE5vIGNoYW5nZSB0byBgdmFsdWVWZXJzaW9uYCAtIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmVcbiAgICAgICAgLy8gc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQuXG4gICAgICAgIG5vZGUudmFsdWUgPSBvbGRWYWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBub2RlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBub2RlLnZlcnNpb24rKztcbiAgICB9LFxuICB9O1xufSkoKTtcbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGFBQWEsRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0sU0FBUyxDQUFDO0FBZ0NqQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUksV0FBb0I7SUFDcEQsTUFBTSxJQUFJLEdBQW9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFFL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLHlEQUF5RDtRQUN6RCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyw2Q0FBNkM7UUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNELFFBQThCLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQy9DLE9BQU8sUUFBd0MsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxLQUFLLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ0gsTUFBTSxTQUFTLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLEdBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV2RCxrRkFBa0Y7QUFDbEYsMkVBQTJFO0FBQzNFLDhFQUE4RTtBQUM5RSxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDMUMsT0FBTztRQUNMLEdBQUcsYUFBYTtRQUNoQixLQUFLLEVBQUUsS0FBSztRQUNaLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsYUFBYTtRQUVwQixxQkFBcUIsQ0FBQyxJQUEyQjtZQUMvQyx1RkFBdUY7WUFDdkYsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7UUFDMUQsQ0FBQztRQUVELHNCQUFzQixDQUFDLElBQTJCO1lBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsMERBQTBEO2dCQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFFdkIsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxRQUFpQixDQUFDO1lBQ3RCLElBQUksQ0FBQztnQkFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ25CLENBQUM7b0JBQVMsQ0FBQztnQkFDVCx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELElBQ0UsUUFBUSxLQUFLLEtBQUs7Z0JBQ2xCLFFBQVEsS0FBSyxPQUFPO2dCQUNwQixRQUFRLEtBQUssT0FBTztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0QsdURBQXVEO2dCQUN2RCwyQkFBMkI7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCB7ZGVmYXVsdEVxdWFscywgVmFsdWVFcXVhbGl0eUZufSBmcm9tICcuL2VxdWFsaXR5JztcbmltcG9ydCB7XG4gIGNvbnN1bWVyQWZ0ZXJDb21wdXRhdGlvbixcbiAgY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbixcbiAgcHJvZHVjZXJBY2Nlc3NlZCxcbiAgcHJvZHVjZXJVcGRhdGVWYWx1ZVZlcnNpb24sXG4gIFJFQUNUSVZFX05PREUsXG4gIFJlYWN0aXZlTm9kZSxcbiAgU0lHTkFMLFxufSBmcm9tICcuL2dyYXBoJztcblxuLyoqXG4gKiBBIGNvbXB1dGF0aW9uLCB3aGljaCBkZXJpdmVzIGEgdmFsdWUgZnJvbSBhIGRlY2xhcmF0aXZlIHJlYWN0aXZlIGV4cHJlc3Npb24uXG4gKlxuICogYENvbXB1dGVkYHMgYXJlIGJvdGggcHJvZHVjZXJzIGFuZCBjb25zdW1lcnMgb2YgcmVhY3Rpdml0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZE5vZGU8VD4gZXh0ZW5kcyBSZWFjdGl2ZU5vZGUge1xuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZSBvZiB0aGUgY29tcHV0YXRpb24sIG9yIG9uZSBvZiB0aGUgc2VudGluZWwgdmFsdWVzIGFib3ZlIChgVU5TRVRgLCBgQ09NUFVUSU5HYCxcbiAgICogYEVSUk9SYCkuXG4gICAqL1xuICB2YWx1ZTogVDtcblxuICAvKipcbiAgICogSWYgYHZhbHVlYCBpcyBgRVJST1JFRGAsIHRoZSBlcnJvciBjYXVnaHQgZnJvbSB0aGUgbGFzdCBjb21wdXRhdGlvbiBhdHRlbXB0IHdoaWNoIHdpbGxcbiAgICogYmUgcmUtdGhyb3duLlxuICAgKi9cbiAgZXJyb3I6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRhdGlvbiBmdW5jdGlvbiB3aGljaCB3aWxsIHByb2R1Y2UgYSBuZXcgdmFsdWUuXG4gICAqL1xuICBjb21wdXRhdGlvbjogKCkgPT4gVDtcblxuICBlcXVhbDogVmFsdWVFcXVhbGl0eUZuPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlZEdldHRlcjxUPiA9ICgoKSA9PiBUKSAmIHtcbiAgW1NJR05BTF06IENvbXB1dGVkTm9kZTxUPjtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgY29tcHV0ZWQgc2lnbmFsIHdoaWNoIGRlcml2ZXMgYSByZWFjdGl2ZSB2YWx1ZSBmcm9tIGFuIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21wdXRlZDxUPihjb21wdXRhdGlvbjogKCkgPT4gVCk6IENvbXB1dGVkR2V0dGVyPFQ+IHtcbiAgY29uc3Qgbm9kZTogQ29tcHV0ZWROb2RlPFQ+ID0gT2JqZWN0LmNyZWF0ZShDT01QVVRFRF9OT0RFKTtcbiAgbm9kZS5jb21wdXRhdGlvbiA9IGNvbXB1dGF0aW9uO1xuXG4gIGNvbnN0IGNvbXB1dGVkID0gKCkgPT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBuZWVkcyB1cGRhdGluZyBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuICAgIHByb2R1Y2VyVXBkYXRlVmFsdWVWZXJzaW9uKG5vZGUpO1xuXG4gICAgLy8gUmVjb3JkIHRoYXQgc29tZW9uZSBsb29rZWQgYXQgdGhpcyBzaWduYWwuXG4gICAgcHJvZHVjZXJBY2Nlc3NlZChub2RlKTtcblxuICAgIGlmIChub2RlLnZhbHVlID09PSBFUlJPUkVEKSB7XG4gICAgICB0aHJvdyBub2RlLmVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlLnZhbHVlO1xuICB9O1xuICAoY29tcHV0ZWQgYXMgQ29tcHV0ZWRHZXR0ZXI8VD4pW1NJR05BTF0gPSBub2RlO1xuICByZXR1cm4gY29tcHV0ZWQgYXMgdW5rbm93biBhcyBDb21wdXRlZEdldHRlcjxUPjtcbn1cblxuLyoqXG4gKiBBIGRlZGljYXRlZCBzeW1ib2wgdXNlZCBiZWZvcmUgYSBjb21wdXRlZCB2YWx1ZSBoYXMgYmVlbiBjYWxjdWxhdGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAqIEV4cGxpY2l0bHkgdHlwZWQgYXMgYGFueWAgc28gd2UgY2FuIHVzZSBpdCBhcyBzaWduYWwncyB2YWx1ZS5cbiAqL1xuY29uc3QgVU5TRVQ6IGFueSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woJ1VOU0VUJyk7XG5cbi8qKlxuICogQSBkZWRpY2F0ZWQgc3ltYm9sIHVzZWQgaW4gcGxhY2Ugb2YgYSBjb21wdXRlZCBzaWduYWwgdmFsdWUgdG8gaW5kaWNhdGUgdGhhdCBhIGdpdmVuIGNvbXB1dGF0aW9uXG4gKiBpcyBpbiBwcm9ncmVzcy4gVXNlZCB0byBkZXRlY3QgY3ljbGVzIGluIGNvbXB1dGF0aW9uIGNoYWlucy5cbiAqIEV4cGxpY2l0bHkgdHlwZWQgYXMgYGFueWAgc28gd2UgY2FuIHVzZSBpdCBhcyBzaWduYWwncyB2YWx1ZS5cbiAqL1xuY29uc3QgQ09NUFVUSU5HOiBhbnkgPSAvKiBAX19QVVJFX18gKi8gU3ltYm9sKCdDT01QVVRJTkcnKTtcblxuLyoqXG4gKiBBIGRlZGljYXRlZCBzeW1ib2wgdXNlZCBpbiBwbGFjZSBvZiBhIGNvbXB1dGVkIHNpZ25hbCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGF0IGEgZ2l2ZW4gY29tcHV0YXRpb25cbiAqIGZhaWxlZC4gVGhlIHRocm93biBlcnJvciBpcyBjYWNoZWQgdW50aWwgdGhlIGNvbXB1dGF0aW9uIGdldHMgZGlydHkgYWdhaW4uXG4gKiBFeHBsaWNpdGx5IHR5cGVkIGFzIGBhbnlgIHNvIHdlIGNhbiB1c2UgaXQgYXMgc2lnbmFsJ3MgdmFsdWUuXG4gKi9cbmNvbnN0IEVSUk9SRUQ6IGFueSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woJ0VSUk9SRUQnKTtcblxuLy8gTm90ZTogVXNpbmcgYW4gSUlGRSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBzcHJlYWQgYXNzaWdubWVudCBpcyBub3QgY29uc2lkZXJlZFxuLy8gYSBzaWRlLWVmZmVjdCwgZW5kaW5nIHVwIHByZXNlcnZpbmcgYENPTVBVVEVEX05PREVgIGFuZCBgUkVBQ1RJVkVfTk9ERWAuXG4vLyBUT0RPOiByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzM5MiBpcyByZXNvbHZlZC5cbmNvbnN0IENPTVBVVEVEX05PREUgPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5SRUFDVElWRV9OT0RFLFxuICAgIHZhbHVlOiBVTlNFVCxcbiAgICBkaXJ0eTogdHJ1ZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBlcXVhbDogZGVmYXVsdEVxdWFscyxcblxuICAgIHByb2R1Y2VyTXVzdFJlY29tcHV0ZShub2RlOiBDb21wdXRlZE5vZGU8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgICAgIC8vIEZvcmNlIGEgcmVjb21wdXRhdGlvbiBpZiB0aGVyZSdzIG5vIGN1cnJlbnQgdmFsdWUsIG9yIGlmIHRoZSBjdXJyZW50IHZhbHVlIGlzIGluIHRoZVxuICAgICAgLy8gcHJvY2VzcyBvZiBiZWluZyBjYWxjdWxhdGVkICh3aGljaCBzaG91bGQgdGhyb3cgYW4gZXJyb3IpLlxuICAgICAgcmV0dXJuIG5vZGUudmFsdWUgPT09IFVOU0VUIHx8IG5vZGUudmFsdWUgPT09IENPTVBVVElORztcbiAgICB9LFxuXG4gICAgcHJvZHVjZXJSZWNvbXB1dGVWYWx1ZShub2RlOiBDb21wdXRlZE5vZGU8dW5rbm93bj4pOiB2b2lkIHtcbiAgICAgIGlmIChub2RlLnZhbHVlID09PSBDT01QVVRJTkcpIHtcbiAgICAgICAgLy8gT3VyIGNvbXB1dGF0aW9uIHNvbWVob3cgbGVkIHRvIGEgY3ljbGljIHJlYWQgb2YgaXRzZWxmLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RldGVjdGVkIGN5Y2xlIGluIGNvbXB1dGF0aW9ucy4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBub2RlLnZhbHVlO1xuICAgICAgbm9kZS52YWx1ZSA9IENPTVBVVElORztcblxuICAgICAgY29uc3QgcHJldkNvbnN1bWVyID0gY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbihub2RlKTtcbiAgICAgIGxldCBuZXdWYWx1ZTogdW5rbm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ld1ZhbHVlID0gbm9kZS5jb21wdXRhdGlvbigpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gRVJST1JFRDtcbiAgICAgICAgbm9kZS5lcnJvciA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvbnN1bWVyQWZ0ZXJDb21wdXRhdGlvbihub2RlLCBwcmV2Q29uc3VtZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIG9sZFZhbHVlICE9PSBVTlNFVCAmJlxuICAgICAgICBvbGRWYWx1ZSAhPT0gRVJST1JFRCAmJlxuICAgICAgICBuZXdWYWx1ZSAhPT0gRVJST1JFRCAmJlxuICAgICAgICBub2RlLmVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSlcbiAgICAgICkge1xuICAgICAgICAvLyBObyBjaGFuZ2UgdG8gYHZhbHVlVmVyc2lvbmAgLSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlXG4gICAgICAgIC8vIHNlbWFudGljYWxseSBlcXVpdmFsZW50LlxuICAgICAgICBub2RlLnZhbHVlID0gb2xkVmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgbm9kZS52ZXJzaW9uKys7XG4gICAgfSxcbiAgfTtcbn0pKCk7XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * The default equality function used for `signal` and `computed`, which uses referential equality.
@@ -11,4 +11,4 @@
11
11
  export function defaultEquals(a, b) {
12
12
  return Object.is(a, b);
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvZXF1YWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBT0g7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLENBQUksRUFBRSxDQUFJO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEEgY29tcGFyaXNvbiBmdW5jdGlvbiB3aGljaCBjYW4gZGV0ZXJtaW5lIGlmIHR3byB2YWx1ZXMgYXJlIGVxdWFsLlxuICovXG5leHBvcnQgdHlwZSBWYWx1ZUVxdWFsaXR5Rm48VD4gPSAoYTogVCwgYjogVCkgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBlcXVhbGl0eSBmdW5jdGlvbiB1c2VkIGZvciBgc2lnbmFsYCBhbmQgYGNvbXB1dGVkYCwgd2hpY2ggdXNlcyByZWZlcmVudGlhbCBlcXVhbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRFcXVhbHM8VD4oYTogVCwgYjogVCkge1xuICByZXR1cm4gT2JqZWN0LmlzKGEsIGIpO1xufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvZXF1YWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBT0g7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLENBQUksRUFBRSxDQUFJO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIGNvbXBhcmlzb24gZnVuY3Rpb24gd2hpY2ggY2FuIGRldGVybWluZSBpZiB0d28gdmFsdWVzIGFyZSBlcXVhbC5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsdWVFcXVhbGl0eUZuPFQ+ID0gKGE6IFQsIGI6IFQpID0+IGJvb2xlYW47XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZXF1YWxpdHkgZnVuY3Rpb24gdXNlZCBmb3IgYHNpZ25hbGAgYW5kIGBjb21wdXRlZGAsIHdoaWNoIHVzZXMgcmVmZXJlbnRpYWwgZXF1YWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RXF1YWxzPFQ+KGE6IFQsIGI6IFQpIHtcbiAgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTtcbn1cbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  function defaultThrowError() {
9
9
  throw new Error();
@@ -15,4 +15,4 @@ export function throwInvalidWriteToSignalError() {
15
15
  export function setThrowInvalidWriteToSignalError(fn) {
16
16
  throwInvalidWriteToSignalErrorFn = fn;
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMvc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxTQUFTLGlCQUFpQjtJQUN4QixNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUVELElBQUksZ0NBQWdDLEdBQUcsaUJBQWlCLENBQUM7QUFFekQsTUFBTSxVQUFVLDhCQUE4QjtJQUM1QyxnQ0FBZ0MsRUFBRSxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsRUFBZTtJQUMvRCxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5mdW5jdGlvbiBkZWZhdWx0VGhyb3dFcnJvcigpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcigpO1xufVxuXG5sZXQgdGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yRm4gPSBkZWZhdWx0VGhyb3dFcnJvcjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SW52YWxpZFdyaXRlVG9TaWduYWxFcnJvcigpIHtcbiAgdGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yRm4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRocm93SW52YWxpZFdyaXRlVG9TaWduYWxFcnJvcihmbjogKCkgPT4gbmV2ZXIpOiB2b2lkIHtcbiAgdGhyb3dJbnZhbGlkV3JpdGVUb1NpZ25hbEVycm9yRm4gPSBmbjtcbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMvc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxTQUFTLGlCQUFpQjtJQUN4QixNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUVELElBQUksZ0NBQWdDLEdBQUcsaUJBQWlCLENBQUM7QUFFekQsTUFBTSxVQUFVLDhCQUE4QjtJQUM1QyxnQ0FBZ0MsRUFBRSxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsRUFBZTtJQUMvRCxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuZnVuY3Rpb24gZGVmYXVsdFRocm93RXJyb3IoKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoKTtcbn1cblxubGV0IHRocm93SW52YWxpZFdyaXRlVG9TaWduYWxFcnJvckZuID0gZGVmYXVsdFRocm93RXJyb3I7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3IoKSB7XG4gIHRocm93SW52YWxpZFdyaXRlVG9TaWduYWxFcnJvckZuKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUaHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3IoZm46ICgpID0+IG5ldmVyKTogdm9pZCB7XG4gIHRocm93SW52YWxpZFdyaXRlVG9TaWduYWxFcnJvckZuID0gZm47XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * The currently active consumer `ReactiveNode`, if running code in a reactive context.
@@ -315,4 +315,4 @@ function assertProducerNode(node) {
315
315
  function isConsumerNode(node) {
316
316
  return node.producerNode !== undefined;
317
317
  }
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBTUg7Ozs7R0FJRztBQUNILElBQUksY0FBYyxHQUF3QixJQUFJLENBQUM7QUFDL0MsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFJaEM7O0dBRUc7QUFDSCxJQUFJLEtBQUssR0FBWSxDQUFZLENBQUM7QUFFbEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXZELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUE2QjtJQUM3RCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7SUFDNUIsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUMxQixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQU1ELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYztJQUN2QyxPQUFRLEtBQTJCLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlCO0lBQ3pDLE9BQU8sRUFBRSxDQUFZO0lBQ3JCLGNBQWMsRUFBRSxDQUFZO0lBQzVCLEtBQUssRUFBRSxLQUFLO0lBQ1osWUFBWSxFQUFFLFNBQVM7SUFDdkIsdUJBQXVCLEVBQUUsU0FBUztJQUNsQyxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLGlCQUFpQixFQUFFLENBQUM7SUFDcEIsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQix1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Q0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIFJlcXVpcmVkIGFzIHRoZSBzaWduYWxzIGxpYnJhcnkgaXMgaW4gYSBzZXBhcmF0ZSBwYWNrYWdlLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5zdXJlIHRoZVxuLy8gZ2xvYmFsIGBuZ0Rldk1vZGVgIHR5cGUgaXMgZGVmaW5lZC5cbmRlY2xhcmUgY29uc3QgbmdEZXZNb2RlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGNvbnN1bWVyIGBSZWFjdGl2ZU5vZGVgLCBpZiBydW5uaW5nIGNvZGUgaW4gYSByZWFjdGl2ZSBjb250ZXh0LlxuICpcbiAqIENoYW5nZSB0aGlzIHZpYSBgc2V0QWN0aXZlQ29uc3VtZXJgLlxuICovXG5sZXQgYWN0aXZlQ29uc3VtZXI6IFJlYWN0aXZlTm9kZSB8IG51bGwgPSBudWxsO1xubGV0IGluTm90aWZpY2F0aW9uUGhhc2UgPSBmYWxzZTtcblxudHlwZSBWZXJzaW9uID0gbnVtYmVyICYge19fYnJhbmQ6ICdWZXJzaW9uJ307XG5cbi8qKlxuICogR2xvYmFsIGVwb2NoIGNvdW50ZXIuIEluY3JlbWVudGVkIHdoZW5ldmVyIGEgc291cmNlIHNpZ25hbCBpcyBzZXQuXG4gKi9cbmxldCBlcG9jaDogVmVyc2lvbiA9IDEgYXMgVmVyc2lvbjtcblxuLyoqXG4gKiBTeW1ib2wgdXNlZCB0byB0ZWxsIGBTaWduYWxgcyBhcGFydCBmcm9tIG90aGVyIGZ1bmN0aW9ucy5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF1dG8tdW53cmFwIHNpZ25hbHMgaW4gdmFyaW91cyBjYXNlcywgb3IgdG8gYXV0by13cmFwIG5vbi1zaWduYWwgdmFsdWVzLlxuICovXG5leHBvcnQgY29uc3QgU0lHTkFMID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgnU0lHTkFMJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3RpdmVDb25zdW1lcihjb25zdW1lcjogUmVhY3RpdmVOb2RlIHwgbnVsbCk6IFJlYWN0aXZlTm9kZSB8IG51bGwge1xuICBjb25zdCBwcmV2ID0gYWN0aXZlQ29uc3VtZXI7XG4gIGFjdGl2ZUNvbnN1bWVyID0gY29uc3VtZXI7XG4gIHJldHVybiBwcmV2O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlQ29uc3VtZXIoKTogUmVhY3RpdmVOb2RlIHwgbnVsbCB7XG4gIHJldHVybiBhY3RpdmVDb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Ob3RpZmljYXRpb25QaGFzZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGluTm90aWZpY2F0aW9uUGhhc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmUge1xuICBbU0lHTkFMXTogUmVhY3RpdmVOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWFjdGl2ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlYWN0aXZlIHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBQYXJ0aWFsPFJlYWN0aXZlPilbU0lHTkFMXSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgUkVBQ1RJVkVfTk9ERTogUmVhY3RpdmVOb2RlID0ge1xuICB2ZXJzaW9uOiAwIGFzIFZlcnNpb24sXG4gIGxhc3RDbGVhbkVwb2NoOiAwIGFzIFZlcnNpb24sXG4gIGRpcnR5OiBmYWxzZSxcbiAgcHJvZHVjZXJOb2RlOiB1bmRlZmluZWQsXG4gIHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uOiB1bmRlZmluZWQsXG4gIHByb2R1Y2VySW5kZXhPZlRoaXM6IHVuZGVmaW5lZCxcbiAgbmV4dFByb2R1Y2VySW5kZXg6IDAsXG4gIGxpdmVDb25zdW1lck5vZGU6IHVuZGVmaW5lZCxcbiAgbGl2ZUNvbnN1bWVySW5kZXhPZlRoaXM6IHVuZGVmaW5lZCxcbiAgY29uc3VtZXJBbGxvd1NpZ25hbFdyaXRlczogZmFsc2UsXG4gIGNvbnN1bWVySXNBbHdheXNMaXZlOiBmYWxzZSxcbiAgcHJvZHVjZXJNdXN0UmVjb21wdXRlOiAoKSA9PiBmYWxzZSxcbiAgcHJvZHVjZXJSZWNvbXB1dGVWYWx1ZTogKCkgPT4ge30sXG4gIGNvbnN1bWVyTWFya2VkRGlydHk6ICgpID0+IHt9LFxuICBjb25zdW1lck9uU2lnbmFsUmVhZDogKCkgPT4ge30sXG59O1xuXG4vKipcbiAqIEEgcHJvZHVjZXIgYW5kL29yIGNvbnN1bWVyIHdoaWNoIHBhcnRpY2lwYXRlcyBpbiB0aGUgcmVhY3RpdmUgZ3JhcGguXG4gKlxuICogUHJvZHVjZXIgYFJlYWN0aXZlTm9kZWBzIHdoaWNoIGFyZSBhY2Nlc3NlZCB3aGVuIGEgY29uc3VtZXIgYFJlYWN0aXZlTm9kZWAgaXMgdGhlXG4gKiBgYWN0aXZlQ29uc3VtZXJgIGFyZSB0cmFja2VkIGFzIGRlcGVuZGVuY2llcyBvZiB0aGF0IGNvbnN1bWVyLlxuICpcbiAqIENlcnRhaW4gY29uc3VtZXJzIGFyZSBhbHNvIHRyYWNrZWQgYXMgXCJsaXZlXCIgY29uc3VtZXJzIGFuZCBjcmVhdGUgZWRnZXMgaW4gdGhlIG90aGVyIGRpcmVjdGlvbixcbiAqIGZyb20gcHJvZHVjZXIgdG8gY29uc3VtZXIuIFRoZXNlIGVkZ2VzIGFyZSB1c2VkIHRvIHByb3BhZ2F0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucyB3aGVuIGFcbiAqIHByb2R1Y2VyJ3MgdmFsdWUgaXMgdXBkYXRlZC5cbiAqXG4gKiBBIGBSZWFjdGl2ZU5vZGVgIG1heSBiZSBib3RoIGEgcHJvZHVjZXIgYW5kIGNvbnN1bWVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlTm9kZSB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSB2YWx1ZSB0aGF0IHRoaXMgbm9kZSBwcm9kdWNlcy5cbiAgICpcbiAgICogVGhpcyBpcyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyB2YWx1ZSBpcyBwcm9kdWNlZCBieSB0aGlzIG5vZGUgd2hpY2ggaXMgbm90IGVxdWFsIHRvIHRoZVxuICAgKiBwcmV2aW91cyB2YWx1ZSAoYnkgd2hhdGV2ZXIgZGVmaW5pdGlvbiBvZiBlcXVhbGl0eSBpcyBpbiB1c2UpLlxuICAgKi9cbiAgdmVyc2lvbjogVmVyc2lvbjtcblxuICAvKipcbiAgICogRXBvY2ggYXQgd2hpY2ggdGhpcyBub2RlIGlzIHZlcmlmaWVkIHRvIGJlIGNsZWFuLlxuICAgKlxuICAgKiBUaGlzIGFsbG93cyBza2lwcGluZyBvZiBzb21lIHBvbGxpbmcgb3BlcmF0aW9ucyBpbiB0aGUgY2FzZSB3aGVyZSBubyBzaWduYWxzIGhhdmUgYmVlbiBzZXRcbiAgICogc2luY2UgdGhpcyBub2RlIHdhcyBsYXN0IHJlYWQuXG4gICAqL1xuICBsYXN0Q2xlYW5FcG9jaDogVmVyc2lvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIG5vZGUgKGluIGl0cyBjb25zdW1lciBjYXBhY2l0eSkgaXMgZGlydHkuXG4gICAqXG4gICAqIE9ubHkgbGl2ZSBjb25zdW1lcnMgYmVjb21lIGRpcnR5LCB3aGVuIHJlY2VpdmluZyBhIGNoYW5nZSBub3RpZmljYXRpb24gZnJvbSBhIGRlcGVuZGVuY3lcbiAgICogcHJvZHVjZXIuXG4gICAqL1xuICBkaXJ0eTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvZHVjZXJzIHdoaWNoIGFyZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBjb25zdW1lci5cbiAgICpcbiAgICogVXNlcyB0aGUgc2FtZSBpbmRpY2VzIGFzIHRoZSBgcHJvZHVjZXJMYXN0UmVhZFZlcnNpb25gIGFuZCBgcHJvZHVjZXJJbmRleE9mVGhpc2AgYXJyYXlzLlxuICAgKi9cbiAgcHJvZHVjZXJOb2RlOiBSZWFjdGl2ZU5vZGVbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogYFZlcnNpb25gIG9mIHRoZSB2YWx1ZSBsYXN0IHJlYWQgYnkgYSBnaXZlbiBwcm9kdWNlci5cbiAgICpcbiAgICogVXNlcyB0aGUgc2FtZSBpbmRpY2VzIGFzIHRoZSBgcHJvZHVjZXJOb2RlYCBhbmQgYHByb2R1Y2VySW5kZXhPZlRoaXNgIGFycmF5cy5cbiAgICovXG4gIHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uOiBWZXJzaW9uW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIGB0aGlzYCAoY29uc3VtZXIpIGluIGVhY2ggcHJvZHVjZXIncyBgbGl2ZUNvbnN1bWVyc2AgYXJyYXkuXG4gICAqXG4gICAqIFRoaXMgdmFsdWUgaXMgb25seSBtZWFuaW5nZnVsIGlmIHRoaXMgbm9kZSBpcyBsaXZlIChgbGl2ZUNvbnN1bWVycy5sZW5ndGggPiAwYCkuIE90aGVyd2lzZVxuICAgKiB0aGVzZSBpbmRpY2VzIGFyZSBzdGFsZS5cbiAgICpcbiAgICogVXNlcyB0aGUgc2FtZSBpbmRpY2VzIGFzIHRoZSBgcHJvZHVjZXJOb2RlYCBhbmQgYHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uYCBhcnJheXMuXG4gICAqL1xuICBwcm9kdWNlckluZGV4T2ZUaGlzOiBudW1iZXJbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kZXggaW50byB0aGUgcHJvZHVjZXIgYXJyYXlzIHRoYXQgdGhlIG5leHQgZGVwZW5kZW5jeSBvZiB0aGlzIG5vZGUgYXMgYSBjb25zdW1lciB3aWxsIHVzZS5cbiAgICpcbiAgICogVGhpcyBpbmRleCBpcyB6ZXJvZWQgYmVmb3JlIHRoaXMgbm9kZSBhcyBhIGNvbnN1bWVyIGJlZ2lucyBleGVjdXRpbmcuIFdoZW4gYSBwcm9kdWNlciBpcyByZWFkLFxuICAgKiBpdCBnZXRzIGluc2VydGVkIGludG8gdGhlIHByb2R1Y2VycyBhcnJheXMgYXQgdGhpcyBpbmRleC4gVGhlcmUgbWF5IGJlIGFuIGV4aXN0aW5nIGRlcGVuZGVuY3lcbiAgICogaW4gdGhpcyBsb2NhdGlvbiB3aGljaCBtYXkgb3IgbWF5IG5vdCBtYXRjaCB0aGUgaW5jb21pbmcgcHJvZHVjZXIsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZVxuICAgKiBzYW1lIHByb2R1Y2VycyB3ZXJlIHJlYWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGxhc3QgY29tcHV0YXRpb24uXG4gICAqL1xuICBuZXh0UHJvZHVjZXJJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBjb25zdW1lcnMgb2YgdGhpcyBwcm9kdWNlciB0aGF0IGFyZSBcImxpdmVcIiAodGhleSByZXF1aXJlIHB1c2ggbm90aWZpY2F0aW9ucykuXG4gICAqXG4gICAqIGBsaXZlQ29uc3VtZXJOb2RlLmxlbmd0aGAgaXMgZWZmZWN0aXZlbHkgb3VyIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhpcyBub2RlLlxuICAgKi9cbiAgbGl2ZUNvbnN1bWVyTm9kZTogUmVhY3RpdmVOb2RlW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIGB0aGlzYCAocHJvZHVjZXIpIGluIGVhY2ggY29uc3VtZXIncyBgcHJvZHVjZXJOb2RlYCBhcnJheS5cbiAgICpcbiAgICogVXNlcyB0aGUgc2FtZSBpbmRpY2VzIGFzIHRoZSBgbGl2ZUNvbnN1bWVyTm9kZWAgYXJyYXkuXG4gICAqL1xuICBsaXZlQ29uc3VtZXJJbmRleE9mVGhpczogbnVtYmVyW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgd3JpdGVzIHRvIHNpZ25hbHMgYXJlIGFsbG93ZWQgd2hlbiB0aGlzIGNvbnN1bWVyIGlzIHRoZSBgYWN0aXZlQ29uc3VtZXJgLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSBndWFyZHJhaWxzIHN1Y2ggYXMgcHJldmVudGluZyB3cml0ZXMgdG8gd3JpdGFibGUgc2lnbmFscyBpbiB0aGVcbiAgICogY29tcHV0YXRpb24gZnVuY3Rpb24gb2YgY29tcHV0ZWQgc2lnbmFscywgd2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgcHVyZS5cbiAgICovXG4gIGNvbnN1bWVyQWxsb3dTaWduYWxXcml0ZXM6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgY29uc3VtZXJJc0Fsd2F5c0xpdmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRyYWNrcyB3aGV0aGVyIHByb2R1Y2VycyBuZWVkIHRvIHJlY29tcHV0ZSB0aGVpciB2YWx1ZSBpbmRlcGVuZGVudGx5IG9mIHRoZSByZWFjdGl2ZSBncmFwaCAoZm9yXG4gICAqIGV4YW1wbGUsIGlmIG5vIGluaXRpYWwgdmFsdWUgaGFzIGJlZW4gY29tcHV0ZWQpLlxuICAgKi9cbiAgcHJvZHVjZXJNdXN0UmVjb21wdXRlKG5vZGU6IHVua25vd24pOiBib29sZWFuO1xuICBwcm9kdWNlclJlY29tcHV0ZVZhbHVlKG5vZGU6IHVua25vd24pOiB2b2lkO1xuICBjb25zdW1lck1hcmtlZERpcnR5KG5vZGU6IHVua25vd24pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIHNpZ25hbCBpcyByZWFkIHdpdGhpbiB0aGlzIGNvbnN1bWVyLlxuICAgKi9cbiAgY29uc3VtZXJPblNpZ25hbFJlYWQobm9kZTogdW5rbm93bik6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBDb25zdW1lck5vZGUgZXh0ZW5kcyBSZWFjdGl2ZU5vZGUge1xuICBwcm9kdWNlck5vZGU6IE5vbk51bGxhYmxlPFJlYWN0aXZlTm9kZVsncHJvZHVjZXJOb2RlJ10+O1xuICBwcm9kdWNlckluZGV4T2ZUaGlzOiBOb25OdWxsYWJsZTxSZWFjdGl2ZU5vZGVbJ3Byb2R1Y2VySW5kZXhPZlRoaXMnXT47XG4gIHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uOiBOb25OdWxsYWJsZTxSZWFjdGl2ZU5vZGVbJ3Byb2R1Y2VyTGFzdFJlYWRWZXJzaW9uJ10+O1xufVxuXG5pbnRlcmZhY2UgUHJvZHVjZXJOb2RlIGV4dGVuZHMgUmVhY3RpdmVOb2RlIHtcbiAgbGl2ZUNvbnN1bWVyTm9kZTogTm9uTnVsbGFibGU8UmVhY3RpdmVOb2RlWydsaXZlQ29uc3VtZXJOb2RlJ10+O1xuICBsaXZlQ29uc3VtZXJJbmRleE9mVGhpczogTm9uTnVsbGFibGU8UmVhY3RpdmVOb2RlWydsaXZlQ29uc3VtZXJJbmRleE9mVGhpcyddPjtcbn1cblxuLyoqXG4gKiBDYWxsZWQgYnkgaW1wbGVtZW50YXRpb25zIHdoZW4gYSBwcm9kdWNlcidzIHNpZ25hbCBpcyByZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjZXJBY2Nlc3NlZChub2RlOiBSZWFjdGl2ZU5vZGUpOiB2b2lkIHtcbiAgaWYgKGluTm90aWZpY2F0aW9uUGhhc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICB0eXBlb2YgbmdEZXZNb2RlICE9PSAndW5kZWZpbmVkJyAmJiBuZ0Rldk1vZGVcbiAgICAgICAgPyBgQXNzZXJ0aW9uIGVycm9yOiBzaWduYWwgcmVhZCBkdXJpbmcgbm90aWZpY2F0aW9uIHBoYXNlYFxuICAgICAgICA6ICcnLFxuICAgICk7XG4gIH1cblxuICBpZiAoYWN0aXZlQ29uc3VtZXIgPT09IG51bGwpIHtcbiAgICAvLyBBY2Nlc3NlZCBvdXRzaWRlIG9mIGEgcmVhY3RpdmUgY29udGV4dCwgc28gbm90aGluZyB0byByZWNvcmQuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYWN0aXZlQ29uc3VtZXIuY29uc3VtZXJPblNpZ25hbFJlYWQobm9kZSk7XG5cbiAgLy8gVGhpcyBwcm9kdWNlciBpcyB0aGUgYGlkeGB0aCBkZXBlbmRlbmN5IG9mIGBhY3RpdmVDb25zdW1lcmAuXG4gIGNvbnN0IGlkeCA9IGFjdGl2ZUNvbnN1bWVyLm5leHRQcm9kdWNlckluZGV4Kys7XG5cbiAgYXNzZXJ0Q29uc3VtZXJOb2RlKGFjdGl2ZUNvbnN1bWVyKTtcblxuICBpZiAoaWR4IDwgYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJOb2RlLmxlbmd0aCAmJiBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVbaWR4XSAhPT0gbm9kZSkge1xuICAgIC8vIFRoZXJlJ3MgYmVlbiBhIGNoYW5nZSBpbiBwcm9kdWNlcnMgc2luY2UgdGhlIGxhc3QgZXhlY3V0aW9uIG9mIGBhY3RpdmVDb25zdW1lcmAuXG4gICAgLy8gYGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTm9kZVtpZHhdYCBob2xkcyBhIHN0YWxlIGRlcGVuZGVuY3kgd2hpY2ggd2lsbCBiZSBiZSByZW1vdmVkIGFuZFxuICAgIC8vIHJlcGxhY2VkIHdpdGggYHRoaXNgLlxuICAgIC8vXG4gICAgLy8gSWYgYGFjdGl2ZUNvbnN1bWVyYCBpc24ndCBsaXZlLCB0aGVuIHRoaXMgaXMgYSBuby1vcCwgc2luY2Ugd2UgY2FuIHJlcGxhY2UgdGhlIHByb2R1Y2VyIGluXG4gICAgLy8gYGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTm9kZWAgZGlyZWN0bHkuIEhvd2V2ZXIsIGlmIGBhY3RpdmVDb25zdW1lcmAgaXMgbGl2ZSwgdGhlbiB3ZSBuZWVkXG4gICAgLy8gdG8gcmVtb3ZlIGl0IGZyb20gdGhlIHN0YWxlIHByb2R1Y2VyJ3MgYGxpdmVDb25zdW1lcmBzLlxuICAgIGlmIChjb25zdW1lcklzTGl2ZShhY3RpdmVDb25zdW1lcikpIHtcbiAgICAgIGNvbnN0IHN0YWxlUHJvZHVjZXIgPSBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVbaWR4XTtcbiAgICAgIHByb2R1Y2VyUmVtb3ZlTGl2ZUNvbnN1bWVyQXRJbmRleChzdGFsZVByb2R1Y2VyLCBhY3RpdmVDb25zdW1lci5wcm9kdWNlckluZGV4T2ZUaGlzW2lkeF0pO1xuXG4gICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgb25seSByZWNvcmQgb2YgYHN0YWxlUHJvZHVjZXJgIGlzIHRoZSByZWZlcmVuY2UgYXRcbiAgICAgIC8vIGBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVbaWR4XWAgd2hpY2ggd2lsbCBiZSBvdmVyd3JpdHRlbiBiZWxvdy5cbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJOb2RlW2lkeF0gIT09IG5vZGUpIHtcbiAgICAvLyBXZSdyZSBhIG5ldyBkZXBlbmRlbmN5IG9mIHRoZSBjb25zdW1lciAoYXQgYGlkeGApLlxuICAgIGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTm9kZVtpZHhdID0gbm9kZTtcblxuICAgIC8vIElmIHRoZSBhY3RpdmUgY29uc3VtZXIgaXMgbGl2ZSwgdGhlbiBhZGQgaXQgYXMgYSBsaXZlIGNvbnN1bWVyLiBJZiBub3QsIHRoZW4gdXNlIDAgYXMgYVxuICAgIC8vIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgIGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VySW5kZXhPZlRoaXNbaWR4XSA9IGNvbnN1bWVySXNMaXZlKGFjdGl2ZUNvbnN1bWVyKVxuICAgICAgPyBwcm9kdWNlckFkZExpdmVDb25zdW1lcihub2RlLCBhY3RpdmVDb25zdW1lciwgaWR4KVxuICAgICAgOiAwO1xuICB9XG4gIGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uW2lkeF0gPSBub2RlLnZlcnNpb247XG59XG5cbi8qKlxuICogSW5jcmVtZW50IHRoZSBnbG9iYWwgZXBvY2ggY291bnRlci5cbiAqXG4gKiBDYWxsZWQgYnkgc291cmNlIHByb2R1Y2VycyAodGhhdCBpcywgbm90IGNvbXB1dGVkcykgd2hlbmV2ZXIgdGhlaXIgdmFsdWVzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VySW5jcmVtZW50RXBvY2goKTogdm9pZCB7XG4gIGVwb2NoKys7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoaXMgcHJvZHVjZXIncyBgdmVyc2lvbmAgaXMgdXAtdG8tZGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VyVXBkYXRlVmFsdWVWZXJzaW9uKG5vZGU6IFJlYWN0aXZlTm9kZSk6IHZvaWQge1xuICBpZiAoY29uc3VtZXJJc0xpdmUobm9kZSkgJiYgIW5vZGUuZGlydHkpIHtcbiAgICAvLyBBIGxpdmUgY29uc3VtZXIgd2lsbCBiZSBtYXJrZWQgZGlydHkgYnkgcHJvZHVjZXJzLCBzbyBhIGNsZWFuIHN0YXRlIG1lYW5zIHRoYXQgaXRzIHZlcnNpb25cbiAgICAvLyBpcyBndWFyYW50ZWVkIHRvIGJlIHVwLXRvLWRhdGUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFub2RlLmRpcnR5ICYmIG5vZGUubGFzdENsZWFuRXBvY2ggPT09IGVwb2NoKSB7XG4gICAgLy8gRXZlbiBub24tbGl2ZSBjb25zdW1lcnMgY2FuIHNraXAgcG9sbGluZyBpZiB0aGV5IHByZXZpb3VzbHkgZm91bmQgdGhlbXNlbHZlcyB0byBiZSBjbGVhbiBhdFxuICAgIC8vIHRoZSBjdXJyZW50IGVwb2NoLCBzaW5jZSB0aGVpciBkZXBlbmRlbmNpZXMgY291bGQgbm90IHBvc3NpYmx5IGhhdmUgY2hhbmdlZCAoc3VjaCBhIGNoYW5nZVxuICAgIC8vIHdvdWxkJ3ZlIGluY3JlYXNlZCB0aGUgZXBvY2gpLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghbm9kZS5wcm9kdWNlck11c3RSZWNvbXB1dGUobm9kZSkgJiYgIWNvbnN1bWVyUG9sbFByb2R1Y2Vyc0ZvckNoYW5nZShub2RlKSkge1xuICAgIC8vIE5vbmUgb2Ygb3VyIHByb2R1Y2VycyByZXBvcnQgYSBjaGFuZ2Ugc2luY2UgdGhlIGxhc3QgdGltZSB0aGV5IHdlcmUgcmVhZCwgc28gbm9cbiAgICAvLyByZWNvbXB1dGF0aW9uIG9mIG91ciB2YWx1ZSBpcyBuZWNlc3NhcnksIGFuZCB3ZSBjYW4gY29uc2lkZXIgb3Vyc2VsdmVzIGNsZWFuLlxuICAgIG5vZGUuZGlydHkgPSBmYWxzZTtcbiAgICBub2RlLmxhc3RDbGVhbkVwb2NoID0gZXBvY2g7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbm9kZS5wcm9kdWNlclJlY29tcHV0ZVZhbHVlKG5vZGUpO1xuXG4gIC8vIEFmdGVyIHJlY29tcHV0aW5nIHRoZSB2YWx1ZSwgd2UncmUgbm8gbG9uZ2VyIGRpcnR5LlxuICBub2RlLmRpcnR5ID0gZmFsc2U7XG4gIG5vZGUubGFzdENsZWFuRXBvY2ggPSBlcG9jaDtcbn1cblxuLyoqXG4gKiBQcm9wYWdhdGUgYSBkaXJ0eSBub3RpZmljYXRpb24gdG8gbGl2ZSBjb25zdW1lcnMgb2YgdGhpcyBwcm9kdWNlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VyTm90aWZ5Q29uc3VtZXJzKG5vZGU6IFJlYWN0aXZlTm9kZSk6IHZvaWQge1xuICBpZiAobm9kZS5saXZlQ29uc3VtZXJOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBQcmV2ZW50IHNpZ25hbCByZWFkcyB3aGVuIHdlJ3JlIHVwZGF0aW5nIHRoZSBncmFwaFxuICBjb25zdCBwcmV2ID0gaW5Ob3RpZmljYXRpb25QaGFzZTtcbiAgaW5Ob3RpZmljYXRpb25QaGFzZSA9IHRydWU7XG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCBjb25zdW1lciBvZiBub2RlLmxpdmVDb25zdW1lck5vZGUpIHtcbiAgICAgIGlmICghY29uc3VtZXIuZGlydHkpIHtcbiAgICAgICAgY29uc3VtZXJNYXJrRGlydHkoY29uc3VtZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpbk5vdGlmaWNhdGlvblBoYXNlID0gcHJldjtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhpcyBgUmVhY3RpdmVOb2RlYCBpbiBpdHMgcHJvZHVjZXIgY2FwYWNpdHkgaXMgY3VycmVudGx5IGFsbG93ZWQgdG8gaW5pdGlhdGUgdXBkYXRlcyxcbiAqIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnN1bWVyIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlclVwZGF0ZXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gYWN0aXZlQ29uc3VtZXI/LmNvbnN1bWVyQWxsb3dTaWduYWxXcml0ZXMgIT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZXJNYXJrRGlydHkobm9kZTogUmVhY3RpdmVOb2RlKTogdm9pZCB7XG4gIG5vZGUuZGlydHkgPSB0cnVlO1xuICBwcm9kdWNlck5vdGlmeUNvbnN1bWVycyhub2RlKTtcbiAgbm9kZS5jb25zdW1lck1hcmtlZERpcnR5Py4obm9kZSk7XG59XG5cbi8qKlxuICogUHJlcGFyZSB0aGlzIGNvbnN1bWVyIHRvIHJ1biBhIGNvbXB1dGF0aW9uIGluIGl0cyByZWFjdGl2ZSBjb250ZXh0LlxuICpcbiAqIE11c3QgYmUgY2FsbGVkIGJ5IHN1YmNsYXNzZXMgd2hpY2ggcmVwcmVzZW50IHJlYWN0aXZlIGNvbXB1dGF0aW9ucywgYmVmb3JlIHRob3NlIGNvbXB1dGF0aW9uc1xuICogYmVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lckJlZm9yZUNvbXB1dGF0aW9uKG5vZGU6IFJlYWN0aXZlTm9kZSB8IG51bGwpOiBSZWFjdGl2ZU5vZGUgfCBudWxsIHtcbiAgbm9kZSAmJiAobm9kZS5uZXh0UHJvZHVjZXJJbmRleCA9IDApO1xuICByZXR1cm4gc2V0QWN0aXZlQ29uc3VtZXIobm9kZSk7XG59XG5cbi8qKlxuICogRmluYWxpemUgdGhpcyBjb25zdW1lcidzIHN0YXRlIGFmdGVyIGEgcmVhY3RpdmUgY29tcHV0YXRpb24gaGFzIHJ1bi5cbiAqXG4gKiBNdXN0IGJlIGNhbGxlZCBieSBzdWJjbGFzc2VzIHdoaWNoIHJlcHJlc2VudCByZWFjdGl2ZSBjb21wdXRhdGlvbnMsIGFmdGVyIHRob3NlIGNvbXB1dGF0aW9uc1xuICogaGF2ZSBmaW5pc2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVyQWZ0ZXJDb21wdXRhdGlvbihcbiAgbm9kZTogUmVhY3RpdmVOb2RlIHwgbnVsbCxcbiAgcHJldkNvbnN1bWVyOiBSZWFjdGl2ZU5vZGUgfCBudWxsLFxuKTogdm9pZCB7XG4gIHNldEFjdGl2ZUNvbnN1bWVyKHByZXZDb25zdW1lcik7XG5cbiAgaWYgKFxuICAgICFub2RlIHx8XG4gICAgbm9kZS5wcm9kdWNlck5vZGUgPT09IHVuZGVmaW5lZCB8fFxuICAgIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgbm9kZS5wcm9kdWNlckxhc3RSZWFkVmVyc2lvbiA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb25zdW1lcklzTGl2ZShub2RlKSkge1xuICAgIC8vIEZvciBsaXZlIGNvbnN1bWVycywgd2UgbmVlZCB0byByZW1vdmUgdGhlIHByb2R1Y2VyIC0+IGNvbnN1bWVyIGVkZ2UgZm9yIGFueSBzdGFsZSBwcm9kdWNlcnNcbiAgICAvLyB3aGljaCB3ZXJlbid0IGRlcGVuZGVuY2llcyBhZnRlciB0aGUgcmVjb21wdXRhdGlvbi5cbiAgICBmb3IgKGxldCBpID0gbm9kZS5uZXh0UHJvZHVjZXJJbmRleDsgaSA8IG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwcm9kdWNlclJlbW92ZUxpdmVDb25zdW1lckF0SW5kZXgobm9kZS5wcm9kdWNlck5vZGVbaV0sIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVHJ1bmNhdGUgdGhlIHByb2R1Y2VyIHRyYWNraW5nIGFycmF5cy5cbiAgLy8gUGVyZiBub3RlOiB0aGlzIGlzIGVzc2VudGlhbGx5IHRydW5jYXRpbmcgdGhlIGxlbmd0aCB0byBgbm9kZS5uZXh0UHJvZHVjZXJJbmRleGAsIGJ1dFxuICAvLyBiZW5jaG1hcmtpbmcgaGFzIHNob3duIHRoYXQgaW5kaXZpZHVhbCBwb3Agb3BlcmF0aW9ucyBhcmUgZmFzdGVyLlxuICB3aGlsZSAobm9kZS5wcm9kdWNlck5vZGUubGVuZ3RoID4gbm9kZS5uZXh0UHJvZHVjZXJJbmRleCkge1xuICAgIG5vZGUucHJvZHVjZXJOb2RlLnBvcCgpO1xuICAgIG5vZGUucHJvZHVjZXJMYXN0UmVhZFZlcnNpb24ucG9wKCk7XG4gICAgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzLnBvcCgpO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBjb25zdW1lciBoYXMgYW55IGRlcGVuZGVuY2llcyB3aGljaCBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZVxuICogdGhleSB3ZXJlIHJlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lclBvbGxQcm9kdWNlcnNGb3JDaGFuZ2Uobm9kZTogUmVhY3RpdmVOb2RlKTogYm9vbGVhbiB7XG4gIGFzc2VydENvbnN1bWVyTm9kZShub2RlKTtcblxuICAvLyBQb2xsIHByb2R1Y2VycyBmb3IgY2hhbmdlLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcHJvZHVjZXIgPSBub2RlLnByb2R1Y2VyTm9kZVtpXTtcbiAgICBjb25zdCBzZWVuVmVyc2lvbiA9IG5vZGUucHJvZHVjZXJMYXN0UmVhZFZlcnNpb25baV07XG5cbiAgICAvLyBGaXJzdCBjaGVjayB0aGUgdmVyc2lvbnMuIEEgbWlzbWF0Y2ggbWVhbnMgdGhhdCB0aGUgcHJvZHVjZXIncyB2YWx1ZSBpcyBrbm93biB0byBoYXZlXG4gICAgLy8gY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQuXG4gICAgaWYgKHNlZW5WZXJzaW9uICE9PSBwcm9kdWNlci52ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcHJvZHVjZXIncyB2ZXJzaW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBsYXN0IHRpbWUgd2UgcmVhZCBpdCwgYnV0IGl0IG1pZ2h0IGl0c2VsZiBiZVxuICAgIC8vIHN0YWxlLiBGb3JjZSB0aGUgcHJvZHVjZXIgdG8gcmVjb21wdXRlIGl0cyB2ZXJzaW9uIChjYWxjdWxhdGluZyBhIG5ldyB2YWx1ZSBpZiBuZWNlc3NhcnkpLlxuICAgIHByb2R1Y2VyVXBkYXRlVmFsdWVWZXJzaW9uKHByb2R1Y2VyKTtcblxuICAgIC8vIE5vdyB3aGVuIHdlIGRvIHRoaXMgY2hlY2ssIGBwcm9kdWNlci52ZXJzaW9uYCBpcyBndWFyYW50ZWVkIHRvIGJlIHVwIHRvIGRhdGUsIHNvIGlmIHRoZVxuICAgIC8vIHZlcnNpb25zIHN0aWxsIG1hdGNoIHRoZW4gaXQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgcmVhZCBpdC5cbiAgICBpZiAoc2VlblZlcnNpb24gIT09IHByb2R1Y2VyLnZlcnNpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBEaXNjb25uZWN0IHRoaXMgY29uc3VtZXIgZnJvbSB0aGUgZ3JhcGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lckRlc3Ryb3kobm9kZTogUmVhY3RpdmVOb2RlKTogdm9pZCB7XG4gIGFzc2VydENvbnN1bWVyTm9kZShub2RlKTtcbiAgaWYgKGNvbnN1bWVySXNMaXZlKG5vZGUpKSB7XG4gICAgLy8gRHJvcCBhbGwgY29ubmVjdGlvbnMgZnJvbSB0aGUgZ3JhcGggdG8gdGhpcyBub2RlLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9kdWNlck5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHByb2R1Y2VyUmVtb3ZlTGl2ZUNvbnN1bWVyQXRJbmRleChub2RlLnByb2R1Y2VyTm9kZVtpXSwgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBUcnVuY2F0ZSBhbGwgdGhlIGFycmF5cyB0byBkcm9wIGFsbCBjb25uZWN0aW9uIGZyb20gdGhpcyBub2RlIHRvIHRoZSBncmFwaC5cbiAgbm9kZS5wcm9kdWNlck5vZGUubGVuZ3RoID1cbiAgICBub2RlLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uLmxlbmd0aCA9XG4gICAgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzLmxlbmd0aCA9XG4gICAgICAwO1xuICBpZiAobm9kZS5saXZlQ29uc3VtZXJOb2RlKSB7XG4gICAgbm9kZS5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aCA9IG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXMhLmxlbmd0aCA9IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGQgYGNvbnN1bWVyYCBhcyBhIGxpdmUgY29uc3VtZXIgb2YgdGhpcyBub2RlLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBwb3RlbnRpYWxseSB0cmFuc2l0aXZlLiBJZiB0aGlzIG5vZGUgYmVjb21lcyBsaXZlLCB0aGVuIGl0IGJlY29tZXNcbiAqIGEgbGl2ZSBjb25zdW1lciBvZiBhbGwgb2YgaXRzIGN1cnJlbnQgcHJvZHVjZXJzLlxuICovXG5mdW5jdGlvbiBwcm9kdWNlckFkZExpdmVDb25zdW1lcihcbiAgbm9kZTogUmVhY3RpdmVOb2RlLFxuICBjb25zdW1lcjogUmVhY3RpdmVOb2RlLFxuICBpbmRleE9mVGhpczogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgYXNzZXJ0UHJvZHVjZXJOb2RlKG5vZGUpO1xuICBpZiAobm9kZS5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aCA9PT0gMCAmJiBpc0NvbnN1bWVyTm9kZShub2RlKSkge1xuICAgIC8vIFdoZW4gZ29pbmcgZnJvbSAwIHRvIDEgbGl2ZSBjb25zdW1lcnMsIHdlIGJlY29tZSBhIGxpdmUgY29uc3VtZXIgdG8gb3VyIHByb2R1Y2Vycy5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlLnByb2R1Y2VySW5kZXhPZlRoaXNbaV0gPSBwcm9kdWNlckFkZExpdmVDb25zdW1lcihub2RlLnByb2R1Y2VyTm9kZVtpXSwgbm9kZSwgaSk7XG4gICAgfVxuICB9XG4gIG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXMucHVzaChpbmRleE9mVGhpcyk7XG4gIHJldHVybiBub2RlLmxpdmVDb25zdW1lck5vZGUucHVzaChjb25zdW1lcikgLSAxO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgbGl2ZSBjb25zdW1lciBhdCBgaWR4YC5cbiAqL1xuZnVuY3Rpb24gcHJvZHVjZXJSZW1vdmVMaXZlQ29uc3VtZXJBdEluZGV4KG5vZGU6IFJlYWN0aXZlTm9kZSwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgYXNzZXJ0UHJvZHVjZXJOb2RlKG5vZGUpO1xuXG4gIGlmICh0eXBlb2YgbmdEZXZNb2RlICE9PSAndW5kZWZpbmVkJyAmJiBuZ0Rldk1vZGUgJiYgaWR4ID49IG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQXNzZXJ0aW9uIGVycm9yOiBhY3RpdmUgY29uc3VtZXIgaW5kZXggJHtpZHh9IGlzIG91dCBvZiBib3VuZHMgb2YgJHtub2RlLmxpdmVDb25zdW1lck5vZGUubGVuZ3RofSBjb25zdW1lcnMpYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGggPT09IDEgJiYgaXNDb25zdW1lck5vZGUobm9kZSkpIHtcbiAgICAvLyBXaGVuIHJlbW92aW5nIHRoZSBsYXN0IGxpdmUgY29uc3VtZXIsIHdlIHdpbGwgbm8gbG9uZ2VyIGJlIGxpdmUuIFdlIG5lZWQgdG8gcmVtb3ZlXG4gICAgLy8gb3Vyc2VsdmVzIGZyb20gb3VyIHByb2R1Y2VycycgdHJhY2tpbmcgKHdoaWNoIG1heSBjYXVzZSBjb25zdW1lci1wcm9kdWNlcnMgdG8gbG9zZVxuICAgIC8vIGxpdmVuZXNzIGFzIHdlbGwpLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9kdWNlck5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHByb2R1Y2VyUmVtb3ZlTGl2ZUNvbnN1bWVyQXRJbmRleChub2RlLnByb2R1Y2VyTm9kZVtpXSwgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBNb3ZlIHRoZSBsYXN0IHZhbHVlIG9mIGBsaXZlQ29uc3VtZXJzYCBpbnRvIGBpZHhgLiBOb3RlIHRoYXQgaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlXG4gIC8vIGxpdmUgY29uc3VtZXIsIHRoaXMgaXMgYSBuby1vcC5cbiAgY29uc3QgbGFzdElkeCA9IG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGggLSAxO1xuICBub2RlLmxpdmVDb25zdW1lck5vZGVbaWR4XSA9IG5vZGUubGl2ZUNvbnN1bWVyTm9kZVtsYXN0SWR4XTtcbiAgbm9kZS5saXZlQ29uc3VtZXJJbmRleE9mVGhpc1tpZHhdID0gbm9kZS5saXZlQ29uc3VtZXJJbmRleE9mVGhpc1tsYXN0SWR4XTtcblxuICAvLyBUcnVuY2F0ZSB0aGUgYXJyYXkuXG4gIG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGgtLTtcbiAgbm9kZS5saXZlQ29uc3VtZXJJbmRleE9mVGhpcy5sZW5ndGgtLTtcblxuICAvLyBJZiB0aGUgaW5kZXggaXMgc3RpbGwgdmFsaWQsIHRoZW4gd2UgbmVlZCB0byBmaXggdGhlIGluZGV4IHBvaW50ZXIgZnJvbSB0aGUgcHJvZHVjZXIgdG8gdGhpc1xuICAvLyBjb25zdW1lciwgYW5kIHVwZGF0ZSBpdCBmcm9tIGBsYXN0SWR4YCB0byBgaWR4YCAoYWNjb3VudGluZyBmb3IgdGhlIG1vdmUgYWJvdmUpLlxuICBpZiAoaWR4IDwgbm9kZS5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aCkge1xuICAgIGNvbnN0IGlkeFByb2R1Y2VyID0gbm9kZS5saXZlQ29uc3VtZXJJbmRleE9mVGhpc1tpZHhdO1xuICAgIGNvbnN0IGNvbnN1bWVyID0gbm9kZS5saXZlQ29uc3VtZXJOb2RlW2lkeF07XG4gICAgYXNzZXJ0Q29uc3VtZXJOb2RlKGNvbnN1bWVyKTtcbiAgICBjb25zdW1lci5wcm9kdWNlckluZGV4T2ZUaGlzW2lkeFByb2R1Y2VyXSA9IGlkeDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25zdW1lcklzTGl2ZShub2RlOiBSZWFjdGl2ZU5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5vZGUuY29uc3VtZXJJc0Fsd2F5c0xpdmUgfHwgKG5vZGU/LmxpdmVDb25zdW1lck5vZGU/Lmxlbmd0aCA/PyAwKSA+IDA7XG59XG5cbmZ1bmN0aW9uIGFzc2VydENvbnN1bWVyTm9kZShub2RlOiBSZWFjdGl2ZU5vZGUpOiBhc3NlcnRzIG5vZGUgaXMgQ29uc3VtZXJOb2RlIHtcbiAgbm9kZS5wcm9kdWNlck5vZGUgPz89IFtdO1xuICBub2RlLnByb2R1Y2VySW5kZXhPZlRoaXMgPz89IFtdO1xuICBub2RlLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uID8/PSBbXTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0UHJvZHVjZXJOb2RlKG5vZGU6IFJlYWN0aXZlTm9kZSk6IGFzc2VydHMgbm9kZSBpcyBQcm9kdWNlck5vZGUge1xuICBub2RlLmxpdmVDb25zdW1lck5vZGUgPz89IFtdO1xuICBub2RlLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzID8/PSBbXTtcbn1cblxuZnVuY3Rpb24gaXNDb25zdW1lck5vZGUobm9kZTogUmVhY3RpdmVOb2RlKTogbm9kZSBpcyBDb25zdW1lck5vZGUge1xuICByZXR1cm4gbm9kZS5wcm9kdWNlck5vZGUgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscy9zcmMvZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBTUg7Ozs7R0FJRztBQUNILElBQUksY0FBYyxHQUF3QixJQUFJLENBQUM7QUFDL0MsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFJaEM7O0dBRUc7QUFDSCxJQUFJLEtBQUssR0FBWSxDQUFZLENBQUM7QUFFbEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXZELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUE2QjtJQUM3RCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7SUFDNUIsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUMxQixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQU1ELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYztJQUN2QyxPQUFRLEtBQTJCLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlCO0lBQ3pDLE9BQU8sRUFBRSxDQUFZO0lBQ3JCLGNBQWMsRUFBRSxDQUFZO0lBQzVCLEtBQUssRUFBRSxLQUFLO0lBQ1osWUFBWSxFQUFFLFNBQVM7SUFDdkIsdUJBQXVCLEVBQUUsU0FBUztJQUNsQyxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLGlCQUFpQixFQUFFLENBQUM7SUFDcEIsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQix1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Q0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG4vLyBSZXF1aXJlZCBhcyB0aGUgc2lnbmFscyBsaWJyYXJ5IGlzIGluIGEgc2VwYXJhdGUgcGFja2FnZSwgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGVuc3VyZSB0aGVcbi8vIGdsb2JhbCBgbmdEZXZNb2RlYCB0eXBlIGlzIGRlZmluZWQuXG5kZWNsYXJlIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBjb25zdW1lciBgUmVhY3RpdmVOb2RlYCwgaWYgcnVubmluZyBjb2RlIGluIGEgcmVhY3RpdmUgY29udGV4dC5cbiAqXG4gKiBDaGFuZ2UgdGhpcyB2aWEgYHNldEFjdGl2ZUNvbnN1bWVyYC5cbiAqL1xubGV0IGFjdGl2ZUNvbnN1bWVyOiBSZWFjdGl2ZU5vZGUgfCBudWxsID0gbnVsbDtcbmxldCBpbk5vdGlmaWNhdGlvblBoYXNlID0gZmFsc2U7XG5cbnR5cGUgVmVyc2lvbiA9IG51bWJlciAmIHtfX2JyYW5kOiAnVmVyc2lvbid9O1xuXG4vKipcbiAqIEdsb2JhbCBlcG9jaCBjb3VudGVyLiBJbmNyZW1lbnRlZCB3aGVuZXZlciBhIHNvdXJjZSBzaWduYWwgaXMgc2V0LlxuICovXG5sZXQgZXBvY2g6IFZlcnNpb24gPSAxIGFzIFZlcnNpb247XG5cbi8qKlxuICogU3ltYm9sIHVzZWQgdG8gdGVsbCBgU2lnbmFsYHMgYXBhcnQgZnJvbSBvdGhlciBmdW5jdGlvbnMuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBhdXRvLXVud3JhcCBzaWduYWxzIGluIHZhcmlvdXMgY2FzZXMsIG9yIHRvIGF1dG8td3JhcCBub24tc2lnbmFsIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNJR05BTCA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woJ1NJR05BTCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWN0aXZlQ29uc3VtZXIoY29uc3VtZXI6IFJlYWN0aXZlTm9kZSB8IG51bGwpOiBSZWFjdGl2ZU5vZGUgfCBudWxsIHtcbiAgY29uc3QgcHJldiA9IGFjdGl2ZUNvbnN1bWVyO1xuICBhY3RpdmVDb25zdW1lciA9IGNvbnN1bWVyO1xuICByZXR1cm4gcHJldjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZUNvbnN1bWVyKCk6IFJlYWN0aXZlTm9kZSB8IG51bGwge1xuICByZXR1cm4gYWN0aXZlQ29uc3VtZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luTm90aWZpY2F0aW9uUGhhc2UoKTogYm9vbGVhbiB7XG4gIHJldHVybiBpbk5vdGlmaWNhdGlvblBoYXNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlIHtcbiAgW1NJR05BTF06IFJlYWN0aXZlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVhY3RpdmUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWFjdGl2ZSB7XG4gIHJldHVybiAodmFsdWUgYXMgUGFydGlhbDxSZWFjdGl2ZT4pW1NJR05BTF0gIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IFJFQUNUSVZFX05PREU6IFJlYWN0aXZlTm9kZSA9IHtcbiAgdmVyc2lvbjogMCBhcyBWZXJzaW9uLFxuICBsYXN0Q2xlYW5FcG9jaDogMCBhcyBWZXJzaW9uLFxuICBkaXJ0eTogZmFsc2UsXG4gIHByb2R1Y2VyTm9kZTogdW5kZWZpbmVkLFxuICBwcm9kdWNlckxhc3RSZWFkVmVyc2lvbjogdW5kZWZpbmVkLFxuICBwcm9kdWNlckluZGV4T2ZUaGlzOiB1bmRlZmluZWQsXG4gIG5leHRQcm9kdWNlckluZGV4OiAwLFxuICBsaXZlQ29uc3VtZXJOb2RlOiB1bmRlZmluZWQsXG4gIGxpdmVDb25zdW1lckluZGV4T2ZUaGlzOiB1bmRlZmluZWQsXG4gIGNvbnN1bWVyQWxsb3dTaWduYWxXcml0ZXM6IGZhbHNlLFxuICBjb25zdW1lcklzQWx3YXlzTGl2ZTogZmFsc2UsXG4gIHByb2R1Y2VyTXVzdFJlY29tcHV0ZTogKCkgPT4gZmFsc2UsXG4gIHByb2R1Y2VyUmVjb21wdXRlVmFsdWU6ICgpID0+IHt9LFxuICBjb25zdW1lck1hcmtlZERpcnR5OiAoKSA9PiB7fSxcbiAgY29uc3VtZXJPblNpZ25hbFJlYWQ6ICgpID0+IHt9LFxufTtcblxuLyoqXG4gKiBBIHByb2R1Y2VyIGFuZC9vciBjb25zdW1lciB3aGljaCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHJlYWN0aXZlIGdyYXBoLlxuICpcbiAqIFByb2R1Y2VyIGBSZWFjdGl2ZU5vZGVgcyB3aGljaCBhcmUgYWNjZXNzZWQgd2hlbiBhIGNvbnN1bWVyIGBSZWFjdGl2ZU5vZGVgIGlzIHRoZVxuICogYGFjdGl2ZUNvbnN1bWVyYCBhcmUgdHJhY2tlZCBhcyBkZXBlbmRlbmNpZXMgb2YgdGhhdCBjb25zdW1lci5cbiAqXG4gKiBDZXJ0YWluIGNvbnN1bWVycyBhcmUgYWxzbyB0cmFja2VkIGFzIFwibGl2ZVwiIGNvbnN1bWVycyBhbmQgY3JlYXRlIGVkZ2VzIGluIHRoZSBvdGhlciBkaXJlY3Rpb24sXG4gKiBmcm9tIHByb2R1Y2VyIHRvIGNvbnN1bWVyLiBUaGVzZSBlZGdlcyBhcmUgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgd2hlbiBhXG4gKiBwcm9kdWNlcidzIHZhbHVlIGlzIHVwZGF0ZWQuXG4gKlxuICogQSBgUmVhY3RpdmVOb2RlYCBtYXkgYmUgYm90aCBhIHByb2R1Y2VyIGFuZCBjb25zdW1lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFjdGl2ZU5vZGUge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUgdmFsdWUgdGhhdCB0aGlzIG5vZGUgcHJvZHVjZXMuXG4gICAqXG4gICAqIFRoaXMgaXMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgdmFsdWUgaXMgcHJvZHVjZWQgYnkgdGhpcyBub2RlIHdoaWNoIGlzIG5vdCBlcXVhbCB0byB0aGVcbiAgICogcHJldmlvdXMgdmFsdWUgKGJ5IHdoYXRldmVyIGRlZmluaXRpb24gb2YgZXF1YWxpdHkgaXMgaW4gdXNlKS5cbiAgICovXG4gIHZlcnNpb246IFZlcnNpb247XG5cbiAgLyoqXG4gICAqIEVwb2NoIGF0IHdoaWNoIHRoaXMgbm9kZSBpcyB2ZXJpZmllZCB0byBiZSBjbGVhbi5cbiAgICpcbiAgICogVGhpcyBhbGxvd3Mgc2tpcHBpbmcgb2Ygc29tZSBwb2xsaW5nIG9wZXJhdGlvbnMgaW4gdGhlIGNhc2Ugd2hlcmUgbm8gc2lnbmFscyBoYXZlIGJlZW4gc2V0XG4gICAqIHNpbmNlIHRoaXMgbm9kZSB3YXMgbGFzdCByZWFkLlxuICAgKi9cbiAgbGFzdENsZWFuRXBvY2g6IFZlcnNpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBub2RlIChpbiBpdHMgY29uc3VtZXIgY2FwYWNpdHkpIGlzIGRpcnR5LlxuICAgKlxuICAgKiBPbmx5IGxpdmUgY29uc3VtZXJzIGJlY29tZSBkaXJ0eSwgd2hlbiByZWNlaXZpbmcgYSBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gYSBkZXBlbmRlbmN5XG4gICAqIHByb2R1Y2VyLlxuICAgKi9cbiAgZGlydHk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb2R1Y2VycyB3aGljaCBhcmUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgY29uc3VtZXIuXG4gICAqXG4gICAqIFVzZXMgdGhlIHNhbWUgaW5kaWNlcyBhcyB0aGUgYHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uYCBhbmQgYHByb2R1Y2VySW5kZXhPZlRoaXNgIGFycmF5cy5cbiAgICovXG4gIHByb2R1Y2VyTm9kZTogUmVhY3RpdmVOb2RlW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIGBWZXJzaW9uYCBvZiB0aGUgdmFsdWUgbGFzdCByZWFkIGJ5IGEgZ2l2ZW4gcHJvZHVjZXIuXG4gICAqXG4gICAqIFVzZXMgdGhlIHNhbWUgaW5kaWNlcyBhcyB0aGUgYHByb2R1Y2VyTm9kZWAgYW5kIGBwcm9kdWNlckluZGV4T2ZUaGlzYCBhcnJheXMuXG4gICAqL1xuICBwcm9kdWNlckxhc3RSZWFkVmVyc2lvbjogVmVyc2lvbltdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRleCBvZiBgdGhpc2AgKGNvbnN1bWVyKSBpbiBlYWNoIHByb2R1Y2VyJ3MgYGxpdmVDb25zdW1lcnNgIGFycmF5LlxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG9ubHkgbWVhbmluZ2Z1bCBpZiB0aGlzIG5vZGUgaXMgbGl2ZSAoYGxpdmVDb25zdW1lcnMubGVuZ3RoID4gMGApLiBPdGhlcndpc2VcbiAgICogdGhlc2UgaW5kaWNlcyBhcmUgc3RhbGUuXG4gICAqXG4gICAqIFVzZXMgdGhlIHNhbWUgaW5kaWNlcyBhcyB0aGUgYHByb2R1Y2VyTm9kZWAgYW5kIGBwcm9kdWNlckxhc3RSZWFkVmVyc2lvbmAgYXJyYXlzLlxuICAgKi9cbiAgcHJvZHVjZXJJbmRleE9mVGhpczogbnVtYmVyW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGV4IGludG8gdGhlIHByb2R1Y2VyIGFycmF5cyB0aGF0IHRoZSBuZXh0IGRlcGVuZGVuY3kgb2YgdGhpcyBub2RlIGFzIGEgY29uc3VtZXIgd2lsbCB1c2UuXG4gICAqXG4gICAqIFRoaXMgaW5kZXggaXMgemVyb2VkIGJlZm9yZSB0aGlzIG5vZGUgYXMgYSBjb25zdW1lciBiZWdpbnMgZXhlY3V0aW5nLiBXaGVuIGEgcHJvZHVjZXIgaXMgcmVhZCxcbiAgICogaXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBwcm9kdWNlcnMgYXJyYXlzIGF0IHRoaXMgaW5kZXguIFRoZXJlIG1heSBiZSBhbiBleGlzdGluZyBkZXBlbmRlbmN5XG4gICAqIGluIHRoaXMgbG9jYXRpb24gd2hpY2ggbWF5IG9yIG1heSBub3QgbWF0Y2ggdGhlIGluY29taW5nIHByb2R1Y2VyLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGVcbiAgICogc2FtZSBwcm9kdWNlcnMgd2VyZSByZWFkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBsYXN0IGNvbXB1dGF0aW9uLlxuICAgKi9cbiAgbmV4dFByb2R1Y2VySW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogQXJyYXkgb2YgY29uc3VtZXJzIG9mIHRoaXMgcHJvZHVjZXIgdGhhdCBhcmUgXCJsaXZlXCIgKHRoZXkgcmVxdWlyZSBwdXNoIG5vdGlmaWNhdGlvbnMpLlxuICAgKlxuICAgKiBgbGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGhgIGlzIGVmZmVjdGl2ZWx5IG91ciByZWZlcmVuY2UgY291bnQgZm9yIHRoaXMgbm9kZS5cbiAgICovXG4gIGxpdmVDb25zdW1lck5vZGU6IFJlYWN0aXZlTm9kZVtdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRleCBvZiBgdGhpc2AgKHByb2R1Y2VyKSBpbiBlYWNoIGNvbnN1bWVyJ3MgYHByb2R1Y2VyTm9kZWAgYXJyYXkuXG4gICAqXG4gICAqIFVzZXMgdGhlIHNhbWUgaW5kaWNlcyBhcyB0aGUgYGxpdmVDb25zdW1lck5vZGVgIGFycmF5LlxuICAgKi9cbiAgbGl2ZUNvbnN1bWVySW5kZXhPZlRoaXM6IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHdyaXRlcyB0byBzaWduYWxzIGFyZSBhbGxvd2VkIHdoZW4gdGhpcyBjb25zdW1lciBpcyB0aGUgYGFjdGl2ZUNvbnN1bWVyYC5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VkIHRvIGVuZm9yY2UgZ3VhcmRyYWlscyBzdWNoIGFzIHByZXZlbnRpbmcgd3JpdGVzIHRvIHdyaXRhYmxlIHNpZ25hbHMgaW4gdGhlXG4gICAqIGNvbXB1dGF0aW9uIGZ1bmN0aW9uIG9mIGNvbXB1dGVkIHNpZ25hbHMsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIHB1cmUuXG4gICAqL1xuICBjb25zdW1lckFsbG93U2lnbmFsV3JpdGVzOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGNvbnN1bWVySXNBbHdheXNMaXZlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcmFja3Mgd2hldGhlciBwcm9kdWNlcnMgbmVlZCB0byByZWNvbXB1dGUgdGhlaXIgdmFsdWUgaW5kZXBlbmRlbnRseSBvZiB0aGUgcmVhY3RpdmUgZ3JhcGggKGZvclxuICAgKiBleGFtcGxlLCBpZiBubyBpbml0aWFsIHZhbHVlIGhhcyBiZWVuIGNvbXB1dGVkKS5cbiAgICovXG4gIHByb2R1Y2VyTXVzdFJlY29tcHV0ZShub2RlOiB1bmtub3duKTogYm9vbGVhbjtcbiAgcHJvZHVjZXJSZWNvbXB1dGVWYWx1ZShub2RlOiB1bmtub3duKTogdm9pZDtcbiAgY29uc3VtZXJNYXJrZWREaXJ0eShub2RlOiB1bmtub3duKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzaWduYWwgaXMgcmVhZCB3aXRoaW4gdGhpcyBjb25zdW1lci5cbiAgICovXG4gIGNvbnN1bWVyT25TaWduYWxSZWFkKG5vZGU6IHVua25vd24pOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQ29uc3VtZXJOb2RlIGV4dGVuZHMgUmVhY3RpdmVOb2RlIHtcbiAgcHJvZHVjZXJOb2RlOiBOb25OdWxsYWJsZTxSZWFjdGl2ZU5vZGVbJ3Byb2R1Y2VyTm9kZSddPjtcbiAgcHJvZHVjZXJJbmRleE9mVGhpczogTm9uTnVsbGFibGU8UmVhY3RpdmVOb2RlWydwcm9kdWNlckluZGV4T2ZUaGlzJ10+O1xuICBwcm9kdWNlckxhc3RSZWFkVmVyc2lvbjogTm9uTnVsbGFibGU8UmVhY3RpdmVOb2RlWydwcm9kdWNlckxhc3RSZWFkVmVyc2lvbiddPjtcbn1cblxuaW50ZXJmYWNlIFByb2R1Y2VyTm9kZSBleHRlbmRzIFJlYWN0aXZlTm9kZSB7XG4gIGxpdmVDb25zdW1lck5vZGU6IE5vbk51bGxhYmxlPFJlYWN0aXZlTm9kZVsnbGl2ZUNvbnN1bWVyTm9kZSddPjtcbiAgbGl2ZUNvbnN1bWVySW5kZXhPZlRoaXM6IE5vbk51bGxhYmxlPFJlYWN0aXZlTm9kZVsnbGl2ZUNvbnN1bWVySW5kZXhPZlRoaXMnXT47XG59XG5cbi8qKlxuICogQ2FsbGVkIGJ5IGltcGxlbWVudGF0aW9ucyB3aGVuIGEgcHJvZHVjZXIncyBzaWduYWwgaXMgcmVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y2VyQWNjZXNzZWQobm9kZTogUmVhY3RpdmVOb2RlKTogdm9pZCB7XG4gIGlmIChpbk5vdGlmaWNhdGlvblBoYXNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgdHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlXG4gICAgICAgID8gYEFzc2VydGlvbiBlcnJvcjogc2lnbmFsIHJlYWQgZHVyaW5nIG5vdGlmaWNhdGlvbiBwaGFzZWBcbiAgICAgICAgOiAnJyxcbiAgICApO1xuICB9XG5cbiAgaWYgKGFjdGl2ZUNvbnN1bWVyID09PSBudWxsKSB7XG4gICAgLy8gQWNjZXNzZWQgb3V0c2lkZSBvZiBhIHJlYWN0aXZlIGNvbnRleHQsIHNvIG5vdGhpbmcgdG8gcmVjb3JkLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGFjdGl2ZUNvbnN1bWVyLmNvbnN1bWVyT25TaWduYWxSZWFkKG5vZGUpO1xuXG4gIC8vIFRoaXMgcHJvZHVjZXIgaXMgdGhlIGBpZHhgdGggZGVwZW5kZW5jeSBvZiBgYWN0aXZlQ29uc3VtZXJgLlxuICBjb25zdCBpZHggPSBhY3RpdmVDb25zdW1lci5uZXh0UHJvZHVjZXJJbmRleCsrO1xuXG4gIGFzc2VydENvbnN1bWVyTm9kZShhY3RpdmVDb25zdW1lcik7XG5cbiAgaWYgKGlkeCA8IGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTm9kZS5sZW5ndGggJiYgYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJOb2RlW2lkeF0gIT09IG5vZGUpIHtcbiAgICAvLyBUaGVyZSdzIGJlZW4gYSBjaGFuZ2UgaW4gcHJvZHVjZXJzIHNpbmNlIHRoZSBsYXN0IGV4ZWN1dGlvbiBvZiBgYWN0aXZlQ29uc3VtZXJgLlxuICAgIC8vIGBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVbaWR4XWAgaG9sZHMgYSBzdGFsZSBkZXBlbmRlbmN5IHdoaWNoIHdpbGwgYmUgYmUgcmVtb3ZlZCBhbmRcbiAgICAvLyByZXBsYWNlZCB3aXRoIGB0aGlzYC5cbiAgICAvL1xuICAgIC8vIElmIGBhY3RpdmVDb25zdW1lcmAgaXNuJ3QgbGl2ZSwgdGhlbiB0aGlzIGlzIGEgbm8tb3AsIHNpbmNlIHdlIGNhbiByZXBsYWNlIHRoZSBwcm9kdWNlciBpblxuICAgIC8vIGBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVgIGRpcmVjdGx5LiBIb3dldmVyLCBpZiBgYWN0aXZlQ29uc3VtZXJgIGlzIGxpdmUsIHRoZW4gd2UgbmVlZFxuICAgIC8vIHRvIHJlbW92ZSBpdCBmcm9tIHRoZSBzdGFsZSBwcm9kdWNlcidzIGBsaXZlQ29uc3VtZXJgcy5cbiAgICBpZiAoY29uc3VtZXJJc0xpdmUoYWN0aXZlQ29uc3VtZXIpKSB7XG4gICAgICBjb25zdCBzdGFsZVByb2R1Y2VyID0gYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJOb2RlW2lkeF07XG4gICAgICBwcm9kdWNlclJlbW92ZUxpdmVDb25zdW1lckF0SW5kZXgoc3RhbGVQcm9kdWNlciwgYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJJbmRleE9mVGhpc1tpZHhdKTtcblxuICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG9ubHkgcmVjb3JkIG9mIGBzdGFsZVByb2R1Y2VyYCBpcyB0aGUgcmVmZXJlbmNlIGF0XG4gICAgICAvLyBgYWN0aXZlQ29uc3VtZXIucHJvZHVjZXJOb2RlW2lkeF1gIHdoaWNoIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYmVsb3cuXG4gICAgfVxuICB9XG5cbiAgaWYgKGFjdGl2ZUNvbnN1bWVyLnByb2R1Y2VyTm9kZVtpZHhdICE9PSBub2RlKSB7XG4gICAgLy8gV2UncmUgYSBuZXcgZGVwZW5kZW5jeSBvZiB0aGUgY29uc3VtZXIgKGF0IGBpZHhgKS5cbiAgICBhY3RpdmVDb25zdW1lci5wcm9kdWNlck5vZGVbaWR4XSA9IG5vZGU7XG5cbiAgICAvLyBJZiB0aGUgYWN0aXZlIGNvbnN1bWVyIGlzIGxpdmUsIHRoZW4gYWRkIGl0IGFzIGEgbGl2ZSBjb25zdW1lci4gSWYgbm90LCB0aGVuIHVzZSAwIGFzIGFcbiAgICAvLyBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICBhY3RpdmVDb25zdW1lci5wcm9kdWNlckluZGV4T2ZUaGlzW2lkeF0gPSBjb25zdW1lcklzTGl2ZShhY3RpdmVDb25zdW1lcilcbiAgICAgID8gcHJvZHVjZXJBZGRMaXZlQ29uc3VtZXIobm9kZSwgYWN0aXZlQ29uc3VtZXIsIGlkeClcbiAgICAgIDogMDtcbiAgfVxuICBhY3RpdmVDb25zdW1lci5wcm9kdWNlckxhc3RSZWFkVmVyc2lvbltpZHhdID0gbm9kZS52ZXJzaW9uO1xufVxuXG4vKipcbiAqIEluY3JlbWVudCB0aGUgZ2xvYmFsIGVwb2NoIGNvdW50ZXIuXG4gKlxuICogQ2FsbGVkIGJ5IHNvdXJjZSBwcm9kdWNlcnMgKHRoYXQgaXMsIG5vdCBjb21wdXRlZHMpIHdoZW5ldmVyIHRoZWlyIHZhbHVlcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlckluY3JlbWVudEVwb2NoKCk6IHZvaWQge1xuICBlcG9jaCsrO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGlzIHByb2R1Y2VyJ3MgYHZlcnNpb25gIGlzIHVwLXRvLWRhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbihub2RlOiBSZWFjdGl2ZU5vZGUpOiB2b2lkIHtcbiAgaWYgKGNvbnN1bWVySXNMaXZlKG5vZGUpICYmICFub2RlLmRpcnR5KSB7XG4gICAgLy8gQSBsaXZlIGNvbnN1bWVyIHdpbGwgYmUgbWFya2VkIGRpcnR5IGJ5IHByb2R1Y2Vycywgc28gYSBjbGVhbiBzdGF0ZSBtZWFucyB0aGF0IGl0cyB2ZXJzaW9uXG4gICAgLy8gaXMgZ3VhcmFudGVlZCB0byBiZSB1cC10by1kYXRlLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghbm9kZS5kaXJ0eSAmJiBub2RlLmxhc3RDbGVhbkVwb2NoID09PSBlcG9jaCkge1xuICAgIC8vIEV2ZW4gbm9uLWxpdmUgY29uc3VtZXJzIGNhbiBza2lwIHBvbGxpbmcgaWYgdGhleSBwcmV2aW91c2x5IGZvdW5kIHRoZW1zZWx2ZXMgdG8gYmUgY2xlYW4gYXRcbiAgICAvLyB0aGUgY3VycmVudCBlcG9jaCwgc2luY2UgdGhlaXIgZGVwZW5kZW5jaWVzIGNvdWxkIG5vdCBwb3NzaWJseSBoYXZlIGNoYW5nZWQgKHN1Y2ggYSBjaGFuZ2VcbiAgICAvLyB3b3VsZCd2ZSBpbmNyZWFzZWQgdGhlIGVwb2NoKS5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIW5vZGUucHJvZHVjZXJNdXN0UmVjb21wdXRlKG5vZGUpICYmICFjb25zdW1lclBvbGxQcm9kdWNlcnNGb3JDaGFuZ2Uobm9kZSkpIHtcbiAgICAvLyBOb25lIG9mIG91ciBwcm9kdWNlcnMgcmVwb3J0IGEgY2hhbmdlIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhleSB3ZXJlIHJlYWQsIHNvIG5vXG4gICAgLy8gcmVjb21wdXRhdGlvbiBvZiBvdXIgdmFsdWUgaXMgbmVjZXNzYXJ5LCBhbmQgd2UgY2FuIGNvbnNpZGVyIG91cnNlbHZlcyBjbGVhbi5cbiAgICBub2RlLmRpcnR5ID0gZmFsc2U7XG4gICAgbm9kZS5sYXN0Q2xlYW5FcG9jaCA9IGVwb2NoO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG5vZGUucHJvZHVjZXJSZWNvbXB1dGVWYWx1ZShub2RlKTtcblxuICAvLyBBZnRlciByZWNvbXB1dGluZyB0aGUgdmFsdWUsIHdlJ3JlIG5vIGxvbmdlciBkaXJ0eS5cbiAgbm9kZS5kaXJ0eSA9IGZhbHNlO1xuICBub2RlLmxhc3RDbGVhbkVwb2NoID0gZXBvY2g7XG59XG5cbi8qKlxuICogUHJvcGFnYXRlIGEgZGlydHkgbm90aWZpY2F0aW9uIHRvIGxpdmUgY29uc3VtZXJzIG9mIHRoaXMgcHJvZHVjZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlck5vdGlmeUNvbnN1bWVycyhub2RlOiBSZWFjdGl2ZU5vZGUpOiB2b2lkIHtcbiAgaWYgKG5vZGUubGl2ZUNvbnN1bWVyTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gUHJldmVudCBzaWduYWwgcmVhZHMgd2hlbiB3ZSdyZSB1cGRhdGluZyB0aGUgZ3JhcGhcbiAgY29uc3QgcHJldiA9IGluTm90aWZpY2F0aW9uUGhhc2U7XG4gIGluTm90aWZpY2F0aW9uUGhhc2UgPSB0cnVlO1xuICB0cnkge1xuICAgIGZvciAoY29uc3QgY29uc3VtZXIgb2Ygbm9kZS5saXZlQ29uc3VtZXJOb2RlKSB7XG4gICAgICBpZiAoIWNvbnN1bWVyLmRpcnR5KSB7XG4gICAgICAgIGNvbnN1bWVyTWFya0RpcnR5KGNvbnN1bWVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgaW5Ob3RpZmljYXRpb25QaGFzZSA9IHByZXY7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoaXMgYFJlYWN0aXZlTm9kZWAgaW4gaXRzIHByb2R1Y2VyIGNhcGFjaXR5IGlzIGN1cnJlbnRseSBhbGxvd2VkIHRvIGluaXRpYXRlIHVwZGF0ZXMsXG4gKiBiYXNlZCBvbiB0aGUgY3VycmVudCBjb25zdW1lciBjb250ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjZXJVcGRhdGVzQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGFjdGl2ZUNvbnN1bWVyPy5jb25zdW1lckFsbG93U2lnbmFsV3JpdGVzICE9PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVyTWFya0RpcnR5KG5vZGU6IFJlYWN0aXZlTm9kZSk6IHZvaWQge1xuICBub2RlLmRpcnR5ID0gdHJ1ZTtcbiAgcHJvZHVjZXJOb3RpZnlDb25zdW1lcnMobm9kZSk7XG4gIG5vZGUuY29uc3VtZXJNYXJrZWREaXJ0eT8uKG5vZGUpO1xufVxuXG4vKipcbiAqIFByZXBhcmUgdGhpcyBjb25zdW1lciB0byBydW4gYSBjb21wdXRhdGlvbiBpbiBpdHMgcmVhY3RpdmUgY29udGV4dC5cbiAqXG4gKiBNdXN0IGJlIGNhbGxlZCBieSBzdWJjbGFzc2VzIHdoaWNoIHJlcHJlc2VudCByZWFjdGl2ZSBjb21wdXRhdGlvbnMsIGJlZm9yZSB0aG9zZSBjb21wdXRhdGlvbnNcbiAqIGJlZ2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbihub2RlOiBSZWFjdGl2ZU5vZGUgfCBudWxsKTogUmVhY3RpdmVOb2RlIHwgbnVsbCB7XG4gIG5vZGUgJiYgKG5vZGUubmV4dFByb2R1Y2VySW5kZXggPSAwKTtcbiAgcmV0dXJuIHNldEFjdGl2ZUNvbnN1bWVyKG5vZGUpO1xufVxuXG4vKipcbiAqIEZpbmFsaXplIHRoaXMgY29uc3VtZXIncyBzdGF0ZSBhZnRlciBhIHJlYWN0aXZlIGNvbXB1dGF0aW9uIGhhcyBydW4uXG4gKlxuICogTXVzdCBiZSBjYWxsZWQgYnkgc3ViY2xhc3NlcyB3aGljaCByZXByZXNlbnQgcmVhY3RpdmUgY29tcHV0YXRpb25zLCBhZnRlciB0aG9zZSBjb21wdXRhdGlvbnNcbiAqIGhhdmUgZmluaXNoZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lckFmdGVyQ29tcHV0YXRpb24oXG4gIG5vZGU6IFJlYWN0aXZlTm9kZSB8IG51bGwsXG4gIHByZXZDb25zdW1lcjogUmVhY3RpdmVOb2RlIHwgbnVsbCxcbik6IHZvaWQge1xuICBzZXRBY3RpdmVDb25zdW1lcihwcmV2Q29uc3VtZXIpO1xuXG4gIGlmIChcbiAgICAhbm9kZSB8fFxuICAgIG5vZGUucHJvZHVjZXJOb2RlID09PSB1bmRlZmluZWQgfHxcbiAgICBub2RlLnByb2R1Y2VySW5kZXhPZlRoaXMgPT09IHVuZGVmaW5lZCB8fFxuICAgIG5vZGUucHJvZHVjZXJMYXN0UmVhZFZlcnNpb24gPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY29uc3VtZXJJc0xpdmUobm9kZSkpIHtcbiAgICAvLyBGb3IgbGl2ZSBjb25zdW1lcnMsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBwcm9kdWNlciAtPiBjb25zdW1lciBlZGdlIGZvciBhbnkgc3RhbGUgcHJvZHVjZXJzXG4gICAgLy8gd2hpY2ggd2VyZW4ndCBkZXBlbmRlbmNpZXMgYWZ0ZXIgdGhlIHJlY29tcHV0YXRpb24uXG4gICAgZm9yIChsZXQgaSA9IG5vZGUubmV4dFByb2R1Y2VySW5kZXg7IGkgPCBub2RlLnByb2R1Y2VyTm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgcHJvZHVjZXJSZW1vdmVMaXZlQ29uc3VtZXJBdEluZGV4KG5vZGUucHJvZHVjZXJOb2RlW2ldLCBub2RlLnByb2R1Y2VySW5kZXhPZlRoaXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRydW5jYXRlIHRoZSBwcm9kdWNlciB0cmFja2luZyBhcnJheXMuXG4gIC8vIFBlcmYgbm90ZTogdGhpcyBpcyBlc3NlbnRpYWxseSB0cnVuY2F0aW5nIHRoZSBsZW5ndGggdG8gYG5vZGUubmV4dFByb2R1Y2VySW5kZXhgLCBidXRcbiAgLy8gYmVuY2htYXJraW5nIGhhcyBzaG93biB0aGF0IGluZGl2aWR1YWwgcG9wIG9wZXJhdGlvbnMgYXJlIGZhc3Rlci5cbiAgd2hpbGUgKG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aCA+IG5vZGUubmV4dFByb2R1Y2VySW5kZXgpIHtcbiAgICBub2RlLnByb2R1Y2VyTm9kZS5wb3AoKTtcbiAgICBub2RlLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uLnBvcCgpO1xuICAgIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpcy5wb3AoKTtcbiAgfVxufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRoaXMgY29uc3VtZXIgaGFzIGFueSBkZXBlbmRlbmNpZXMgd2hpY2ggaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWVcbiAqIHRoZXkgd2VyZSByZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZXJQb2xsUHJvZHVjZXJzRm9yQ2hhbmdlKG5vZGU6IFJlYWN0aXZlTm9kZSk6IGJvb2xlYW4ge1xuICBhc3NlcnRDb25zdW1lck5vZGUobm9kZSk7XG5cbiAgLy8gUG9sbCBwcm9kdWNlcnMgZm9yIGNoYW5nZS5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb2R1Y2VyTm9kZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHByb2R1Y2VyID0gbm9kZS5wcm9kdWNlck5vZGVbaV07XG4gICAgY29uc3Qgc2VlblZlcnNpb24gPSBub2RlLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uW2ldO1xuXG4gICAgLy8gRmlyc3QgY2hlY2sgdGhlIHZlcnNpb25zLiBBIG1pc21hdGNoIG1lYW5zIHRoYXQgdGhlIHByb2R1Y2VyJ3MgdmFsdWUgaXMga25vd24gdG8gaGF2ZVxuICAgIC8vIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSB3ZSByZWFkIGl0LlxuICAgIGlmIChzZWVuVmVyc2lvbiAhPT0gcHJvZHVjZXIudmVyc2lvbikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gVGhlIHByb2R1Y2VyJ3MgdmVyc2lvbiBpcyB0aGUgc2FtZSBhcyB0aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQsIGJ1dCBpdCBtaWdodCBpdHNlbGYgYmVcbiAgICAvLyBzdGFsZS4gRm9yY2UgdGhlIHByb2R1Y2VyIHRvIHJlY29tcHV0ZSBpdHMgdmVyc2lvbiAoY2FsY3VsYXRpbmcgYSBuZXcgdmFsdWUgaWYgbmVjZXNzYXJ5KS5cbiAgICBwcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbihwcm9kdWNlcik7XG5cbiAgICAvLyBOb3cgd2hlbiB3ZSBkbyB0aGlzIGNoZWNrLCBgcHJvZHVjZXIudmVyc2lvbmAgaXMgZ3VhcmFudGVlZCB0byBiZSB1cCB0byBkYXRlLCBzbyBpZiB0aGVcbiAgICAvLyB2ZXJzaW9ucyBzdGlsbCBtYXRjaCB0aGVuIGl0IGhhcyBub3QgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQuXG4gICAgaWYgKHNlZW5WZXJzaW9uICE9PSBwcm9kdWNlci52ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRGlzY29ubmVjdCB0aGlzIGNvbnN1bWVyIGZyb20gdGhlIGdyYXBoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZXJEZXN0cm95KG5vZGU6IFJlYWN0aXZlTm9kZSk6IHZvaWQge1xuICBhc3NlcnRDb25zdW1lck5vZGUobm9kZSk7XG4gIGlmIChjb25zdW1lcklzTGl2ZShub2RlKSkge1xuICAgIC8vIERyb3AgYWxsIGNvbm5lY3Rpb25zIGZyb20gdGhlIGdyYXBoIHRvIHRoaXMgbm9kZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwcm9kdWNlclJlbW92ZUxpdmVDb25zdW1lckF0SW5kZXgobm9kZS5wcm9kdWNlck5vZGVbaV0sIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVHJ1bmNhdGUgYWxsIHRoZSBhcnJheXMgdG8gZHJvcCBhbGwgY29ubmVjdGlvbiBmcm9tIHRoaXMgbm9kZSB0byB0aGUgZ3JhcGguXG4gIG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aCA9XG4gICAgbm9kZS5wcm9kdWNlckxhc3RSZWFkVmVyc2lvbi5sZW5ndGggPVxuICAgIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpcy5sZW5ndGggPVxuICAgICAgMDtcbiAgaWYgKG5vZGUubGl2ZUNvbnN1bWVyTm9kZSkge1xuICAgIG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGggPSBub2RlLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzIS5sZW5ndGggPSAwO1xuICB9XG59XG5cbi8qKlxuICogQWRkIGBjb25zdW1lcmAgYXMgYSBsaXZlIGNvbnN1bWVyIG9mIHRoaXMgbm9kZS5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgcG90ZW50aWFsbHkgdHJhbnNpdGl2ZS4gSWYgdGhpcyBub2RlIGJlY29tZXMgbGl2ZSwgdGhlbiBpdCBiZWNvbWVzXG4gKiBhIGxpdmUgY29uc3VtZXIgb2YgYWxsIG9mIGl0cyBjdXJyZW50IHByb2R1Y2Vycy5cbiAqL1xuZnVuY3Rpb24gcHJvZHVjZXJBZGRMaXZlQ29uc3VtZXIoXG4gIG5vZGU6IFJlYWN0aXZlTm9kZSxcbiAgY29uc3VtZXI6IFJlYWN0aXZlTm9kZSxcbiAgaW5kZXhPZlRoaXM6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGFzc2VydFByb2R1Y2VyTm9kZShub2RlKTtcbiAgaWYgKG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGggPT09IDAgJiYgaXNDb25zdW1lck5vZGUobm9kZSkpIHtcbiAgICAvLyBXaGVuIGdvaW5nIGZyb20gMCB0byAxIGxpdmUgY29uc3VtZXJzLCB3ZSBiZWNvbWUgYSBsaXZlIGNvbnN1bWVyIHRvIG91ciBwcm9kdWNlcnMuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb2R1Y2VyTm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzW2ldID0gcHJvZHVjZXJBZGRMaXZlQ29uc3VtZXIobm9kZS5wcm9kdWNlck5vZGVbaV0sIG5vZGUsIGkpO1xuICAgIH1cbiAgfVxuICBub2RlLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzLnB1c2goaW5kZXhPZlRoaXMpO1xuICByZXR1cm4gbm9kZS5saXZlQ29uc3VtZXJOb2RlLnB1c2goY29uc3VtZXIpIC0gMTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGxpdmUgY29uc3VtZXIgYXQgYGlkeGAuXG4gKi9cbmZ1bmN0aW9uIHByb2R1Y2VyUmVtb3ZlTGl2ZUNvbnN1bWVyQXRJbmRleChub2RlOiBSZWFjdGl2ZU5vZGUsIGlkeDogbnVtYmVyKTogdm9pZCB7XG4gIGFzc2VydFByb2R1Y2VyTm9kZShub2RlKTtcblxuICBpZiAodHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlICYmIGlkeCA+PSBub2RlLmxpdmVDb25zdW1lck5vZGUubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEFzc2VydGlvbiBlcnJvcjogYWN0aXZlIGNvbnN1bWVyIGluZGV4ICR7aWR4fSBpcyBvdXQgb2YgYm91bmRzIG9mICR7bm9kZS5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aH0gY29uc3VtZXJzKWAsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChub2RlLmxpdmVDb25zdW1lck5vZGUubGVuZ3RoID09PSAxICYmIGlzQ29uc3VtZXJOb2RlKG5vZGUpKSB7XG4gICAgLy8gV2hlbiByZW1vdmluZyB0aGUgbGFzdCBsaXZlIGNvbnN1bWVyLCB3ZSB3aWxsIG5vIGxvbmdlciBiZSBsaXZlLiBXZSBuZWVkIHRvIHJlbW92ZVxuICAgIC8vIG91cnNlbHZlcyBmcm9tIG91ciBwcm9kdWNlcnMnIHRyYWNraW5nICh3aGljaCBtYXkgY2F1c2UgY29uc3VtZXItcHJvZHVjZXJzIHRvIGxvc2VcbiAgICAvLyBsaXZlbmVzcyBhcyB3ZWxsKS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvZHVjZXJOb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwcm9kdWNlclJlbW92ZUxpdmVDb25zdW1lckF0SW5kZXgobm9kZS5wcm9kdWNlck5vZGVbaV0sIG5vZGUucHJvZHVjZXJJbmRleE9mVGhpc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTW92ZSB0aGUgbGFzdCB2YWx1ZSBvZiBgbGl2ZUNvbnN1bWVyc2AgaW50byBgaWR4YC4gTm90ZSB0aGF0IGlmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZVxuICAvLyBsaXZlIGNvbnN1bWVyLCB0aGlzIGlzIGEgbm8tb3AuXG4gIGNvbnN0IGxhc3RJZHggPSBub2RlLmxpdmVDb25zdW1lck5vZGUubGVuZ3RoIC0gMTtcbiAgbm9kZS5saXZlQ29uc3VtZXJOb2RlW2lkeF0gPSBub2RlLmxpdmVDb25zdW1lck5vZGVbbGFzdElkeF07XG4gIG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXNbaWR4XSA9IG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXNbbGFzdElkeF07XG5cbiAgLy8gVHJ1bmNhdGUgdGhlIGFycmF5LlxuICBub2RlLmxpdmVDb25zdW1lck5vZGUubGVuZ3RoLS07XG4gIG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXMubGVuZ3RoLS07XG5cbiAgLy8gSWYgdGhlIGluZGV4IGlzIHN0aWxsIHZhbGlkLCB0aGVuIHdlIG5lZWQgdG8gZml4IHRoZSBpbmRleCBwb2ludGVyIGZyb20gdGhlIHByb2R1Y2VyIHRvIHRoaXNcbiAgLy8gY29uc3VtZXIsIGFuZCB1cGRhdGUgaXQgZnJvbSBgbGFzdElkeGAgdG8gYGlkeGAgKGFjY291bnRpbmcgZm9yIHRoZSBtb3ZlIGFib3ZlKS5cbiAgaWYgKGlkeCA8IG5vZGUubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGgpIHtcbiAgICBjb25zdCBpZHhQcm9kdWNlciA9IG5vZGUubGl2ZUNvbnN1bWVySW5kZXhPZlRoaXNbaWR4XTtcbiAgICBjb25zdCBjb25zdW1lciA9IG5vZGUubGl2ZUNvbnN1bWVyTm9kZVtpZHhdO1xuICAgIGFzc2VydENvbnN1bWVyTm9kZShjb25zdW1lcik7XG4gICAgY29uc3VtZXIucHJvZHVjZXJJbmRleE9mVGhpc1tpZHhQcm9kdWNlcl0gPSBpZHg7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3VtZXJJc0xpdmUobm9kZTogUmVhY3RpdmVOb2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiBub2RlLmNvbnN1bWVySXNBbHdheXNMaXZlIHx8IChub2RlPy5saXZlQ29uc3VtZXJOb2RlPy5sZW5ndGggPz8gMCkgPiAwO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRDb25zdW1lck5vZGUobm9kZTogUmVhY3RpdmVOb2RlKTogYXNzZXJ0cyBub2RlIGlzIENvbnN1bWVyTm9kZSB7XG4gIG5vZGUucHJvZHVjZXJOb2RlID8/PSBbXTtcbiAgbm9kZS5wcm9kdWNlckluZGV4T2ZUaGlzID8/PSBbXTtcbiAgbm9kZS5wcm9kdWNlckxhc3RSZWFkVmVyc2lvbiA/Pz0gW107XG59XG5cbmZ1bmN0aW9uIGFzc2VydFByb2R1Y2VyTm9kZShub2RlOiBSZWFjdGl2ZU5vZGUpOiBhc3NlcnRzIG5vZGUgaXMgUHJvZHVjZXJOb2RlIHtcbiAgbm9kZS5saXZlQ29uc3VtZXJOb2RlID8/PSBbXTtcbiAgbm9kZS5saXZlQ29uc3VtZXJJbmRleE9mVGhpcyA/Pz0gW107XG59XG5cbmZ1bmN0aW9uIGlzQ29uc3VtZXJOb2RlKG5vZGU6IFJlYWN0aXZlTm9kZSk6IG5vZGUgaXMgQ29uc3VtZXJOb2RlIHtcbiAgcmV0dXJuIG5vZGUucHJvZHVjZXJOb2RlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=