@angular/core 13.0.0-next.7 → 13.0.0-rc.1

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 (542) hide show
  1. package/core.d.ts +599 -963
  2. package/esm2020/core.mjs +5 -0
  3. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  4. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  5. package/esm2020/src/application_init.mjs +140 -0
  6. package/esm2020/src/application_module.mjs +135 -0
  7. package/esm2020/src/application_ref.mjs +738 -0
  8. package/{esm2015/src/application_tokens.js → esm2020/src/application_tokens.mjs} +0 -0
  9. package/esm2020/src/change_detection/change_detection.mjs +31 -0
  10. package/esm2020/src/change_detection/change_detection_util.mjs +64 -0
  11. package/esm2020/src/change_detection/change_detector_ref.mjs +89 -0
  12. package/{esm2015/src/change_detection/constants.js → esm2020/src/change_detection/constants.mjs} +0 -0
  13. package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +666 -0
  14. package/{esm2015/src/change_detection/differs/default_keyvalue_differ.js → esm2020/src/change_detection/differs/default_keyvalue_differ.mjs} +0 -0
  15. package/{esm2015/src/change_detection/differs/iterable_differs.js → esm2020/src/change_detection/differs/iterable_differs.mjs} +0 -0
  16. package/{esm2015/src/change_detection/differs/keyvalue_differs.js → esm2020/src/change_detection/differs/keyvalue_differs.mjs} +0 -0
  17. package/{esm2015/src/change_detection/pipe_transform.js → esm2020/src/change_detection/pipe_transform.mjs} +0 -0
  18. package/esm2020/src/change_detection.mjs +14 -0
  19. package/esm2020/src/codegen_private_exports.mjs +11 -0
  20. package/{esm2015/src/compiler/compiler_facade.js → esm2020/src/compiler/compiler_facade.mjs} +0 -0
  21. package/{esm2015/src/compiler/compiler_facade_interface.js → esm2020/src/compiler/compiler_facade_interface.mjs} +1 -1
  22. package/esm2020/src/console.mjs +26 -0
  23. package/esm2020/src/core.mjs +52 -0
  24. package/esm2020/src/core_private_export.mjs +34 -0
  25. package/esm2020/src/core_render3_private_export.mjs +46 -0
  26. package/esm2020/src/debug/debug_node.mjs +625 -0
  27. package/{esm2015/src/debug/proxy.js → esm2020/src/debug/proxy.mjs} +0 -0
  28. package/{esm2015/src/di/forward_ref.js → esm2020/src/di/forward_ref.mjs} +0 -0
  29. package/{esm2015/src/di/index.js → esm2020/src/di/index.mjs} +0 -0
  30. package/{esm2015/src/di/inject_switch.js → esm2020/src/di/inject_switch.mjs} +0 -0
  31. package/esm2020/src/di/injectable.mjs +27 -0
  32. package/esm2020/src/di/injection_token.mjs +82 -0
  33. package/esm2020/src/di/injector.mjs +323 -0
  34. package/esm2020/src/di/injector_compatibility.mjs +185 -0
  35. package/{esm2015/src/di/injector_marker.js → esm2020/src/di/injector_marker.mjs} +0 -0
  36. package/{esm2015/src/di/injector_token.js → esm2020/src/di/injector_token.mjs} +0 -0
  37. package/{esm2015/src/di/interface/defs.js → esm2020/src/di/interface/defs.mjs} +0 -0
  38. package/{esm2015/src/di/interface/injector.js → esm2020/src/di/interface/injector.mjs} +0 -0
  39. package/{esm2015/src/di/interface/provider.js → esm2020/src/di/interface/provider.mjs} +0 -0
  40. package/{esm2015/src/di/jit/environment.js → esm2020/src/di/jit/environment.mjs} +0 -0
  41. package/esm2020/src/di/jit/injectable.mjs +94 -0
  42. package/{esm2015/src/di/jit/util.js → esm2020/src/di/jit/util.mjs} +0 -0
  43. package/esm2020/src/di/metadata.mjs +60 -0
  44. package/esm2020/src/di/metadata_attr.mjs +24 -0
  45. package/{esm2015/src/di/null_injector.js → esm2020/src/di/null_injector.mjs} +0 -0
  46. package/{esm2015/src/di/provider_token.js → esm2020/src/di/provider_token.mjs} +0 -0
  47. package/{esm2015/src/di/r3_injector.js → esm2020/src/di/r3_injector.mjs} +0 -0
  48. package/{esm2015/src/di/reflective_errors.js → esm2020/src/di/reflective_errors.mjs} +0 -0
  49. package/{esm2015/src/di/reflective_injector.js → esm2020/src/di/reflective_injector.mjs} +0 -0
  50. package/{esm2015/src/di/reflective_key.js → esm2020/src/di/reflective_key.mjs} +0 -0
  51. package/{esm2015/src/di/reflective_provider.js → esm2020/src/di/reflective_provider.mjs} +0 -0
  52. package/{esm2015/src/di/scope.js → esm2020/src/di/scope.mjs} +0 -0
  53. package/esm2020/src/di/util.mjs +51 -0
  54. package/{esm2015/src/di.js → esm2020/src/di.mjs} +0 -0
  55. package/{esm2015/src/error_handler.js → esm2020/src/error_handler.mjs} +0 -0
  56. package/{esm2015/src/errors.js → esm2020/src/errors.mjs} +0 -0
  57. package/esm2020/src/event_emitter.mjs +53 -0
  58. package/esm2020/src/i18n/locale_data_api.mjs +132 -0
  59. package/esm2020/src/i18n/locale_en.mjs +17 -0
  60. package/{esm2015/src/i18n/localization.js → esm2020/src/i18n/localization.mjs} +0 -0
  61. package/{esm2015/src/i18n/tokens.js → esm2020/src/i18n/tokens.mjs} +6 -6
  62. package/{esm2015/src/interface/lifecycle_hooks.js → esm2020/src/interface/lifecycle_hooks.mjs} +0 -0
  63. package/{esm2015/src/interface/simple_change.js → esm2020/src/interface/simple_change.mjs} +0 -0
  64. package/{esm2015/src/interface/type.js → esm2020/src/interface/type.mjs} +0 -0
  65. package/{esm2015/src/ivy_switch.js → esm2020/src/ivy_switch.mjs} +2 -2
  66. package/esm2020/src/linker/compiler.mjs +136 -0
  67. package/{esm2015/src/linker/component_factory.js → esm2020/src/linker/component_factory.mjs} +0 -0
  68. package/{esm2015/src/linker/component_factory_resolver.js → esm2020/src/linker/component_factory_resolver.mjs} +0 -0
  69. package/esm2020/src/linker/element_ref.mjs +59 -0
  70. package/esm2020/src/linker/ng_module_factory.mjs +29 -0
  71. package/esm2020/src/linker/ng_module_factory_loader.mjs +42 -0
  72. package/esm2020/src/linker/ng_module_factory_loader_impl.mjs +10 -0
  73. package/{esm2015/src/linker/ng_module_factory_registration.js → esm2020/src/linker/ng_module_factory_registration.mjs} +2 -2
  74. package/{esm2015/src/linker/query_list.js → esm2020/src/linker/query_list.mjs} +0 -0
  75. package/{esm2015/src/linker/template_ref.js → esm2020/src/linker/template_ref.mjs} +2 -2
  76. package/esm2020/src/linker/view_container_ref.mjs +283 -0
  77. package/{esm2015/src/linker/view_ref.js → esm2020/src/linker/view_ref.mjs} +0 -0
  78. package/esm2020/src/linker.mjs +19 -0
  79. package/esm2020/src/metadata/di.mjs +108 -0
  80. package/esm2020/src/metadata/directives.mjs +112 -0
  81. package/{esm2015/src/metadata/do_boostrap.js → esm2020/src/metadata/do_boostrap.mjs} +0 -0
  82. package/esm2020/src/metadata/ng_module.mjs +42 -0
  83. package/{esm2015/src/metadata/ng_module_def.js → esm2020/src/metadata/ng_module_def.mjs} +0 -0
  84. package/{esm2015/src/metadata/resource_loading.js → esm2020/src/metadata/resource_loading.mjs} +0 -0
  85. package/{esm2015/src/metadata/schema.js → esm2020/src/metadata/schema.mjs} +0 -0
  86. package/{esm2015/src/metadata/view.js → esm2020/src/metadata/view.mjs} +0 -0
  87. package/{esm2015/src/metadata.js → esm2020/src/metadata.mjs} +0 -0
  88. package/{esm2015/src/platform_core_providers.js → esm2020/src/platform_core_providers.mjs} +0 -0
  89. package/{esm2015/src/r3_symbols.js → esm2020/src/r3_symbols.mjs} +0 -0
  90. package/{esm2015/src/reflection/platform_reflection_capabilities.js → esm2020/src/reflection/platform_reflection_capabilities.mjs} +0 -0
  91. package/{esm2015/src/reflection/reflection.js → esm2020/src/reflection/reflection.mjs} +0 -0
  92. package/{esm2015/src/reflection/reflection_capabilities.js → esm2020/src/reflection/reflection_capabilities.mjs} +3 -3
  93. package/{esm2015/src/reflection/reflector.js → esm2020/src/reflection/reflector.mjs} +0 -0
  94. package/{esm2015/src/reflection/types.js → esm2020/src/reflection/types.mjs} +0 -0
  95. package/{esm2015/src/render/api.js → esm2020/src/render/api.mjs} +2 -2
  96. package/{esm2015/src/render/api_flags.js → esm2020/src/render/api_flags.mjs} +0 -0
  97. package/{esm2015/src/render.js → esm2020/src/render.mjs} +0 -0
  98. package/{esm2015/src/render3/assert.js → esm2020/src/render3/assert.mjs} +0 -0
  99. package/{esm2015/src/render3/bindings.js → esm2020/src/render3/bindings.mjs} +0 -0
  100. package/{esm2015/src/render3/collect_native_nodes.js → esm2020/src/render3/collect_native_nodes.mjs} +0 -0
  101. package/esm2020/src/render3/component.mjs +204 -0
  102. package/{esm2015/src/render3/component_ref.js → esm2020/src/render3/component_ref.mjs} +2 -2
  103. package/{esm2015/src/render3/context_discovery.js → esm2020/src/render3/context_discovery.mjs} +0 -0
  104. package/{esm2015/src/render3/definition.js → esm2020/src/render3/definition.mjs} +0 -0
  105. package/{esm2015/src/render3/definition_factory.js → esm2020/src/render3/definition_factory.mjs} +0 -0
  106. package/{esm2015/src/render3/di.js → esm2020/src/render3/di.mjs} +0 -0
  107. package/{esm2015/src/render3/di_setup.js → esm2020/src/render3/di_setup.mjs} +0 -0
  108. package/{esm2015/src/render3/error_code.js → esm2020/src/render3/error_code.mjs} +0 -0
  109. package/{esm2015/src/render3/errors.js → esm2020/src/render3/errors.mjs} +0 -0
  110. package/{esm2015/src/render3/errors_di.js → esm2020/src/render3/errors_di.mjs} +0 -0
  111. package/{esm2015/src/render3/features/copy_definition_feature.js → esm2020/src/render3/features/copy_definition_feature.mjs} +0 -0
  112. package/{esm2015/src/render3/features/inherit_definition_feature.js → esm2020/src/render3/features/inherit_definition_feature.mjs} +0 -0
  113. package/esm2020/src/render3/features/ng_onchanges_feature.mjs +92 -0
  114. package/{esm2015/src/render3/features/providers_feature.js → esm2020/src/render3/features/providers_feature.mjs} +0 -0
  115. package/{esm2015/src/render3/fields.js → esm2020/src/render3/fields.mjs} +0 -0
  116. package/{esm2015/src/render3/global_utils_api.js → esm2020/src/render3/global_utils_api.mjs} +0 -0
  117. package/{esm2015/src/render3/hooks.js → esm2020/src/render3/hooks.mjs} +0 -0
  118. package/{esm2015/src/render3/i18n/i18n_apply.js → esm2020/src/render3/i18n/i18n_apply.mjs} +0 -0
  119. package/{esm2015/src/render3/i18n/i18n_debug.js → esm2020/src/render3/i18n/i18n_debug.mjs} +0 -0
  120. package/{esm2015/src/render3/i18n/i18n_insert_before_index.js → esm2020/src/render3/i18n/i18n_insert_before_index.mjs} +0 -0
  121. package/{esm2015/src/render3/i18n/i18n_locale_id.js → esm2020/src/render3/i18n/i18n_locale_id.mjs} +0 -0
  122. package/{esm2015/src/render3/i18n/i18n_parse.js → esm2020/src/render3/i18n/i18n_parse.mjs} +0 -0
  123. package/{esm2015/src/render3/i18n/i18n_postprocess.js → esm2020/src/render3/i18n/i18n_postprocess.mjs} +0 -0
  124. package/{esm2015/src/render3/i18n/i18n_tree_shaking.js → esm2020/src/render3/i18n/i18n_tree_shaking.mjs} +0 -0
  125. package/{esm2015/src/render3/i18n/i18n_util.js → esm2020/src/render3/i18n/i18n_util.mjs} +0 -0
  126. package/{esm2015/src/render3/index.js → esm2020/src/render3/index.mjs} +0 -0
  127. package/{esm2015/src/render3/instructions/advance.js → esm2020/src/render3/instructions/advance.mjs} +0 -0
  128. package/{esm2015/src/render3/instructions/all.js → esm2020/src/render3/instructions/all.mjs} +0 -0
  129. package/{esm2015/src/render3/instructions/attribute.js → esm2020/src/render3/instructions/attribute.mjs} +0 -0
  130. package/{esm2015/src/render3/instructions/attribute_interpolation.js → esm2020/src/render3/instructions/attribute_interpolation.mjs} +0 -0
  131. package/{esm2015/src/render3/instructions/change_detection.js → esm2020/src/render3/instructions/change_detection.mjs} +0 -0
  132. package/{esm2015/src/render3/instructions/class_map_interpolation.js → esm2020/src/render3/instructions/class_map_interpolation.mjs} +0 -0
  133. package/{esm2015/src/render3/instructions/di.js → esm2020/src/render3/instructions/di.mjs} +0 -0
  134. package/{esm2015/src/render3/instructions/di_attr.js → esm2020/src/render3/instructions/di_attr.mjs} +0 -0
  135. package/{esm2015/src/render3/instructions/element.js → esm2020/src/render3/instructions/element.mjs} +0 -0
  136. package/{esm2015/src/render3/instructions/element_container.js → esm2020/src/render3/instructions/element_container.mjs} +0 -0
  137. package/{esm2015/src/render3/instructions/get_current_view.js → esm2020/src/render3/instructions/get_current_view.mjs} +0 -0
  138. package/{esm2015/src/render3/instructions/host_property.js → esm2020/src/render3/instructions/host_property.mjs} +0 -0
  139. package/{esm2015/src/render3/instructions/i18n.js → esm2020/src/render3/instructions/i18n.mjs} +0 -0
  140. package/{esm2015/src/render3/instructions/i18n_icu_container_visitor.js → esm2020/src/render3/instructions/i18n_icu_container_visitor.mjs} +0 -0
  141. package/{esm2015/src/render3/instructions/interpolation.js → esm2020/src/render3/instructions/interpolation.mjs} +0 -0
  142. package/{esm2015/src/render3/instructions/listener.js → esm2020/src/render3/instructions/listener.mjs} +0 -0
  143. package/{esm2015/src/render3/instructions/lview_debug.js → esm2020/src/render3/instructions/lview_debug.mjs} +0 -0
  144. package/{esm2015/src/render3/instructions/namespace.js → esm2020/src/render3/instructions/namespace.mjs} +0 -0
  145. package/{esm2015/src/render3/instructions/next_context.js → esm2020/src/render3/instructions/next_context.mjs} +0 -0
  146. package/{esm2015/src/render3/instructions/projection.js → esm2020/src/render3/instructions/projection.mjs} +0 -0
  147. package/{esm2015/src/render3/instructions/property.js → esm2020/src/render3/instructions/property.mjs} +0 -0
  148. package/{esm2015/src/render3/instructions/property_interpolation.js → esm2020/src/render3/instructions/property_interpolation.mjs} +0 -0
  149. package/esm2020/src/render3/instructions/shared.mjs +1811 -0
  150. package/{esm2015/src/render3/instructions/storage.js → esm2020/src/render3/instructions/storage.mjs} +0 -0
  151. package/{esm2015/src/render3/instructions/style_map_interpolation.js → esm2020/src/render3/instructions/style_map_interpolation.mjs} +0 -0
  152. package/{esm2015/src/render3/instructions/style_prop_interpolation.js → esm2020/src/render3/instructions/style_prop_interpolation.mjs} +0 -0
  153. package/{esm2015/src/render3/instructions/styling.js → esm2020/src/render3/instructions/styling.mjs} +0 -0
  154. package/{esm2015/src/render3/instructions/template.js → esm2020/src/render3/instructions/template.mjs} +0 -0
  155. package/{esm2015/src/render3/instructions/text.js → esm2020/src/render3/instructions/text.mjs} +0 -0
  156. package/{esm2015/src/render3/instructions/text_interpolation.js → esm2020/src/render3/instructions/text_interpolation.mjs} +0 -0
  157. package/{esm2015/src/render3/interfaces/container.js → esm2020/src/render3/interfaces/container.mjs} +0 -0
  158. package/{esm2015/src/render3/interfaces/context.js → esm2020/src/render3/interfaces/context.mjs} +0 -0
  159. package/{esm2015/src/render3/interfaces/definition.js → esm2020/src/render3/interfaces/definition.mjs} +0 -0
  160. package/{esm2015/src/render3/interfaces/document.js → esm2020/src/render3/interfaces/document.mjs} +0 -0
  161. package/{esm2015/src/render3/interfaces/i18n.js → esm2020/src/render3/interfaces/i18n.mjs} +0 -0
  162. package/{esm2015/src/render3/interfaces/injector.js → esm2020/src/render3/interfaces/injector.mjs} +0 -0
  163. package/{esm2015/src/render3/interfaces/node.js → esm2020/src/render3/interfaces/node.mjs} +0 -0
  164. package/{esm2015/src/render3/interfaces/player.js → esm2020/src/render3/interfaces/player.mjs} +0 -0
  165. package/{esm2015/src/render3/interfaces/projection.js → esm2020/src/render3/interfaces/projection.mjs} +0 -0
  166. package/{esm2015/src/render3/interfaces/public_definitions.js → esm2020/src/render3/interfaces/public_definitions.mjs} +0 -0
  167. package/{esm2015/src/render3/interfaces/query.js → esm2020/src/render3/interfaces/query.mjs} +0 -0
  168. package/esm2020/src/render3/interfaces/renderer.mjs +27 -0
  169. package/{esm2015/src/render3/interfaces/renderer_dom.js → esm2020/src/render3/interfaces/renderer_dom.mjs} +0 -0
  170. package/{esm2015/src/render3/interfaces/sanitization.js → esm2020/src/render3/interfaces/sanitization.mjs} +0 -0
  171. package/{esm2015/src/render3/interfaces/styling.js → esm2020/src/render3/interfaces/styling.mjs} +0 -0
  172. package/{esm2015/src/render3/interfaces/type_checks.js → esm2020/src/render3/interfaces/type_checks.mjs} +0 -0
  173. package/{esm2015/src/render3/interfaces/view.js → esm2020/src/render3/interfaces/view.mjs} +0 -0
  174. package/esm2020/src/render3/jit/directive.mjs +325 -0
  175. package/esm2020/src/render3/jit/environment.mjs +165 -0
  176. package/{esm2015/src/render3/jit/jit_options.js → esm2020/src/render3/jit/jit_options.mjs} +0 -0
  177. package/{esm2015/src/render3/jit/module.js → esm2020/src/render3/jit/module.mjs} +0 -0
  178. package/esm2020/src/render3/jit/partial.mjs +104 -0
  179. package/{esm2015/src/render3/jit/pipe.js → esm2020/src/render3/jit/pipe.mjs} +0 -0
  180. package/esm2020/src/render3/metadata.mjs +49 -0
  181. package/{esm2015/src/render3/namespaces.js → esm2020/src/render3/namespaces.mjs} +0 -0
  182. package/esm2020/src/render3/ng_module_ref.mjs +122 -0
  183. package/{esm2015/src/render3/node_assert.js → esm2020/src/render3/node_assert.mjs} +0 -0
  184. package/{esm2015/src/render3/node_manipulation.js → esm2020/src/render3/node_manipulation.mjs} +0 -0
  185. package/{esm2015/src/render3/node_manipulation_i18n.js → esm2020/src/render3/node_manipulation_i18n.mjs} +0 -0
  186. package/{esm2015/src/render3/node_selector_matcher.js → esm2020/src/render3/node_selector_matcher.mjs} +0 -0
  187. package/esm2020/src/render3/pipe.mjs +184 -0
  188. package/{esm2015/src/render3/profiler.js → esm2020/src/render3/profiler.mjs} +0 -0
  189. package/{esm2015/src/render3/pure_function.js → esm2020/src/render3/pure_function.mjs} +0 -0
  190. package/{esm2015/src/render3/query.js → esm2020/src/render3/query.mjs} +0 -0
  191. package/{esm2015/src/render3/state.js → esm2020/src/render3/state.mjs} +0 -0
  192. package/{esm2015/src/render3/styling/class_differ.js → esm2020/src/render3/styling/class_differ.mjs} +0 -0
  193. package/{esm2015/src/render3/styling/static_styling.js → esm2020/src/render3/styling/static_styling.mjs} +0 -0
  194. package/{esm2015/src/render3/styling/style_binding_list.js → esm2020/src/render3/styling/style_binding_list.mjs} +0 -0
  195. package/{esm2015/src/render3/styling/styling_parser.js → esm2020/src/render3/styling/styling_parser.mjs} +0 -0
  196. package/{esm2015/src/render3/tokens.js → esm2020/src/render3/tokens.mjs} +0 -0
  197. package/{esm2015/src/render3/util/attrs_utils.js → esm2020/src/render3/util/attrs_utils.mjs} +0 -0
  198. package/{esm2015/src/render3/util/change_detection_utils.js → esm2020/src/render3/util/change_detection_utils.mjs} +0 -0
  199. package/{esm2015/src/render3/util/debug_utils.js → esm2020/src/render3/util/debug_utils.mjs} +0 -0
  200. package/esm2020/src/render3/util/discovery_utils.mjs +411 -0
  201. package/esm2020/src/render3/util/global_utils.mjs +77 -0
  202. package/{esm2015/src/render3/util/injector_utils.js → esm2020/src/render3/util/injector_utils.mjs} +0 -0
  203. package/esm2020/src/render3/util/misc_utils.mjs +61 -0
  204. package/{esm2015/src/render3/util/stringify_utils.js → esm2020/src/render3/util/stringify_utils.mjs} +0 -0
  205. package/{esm2015/src/render3/util/view_traversal_utils.js → esm2020/src/render3/util/view_traversal_utils.mjs} +0 -0
  206. package/{esm2015/src/render3/util/view_utils.js → esm2020/src/render3/util/view_utils.mjs} +0 -0
  207. package/{esm2015/src/render3/view_engine_compatibility_prebound.js → esm2020/src/render3/view_engine_compatibility_prebound.mjs} +1 -1
  208. package/{esm2015/src/render3/view_ref.js → esm2020/src/render3/view_ref.mjs} +0 -0
  209. package/{esm2015/src/sanitization/bypass.js → esm2020/src/sanitization/bypass.mjs} +0 -0
  210. package/{esm2015/src/sanitization/html_sanitizer.js → esm2020/src/sanitization/html_sanitizer.mjs} +0 -0
  211. package/{esm2015/src/sanitization/inert_body.js → esm2020/src/sanitization/inert_body.mjs} +3 -3
  212. package/{esm2015/src/sanitization/sanitization.js → esm2020/src/sanitization/sanitization.mjs} +0 -0
  213. package/{esm2015/src/sanitization/sanitizer.js → esm2020/src/sanitization/sanitizer.mjs} +0 -0
  214. package/{esm2015/src/sanitization/security.js → esm2020/src/sanitization/security.mjs} +0 -0
  215. package/{esm2015/src/sanitization/url_sanitizer.js → esm2020/src/sanitization/url_sanitizer.mjs} +0 -0
  216. package/esm2020/src/testability/testability.mjs +258 -0
  217. package/{esm2015/src/util/array_utils.js → esm2020/src/util/array_utils.mjs} +0 -0
  218. package/{esm2015/src/util/assert.js → esm2020/src/util/assert.mjs} +0 -0
  219. package/{esm2015/src/util/char_code.js → esm2020/src/util/char_code.mjs} +0 -0
  220. package/{esm2015/src/util/closure.js → esm2020/src/util/closure.mjs} +0 -0
  221. package/{esm2015/src/util/comparison.js → esm2020/src/util/comparison.mjs} +0 -0
  222. package/{esm2015/src/util/decorators.js → esm2020/src/util/decorators.mjs} +0 -0
  223. package/{esm2015/src/util/dom.js → esm2020/src/util/dom.mjs} +0 -0
  224. package/{esm2015/src/util/empty.js → esm2020/src/util/empty.mjs} +0 -0
  225. package/{esm2015/src/util/errors.js → esm2020/src/util/errors.mjs} +0 -0
  226. package/{esm2015/src/util/global.js → esm2020/src/util/global.mjs} +0 -0
  227. package/{esm2015/src/util/is_dev_mode.js → esm2020/src/util/is_dev_mode.mjs} +0 -0
  228. package/{esm2015/src/util/iterable.js → esm2020/src/util/iterable.mjs} +0 -0
  229. package/{esm2015/src/util/lang.js → esm2020/src/util/lang.mjs} +0 -0
  230. package/{esm2015/src/util/microtask.js → esm2020/src/util/microtask.mjs} +0 -0
  231. package/{esm2015/src/util/named_array_type.js → esm2020/src/util/named_array_type.mjs} +0 -0
  232. package/{esm2015/src/util/ng_dev_mode.js → esm2020/src/util/ng_dev_mode.mjs} +0 -0
  233. package/{esm2015/src/util/ng_i18n_closure_mode.js → esm2020/src/util/ng_i18n_closure_mode.mjs} +0 -0
  234. package/{esm2015/src/util/ng_jit_mode.js → esm2020/src/util/ng_jit_mode.mjs} +0 -0
  235. package/{esm2015/src/util/ng_reflect.js → esm2020/src/util/ng_reflect.mjs} +0 -0
  236. package/{esm2015/src/util/noop.js → esm2020/src/util/noop.mjs} +0 -0
  237. package/{esm2015/src/util/property.js → esm2020/src/util/property.mjs} +0 -0
  238. package/{esm2015/src/util/raf.js → esm2020/src/util/raf.mjs} +0 -0
  239. package/{esm2015/src/util/security/trusted_type_defs.js → esm2020/src/util/security/trusted_type_defs.mjs} +0 -0
  240. package/esm2020/src/util/security/trusted_types.mjs +130 -0
  241. package/esm2020/src/util/security/trusted_types_bypass.mjs +83 -0
  242. package/{esm2015/src/util/stringify.js → esm2020/src/util/stringify.mjs} +0 -0
  243. package/{esm2015/src/util/symbol.js → esm2020/src/util/symbol.mjs} +0 -0
  244. package/{esm2015/src/version.js → esm2020/src/version.mjs} +1 -1
  245. package/{esm2015/src/view/element.js → esm2020/src/view/element.mjs} +0 -0
  246. package/{esm2015/src/view/entrypoint.js → esm2020/src/view/entrypoint.mjs} +0 -0
  247. package/{esm2015/src/view/errors.js → esm2020/src/view/errors.mjs} +0 -0
  248. package/{esm2015/src/view/index.js → esm2020/src/view/index.mjs} +2 -2
  249. package/{esm2015/src/view/ng_content.js → esm2020/src/view/ng_content.mjs} +0 -0
  250. package/{esm2015/src/view/ng_module.js → esm2020/src/view/ng_module.mjs} +0 -0
  251. package/esm2020/src/view/provider.mjs +490 -0
  252. package/esm2020/src/view/provider_flags.mjs +26 -0
  253. package/{esm2015/src/view/pure_expression.js → esm2020/src/view/pure_expression.mjs} +0 -0
  254. package/{esm2015/src/view/query.js → esm2020/src/view/query.mjs} +0 -0
  255. package/esm2020/src/view/refs.mjs +369 -0
  256. package/{esm2015/src/view/services.js → esm2020/src/view/services.mjs} +0 -0
  257. package/{esm2015/src/view/text.js → esm2020/src/view/text.mjs} +0 -0
  258. package/{esm2015/src/view/types.js → esm2020/src/view/types.mjs} +0 -0
  259. package/esm2020/src/view/util.mjs +369 -0
  260. package/{esm2015/src/view/view.js → esm2020/src/view/view.mjs} +0 -0
  261. package/{esm2015/src/view/view_attach.js → esm2020/src/view/view_attach.mjs} +0 -0
  262. package/{esm2015/src/zone/ng_zone.js → esm2020/src/zone/ng_zone.mjs} +0 -0
  263. package/{esm2015/src/zone.js → esm2020/src/zone.mjs} +0 -0
  264. package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
  265. package/{esm2015/testing/public_api.js → esm2020/testing/public_api.mjs} +0 -0
  266. package/{esm2015/testing/src/async.js → esm2020/testing/src/async.mjs} +0 -0
  267. package/{esm2015/testing/src/component_fixture.js → esm2020/testing/src/component_fixture.mjs} +0 -0
  268. package/{esm2015/testing/src/fake_async.js → esm2020/testing/src/fake_async.mjs} +0 -0
  269. package/{esm2015/testing/src/lang_utils.js → esm2020/testing/src/lang_utils.mjs} +0 -0
  270. package/esm2020/testing/src/logger.mjs +34 -0
  271. package/{esm2015/testing/src/metadata_override.js → esm2020/testing/src/metadata_override.mjs} +0 -0
  272. package/{esm2015/testing/src/metadata_overrider.js → esm2020/testing/src/metadata_overrider.mjs} +0 -0
  273. package/esm2020/testing/src/ng_zone_mock.mjs +33 -0
  274. package/{esm2015/testing/src/private_export_testing.js → esm2020/testing/src/private_export_testing.mjs} +0 -0
  275. package/esm2020/testing/src/r3_test_bed.mjs +397 -0
  276. package/esm2020/testing/src/r3_test_bed_compiler.mjs +735 -0
  277. package/{esm2015/testing/src/resolvers.js → esm2020/testing/src/resolvers.mjs} +1 -1
  278. package/{esm2015/testing/src/styling.js → esm2020/testing/src/styling.mjs} +0 -0
  279. package/esm2020/testing/src/test_bed.mjs +614 -0
  280. package/esm2020/testing/src/test_bed_common.mjs +28 -0
  281. package/esm2020/testing/src/test_compiler.mjs +69 -0
  282. package/{esm2015/testing/src/test_hooks.js → esm2020/testing/src/test_hooks.mjs} +0 -0
  283. package/{esm2015/testing/src/testing.js → esm2020/testing/src/testing.mjs} +0 -0
  284. package/{esm2015/testing/src/testing_internal.js → esm2020/testing/src/testing_internal.mjs} +0 -0
  285. package/esm2020/testing/testing.mjs +5 -0
  286. package/fesm2015/{core.js → core.mjs} +8674 -8756
  287. package/fesm2015/core.mjs.map +1 -0
  288. package/fesm2015/{testing.js → testing.mjs} +50 -61
  289. package/fesm2015/testing.mjs.map +1 -0
  290. package/fesm2020/core.mjs +33107 -0
  291. package/fesm2020/core.mjs.map +1 -0
  292. package/fesm2020/testing.mjs +2635 -0
  293. package/fesm2020/testing.mjs.map +1 -0
  294. package/package.json +34 -9
  295. package/schematics/migrations/abstract-control-parent/index.js +6 -6
  296. package/schematics/migrations/abstract-control-parent/util.d.ts +1 -1
  297. package/schematics/migrations/abstract-control-parent/util.js +11 -8
  298. package/schematics/migrations/activated-route-snapshot-fragment/index.js +12 -9
  299. package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +1 -1
  300. package/schematics/migrations/activated-route-snapshot-fragment/util.js +10 -7
  301. package/schematics/migrations/can-activate-with-redirect-to/index.js +13 -10
  302. package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +1 -1
  303. package/schematics/migrations/can-activate-with-redirect-to/util.js +13 -10
  304. package/schematics/migrations/deep-shadow-piercing-selector/index.js +3 -3
  305. package/schematics/migrations/dynamic-queries/index.js +13 -10
  306. package/schematics/migrations/dynamic-queries/util.d.ts +1 -1
  307. package/schematics/migrations/dynamic-queries/util.js +12 -9
  308. package/schematics/migrations/initial-navigation/collector.d.ts +1 -1
  309. package/schematics/migrations/initial-navigation/collector.js +23 -20
  310. package/schematics/migrations/initial-navigation/index.js +5 -5
  311. package/schematics/migrations/initial-navigation/transform.d.ts +1 -1
  312. package/schematics/migrations/initial-navigation/transform.js +11 -8
  313. package/schematics/migrations/initial-navigation/update_recorder.d.ts +1 -1
  314. package/schematics/migrations/initial-navigation/update_recorder.js +1 -1
  315. package/schematics/migrations/initial-navigation/util.d.ts +1 -1
  316. package/schematics/migrations/initial-navigation/util.js +10 -7
  317. package/schematics/migrations/missing-injectable/definition_collector.d.ts +1 -1
  318. package/schematics/migrations/missing-injectable/definition_collector.js +16 -13
  319. package/schematics/migrations/missing-injectable/index.js +26 -12
  320. package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +9 -19
  321. package/schematics/migrations/missing-injectable/providers_evaluator.js +47 -40
  322. package/schematics/migrations/missing-injectable/transform.d.ts +3 -2
  323. package/schematics/migrations/missing-injectable/transform.js +18 -16
  324. package/schematics/migrations/missing-injectable/update_recorder.d.ts +1 -1
  325. package/schematics/migrations/missing-injectable/update_recorder.js +1 -1
  326. package/schematics/migrations/module-with-providers/collector.d.ts +1 -1
  327. package/schematics/migrations/module-with-providers/collector.js +12 -9
  328. package/schematics/migrations/module-with-providers/index.js +26 -12
  329. package/schematics/migrations/module-with-providers/transform.d.ts +4 -3
  330. package/schematics/migrations/module-with-providers/transform.js +23 -22
  331. package/schematics/migrations/module-with-providers/util.d.ts +1 -1
  332. package/schematics/migrations/module-with-providers/util.js +10 -7
  333. package/schematics/migrations/move-document/document_import_visitor.d.ts +1 -1
  334. package/schematics/migrations/move-document/document_import_visitor.js +7 -4
  335. package/schematics/migrations/move-document/index.js +8 -8
  336. package/schematics/migrations/move-document/move-import.d.ts +1 -1
  337. package/schematics/migrations/move-document/move-import.js +27 -24
  338. package/schematics/migrations/native-view-encapsulation/index.js +6 -6
  339. package/schematics/migrations/native-view-encapsulation/util.d.ts +1 -1
  340. package/schematics/migrations/native-view-encapsulation/util.js +8 -5
  341. package/schematics/migrations/navigation-extras-omissions/index.js +13 -10
  342. package/schematics/migrations/navigation-extras-omissions/util.d.ts +1 -1
  343. package/schematics/migrations/navigation-extras-omissions/util.js +17 -14
  344. package/schematics/migrations/relative-link-resolution/collector.d.ts +1 -1
  345. package/schematics/migrations/relative-link-resolution/collector.js +17 -14
  346. package/schematics/migrations/relative-link-resolution/index.js +5 -5
  347. package/schematics/migrations/relative-link-resolution/transform.d.ts +1 -1
  348. package/schematics/migrations/relative-link-resolution/transform.js +12 -9
  349. package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +1 -1
  350. package/schematics/migrations/relative-link-resolution/update_recorder.js +1 -1
  351. package/schematics/migrations/relative-link-resolution/util.d.ts +1 -1
  352. package/schematics/migrations/relative-link-resolution/util.js +10 -7
  353. package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +1 -1
  354. package/schematics/migrations/renderer-to-renderer2/helpers.js +92 -89
  355. package/schematics/migrations/renderer-to-renderer2/index.js +20 -17
  356. package/schematics/migrations/renderer-to-renderer2/migration.d.ts +1 -1
  357. package/schematics/migrations/renderer-to-renderer2/migration.js +33 -30
  358. package/schematics/migrations/renderer-to-renderer2/util.d.ts +1 -1
  359. package/schematics/migrations/renderer-to-renderer2/util.js +23 -20
  360. package/schematics/migrations/router-link-empty-expression/analyze_template.d.ts +2 -2
  361. package/schematics/migrations/router-link-empty-expression/analyze_template.js +6 -7
  362. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.d.ts +7 -6
  363. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.js +10 -11
  364. package/schematics/migrations/router-link-empty-expression/index.js +27 -16
  365. package/schematics/migrations/router-preserve-query-params/index.js +13 -10
  366. package/schematics/migrations/router-preserve-query-params/util.d.ts +1 -1
  367. package/schematics/migrations/router-preserve-query-params/util.js +19 -16
  368. package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +1 -1
  369. package/schematics/migrations/static-queries/angular/directive_inputs.js +14 -11
  370. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +1 -1
  371. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +17 -14
  372. package/schematics/migrations/static-queries/angular/query-definition.d.ts +1 -1
  373. package/schematics/migrations/static-queries/angular/query-definition.js +1 -1
  374. package/schematics/migrations/static-queries/angular/super_class.d.ts +1 -1
  375. package/schematics/migrations/static-queries/angular/super_class.js +1 -1
  376. package/schematics/migrations/static-queries/index.js +43 -18
  377. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +6 -3
  378. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +44 -48
  379. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +1 -1
  380. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +41 -38
  381. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +1 -1
  382. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +10 -7
  383. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +10 -9
  384. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +35 -36
  385. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +3 -2
  386. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +14 -10
  387. package/schematics/migrations/static-queries/transform.d.ts +1 -1
  388. package/schematics/migrations/static-queries/transform.js +14 -11
  389. package/schematics/migrations/template-var-assignment/analyze_template.d.ts +2 -2
  390. package/schematics/migrations/template-var-assignment/analyze_template.js +6 -7
  391. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +7 -6
  392. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +31 -30
  393. package/schematics/migrations/template-var-assignment/index.js +20 -9
  394. package/schematics/migrations/testbed-teardown/index.d.ts +11 -0
  395. package/schematics/migrations/testbed-teardown/index.js +92 -0
  396. package/schematics/migrations/testbed-teardown/util.d.ts +35 -0
  397. package/schematics/migrations/testbed-teardown/util.js +188 -0
  398. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +26 -12
  399. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +3 -2
  400. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +23 -21
  401. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +1 -1
  402. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +1 -1
  403. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +4 -4
  404. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +5 -6
  405. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +3 -3
  406. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +18 -16
  407. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +3 -5
  408. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +13 -11
  409. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +2 -2
  410. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +18 -15
  411. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +2 -2
  412. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +1 -1
  413. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +16 -13
  414. package/schematics/migrations/undecorated-classes-with-di/index.js +64 -22
  415. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +4 -4
  416. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +28 -35
  417. package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +5 -5
  418. package/schematics/migrations/undecorated-classes-with-di/transform.js +29 -26
  419. package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +1 -1
  420. package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +1 -1
  421. package/schematics/migrations/wait-for-async/index.js +16 -13
  422. package/schematics/migrations/wait-for-async/util.d.ts +1 -1
  423. package/schematics/migrations/wait-for-async/util.js +9 -6
  424. package/schematics/migrations/xhr-factory/index.js +13 -10
  425. package/schematics/migrations.json +6 -1
  426. package/schematics/package.json +3 -0
  427. package/schematics/utils/import_manager.d.ts +1 -1
  428. package/schematics/utils/import_manager.js +24 -21
  429. package/schematics/utils/load_esm.d.ts +32 -0
  430. package/schematics/utils/load_esm.js +79 -0
  431. package/schematics/utils/ng_component_template.d.ts +1 -1
  432. package/schematics/utils/ng_component_template.js +21 -18
  433. package/schematics/utils/ng_decorators.d.ts +1 -1
  434. package/schematics/utils/ng_decorators.js +2 -2
  435. package/schematics/utils/parse_html.d.ts +2 -2
  436. package/schematics/utils/parse_html.js +4 -5
  437. package/schematics/utils/project_tsconfig_paths.js +3 -3
  438. package/schematics/utils/template_ast_visitor.d.ts +55 -0
  439. package/schematics/utils/template_ast_visitor.js +73 -0
  440. package/schematics/utils/typescript/class_declaration.d.ts +1 -1
  441. package/schematics/utils/typescript/class_declaration.js +10 -7
  442. package/schematics/utils/typescript/compiler_host.d.ts +1 -1
  443. package/schematics/utils/typescript/compiler_host.js +11 -8
  444. package/schematics/utils/typescript/decorators.d.ts +1 -1
  445. package/schematics/utils/typescript/decorators.js +8 -5
  446. package/schematics/utils/typescript/find_base_classes.d.ts +1 -1
  447. package/schematics/utils/typescript/find_base_classes.js +7 -4
  448. package/schematics/utils/typescript/functions.d.ts +1 -1
  449. package/schematics/utils/typescript/functions.js +9 -6
  450. package/schematics/utils/typescript/imports.d.ts +1 -1
  451. package/schematics/utils/typescript/imports.js +12 -9
  452. package/schematics/utils/typescript/nodes.d.ts +1 -1
  453. package/schematics/utils/typescript/nodes.js +11 -8
  454. package/schematics/utils/typescript/parse_tsconfig.d.ts +1 -1
  455. package/schematics/utils/typescript/parse_tsconfig.js +31 -9
  456. package/schematics/utils/typescript/property_name.d.ts +1 -1
  457. package/schematics/utils/typescript/property_name.js +7 -4
  458. package/schematics/utils/typescript/symbol.d.ts +1 -1
  459. package/schematics/utils/typescript/symbol.js +15 -12
  460. package/testing/package.json +5 -5
  461. package/testing/testing.d.ts +57 -339
  462. package/bundles/core-testing.umd.js +0 -3179
  463. package/bundles/core-testing.umd.js.map +0 -1
  464. package/bundles/core.umd.js +0 -34488
  465. package/bundles/core.umd.js.map +0 -1
  466. package/core.metadata.json +0 -1
  467. package/esm2015/core.externs.js +0 -6
  468. package/esm2015/core.js +0 -38
  469. package/esm2015/src/application_init.js +0 -142
  470. package/esm2015/src/application_module.js +0 -134
  471. package/esm2015/src/application_ref.js +0 -735
  472. package/esm2015/src/change_detection/change_detection.js +0 -31
  473. package/esm2015/src/change_detection/change_detection_util.js +0 -105
  474. package/esm2015/src/change_detection/change_detector_ref.js +0 -96
  475. package/esm2015/src/change_detection/differs/default_iterable_differ.js +0 -668
  476. package/esm2015/src/change_detection.js +0 -14
  477. package/esm2015/src/codegen_private_exports.js +0 -11
  478. package/esm2015/src/compiler/compiler.externs.js +0 -0
  479. package/esm2015/src/console.js +0 -23
  480. package/esm2015/src/core.js +0 -50
  481. package/esm2015/src/core_private_export.js +0 -35
  482. package/esm2015/src/core_render3_private_export.js +0 -45
  483. package/esm2015/src/debug/debug_node.js +0 -632
  484. package/esm2015/src/di/injectable.js +0 -36
  485. package/esm2015/src/di/injection_token.js +0 -75
  486. package/esm2015/src/di/injector.js +0 -326
  487. package/esm2015/src/di/injector_compatibility.js +0 -187
  488. package/esm2015/src/di/interface/interface.externs.js +0 -0
  489. package/esm2015/src/di/jit/injectable.js +0 -96
  490. package/esm2015/src/di/metadata.js +0 -62
  491. package/esm2015/src/di/metadata_attr.js +0 -24
  492. package/esm2015/src/di/util.js +0 -53
  493. package/esm2015/src/event_emitter.js +0 -54
  494. package/esm2015/src/i18n/locale_data_api.js +0 -131
  495. package/esm2015/src/i18n/locale_en.js +0 -17
  496. package/esm2015/src/interface/interface.externs.js +0 -0
  497. package/esm2015/src/linker/compiler.js +0 -118
  498. package/esm2015/src/linker/element_ref.js +0 -66
  499. package/esm2015/src/linker/ng_module_factory.js +0 -21
  500. package/esm2015/src/linker/ng_module_factory_loader.js +0 -41
  501. package/esm2015/src/linker/system_js_ng_module_factory_loader.js +0 -77
  502. package/esm2015/src/linker/view_container_ref.js +0 -252
  503. package/esm2015/src/linker.js +0 -20
  504. package/esm2015/src/metadata/di.js +0 -99
  505. package/esm2015/src/metadata/directives.js +0 -120
  506. package/esm2015/src/metadata/ng_module.js +0 -44
  507. package/esm2015/src/reflection/reflection.externs.js +0 -0
  508. package/esm2015/src/render3/component.js +0 -206
  509. package/esm2015/src/render3/features/ng_onchanges_feature.js +0 -92
  510. package/esm2015/src/render3/instructions/shared.js +0 -1813
  511. package/esm2015/src/render3/interfaces/renderer.js +0 -29
  512. package/esm2015/src/render3/jit/directive.js +0 -312
  513. package/esm2015/src/render3/jit/environment.js +0 -167
  514. package/esm2015/src/render3/jit/partial.js +0 -105
  515. package/esm2015/src/render3/metadata.js +0 -49
  516. package/esm2015/src/render3/ng_module_ref.js +0 -108
  517. package/esm2015/src/render3/pipe.js +0 -202
  518. package/esm2015/src/render3/util/discovery_utils.js +0 -411
  519. package/esm2015/src/render3/util/global_utils.js +0 -78
  520. package/esm2015/src/render3/util/misc_utils.js +0 -63
  521. package/esm2015/src/testability/testability.js +0 -256
  522. package/esm2015/src/util/security/trusted_types.js +0 -133
  523. package/esm2015/src/util/security/trusted_types_bypass.js +0 -86
  524. package/esm2015/src/util/util.externs.js +0 -0
  525. package/esm2015/src/view/provider.js +0 -507
  526. package/esm2015/src/view/refs.js +0 -362
  527. package/esm2015/src/view/util.js +0 -378
  528. package/esm2015/testing/src/logger.js +0 -32
  529. package/esm2015/testing/src/ng_zone_mock.js +0 -31
  530. package/esm2015/testing/src/r3_test_bed.js +0 -397
  531. package/esm2015/testing/src/r3_test_bed_compiler.js +0 -744
  532. package/esm2015/testing/src/test_bed.js +0 -608
  533. package/esm2015/testing/src/test_bed_common.js +0 -31
  534. package/esm2015/testing/src/test_compiler.js +0 -66
  535. package/esm2015/testing/testing.externs.js +0 -6
  536. package/esm2015/testing/testing.js +0 -7
  537. package/fesm2015/core.js.map +0 -1
  538. package/fesm2015/testing.js.map +0 -1
  539. package/src/r3_symbols.d.ts +0 -1025
  540. package/testing/testing.metadata.json +0 -1
  541. package/testing.d.ts +0 -7
  542. package/testing.metadata.json +0 -1
@@ -14,20 +14,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
14
14
  step((generator = generator.apply(thisArg, _arguments || [])).next());
15
15
  });
16
16
  };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
17
20
  (function (factory) {
18
21
  if (typeof module === "object" && typeof module.exports === "object") {
19
22
  var v = factory(require, exports);
20
23
  if (v !== undefined) module.exports = v;
21
24
  }
22
25
  else if (typeof define === "function" && define.amd) {
23
- define("@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform"], factory);
26
+ define("@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/load_esm", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform"], factory);
24
27
  }
25
28
  })(function (require, exports) {
26
29
  "use strict";
27
30
  Object.defineProperty(exports, "__esModule", { value: true });
28
31
  const schematics_1 = require("@angular-devkit/schematics");
29
32
  const path_1 = require("path");
30
- const ts = require("typescript");
33
+ const typescript_1 = __importDefault(require("typescript"));
34
+ const load_esm_1 = require("@angular/core/schematics/utils/load_esm");
31
35
  const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
32
36
  const compiler_host_1 = require("@angular/core/schematics/utils/typescript/compiler_host");
33
37
  const transform_1 = require("@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform");
@@ -37,15 +41,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
37
41
  */
38
42
  function default_1() {
39
43
  return (tree, ctx) => __awaiter(this, void 0, void 0, function* () {
40
- const { buildPaths, testPaths } = yield project_tsconfig_paths_1.getProjectTsConfigPaths(tree);
44
+ const { buildPaths, testPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
41
45
  const basePath = process.cwd();
42
46
  const allPaths = [...buildPaths, ...testPaths];
43
47
  const failures = [];
44
48
  if (!allPaths.length) {
45
49
  throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot add an Angular decorator to undecorated classes.');
46
50
  }
51
+ let compilerCliMigrationsModule;
52
+ try {
53
+ // Load ESM `@angular/compiler/private/migrations` using the TypeScript dynamic import
54
+ // workaround. Once TypeScript provides support for keeping the dynamic import this workaround
55
+ // can be changed to a direct dynamic import.
56
+ compilerCliMigrationsModule = yield (0, load_esm_1.loadCompilerCliMigrationsModule)();
57
+ }
58
+ catch (e) {
59
+ throw new schematics_1.SchematicsException(`Unable to load the '@angular/compiler-cli' package. Details: ${e.message}`);
60
+ }
47
61
  for (const tsconfigPath of allPaths) {
48
- failures.push(...runUndecoratedClassesMigration(tree, tsconfigPath, basePath));
62
+ failures.push(...runUndecoratedClassesMigration(tree, tsconfigPath, basePath, compilerCliMigrationsModule));
49
63
  }
50
64
  if (failures.length) {
51
65
  ctx.logger.info('Could not migrate all undecorated classes that use Angular features.');
@@ -55,18 +69,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
55
69
  });
56
70
  }
57
71
  exports.default = default_1;
58
- function runUndecoratedClassesMigration(tree, tsconfigPath, basePath) {
72
+ function runUndecoratedClassesMigration(tree, tsconfigPath, basePath, compilerCliMigrationsModule) {
59
73
  const failures = [];
60
- const { program } = compiler_host_1.createMigrationProgram(tree, tsconfigPath, basePath);
74
+ const { program } = (0, compiler_host_1.createMigrationProgram)(tree, tsconfigPath, basePath);
61
75
  const typeChecker = program.getTypeChecker();
62
- const sourceFiles = program.getSourceFiles().filter(sourceFile => compiler_host_1.canMigrateFile(basePath, sourceFile, program));
76
+ const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
63
77
  const updateRecorders = new Map();
64
- const transform = new transform_1.UndecoratedClassesWithDecoratedFieldsTransform(typeChecker, getUpdateRecorder);
78
+ const transform = new transform_1.UndecoratedClassesWithDecoratedFieldsTransform(typeChecker, getUpdateRecorder, compilerCliMigrationsModule);
65
79
  // Migrate all source files in the project.
66
80
  transform.migrate(sourceFiles).forEach(({ node, message }) => {
67
81
  const nodeSourceFile = node.getSourceFile();
68
- const relativeFilePath = path_1.relative(basePath, nodeSourceFile.fileName);
69
- const { line, character } = ts.getLineAndCharacterOfPosition(node.getSourceFile(), node.getStart());
82
+ const relativeFilePath = (0, path_1.relative)(basePath, nodeSourceFile.fileName);
83
+ const { line, character } = typescript_1.default.getLineAndCharacterOfPosition(node.getSourceFile(), node.getStart());
70
84
  failures.push(`${relativeFilePath}@${line + 1}:${character + 1}: ${message}`);
71
85
  });
72
86
  // Record the changes collected in the import manager.
@@ -81,7 +95,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
81
95
  if (updateRecorders.has(sourceFile)) {
82
96
  return updateRecorders.get(sourceFile);
83
97
  }
84
- const treeRecorder = tree.beginUpdate(path_1.relative(basePath, sourceFile.fileName));
98
+ const treeRecorder = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
85
99
  const recorder = {
86
100
  addClassTodo(node, message) {
87
101
  treeRecorder.insertRight(node.getStart(), `// TODO: ${message}\n`);
@@ -111,4 +125,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
111
125
  }
112
126
  }
113
127
  });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy91bmRlY29yYXRlZC1jbGFzc2VzLXdpdGgtZGVjb3JhdGVkLWZpZWxkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDJEQUE4RjtJQUM5RiwrQkFBOEI7SUFDOUIsaUNBQWlDO0lBRWpDLGtHQUEyRTtJQUMzRSwyRkFBNEY7SUFFNUYsdUhBQTJFO0lBRzNFOzs7T0FHRztJQUNIO1FBQ0UsT0FBTyxDQUFPLElBQVUsRUFBRSxHQUFxQixFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLGdEQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1lBRTlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLDJGQUEyRixDQUFDLENBQUM7YUFDbEc7WUFFRCxLQUFLLE1BQU0sWUFBWSxJQUFJLFFBQVEsRUFBRTtnQkFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLDhCQUE4QixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNoRjtZQUVELElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0VBQXNFLENBQUMsQ0FBQztnQkFDeEYsR0FBRyxDQUFDLE1BQU0sQ0FB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QUFDO2dCQUNELFlBQVksQ0FBQyxLQUFhLEVBQUUsVUFBa0I7b0JBQzVDLGlGQUFpRjtvQkFDakYsaUZBQWlGO29CQUNqRiwwRUFBMEU7b0JBQzFFLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO2dCQUNELG9CQUFvQixDQUFDLGFBQThCLEVBQUUsZ0JBQXdCO29CQUMzRSxZQUFZLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDeEUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztnQkFDRCxZQUFZO29CQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7YUFDRixDQUFDO1lBQ0YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDMUMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSdWxlLCBTY2hlbWF0aWNDb250ZXh0LCBTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlLH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRQcm9qZWN0VHNDb25maWdQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvcHJvamVjdF90c2NvbmZpZ19wYXRocyc7XG5pbXBvcnQge2Nhbk1pZ3JhdGVGaWxlLCBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2NvbXBpbGVyX2hvc3QnO1xuXG5pbXBvcnQge1VuZGVjb3JhdGVkQ2xhc3Nlc1dpdGhEZWNvcmF0ZWRGaWVsZHNUcmFuc2Zvcm19IGZyb20gJy4vdHJhbnNmb3JtJztcbmltcG9ydCB7VXBkYXRlUmVjb3JkZXJ9IGZyb20gJy4vdXBkYXRlX3JlY29yZGVyJztcblxuLyoqXG4gKiBNaWdyYXRpb24gdGhhdCBhZGRzIGFuIEFuZ3VsYXIgZGVjb3JhdG9yIHRvIGNsYXNzZXMgdGhhdCBoYXZlIEFuZ3VsYXIgZmllbGQgZGVjb3JhdG9ycy5cbiAqIGh0dHBzOi8vaGFja21kLmlvL3Z1UWZhdnpmUkc2S1VDdFU3b0tfRUFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKTogUnVsZSB7XG4gIHJldHVybiBhc3luYyAodHJlZTogVHJlZSwgY3R4OiBTY2hlbWF0aWNDb250ZXh0KSA9PiB7XG4gICAgY29uc3Qge2J1aWxkUGF0aHMsIHRlc3RQYXRoc30gPSBhd2FpdCBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlKTtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgYWxsUGF0aHMgPSBbLi4uYnVpbGRQYXRocywgLi4udGVzdFBhdGhzXTtcbiAgICBjb25zdCBmYWlsdXJlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICghYWxsUGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBhZGQgYW4gQW5ndWxhciBkZWNvcmF0b3IgdG8gdW5kZWNvcmF0ZWQgY2xhc3Nlcy4nKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnUGF0aCBvZiBhbGxQYXRocykge1xuICAgICAgZmFpbHVyZXMucHVzaCguLi5ydW5VbmRlY29yYXRlZENsYXNzZXNNaWdyYXRpb24odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCkpO1xuICAgIH1cblxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygnQ291bGQgbm90IG1pZ3JhdGUgYWxsIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCB1c2UgQW5ndWxhciBmZWF0dXJlcy4nKTtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygnUGxlYXNlIG1hbnVhbGx5IGZpeCB0aGUgZm9sbG93aW5nIGZhaWx1cmVzOicpO1xuICAgICAgZmFpbHVyZXMuZm9yRWFjaChtZXNzYWdlID0+IGN0eC5sb2dnZXIud2Fybihg4q6RICAgJHttZXNzYWdlfWApKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJ1blVuZGVjb3JhdGVkQ2xhc3Nlc01pZ3JhdGlvbihcbiAgICB0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcbiAgY29uc3QgdXBkYXRlUmVjb3JkZXJzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBVcGRhdGVSZWNvcmRlcj4oKTtcbiAgY29uc3QgdHJhbnNmb3JtID1cbiAgICAgIG5ldyBVbmRlY29yYXRlZENsYXNzZXNXaXRoRGVjb3JhdGVkRmllbGRzVHJhbnNmb3JtKHR5cGVDaGVja2VyLCBnZXRVcGRhdGVSZWNvcmRlcik7XG5cbiAgLy8gTWlncmF0ZSBhbGwgc291cmNlIGZpbGVzIGluIHRoZSBwcm9qZWN0LlxuICB0cmFuc2Zvcm0ubWlncmF0ZShzb3VyY2VGaWxlcykuZm9yRWFjaCgoe25vZGUsIG1lc3NhZ2V9KSA9PiB7XG4gICAgY29uc3Qgbm9kZVNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgICBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gcmVsYXRpdmUoYmFzZVBhdGgsIG5vZGVTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9XG4gICAgICAgIHRzLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U291cmNlRmlsZSgpLCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIGZhaWx1cmVzLnB1c2goYCR7cmVsYXRpdmVGaWxlUGF0aH1AJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfTogJHttZXNzYWdlfWApO1xuICB9KTtcblxuICAvLyBSZWNvcmQgdGhlIGNoYW5nZXMgY29sbGVjdGVkIGluIHRoZSBpbXBvcnQgbWFuYWdlci5cbiAgdHJhbnNmb3JtLnJlY29yZENoYW5nZXMoKTtcblxuICAvLyBXYWxrIHRocm91Z2ggZWFjaCB1cGRhdGUgcmVjb3JkZXIgYW5kIGNvbW1pdCB0aGUgdXBkYXRlLiBXZSBuZWVkIHRvIGNvbW1pdCB0aGVcbiAgLy8gdXBkYXRlcyBpbiBiYXRjaGVzIHBlciBzb3VyY2UgZmlsZSBhcyB0aGVyZSBjYW4gYmUgb25seSBvbmUgcmVjb3JkZXIgcGVyIHNvdXJjZVxuICAvLyBmaWxlIGluIG9yZGVyIHRvIGF2b2lkIHNoaWZ0ZWQgY2hhcmFjdGVyIG9mZnNldHMuXG4gIHVwZGF0ZVJlY29yZGVycy5mb3JFYWNoKHJlY29yZGVyID0+IHJlY29yZGVyLmNvbW1pdFVwZGF0ZSgpKTtcblxuICByZXR1cm4gZmFpbHVyZXM7XG5cbiAgLyoqIEdldHMgdGhlIHVwZGF0ZSByZWNvcmRlciBmb3IgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZS4gKi9cbiAgZnVuY3Rpb24gZ2V0VXBkYXRlUmVjb3JkZXIoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IFVwZGF0ZVJlY29yZGVyIHtcbiAgICBpZiAodXBkYXRlUmVjb3JkZXJzLmhhcyhzb3VyY2VGaWxlKSkge1xuICAgICAgcmV0dXJuIHVwZGF0ZVJlY29yZGVycy5nZXQoc291cmNlRmlsZSkhO1xuICAgIH1cbiAgICBjb25zdCB0cmVlUmVjb3JkZXIgPSB0cmVlLmJlZ2luVXBkYXRlKHJlbGF0aXZlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG4gICAgY29uc3QgcmVjb3JkZXI6IFVwZGF0ZVJlY29yZGVyID0ge1xuICAgICAgYWRkQ2xhc3NUb2RvKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0UmlnaHQobm9kZS5nZXRTdGFydCgpLCBgLy8gVE9ETzogJHttZXNzYWdlfVxcbmApO1xuICAgICAgfSxcbiAgICAgIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChub2RlLmdldFN0YXJ0KCksIGAke3RleHR9XFxuYCk7XG4gICAgICB9LFxuICAgICAgYWRkTmV3SW1wb3J0KHN0YXJ0OiBudW1iZXIsIGltcG9ydFRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRMZWZ0KHN0YXJ0LCBpbXBvcnRUZXh0KTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFeGlzdGluZ0ltcG9ydChuYW1lZEJpbmRpbmdzOiB0cy5OYW1lZEltcG9ydHMsIG5ld05hbWVkQmluZGluZ3M6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIucmVtb3ZlKG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmFtZWRCaW5kaW5ncy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdHJlZVJlY29yZGVyLmluc2VydFJpZ2h0KG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmV3TmFtZWRCaW5kaW5ncyk7XG4gICAgICB9LFxuICAgICAgY29tbWl0VXBkYXRlKCkge1xuICAgICAgICB0cmVlLmNvbW1pdFVwZGF0ZSh0cmVlUmVjb3JkZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgdXBkYXRlUmVjb3JkZXJzLnNldChzb3VyY2VGaWxlLCByZWNvcmRlcik7XG4gICAgcmV0dXJuIHJlY29yZGVyO1xuICB9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy91bmRlY29yYXRlZC1jbGFzc2VzLXdpdGgtZGVjb3JhdGVkLWZpZWxkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDJEQUE4RjtJQUM5RiwrQkFBOEI7SUFDOUIsNERBQTRCO0lBRTVCLHNFQUFvRjtJQUNwRixrR0FBMkU7SUFDM0UsMkZBQTRGO0lBRTVGLHVIQUEyRTtJQUczRTs7O09BR0c7SUFDSDtRQUNFLE9BQU8sQ0FBTyxJQUFVLEVBQUUsR0FBcUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLEdBQUcsTUFBTSxJQUFBLGdEQUF1QixFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1lBRTlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLDJGQUEyRixDQUFDLENBQUM7YUFDbEc7WUFFRCxJQUFJLDJCQUEyQixDQUFDO1lBQ2hDLElBQUk7Z0JBQ0Ysc0ZBQXNGO2dCQUN0Riw4RkFBOEY7Z0JBQzlGLDZDQUE2QztnQkFDN0MsMkJBQTJCLEdBQUcsTUFBTSxJQUFBLDBDQUErQixHQUFFLENBQUM7YUFDdkU7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLGdFQUFnRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzth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TUFBTSxRQUFRLEdBQW1CO2dCQUMvQixZQUFZLENBQUMsSUFBeUIsRUFBRSxPQUFlO29CQUNyRCxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBQ0QsaUJBQWlCLENBQUMsSUFBeUIsRUFBRSxJQUFZO29CQUN2RCxpRkFBaUY7b0JBQ2pGLGlGQUFpRjtvQkFDakYsMEVBQTBFO29CQUMxRSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7Z0JBQ3pELENBQUM7Z0JBQ0QsWUFBWSxDQUFDLEtBQWEsRUFBRSxVQUFrQjtvQkFDNUMsaUZBQWlGO29CQUNqRixpRkFBaUY7b0JBQ2pGLDBFQUEwRTtvQkFDMUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7Z0JBQ0Qsb0JBQW9CLENBQUMsYUFBOEIsRUFBRSxnQkFBd0I7b0JBQzNFLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN4RSxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELFlBQVk7b0JBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEMsQ0FBQzthQUNGLENBQUM7WUFDRixlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1J1bGUsIFNjaGVtYXRpY0NvbnRleHQsIFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWUsfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQge3JlbGF0aXZlfSBmcm9tICdwYXRoJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtsb2FkQ29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlLCBsb2FkRXNtTW9kdWxlfSBmcm9tICcuLi8uLi91dGlscy9sb2FkX2VzbSc7XG5pbXBvcnQge2dldFByb2plY3RUc0NvbmZpZ1BhdGhzfSBmcm9tICcuLi8uLi91dGlscy9wcm9qZWN0X3RzY29uZmlnX3BhdGhzJztcbmltcG9ydCB7Y2FuTWlncmF0ZUZpbGUsIGNyZWF0ZU1pZ3JhdGlvblByb2dyYW19IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvY29tcGlsZXJfaG9zdCc7XG5cbmltcG9ydCB7VW5kZWNvcmF0ZWRDbGFzc2VzV2l0aERlY29yYXRlZEZpZWxkc1RyYW5zZm9ybX0gZnJvbSAnLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IGFkZHMgYW4gQW5ndWxhciBkZWNvcmF0b3IgdG8gY2xhc3NlcyB0aGF0IGhhdmUgQW5ndWxhciBmaWVsZCBkZWNvcmF0b3JzLlxuICogaHR0cHM6Ly9oYWNrbWQuaW8vdnVRZmF2emZSRzZLVUN0VTdvS19FQVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jICh0cmVlOiBUcmVlLCBjdHg6IFNjaGVtYXRpY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuICAgIGNvbnN0IGZhaWx1cmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IGFkZCBhbiBBbmd1bGFyIGRlY29yYXRvciB0byB1bmRlY29yYXRlZCBjbGFzc2VzLicpO1xuICAgIH1cblxuICAgIGxldCBjb21waWxlckNsaU1pZ3JhdGlvbnNNb2R1bGU7XG4gICAgdHJ5IHtcbiAgICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9jb21waWxlci9wcml2YXRlL21pZ3JhdGlvbnNgIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0XG4gICAgICAvLyB3b3JrYXJvdW5kLiBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kXG4gICAgICAvLyBjYW4gYmUgY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgIGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZSA9IGF3YWl0IGxvYWRDb21waWxlckNsaU1pZ3JhdGlvbnNNb2R1bGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICBgVW5hYmxlIHRvIGxvYWQgdGhlICdAYW5ndWxhci9jb21waWxlci1jbGknIHBhY2thZ2UuIERldGFpbHM6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIGFsbFBhdGhzKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKC4uLnJ1blVuZGVjb3JhdGVkQ2xhc3Nlc01pZ3JhdGlvbihcbiAgICAgICAgICB0cmVlLCB0c2NvbmZpZ1BhdGgsIGJhc2VQYXRoLCBjb21waWxlckNsaU1pZ3JhdGlvbnNNb2R1bGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ0NvdWxkIG5vdCBtaWdyYXRlIGFsbCB1bmRlY29yYXRlZCBjbGFzc2VzIHRoYXQgdXNlIEFuZ3VsYXIgZmVhdHVyZXMuJyk7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ1BsZWFzZSBtYW51YWxseSBmaXggdGhlIGZvbGxvd2luZyBmYWlsdXJlczonKTtcbiAgICAgIGZhaWx1cmVzLmZvckVhY2gobWVzc2FnZSA9PiBjdHgubG9nZ2VyLndhcm4oYOKukSAgICR7bWVzc2FnZX1gKSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBydW5VbmRlY29yYXRlZENsYXNzZXNNaWdyYXRpb24oXG4gICAgdHJlZTogVHJlZSwgdHNjb25maWdQYXRoOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcsXG4gICAgY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvcHJpdmF0ZS9taWdyYXRpb25zJykpOlxuICAgIHN0cmluZ1tdIHtcbiAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcbiAgY29uc3QgdXBkYXRlUmVjb3JkZXJzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBVcGRhdGVSZWNvcmRlcj4oKTtcbiAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFVuZGVjb3JhdGVkQ2xhc3Nlc1dpdGhEZWNvcmF0ZWRGaWVsZHNUcmFuc2Zvcm0oXG4gICAgICB0eXBlQ2hlY2tlciwgZ2V0VXBkYXRlUmVjb3JkZXIsIGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZSk7XG5cbiAgLy8gTWlncmF0ZSBhbGwgc291cmNlIGZpbGVzIGluIHRoZSBwcm9qZWN0LlxuICB0cmFuc2Zvcm0ubWlncmF0ZShzb3VyY2VGaWxlcykuZm9yRWFjaCgoe25vZGUsIG1lc3NhZ2V9KSA9PiB7XG4gICAgY29uc3Qgbm9kZVNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgICBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gcmVsYXRpdmUoYmFzZVBhdGgsIG5vZGVTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9XG4gICAgICAgIHRzLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U291cmNlRmlsZSgpLCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIGZhaWx1cmVzLnB1c2goYCR7cmVsYXRpdmVGaWxlUGF0aH1AJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfTogJHttZXNzYWdlfWApO1xuICB9KTtcblxuICAvLyBSZWNvcmQgdGhlIGNoYW5nZXMgY29sbGVjdGVkIGluIHRoZSBpbXBvcnQgbWFuYWdlci5cbiAgdHJhbnNmb3JtLnJlY29yZENoYW5nZXMoKTtcblxuICAvLyBXYWxrIHRocm91Z2ggZWFjaCB1cGRhdGUgcmVjb3JkZXIgYW5kIGNvbW1pdCB0aGUgdXBkYXRlLiBXZSBuZWVkIHRvIGNvbW1pdCB0aGVcbiAgLy8gdXBkYXRlcyBpbiBiYXRjaGVzIHBlciBzb3VyY2UgZmlsZSBhcyB0aGVyZSBjYW4gYmUgb25seSBvbmUgcmVjb3JkZXIgcGVyIHNvdXJjZVxuICAvLyBmaWxlIGluIG9yZGVyIHRvIGF2b2lkIHNoaWZ0ZWQgY2hhcmFjdGVyIG9mZnNldHMuXG4gIHVwZGF0ZVJlY29yZGVycy5mb3JFYWNoKHJlY29yZGVyID0+IHJlY29yZGVyLmNvbW1pdFVwZGF0ZSgpKTtcblxuICByZXR1cm4gZmFpbHVyZXM7XG5cbiAgLyoqIEdldHMgdGhlIHVwZGF0ZSByZWNvcmRlciBmb3IgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZS4gKi9cbiAgZnVuY3Rpb24gZ2V0VXBkYXRlUmVjb3JkZXIoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IFVwZGF0ZVJlY29yZGVyIHtcbiAgICBpZiAodXBkYXRlUmVjb3JkZXJzLmhhcyhzb3VyY2VGaWxlKSkge1xuICAgICAgcmV0dXJuIHVwZGF0ZVJlY29yZGVycy5nZXQoc291cmNlRmlsZSkhO1xuICAgIH1cbiAgICBjb25zdCB0cmVlUmVjb3JkZXIgPSB0cmVlLmJlZ2luVXBkYXRlKHJlbGF0aXZlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG4gICAgY29uc3QgcmVjb3JkZXI6IFVwZGF0ZVJlY29yZGVyID0ge1xuICAgICAgYWRkQ2xhc3NUb2RvKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0UmlnaHQobm9kZS5nZXRTdGFydCgpLCBgLy8gVE9ETzogJHttZXNzYWdlfVxcbmApO1xuICAgICAgfSxcbiAgICAgIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChub2RlLmdldFN0YXJ0KCksIGAke3RleHR9XFxuYCk7XG4gICAgICB9LFxuICAgICAgYWRkTmV3SW1wb3J0KHN0YXJ0OiBudW1iZXIsIGltcG9ydFRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRMZWZ0KHN0YXJ0LCBpbXBvcnRUZXh0KTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFeGlzdGluZ0ltcG9ydChuYW1lZEJpbmRpbmdzOiB0cy5OYW1lZEltcG9ydHMsIG5ld05hbWVkQmluZGluZ3M6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIucmVtb3ZlKG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmFtZWRCaW5kaW5ncy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdHJlZVJlY29yZGVyLmluc2VydFJpZ2h0KG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmV3TmFtZWRCaW5kaW5ncyk7XG4gICAgICB9LFxuICAgICAgY29tbWl0VXBkYXRlKCkge1xuICAgICAgICB0cmVlLmNvbW1pdFVwZGF0ZSh0cmVlUmVjb3JkZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgdXBkYXRlUmVjb3JkZXJzLnNldChzb3VyY2VGaWxlLCByZWNvcmRlcik7XG4gICAgcmV0dXJuIHJlY29yZGVyO1xuICB9XG59XG4iXX0=
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform" />
9
- import * as ts from 'typescript';
9
+ import ts from 'typescript';
10
10
  import { UpdateRecorder } from './update_recorder';
11
11
  interface AnalysisFailure {
12
12
  node: ts.Node;
@@ -15,11 +15,12 @@ interface AnalysisFailure {
15
15
  export declare class UndecoratedClassesWithDecoratedFieldsTransform {
16
16
  private typeChecker;
17
17
  private getUpdateRecorder;
18
+ private compilerCliMigrationsModule;
18
19
  private printer;
19
20
  private importManager;
20
21
  private reflectionHost;
21
22
  private partialEvaluator;
22
- constructor(typeChecker: ts.TypeChecker, getUpdateRecorder: (sf: ts.SourceFile) => UpdateRecorder);
23
+ constructor(typeChecker: ts.TypeChecker, getUpdateRecorder: (sf: ts.SourceFile) => UpdateRecorder, compilerCliMigrationsModule: typeof import('@angular/compiler-cli/private/migrations'));
23
24
  /**
24
25
  * Migrates the specified source files. The transform adds the abstract `@Directive`
25
26
  * decorator to undecorated classes that use Angular features. Class members which
@@ -5,21 +5,22 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
8
11
  (function (factory) {
9
12
  if (typeof module === "object" && typeof module.exports === "object") {
10
13
  var v = factory(require, exports);
11
14
  if (v !== undefined) module.exports = v;
12
15
  }
13
16
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform", ["require", "exports", "@angular/compiler-cli/src/ngtsc/partial_evaluator", "@angular/compiler-cli/src/ngtsc/reflection", "typescript", "@angular/core/schematics/utils/import_manager", "@angular/core/schematics/utils/ng_decorators", "@angular/core/schematics/utils/typescript/find_base_classes", "@angular/core/schematics/utils/typescript/functions", "@angular/core/schematics/utils/typescript/property_name"], factory);
17
+ define("@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/transform", ["require", "exports", "typescript", "@angular/core/schematics/utils/import_manager", "@angular/core/schematics/utils/ng_decorators", "@angular/core/schematics/utils/typescript/find_base_classes", "@angular/core/schematics/utils/typescript/functions", "@angular/core/schematics/utils/typescript/property_name"], factory);
15
18
  }
16
19
  })(function (require, exports) {
17
20
  "use strict";
18
21
  Object.defineProperty(exports, "__esModule", { value: true });
19
22
  exports.UndecoratedClassesWithDecoratedFieldsTransform = void 0;
20
- const partial_evaluator_1 = require("@angular/compiler-cli/src/ngtsc/partial_evaluator");
21
- const reflection_1 = require("@angular/compiler-cli/src/ngtsc/reflection");
22
- const ts = require("typescript");
23
+ const typescript_1 = __importDefault(require("typescript"));
23
24
  const import_manager_1 = require("@angular/core/schematics/utils/import_manager");
24
25
  const ng_decorators_1 = require("@angular/core/schematics/utils/ng_decorators");
25
26
  const find_base_classes_1 = require("@angular/core/schematics/utils/typescript/find_base_classes");
@@ -65,13 +66,14 @@
65
66
  /** TODO message that is added to ambiguous classes using Angular features. */
66
67
  const AMBIGUOUS_CLASS_TODO = 'Add Angular decorator.';
67
68
  class UndecoratedClassesWithDecoratedFieldsTransform {
68
- constructor(typeChecker, getUpdateRecorder) {
69
+ constructor(typeChecker, getUpdateRecorder, compilerCliMigrationsModule) {
69
70
  this.typeChecker = typeChecker;
70
71
  this.getUpdateRecorder = getUpdateRecorder;
71
- this.printer = ts.createPrinter();
72
+ this.compilerCliMigrationsModule = compilerCliMigrationsModule;
73
+ this.printer = typescript_1.default.createPrinter();
72
74
  this.importManager = new import_manager_1.ImportManager(this.getUpdateRecorder, this.printer);
73
- this.reflectionHost = new reflection_1.TypeScriptReflectionHost(this.typeChecker);
74
- this.partialEvaluator = new partial_evaluator_1.PartialEvaluator(this.reflectionHost, this.typeChecker, null);
75
+ this.reflectionHost = new this.compilerCliMigrationsModule.TypeScriptReflectionHost(this.typeChecker);
76
+ this.partialEvaluator = new this.compilerCliMigrationsModule.PartialEvaluator(this.reflectionHost, this.typeChecker, null);
75
77
  }
76
78
  /**
77
79
  * Migrates the specified source files. The transform adds the abstract `@Directive`
@@ -85,8 +87,8 @@
85
87
  const sourceFile = node.getSourceFile();
86
88
  const recorder = this.getUpdateRecorder(sourceFile);
87
89
  const directiveExpr = this.importManager.addImportToSourceFile(sourceFile, 'Directive', '@angular/core');
88
- const decoratorExpr = ts.createDecorator(ts.createCall(directiveExpr, undefined, undefined));
89
- recorder.addClassDecorator(node, this.printer.printNode(ts.EmitHint.Unspecified, decoratorExpr, sourceFile));
90
+ const decoratorExpr = typescript_1.default.createDecorator(typescript_1.default.createCall(directiveExpr, undefined, undefined));
91
+ recorder.addClassDecorator(node, this.printer.printNode(typescript_1.default.EmitHint.Unspecified, decoratorExpr, sourceFile));
90
92
  });
91
93
  // Ambiguous classes clearly use Angular features, but the migration is unable to
92
94
  // determine whether the class is used as directive, service or pipe. The migration
@@ -127,7 +129,7 @@
127
129
  const undecoratedClasses = new Set();
128
130
  const visitNode = (node) => {
129
131
  node.forEachChild(visitNode);
130
- if (!ts.isClassDeclaration(node)) {
132
+ if (!typescript_1.default.isClassDeclaration(node)) {
131
133
  return;
132
134
  }
133
135
  const { inferredKind, decoratedType } = this._analyzeClassDeclaration(node);
@@ -157,7 +159,7 @@
157
159
  */
158
160
  const checkInheritanceOfClasses = (classes) => {
159
161
  classes.forEach(node => {
160
- for (const { node: baseClass } of find_base_classes_1.findBaseClassDeclarations(node, this.typeChecker)) {
162
+ for (const { node: baseClass } of (0, find_base_classes_1.findBaseClassDeclarations)(node, this.typeChecker)) {
161
163
  if (!declarations.has(baseClass)) {
162
164
  continue;
163
165
  }
@@ -199,7 +201,7 @@
199
201
  * is a directive, is an abstract directive, or uses Angular features.
200
202
  */
201
203
  _analyzeClassDeclaration(node) {
202
- const ngDecorators = node.decorators && ng_decorators_1.getAngularDecorators(this.typeChecker, node.decorators);
204
+ const ngDecorators = node.decorators && (0, ng_decorators_1.getAngularDecorators)(this.typeChecker, node.decorators);
203
205
  const inferredKind = this._determineClassKind(node);
204
206
  if (ngDecorators === undefined || ngDecorators.length === 0) {
205
207
  return { decoratedType: null, inferredKind };
@@ -236,11 +238,11 @@
236
238
  if (metadataArgs.length === 0) {
237
239
  return true;
238
240
  }
239
- const metadataExpr = functions_1.unwrapExpression(metadataArgs[0]);
240
- if (!ts.isObjectLiteralExpression(metadataExpr)) {
241
+ const metadataExpr = (0, functions_1.unwrapExpression)(metadataArgs[0]);
242
+ if (!typescript_1.default.isObjectLiteralExpression(metadataExpr)) {
241
243
  return false;
242
244
  }
243
- const metadata = reflection_1.reflectObjectLiteral(metadataExpr);
245
+ const metadata = this.compilerCliMigrationsModule.reflectObjectLiteral(metadataExpr);
244
246
  if (!metadata.has('selector')) {
245
247
  return false;
246
248
  }
@@ -256,14 +258,14 @@
256
258
  _determineClassKind(node) {
257
259
  let usage = InferredKind.UNKNOWN;
258
260
  for (const member of node.members) {
259
- const propertyName = member.name !== undefined ? property_name_1.getPropertyNameText(member.name) : null;
261
+ const propertyName = member.name !== undefined ? (0, property_name_1.getPropertyNameText)(member.name) : null;
260
262
  // If the class declares any of the known directive lifecycle hooks, we can
261
263
  // immediately exit the loop as the class is guaranteed to be a directive.
262
264
  if (propertyName !== null && DIRECTIVE_LIFECYCLE_HOOKS.has(propertyName)) {
263
265
  return InferredKind.DIRECTIVE;
264
266
  }
265
267
  const ngDecorators = member.decorators !== undefined ?
266
- ng_decorators_1.getAngularDecorators(this.typeChecker, member.decorators) :
268
+ (0, ng_decorators_1.getAngularDecorators)(this.typeChecker, member.decorators) :
267
269
  [];
268
270
  for (const { name } of ngDecorators) {
269
271
  if (DIRECTIVE_FIELD_DECORATORS.has(name)) {
@@ -287,14 +289,14 @@
287
289
  */
288
290
  _hasBeenReportedAsAmbiguous(node) {
289
291
  const sourceFile = node.getSourceFile();
290
- const leadingComments = ts.getLeadingCommentRanges(sourceFile.text, node.pos);
292
+ const leadingComments = typescript_1.default.getLeadingCommentRanges(sourceFile.text, node.pos);
291
293
  if (leadingComments === undefined) {
292
294
  return false;
293
295
  }
294
- return leadingComments.some(({ kind, pos, end }) => kind === ts.SyntaxKind.SingleLineCommentTrivia &&
296
+ return leadingComments.some(({ kind, pos, end }) => kind === typescript_1.default.SyntaxKind.SingleLineCommentTrivia &&
295
297
  sourceFile.text.substring(pos, end).includes(`TODO: ${AMBIGUOUS_CLASS_TODO}`));
296
298
  }
297
299
  }
298
300
  exports.UndecoratedClassesWithDecoratedFieldsTransform = UndecoratedClassesWithDecoratedFieldsTransform;
299
301
  });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILHlGQUFtRjtJQUNuRiwyRUFBMEc7SUFDMUcsaUNBQWlDO0lBRWpDLGtGQUF5RDtJQUN6RCxnRkFBNEU7SUFDNUUsbUdBQW1GO0lBQ25GLG1GQUFrRTtJQUNsRSwyRkFBeUU7SUFJekU7OztPQUdHO0lBQ0gsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWE7UUFDaEcsY0FBYztLQUNmLENBQUMsQ0FBQztJQUVIOzs7T0FHRztJQUNILE1BQU0seUJBQXlCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDeEMsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CO1FBQy9FLG9CQUFvQixFQUFFLHVCQUF1QjtLQUM5QyxDQUFDLENBQUM7SUFFSDs7O09BR0c7SUFDSCxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUUzRCxxRUFBcUU7SUFDckUsSUFBSyxZQUlKO0lBSkQsV0FBSyxZQUFZO1FBQ2YseURBQVMsQ0FBQTtRQUNULHlEQUFTLENBQUE7UUFDVCxxREFBTyxDQUFBO0lBQ1QsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0lBRUQsd0RBQXdEO0lBQ3hELElBQUssZUFNSjtJQU5ELFdBQUssZUFBZTtRQUNsQiwrREFBUyxDQUFBO1FBQ1QsK0RBQVMs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b0JBQ3hFLEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO2lCQUNoQzthQUNGO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSywyQkFBMkIsQ0FBQyxJQUF5QjtZQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlFLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtnQkFDakMsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QjtnQkFDaEUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7S0FDRjtJQTlQRCx3R0E4UEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtQYXJ0aWFsRXZhbHVhdG9yfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yJztcbmltcG9ydCB7cmVmbGVjdE9iamVjdExpdGVyYWwsIFR5cGVTY3JpcHRSZWZsZWN0aW9uSG9zdH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnMsIE5nRGVjb3JhdG9yfSBmcm9tICcuLi8uLi91dGlscy9uZ19kZWNvcmF0b3JzJztcbmltcG9ydCB7ZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9maW5kX2Jhc2VfY2xhc3Nlcyc7XG5pbXBvcnQge3Vud3JhcEV4cHJlc3Npb259IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvZnVuY3Rpb25zJztcbmltcG9ydCB7Z2V0UHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9wcm9wZXJ0eV9uYW1lJztcblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBkZWNvcmF0b3JzIHRoYXQgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCBjbGFzcyBuZWVkcyBhIGRpcmVjdGl2ZVxuICogZGVmaW5pdGlvbi4gVGhlc2UgZGVjb3JhdG9ycyBhcmUgYWx3YXlzIHNwZWNpZmljIHRvIGRpcmVjdGl2ZXMuXG4gKi9cbmNvbnN0IERJUkVDVElWRV9GSUVMRF9ERUNPUkFUT1JTID0gbmV3IFNldChbXG4gICdJbnB1dCcsICdPdXRwdXQnLCAnVmlld0NoaWxkJywgJ1ZpZXdDaGlsZHJlbicsICdDb250ZW50Q2hpbGQnLCAnQ29udGVudENoaWxkcmVuJywgJ0hvc3RCaW5kaW5nJyxcbiAgJ0hvc3RMaXN0ZW5lcidcbl0pO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBsaWZlY3ljbGUgaG9va3MgdGhhdCBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IGNsYXNzIG5lZWRzIGEgZGlyZWN0aXZlXG4gKiBkZWZpbml0aW9uLiBUaGVzZSBsaWZlY3ljbGUgaG9va3MgYXJlIGFsd2F5cyBzcGVjaWZpYyB0byBkaXJlY3RpdmVzLlxuICovXG5jb25zdCBESVJFQ1RJVkVfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbXG4gICduZ09uQ2hhbmdlcycsICduZ09uSW5pdCcsICduZ0RvQ2hlY2snLCAnbmdBZnRlclZpZXdJbml0JywgJ25nQWZ0ZXJWaWV3Q2hlY2tlZCcsXG4gICduZ0FmdGVyQ29udGVudEluaXQnLCAnbmdBZnRlckNvbnRlbnRDaGVja2VkJ1xuXSk7XG5cbi8qKlxuICogU2V0IG9mIGtub3duIGxpZmVjeWNsZSBob29rcyB0aGF0IGluZGljYXRlIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXJcbiAqIGZlYXR1cmVzLCBidXQgaXQncyBhbWJpZ3VvdXMgd2hldGhlciBpdCBpcyBhIGRpcmVjdGl2ZSBvciBzZXJ2aWNlLlxuICovXG5jb25zdCBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbJ25nT25EZXN0cm95J10pO1xuXG4vKiogRGVzY3JpYmVzIGhvdyBhIGdpdmVuIGNsYXNzIGlzIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgQW5ndWxhci4gKi9cbmVudW0gSW5mZXJyZWRLaW5kIHtcbiAgRElSRUNUSVZFLFxuICBBTUJJR1VPVVMsXG4gIFVOS05PV04sXG59XG5cbi8qKiBEZXNjcmliZXMgcG9zc2libGUgdHlwZXMgb2YgQW5ndWxhciBkZWNsYXJhdGlvbnMuICovXG5lbnVtIERlY2xhcmF0aW9uVHlwZSB7XG4gIERJUkVDVElWRSxcbiAgQ09NUE9ORU5ULFxuICBBQlNUUkFDVF9ESVJFQ1RJVkUsXG4gIFBJUEUsXG4gIElOSkVDVEFCTEUsXG59XG5cbi8qKiBBbmFseXplZCBjbGFzcyBkZWNsYXJhdGlvbi4gKi9cbmludGVyZmFjZSBBbmFseXplZENsYXNzIHtcbiAgLyoqIFR5cGUgb2YgZGVjbGFyYXRpb24gdGhhdCBpcyBkZXRlcm1pbmVkIHRocm91Z2ggYW4gYXBwbGllZCBkZWNvcmF0b3IuICovXG4gIGRlY29yYXRlZFR5cGU6IERlY2xhcmF0aW9uVHlwZXxudWxsO1xuICAvKiogSW5mZXJyZWQgY2xhc3Mga2luZCBpbiB0ZXJtcyBvZiBBbmd1bGFyLiAqL1xuICBpbmZlcnJlZEtpbmQ6IEluZmVycmVkS2luZDtcbn1cblxuaW50ZXJmYWNlIEFuYWx5c2lzRmFpbHVyZSB7XG4gIG5vZGU6IHRzLk5vZGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRPRE8gbWVzc2FnZSB0aGF0IGlzIGFkZGVkIHRvIGFtYmlndW91cyBjbGFzc2VzIHVzaW5nIEFuZ3VsYXIgZmVhdHVyZXMuICovXG5jb25zdCBBTUJJR1VPVVNfQ0xBU1NfVE9ETyA9ICdBZGQgQW5ndWxhciBkZWNvcmF0b3IuJztcblxuZXhwb3J0IGNsYXNzIFVuZGVjb3JhdGVkQ2xhc3Nlc1dpdGhEZWNvcmF0ZWRGaWVsZHNUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIHByaXZhdGUgaW1wb3J0TWFuYWdlciA9IG5ldyBJbXBvcnRNYW5hZ2VyKHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIsIHRoaXMucHJpbnRlcik7XG4gIHByaXZhdGUgcmVmbGVjdGlvbkhvc3QgPSBuZXcgVHlwZVNjcmlwdFJlZmxlY3Rpb25Ib3N0KHRoaXMudHlwZUNoZWNrZXIpO1xuICBwcml2YXRlIHBhcnRpYWxFdmFsdWF0b3IgPSBuZXcgUGFydGlhbEV2YWx1YXRvcih0aGlzLnJlZmxlY3Rpb25Ib3N0LCB0aGlzLnR5cGVDaGVja2VyLCBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJpdmF0ZSBnZXRVcGRhdGVSZWNvcmRlcjogKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiBVcGRhdGVSZWNvcmRlcikge31cblxuICAvKipcbiAgICogTWlncmF0ZXMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIFRoZSB0cmFuc2Zvcm0gYWRkcyB0aGUgYWJzdHJhY3QgYEBEaXJlY3RpdmVgXG4gICAqIGRlY29yYXRvciB0byB1bmRlY29yYXRlZCBjbGFzc2VzIHRoYXQgdXNlIEFuZ3VsYXIgZmVhdHVyZXMuIENsYXNzIG1lbWJlcnMgd2hpY2hcbiAgICogYXJlIGRlY29yYXRlZCB3aXRoIGFueSBBbmd1bGFyIGRlY29yYXRvciwgb3IgY2xhc3MgbWVtYmVycyBmb3IgbGlmZWN5Y2xlIGhvb2tzIGFyZVxuICAgKiBpbmRpY2F0aW5nIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMuIGh0dHBzOi8vaGFja21kLmlvL3Z1UWZhdnpmUkc2S1VDdFU3b0tfRUFcbiAgICovXG4gIG1pZ3JhdGUoc291cmNlRmlsZXM6IHRzLlNvdXJjZUZpbGVbXSk6IEFuYWx5c2lzRmFpbHVyZVtdIHtcbiAgICBjb25zdCB7ZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMsIGFtYmlndW91c0NsYXNzZXN9ID1cbiAgICAgICAgdGhpcy5fZmluZFVuZGVjb3JhdGVkQWJzdHJhY3REaXJlY3RpdmVzKHNvdXJjZUZpbGVzKTtcblxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgICBjb25zdCByZWNvcmRlciA9IHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIoc291cmNlRmlsZSk7XG4gICAgICBjb25zdCBkaXJlY3RpdmVFeHByID1cbiAgICAgICAgICB0aGlzLmltcG9ydE1hbmFnZXIuYWRkSW1wb3J0VG9Tb3VyY2VGaWxlKHNvdXJjZUZpbGUsICdEaXJlY3RpdmUnLCAnQGFuZ3VsYXIvY29yZScpO1xuICAgICAgY29uc3QgZGVjb3JhdG9yRXhwciA9IHRzLmNyZWF0ZURlY29yYXRvcih0cy5jcmVhdGVDYWxsKGRpcmVjdGl2ZUV4cHIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgICByZWNvcmRlci5hZGRDbGFzc0RlY29yYXRvcihcbiAgICAgICAgICBub2RlLCB0aGlzLnByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBkZWNvcmF0b3JFeHByLCBzb3VyY2VGaWxlKSk7XG4gICAgfSk7XG5cbiAgICAvLyBBbWJpZ3VvdXMgY2xhc3NlcyBjbGVhcmx5IHVzZSBBbmd1bGFyIGZlYXR1cmVzLCBidXQgdGhlIG1pZ3JhdGlvbiBpcyB1bmFibGUgdG9cbiAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2xhc3MgaXMgdXNlZCBhcyBkaXJlY3RpdmUsIHNlcnZpY2Ugb3IgcGlwZS4gVGhlIG1pZ3JhdGlvblxuICAgIC8vIGNvdWxkIHBvdGVudGlhbGx5IGRldGVybWluZSB0aGUgdHlwZSBieSBjaGVja2luZyBOZ01vZHVsZSBkZWZpbml0aW9ucyBvciBpbmhlcml0YW5jZVxuICAgIC8vIG9mIG90aGVyIGtub3duIGRlY2xhcmF0aW9ucywgYnV0IHRoaXMgaXMgb3V0IG9mIHNjb3BlIGFuZCBhIFRPRE8vZmFpbHVyZSBpcyBzdWZmaWNpZW50LlxuICAgIHJldHVybiBBcnJheS5mcm9tKGFtYmlndW91c0NsYXNzZXMpLnJlZHVjZSgoZmFpbHVyZXMsIG5vZGUpID0+IHtcbiAgICAgIC8vIElmIHRoZSBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgYmVmb3JlLCBza2lwIGFkZGluZyBhIFRPRE8gYW5kXG4gICAgICAvLyBwcmludGluZyBhbiBlcnJvci4gQSBjbGFzcyBjb3VsZCBiZSB2aXNpdGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gaXQncyBwYXJ0XG4gICAgICAvLyBvZiBtdWx0aXBsZSBidWlsZCB0YXJnZXRzIGluIHRoZSBDTEkgcHJvamVjdC5cbiAgICAgIGlmICh0aGlzLl9oYXNCZWVuUmVwb3J0ZWRBc0FtYmlndW91cyhub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFpbHVyZXM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlKTtcblxuICAgICAgLy8gQWRkIGEgVE9ETyB0byB0aGUgY2xhc3MgdGhhdCB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGlzIG5vdCBkZWNvcmF0ZWQuXG4gICAgICByZWNvcmRlci5hZGRDbGFzc1RvZG8obm9kZSwgQU1CSUdVT1VTX0NMQVNTX1RPRE8pO1xuXG4gICAgICAvLyBBZGQgYW4gZXJyb3IgZm9yIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUgcHJpbnRlZCBpbiB0aGUgYG5nIHVwZGF0ZWAgb3V0cHV0LlxuICAgICAgcmV0dXJuIGZhaWx1cmVzLmNvbmNhdCh7XG4gICAgICAgIG5vZGUsXG4gICAgICAgIG1lc3NhZ2U6ICdDbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGNhbm5vdCBiZSBtaWdyYXRlZCBhdXRvbWF0aWNhbGx5LiBQbGVhc2UgJyArXG4gICAgICAgICAgICAnYWRkIGFuIGFwcHJvcHJpYXRlIEFuZ3VsYXIgZGVjb3JhdG9yLidcbiAgICAgIH0pO1xuICAgIH0sIFtdIGFzIEFuYWx5c2lzRmFpbHVyZVtdKTtcbiAgfVxuXG4gIC8qKiBSZWNvcmRzIGFsbCBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBpbXBvcnQgbWFuYWdlci4gKi9cbiAgcmVjb3JkQ2hhbmdlcygpIHtcbiAgICB0aGlzLmltcG9ydE1hbmFnZXIucmVjb3JkQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHVuZGVjb3JhdGVkIGFic3RyYWN0IGRpcmVjdGl2ZXMgaW4gdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIEFsc28gcmV0dXJuc1xuICAgKiBhIHNldCBvZiB1bmRlY29yYXRlZCBjbGFzc2VzIHdoaWNoIGNvdWxkIG5vdCBiZSBkZXRlY3RlZCBhcyBndWFyYW50ZWVkIGFic3RyYWN0XG4gICAqIGRpcmVjdGl2ZXMuIFRob3NlIGFyZSBhbWJpZ3VvdXMgYW5kIGNvdWxkIGJlIGVpdGhlciBEaXJlY3RpdmUsIFBpcGUgb3Igc2VydmljZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRVbmRlY29yYXRlZEFic3RyYWN0RGlyZWN0aXZlcyhzb3VyY2VGaWxlczogdHMuU291cmNlRmlsZVtdKSB7XG4gICAgY29uc3QgYW1iaWd1b3VzQ2xhc3NlcyA9IG5ldyBTZXQ8dHMuQ2xhc3NEZWNsYXJhdGlvbj4oKTtcbiAgICBjb25zdCBkZWNsYXJhdGlvbnMgPSBuZXcgV2Vha01hcDx0cy5DbGFzc0RlY2xhcmF0aW9uLCBEZWNsYXJhdGlvblR5cGU+KCk7XG4gICAgY29uc3QgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMgPSBuZXcgU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KCk7XG4gICAgY29uc3QgdW5kZWNvcmF0ZWRDbGFzc2VzID0gbmV3IFNldDx0cy5DbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gICAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIG5vZGUuZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gICAgICBpZiAoIXRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7aW5mZXJyZWRLaW5kLCBkZWNvcmF0ZWRUeXBlfSA9IHRoaXMuX2FuYWx5emVDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuXG4gICAgICBpZiAoZGVjb3JhdGVkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBkZWNsYXJhdGlvbnMuc2V0KG5vZGUsIGRlY29yYXRlZFR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5ESVJFQ1RJVkUpIHtcbiAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5BTUJJR1VPVVMpIHtcbiAgICAgICAgYW1iaWd1b3VzQ2xhc3Nlcy5hZGQobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bmRlY29yYXRlZENsYXNzZXMuYWRkKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzb3VyY2VGaWxlcy5mb3JFYWNoKHNvdXJjZUZpbGUgPT4gc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQodmlzaXROb2RlKSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBnaXZlbiBzZXQgb2YgY2xhc3Nlcy4gSXQgcmVtb3ZlcyBjbGFzc2VzIGZyb20gdGhlXG4gICAgICogZGV0ZWN0ZWQgYWJzdHJhY3QgZGlyZWN0aXZlcyBzZXQgd2hlbiB0aGV5IGluaGVyaXQgZnJvbSBhIG5vbi1hYnN0cmFjdCBBbmd1bGFyXG4gICAgICogZGVjbGFyYXRpb24uIGUuZy4gYW4gYWJzdHJhY3QgZGlyZWN0aXZlIGNhbiBuZXZlciBleHRlbmQgZnJvbSBhIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIElmIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbiBhYnN0cmFjdCBkaXJlY3RpdmUgdGhvdWdoLCB3ZSB3aWxsIG1pZ3JhdGUgdGhlbSB0b29cbiAgICAgKiBhcyBkZXJpdmVkIGNsYXNzZXMgYWxzbyBuZWVkIHRvIGJlIGRlY29yYXRlZC4gVGhpcyBoYXMgYmVlbiBkb25lIGZvciBhIHNpbXBsZXIgbWVudGFsXG4gICAgICogbW9kZWwgYW5kIHJlZHVjZWQgY29tcGxleGl0eSBpbiB0aGUgQW5ndWxhciBjb21waWxlci4gU2VlIG1pZ3JhdGlvbiBwbGFuIGRvY3VtZW50LlxuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrSW5oZXJpdGFuY2VPZkNsYXNzZXMgPSAoY2xhc3NlczogU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KSA9PiB7XG4gICAgICBjbGFzc2VzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qge25vZGU6IGJhc2VDbGFzc30gb2YgZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9ucyhub2RlLCB0aGlzLnR5cGVDaGVja2VyKSkge1xuICAgICAgICAgIGlmICghZGVjbGFyYXRpb25zLmhhcyhiYXNlQ2xhc3MpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSWYgdGhlIHVuZGVjb3JhdGVkIGNsYXNzIGluaGVyaXRzIGZyb20gYW4gYWJzdHJhY3QgZGlyZWN0aXZlLCBhbHdheXMgbWlncmF0ZSBpdC5cbiAgICAgICAgICAvLyBEZXJpdmVkIHVuZGVjb3JhdGVkIGNsYXNzZXMgb2YgYWJzdHJhY3QgZGlyZWN0aXZlcyBhcmUgYWx3YXlzIGFsc28gY29uc2lkZXJlZFxuICAgICAgICAgIC8vIGFic3RyYWN0IGRpcmVjdGl2ZXMgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkIHRvby4gVGhpcyBpcyBuZWNlc3NhcnkgYXMgb3RoZXJ3aXNlXG4gICAgICAgICAgLy8gdGhlIGluaGVyaXRhbmNlIGNoYWluIGNhbm5vdCBiZSByZXNvbHZlZCBieSB0aGUgQW5ndWxhciBjb21waWxlci4gZS5nLiB3aGVuIGl0XG4gICAgICAgICAgLy8gZmxhdHRlbnMgZGlyZWN0aXZlIG1ldGFkYXRhIGZvciB0eXBlIGNoZWNraW5nLiBJbiB0aGUgb3RoZXIgY2FzZSwgd2UgbmV2ZXIgd2FudFxuICAgICAgICAgIC8vIHRvIG1pZ3JhdGUgYSBjbGFzcyBpZiBpdCBleHRlbmRzIGZyb20gYSBub24tYWJzdHJhY3QgQW5ndWxhciBkZWNsYXJhdGlvbi4gVGhhdFxuICAgICAgICAgIC8vIGlzIGFuIHVuc3VwcG9ydGVkIHBhdHRlcm4gYXMgb2YgdjkgYW5kIHdhcyBwcmV2aW91c2x5IGhhbmRsZWQgd2l0aCB0aGVcbiAgICAgICAgICAvLyBgdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpYCBtaWdyYXRpb24gKHdoaWNoIGNvcGllZCB0aGUgaW5oZXJpdGVkIGRlY29yYXRvcikuXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9ucy5nZXQoYmFzZUNsYXNzKSA9PT0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRSkge1xuICAgICAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXRlY3RlZEFic3RyYWN0RGlyZWN0aXZlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFtYmlndW91c0NsYXNzZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgYW55IGRldGVjdGVkIGFic3RyYWN0IGRpcmVjdGl2ZS4gV2Ugd2FudCB0byByZW1vdmVcbiAgICAvLyBjbGFzc2VzIHRoYXQgYXJlIG5vdCBlbGlnaWJsZSBhYnN0cmFjdCBkaXJlY3RpdmVzIGR1ZSB0byBpbmhlcml0YW5jZS4gaS5lLlxuICAgIC8vIGlmIGEgY2xhc3MgZXh0ZW5kcyBmcm9tIGEgY29tcG9uZW50LCBpdCBjYW5ub3QgYmUgYSBkZXJpdmVkIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzKTtcbiAgICAvLyBVcGRhdGUgdGhlIGNsYXNzIGRlY2xhcmF0aW9ucyB0byByZWZsZWN0IHRoZSBkZXRlY3RlZCBhYnN0cmFjdCBkaXJlY3RpdmVzLiBUaGlzIGlzXG4gICAgLy8gdGhlbiB1c2VkIGxhdGVyIHdoZW4gd2UgY2hlY2sgZm9yIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gYW4gYWJzdHJhY3RcbiAgICAvLyBkaXJlY3RpdmUgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkLlxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2goXG4gICAgICAgIG4gPT4gZGVjbGFyYXRpb25zLnNldChuLCBEZWNsYXJhdGlvblR5cGUuQUJTVFJBQ1RfRElSRUNUSVZFKSk7XG4gICAgLy8gQ2hlY2sgYW1iaWd1b3VzIGFuZCB1bmRlY29yYXRlZCBjbGFzc2VzIGlmIHRoZXkgaW5oZXJpdCBmcm9tIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICAvLyBJZiB0aGV5IGRvLCB3ZSB3YW50IHRvIG1pZ3JhdGUgdGhlbSB0b28uIFNlZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBtb3JlIGRldGFpbHMuXG4gICAgY2hlY2tJbmhlcml0YW5jZU9mQ2xhc3NlcyhhbWJpZ3VvdXNDbGFzc2VzKTtcbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKHVuZGVjb3JhdGVkQ2xhc3Nlcyk7XG5cbiAgICByZXR1cm4ge2RldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLCBhbWJpZ3VvdXNDbGFzc2VzfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmFseXplcyB0aGUgZ2l2ZW4gY2xhc3MgZGVjbGFyYXRpb24gYnkgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgY2xhc3NcbiAgICogaXMgYSBkaXJlY3RpdmUsIGlzIGFuIGFic3RyYWN0IGRpcmVjdGl2ZSwgb3IgdXNlcyBBbmd1bGFyIGZlYXR1cmVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfYW5hbHl6ZUNsYXNzRGVjbGFyYXRpb24obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEFuYWx5emVkQ2xhc3Mge1xuICAgIGNvbnN0IG5nRGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycyAmJiBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmRlY29yYXRvcnMpO1xuICAgIGNvbnN0IGluZmVycmVkS2luZCA9IHRoaXMuX2RldGVybWluZUNsYXNzS2luZChub2RlKTtcbiAgICBpZiAobmdEZWNvcmF0b3JzID09PSB1bmRlZmluZWQgfHwgbmdEZWNvcmF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtkZWNvcmF0ZWRUeXBlOiBudWxsLCBpbmZlcnJlZEtpbmR9O1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3RpdmVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnRGlyZWN0aXZlJyk7XG4gICAgY29uc3QgY29tcG9uZW50RGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ0NvbXBvbmVudCcpO1xuICAgIGNvbnN0IHBpcGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnUGlwZScpO1xuICAgIGNvbnN0IGluamVjdGFibGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnSW5qZWN0YWJsZScpO1xuICAgIGNvbnN0IGlzQWJzdHJhY3REaXJlY3RpdmUgPVxuICAgICAgICBkaXJlY3RpdmVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9pc0Fic3RyYWN0RGlyZWN0aXZlKGRpcmVjdGl2ZURlY29yYXRvcik7XG5cbiAgICBsZXQgZGVjb3JhdGVkVHlwZTogRGVjbGFyYXRpb25UeXBlfG51bGwgPSBudWxsO1xuICAgIGlmIChpc0Fic3RyYWN0RGlyZWN0aXZlKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKGNvbXBvbmVudERlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkNPTVBPTkVOVDtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGl2ZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkRJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKHBpcGVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVjb3JhdGVkVHlwZSA9IERlY2xhcmF0aW9uVHlwZS5QSVBFO1xuICAgIH0gZWxzZSBpZiAoaW5qZWN0YWJsZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLklOSkVDVEFCTEU7XG4gICAgfVxuICAgIHJldHVybiB7ZGVjb3JhdGVkVHlwZSwgaW5mZXJyZWRLaW5kfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gZGVjb3JhdG9yIHJlc29sdmVzIHRvIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS4gQW4gZGlyZWN0aXZlIGlzXG4gICAqIGNvbnNpZGVyZWQgXCJhYnN0cmFjdFwiIGlmIHRoZXJlIGlzIG5vIHNlbGVjdG9yIHNwZWNpZmllZC5cbiAgICovXG4gIHByaXZhdGUgX2lzQWJzdHJhY3REaXJlY3RpdmUoe25vZGV9OiBOZ0RlY29yYXRvcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1ldGFkYXRhQXJncyA9IG5vZGUuZXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gICAgaWYgKG1ldGFkYXRhQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YUV4cHIgPSB1bndyYXBFeHByZXNzaW9uKG1ldGFkYXRhQXJnc1swXSk7XG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG1ldGFkYXRhRXhwcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWRhdGEgPSByZWZsZWN0T2JqZWN0TGl0ZXJhbChtZXRhZGF0YUV4cHIpO1xuICAgIGlmICghbWV0YWRhdGEuaGFzKCdzZWxlY3RvcicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5wYXJ0aWFsRXZhbHVhdG9yLmV2YWx1YXRlKG1ldGFkYXRhLmdldCgnc2VsZWN0b3InKSEpO1xuICAgIHJldHVybiBzZWxlY3RvciA9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGtpbmQgb2YgYSBnaXZlbiBjbGFzcyBpbiB0ZXJtcyBvZiBBbmd1bGFyLiBUaGUgbWV0aG9kIGNoZWNrc1xuICAgKiB3aGV0aGVyIHRoZSBnaXZlbiBjbGFzcyBoYXMgbWVtYmVycyB0aGF0IGluZGljYXRlIHRoZSB1c2Ugb2YgQW5ndWxhciBmZWF0dXJlcy5cbiAgICogZS5nLiBsaWZlY3ljbGUgaG9va3Mgb3IgZGVjb3JhdGVkIG1lbWJlcnMgbGlrZSBgQElucHV0YCBvciBgQE91dHB1dGAgYXJlXG4gICAqIGNvbnNpZGVyZWQgQW5ndWxhciBmZWF0dXJlcy4uXG4gICAqL1xuICBwcml2YXRlIF9kZXRlcm1pbmVDbGFzc0tpbmQobm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEluZmVycmVkS2luZCB7XG4gICAgbGV0IHVzYWdlID0gSW5mZXJyZWRLaW5kLlVOS05PV047XG5cbiAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IG1lbWJlci5uYW1lICE9PSB1bmRlZmluZWQgPyBnZXRQcm9wZXJ0eU5hbWVUZXh0KG1lbWJlci5uYW1lKSA6IG51bGw7XG5cbiAgICAgIC8vIElmIHRoZSBjbGFzcyBkZWNsYXJlcyBhbnkgb2YgdGhlIGtub3duIGRpcmVjdGl2ZSBsaWZlY3ljbGUgaG9va3MsIHdlIGNhblxuICAgICAgLy8gaW1tZWRpYXRlbHkgZXhpdCB0aGUgbG9vcCBhcyB0aGUgY2xhc3MgaXMgZ3VhcmFudGVlZCB0byBiZSBhIGRpcmVjdGl2ZS5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IG51bGwgJiYgRElSRUNUSVZFX0xJRkVDWUNMRV9IT09LUy5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gSW5mZXJyZWRLaW5kLkRJUkVDVElWRTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmdEZWNvcmF0b3JzID0gbWVtYmVyLmRlY29yYXRvcnMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgZ2V0QW5ndWxhckRlY29yYXRvcnModGhpcy50eXBlQ2hlY2tlciwgbWVtYmVyLmRlY29yYXRvcnMpIDpcbiAgICAgICAgICBbXTtcbiAgICAgIGZvciAoY29uc3Qge25hbWV9IG9mIG5nRGVjb3JhdG9ycykge1xuICAgICAgICBpZiAoRElSRUNUSVZFX0ZJRUxEX0RFQ09SQVRPUlMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIEluZmVycmVkS2luZC5ESVJFQ1RJVkU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIGNsYXNzIGRlY2xhcmVzIGFueSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tzIHRoYXQgZG8gbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAvLyB0aGUgZ2l2ZW4gY2xhc3MgaXMgYSBkaXJlY3RpdmUsIHVwZGF0ZSB0aGUga2luZCBhbmQgY29udGludWUgbG9va2luZyBmb3Igb3RoZXJcbiAgICAgIC8vIG1lbWJlcnMgdGhhdCB3b3VsZCB1bnZlaWwgYSBtb3JlIHNwZWNpZmljIGtpbmQgKGkuZS4gYmVpbmcgYSBkaXJlY3RpdmUpLlxuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gbnVsbCAmJiBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTLmhhcyhwcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIHVzYWdlID0gSW5mZXJyZWRLaW5kLkFNQklHVU9VUztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgaW4gcHJldmlvdXNcbiAgICogbWlncmF0aW9uIHJ1bi4gZS5nLiB3aGVuIGJ1aWxkIHRhcmdldHMgYXJlIG1pZ3JhdGVkIGZpcnN0LCBhbmQgdGhlbiB0ZXN0XG4gICAqIHRhcmdldHMgdGhhdCBoYXZlIGFuIG92ZXJsYXAgd2l0aCBidWlsZCBzb3VyY2UgZmlsZXMsIHRoZSBzYW1lIGNsYXNzXG4gICAqIGNvdWxkIGJlIGRldGVjdGVkIGFzIGFtYmlndW91cy5cbiAgICovXG4gIHByaXZhdGUgX2hhc0JlZW5SZXBvcnRlZEFzQW1iaWd1b3VzKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gdHMuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoc291cmNlRmlsZS50ZXh0LCBub2RlLnBvcyk7XG4gICAgaWYgKGxlYWRpbmdDb21tZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsZWFkaW5nQ29tbWVudHMuc29tZShcbiAgICAgICAgKHtraW5kLCBwb3MsIGVuZH0pID0+IGtpbmQgPT09IHRzLlN5bnRheEtpbmQuU2luZ2xlTGluZUNvbW1lbnRUcml2aWEgJiZcbiAgICAgICAgICAgIHNvdXJjZUZpbGUudGV4dC5zdWJzdHJpbmcocG9zLCBlbmQpLmluY2x1ZGVzKGBUT0RPOiAke0FNQklHVU9VU19DTEFTU19UT0RPfWApKTtcbiAgfVxufVxuIl19
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUU1QixrRkFBeUQ7SUFDekQsZ0ZBQTRFO0lBQzVFLG1HQUFtRjtJQUNuRixtRkFBa0U7SUFDbEUsMkZBQXlFO0lBSXpFOzs7T0FHRztJQUNILE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhO1FBQ2hHLGNBQWM7S0FDZixDQUFDLENBQUM7SUFFSDs7O09BR0c7SUFDSCxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUFDO1FBQ3hDLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQjtRQUMvRSxvQkFBb0IsRUFBRSx1QkFBdUI7S0FDOUMsQ0FBQyxDQUFDO0lBRUg7OztPQUdHO0lBQ0gsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFM0QscUVBQXFFO0lBQ3JFLElBQUssWUFJSjtJQUpELFdBQUssWUFBWTtRQUNmLHlEQUFTLENBQUE7UUFDVCx5REFBUyxDQUFBO1FBQ1QscURBQU8sQ0FBQTtJQUNULENBQUMsRUFKSSxZQUFZLEtBQVosWUFBWSxRQUloQjtJQUVELHdEQUF3RDtJQUN4RCxJQUFLLGVBTUo7SUFORCxXQUFLLGVBQWU7UUFDbEIsK0RBQVMsQ0FBQTtRQUNULCtEQUFTLENBQUE7UUFDVCxpRkFBa0IsQ0FBQTtR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QUMvQjtpQkFDRjtnQkFFRCw4RUFBOEU7Z0JBQzlFLGlGQUFpRjtnQkFDakYsMkVBQTJFO2dCQUMzRSxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUN4RSxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztpQkFDaEM7YUFDRjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVEOzs7OztXQUtHO1FBQ0ssMkJBQTJCLENBQUMsSUFBeUI7WUFDM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sZUFBZSxHQUFHLG9CQUFFLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUN2QixDQUFDLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLG9CQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QjtnQkFDaEUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7S0FDRjtJQWxRRCx3R0FrUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnMsIE5nRGVjb3JhdG9yfSBmcm9tICcuLi8uLi91dGlscy9uZ19kZWNvcmF0b3JzJztcbmltcG9ydCB7ZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9maW5kX2Jhc2VfY2xhc3Nlcyc7XG5pbXBvcnQge3Vud3JhcEV4cHJlc3Npb259IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvZnVuY3Rpb25zJztcbmltcG9ydCB7Z2V0UHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9wcm9wZXJ0eV9uYW1lJztcblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBkZWNvcmF0b3JzIHRoYXQgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCBjbGFzcyBuZWVkcyBhIGRpcmVjdGl2ZVxuICogZGVmaW5pdGlvbi4gVGhlc2UgZGVjb3JhdG9ycyBhcmUgYWx3YXlzIHNwZWNpZmljIHRvIGRpcmVjdGl2ZXMuXG4gKi9cbmNvbnN0IERJUkVDVElWRV9GSUVMRF9ERUNPUkFUT1JTID0gbmV3IFNldChbXG4gICdJbnB1dCcsICdPdXRwdXQnLCAnVmlld0NoaWxkJywgJ1ZpZXdDaGlsZHJlbicsICdDb250ZW50Q2hpbGQnLCAnQ29udGVudENoaWxkcmVuJywgJ0hvc3RCaW5kaW5nJyxcbiAgJ0hvc3RMaXN0ZW5lcidcbl0pO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBsaWZlY3ljbGUgaG9va3MgdGhhdCBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IGNsYXNzIG5lZWRzIGEgZGlyZWN0aXZlXG4gKiBkZWZpbml0aW9uLiBUaGVzZSBsaWZlY3ljbGUgaG9va3MgYXJlIGFsd2F5cyBzcGVjaWZpYyB0byBkaXJlY3RpdmVzLlxuICovXG5jb25zdCBESVJFQ1RJVkVfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbXG4gICduZ09uQ2hhbmdlcycsICduZ09uSW5pdCcsICduZ0RvQ2hlY2snLCAnbmdBZnRlclZpZXdJbml0JywgJ25nQWZ0ZXJWaWV3Q2hlY2tlZCcsXG4gICduZ0FmdGVyQ29udGVudEluaXQnLCAnbmdBZnRlckNvbnRlbnRDaGVja2VkJ1xuXSk7XG5cbi8qKlxuICogU2V0IG9mIGtub3duIGxpZmVjeWNsZSBob29rcyB0aGF0IGluZGljYXRlIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXJcbiAqIGZlYXR1cmVzLCBidXQgaXQncyBhbWJpZ3VvdXMgd2hldGhlciBpdCBpcyBhIGRpcmVjdGl2ZSBvciBzZXJ2aWNlLlxuICovXG5jb25zdCBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbJ25nT25EZXN0cm95J10pO1xuXG4vKiogRGVzY3JpYmVzIGhvdyBhIGdpdmVuIGNsYXNzIGlzIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgQW5ndWxhci4gKi9cbmVudW0gSW5mZXJyZWRLaW5kIHtcbiAgRElSRUNUSVZFLFxuICBBTUJJR1VPVVMsXG4gIFVOS05PV04sXG59XG5cbi8qKiBEZXNjcmliZXMgcG9zc2libGUgdHlwZXMgb2YgQW5ndWxhciBkZWNsYXJhdGlvbnMuICovXG5lbnVtIERlY2xhcmF0aW9uVHlwZSB7XG4gIERJUkVDVElWRSxcbiAgQ09NUE9ORU5ULFxuICBBQlNUUkFDVF9ESVJFQ1RJVkUsXG4gIFBJUEUsXG4gIElOSkVDVEFCTEUsXG59XG5cbi8qKiBBbmFseXplZCBjbGFzcyBkZWNsYXJhdGlvbi4gKi9cbmludGVyZmFjZSBBbmFseXplZENsYXNzIHtcbiAgLyoqIFR5cGUgb2YgZGVjbGFyYXRpb24gdGhhdCBpcyBkZXRlcm1pbmVkIHRocm91Z2ggYW4gYXBwbGllZCBkZWNvcmF0b3IuICovXG4gIGRlY29yYXRlZFR5cGU6IERlY2xhcmF0aW9uVHlwZXxudWxsO1xuICAvKiogSW5mZXJyZWQgY2xhc3Mga2luZCBpbiB0ZXJtcyBvZiBBbmd1bGFyLiAqL1xuICBpbmZlcnJlZEtpbmQ6IEluZmVycmVkS2luZDtcbn1cblxuaW50ZXJmYWNlIEFuYWx5c2lzRmFpbHVyZSB7XG4gIG5vZGU6IHRzLk5vZGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRPRE8gbWVzc2FnZSB0aGF0IGlzIGFkZGVkIHRvIGFtYmlndW91cyBjbGFzc2VzIHVzaW5nIEFuZ3VsYXIgZmVhdHVyZXMuICovXG5jb25zdCBBTUJJR1VPVVNfQ0xBU1NfVE9ETyA9ICdBZGQgQW5ndWxhciBkZWNvcmF0b3IuJztcblxuZXhwb3J0IGNsYXNzIFVuZGVjb3JhdGVkQ2xhc3Nlc1dpdGhEZWNvcmF0ZWRGaWVsZHNUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIHByaXZhdGUgaW1wb3J0TWFuYWdlciA9IG5ldyBJbXBvcnRNYW5hZ2VyKHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIsIHRoaXMucHJpbnRlcik7XG4gIHByaXZhdGUgcmVmbGVjdGlvbkhvc3QgPVxuICAgICAgbmV3IHRoaXMuY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlLlR5cGVTY3JpcHRSZWZsZWN0aW9uSG9zdCh0aGlzLnR5cGVDaGVja2VyKTtcbiAgcHJpdmF0ZSBwYXJ0aWFsRXZhbHVhdG9yID0gbmV3IHRoaXMuY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlLlBhcnRpYWxFdmFsdWF0b3IoXG4gICAgICB0aGlzLnJlZmxlY3Rpb25Ib3N0LCB0aGlzLnR5cGVDaGVja2VyLCBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJpdmF0ZSBnZXRVcGRhdGVSZWNvcmRlcjogKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiBVcGRhdGVSZWNvcmRlcixcbiAgICAgIHByaXZhdGUgY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlOlxuICAgICAgICAgIHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9wcml2YXRlL21pZ3JhdGlvbnMnKSkge31cblxuICAvKipcbiAgICogTWlncmF0ZXMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIFRoZSB0cmFuc2Zvcm0gYWRkcyB0aGUgYWJzdHJhY3QgYEBEaXJlY3RpdmVgXG4gICAqIGRlY29yYXRvciB0byB1bmRlY29yYXRlZCBjbGFzc2VzIHRoYXQgdXNlIEFuZ3VsYXIgZmVhdHVyZXMuIENsYXNzIG1lbWJlcnMgd2hpY2hcbiAgICogYXJlIGRlY29yYXRlZCB3aXRoIGFueSBBbmd1bGFyIGRlY29yYXRvciwgb3IgY2xhc3MgbWVtYmVycyBmb3IgbGlmZWN5Y2xlIGhvb2tzIGFyZVxuICAgKiBpbmRpY2F0aW5nIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMuIGh0dHBzOi8vaGFja21kLmlvL3Z1UWZhdnpmUkc2S1VDdFU3b0tfRUFcbiAgICovXG4gIG1pZ3JhdGUoc291cmNlRmlsZXM6IHRzLlNvdXJjZUZpbGVbXSk6IEFuYWx5c2lzRmFpbHVyZVtdIHtcbiAgICBjb25zdCB7ZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMsIGFtYmlndW91c0NsYXNzZXN9ID1cbiAgICAgICAgdGhpcy5fZmluZFVuZGVjb3JhdGVkQWJzdHJhY3REaXJlY3RpdmVzKHNvdXJjZUZpbGVzKTtcblxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgICBjb25zdCByZWNvcmRlciA9IHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIoc291cmNlRmlsZSk7XG4gICAgICBjb25zdCBkaXJlY3RpdmVFeHByID1cbiAgICAgICAgICB0aGlzLmltcG9ydE1hbmFnZXIuYWRkSW1wb3J0VG9Tb3VyY2VGaWxlKHNvdXJjZUZpbGUsICdEaXJlY3RpdmUnLCAnQGFuZ3VsYXIvY29yZScpO1xuICAgICAgY29uc3QgZGVjb3JhdG9yRXhwciA9IHRzLmNyZWF0ZURlY29yYXRvcih0cy5jcmVhdGVDYWxsKGRpcmVjdGl2ZUV4cHIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgICByZWNvcmRlci5hZGRDbGFzc0RlY29yYXRvcihcbiAgICAgICAgICBub2RlLCB0aGlzLnByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBkZWNvcmF0b3JFeHByLCBzb3VyY2VGaWxlKSk7XG4gICAgfSk7XG5cbiAgICAvLyBBbWJpZ3VvdXMgY2xhc3NlcyBjbGVhcmx5IHVzZSBBbmd1bGFyIGZlYXR1cmVzLCBidXQgdGhlIG1pZ3JhdGlvbiBpcyB1bmFibGUgdG9cbiAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2xhc3MgaXMgdXNlZCBhcyBkaXJlY3RpdmUsIHNlcnZpY2Ugb3IgcGlwZS4gVGhlIG1pZ3JhdGlvblxuICAgIC8vIGNvdWxkIHBvdGVudGlhbGx5IGRldGVybWluZSB0aGUgdHlwZSBieSBjaGVja2luZyBOZ01vZHVsZSBkZWZpbml0aW9ucyBvciBpbmhlcml0YW5jZVxuICAgIC8vIG9mIG90aGVyIGtub3duIGRlY2xhcmF0aW9ucywgYnV0IHRoaXMgaXMgb3V0IG9mIHNjb3BlIGFuZCBhIFRPRE8vZmFpbHVyZSBpcyBzdWZmaWNpZW50LlxuICAgIHJldHVybiBBcnJheS5mcm9tKGFtYmlndW91c0NsYXNzZXMpLnJlZHVjZSgoZmFpbHVyZXMsIG5vZGUpID0+IHtcbiAgICAgIC8vIElmIHRoZSBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgYmVmb3JlLCBza2lwIGFkZGluZyBhIFRPRE8gYW5kXG4gICAgICAvLyBwcmludGluZyBhbiBlcnJvci4gQSBjbGFzcyBjb3VsZCBiZSB2aXNpdGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gaXQncyBwYXJ0XG4gICAgICAvLyBvZiBtdWx0aXBsZSBidWlsZCB0YXJnZXRzIGluIHRoZSBDTEkgcHJvamVjdC5cbiAgICAgIGlmICh0aGlzLl9oYXNCZWVuUmVwb3J0ZWRBc0FtYmlndW91cyhub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFpbHVyZXM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlKTtcblxuICAgICAgLy8gQWRkIGEgVE9ETyB0byB0aGUgY2xhc3MgdGhhdCB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGlzIG5vdCBkZWNvcmF0ZWQuXG4gICAgICByZWNvcmRlci5hZGRDbGFzc1RvZG8obm9kZSwgQU1CSUdVT1VTX0NMQVNTX1RPRE8pO1xuXG4gICAgICAvLyBBZGQgYW4gZXJyb3IgZm9yIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUgcHJpbnRlZCBpbiB0aGUgYG5nIHVwZGF0ZWAgb3V0cHV0LlxuICAgICAgcmV0dXJuIGZhaWx1cmVzLmNvbmNhdCh7XG4gICAgICAgIG5vZGUsXG4gICAgICAgIG1lc3NhZ2U6ICdDbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGNhbm5vdCBiZSBtaWdyYXRlZCBhdXRvbWF0aWNhbGx5LiBQbGVhc2UgJyArXG4gICAgICAgICAgICAnYWRkIGFuIGFwcHJvcHJpYXRlIEFuZ3VsYXIgZGVjb3JhdG9yLidcbiAgICAgIH0pO1xuICAgIH0sIFtdIGFzIEFuYWx5c2lzRmFpbHVyZVtdKTtcbiAgfVxuXG4gIC8qKiBSZWNvcmRzIGFsbCBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBpbXBvcnQgbWFuYWdlci4gKi9cbiAgcmVjb3JkQ2hhbmdlcygpIHtcbiAgICB0aGlzLmltcG9ydE1hbmFnZXIucmVjb3JkQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHVuZGVjb3JhdGVkIGFic3RyYWN0IGRpcmVjdGl2ZXMgaW4gdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIEFsc28gcmV0dXJuc1xuICAgKiBhIHNldCBvZiB1bmRlY29yYXRlZCBjbGFzc2VzIHdoaWNoIGNvdWxkIG5vdCBiZSBkZXRlY3RlZCBhcyBndWFyYW50ZWVkIGFic3RyYWN0XG4gICAqIGRpcmVjdGl2ZXMuIFRob3NlIGFyZSBhbWJpZ3VvdXMgYW5kIGNvdWxkIGJlIGVpdGhlciBEaXJlY3RpdmUsIFBpcGUgb3Igc2VydmljZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRVbmRlY29yYXRlZEFic3RyYWN0RGlyZWN0aXZlcyhzb3VyY2VGaWxlczogdHMuU291cmNlRmlsZVtdKSB7XG4gICAgY29uc3QgYW1iaWd1b3VzQ2xhc3NlcyA9IG5ldyBTZXQ8dHMuQ2xhc3NEZWNsYXJhdGlvbj4oKTtcbiAgICBjb25zdCBkZWNsYXJhdGlvbnMgPSBuZXcgV2Vha01hcDx0cy5DbGFzc0RlY2xhcmF0aW9uLCBEZWNsYXJhdGlvblR5cGU+KCk7XG4gICAgY29uc3QgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMgPSBuZXcgU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KCk7XG4gICAgY29uc3QgdW5kZWNvcmF0ZWRDbGFzc2VzID0gbmV3IFNldDx0cy5DbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gICAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIG5vZGUuZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gICAgICBpZiAoIXRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7aW5mZXJyZWRLaW5kLCBkZWNvcmF0ZWRUeXBlfSA9IHRoaXMuX2FuYWx5emVDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuXG4gICAgICBpZiAoZGVjb3JhdGVkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBkZWNsYXJhdGlvbnMuc2V0KG5vZGUsIGRlY29yYXRlZFR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5ESVJFQ1RJVkUpIHtcbiAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5BTUJJR1VPVVMpIHtcbiAgICAgICAgYW1iaWd1b3VzQ2xhc3Nlcy5hZGQobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bmRlY29yYXRlZENsYXNzZXMuYWRkKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzb3VyY2VGaWxlcy5mb3JFYWNoKHNvdXJjZUZpbGUgPT4gc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQodmlzaXROb2RlKSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBnaXZlbiBzZXQgb2YgY2xhc3Nlcy4gSXQgcmVtb3ZlcyBjbGFzc2VzIGZyb20gdGhlXG4gICAgICogZGV0ZWN0ZWQgYWJzdHJhY3QgZGlyZWN0aXZlcyBzZXQgd2hlbiB0aGV5IGluaGVyaXQgZnJvbSBhIG5vbi1hYnN0cmFjdCBBbmd1bGFyXG4gICAgICogZGVjbGFyYXRpb24uIGUuZy4gYW4gYWJzdHJhY3QgZGlyZWN0aXZlIGNhbiBuZXZlciBleHRlbmQgZnJvbSBhIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIElmIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbiBhYnN0cmFjdCBkaXJlY3RpdmUgdGhvdWdoLCB3ZSB3aWxsIG1pZ3JhdGUgdGhlbSB0b29cbiAgICAgKiBhcyBkZXJpdmVkIGNsYXNzZXMgYWxzbyBuZWVkIHRvIGJlIGRlY29yYXRlZC4gVGhpcyBoYXMgYmVlbiBkb25lIGZvciBhIHNpbXBsZXIgbWVudGFsXG4gICAgICogbW9kZWwgYW5kIHJlZHVjZWQgY29tcGxleGl0eSBpbiB0aGUgQW5ndWxhciBjb21waWxlci4gU2VlIG1pZ3JhdGlvbiBwbGFuIGRvY3VtZW50LlxuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrSW5oZXJpdGFuY2VPZkNsYXNzZXMgPSAoY2xhc3NlczogU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KSA9PiB7XG4gICAgICBjbGFzc2VzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qge25vZGU6IGJhc2VDbGFzc30gb2YgZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9ucyhub2RlLCB0aGlzLnR5cGVDaGVja2VyKSkge1xuICAgICAgICAgIGlmICghZGVjbGFyYXRpb25zLmhhcyhiYXNlQ2xhc3MpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSWYgdGhlIHVuZGVjb3JhdGVkIGNsYXNzIGluaGVyaXRzIGZyb20gYW4gYWJzdHJhY3QgZGlyZWN0aXZlLCBhbHdheXMgbWlncmF0ZSBpdC5cbiAgICAgICAgICAvLyBEZXJpdmVkIHVuZGVjb3JhdGVkIGNsYXNzZXMgb2YgYWJzdHJhY3QgZGlyZWN0aXZlcyBhcmUgYWx3YXlzIGFsc28gY29uc2lkZXJlZFxuICAgICAgICAgIC8vIGFic3RyYWN0IGRpcmVjdGl2ZXMgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkIHRvby4gVGhpcyBpcyBuZWNlc3NhcnkgYXMgb3RoZXJ3aXNlXG4gICAgICAgICAgLy8gdGhlIGluaGVyaXRhbmNlIGNoYWluIGNhbm5vdCBiZSByZXNvbHZlZCBieSB0aGUgQW5ndWxhciBjb21waWxlci4gZS5nLiB3aGVuIGl0XG4gICAgICAgICAgLy8gZmxhdHRlbnMgZGlyZWN0aXZlIG1ldGFkYXRhIGZvciB0eXBlIGNoZWNraW5nLiBJbiB0aGUgb3RoZXIgY2FzZSwgd2UgbmV2ZXIgd2FudFxuICAgICAgICAgIC8vIHRvIG1pZ3JhdGUgYSBjbGFzcyBpZiBpdCBleHRlbmRzIGZyb20gYSBub24tYWJzdHJhY3QgQW5ndWxhciBkZWNsYXJhdGlvbi4gVGhhdFxuICAgICAgICAgIC8vIGlzIGFuIHVuc3VwcG9ydGVkIHBhdHRlcm4gYXMgb2YgdjkgYW5kIHdhcyBwcmV2aW91c2x5IGhhbmRsZWQgd2l0aCB0aGVcbiAgICAgICAgICAvLyBgdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpYCBtaWdyYXRpb24gKHdoaWNoIGNvcGllZCB0aGUgaW5oZXJpdGVkIGRlY29yYXRvcikuXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9ucy5nZXQoYmFzZUNsYXNzKSA9PT0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRSkge1xuICAgICAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXRlY3RlZEFic3RyYWN0RGlyZWN0aXZlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFtYmlndW91c0NsYXNzZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgYW55IGRldGVjdGVkIGFic3RyYWN0IGRpcmVjdGl2ZS4gV2Ugd2FudCB0byByZW1vdmVcbiAgICAvLyBjbGFzc2VzIHRoYXQgYXJlIG5vdCBlbGlnaWJsZSBhYnN0cmFjdCBkaXJlY3RpdmVzIGR1ZSB0byBpbmhlcml0YW5jZS4gaS5lLlxuICAgIC8vIGlmIGEgY2xhc3MgZXh0ZW5kcyBmcm9tIGEgY29tcG9uZW50LCBpdCBjYW5ub3QgYmUgYSBkZXJpdmVkIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzKTtcbiAgICAvLyBVcGRhdGUgdGhlIGNsYXNzIGRlY2xhcmF0aW9ucyB0byByZWZsZWN0IHRoZSBkZXRlY3RlZCBhYnN0cmFjdCBkaXJlY3RpdmVzLiBUaGlzIGlzXG4gICAgLy8gdGhlbiB1c2VkIGxhdGVyIHdoZW4gd2UgY2hlY2sgZm9yIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gYW4gYWJzdHJhY3RcbiAgICAvLyBkaXJlY3RpdmUgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkLlxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2goXG4gICAgICAgIG4gPT4gZGVjbGFyYXRpb25zLnNldChuLCBEZWNsYXJhdGlvblR5cGUuQUJTVFJBQ1RfRElSRUNUSVZFKSk7XG4gICAgLy8gQ2hlY2sgYW1iaWd1b3VzIGFuZCB1bmRlY29yYXRlZCBjbGFzc2VzIGlmIHRoZXkgaW5oZXJpdCBmcm9tIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICAvLyBJZiB0aGV5IGRvLCB3ZSB3YW50IHRvIG1pZ3JhdGUgdGhlbSB0b28uIFNlZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBtb3JlIGRldGFpbHMuXG4gICAgY2hlY2tJbmhlcml0YW5jZU9mQ2xhc3NlcyhhbWJpZ3VvdXNDbGFzc2VzKTtcbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKHVuZGVjb3JhdGVkQ2xhc3Nlcyk7XG5cbiAgICByZXR1cm4ge2RldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLCBhbWJpZ3VvdXNDbGFzc2VzfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmFseXplcyB0aGUgZ2l2ZW4gY2xhc3MgZGVjbGFyYXRpb24gYnkgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgY2xhc3NcbiAgICogaXMgYSBkaXJlY3RpdmUsIGlzIGFuIGFic3RyYWN0IGRpcmVjdGl2ZSwgb3IgdXNlcyBBbmd1bGFyIGZlYXR1cmVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfYW5hbHl6ZUNsYXNzRGVjbGFyYXRpb24obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEFuYWx5emVkQ2xhc3Mge1xuICAgIGNvbnN0IG5nRGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycyAmJiBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmRlY29yYXRvcnMpO1xuICAgIGNvbnN0IGluZmVycmVkS2luZCA9IHRoaXMuX2RldGVybWluZUNsYXNzS2luZChub2RlKTtcbiAgICBpZiAobmdEZWNvcmF0b3JzID09PSB1bmRlZmluZWQgfHwgbmdEZWNvcmF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtkZWNvcmF0ZWRUeXBlOiBudWxsLCBpbmZlcnJlZEtpbmR9O1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3RpdmVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnRGlyZWN0aXZlJyk7XG4gICAgY29uc3QgY29tcG9uZW50RGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ0NvbXBvbmVudCcpO1xuICAgIGNvbnN0IHBpcGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnUGlwZScpO1xuICAgIGNvbnN0IGluamVjdGFibGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnSW5qZWN0YWJsZScpO1xuICAgIGNvbnN0IGlzQWJzdHJhY3REaXJlY3RpdmUgPVxuICAgICAgICBkaXJlY3RpdmVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9pc0Fic3RyYWN0RGlyZWN0aXZlKGRpcmVjdGl2ZURlY29yYXRvcik7XG5cbiAgICBsZXQgZGVjb3JhdGVkVHlwZTogRGVjbGFyYXRpb25UeXBlfG51bGwgPSBudWxsO1xuICAgIGlmIChpc0Fic3RyYWN0RGlyZWN0aXZlKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKGNvbXBvbmVudERlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkNPTVBPTkVOVDtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGl2ZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkRJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKHBpcGVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVjb3JhdGVkVHlwZSA9IERlY2xhcmF0aW9uVHlwZS5QSVBFO1xuICAgIH0gZWxzZSBpZiAoaW5qZWN0YWJsZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLklOSkVDVEFCTEU7XG4gICAgfVxuICAgIHJldHVybiB7ZGVjb3JhdGVkVHlwZSwgaW5mZXJyZWRLaW5kfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gZGVjb3JhdG9yIHJlc29sdmVzIHRvIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS4gQW4gZGlyZWN0aXZlIGlzXG4gICAqIGNvbnNpZGVyZWQgXCJhYnN0cmFjdFwiIGlmIHRoZXJlIGlzIG5vIHNlbGVjdG9yIHNwZWNpZmllZC5cbiAgICovXG4gIHByaXZhdGUgX2lzQWJzdHJhY3REaXJlY3RpdmUoe25vZGV9OiBOZ0RlY29yYXRvcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1ldGFkYXRhQXJncyA9IG5vZGUuZXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gICAgaWYgKG1ldGFkYXRhQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YUV4cHIgPSB1bndyYXBFeHByZXNzaW9uKG1ldGFkYXRhQXJnc1swXSk7XG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG1ldGFkYXRhRXhwcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZS5yZWZsZWN0T2JqZWN0TGl0ZXJhbChtZXRhZGF0YUV4cHIpO1xuICAgIGlmICghbWV0YWRhdGEuaGFzKCdzZWxlY3RvcicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5wYXJ0aWFsRXZhbHVhdG9yLmV2YWx1YXRlKG1ldGFkYXRhLmdldCgnc2VsZWN0b3InKSEpO1xuICAgIHJldHVybiBzZWxlY3RvciA9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGtpbmQgb2YgYSBnaXZlbiBjbGFzcyBpbiB0ZXJtcyBvZiBBbmd1bGFyLiBUaGUgbWV0aG9kIGNoZWNrc1xuICAgKiB3aGV0aGVyIHRoZSBnaXZlbiBjbGFzcyBoYXMgbWVtYmVycyB0aGF0IGluZGljYXRlIHRoZSB1c2Ugb2YgQW5ndWxhciBmZWF0dXJlcy5cbiAgICogZS5nLiBsaWZlY3ljbGUgaG9va3Mgb3IgZGVjb3JhdGVkIG1lbWJlcnMgbGlrZSBgQElucHV0YCBvciBgQE91dHB1dGAgYXJlXG4gICAqIGNvbnNpZGVyZWQgQW5ndWxhciBmZWF0dXJlcy4uXG4gICAqL1xuICBwcml2YXRlIF9kZXRlcm1pbmVDbGFzc0tpbmQobm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEluZmVycmVkS2luZCB7XG4gICAgbGV0IHVzYWdlID0gSW5mZXJyZWRLaW5kLlVOS05PV047XG5cbiAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IG1lbWJlci5uYW1lICE9PSB1bmRlZmluZWQgPyBnZXRQcm9wZXJ0eU5hbWVUZXh0KG1lbWJlci5uYW1lKSA6IG51bGw7XG5cbiAgICAgIC8vIElmIHRoZSBjbGFzcyBkZWNsYXJlcyBhbnkgb2YgdGhlIGtub3duIGRpcmVjdGl2ZSBsaWZlY3ljbGUgaG9va3MsIHdlIGNhblxuICAgICAgLy8gaW1tZWRpYXRlbHkgZXhpdCB0aGUgbG9vcCBhcyB0aGUgY2xhc3MgaXMgZ3VhcmFudGVlZCB0byBiZSBhIGRpcmVjdGl2ZS5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IG51bGwgJiYgRElSRUNUSVZFX0xJRkVDWUNMRV9IT09LUy5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gSW5mZXJyZWRLaW5kLkRJUkVDVElWRTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmdEZWNvcmF0b3JzID0gbWVtYmVyLmRlY29yYXRvcnMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgZ2V0QW5ndWxhckRlY29yYXRvcnModGhpcy50eXBlQ2hlY2tlciwgbWVtYmVyLmRlY29yYXRvcnMpIDpcbiAgICAgICAgICBbXTtcbiAgICAgIGZvciAoY29uc3Qge25hbWV9IG9mIG5nRGVjb3JhdG9ycykge1xuICAgICAgICBpZiAoRElSRUNUSVZFX0ZJRUxEX0RFQ09SQVRPUlMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIEluZmVycmVkS2luZC5ESVJFQ1RJVkU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIGNsYXNzIGRlY2xhcmVzIGFueSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tzIHRoYXQgZG8gbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAvLyB0aGUgZ2l2ZW4gY2xhc3MgaXMgYSBkaXJlY3RpdmUsIHVwZGF0ZSB0aGUga2luZCBhbmQgY29udGludWUgbG9va2luZyBmb3Igb3RoZXJcbiAgICAgIC8vIG1lbWJlcnMgdGhhdCB3b3VsZCB1bnZlaWwgYSBtb3JlIHNwZWNpZmljIGtpbmQgKGkuZS4gYmVpbmcgYSBkaXJlY3RpdmUpLlxuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gbnVsbCAmJiBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTLmhhcyhwcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIHVzYWdlID0gSW5mZXJyZWRLaW5kLkFNQklHVU9VUztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgaW4gcHJldmlvdXNcbiAgICogbWlncmF0aW9uIHJ1bi4gZS5nLiB3aGVuIGJ1aWxkIHRhcmdldHMgYXJlIG1pZ3JhdGVkIGZpcnN0LCBhbmQgdGhlbiB0ZXN0XG4gICAqIHRhcmdldHMgdGhhdCBoYXZlIGFuIG92ZXJsYXAgd2l0aCBidWlsZCBzb3VyY2UgZmlsZXMsIHRoZSBzYW1lIGNsYXNzXG4gICAqIGNvdWxkIGJlIGRldGVjdGVkIGFzIGFtYmlndW91cy5cbiAgICovXG4gIHByaXZhdGUgX2hhc0JlZW5SZXBvcnRlZEFzQW1iaWd1b3VzKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gdHMuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoc291cmNlRmlsZS50ZXh0LCBub2RlLnBvcyk7XG4gICAgaWYgKGxlYWRpbmdDb21tZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsZWFkaW5nQ29tbWVudHMuc29tZShcbiAgICAgICAgKHtraW5kLCBwb3MsIGVuZH0pID0+IGtpbmQgPT09IHRzLlN5bnRheEtpbmQuU2luZ2xlTGluZUNvbW1lbnRUcml2aWEgJiZcbiAgICAgICAgICAgIHNvdXJjZUZpbGUudGV4dC5zdWJzdHJpbmcocG9zLCBlbmQpLmluY2x1ZGVzKGBUT0RPOiAke0FNQklHVU9VU19DTEFTU19UT0RPfWApKTtcbiAgfVxufVxuIl19
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder" />
9
- import * as ts from 'typescript';
9
+ import ts from 'typescript';
10
10
  import { ImportManagerUpdateRecorder } from '../../utils/import_manager';
11
11
  /**
12
12
  * Update recorder interface that is used to transform source files
@@ -17,4 +17,4 @@
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdXBkYXRlX3JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7SW1wb3J0TWFuYWdlclVwZGF0ZVJlY29yZGVyfSBmcm9tICcuLi8uLi91dGlscy9pbXBvcnRfbWFuYWdlcic7XG5cbi8qKlxuICogVXBkYXRlIHJlY29yZGVyIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gdHJhbnNmb3JtIHNvdXJjZSBmaWxlc1xuICogaW4gYSBub24tY29sbGlkaW5nIHdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVSZWNvcmRlciBleHRlbmRzIEltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlciB7XG4gIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZENsYXNzVG9kbyhub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBjb21taXRVcGRhdGUoKTogdm9pZDtcbn1cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdXBkYXRlX3JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0ltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi4vLi4vdXRpbHMvaW1wb3J0X21hbmFnZXInO1xuXG4vKipcbiAqIFVwZGF0ZSByZWNvcmRlciBpbnRlcmZhY2UgdGhhdCBpcyB1c2VkIHRvIHRyYW5zZm9ybSBzb3VyY2UgZmlsZXNcbiAqIGluIGEgbm9uLWNvbGxpZGluZyB3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVjb3JkZXIgZXh0ZW5kcyBJbXBvcnRNYW5hZ2VyVXBkYXRlUmVjb3JkZXIge1xuICBhZGRDbGFzc0RlY29yYXRvcihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBhZGRDbGFzc1RvZG8obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbiwgbWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbiAgY29tbWl0VXBkYXRlKCk6IHZvaWQ7XG59XG4iXX0=
@@ -6,11 +6,11 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-di/create_ngc_program" />
9
- import { AotCompiler } from '@angular/compiler';
10
- import { CompilerHost } from '@angular/compiler-cli';
11
- import * as ts from 'typescript';
9
+ import type { AotCompiler } from '@angular/compiler';
10
+ import type { CompilerHost } from '@angular/compiler-cli';
11
+ import ts from 'typescript';
12
12
  /** Creates an NGC program that can be used to read and parse metadata for files. */
13
- export declare function createNgcProgram(createHost: (options: ts.CompilerOptions) => CompilerHost, tsconfigPath: string): {
13
+ export declare function createNgcProgram(compilerCliModule: typeof import('@angular/compiler-cli'), createHost: (options: ts.CompilerOptions) => CompilerHost, tsconfigPath: string): {
14
14
  host: CompilerHost;
15
15
  ngcProgram: import("@angular/compiler-cli").Program;
16
16
  program: ts.Program;
@@ -11,16 +11,15 @@
11
11
  if (v !== undefined) module.exports = v;
12
12
  }
13
13
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/core/schematics/migrations/undecorated-classes-with-di/create_ngc_program", ["require", "exports", "@angular/compiler-cli"], factory);
14
+ define("@angular/core/schematics/migrations/undecorated-classes-with-di/create_ngc_program", ["require", "exports"], factory);
15
15
  }
16
16
  })(function (require, exports) {
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.createNgcProgram = void 0;
20
- const compiler_cli_1 = require("@angular/compiler-cli");
21
20
  /** Creates an NGC program that can be used to read and parse metadata for files. */
22
- function createNgcProgram(createHost, tsconfigPath) {
23
- const { rootNames, options } = compiler_cli_1.readConfiguration(tsconfigPath);
21
+ function createNgcProgram(compilerCliModule, createHost, tsconfigPath) {
22
+ const { rootNames, options } = compilerCliModule.readConfiguration(tsconfigPath);
24
23
  // https://github.com/angular/angular/commit/ec4381dd401f03bded652665b047b6b90f2b425f made Ivy
25
24
  // the default. This breaks the assumption that "createProgram" from compiler-cli returns the
26
25
  // NGC program. In order to ensure that the migration runs properly, we set "enableIvy" to false.
@@ -44,7 +43,7 @@
44
43
  // which are set up by the Angular CLI. i.e. resolving stylesheets through "tilde".
45
44
  host.readResource = () => '';
46
45
  host.resourceNameToFileName = () => '$fake-file$';
47
- const ngcProgram = compiler_cli_1.createProgram({ rootNames, options, host });
46
+ const ngcProgram = compilerCliModule.createProgram({ rootNames, options, host });
48
47
  // The "AngularCompilerProgram" does not expose the "AotCompiler" instance, nor does it
49
48
  // expose the logic that is necessary to analyze the determined modules. We work around
50
49
  // this by just accessing the necessary private properties using the bracket notation.
@@ -54,4 +53,4 @@
54
53
  }
55
54
  exports.createNgcProgram = createNgcProgram;
56
55
  });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX25nY19wcm9ncmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpL2NyZWF0ZV9uZ2NfcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFHSCx3REFBcUY7SUFHckYsb0ZBQW9GO0lBQ3BGLFNBQWdCLGdCQUFnQixDQUM1QixVQUF5RCxFQUFFLFlBQW9CO1FBQ2pGLE1BQU0sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLEdBQUcsZ0NBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0QsOEZBQThGO1FBQzlGLDZGQUE2RjtRQUM3RixpR0FBaUc7UUFDakcsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsd0ZBQXdGO1FBQ3hGLHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsMEZBQTBGO1FBQzFGLDRGQUE0RjtRQUM1RiwrRkFBK0Y7UUFDL0YsMkZBQTJGO1FBQzNGLDZGQUE2RjtRQUM3RiwrRkFBK0Y7UUFDL0YsMEZBQTBGO1FBQzFGLE9BQU8sQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFFdEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLDBFQUEwRTtRQUMxRSxpRkFBaUY7UUFDakYsbUZBQW1GO1FBQ25GLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRWxELE1BQU0sVUFBVSxHQUFHLDRCQUFhLENBQUMsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFN0QsdUZBQXVGO1FBQ3ZGLHVGQUF1RjtRQUN2RixzRkFBc0Y7UUFDdEYsTUFBTSxRQUFRLEdBQWlCLFVBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTFDLE9BQU8sRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsQ0FBQztJQUMvQyxDQUFDO0lBeENELDRDQXdDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0FvdENvbXBpbGVyfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0NvbXBpbGVySG9zdCwgY3JlYXRlUHJvZ3JhbSwgcmVhZENvbmZpZ3VyYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaSc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqIENyZWF0ZXMgYW4gTkdDIHByb2dyYW0gdGhhdCBjYW4gYmUgdXNlZCB0byByZWFkIGFuZCBwYXJzZSBtZXRhZGF0YSBmb3IgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmdjUHJvZ3JhbShcbiAgICBjcmVhdGVIb3N0OiAob3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zKSA9PiBDb21waWxlckhvc3QsIHRzY29uZmlnUGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHtyb290TmFtZXMsIG9wdGlvbnN9ID0gcmVhZENvbmZpZ3VyYXRpb24odHNjb25maWdQYXRoKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2NvbW1pdC9lYzQzODFkZDQwMWYwM2JkZWQ2NTI2NjViMDQ3YjZiOTBmMmI0MjVmIG1hZGUgSXZ5XG4gIC8vIHRoZSBkZWZhdWx0LiBUaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiB0aGF0IFwiY3JlYXRlUHJvZ3JhbVwiIGZyb20gY29tcGlsZXItY2xpIHJldHVybnMgdGhlXG4gIC8vIE5HQyBwcm9ncmFtLiBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgbWlncmF0aW9uIHJ1bnMgcHJvcGVybHksIHdlIHNldCBcImVuYWJsZUl2eVwiIHRvIGZhbHNlLlxuICBvcHRpb25zLmVuYWJsZUl2eSA9IGZhbHNlO1xuXG4gIC8vIExpYnJhcmllcyB3aGljaCBoYXZlIGJlZW4gZ2VuZXJhdGVkIHdpdGggQ0xJIHZlcnNpb25zIHBhc3QgdjYuMi4wLCBleHBsaWNpdGx5IHNldCB0aGVcbiAgLy8gZmxhdC1tb2R1bGUgb3B0aW9ucyBpbiB0aGVpciB0c2NvbmZpZyBmaWxlcy4gVGhpcyBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIGJ5IGRlZmF1bHQsXG4gIC8vIHRob3NlIHRzY29uZmlnIGZpbGVzIGRvIG5vdCBzcGVjaWZ5IGV4cGxpY2l0IHNvdXJjZSBmaWxlcyB3aGljaCBjYW4gYmUgY29uc2lkZXJlZCBhc1xuICAvLyBlbnRyeSBwb2ludCBmb3IgdGhlIGZsYXQtbW9kdWxlIGJ1bmRsZS4gVGhlcmVmb3JlIHRoZSBgQGFuZ3VsYXIvY29tcGlsZXItY2xpYCBpcyB1bmFibGVcbiAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBmbGF0IG1vZHVsZSBlbnRyeSBwb2ludCBhbmQgdGhyb3dzIGEgY29tcGlsZSBlcnJvci4gVGhpcyBpcyBub3QgYW4gaXNzdWVcbiAgLy8gZm9yIHRoZSBsaWJyYXJpZXMgYnVpbHQgd2l0aCBgbmctcGFja2FncmAsIGJlY2F1c2UgdGhlIHRzY29uZmlnIGZpbGVzIGFyZSBtb2RpZmllZCBpbi1tZW1vcnlcbiAgLy8gdG8gc3BlY2lmeSBhbiBleHBsaWNpdCBmbGF0IG1vZHVsZSBlbnRyeS1wb2ludC4gT3VyIG1pZ3JhdGlvbnMgZG9uJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlblxuICAvLyBsaWJyYXJpZXMgYW5kIGFwcGxpY2F0aW9ucywgYW5kIGFsc28gZG9uJ3QgcnVuIGBuZy1wYWNrYWdyYC4gVG8gZW5zdXJlIHRoYXQgc3VjaCBsaWJyYXJpZXNcbiAgLy8gY2FuIGJlIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCwgd2UgcmVtb3ZlIHRoZSBmbGF0LW1vZHVsZSBvcHRpb25zIHRvIGVsaW1pbmF0ZSB0aGUgZmxhdCBtb2R1bGVcbiAgLy8gZW50cnktcG9pbnQgcmVxdWlyZW1lbnQuIE1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzQ5ODUuXG4gIG9wdGlvbnMuZmxhdE1vZHVsZUlkID0gdW5kZWZpbmVkO1xuICBvcHRpb25zLmZsYXRNb2R1bGVPdXRGaWxlID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGhvc3QgPSBjcmVhdGVIb3N0KG9wdGlvbnMpO1xuXG4gIC8vIEZvciB0aGlzIG1pZ3JhdGlvbiwgd2UgbmV2ZXIgbmVlZCB0byByZWFkIHJlc291cmNlcyBhbmQgY2FuIGp1c3QgcmV0dXJuXG4gIC8vIGFuIGVtcHR5IHN0cmluZyBmb3IgcmVxdWVzdGVkIHJlc291cmNlcy4gV2UgbmVlZCB0byBoYW5kbGUgcmVxdWVzdGVkIHJlc291cmNlc1xuICAvLyBiZWNhdXNlIG91ciBjcmVhdGVkIE5HQyBjb21waWxlciBwcm9ncmFtIGRvZXMgbm90IGtub3cgYWJvdXQgc3BlY2lhbCByZXNvbHV0aW9uc1xuICAvLyB3aGljaCBhcmUgc2V0IHVwIGJ5IHRoZSBBbmd1bGFyIENMSS4gaS5lLiByZXNvbHZpbmcgc3R5bGVzaGVldHMgdGhyb3VnaCBcInRpbGRlXCIuXG4gIGhvc3QucmVhZFJlc291cmNlID0gKCkgPT4gJyc7XG4gIGhvc3QucmVzb3VyY2VOYW1lVG9GaWxlTmFtZSA9ICgpID0+ICckZmFrZS1maWxlJCc7XG5cbiAgY29uc3QgbmdjUHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0oe3Jvb3ROYW1lcywgb3B0aW9ucywgaG9zdH0pO1xuXG4gIC8vIFRoZSBcIkFuZ3VsYXJDb21waWxlclByb2dyYW1cIiBkb2VzIG5vdCBleHBvc2UgdGhlIFwiQW90Q29tcGlsZXJcIiBpbnN0YW5jZSwgbm9yIGRvZXMgaXRcbiAgLy8gZXhwb3NlIHRoZSBsb2dpYyB0aGF0IGlzIG5lY2Vzc2FyeSB0byBhbmFseXplIHRoZSBkZXRlcm1pbmVkIG1vZHVsZXMuIFdlIHdvcmsgYXJvdW5kXG4gIC8vIHRoaXMgYnkganVzdCBhY2Nlc3NpbmcgdGhlIG5lY2Vzc2FyeSBwcml2YXRlIHByb3BlcnRpZXMgdXNpbmcgdGhlIGJyYWNrZXQgbm90YXRpb24uXG4gIGNvbnN0IGNvbXBpbGVyOiBBb3RDb21waWxlciA9IChuZ2NQcm9ncmFtIGFzIGFueSlbJ2NvbXBpbGVyJ107XG4gIGNvbnN0IHByb2dyYW0gPSBuZ2NQcm9ncmFtLmdldFRzUHJvZ3JhbSgpO1xuXG4gIHJldHVybiB7aG9zdCwgbmdjUHJvZ3JhbSwgcHJvZ3JhbSwgY29tcGlsZXJ9O1xufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX25nY19wcm9ncmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpL2NyZWF0ZV9uZ2NfcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFNSCxvRkFBb0Y7SUFDcEYsU0FBZ0IsZ0JBQWdCLENBQzVCLGlCQUF5RCxFQUN6RCxVQUF5RCxFQUFFLFlBQW9CO1FBQ2pGLE1BQU0sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0UsOEZBQThGO1FBQzlGLDZGQUE2RjtRQUM3RixpR0FBaUc7UUFDakcsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsd0ZBQXdGO1FBQ3hGLHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsMEZBQTBGO1FBQzFGLDRGQUE0RjtRQUM1RiwrRkFBK0Y7UUFDL0YsMkZBQTJGO1FBQzNGLDZGQUE2RjtRQUM3RiwrRkFBK0Y7UUFDL0YsMEZBQTBGO1FBQzFGLE9BQU8sQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFFdEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLDBFQUEwRTtRQUMxRSxpRkFBaUY7UUFDakYsbUZBQW1GO1FBQ25GLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRWxELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUUvRSx1RkFBdUY7UUFDdkYsdUZBQXVGO1FBQ3ZGLHNGQUFzRjtRQUN0RixNQUFNLFFBQVEsR0FBaUIsVUFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFMUMsT0FBTyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxDQUFDO0lBQy9DLENBQUM7SUF6Q0QsNENBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHtBb3RDb21waWxlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHR5cGUge0NvbXBpbGVySG9zdH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqIENyZWF0ZXMgYW4gTkdDIHByb2dyYW0gdGhhdCBjYW4gYmUgdXNlZCB0byByZWFkIGFuZCBwYXJzZSBtZXRhZGF0YSBmb3IgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmdjUHJvZ3JhbShcbiAgICBjb21waWxlckNsaU1vZHVsZTogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXItY2xpJyksXG4gICAgY3JlYXRlSG9zdDogKG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucykgPT4gQ29tcGlsZXJIb3N0LCB0c2NvbmZpZ1BhdGg6IHN0cmluZykge1xuICBjb25zdCB7cm9vdE5hbWVzLCBvcHRpb25zfSA9IGNvbXBpbGVyQ2xpTW9kdWxlLnJlYWRDb25maWd1cmF0aW9uKHRzY29uZmlnUGF0aCk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9jb21taXQvZWM0MzgxZGQ0MDFmMDNiZGVkNjUyNjY1YjA0N2I2YjkwZjJiNDI1ZiBtYWRlIEl2eVxuICAvLyB0aGUgZGVmYXVsdC4gVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gdGhhdCBcImNyZWF0ZVByb2dyYW1cIiBmcm9tIGNvbXBpbGVyLWNsaSByZXR1cm5zIHRoZVxuICAvLyBOR0MgcHJvZ3JhbS4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIG1pZ3JhdGlvbiBydW5zIHByb3Blcmx5LCB3ZSBzZXQgXCJlbmFibGVJdnlcIiB0byBmYWxzZS5cbiAgb3B0aW9ucy5lbmFibGVJdnkgPSBmYWxzZTtcblxuICAvLyBMaWJyYXJpZXMgd2hpY2ggaGF2ZSBiZWVuIGdlbmVyYXRlZCB3aXRoIENMSSB2ZXJzaW9ucyBwYXN0IHY2LjIuMCwgZXhwbGljaXRseSBzZXQgdGhlXG4gIC8vIGZsYXQtbW9kdWxlIG9wdGlvbnMgaW4gdGhlaXIgdHNjb25maWcgZmlsZXMuIFRoaXMgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSBieSBkZWZhdWx0LFxuICAvLyB0aG9zZSB0c2NvbmZpZyBmaWxlcyBkbyBub3Qgc3BlY2lmeSBleHBsaWNpdCBzb3VyY2UgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnNpZGVyZWQgYXNcbiAgLy8gZW50cnkgcG9pbnQgZm9yIHRoZSBmbGF0LW1vZHVsZSBidW5kbGUuIFRoZXJlZm9yZSB0aGUgYEBhbmd1bGFyL2NvbXBpbGVyLWNsaWAgaXMgdW5hYmxlXG4gIC8vIHRvIGRldGVybWluZSB0aGUgZmxhdCBtb2R1bGUgZW50cnkgcG9pbnQgYW5kIHRocm93cyBhIGNvbXBpbGUgZXJyb3IuIFRoaXMgaXMgbm90IGFuIGlzc3VlXG4gIC8vIGZvciB0aGUgbGlicmFyaWVzIGJ1aWx0IHdpdGggYG5nLXBhY2thZ3JgLCBiZWNhdXNlIHRoZSB0c2NvbmZpZyBmaWxlcyBhcmUgbW9kaWZpZWQgaW4tbWVtb3J5XG4gIC8vIHRvIHNwZWNpZnkgYW4gZXhwbGljaXQgZmxhdCBtb2R1bGUgZW50cnktcG9pbnQuIE91ciBtaWdyYXRpb25zIGRvbid0IGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gbGlicmFyaWVzIGFuZCBhcHBsaWNhdGlvbnMsIGFuZCBhbHNvIGRvbid0IHJ1biBgbmctcGFja2FncmAuIFRvIGVuc3VyZSB0aGF0IHN1Y2ggbGlicmFyaWVzXG4gIC8vIGNhbiBiZSBzdWNjZXNzZnVsbHkgbWlncmF0ZWQsIHdlIHJlbW92ZSB0aGUgZmxhdC1tb2R1bGUgb3B0aW9ucyB0byBlbGltaW5hdGUgdGhlIGZsYXQgbW9kdWxlXG4gIC8vIGVudHJ5LXBvaW50IHJlcXVpcmVtZW50LiBNb3JlIGNvbnRleHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM0OTg1LlxuICBvcHRpb25zLmZsYXRNb2R1bGVJZCA9IHVuZGVmaW5lZDtcbiAgb3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSA9IHVuZGVmaW5lZDtcblxuICBjb25zdCBob3N0ID0gY3JlYXRlSG9zdChvcHRpb25zKTtcblxuICAvLyBGb3IgdGhpcyBtaWdyYXRpb24sIHdlIG5ldmVyIG5lZWQgdG8gcmVhZCByZXNvdXJjZXMgYW5kIGNhbiBqdXN0IHJldHVyblxuICAvLyBhbiBlbXB0eSBzdHJpbmcgZm9yIHJlcXVlc3RlZCByZXNvdXJjZXMuIFdlIG5lZWQgdG8gaGFuZGxlIHJlcXVlc3RlZCByZXNvdXJjZXNcbiAgLy8gYmVjYXVzZSBvdXIgY3JlYXRlZCBOR0MgY29tcGlsZXIgcHJvZ3JhbSBkb2VzIG5vdCBrbm93IGFib3V0IHNwZWNpYWwgcmVzb2x1dGlvbnNcbiAgLy8gd2hpY2ggYXJlIHNldCB1cCBieSB0aGUgQW5ndWxhciBDTEkuIGkuZS4gcmVzb2x2aW5nIHN0eWxlc2hlZXRzIHRocm91Z2ggXCJ0aWxkZVwiLlxuICBob3N0LnJlYWRSZXNvdXJjZSA9ICgpID0+ICcnO1xuICBob3N0LnJlc291cmNlTmFtZVRvRmlsZU5hbWUgPSAoKSA9PiAnJGZha2UtZmlsZSQnO1xuXG4gIGNvbnN0IG5nY1Byb2dyYW0gPSBjb21waWxlckNsaU1vZHVsZS5jcmVhdGVQcm9ncmFtKHtyb290TmFtZXMsIG9wdGlvbnMsIGhvc3R9KTtcblxuICAvLyBUaGUgXCJBbmd1bGFyQ29tcGlsZXJQcm9ncmFtXCIgZG9lcyBub3QgZXhwb3NlIHRoZSBcIkFvdENvbXBpbGVyXCIgaW5zdGFuY2UsIG5vciBkb2VzIGl0XG4gIC8vIGV4cG9zZSB0aGUgbG9naWMgdGhhdCBpcyBuZWNlc3NhcnkgdG8gYW5hbHl6ZSB0aGUgZGV0ZXJtaW5lZCBtb2R1bGVzLiBXZSB3b3JrIGFyb3VuZFxuICAvLyB0aGlzIGJ5IGp1c3QgYWNjZXNzaW5nIHRoZSBuZWNlc3NhcnkgcHJpdmF0ZSBwcm9wZXJ0aWVzIHVzaW5nIHRoZSBicmFja2V0IG5vdGF0aW9uLlxuICBjb25zdCBjb21waWxlcjogQW90Q29tcGlsZXIgPSAobmdjUHJvZ3JhbSBhcyBhbnkpWydjb21waWxlciddO1xuICBjb25zdCBwcm9ncmFtID0gbmdjUHJvZ3JhbS5nZXRUc1Byb2dyYW0oKTtcblxuICByZXR1cm4ge2hvc3QsIG5nY1Byb2dyYW0sIHByb2dyYW0sIGNvbXBpbGVyfTtcbn1cbiJdfQ==
@@ -6,8 +6,8 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata" />
9
- import { StaticSymbol } from '@angular/compiler';
10
- import * as ts from 'typescript';
9
+ import type { StaticSymbol } from '@angular/compiler';
10
+ import ts from 'typescript';
11
11
  /** Error that will be thrown if an unexpected value needs to be converted. */
12
12
  export declare class UnexpectedMetadataValueError extends Error {
13
13
  }
@@ -15,4 +15,4 @@ export declare class UnexpectedMetadataValueError extends Error {
15
15
  * Converts a directive metadata object into a TypeScript expression. Throws
16
16
  * if metadata cannot be cleanly converted.
17
17
  */
18
- export declare function convertDirectiveMetadataToExpression(metadata: any, resolveSymbolImport: (symbol: StaticSymbol) => string | null, createImport: (moduleName: string, name: string) => ts.Expression, convertProperty?: (key: string, value: any) => ts.Expression | null): ts.Expression;
18
+ export declare function convertDirectiveMetadataToExpression(compilerModule: typeof import('@angular/compiler'), metadata: any, resolveSymbolImport: (symbol: StaticSymbol) => string | null, createImport: (moduleName: string, name: string) => ts.Expression, convertProperty?: (key: string, value: any) => ts.Expression | null): ts.Expression;