UNPKG

713 kBSource Map (JSON)View Raw
1{"version":3,"file":"core.umd.js","sources":["../../../../packages/core/src/view/index.ts","../../../../packages/core/src/view/entrypoint.ts","../../../../packages/core/src/view/services.ts","../../../../packages/core/src/view/view.ts","../../../../packages/core/src/view/text.ts","../../../../packages/core/src/view/pure_expression.ts","../../../../packages/core/src/view/ng_content.ts","../../../../packages/core/src/view/query.ts","../../../../packages/core/src/view/provider.ts","../../../../packages/core/src/view/refs.ts","../../../../packages/core/src/view/view_attach.ts","../../../../packages/core/src/view/ng_module.ts","../../../../packages/core/src/view/element.ts","../../../../packages/core/src/view/util.ts","../../../../packages/core/src/view/errors.ts","../../../../packages/core/src/view/types.ts","../../../../packages/core/src/security.ts","../../../../packages/core/src/application_module.ts","../../../../packages/core/src/i18n/tokens.ts","../../../../packages/core/src/platform_core_providers.ts","../../../../packages/core/src/change_detection/change_detection.ts","../../../../packages/core/src/change_detection/differs/keyvalue_differs.ts","../../../../packages/core/src/change_detection/differs/iterable_differs.ts","../../../../packages/core/src/change_detection/differs/default_keyvalue_differ.ts","../../../../packages/core/src/change_detection/differs/default_iterable_differ.ts","../../../../packages/core/src/change_detection/change_detection_util.ts","../../../../packages/core/src/debug/debug_node.ts","../../../../packages/core/src/linker/view_ref.ts","../../../../packages/core/src/linker/view_container_ref.ts","../../../../packages/core/src/linker/template_ref.ts","../../../../packages/core/src/linker/system_js_ng_module_factory_loader.ts","../../../../packages/core/src/linker/query_list.ts","../../../../packages/core/src/linker/ng_module_factory_loader.ts","../../../../packages/core/src/linker/element_ref.ts","../../../../packages/core/src/render/api.ts","../../../../packages/core/src/zone.ts","../../../../packages/core/src/application_ref.ts","../../../../packages/core/src/testability/testability.ts","../../../../packages/core/src/zone/ng_zone.ts","../../../../packages/core/src/event_emitter.ts","../../../../packages/core/src/profile/wtf_impl.ts","../../../../packages/core/src/linker/ng_module_factory.ts","../../../../packages/core/src/linker/component_factory_resolver.ts","../../../../packages/core/src/linker/component_factory.ts","../../../../packages/core/src/linker/compiler.ts","../../../../packages/core/src/console.ts","../../../../packages/core/src/application_tokens.ts","../../../../packages/core/src/application_init.ts","../../../../packages/core/src/di.ts","../../../../packages/core/src/di/reflective_injector.ts","../../../../packages/core/src/di/reflective_provider.ts","../../../../packages/core/src/reflection/reflector.ts","../../../../packages/core/src/reflection/reflection.ts","../../../../packages/core/src/reflection/reflection_capabilities.ts","../../../../packages/core/src/type.ts","../../../../packages/core/src/di/reflective_key.ts","../../../../packages/core/src/di/reflective_errors.ts","../../../../packages/core/src/error_handler.ts","../../../../packages/core/src/errors.ts","../../../../packages/core/src/di/injector.ts","../../../../packages/core/src/di/forward_ref.ts","../../../../packages/core/src/version.ts","../../../../packages/core/src/metadata/view.ts","../../../../packages/core/src/metadata.ts","../../../../packages/core/src/metadata/directives.ts","../../../../packages/core/src/change_detection/constants.ts","../../../../packages/core/src/metadata/di.ts","../../../../packages/core/src/util/decorators.ts","../../../../packages/core/src/util.ts","../../../../packages/core/src/di/injection_token.ts","../../../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {anchorDef, elementDef} from './element';\nexport {clearProviderOverrides, createNgModuleFactory, overrideProvider} from './entrypoint';\nexport {ngContentDef} from './ng_content';\nexport {moduleDef, moduleProvideDef} from './ng_module';\nexport {directiveDef, pipeDef, providerDef} from './provider';\nexport {pureArrayDef, pureObjectDef, purePipeDef} from './pure_expression';\nexport {queryDef} from './query';\nexport {ViewRef_, createComponentFactory, getComponentViewDefinitionFactory, nodeValue} from './refs';\nexport {initServicesIfNeeded} from './services';\nexport {textDef} from './text';\nexport {EMPTY_ARRAY, EMPTY_MAP, createRendererType2, elementEventFullName, inlineInterpolate, interpolate, rootRenderNodes, tokenKey, unwrapValue} from './util';\nexport {viewDef} from './view';\nexport {attachEmbeddedView, detachEmbeddedView, moveEmbeddedView} from './view_attach';\n\nexport {DefinitionFactory,NodeLogger,Definition,NgModuleDefinition,NgModuleDefinitionFactory,ViewDefinition,ViewDefinitionFactory,ViewUpdateFn,NodeCheckFn,ArgumentType,ViewHandleEventFn,ViewFlags,NodeDef,NodeFlags,BindingDef,BindingFlags,OutputDef,OutputType,QueryValueType,ElementDef,ElementHandleEventFn,ProviderDef,NgModuleProviderDef,DepDef,DepFlags,TextDef,QueryDef,QueryBindingDef,QueryBindingType,NgContentDef,NgModuleData,ViewData,ViewState,DisposableFn,NodeData,TextData,asTextData,ElementData,ViewContainerData,TemplateData,asElementData,ProviderData,asProviderData,PureExpressionData,asPureExpressionData,asQueryList,RootData,DebugContext,CheckType,ProviderOverride,Services} from './types';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di/injector';\nimport {NgModuleFactory, NgModuleRef} from '../linker/ng_module_factory';\nimport {Type} from '../type';\n\nimport {initServicesIfNeeded} from './services';\nimport {NgModuleDefinitionFactory, ProviderOverride, Services} from './types';\nimport {resolveDefinition} from './util';\n/**\n * @param {?} override\n * @return {?}\n */\nexport function overrideProvider(override: ProviderOverride) {\n initServicesIfNeeded();\n return Services.overrideProvider(override);\n}\n/**\n * @return {?}\n */\nexport function clearProviderOverrides() {\n initServicesIfNeeded();\n return Services.clearProviderOverrides();\n}\n/**\n * @param {?} ngModuleType\n * @param {?} bootstrapComponents\n * @param {?} defFactory\n * @return {?}\n */\nexport function createNgModuleFactory(\n ngModuleType: Type<any>, bootstrapComponents: Type<any>[],\n defFactory: NgModuleDefinitionFactory): NgModuleFactory<any> {\n return new NgModuleFactory_(ngModuleType, bootstrapComponents, defFactory);\n}\nclass NgModuleFactory_ extends NgModuleFactory<any> {\n/**\n * @param {?} moduleType\n * @param {?} _bootstrapComponents\n * @param {?} _ngModuleDefFactory\n */\nconstructor(\npublic readonly moduleType: Type<any>,\nprivate _bootstrapComponents: Type<any>[],\nprivate _ngModuleDefFactory: NgModuleDefinitionFactory) {\n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n super();\n }\n/**\n * @param {?} parentInjector\n * @return {?}\n */\ncreate(parentInjector: Injector|null): NgModuleRef<any> {\n initServicesIfNeeded();\n const /** @type {?} */ def = resolveDefinition(this._ngModuleDefFactory);\n return Services.createNgModuleRef(\n this.moduleType, parentInjector || Injector.NULL, this._bootstrapComponents, def);\n }\n}\n\nfunction NgModuleFactory__tsickle_Closure_declarations() {\n/** @type {?} */\nNgModuleFactory_.prototype.moduleType;\n/** @type {?} */\nNgModuleFactory_.prototype._bootstrapComponents;\n/** @type {?} */\nNgModuleFactory_.prototype._ngModuleDefFactory;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {isDevMode} from '../application_ref';\nimport {DebugElement, DebugNode, EventListener, getDebugNode, indexDebugNode, removeDebugNodeFromIndex} from '../debug/debug_node';\nimport {Injector} from '../di';\nimport {ErrorHandler} from '../error_handler';\nimport {NgModuleRef} from '../linker/ng_module_factory';\nimport {Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '../render/api';\nimport {Sanitizer} from '../security';\nimport {Type} from '../type';\n\nimport {isViewDebugError, viewDestroyedError, viewWrappedDebugError} from './errors';\nimport {resolveDep} from './provider';\nimport {dirtyParentQueries, getQueryValue} from './query';\nimport {createInjector, createNgModuleRef} from './refs';\nimport {ArgumentType, BindingFlags, CheckType, DebugContext, DepDef, ElementData, NgModuleDefinition, NgModuleProviderDef, NodeDef, NodeFlags, NodeLogger, ProviderOverride, RootData, Services, ViewData, ViewDefinition, ViewState, asElementData, asPureExpressionData} from './types';\nimport {NOOP, isComponentView, renderNode, splitDepsDsl, viewParentEl} from './util';\nimport {checkAndUpdateNode, checkAndUpdateView, checkNoChangesNode, checkNoChangesView, createComponentView, createEmbeddedView, createRootView, destroyView} from './view';\n\n\nlet /** @type {?} */ initialized = false;\n/**\n * @return {?}\n */\nexport function initServicesIfNeeded() {\n if (initialized) {\n return;\n }\n initialized = true;\n const /** @type {?} */ services = isDevMode() ? createDebugServices() : createProdServices();\n Services.setCurrentNode = services.setCurrentNode;\n Services.createRootView = services.createRootView;\n Services.createEmbeddedView = services.createEmbeddedView;\n Services.createComponentView = services.createComponentView;\n Services.createNgModuleRef = services.createNgModuleRef;\n Services.overrideProvider = services.overrideProvider;\n Services.clearProviderOverrides = services.clearProviderOverrides;\n Services.checkAndUpdateView = services.checkAndUpdateView;\n Services.checkNoChangesView = services.checkNoChangesView;\n Services.destroyView = services.destroyView;\n Services.resolveDep = resolveDep;\n Services.createDebugContext = services.createDebugContext;\n Services.handleEvent = services.handleEvent;\n Services.updateDirectives = services.updateDirectives;\n Services.updateRenderer = services.updateRenderer;\n Services.dirtyParentQueries = dirtyParentQueries;\n}\n/**\n * @return {?}\n */\nfunction createProdServices() {\n return {\n setCurrentNode: () => {},\n createRootView: createProdRootView,\n createEmbeddedView: createEmbeddedView,\n createComponentView: createComponentView,\n createNgModuleRef: createNgModuleRef,\n overrideProvider: NOOP,\n clearProviderOverrides: NOOP,\n checkAndUpdateView: checkAndUpdateView,\n checkNoChangesView: checkNoChangesView,\n destroyView: destroyView,\n createDebugContext: (view: ViewData, nodeIndex: number) => new DebugContext_(view, nodeIndex),\n handleEvent: (view: ViewData, nodeIndex: number, eventName: string, event: any) =>\n view.def.handleEvent(view, nodeIndex, eventName, event),\n updateDirectives: (view: ViewData, checkType: CheckType) => view.def.updateDirectives(\n checkType === CheckType.CheckAndUpdate ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode,\n view),\n updateRenderer: (view: ViewData, checkType: CheckType) => view.def.updateRenderer(\n checkType === CheckType.CheckAndUpdate ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode,\n view),\n };\n}\n/**\n * @return {?}\n */\nfunction createDebugServices() {\n return {\n setCurrentNode: debugSetCurrentNode,\n createRootView: debugCreateRootView,\n createEmbeddedView: debugCreateEmbeddedView,\n createComponentView: debugCreateComponentView,\n createNgModuleRef: debugCreateNgModuleRef,\n overrideProvider: debugOverrideProvider,\n clearProviderOverrides: debugClearProviderOverrides,\n checkAndUpdateView: debugCheckAndUpdateView,\n checkNoChangesView: debugCheckNoChangesView,\n destroyView: debugDestroyView,\n createDebugContext: (view: ViewData, nodeIndex: number) => new DebugContext_(view, nodeIndex),\n handleEvent: debugHandleEvent,\n updateDirectives: debugUpdateDirectives,\n updateRenderer: debugUpdateRenderer,\n };\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction createProdRootView(\n elInjector: Injector, projectableNodes: any[][], rootSelectorOrNode: string | any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData {\n const /** @type {?} */ rendererFactory: RendererFactory2 = ngModule.injector.get(RendererFactory2);\n return createRootView(\n createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode),\n def, context);\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateRootView(\n elInjector: Injector, projectableNodes: any[][], rootSelectorOrNode: string | any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData {\n const /** @type {?} */ rendererFactory: RendererFactory2 = ngModule.injector.get(RendererFactory2);\n const /** @type {?} */ root = createRootData(\n elInjector, ngModule, new DebugRendererFactory2(rendererFactory), projectableNodes,\n rootSelectorOrNode);\n const /** @type {?} */ defWithOverride = applyProviderOverridesToView(def);\n return callWithDebugContext(\n DebugAction.create, createRootView, null, [root, defWithOverride, context]);\n}\n/**\n * @param {?} elInjector\n * @param {?} ngModule\n * @param {?} rendererFactory\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @return {?}\n */\nfunction createRootData(\n elInjector: Injector, ngModule: NgModuleRef<any>, rendererFactory: RendererFactory2,\n projectableNodes: any[][], rootSelectorOrNode: any): RootData {\n const /** @type {?} */ sanitizer = ngModule.injector.get(Sanitizer);\n const /** @type {?} */ errorHandler = ngModule.injector.get(ErrorHandler);\n const /** @type {?} */ renderer = rendererFactory.createRenderer(null, null);\n return {\n ngModule,\n injector: elInjector, projectableNodes,\n selectorOrNode: rootSelectorOrNode, sanitizer, rendererFactory, renderer, errorHandler\n };\n}\n/**\n * @param {?} parentView\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateEmbeddedView(\n parentView: ViewData, anchorDef: NodeDef, viewDef: ViewDefinition, context?: any): ViewData {\n const /** @type {?} */ defWithOverride = applyProviderOverridesToView(viewDef);\n return callWithDebugContext(\n DebugAction.create, createEmbeddedView, null,\n [parentView, anchorDef, defWithOverride, context]);\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nfunction debugCreateComponentView(\n parentView: ViewData, nodeDef: NodeDef, viewDef: ViewDefinition, hostElement: any): ViewData {\n const /** @type {?} */ defWithOverride = applyProviderOverridesToView(viewDef);\n return callWithDebugContext(\n DebugAction.create, createComponentView, null,\n [parentView, nodeDef, defWithOverride, hostElement]);\n}\n/**\n * @param {?} moduleType\n * @param {?} parentInjector\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nfunction debugCreateNgModuleRef(\n moduleType: Type<any>, parentInjector: Injector, bootstrapComponents: Type<any>[],\n def: NgModuleDefinition): NgModuleRef<any> {\n const /** @type {?} */ defWithOverride = applyProviderOverridesToNgModule(def);\n return createNgModuleRef(moduleType, parentInjector, bootstrapComponents, defWithOverride);\n}\n\nconst /** @type {?} */ providerOverrides = new Map<any, ProviderOverride>();\n/**\n * @param {?} override\n * @return {?}\n */\nfunction debugOverrideProvider(override: ProviderOverride) {\n providerOverrides.set(override.token, override);\n}\n/**\n * @return {?}\n */\nfunction debugClearProviderOverrides() {\n providerOverrides.clear();\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToView(def: ViewDefinition): ViewDefinition {\n if (providerOverrides.size === 0) {\n return def;\n }\n const /** @type {?} */ elementIndicesWithOverwrittenProviders = findElementIndicesWithOverwrittenProviders(def);\n if (elementIndicesWithOverwrittenProviders.length === 0) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */(( def.factory))(() => NOOP);\n for (let /** @type {?} */ i = 0; i < elementIndicesWithOverwrittenProviders.length; i++) {\n applyProviderOverridesToElement(def, elementIndicesWithOverwrittenProviders[i]);\n }\n return def;\n/**\n * @param {?} def\n * @return {?}\n */\nfunction findElementIndicesWithOverwrittenProviders(def: ViewDefinition): number[] {\n const /** @type {?} */ elIndicesWithOverwrittenProviders: number[] = [];\n let /** @type {?} */ lastElementDef: NodeDef|null = null;\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.TypeElement) {\n lastElementDef = nodeDef;\n }\n if (lastElementDef && nodeDef.flags & NodeFlags.CatProviderNoDirective &&\n providerOverrides.has( /** @type {?} */((nodeDef.provider)).token)) {\n elIndicesWithOverwrittenProviders.push( /** @type {?} */((lastElementDef)).index);\n lastElementDef = null;\n }\n }\n return elIndicesWithOverwrittenProviders;\n }\n/**\n * @param {?} viewDef\n * @param {?} elIndex\n * @return {?}\n */\nfunction applyProviderOverridesToElement(viewDef: ViewDefinition, elIndex: number) {\n for (let /** @type {?} */ i = elIndex + 1; i < viewDef.nodes.length; i++) {\n const /** @type {?} */ nodeDef = viewDef.nodes[i];\n if (nodeDef.flags & NodeFlags.TypeElement) {\n // stop at the next element\n return;\n }\n if (nodeDef.flags & NodeFlags.CatProviderNoDirective) {\n // Make all providers lazy, so that we don't get into trouble\n // with ordering problems of providers on the same element\n nodeDef.flags |= NodeFlags.LazyProvider;\n const /** @type {?} */ provider = /** @type {?} */(( nodeDef.provider));\n const /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n nodeDef.flags = (nodeDef.flags & ~NodeFlags.CatProviderNoDirective) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n }\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToNgModule(def: NgModuleDefinition): NgModuleDefinition {\n if (providerOverrides.size === 0 || !hasOverrrides(def)) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */(( def.factory))(() => NOOP);\n applyProviderOverrides(def);\n return def;\n/**\n * @param {?} def\n * @return {?}\n */\nfunction hasOverrrides(def: NgModuleDefinition): boolean {\n return def.providers.some(\n node =>\n !!(node.flags & NodeFlags.CatProviderNoDirective) && providerOverrides.has(node.token));\n }\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverrides(def: NgModuleDefinition) {\n for (let /** @type {?} */ i = 0; i < def.providers.length; i++) {\n const /** @type {?} */ provider = def.providers[i];\n // Make all providers lazy, so that we don't get into trouble\n // with ordering problems of providers on the same element\n provider.flags |= NodeFlags.LazyProvider;\n const /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n provider.flags = (provider.flags & ~NodeFlags.CatProviderNoDirective) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckAndUpdateNode(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckNoChangesNode(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckAndUpdateView(view: ViewData) {\n return callWithDebugContext(DebugAction.detectChanges, checkAndUpdateView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckNoChangesView(view: ViewData) {\n return callWithDebugContext(DebugAction.checkNoChanges, checkNoChangesView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugDestroyView(view: ViewData) {\n return callWithDebugContext(DebugAction.destroy, destroyView, null, [view]);\n}\ntype DebugAction = number;\nlet DebugAction: any = {};\nDebugAction.create = 0;\nDebugAction.detectChanges = 1;\nDebugAction.checkNoChanges = 2;\nDebugAction.destroy = 3;\nDebugAction.handleEvent = 4;\nDebugAction[DebugAction.create] = \"create\";\nDebugAction[DebugAction.detectChanges] = \"detectChanges\";\nDebugAction[DebugAction.checkNoChanges] = \"checkNoChanges\";\nDebugAction[DebugAction.destroy] = \"destroy\";\nDebugAction[DebugAction.handleEvent] = \"handleEvent\";\n\n\nlet /** @type {?} */ _currentAction: DebugAction;\nlet /** @type {?} */ _currentView: ViewData;\nlet /** @type {?} */ _currentNodeIndex: number|null;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction debugSetCurrentNode(view: ViewData, nodeIndex: number | null) {\n _currentView = view;\n _currentNodeIndex = nodeIndex;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nfunction debugHandleEvent(view: ViewData, nodeIndex: number, eventName: string, event: any) {\n debugSetCurrentNode(view, nodeIndex);\n return callWithDebugContext(\n DebugAction.handleEvent, view.def.handleEvent, null, [view, nodeIndex, eventName, event]);\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateDirectives(view: ViewData, checkType: CheckType) {\n if (view.state & ViewState.Destroyed) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, 0));\n return view.def.updateDirectives(debugCheckDirectivesFn, view);\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\nfunction debugCheckDirectivesFn(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, ...values: any[]) {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === CheckType.CheckAndUpdate) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n } else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & NodeFlags.TypeDirective) {\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeDef.index).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateRenderer(view: ViewData, checkType: CheckType) {\n if (view.state & ViewState.Destroyed) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, 0));\n return view.def.updateRenderer(debugCheckRenderNodeFn, view);\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\nfunction debugCheckRenderNodeFn(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, ...values: any[]) {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === CheckType.CheckAndUpdate) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n } else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & NodeFlags.CatRenderNode) {\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeDef.index).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} givenValues\n * @return {?}\n */\nfunction debugCheckAndUpdateNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, givenValues: any[]): void {\n const /** @type {?} */ changed = ( /** @type {?} */((<any>checkAndUpdateNode)))(view, nodeDef, argStyle, ...givenValues);\n if (changed) {\n const /** @type {?} */ values = argStyle === ArgumentType.Dynamic ? givenValues[0] : givenValues;\n if (nodeDef.flags & NodeFlags.TypeDirective) {\n const /** @type {?} */ bindingValues: {[key: string]: string} = {};\n for (let /** @type {?} */ i = 0; i < nodeDef.bindings.length; i++) {\n const /** @type {?} */ binding = nodeDef.bindings[i];\n const /** @type {?} */ value = values[i];\n if (binding.flags & BindingFlags.TypeProperty) {\n bindingValues[normalizeDebugBindingName( /** @type {?} */((binding.nonMinifiedName)))] =\n normalizeDebugBindingValue(value);\n }\n }\n const /** @type {?} */ elDef = /** @type {?} */(( nodeDef.parent));\n const /** @type {?} */ el = asElementData(view, elDef.index).renderElement;\n if (! /** @type {?} */((elDef.element)).name) {\n // a comment.\n view.renderer.setValue(el, `bindings=${JSON.stringify(bindingValues, null, 2)}`);\n } else {\n // a regular element.\n for (let /** @type {?} */ attr in bindingValues) {\n const /** @type {?} */ value = bindingValues[attr];\n if (value != null) {\n view.renderer.setAttribute(el, attr, value);\n } else {\n view.renderer.removeAttribute(el, attr);\n }\n }\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} values\n * @return {?}\n */\nfunction debugCheckNoChangesNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, values: any[]): void {\n ( /** @type {?} */((<any>checkNoChangesNode)))(view, nodeDef, argStyle, ...values);\n}\n/**\n * @param {?} name\n * @return {?}\n */\nfunction normalizeDebugBindingName(name: string) {\n // Attribute names with `$` (eg `x-y$`) are valid per spec, but unsupported by some browsers\n name = camelCaseToDashCase(name.replace(/[$@]/g, '_'));\n return `ng-reflect-${name}`;\n}\n\nconst /** @type {?} */ CAMEL_CASE_REGEXP = /([A-Z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction camelCaseToDashCase(input: string): string {\n return input.replace(CAMEL_CASE_REGEXP, (...m: any[]) => '-' + m[1].toLowerCase());\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeDebugBindingValue(value: any): string {\n try {\n // Limit the size of the value as otherwise the DOM just gets polluted.\n return value != null ? value.toString().slice(0, 30) : value;\n } catch ( /** @type {?} */e) {\n return '[ERROR] Exception while trying to serialize the value';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextDirectiveWithBinding(view: ViewData, nodeIndex: number): number|null {\n for (let /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & NodeFlags.TypeDirective && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextRenderNodeWithBinding(view: ViewData, nodeIndex: number): number|null {\n for (let /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.CatRenderNode) && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\nclass DebugContext_ implements DebugContext {\nprivate nodeDef: NodeDef;\nprivate elView: ViewData;\nprivate elDef: NodeDef;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n */\nconstructor(public view: ViewData,\npublic nodeIndex: number|null) {\n if (nodeIndex == null) {\n this.nodeIndex = nodeIndex = 0;\n }\n this.nodeDef = view.def.nodes[nodeIndex];\n let elDef = this.nodeDef;\n let elView = view;\n while (elDef && (elDef.flags & NodeFlags.TypeElement) === 0) {\n elDef = elDef.parent !;\n }\n if (!elDef) {\n while (!elDef && elView) {\n elDef = viewParentEl(elView) !;\n elView = elView.parent !;\n }\n }\n this.elDef = elDef;\n this.elView = elView;\n }\n/**\n * @return {?}\n */\nprivate get elOrCompView() {\n // Has to be done lazily as we use the DebugContext also during creation of elements...\n return asElementData(this.elView, this.elDef.index).componentView || this.view;\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return createInjector(this.elView, this.elDef); }\n/**\n * @return {?}\n */\nget component(): any { return this.elOrCompView.component; }\n/**\n * @return {?}\n */\nget context(): any { return this.elOrCompView.context; }\n/**\n * @return {?}\n */\nget providerTokens(): any[] {\n const /** @type {?} */ tokens: any[] = [];\n if (this.elDef) {\n for (let /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {\n const /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & NodeFlags.CatProvider) {\n tokens.push( /** @type {?} */((childDef.provider)).token);\n }\n i += childDef.childCount;\n }\n }\n return tokens;\n }\n/**\n * @return {?}\n */\nget references(): {[key: string]: any} {\n const /** @type {?} */ references: {[key: string]: any} = {};\n if (this.elDef) {\n collectReferences(this.elView, this.elDef, references);\n\n for (let /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {\n const /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & NodeFlags.CatProvider) {\n collectReferences(this.elView, childDef, references);\n }\n i += childDef.childCount;\n }\n }\n return references;\n }\n/**\n * @return {?}\n */\nget componentRenderElement() {\n const /** @type {?} */ elData = findHostElement(this.elOrCompView);\n return elData ? elData.renderElement : undefined;\n }\n/**\n * @return {?}\n */\nget renderNode(): any {\n return this.nodeDef.flags & NodeFlags.TypeText ? renderNode(this.view, this.nodeDef) :\n renderNode(this.elView, this.elDef);\n }\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nlogError(console: Console, ...values: any[]) {\n let /** @type {?} */ logViewDef: ViewDefinition;\n let /** @type {?} */ logNodeIndex: number;\n if (this.nodeDef.flags & NodeFlags.TypeText) {\n logViewDef = this.view.def;\n logNodeIndex = this.nodeDef.index;\n } else {\n logViewDef = this.elView.def;\n logNodeIndex = this.elDef.index;\n }\n // Note: we only generate a log function for text and element nodes\n // to make the generated code as small as possible.\n const /** @type {?} */ renderNodeIndex = getRenderNodeIndex(logViewDef, logNodeIndex);\n let /** @type {?} */ currRenderNodeIndex = -1;\n let /** @type {?} */ nodeLogger: NodeLogger = () => {\n currRenderNodeIndex++;\n if (currRenderNodeIndex === renderNodeIndex) {\n return console.error.bind(console, ...values);\n } else {\n return NOOP;\n }\n }; /** @type {?} */((\n logViewDef.factory))(nodeLogger);\n if (currRenderNodeIndex < renderNodeIndex) {\n console.error('Illegal state: the ViewDefinitionFactory did not call the logger!');\n ( /** @type {?} */((<any>console.error)))(...values);\n }\n }\n}\n\nfunction DebugContext__tsickle_Closure_declarations() {\n/** @type {?} */\nDebugContext_.prototype.nodeDef;\n/** @type {?} */\nDebugContext_.prototype.elView;\n/** @type {?} */\nDebugContext_.prototype.elDef;\n/** @type {?} */\nDebugContext_.prototype.view;\n/** @type {?} */\nDebugContext_.prototype.nodeIndex;\n}\n\n/**\n * @param {?} viewDef\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction getRenderNodeIndex(viewDef: ViewDefinition, nodeIndex: number): number {\n let /** @type {?} */ renderNodeIndex = -1;\n for (let /** @type {?} */ i = 0; i <= nodeIndex; i++) {\n const /** @type {?} */ nodeDef = viewDef.nodes[i];\n if (nodeDef.flags & NodeFlags.CatRenderNode) {\n renderNodeIndex++;\n }\n }\n return renderNodeIndex;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction findHostElement(view: ViewData): ElementData|null {\n while (view && !isComponentView(view)) {\n view = /** @type {?} */(( view.parent));\n }\n if (view.parent) {\n return asElementData(view.parent, /** @type {?} */(( viewParentEl(view))).index);\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} references\n * @return {?}\n */\nfunction collectReferences(view: ViewData, nodeDef: NodeDef, references: {[key: string]: any}) {\n for (let /** @type {?} */ refName in nodeDef.references) {\n references[refName] = getQueryValue(view, nodeDef, nodeDef.references[refName]);\n }\n}\n/**\n * @param {?} action\n * @param {?} fn\n * @param {?} self\n * @param {?} args\n * @return {?}\n */\nfunction callWithDebugContext(action: DebugAction, fn: any, self: any, args: any[]) {\n const /** @type {?} */ oldAction = _currentAction;\n const /** @type {?} */ oldView = _currentView;\n const /** @type {?} */ oldNodeIndex = _currentNodeIndex;\n try {\n _currentAction = action;\n const /** @type {?} */ result = fn.apply(self, args);\n _currentView = oldView;\n _currentNodeIndex = oldNodeIndex;\n _currentAction = oldAction;\n return result;\n } catch ( /** @type {?} */e) {\n if (isViewDebugError(e) || !_currentView) {\n throw e;\n }\n throw viewWrappedDebugError(e, /** @type {?} */(( getCurrentDebugContext())));\n }\n}\n/**\n * @return {?}\n */\nexport function getCurrentDebugContext(): DebugContext|null {\n return _currentView ? new DebugContext_(_currentView, _currentNodeIndex) : null;\n}\nclass DebugRendererFactory2 implements RendererFactory2 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: RendererFactory2) {}\n/**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\ncreateRenderer(element: any, renderData: RendererType2|null): Renderer2 {\n return new DebugRenderer2(this.delegate.createRenderer(element, renderData));\n }\n/**\n * @return {?}\n */\nbegin() {\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n/**\n * @return {?}\n */\nend() {\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n/**\n * @return {?}\n */\nwhenRenderingDone(): Promise<any> {\n if (this.delegate.whenRenderingDone) {\n return this.delegate.whenRenderingDone();\n }\n return Promise.resolve(null);\n }\n}\n\nfunction DebugRendererFactory2_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugRendererFactory2.prototype.delegate;\n}\n\nclass DebugRenderer2 implements Renderer2 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: Renderer2) {}\n/**\n * @return {?}\n */\nget data() { return this.delegate.data; }\n/**\n * @param {?} node\n * @return {?}\n */\ndestroyNode(node: any) {\n removeDebugNodeFromIndex( /** @type {?} */((getDebugNode(node))));\n if (this.delegate.destroyNode) {\n this.delegate.destroyNode(node);\n }\n }\n/**\n * @return {?}\n */\ndestroy() { this.delegate.destroy(); }\n/**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\ncreateElement(name: string, namespace?: string): any {\n const /** @type {?} */ el = this.delegate.createElement(name, namespace);\n const /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n const /** @type {?} */ debugEl = new DebugElement(el, null, debugCtx);\n debugEl.name = name;\n indexDebugNode(debugEl);\n }\n return el;\n }\n/**\n * @param {?} value\n * @return {?}\n */\ncreateComment(value: string): any {\n const /** @type {?} */ comment = this.delegate.createComment(value);\n const /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(comment, null, debugCtx));\n }\n return comment;\n }\n/**\n * @param {?} value\n * @return {?}\n */\ncreateText(value: string): any {\n const /** @type {?} */ text = this.delegate.createText(value);\n const /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(text, null, debugCtx));\n }\n return text;\n }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\nappendChild(parent: any, newChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @type {?} */ debugChildEl = getDebugNode(newChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.addChild(debugChildEl);\n }\n this.delegate.appendChild(parent, newChild);\n }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\ninsertBefore(parent: any, newChild: any, refChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @type {?} */ debugChildEl = getDebugNode(newChild);\n const /** @type {?} */ debugRefEl = /** @type {?} */(( getDebugNode(refChild)));\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.insertBefore(debugRefEl, debugChildEl);\n }\n\n this.delegate.insertBefore(parent, newChild, refChild);\n }\n/**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @type {?} */ debugChildEl = getDebugNode(oldChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.removeChild(debugChildEl);\n }\n this.delegate.removeChild(parent, oldChild);\n }\n/**\n * @param {?} selectorOrNode\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any): any {\n const /** @type {?} */ el = this.delegate.selectRootElement(selectorOrNode);\n const /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugElement(el, null, debugCtx));\n }\n return el;\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\nsetAttribute(el: any, name: string, value: string, namespace?: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n const /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = value;\n }\n this.delegate.setAttribute(el, name, value, namespace);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\nremoveAttribute(el: any, name: string, namespace?: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n const /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = null;\n }\n this.delegate.removeAttribute(el, name, namespace);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\naddClass(el: any, name: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = true;\n }\n this.delegate.addClass(el, name);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nremoveClass(el: any, name: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = false;\n }\n this.delegate.removeClass(el, name);\n }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\nsetStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = value;\n }\n this.delegate.setStyle(el, style, value, flags);\n }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\nremoveStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = null;\n }\n this.delegate.removeStyle(el, style, flags);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.properties[name] = value;\n }\n this.delegate.setProperty(el, name, value);\n }\n/**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\nlisten(\n target: 'document'|'windows'|'body'|any, eventName: string,\n callback: (event: any) => boolean): () => void {\n if (typeof target !== 'string') {\n const /** @type {?} */ debugEl = getDebugNode(target);\n if (debugEl) {\n debugEl.listeners.push(new EventListener(eventName, callback));\n }\n }\n\n return this.delegate.listen(target, eventName, callback);\n }\n/**\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any): any { return this.delegate.parentNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any): any { return this.delegate.nextSibling(node); }\n/**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string): void { return this.delegate.setValue(node, value); }\n}\n\nfunction DebugRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugRenderer2.prototype.delegate;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Renderer2} from '../render/api';\n\nimport {checkAndUpdateElementDynamic, checkAndUpdateElementInline, createElement, listenToElementOutputs} from './element';\nimport {expressionChangedAfterItHasBeenCheckedError} from './errors';\nimport {appendNgContent} from './ng_content';\nimport {callLifecycleHooksChildrenFirst, checkAndUpdateDirectiveDynamic, checkAndUpdateDirectiveInline, createDirectiveInstance, createPipeInstance, createProviderInstance} from './provider';\nimport {checkAndUpdatePureExpressionDynamic, checkAndUpdatePureExpressionInline, createPureExpression} from './pure_expression';\nimport {checkAndUpdateQuery, createQuery} from './query';\nimport {createTemplateData, createViewContainerData} from './refs';\nimport {checkAndUpdateTextDynamic, checkAndUpdateTextInline, createText} from './text';\nimport {ArgumentType, CheckType, ElementData, NodeData, NodeDef, NodeFlags, ProviderData, RootData, Services, ViewData, ViewDefinition, ViewFlags, ViewHandleEventFn, ViewState, ViewUpdateFn, asElementData, asQueryList, asTextData} from './types';\nimport {NOOP, checkBindingNoChanges, isComponentView, markParentViewsForCheckProjectedViews, resolveDefinition, tokenKey} from './util';\nimport {detachProjectedView} from './view_attach';\n/**\n * @param {?} flags\n * @param {?} nodes\n * @param {?=} updateDirectives\n * @param {?=} updateRenderer\n * @return {?}\n */\nexport function viewDef(\n flags: ViewFlags, nodes: NodeDef[], updateDirectives?: ViewUpdateFn,\n updateRenderer?: ViewUpdateFn): ViewDefinition {\n // clone nodes and set auto calculated values\n let /** @type {?} */ viewBindingCount = 0;\n let /** @type {?} */ viewDisposableCount = 0;\n let /** @type {?} */ viewNodeFlags = 0;\n let /** @type {?} */ viewRootNodeFlags = 0;\n let /** @type {?} */ viewMatchedQueries = 0;\n let /** @type {?} */ currentParent: NodeDef|null = null;\n let /** @type {?} */ currentElementHasPublicProviders = false;\n let /** @type {?} */ currentElementHasPrivateProviders = false;\n let /** @type {?} */ lastRenderRootNode: NodeDef|null = null;\n for (let /** @type {?} */ i = 0; i < nodes.length; i++) {\n while (currentParent && i > currentParent.index + currentParent.childCount) {\n const /** @type {?} */ newParent: NodeDef|null = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= /** @type {?} */(( currentParent.childFlags));\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n }\n const /** @type {?} */ node = nodes[i];\n node.index = i;\n node.parent = currentParent;\n node.bindingIndex = viewBindingCount;\n node.outputIndex = viewDisposableCount;\n\n // renderParent needs to account for ng-container!\n let /** @type {?} */ currentRenderParent: NodeDef|null;\n if (currentParent && currentParent.flags & NodeFlags.TypeElement &&\n ! /** @type {?} */((currentParent.element)).name) {\n currentRenderParent = currentParent.renderParent;\n } else {\n currentRenderParent = currentParent;\n }\n node.renderParent = currentRenderParent;\n\n if (node.element) {\n const /** @type {?} */ elDef = node.element;\n elDef.publicProviders =\n currentParent ? /** @type {?} */(( currentParent.element)).publicProviders : Object.create(null);\n elDef.allProviders = elDef.publicProviders;\n // Note: We assume that all providers of an element are before any child element!\n currentElementHasPublicProviders = false;\n currentElementHasPrivateProviders = false;\n }\n validateNode(currentParent, node, nodes.length);\n\n viewNodeFlags |= node.flags;\n viewMatchedQueries |= node.matchedQueryIds;\n if (node.element && node.element.template) {\n viewMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n if (currentParent) {\n currentParent.childFlags |= node.flags;\n currentParent.directChildFlags |= node.flags;\n currentParent.childMatchedQueries |= node.matchedQueryIds;\n if (node.element && node.element.template) {\n currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n } else {\n viewRootNodeFlags |= node.flags;\n }\n\n viewBindingCount += node.bindings.length;\n viewDisposableCount += node.outputs.length;\n\n if (!currentRenderParent && (node.flags & NodeFlags.CatRenderNode)) {\n lastRenderRootNode = node;\n }\n if (node.flags & NodeFlags.CatProvider) {\n if (!currentElementHasPublicProviders) {\n currentElementHasPublicProviders = true; /** @type {?} */(( /** @type {?} */((\n // Use prototypical inheritance to not get O(n^2) complexity...\n currentParent)).element)).publicProviders =\n Object.create( /** @type {?} */(( /** @type {?} */((currentParent)).element)).publicProviders); /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).allProviders = /** @type {?} */(( /** @type {?} */(( currentParent)).element)).publicProviders;\n }\n const /** @type {?} */ isPrivateService = (node.flags & NodeFlags.PrivateProvider) !== 0;\n const /** @type {?} */ isComponent = (node.flags & NodeFlags.Component) !== 0;\n if (!isPrivateService || isComponent) { /** @type {?} */(( /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).publicProviders))[tokenKey( /** @type {?} */((node.provider)).token)] = node;\n } else {\n if (!currentElementHasPrivateProviders) {\n currentElementHasPrivateProviders = true; /** @type {?} */(( /** @type {?} */((\n // Use protoyypical inheritance to not get O(n^2) complexity...\n currentParent)).element)).allProviders =\n Object.create( /** @type {?} */(( /** @type {?} */((currentParent)).element)).publicProviders);\n } /** @type {?} */(( /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).allProviders))[tokenKey( /** @type {?} */((node.provider)).token)] = node;\n }\n if (isComponent) { /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).componentProvider = node;\n }\n }\n if (node.childCount) {\n currentParent = node;\n }\n }\n while (currentParent) {\n const /** @type {?} */ newParent = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= currentParent.childFlags;\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n }\n const /** @type {?} */ handleEvent: ViewHandleEventFn = (view, nodeIndex, eventName, event) => /** @type {?} */(( /** @type {?} */((\n nodes[nodeIndex].element)).handleEvent))(view, eventName, event);\n return {\n // Will be filled later...\n factory: null,\n nodeFlags: viewNodeFlags,\n rootNodeFlags: viewRootNodeFlags,\n nodeMatchedQueries: viewMatchedQueries, flags,\n nodes: nodes,\n updateDirectives: updateDirectives || NOOP,\n updateRenderer: updateRenderer || NOOP,\n handleEvent: handleEvent || NOOP,\n bindingCount: viewBindingCount,\n outputCount: viewDisposableCount, lastRenderRootNode\n };\n}\n/**\n * @param {?} parent\n * @param {?} node\n * @param {?} nodeCount\n * @return {?}\n */\nfunction validateNode(parent: NodeDef | null, node: NodeDef, nodeCount: number) {\n const /** @type {?} */ template = node.element && node.element.template;\n if (template) {\n if (!template.lastRenderRootNode) {\n throw new Error(`Illegal State: Embedded templates without nodes are not allowed!`);\n }\n if (template.lastRenderRootNode &&\n template.lastRenderRootNode.flags & NodeFlags.EmbeddedViews) {\n throw new Error(\n `Illegal State: Last root node of a template can't have embedded views, at index ${node.index}!`);\n }\n }\n if (node.flags & NodeFlags.CatProvider) {\n const /** @type {?} */ parentFlags = parent ? parent.flags : 0;\n if ((parentFlags & NodeFlags.TypeElement) === 0) {\n throw new Error(\n `Illegal State: Provider/Directive nodes need to be children of elements or anchors, at index ${node.index}!`);\n }\n }\n if (node.query) {\n if (node.flags & NodeFlags.TypeContentQuery &&\n (!parent || (parent.flags & NodeFlags.TypeDirective) === 0)) {\n throw new Error(\n `Illegal State: Content Query nodes need to be children of directives, at index ${node.index}!`);\n }\n if (node.flags & NodeFlags.TypeViewQuery && parent) {\n throw new Error(\n `Illegal State: View Query nodes have to be top level nodes, at index ${node.index}!`);\n }\n }\n if (node.childCount) {\n const /** @type {?} */ parentEnd = parent ? parent.index + parent.childCount : nodeCount - 1;\n if (node.index <= parentEnd && node.index + node.childCount > parentEnd) {\n throw new Error(\n `Illegal State: childCount of node leads outside of parent, at index ${node.index}!`);\n }\n }\n}\n/**\n * @param {?} parent\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nexport function createEmbeddedView(\n parent: ViewData, anchorDef: NodeDef, viewDef: ViewDefinition, context?: any): ViewData {\n // embedded views are seen as siblings to the anchor, so we need\n // to get the parent of the anchor and use it as parentIndex.\n const /** @type {?} */ view = createView(parent.root, parent.renderer, parent, anchorDef, viewDef);\n initView(view, parent.component, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} root\n * @param {?} def\n * @param {?=} context\n * @return {?}\n */\nexport function createRootView(root: RootData, def: ViewDefinition, context?: any): ViewData {\n const /** @type {?} */ view = createView(root, root.renderer, null, null, def);\n initView(view, context, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nexport function createComponentView(\n parentView: ViewData, nodeDef: NodeDef, viewDef: ViewDefinition, hostElement: any): ViewData {\n const /** @type {?} */ rendererType = /** @type {?} */(( nodeDef.element)).componentRendererType;\n let /** @type {?} */ compRenderer: Renderer2;\n if (!rendererType) {\n compRenderer = parentView.root.renderer;\n } else {\n compRenderer = parentView.root.rendererFactory.createRenderer(hostElement, rendererType);\n }\n return createView(\n parentView.root, compRenderer, parentView, /** @type {?} */(( nodeDef.element)).componentProvider, viewDef);\n}\n/**\n * @param {?} root\n * @param {?} renderer\n * @param {?} parent\n * @param {?} parentNodeDef\n * @param {?} def\n * @return {?}\n */\nfunction createView(\n root: RootData, renderer: Renderer2, parent: ViewData | null, parentNodeDef: NodeDef | null,\n def: ViewDefinition): ViewData {\n const /** @type {?} */ nodes: NodeData[] = new Array(def.nodes.length);\n const /** @type {?} */ disposables = def.outputCount ? new Array(def.outputCount) : null;\n const /** @type {?} */ view: ViewData = {\n def,\n parent,\n viewContainerParent: null, parentNodeDef,\n context: null,\n component: null, nodes,\n state: ViewState.CatInit, root, renderer,\n oldValues: new Array(def.bindingCount), disposables\n };\n return view;\n}\n/**\n * @param {?} view\n * @param {?} component\n * @param {?} context\n * @return {?}\n */\nfunction initView(view: ViewData, component: any, context: any) {\n view.component = component;\n view.context = context;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createViewNodes(view: ViewData) {\n let /** @type {?} */ renderHost: any;\n if (isComponentView(view)) {\n const /** @type {?} */ hostDef = view.parentNodeDef;\n renderHost = asElementData( /** @type {?} */((view.parent)), /** @type {?} */(( /** @type {?} */(( hostDef)).parent)).index).renderElement;\n }\n const /** @type {?} */ def = view.def;\n const /** @type {?} */ nodes = view.nodes;\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n Services.setCurrentNode(view, i);\n let /** @type {?} */ nodeData: any;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n const /** @type {?} */ el = /** @type {?} */(( createElement(view, renderHost, nodeDef) as any));\n let /** @type {?} */ componentView: ViewData = /** @type {?} */(( undefined));\n if (nodeDef.flags & NodeFlags.ComponentView) {\n const /** @type {?} */ compViewDef = resolveDefinition( /** @type {?} */(( /** @type {?} */((nodeDef.element)).componentView)));\n componentView = Services.createComponentView(view, nodeDef, compViewDef, el);\n }\n listenToElementOutputs(view, componentView, nodeDef, el);\n nodeData = /** @type {?} */(( <ElementData>{\n renderElement: el,\n componentView,\n viewContainer: null,\n template: /** @type {?} */(( nodeDef.element)).template ? createTemplateData(view, nodeDef) : undefined\n }));\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n nodeData.viewContainer = createViewContainerData(view, nodeDef, nodeData);\n }\n break;\n case NodeFlags.TypeText:\n nodeData = /** @type {?} */(( createText(view, renderHost, nodeDef) as any));\n break;\n case NodeFlags.TypeClassProvider:\n case NodeFlags.TypeFactoryProvider:\n case NodeFlags.TypeUseExistingProvider:\n case NodeFlags.TypeValueProvider: {\n const /** @type {?} */ instance = createProviderInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n break;\n }\n case NodeFlags.TypePipe: {\n const /** @type {?} */ instance = createPipeInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n break;\n }\n case NodeFlags.TypeDirective: {\n const /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n if (nodeDef.flags & NodeFlags.Component) {\n const /** @type {?} */ compView = asElementData(view, /** @type {?} */(( nodeDef.parent)).index).componentView;\n initView(compView, instance, instance);\n }\n break;\n }\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n nodeData = /** @type {?} */(( createPureExpression(view, nodeDef) as any));\n break;\n case NodeFlags.TypeContentQuery:\n case NodeFlags.TypeViewQuery:\n nodeData = /** @type {?} */(( createQuery() as any));\n break;\n case NodeFlags.TypeNgContent:\n appendNgContent(view, renderHost, nodeDef);\n // no runtime data needed for NgContent...\n nodeData = undefined;\n break;\n }\n nodes[i] = nodeData;\n }\n // Create the ViewData.nodes of component views after we created everything else,\n // so that e.g. ng-content works\n execComponentViewsAction(view, ViewAction.CreateViewNodes);\n\n // fill static content and view queries\n execQueriesAction(\n view, NodeFlags.TypeContentQuery | NodeFlags.TypeViewQuery, NodeFlags.StaticQuery,\n CheckType.CheckAndUpdate);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function checkNoChangesView(view: ViewData) {\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, CheckType.CheckNoChanges);\n execEmbeddedViewsAction(view, ViewAction.CheckNoChanges);\n Services.updateRenderer(view, CheckType.CheckNoChanges);\n execComponentViewsAction(view, ViewAction.CheckNoChanges);\n // Note: We don't check queries for changes as we didn't do this in v2.x.\n // TODO(tbosch): investigate if we can enable the check again in v5.x with a nicer error message.\n view.state &= ~(ViewState.CheckProjectedViews | ViewState.CheckProjectedView);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function checkAndUpdateView(view: ViewData) {\n if (view.state & ViewState.BeforeFirstCheck) {\n view.state &= ~ViewState.BeforeFirstCheck;\n view.state |= ViewState.FirstCheck;\n } else {\n view.state &= ~ViewState.FirstCheck;\n }\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, CheckType.CheckAndUpdate);\n execEmbeddedViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(\n view, NodeFlags.TypeContentQuery, NodeFlags.DynamicQuery, CheckType.CheckAndUpdate);\n\n callLifecycleHooksChildrenFirst(\n view, NodeFlags.AfterContentChecked |\n (view.state & ViewState.FirstCheck ? NodeFlags.AfterContentInit : 0));\n\n Services.updateRenderer(view, CheckType.CheckAndUpdate);\n\n execComponentViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(\n view, NodeFlags.TypeViewQuery, NodeFlags.DynamicQuery, CheckType.CheckAndUpdate);\n callLifecycleHooksChildrenFirst(\n view, NodeFlags.AfterViewChecked |\n (view.state & ViewState.FirstCheck ? NodeFlags.AfterViewInit : 0));\n\n if (view.def.flags & ViewFlags.OnPush) {\n view.state &= ~ViewState.ChecksEnabled;\n }\n view.state &= ~(ViewState.CheckProjectedViews | ViewState.CheckProjectedView);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nexport function checkAndUpdateNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): boolean {\n if (argStyle === ArgumentType.Inline) {\n return checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n } else {\n return checkAndUpdateNodeDynamic(view, nodeDef, v0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction markProjectedViewsForCheck(view: ViewData) {\n const /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & NodeFlags.ProjectedTemplate)) {\n return;\n }\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.ProjectedTemplate) {\n const /** @type {?} */ projectedViews = asElementData(view, i).template._projectedViews;\n if (projectedViews) {\n for (let /** @type {?} */ i = 0; i < projectedViews.length; i++) {\n const /** @type {?} */ projectedView = projectedViews[i];\n projectedView.state |= ViewState.CheckProjectedView;\n markParentViewsForCheckProjectedViews(projectedView, view);\n }\n }\n } else if ((nodeDef.childFlags & NodeFlags.ProjectedTemplate) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkAndUpdateNodeInline(\n view: ViewData, nodeDef: NodeDef, v0?: any, v1?: any, v2?: any, v3?: any, v4?: any, v5?: any,\n v6?: any, v7?: any, v8?: any, v9?: any): boolean {\n let /** @type {?} */ changed = false;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n changed = checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypeText:\n changed = checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypeDirective:\n changed =\n checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n changed =\n checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateNodeDynamic(view: ViewData, nodeDef: NodeDef, values: any[]): boolean {\n let /** @type {?} */ changed = false;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n changed = checkAndUpdateElementDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypeText:\n changed = checkAndUpdateTextDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypeDirective:\n changed = checkAndUpdateDirectiveDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n changed = checkAndUpdatePureExpressionDynamic(view, nodeDef, values);\n break;\n }\n if (changed) {\n // Update oldValues after all bindings have been updated,\n // as a setter for a property might update other properties.\n const /** @type {?} */ bindLen = nodeDef.bindings.length;\n const /** @type {?} */ bindingStart = nodeDef.bindingIndex;\n const /** @type {?} */ oldValues = view.oldValues;\n for (let /** @type {?} */ i = 0; i < bindLen; i++) {\n oldValues[bindingStart + i] = values[i];\n }\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nexport function checkNoChangesNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n if (argStyle === ArgumentType.Inline) {\n checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n } else {\n checkNoChangesNodeDynamic(view, nodeDef, v0);\n }\n // Returning false is ok here as we would have thrown in case of a change.\n return false;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkNoChangesNodeInline(\n view: ViewData, nodeDef: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): void {\n const /** @type {?} */ bindLen = nodeDef.bindings.length;\n if (bindLen > 0) checkBindingNoChanges(view, nodeDef, 0, v0);\n if (bindLen > 1) checkBindingNoChanges(view, nodeDef, 1, v1);\n if (bindLen > 2) checkBindingNoChanges(view, nodeDef, 2, v2);\n if (bindLen > 3) checkBindingNoChanges(view, nodeDef, 3, v3);\n if (bindLen > 4) checkBindingNoChanges(view, nodeDef, 4, v4);\n if (bindLen > 5) checkBindingNoChanges(view, nodeDef, 5, v5);\n if (bindLen > 6) checkBindingNoChanges(view, nodeDef, 6, v6);\n if (bindLen > 7) checkBindingNoChanges(view, nodeDef, 7, v7);\n if (bindLen > 8) checkBindingNoChanges(view, nodeDef, 8, v8);\n if (bindLen > 9) checkBindingNoChanges(view, nodeDef, 9, v9);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkNoChangesNodeDynamic(view: ViewData, nodeDef: NodeDef, values: any[]): void {\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n checkBindingNoChanges(view, nodeDef, i, values[i]);\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkNoChangesQuery(view: ViewData, nodeDef: NodeDef) {\n const /** @type {?} */ queryList = asQueryList(view, nodeDef.index);\n if (queryList.dirty) {\n throw expressionChangedAfterItHasBeenCheckedError(\n Services.createDebugContext(view, nodeDef.index), `Query ${ /** @type {?} */((nodeDef.query)).id} not dirty`,\n `Query ${ /** @type {?} */((nodeDef.query)).id} dirty`, (view.state & ViewState.BeforeFirstCheck) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function destroyView(view: ViewData) {\n if (view.state & ViewState.Destroyed) {\n return;\n }\n execEmbeddedViewsAction(view, ViewAction.Destroy);\n execComponentViewsAction(view, ViewAction.Destroy);\n callLifecycleHooksChildrenFirst(view, NodeFlags.OnDestroy);\n if (view.disposables) {\n for (let /** @type {?} */ i = 0; i < view.disposables.length; i++) {\n view.disposables[i]();\n }\n }\n detachProjectedView(view);\n if (view.renderer.destroyNode) {\n destroyViewNodes(view);\n }\n if (isComponentView(view)) {\n view.renderer.destroy();\n }\n view.state |= ViewState.Destroyed;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyViewNodes(view: ViewData) {\n const /** @type {?} */ len = view.def.nodes.length;\n for (let /** @type {?} */ i = 0; i < len; i++) {\n const /** @type {?} */ def = view.def.nodes[i];\n if (def.flags & NodeFlags.TypeElement) { /** @type {?} */((\n view.renderer.destroyNode))(asElementData(view, i).renderElement);\n } else if (def.flags & NodeFlags.TypeText) { /** @type {?} */((\n view.renderer.destroyNode))(asTextData(view, i).renderText);\n }\n }\n}\ntype ViewAction = number;\nlet ViewAction: any = {};\nViewAction.CreateViewNodes = 0;\nViewAction.CheckNoChanges = 1;\nViewAction.CheckNoChangesProjectedViews = 2;\nViewAction.CheckAndUpdate = 3;\nViewAction.CheckAndUpdateProjectedViews = 4;\nViewAction.Destroy = 5;\nViewAction[ViewAction.CreateViewNodes] = \"CreateViewNodes\";\nViewAction[ViewAction.CheckNoChanges] = \"CheckNoChanges\";\nViewAction[ViewAction.CheckNoChangesProjectedViews] = \"CheckNoChangesProjectedViews\";\nViewAction[ViewAction.CheckAndUpdate] = \"CheckAndUpdate\";\nViewAction[ViewAction.CheckAndUpdateProjectedViews] = \"CheckAndUpdateProjectedViews\";\nViewAction[ViewAction.Destroy] = \"Destroy\";\n\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execComponentViewsAction(view: ViewData, action: ViewAction) {\n const /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & NodeFlags.ComponentView)) {\n return;\n }\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.ComponentView) {\n // a leaf\n callViewAction(asElementData(view, i).componentView, action);\n } else if ((nodeDef.childFlags & NodeFlags.ComponentView) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execEmbeddedViewsAction(view: ViewData, action: ViewAction) {\n const /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & NodeFlags.EmbeddedViews)) {\n return;\n }\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n // a leaf\n const /** @type {?} */ embeddedViews = /** @type {?} */(( asElementData(view, i).viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n callViewAction(embeddedViews[k], action);\n }\n } else if ((nodeDef.childFlags & NodeFlags.EmbeddedViews) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction callViewAction(view: ViewData, action: ViewAction) {\n const /** @type {?} */ viewState = view.state;\n switch (action) {\n case ViewAction.CheckNoChanges:\n if ((viewState & ViewState.Destroyed) === 0) {\n if ((viewState & ViewState.CatDetectChanges) === ViewState.CatDetectChanges) {\n checkNoChangesView(view);\n } else if (viewState & ViewState.CheckProjectedViews) {\n execProjectedViewsAction(view, ViewAction.CheckNoChangesProjectedViews);\n }\n }\n break;\n case ViewAction.CheckNoChangesProjectedViews:\n if ((viewState & ViewState.Destroyed) === 0) {\n if (viewState & ViewState.CheckProjectedView) {\n checkNoChangesView(view);\n } else if (viewState & ViewState.CheckProjectedViews) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.CheckAndUpdate:\n if ((viewState & ViewState.Destroyed) === 0) {\n if ((viewState & ViewState.CatDetectChanges) === ViewState.CatDetectChanges) {\n checkAndUpdateView(view);\n } else if (viewState & ViewState.CheckProjectedViews) {\n execProjectedViewsAction(view, ViewAction.CheckAndUpdateProjectedViews);\n }\n }\n break;\n case ViewAction.CheckAndUpdateProjectedViews:\n if ((viewState & ViewState.Destroyed) === 0) {\n if (viewState & ViewState.CheckProjectedView) {\n checkAndUpdateView(view);\n } else if (viewState & ViewState.CheckProjectedViews) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.Destroy:\n // Note: destroyView recurses over all views,\n // so we don't need to special case projected views here.\n destroyView(view);\n break;\n case ViewAction.CreateViewNodes:\n createViewNodes(view);\n break;\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execProjectedViewsAction(view: ViewData, action: ViewAction) {\n execEmbeddedViewsAction(view, action);\n execComponentViewsAction(view, action);\n}\n/**\n * @param {?} view\n * @param {?} queryFlags\n * @param {?} staticDynamicQueryFlag\n * @param {?} checkType\n * @return {?}\n */\nfunction execQueriesAction(\n view: ViewData, queryFlags: NodeFlags, staticDynamicQueryFlag: NodeFlags,\n checkType: CheckType) {\n if (!(view.def.nodeFlags & queryFlags) || !(view.def.nodeFlags & staticDynamicQueryFlag)) {\n return;\n }\n const /** @type {?} */ nodeCount = view.def.nodes.length;\n for (let /** @type {?} */ i = 0; i < nodeCount; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & queryFlags) && (nodeDef.flags & staticDynamicQueryFlag)) {\n Services.setCurrentNode(view, nodeDef.index);\n switch (checkType) {\n case CheckType.CheckAndUpdate:\n checkAndUpdateQuery(view, nodeDef);\n break;\n case CheckType.CheckNoChanges:\n checkNoChangesQuery(view, nodeDef);\n break;\n }\n }\n if (!(nodeDef.childFlags & queryFlags) || !(nodeDef.childFlags & staticDynamicQueryFlag)) {\n // no child has a matching query\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {BindingDef, BindingFlags, NodeDef, NodeFlags, TextData, ViewData, asTextData} from './types';\nimport {calcBindingFlags, checkAndUpdateBinding, getParentRenderElement} from './util';\n/**\n * @param {?} ngContentIndex\n * @param {?} constants\n * @return {?}\n */\nexport function textDef(ngContentIndex: number, constants: string[]): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = new Array(constants.length - 1);\n for (let /** @type {?} */ i = 1; i < constants.length; i++) {\n bindings[i - 1] = {\n flags: BindingFlags.TypeProperty,\n name: null,\n ns: null,\n nonMinifiedName: null,\n securityContext: null,\n suffix: constants[i]\n };\n }\n const /** @type {?} */ flags = NodeFlags.TypeText;\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex,\n childCount: 0, bindings,\n bindingFlags: calcBindingFlags(bindings),\n outputs: [],\n element: null,\n provider: null,\n text: {prefix: constants[0]},\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function createText(view: ViewData, renderHost: any, def: NodeDef): TextData {\n let /** @type {?} */ renderNode: any;\n const /** @type {?} */ renderer = view.renderer;\n renderNode = renderer.createText( /** @type {?} */((def.text)).prefix);\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, renderNode);\n }\n return {renderText: renderNode};\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nexport function checkAndUpdateTextInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n let /** @type {?} */ changed = false;\n const /** @type {?} */ bindings = def.bindings;\n const /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9)) changed = true;\n\n if (changed) {\n let /** @type {?} */ value = /** @type {?} */(( def.text)).prefix;\n if (bindLen > 0) value += _addInterpolationPart(v0, bindings[0]);\n if (bindLen > 1) value += _addInterpolationPart(v1, bindings[1]);\n if (bindLen > 2) value += _addInterpolationPart(v2, bindings[2]);\n if (bindLen > 3) value += _addInterpolationPart(v3, bindings[3]);\n if (bindLen > 4) value += _addInterpolationPart(v4, bindings[4]);\n if (bindLen > 5) value += _addInterpolationPart(v5, bindings[5]);\n if (bindLen > 6) value += _addInterpolationPart(v6, bindings[6]);\n if (bindLen > 7) value += _addInterpolationPart(v7, bindings[7]);\n if (bindLen > 8) value += _addInterpolationPart(v8, bindings[8]);\n if (bindLen > 9) value += _addInterpolationPart(v9, bindings[9]);\n const /** @type {?} */ renderNode = asTextData(view, def.index).renderText;\n view.renderer.setValue(renderNode, value);\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateTextDynamic(view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n let /** @type {?} */ value = '';\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n value = value + _addInterpolationPart(values[i], bindings[i]);\n }\n value = /** @type {?} */(( def.text)).prefix + value;\n const /** @type {?} */ renderNode = asTextData(view, def.index).renderText;\n view.renderer.setValue(renderNode, value);\n }\n return changed;\n}\n/**\n * @param {?} value\n * @param {?} binding\n * @return {?}\n */\nfunction _addInterpolationPart(value: any, binding: BindingDef): string {\n const /** @type {?} */ valueStr = value != null ? value.toString() : '';\n return valueStr + binding.suffix;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {BindingDef, BindingFlags, NodeDef, NodeFlags, PureExpressionData, ViewData, asPureExpressionData} from './types';\nimport {calcBindingFlags, checkAndUpdateBinding} from './util';\n/**\n * @param {?} argCount\n * @return {?}\n */\nexport function purePipeDef(argCount: number): NodeDef {\n // argCount + 1 to include the pipe as first arg\n return _pureExpressionDef(NodeFlags.TypePurePipe, new Array(argCount + 1));\n}\n/**\n * @param {?} argCount\n * @return {?}\n */\nexport function pureArrayDef(argCount: number): NodeDef {\n return _pureExpressionDef(NodeFlags.TypePureArray, new Array(argCount));\n}\n/**\n * @param {?} propertyNames\n * @return {?}\n */\nexport function pureObjectDef(propertyNames: string[]): NodeDef {\n return _pureExpressionDef(NodeFlags.TypePureObject, propertyNames);\n}\n/**\n * @param {?} flags\n * @param {?} propertyNames\n * @return {?}\n */\nfunction _pureExpressionDef(flags: NodeFlags, propertyNames: string[]): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = new Array(propertyNames.length);\n for (let /** @type {?} */ i = 0; i < propertyNames.length; i++) {\n const /** @type {?} */ prop = propertyNames[i];\n bindings[i] = {\n flags: BindingFlags.TypeProperty,\n name: prop,\n ns: null,\n nonMinifiedName: prop,\n securityContext: null,\n suffix: null\n };\n }\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n ngContentIndex: -1,\n childCount: 0, bindings,\n bindingFlags: calcBindingFlags(bindings),\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createPureExpression(view: ViewData, def: NodeDef): PureExpressionData {\n return {value: undefined};\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nexport function checkAndUpdatePureExpressionInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n const /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9)) changed = true;\n\n if (changed) {\n const /** @type {?} */ data = asPureExpressionData(view, def.index);\n let /** @type {?} */ value: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypePureArray:\n value = new Array(bindings.length);\n if (bindLen > 0) value[0] = v0;\n if (bindLen > 1) value[1] = v1;\n if (bindLen > 2) value[2] = v2;\n if (bindLen > 3) value[3] = v3;\n if (bindLen > 4) value[4] = v4;\n if (bindLen > 5) value[5] = v5;\n if (bindLen > 6) value[6] = v6;\n if (bindLen > 7) value[7] = v7;\n if (bindLen > 8) value[8] = v8;\n if (bindLen > 9) value[9] = v9;\n break;\n case NodeFlags.TypePureObject:\n value = {};\n if (bindLen > 0) value[ /** @type {?} */((bindings[0].name))] = v0;\n if (bindLen > 1) value[ /** @type {?} */((bindings[1].name))] = v1;\n if (bindLen > 2) value[ /** @type {?} */((bindings[2].name))] = v2;\n if (bindLen > 3) value[ /** @type {?} */((bindings[3].name))] = v3;\n if (bindLen > 4) value[ /** @type {?} */((bindings[4].name))] = v4;\n if (bindLen > 5) value[ /** @type {?} */((bindings[5].name))] = v5;\n if (bindLen > 6) value[ /** @type {?} */((bindings[6].name))] = v6;\n if (bindLen > 7) value[ /** @type {?} */((bindings[7].name))] = v7;\n if (bindLen > 8) value[ /** @type {?} */((bindings[8].name))] = v8;\n if (bindLen > 9) value[ /** @type {?} */((bindings[9].name))] = v9;\n break;\n case NodeFlags.TypePurePipe:\n const /** @type {?} */ pipe = v0;\n switch (bindLen) {\n case 1:\n value = pipe.transform(v0);\n break;\n case 2:\n value = pipe.transform(v1);\n break;\n case 3:\n value = pipe.transform(v1, v2);\n break;\n case 4:\n value = pipe.transform(v1, v2, v3);\n break;\n case 5:\n value = pipe.transform(v1, v2, v3, v4);\n break;\n case 6:\n value = pipe.transform(v1, v2, v3, v4, v5);\n break;\n case 7:\n value = pipe.transform(v1, v2, v3, v4, v5, v6);\n break;\n case 8:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7);\n break;\n case 9:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8);\n break;\n case 10:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n }\n break;\n }\n data.value = value;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdatePureExpressionDynamic(\n view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n const /** @type {?} */ data = asPureExpressionData(view, def.index);\n let /** @type {?} */ value: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypePureArray:\n value = values;\n break;\n case NodeFlags.TypePureObject:\n value = {};\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n value[ /** @type {?} */((bindings[i].name))] = values[i];\n }\n break;\n case NodeFlags.TypePurePipe:\n const /** @type {?} */ pipe = values[0];\n const /** @type {?} */ params = values.slice(1);\n value = ( /** @type {?} */((<any>pipe.transform)))(...params);\n break;\n }\n data.value = value;\n }\n return changed;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {NodeDef, NodeFlags, ViewData} from './types';\nimport {RenderNodeAction, getParentRenderElement, visitProjectedRenderNodes} from './util';\n/**\n * @param {?} ngContentIndex\n * @param {?} index\n * @return {?}\n */\nexport function ngContentDef(ngContentIndex: number, index: number): NodeDef {\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags: NodeFlags.TypeNgContent,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex,\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: {index}\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function appendNgContent(view: ViewData, renderHost: any, def: NodeDef) {\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (!parentEl) {\n // Nothing to do if there is no parent element.\n return;\n }\n const /** @type {?} */ ngContentIndex = /** @type {?} */(( def.ngContent)).index;\n visitProjectedRenderNodes(\n view, ngContentIndex, RenderNodeAction.AppendChild, parentEl, null, undefined);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ElementRef} from '../linker/element_ref';\nimport {QueryList} from '../linker/query_list';\n\nimport {NodeDef, NodeFlags, QueryBindingDef, QueryBindingType, QueryDef, QueryValueType, ViewData, asElementData, asProviderData, asQueryList} from './types';\nimport {declaredViewContainer, filterQueryId, isEmbeddedView} from './util';\n/**\n * @param {?} flags\n * @param {?} id\n * @param {?} bindings\n * @return {?}\n */\nexport function queryDef(\n flags: NodeFlags, id: number, bindings: {[propName: string]: QueryBindingType}): NodeDef {\n let /** @type {?} */ bindingDefs: QueryBindingDef[] = [];\n for (let /** @type {?} */ propName in bindings) {\n const /** @type {?} */ bindingType = bindings[propName];\n bindingDefs.push({propName, bindingType});\n }\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n ngContentIndex: -1,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: {id, filterId: filterQueryId(id), bindings: bindingDefs},\n ngContent: null\n };\n}\n/**\n * @return {?}\n */\nexport function createQuery(): QueryList<any> {\n return new QueryList();\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function dirtyParentQueries(view: ViewData) {\n const /** @type {?} */ queryIds = view.def.nodeMatchedQueries;\n while (view.parent && isEmbeddedView(view)) {\n let /** @type {?} */ tplDef = /** @type {?} */(( view.parentNodeDef));\n view = view.parent;\n // content queries\n const /** @type {?} */ end = tplDef.index + tplDef.childCount;\n for (let /** @type {?} */ i = 0; i <= end; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.TypeContentQuery) &&\n (nodeDef.flags & NodeFlags.DynamicQuery) &&\n ( /** @type {?} */((nodeDef.query)).filterId & queryIds) === /** @type {?} */(( nodeDef.query)).filterId) {\n asQueryList(view, i).setDirty();\n }\n if ((nodeDef.flags & NodeFlags.TypeElement && i + nodeDef.childCount < tplDef.index) ||\n !(nodeDef.childFlags & NodeFlags.TypeContentQuery) ||\n !(nodeDef.childFlags & NodeFlags.DynamicQuery)) {\n // skip elements that don't contain the template element or no query.\n i += nodeDef.childCount;\n }\n }\n }\n\n // view queries\n if (view.def.nodeFlags & NodeFlags.TypeViewQuery) {\n for (let /** @type {?} */ i = 0; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.TypeViewQuery) && (nodeDef.flags & NodeFlags.DynamicQuery)) {\n asQueryList(view, i).setDirty();\n }\n // only visit the root nodes\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nexport function checkAndUpdateQuery(view: ViewData, nodeDef: NodeDef) {\n const /** @type {?} */ queryList = asQueryList(view, nodeDef.index);\n if (!queryList.dirty) {\n return;\n }\n let /** @type {?} */ directiveInstance: any;\n let /** @type {?} */ newValues: any[] = /** @type {?} */(( undefined));\n if (nodeDef.flags & NodeFlags.TypeContentQuery) {\n const /** @type {?} */ elementDef = /** @type {?} */(( /** @type {?} */(( nodeDef.parent)).parent));\n newValues = calcQueryValues(\n view, elementDef.index, elementDef.index + elementDef.childCount, /** @type {?} */(( nodeDef.query)), []);\n directiveInstance = asProviderData(view, /** @type {?} */(( nodeDef.parent)).index).instance;\n } else if (nodeDef.flags & NodeFlags.TypeViewQuery) {\n newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, /** @type {?} */(( nodeDef.query)), []);\n directiveInstance = view.component;\n }\n queryList.reset(newValues);\n const /** @type {?} */ bindings = /** @type {?} */(( nodeDef.query)).bindings;\n let /** @type {?} */ notify = false;\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n const /** @type {?} */ binding = bindings[i];\n let /** @type {?} */ boundValue: any;\n switch (binding.bindingType) {\n case QueryBindingType.First:\n boundValue = queryList.first;\n break;\n case QueryBindingType.All:\n boundValue = queryList;\n notify = true;\n break;\n }\n directiveInstance[binding.propName] = boundValue;\n }\n if (notify) {\n queryList.notifyOnChanges();\n }\n}\n/**\n * @param {?} view\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} queryDef\n * @param {?} values\n * @return {?}\n */\nfunction calcQueryValues(\n view: ViewData, startIndex: number, endIndex: number, queryDef: QueryDef,\n values: any[]): any[] {\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n const /** @type {?} */ valueType = nodeDef.matchedQueries[queryDef.id];\n if (valueType != null) {\n values.push(getQueryValue(view, nodeDef, valueType));\n }\n if (nodeDef.flags & NodeFlags.TypeElement && /** @type {?} */(( nodeDef.element)).template &&\n ( /** @type {?} */(( /** @type {?} */((nodeDef.element)).template)).nodeMatchedQueries & queryDef.filterId) ===\n queryDef.filterId) {\n // check embedded views that were attached at the place of their template.\n const /** @type {?} */ elementData = asElementData(view, i);\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n const /** @type {?} */ embeddedView = embeddedViews[k];\n const /** @type {?} */ dvc = declaredViewContainer(embeddedView);\n if (dvc && dvc === elementData) {\n calcQueryValues(embeddedView, 0, embeddedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n const /** @type {?} */ projectedViews = elementData.template._projectedViews;\n if (projectedViews) {\n for (let /** @type {?} */ k = 0; k < projectedViews.length; k++) {\n const /** @type {?} */ projectedView = projectedViews[k];\n calcQueryValues(projectedView, 0, projectedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n if ((nodeDef.childMatchedQueries & queryDef.filterId) !== queryDef.filterId) {\n // if no child matches the query, skip the children.\n i += nodeDef.childCount;\n }\n }\n return values;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} queryValueType\n * @return {?}\n */\nexport function getQueryValue(\n view: ViewData, nodeDef: NodeDef, queryValueType: QueryValueType): any {\n if (queryValueType != null) {\n // a match\n let /** @type {?} */ value: any;\n switch (queryValueType) {\n case QueryValueType.RenderElement:\n value = asElementData(view, nodeDef.index).renderElement;\n break;\n case QueryValueType.ElementRef:\n value = new ElementRef(asElementData(view, nodeDef.index).renderElement);\n break;\n case QueryValueType.TemplateRef:\n value = asElementData(view, nodeDef.index).template;\n break;\n case QueryValueType.ViewContainerRef:\n value = asElementData(view, nodeDef.index).viewContainer;\n break;\n case QueryValueType.Provider:\n value = asProviderData(view, nodeDef.index).instance;\n break;\n }\n return value;\n }\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ChangeDetectorRef, SimpleChange, SimpleChanges, WrappedValue} from '../change_detection/change_detection';\nimport {Injector} from '../di';\nimport {ElementRef} from '../linker/element_ref';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {Renderer as RendererV1, Renderer2} from '../render/api';\n\nimport {createChangeDetectorRef, createInjector, createRendererV1} from './refs';\nimport {BindingDef, BindingFlags, DepDef, DepFlags, NodeDef, NodeFlags, OutputDef, OutputType, ProviderData, QueryValueType, Services, ViewData, ViewFlags, ViewState, asElementData, asProviderData} from './types';\nimport {calcBindingFlags, checkBinding, dispatchEvent, isComponentView, splitDepsDsl, splitMatchedQueriesDsl, tokenKey, viewParentEl} from './util';\n\nconst /** @type {?} */ RendererV1TokenKey = tokenKey(RendererV1);\nconst /** @type {?} */ Renderer2TokenKey = tokenKey(Renderer2);\nconst /** @type {?} */ ElementRefTokenKey = tokenKey(ElementRef);\nconst /** @type {?} */ ViewContainerRefTokenKey = tokenKey(ViewContainerRef);\nconst /** @type {?} */ TemplateRefTokenKey = tokenKey(TemplateRef);\nconst /** @type {?} */ ChangeDetectorRefTokenKey = tokenKey(ChangeDetectorRef);\nconst /** @type {?} */ InjectorRefTokenKey = tokenKey(Injector);\n\nconst /** @type {?} */ NOT_CREATED = new Object();\n/**\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} childCount\n * @param {?} ctor\n * @param {?} deps\n * @param {?=} props\n * @param {?=} outputs\n * @return {?}\n */\nexport function directiveDef(\n flags: NodeFlags, matchedQueries: [string | number, QueryValueType][], childCount: number,\n ctor: any, deps: ([DepFlags, any] | any)[], props?: {[name: string]: [number, string]},\n outputs?: {[name: string]: string}): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = [];\n if (props) {\n for (let /** @type {?} */ prop in props) {\n const [bindingIndex, nonMinifiedName] = props[prop];\n bindings[bindingIndex] = {\n flags: BindingFlags.TypeProperty,\n name: prop, nonMinifiedName,\n ns: null,\n securityContext: null,\n suffix: null\n };\n }\n }\n const /** @type {?} */ outputDefs: OutputDef[] = [];\n if (outputs) {\n for (let /** @type {?} */ propName in outputs) {\n outputDefs.push(\n {type: OutputType.DirectiveOutput, propName, target: null, eventName: outputs[propName]});\n }\n }\n flags |= NodeFlags.TypeDirective;\n return _def(flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);\n}\n/**\n * @param {?} flags\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nexport function pipeDef(flags: NodeFlags, ctor: any, deps: ([DepFlags, any] | any)[]): NodeDef {\n flags |= NodeFlags.TypePipe;\n return _def(flags, null, 0, ctor, ctor, deps);\n}\n/**\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nexport function providerDef(\n flags: NodeFlags, matchedQueries: [string | number, QueryValueType][], token: any, value: any,\n deps: ([DepFlags, any] | any)[]): NodeDef {\n return _def(flags, matchedQueries, 0, token, value, deps);\n}\n/**\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} childCount\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @param {?=} bindings\n * @param {?=} outputs\n * @return {?}\n */\nexport function _def(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][] | null,\n childCount: number, token: any, value: any, deps: ([DepFlags, any] | any)[],\n bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef {\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n if (!outputs) {\n outputs = [];\n }\n if (!bindings) {\n bindings = [];\n }\n\n const /** @type {?} */ depDefs = splitDepsDsl(deps);\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references,\n ngContentIndex: -1, childCount, bindings,\n bindingFlags: calcBindingFlags(bindings), outputs,\n element: null,\n provider: {token, value, deps: depDefs},\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createProviderInstance(view: ViewData, def: NodeDef): any {\n return def.flags & NodeFlags.LazyProvider ? NOT_CREATED : _createProviderInstance(view, def);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createPipeInstance(view: ViewData, def: NodeDef): any {\n // deps are looked up from component.\n let /** @type {?} */ compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n // pipes can see the private services of the component\n const /** @type {?} */ allowPrivateServices = true;\n // pipes are always eager and classes!\n return createClass( /** @type {?} */((\n compView.parent)), /** @type {?} */(( viewParentEl(compView))), allowPrivateServices, /** @type {?} */(( def.provider)).value, /** @type {?} */((\n def.provider)).deps);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createDirectiveInstance(view: ViewData, def: NodeDef): any {\n // components can see other private services, other directives can't.\n const /** @type {?} */ allowPrivateServices = (def.flags & NodeFlags.Component) > 0;\n // directives are always eager and classes!\n const /** @type {?} */ instance = createClass(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( def.provider)).value, /** @type {?} */(( def.provider)).deps);\n if (def.outputs.length) {\n for (let /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n const /** @type {?} */ output = def.outputs[i];\n const /** @type {?} */ subscription = instance[ /** @type {?} */((output.propName))].subscribe(\n eventHandlerClosure(view, /** @type {?} */(( def.parent)).index, output.eventName)); /** @type {?} */((\n view.disposables))[def.outputIndex + i] = subscription.unsubscribe.bind(subscription);\n }\n }\n return instance;\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction eventHandlerClosure(view: ViewData, index: number, eventName: string) {\n return (event: any) => {\n try {\n return dispatchEvent(view, index, eventName, event);\n } catch ( /** @type {?} */e) {\n // Attention: Don't rethrow, as it would cancel Observable subscriptions!\n view.root.errorHandler.handleError(e);\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nexport function checkAndUpdateDirectiveInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ providerData = asProviderData(view, def.index);\n const /** @type {?} */ directive = providerData.instance;\n let /** @type {?} */ changed = false;\n let /** @type {?} */ changes: SimpleChanges = /** @type {?} */(( undefined));\n const /** @type {?} */ bindLen = def.bindings.length;\n if (bindLen > 0 && checkBinding(view, def, 0, v0)) {\n changed = true;\n changes = updateProp(view, providerData, def, 0, v0, changes);\n }\n if (bindLen > 1 && checkBinding(view, def, 1, v1)) {\n changed = true;\n changes = updateProp(view, providerData, def, 1, v1, changes);\n }\n if (bindLen > 2 && checkBinding(view, def, 2, v2)) {\n changed = true;\n changes = updateProp(view, providerData, def, 2, v2, changes);\n }\n if (bindLen > 3 && checkBinding(view, def, 3, v3)) {\n changed = true;\n changes = updateProp(view, providerData, def, 3, v3, changes);\n }\n if (bindLen > 4 && checkBinding(view, def, 4, v4)) {\n changed = true;\n changes = updateProp(view, providerData, def, 4, v4, changes);\n }\n if (bindLen > 5 && checkBinding(view, def, 5, v5)) {\n changed = true;\n changes = updateProp(view, providerData, def, 5, v5, changes);\n }\n if (bindLen > 6 && checkBinding(view, def, 6, v6)) {\n changed = true;\n changes = updateProp(view, providerData, def, 6, v6, changes);\n }\n if (bindLen > 7 && checkBinding(view, def, 7, v7)) {\n changed = true;\n changes = updateProp(view, providerData, def, 7, v7, changes);\n }\n if (bindLen > 8 && checkBinding(view, def, 8, v8)) {\n changed = true;\n changes = updateProp(view, providerData, def, 8, v8, changes);\n }\n if (bindLen > 9 && checkBinding(view, def, 9, v9)) {\n changed = true;\n changes = updateProp(view, providerData, def, 9, v9, changes);\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {\n directive.ngOnInit();\n }\n if (def.flags & NodeFlags.DoCheck) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateDirectiveDynamic(\n view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ providerData = asProviderData(view, def.index);\n const /** @type {?} */ directive = providerData.instance;\n let /** @type {?} */ changed = false;\n let /** @type {?} */ changes: SimpleChanges = /** @type {?} */(( undefined));\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkBinding(view, def, i, values[i])) {\n changed = true;\n changes = updateProp(view, providerData, def, i, values[i], changes);\n }\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {\n directive.ngOnInit();\n }\n if (def.flags & NodeFlags.DoCheck) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction _createProviderInstance(view: ViewData, def: NodeDef): any {\n // private services can see other private services\n const /** @type {?} */ allowPrivateServices = (def.flags & NodeFlags.PrivateProvider) > 0;\n const /** @type {?} */ providerDef = def.provider;\n let /** @type {?} */ injectable: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypeClassProvider:\n injectable = createClass(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).value, /** @type {?} */(( providerDef)).deps);\n break;\n case NodeFlags.TypeFactoryProvider:\n injectable = callFactory(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).value, /** @type {?} */(( providerDef)).deps);\n break;\n case NodeFlags.TypeUseExistingProvider:\n injectable = resolveDep(view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).deps[0]);\n break;\n case NodeFlags.TypeValueProvider:\n injectable = /** @type {?} */(( providerDef)).value;\n break;\n }\n return injectable;\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction createClass(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, ctor: any, deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = new ctor();\n break;\n case 1:\n injectable = new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n break;\n case 2:\n injectable = new ctor(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]));\n break;\n case 3:\n injectable = new ctor(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]),\n resolveDep(view, elDef, allowPrivateServices, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = new Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n injectable = new ctor(...depValues);\n }\n return injectable;\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction callFactory(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, factory: any,\n deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = factory();\n break;\n case 1:\n injectable = factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n break;\n case 2:\n injectable = factory(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]));\n break;\n case 3:\n injectable = factory(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]),\n resolveDep(view, elDef, allowPrivateServices, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n injectable = factory(...depValues);\n }\n return injectable;\n}\n\n// This default value is when checking the hierarchy for a token.\n//\n// It means both:\n// - the token is not provided by the current injector,\n// - only the element injectors should be checked (ie do not check module injectors\n//\n// mod1\n// /\n// el1 mod2\n// \\ /\n// el2\n//\n// When requesting el2.injector.get(token), we should check in the following order and return the\n// first found value:\n// - el2.injector.get(token, default)\n// - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module\n// - mod2.injector.get(token, default)\nexport const /** @type {?} */ NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nexport function resolveDep(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, depDef: DepDef,\n notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n if (depDef.flags & DepFlags.Value) {\n return depDef.token;\n }\n const /** @type {?} */ startView = view;\n if (depDef.flags & DepFlags.Optional) {\n notFoundValue = null;\n }\n const /** @type {?} */ tokenKey = depDef.tokenKey;\n\n if (tokenKey === ChangeDetectorRefTokenKey) {\n // directives on the same element as a component should be able to control the change detector\n // of that component as well.\n allowPrivateServices = !!(elDef && /** @type {?} */(( elDef.element)).componentView);\n }\n\n if (elDef && (depDef.flags & DepFlags.SkipSelf)) {\n allowPrivateServices = false;\n elDef = /** @type {?} */(( elDef.parent));\n }\n\n while (view) {\n if (elDef) {\n switch (tokenKey) {\n case RendererV1TokenKey: {\n const /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return createRendererV1(compView);\n }\n case Renderer2TokenKey: {\n const /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return compView.renderer;\n }\n case ElementRefTokenKey:\n return new ElementRef(asElementData(view, elDef.index).renderElement);\n case ViewContainerRefTokenKey:\n return asElementData(view, elDef.index).viewContainer;\n case TemplateRefTokenKey: {\n if ( /** @type {?} */((elDef.element)).template) {\n return asElementData(view, elDef.index).template;\n }\n break;\n }\n case ChangeDetectorRefTokenKey: {\n let /** @type {?} */ cdView = findCompView(view, elDef, allowPrivateServices);\n return createChangeDetectorRef(cdView);\n }\n case InjectorRefTokenKey:\n return createInjector(view, elDef);\n default:\n const /** @type {?} */ providerDef = /** @type {?} */((\n (allowPrivateServices ? /** @type {?} */(( elDef.element)).allProviders : /** @type {?} */((\n elDef.element)).publicProviders)))[tokenKey];\n if (providerDef) {\n const /** @type {?} */ providerData = asProviderData(view, providerDef.index);\n if (providerData.instance === NOT_CREATED) {\n providerData.instance = _createProviderInstance(view, providerDef);\n }\n return providerData.instance;\n }\n }\n }\n allowPrivateServices = isComponentView(view);\n elDef = /** @type {?} */(( viewParentEl(view)));\n view = /** @type {?} */(( view.parent));\n }\n\n const /** @type {?} */ value = startView.root.injector.get(depDef.token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR);\n\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n\n return startView.root.ngModule.injector.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @return {?}\n */\nfunction findCompView(view: ViewData, elDef: NodeDef, allowPrivateServices: boolean) {\n let /** @type {?} */ compView: ViewData;\n if (allowPrivateServices) {\n compView = asElementData(view, elDef.index).componentView;\n } else {\n compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n }\n return compView;\n}\n/**\n * @param {?} view\n * @param {?} providerData\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @param {?} changes\n * @return {?}\n */\nfunction updateProp(\n view: ViewData, providerData: ProviderData, def: NodeDef, bindingIdx: number, value: any,\n changes: SimpleChanges): SimpleChanges {\n if (def.flags & NodeFlags.Component) {\n const /** @type {?} */ compView = asElementData(view, /** @type {?} */(( def.parent)).index).componentView;\n if (compView.def.flags & ViewFlags.OnPush) {\n compView.state |= ViewState.ChecksEnabled;\n }\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n const /** @type {?} */ propName = /** @type {?} */(( binding.name));\n // Note: This is still safe with Closure Compiler as\n // the user passed in the property name as an object has to `providerDef`,\n // so Closure Compiler will have renamed the property correctly already.\n providerData.instance[propName] = value;\n if (def.flags & NodeFlags.OnChanges) {\n changes = changes || {};\n let /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if (oldValue instanceof WrappedValue) {\n oldValue = oldValue.wrapped;\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n changes[ /** @type {?} */((binding.nonMinifiedName))] =\n new SimpleChange(oldValue, value, (view.state & ViewState.FirstCheck) !== 0);\n }\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return changes;\n}\n/**\n * @param {?} view\n * @param {?} lifecycles\n * @return {?}\n */\nexport function callLifecycleHooksChildrenFirst(view: ViewData, lifecycles: NodeFlags) {\n if (!(view.def.nodeFlags & lifecycles)) {\n return;\n }\n const /** @type {?} */ nodes = view.def.nodes;\n for (let /** @type {?} */ i = 0; i < nodes.length; i++) {\n const /** @type {?} */ nodeDef = nodes[i];\n let /** @type {?} */ parent = nodeDef.parent;\n if (!parent && nodeDef.flags & lifecycles) {\n // matching root node (e.g. a pipe)\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles);\n }\n if ((nodeDef.childFlags & lifecycles) === 0) {\n // no child matches one of the lifecycles\n i += nodeDef.childCount;\n }\n while (parent && (parent.flags & NodeFlags.TypeElement) &&\n i === parent.index + parent.childCount) {\n // last child of an element\n if (parent.directChildFlags & lifecycles) {\n callElementProvidersLifecycles(view, parent, lifecycles);\n }\n parent = parent.parent;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callElementProvidersLifecycles(view: ViewData, elDef: NodeDef, lifecycles: NodeFlags) {\n for (let /** @type {?} */ i = elDef.index + 1; i <= elDef.index + elDef.childCount; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & lifecycles) {\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles);\n }\n // only visit direct children\n i += nodeDef.childCount;\n }\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callProviderLifecycles(view: ViewData, index: number, lifecycles: NodeFlags) {\n const /** @type {?} */ provider = asProviderData(view, index).instance;\n if (provider === NOT_CREATED) {\n return;\n }\n Services.setCurrentNode(view, index);\n if (lifecycles & NodeFlags.AfterContentInit) {\n provider.ngAfterContentInit();\n }\n if (lifecycles & NodeFlags.AfterContentChecked) {\n provider.ngAfterContentChecked();\n }\n if (lifecycles & NodeFlags.AfterViewInit) {\n provider.ngAfterViewInit();\n }\n if (lifecycles & NodeFlags.AfterViewChecked) {\n provider.ngAfterViewChecked();\n }\n if (lifecycles & NodeFlags.OnDestroy) {\n provider.ngOnDestroy();\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ApplicationRef} from '../application_ref';\nimport {ChangeDetectorRef} from '../change_detection/change_detection';\nimport {Injector} from '../di/injector';\nimport {ComponentFactory, ComponentRef} from '../linker/component_factory';\nimport {ComponentFactoryBoundToModule, ComponentFactoryResolver} from '../linker/component_factory_resolver';\nimport {ElementRef} from '../linker/element_ref';\nimport {InternalNgModuleRef, NgModuleRef} from '../linker/ng_module_factory';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {EmbeddedViewRef, InternalViewRef, ViewRef} from '../linker/view_ref';\nimport {Renderer as RendererV1, Renderer2} from '../render/api';\nimport {Type} from '../type';\nimport {stringify} from '../util';\nimport {VERSION} from '../version';\n\nimport {callNgModuleLifecycle, initNgModule, resolveNgModuleDep} from './ng_module';\nimport {DepFlags, ElementData, NgModuleData, NgModuleDefinition, NodeDef, NodeFlags, Services, TemplateData, ViewContainerData, ViewData, ViewDefinitionFactory, ViewState, asElementData, asProviderData, asTextData} from './types';\nimport {markParentViewsForCheck, resolveDefinition, rootRenderNodes, splitNamespace, tokenKey, viewParentEl} from './util';\nimport {attachEmbeddedView, detachEmbeddedView, moveEmbeddedView, renderDetachView} from './view_attach';\n\nconst /** @type {?} */ EMPTY_CONTEXT = new Object();\n/**\n * @param {?} selector\n * @param {?} componentType\n * @param {?} viewDefFactory\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} ngContentSelectors\n * @return {?}\n */\nexport function createComponentFactory(\n selector: string, componentType: Type<any>, viewDefFactory: ViewDefinitionFactory,\n inputs: {[propName: string]: string} | null, outputs: {[propName: string]: string},\n ngContentSelectors: string[]): ComponentFactory<any> {\n return new ComponentFactory_(\n selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors);\n}\n/**\n * @param {?} componentFactory\n * @return {?}\n */\nexport function getComponentViewDefinitionFactory(componentFactory: ComponentFactory<any>):\n ViewDefinitionFactory {\n return ( /** @type {?} */((componentFactory as ComponentFactory_))).viewDefFactory;\n}\nclass ComponentFactory_ extends ComponentFactory<any> {\n/**\n * \\@internal\n */\nviewDefFactory: ViewDefinitionFactory;\n/**\n * @param {?} selector\n * @param {?} componentType\n * @param {?} viewDefFactory\n * @param {?} _inputs\n * @param {?} _outputs\n * @param {?} ngContentSelectors\n */\nconstructor(\npublic selector: string,\npublic componentType: Type<any>,\n viewDefFactory: ViewDefinitionFactory,\nprivate _inputs: {[propName: string]: string}|null,\nprivate _outputs: {[propName: string]: string},\npublic ngContentSelectors: string[]) {\n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n super();\n this.viewDefFactory = viewDefFactory;\n }\n/**\n * @return {?}\n */\nget inputs() {\n const /** @type {?} */ inputsArr: {propName: string, templateName: string}[] = [];\n const /** @type {?} */ inputs = /** @type {?} */(( this._inputs));\n for (let /** @type {?} */ propName in inputs) {\n const /** @type {?} */ templateName = inputs[propName];\n inputsArr.push({propName, templateName});\n }\n return inputsArr;\n }\n/**\n * @return {?}\n */\nget outputs() {\n const /** @type {?} */ outputsArr: {propName: string, templateName: string}[] = [];\n for (let /** @type {?} */ propName in this._outputs) {\n const /** @type {?} */ templateName = this._outputs[propName];\n outputsArr.push({propName, templateName});\n }\n return outputsArr;\n }\n/**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>): ComponentRef<any> {\n if (!ngModule) {\n throw new Error('ngModule should be provided');\n }\n const /** @type {?} */ viewDef = resolveDefinition(this.viewDefFactory);\n const /** @type {?} */ componentNodeIndex = /** @type {?} */(( /** @type {?} */(( viewDef.nodes[0].element)).componentProvider)).index;\n const /** @type {?} */ view = Services.createRootView(\n injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);\n const /** @type {?} */ component = asProviderData(view, componentNodeIndex).instance;\n if (rootSelectorOrNode) {\n view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);\n }\n\n return new ComponentRef_(view, new ViewRef_(view), component);\n }\n}\n\nfunction ComponentFactory__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nComponentFactory_.prototype.viewDefFactory;\n/** @type {?} */\nComponentFactory_.prototype.selector;\n/** @type {?} */\nComponentFactory_.prototype.componentType;\n/** @type {?} */\nComponentFactory_.prototype._inputs;\n/** @type {?} */\nComponentFactory_.prototype._outputs;\n/** @type {?} */\nComponentFactory_.prototype.ngContentSelectors;\n}\n\nclass ComponentRef_ extends ComponentRef<any> {\nprivate _elDef: NodeDef;\n/**\n * @param {?} _view\n * @param {?} _viewRef\n * @param {?} _component\n */\nconstructor(private _view: ViewData,\nprivate _viewRef: ViewRef,\nprivate _component: any) {\n super();\n this._elDef = this._view.def.nodes[0];\n }\n/**\n * @return {?}\n */\nget location(): ElementRef {\n return new ElementRef(asElementData(this._view, this._elDef.index).renderElement);\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return new Injector_(this._view, this._elDef); }\n/**\n * @return {?}\n */\nget instance(): any { return this._component; };\n/**\n * @return {?}\n */\nget hostView(): ViewRef { return this._viewRef; };\n/**\n * @return {?}\n */\nget changeDetectorRef(): ChangeDetectorRef { return this._viewRef; };\n/**\n * @return {?}\n */\nget componentType(): Type<any> { return /** @type {?} */(( <any>this._component.constructor)); }\n/**\n * @return {?}\n */\ndestroy(): void { this._viewRef.destroy(); }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function): void { this._viewRef.onDestroy(callback); }\n}\n\nfunction ComponentRef__tsickle_Closure_declarations() {\n/** @type {?} */\nComponentRef_.prototype._elDef;\n/** @type {?} */\nComponentRef_.prototype._view;\n/** @type {?} */\nComponentRef_.prototype._viewRef;\n/** @type {?} */\nComponentRef_.prototype._component;\n}\n\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} elData\n * @return {?}\n */\nexport function createViewContainerData(\n view: ViewData, elDef: NodeDef, elData: ElementData): ViewContainerData {\n return new ViewContainerRef_(view, elDef, elData);\n}\nclass ViewContainerRef_ implements ViewContainerData {\n/**\n * \\@internal\n */\n_embeddedViews: ViewData[] = [];\n/**\n * @param {?} _view\n * @param {?} _elDef\n * @param {?} _data\n */\nconstructor(private _view: ViewData,\nprivate _elDef: NodeDef,\nprivate _data: ElementData) {}\n/**\n * @return {?}\n */\nget element(): ElementRef { return new ElementRef(this._data.renderElement); }\n/**\n * @return {?}\n */\nget injector(): Injector { return new Injector_(this._view, this._elDef); }\n/**\n * @return {?}\n */\nget parentInjector(): Injector {\n let /** @type {?} */ view = this._view;\n let /** @type {?} */ elDef = this._elDef.parent;\n while (!elDef && view) {\n elDef = viewParentEl(view);\n view = /** @type {?} */(( view.parent));\n }\n\n return view ? new Injector_(view, elDef) : new Injector_(this._view, null);\n }\n/**\n * @return {?}\n */\nclear(): void {\n const /** @type {?} */ len = this._embeddedViews.length;\n for (let /** @type {?} */ i = len - 1; i >= 0; i--) {\n const /** @type {?} */ view = /** @type {?} */(( detachEmbeddedView(this._data, i)));\n Services.destroyView(view);\n }\n }\n/**\n * @param {?} index\n * @return {?}\n */\nget(index: number): ViewRef|null {\n const /** @type {?} */ view = this._embeddedViews[index];\n if (view) {\n const /** @type {?} */ ref = new ViewRef_(view);\n ref.attachToViewContainerRef(this);\n return ref;\n }\n return null;\n }\n/**\n * @return {?}\n */\nget length(): number { return this._embeddedViews.length; };\n/**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\ncreateEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number):\n EmbeddedViewRef<C> {\n const /** @type {?} */ viewRef = templateRef.createEmbeddedView(context || /** @type {?} */(( <any>{})));\n this.insert(viewRef, index);\n return viewRef;\n }\n/**\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModuleRef\n * @return {?}\n */\ncreateComponent<C>(\n componentFactory: ComponentFactory<C>, index?: number, injector?: Injector,\n projectableNodes?: any[][], ngModuleRef?: NgModuleRef<any>): ComponentRef<C> {\n const /** @type {?} */ contextInjector = injector || this.parentInjector;\n if (!ngModuleRef && !(componentFactory instanceof ComponentFactoryBoundToModule)) {\n ngModuleRef = contextInjector.get(NgModuleRef);\n }\n const /** @type {?} */ componentRef =\n componentFactory.create(contextInjector, projectableNodes, undefined, ngModuleRef);\n this.insert(componentRef.hostView, index);\n return componentRef;\n }\n/**\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\ninsert(viewRef: ViewRef, index?: number): ViewRef {\n const /** @type {?} */ viewRef_ = /** @type {?} */(( <ViewRef_>viewRef));\n const /** @type {?} */ viewData = viewRef_._view;\n attachEmbeddedView(this._view, this._data, index, viewData);\n viewRef_.attachToViewContainerRef(this);\n return viewRef;\n }\n/**\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\nmove(viewRef: ViewRef_, currentIndex: number): ViewRef {\n const /** @type {?} */ previousIndex = this._embeddedViews.indexOf(viewRef._view);\n moveEmbeddedView(this._data, previousIndex, currentIndex);\n return viewRef;\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\nindexOf(viewRef: ViewRef): number {\n return this._embeddedViews.indexOf(( /** @type {?} */((<ViewRef_>viewRef)))._view);\n }\n/**\n * @param {?=} index\n * @return {?}\n */\nremove(index?: number): void {\n const /** @type {?} */ viewData = detachEmbeddedView(this._data, index);\n if (viewData) {\n Services.destroyView(viewData);\n }\n }\n/**\n * @param {?=} index\n * @return {?}\n */\ndetach(index?: number): ViewRef|null {\n const /** @type {?} */ view = detachEmbeddedView(this._data, index);\n return view ? new ViewRef_(view) : null;\n }\n}\n\nfunction ViewContainerRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nViewContainerRef_.prototype._embeddedViews;\n/** @type {?} */\nViewContainerRef_.prototype._view;\n/** @type {?} */\nViewContainerRef_.prototype._elDef;\n/** @type {?} */\nViewContainerRef_.prototype._data;\n}\n\n/**\n * @param {?} view\n * @return {?}\n */\nexport function createChangeDetectorRef(view: ViewData): ChangeDetectorRef {\n return new ViewRef_(view);\n}\nexport class ViewRef_ implements EmbeddedViewRef<any>, InternalViewRef {\n/**\n * \\@internal\n */\n_view: ViewData;\nprivate _viewContainerRef: ViewContainerRef|null;\nprivate _appRef: ApplicationRef|null;\n/**\n * @param {?} _view\n */\nconstructor(_view: ViewData) {\n this._view = _view;\n this._viewContainerRef = null;\n this._appRef = null;\n }\n/**\n * @return {?}\n */\nget rootNodes(): any[] { return rootRenderNodes(this._view); }\n/**\n * @return {?}\n */\nget context() { return this._view.context; }\n/**\n * @return {?}\n */\nget destroyed(): boolean { return (this._view.state & ViewState.Destroyed) !== 0; }\n/**\n * @return {?}\n */\nmarkForCheck(): void { markParentViewsForCheck(this._view); }\n/**\n * @return {?}\n */\ndetach(): void { this._view.state &= ~ViewState.Attached; }\n/**\n * @return {?}\n */\ndetectChanges(): void {\n const /** @type {?} */ fs = this._view.root.rendererFactory;\n if (fs.begin) {\n fs.begin();\n }\n Services.checkAndUpdateView(this._view);\n if (fs.end) {\n fs.end();\n }\n }\n/**\n * @return {?}\n */\ncheckNoChanges(): void { Services.checkNoChangesView(this._view); }\n/**\n * @return {?}\n */\nreattach(): void { this._view.state |= ViewState.Attached; }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {\n if (!this._view.disposables) {\n this._view.disposables = [];\n }\n this._view.disposables.push( /** @type {?} */((<any>callback)));\n }\n/**\n * @return {?}\n */\ndestroy() {\n if (this._appRef) {\n this._appRef.detachView(this);\n } else if (this._viewContainerRef) {\n this._viewContainerRef.detach(this._viewContainerRef.indexOf(this));\n }\n Services.destroyView(this._view);\n }\n/**\n * @return {?}\n */\ndetachFromAppRef() {\n this._appRef = null;\n renderDetachView(this._view);\n Services.dirtyParentQueries(this._view);\n }\n/**\n * @param {?} appRef\n * @return {?}\n */\nattachToAppRef(appRef: ApplicationRef) {\n if (this._viewContainerRef) {\n throw new Error('This view is already attached to a ViewContainer!');\n }\n this._appRef = appRef;\n }\n/**\n * @param {?} vcRef\n * @return {?}\n */\nattachToViewContainerRef(vcRef: ViewContainerRef) {\n if (this._appRef) {\n throw new Error('This view is already attached directly to the ApplicationRef!');\n }\n this._viewContainerRef = vcRef;\n }\n}\n\nfunction ViewRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nViewRef_.prototype._view;\n/** @type {?} */\nViewRef_.prototype._viewContainerRef;\n/** @type {?} */\nViewRef_.prototype._appRef;\n}\n\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createTemplateData(view: ViewData, def: NodeDef): TemplateData {\n return new TemplateRef_(view, def);\n}\nclass TemplateRef_ extends TemplateRef<any> implements TemplateData {\n/**\n * \\@internal\n */\n_projectedViews: ViewData[];\n/**\n * @param {?} _parentView\n * @param {?} _def\n */\nconstructor(private _parentView: ViewData,\nprivate _def: NodeDef) { super(); }\n/**\n * @param {?} context\n * @return {?}\n */\ncreateEmbeddedView(context: any): EmbeddedViewRef<any> {\n return new ViewRef_(Services.createEmbeddedView(\n this._parentView, this._def, /** @type {?} */(( /** @type {?} */(( this._def.element)).template)), context));\n }\n/**\n * @return {?}\n */\nget elementRef(): ElementRef {\n return new ElementRef(asElementData(this._parentView, this._def.index).renderElement);\n }\n}\n\nfunction TemplateRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nTemplateRef_.prototype._projectedViews;\n/** @type {?} */\nTemplateRef_.prototype._parentView;\n/** @type {?} */\nTemplateRef_.prototype._def;\n}\n\n/**\n * @param {?} view\n * @param {?} elDef\n * @return {?}\n */\nexport function createInjector(view: ViewData, elDef: NodeDef): Injector {\n return new Injector_(view, elDef);\n}\nclass Injector_ implements Injector {\n/**\n * @param {?} view\n * @param {?} elDef\n */\nconstructor(private view: ViewData,\nprivate elDef: NodeDef|null) {}\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n const /** @type {?} */ allowPrivateServices =\n this.elDef ? (this.elDef.flags & NodeFlags.ComponentView) !== 0 : false;\n return Services.resolveDep(\n this.view, this.elDef, allowPrivateServices,\n {flags: DepFlags.None, token, tokenKey: tokenKey(token)}, notFoundValue);\n }\n}\n\nfunction Injector__tsickle_Closure_declarations() {\n/** @type {?} */\nInjector_.prototype.view;\n/** @type {?} */\nInjector_.prototype.elDef;\n}\n\n/**\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function nodeValue(view: ViewData, index: number): any {\n const /** @type {?} */ def = view.def.nodes[index];\n if (def.flags & NodeFlags.TypeElement) {\n const /** @type {?} */ elData = asElementData(view, def.index);\n return /** @type {?} */(( def.element)).template ? elData.template : elData.renderElement;\n } else if (def.flags & NodeFlags.TypeText) {\n return asTextData(view, def.index).renderText;\n } else if (def.flags & (NodeFlags.CatProvider | NodeFlags.TypePipe)) {\n return asProviderData(view, def.index).instance;\n }\n throw new Error(`Illegal state: read nodeValue for node index ${index}`);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function createRendererV1(view: ViewData): RendererV1 {\n return new RendererAdapter(view.renderer);\n}\nclass RendererAdapter implements RendererV1 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: Renderer2) {}\n/**\n * @param {?} selectorOrNode\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|Element): Element {\n return this.delegate.selectRootElement(selectorOrNode);\n }\n/**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\ncreateElement(parent: Element|DocumentFragment, namespaceAndName: string): Element {\n const [ns, name] = splitNamespace(namespaceAndName);\n const /** @type {?} */ el = this.delegate.createElement(name, ns);\n if (parent) {\n this.delegate.appendChild(parent, el);\n }\n return el;\n }\n/**\n * @param {?} hostElement\n * @return {?}\n */\ncreateViewRoot(hostElement: Element): Element|DocumentFragment { return hostElement; }\n/**\n * @param {?} parentElement\n * @return {?}\n */\ncreateTemplateAnchor(parentElement: Element|DocumentFragment): Comment {\n const /** @type {?} */ comment = this.delegate.createComment('');\n if (parentElement) {\n this.delegate.appendChild(parentElement, comment);\n }\n return comment;\n }\n/**\n * @param {?} parentElement\n * @param {?} value\n * @return {?}\n */\ncreateText(parentElement: Element|DocumentFragment, value: string): any {\n const /** @type {?} */ node = this.delegate.createText(value);\n if (parentElement) {\n this.delegate.appendChild(parentElement, node);\n }\n return node;\n }\n/**\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\nprojectNodes(parentElement: Element|DocumentFragment, nodes: Node[]) {\n for (let /** @type {?} */ i = 0; i < nodes.length; i++) {\n this.delegate.appendChild(parentElement, nodes[i]);\n }\n }\n/**\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\nattachViewAfter(node: Node, viewRootNodes: Node[]) {\n const /** @type {?} */ parentElement = this.delegate.parentNode(node);\n const /** @type {?} */ nextSibling = this.delegate.nextSibling(node);\n for (let /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n this.delegate.insertBefore(parentElement, viewRootNodes[i], nextSibling);\n }\n }\n/**\n * @param {?} viewRootNodes\n * @return {?}\n */\ndetachView(viewRootNodes: (Element|Text|Comment)[]) {\n for (let /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n const /** @type {?} */ node = viewRootNodes[i];\n const /** @type {?} */ parentElement = this.delegate.parentNode(node);\n this.delegate.removeChild(parentElement, node);\n }\n }\n/**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\ndestroyView(hostElement: Element|DocumentFragment, viewAllNodes: Node[]) {\n for (let /** @type {?} */ i = 0; i < viewAllNodes.length; i++) { /** @type {?} */((\n this.delegate.destroyNode))(viewAllNodes[i]);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlisten(renderElement: any, name: string, callback: Function): Function {\n return this.delegate.listen(renderElement, name, /** @type {?} */(( <any>callback)));\n }\n/**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlistenGlobal(target: string, name: string, callback: Function): Function {\n return this.delegate.listen(target, name, /** @type {?} */(( <any>callback)));\n }\n/**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetElementProperty(\n renderElement: Element|DocumentFragment, propertyName: string, propertyValue: any): void {\n this.delegate.setProperty(renderElement, propertyName, propertyValue);\n }\n/**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\nsetElementAttribute(renderElement: Element, namespaceAndName: string, attributeValue: string):\n void {\n const [ns, name] = splitNamespace(namespaceAndName);\n if (attributeValue != null) {\n this.delegate.setAttribute(renderElement, name, attributeValue, ns);\n } else {\n this.delegate.removeAttribute(renderElement, name, ns);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetBindingDebugInfo(renderElement: Element, propertyName: string, propertyValue: string): void {}\n/**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\nsetElementClass(renderElement: Element, className: string, isAdd: boolean): void {\n if (isAdd) {\n this.delegate.addClass(renderElement, className);\n } else {\n this.delegate.removeClass(renderElement, className);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\nsetElementStyle(renderElement: HTMLElement, styleName: string, styleValue: string): void {\n if (styleValue != null) {\n this.delegate.setStyle(renderElement, styleName, styleValue);\n } else {\n this.delegate.removeStyle(renderElement, styleName);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\ninvokeElementMethod(renderElement: Element, methodName: string, args: any[]): void {\n ( /** @type {?} */((renderElement as any)))[methodName].apply(renderElement, args);\n }\n/**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\nsetText(renderNode: Text, text: string): void { this.delegate.setValue(renderNode, text); }\n/**\n * @return {?}\n */\nanimate(): any { throw new Error('Renderer.animate is no longer supported!'); }\n}\n\nfunction RendererAdapter_tsickle_Closure_declarations() {\n/** @type {?} */\nRendererAdapter.prototype.delegate;\n}\n\n/**\n * @param {?} moduleType\n * @param {?} parent\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nexport function createNgModuleRef(\n moduleType: Type<any>, parent: Injector, bootstrapComponents: Type<any>[],\n def: NgModuleDefinition): NgModuleRef<any> {\n return new NgModuleRef_(moduleType, parent, bootstrapComponents, def);\n}\nclass NgModuleRef_ implements NgModuleData, InternalNgModuleRef<any> {\nprivate _destroyListeners: (() => void)[] = [];\nprivate _destroyed: boolean = false;\npublic _providers: any[];\n/**\n * @param {?} _moduleType\n * @param {?} _parent\n * @param {?} _bootstrapComponents\n * @param {?} _def\n */\nconstructor(\nprivate _moduleType: Type<any>,\npublic _parent: Injector,\npublic _bootstrapComponents: Type<any>[],\npublic _def: NgModuleDefinition) {\n initNgModule(this);\n }\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n return resolveNgModuleDep(\n this, {token: token, tokenKey: tokenKey(token), flags: DepFlags.None}, notFoundValue);\n }\n/**\n * @return {?}\n */\nget instance() { return this.get(this._moduleType); }\n/**\n * @return {?}\n */\nget componentFactoryResolver() { return this.get(ComponentFactoryResolver); }\n/**\n * @return {?}\n */\nget injector(): Injector { return this; }\n/**\n * @return {?}\n */\ndestroy(): void {\n if (this._destroyed) {\n throw new Error(\n `The ng module ${stringify(this.instance.constructor)} has already been destroyed.`);\n }\n this._destroyed = true;\n callNgModuleLifecycle(this, NodeFlags.OnDestroy);\n this._destroyListeners.forEach((listener) => listener());\n }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void): void { this._destroyListeners.push(callback); }\n}\n\nfunction NgModuleRef__tsickle_Closure_declarations() {\n/** @type {?} */\nNgModuleRef_.prototype._destroyListeners;\n/** @type {?} */\nNgModuleRef_.prototype._destroyed;\n/** @type {?} */\nNgModuleRef_.prototype._providers;\n/** @type {?} */\nNgModuleRef_.prototype._moduleType;\n/** @type {?} */\nNgModuleRef_.prototype._parent;\n/** @type {?} */\nNgModuleRef_.prototype._bootstrapComponents;\n/** @type {?} */\nNgModuleRef_.prototype._def;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ElementData, NodeDef, NodeFlags, Services, ViewData, ViewDefinition, ViewState} from './types';\nimport {RenderNodeAction, declaredViewContainer, isComponentView, renderNode, visitRootRenderNodes} from './util';\n/**\n * @param {?} parentView\n * @param {?} elementData\n * @param {?} viewIndex\n * @param {?} view\n * @return {?}\n */\nexport function attachEmbeddedView(\n parentView: ViewData, elementData: ElementData, viewIndex: number | undefined | null,\n view: ViewData) {\n let /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n if (viewIndex === null || viewIndex === undefined) {\n viewIndex = embeddedViews.length;\n }\n view.viewContainerParent = parentView;\n addToArray(embeddedViews, /** @type {?} */(( viewIndex)), view);\n attachProjectedView(elementData, view);\n\n Services.dirtyParentQueries(view);\n\n const /** @type {?} */ prevView = /** @type {?} */(( viewIndex)) > 0 ? embeddedViews[ /** @type {?} */((viewIndex)) - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n}\n/**\n * @param {?} vcElementData\n * @param {?} view\n * @return {?}\n */\nfunction attachProjectedView(vcElementData: ElementData, view: ViewData) {\n const /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (!dvcElementData || dvcElementData === vcElementData ||\n view.state & ViewState.IsProjectedView) {\n return;\n }\n // Note: For performance reasons, we\n // - add a view to template._projectedViews only 1x throughout its lifetime,\n // and remove it not until the view is destroyed.\n // (hard, as when a parent view is attached/detached we would need to attach/detach all\n // nested projected views as well, even accross component boundaries).\n // - don't track the insertion order of views in the projected views array\n // (hard, as when the views of the same template are inserted different view containers)\n view.state |= ViewState.IsProjectedView;\n let /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (!projectedViews) {\n projectedViews = dvcElementData.template._projectedViews = [];\n }\n projectedViews.push(view);\n // Note: we are changing the NodeDef here as we cannot calculate\n // the fact whether a template is used for projection during compilation.\n markNodeAsProjectedTemplate( /** @type {?} */((view.parent)).def, /** @type {?} */(( view.parentNodeDef)));\n}\n/**\n * @param {?} viewDef\n * @param {?} nodeDef\n * @return {?}\n */\nfunction markNodeAsProjectedTemplate(viewDef: ViewDefinition, nodeDef: NodeDef) {\n if (nodeDef.flags & NodeFlags.ProjectedTemplate) {\n return;\n }\n viewDef.nodeFlags |= NodeFlags.ProjectedTemplate;\n nodeDef.flags |= NodeFlags.ProjectedTemplate;\n let /** @type {?} */ parentNodeDef = nodeDef.parent;\n while (parentNodeDef) {\n parentNodeDef.childFlags |= NodeFlags.ProjectedTemplate;\n parentNodeDef = parentNodeDef.parent;\n }\n}\n/**\n * @param {?} elementData\n * @param {?=} viewIndex\n * @return {?}\n */\nexport function detachEmbeddedView(elementData: ElementData, viewIndex?: number): ViewData|null {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n if (viewIndex == null || viewIndex >= embeddedViews.length) {\n viewIndex = embeddedViews.length - 1;\n }\n if (viewIndex < 0) {\n return null;\n }\n const /** @type {?} */ view = embeddedViews[viewIndex];\n view.viewContainerParent = null;\n removeFromArray(embeddedViews, viewIndex);\n\n // See attachProjectedView for why we don't update projectedViews here.\n Services.dirtyParentQueries(view);\n\n renderDetachView(view);\n\n return view;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function detachProjectedView(view: ViewData) {\n if (!(view.state & ViewState.IsProjectedView)) {\n return;\n }\n const /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (dvcElementData) {\n const /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (projectedViews) {\n removeFromArray(projectedViews, projectedViews.indexOf(view));\n Services.dirtyParentQueries(view);\n }\n }\n}\n/**\n * @param {?} elementData\n * @param {?} oldViewIndex\n * @param {?} newViewIndex\n * @return {?}\n */\nexport function moveEmbeddedView(\n elementData: ElementData, oldViewIndex: number, newViewIndex: number): ViewData {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n const /** @type {?} */ view = embeddedViews[oldViewIndex];\n removeFromArray(embeddedViews, oldViewIndex);\n if (newViewIndex == null) {\n newViewIndex = embeddedViews.length;\n }\n addToArray(embeddedViews, newViewIndex, view);\n\n // Note: Don't need to change projectedViews as the order in there\n // as always invalid...\n\n Services.dirtyParentQueries(view);\n\n renderDetachView(view);\n const /** @type {?} */ prevView = newViewIndex > 0 ? embeddedViews[newViewIndex - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n\n return view;\n}\n/**\n * @param {?} elementData\n * @param {?} prevView\n * @param {?} view\n * @return {?}\n */\nfunction renderAttachEmbeddedView(\n elementData: ElementData, prevView: ViewData | null, view: ViewData) {\n const /** @type {?} */ prevRenderNode = prevView ? renderNode(prevView, /** @type {?} */(( prevView.def.lastRenderRootNode))) :\n elementData.renderElement;\n const /** @type {?} */ parentNode = view.renderer.parentNode(prevRenderNode);\n const /** @type {?} */ nextSibling = view.renderer.nextSibling(prevRenderNode);\n // Note: We can't check if `nextSibling` is present, as on WebWorkers it will always be!\n // However, browsers automatically do `appendChild` when there is no `nextSibling`.\n visitRootRenderNodes(view, RenderNodeAction.InsertBefore, parentNode, nextSibling, undefined);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function renderDetachView(view: ViewData) {\n visitRootRenderNodes(view, RenderNodeAction.RemoveChild, null, null, undefined);\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @param {?} value\n * @return {?}\n */\nfunction addToArray(arr: any[], index: number, value: any) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n } else {\n arr.splice(index, 0, value);\n }\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @return {?}\n */\nfunction removeFromArray(arr: any[], index: number) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n arr.pop();\n } else {\n arr.splice(index, 1);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector, THROW_IF_NOT_FOUND} from '../di/injector';\nimport {NgModuleRef} from '../linker/ng_module_factory';\n\nimport {DepDef, DepFlags, NgModuleData, NgModuleDefinition, NgModuleDefinitionFactory, NgModuleProviderDef, NodeFlags} from './types';\nimport {splitDepsDsl, tokenKey} from './util';\n\nconst /** @type {?} */ NOT_CREATED = new Object();\n\nconst /** @type {?} */ InjectorRefTokenKey = tokenKey(Injector);\nconst /** @type {?} */ NgModuleRefTokenKey = tokenKey(NgModuleRef);\n/**\n * @param {?} flags\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nexport function moduleProvideDef(\n flags: NodeFlags, token: any, value: any,\n deps: ([DepFlags, any] | any)[]): NgModuleProviderDef {\n const /** @type {?} */ depDefs = splitDepsDsl(deps);\n return {\n // will bet set by the module definition\n index: -1,\n deps: depDefs, flags, token, value\n };\n}\n/**\n * @param {?} providers\n * @return {?}\n */\nexport function moduleDef(providers: NgModuleProviderDef[]): NgModuleDefinition {\n const /** @type {?} */ providersByKey: {[key: string]: NgModuleProviderDef} = {};\n for (let /** @type {?} */ i = 0; i < providers.length; i++) {\n const /** @type {?} */ provider = providers[i];\n provider.index = i;\n providersByKey[tokenKey(provider.token)] = provider;\n }\n return {\n // Will be filled later...\n factory: null,\n providersByKey,\n providers\n };\n}\n/**\n * @param {?} data\n * @return {?}\n */\nexport function initNgModule(data: NgModuleData) {\n const /** @type {?} */ def = data._def;\n const /** @type {?} */ providers = data._providers = new Array(def.providers.length);\n for (let /** @type {?} */ i = 0; i < def.providers.length; i++) {\n const /** @type {?} */ provDef = def.providers[i];\n providers[i] = provDef.flags & NodeFlags.LazyProvider ? NOT_CREATED :\n _createProviderInstance(data, provDef);\n }\n}\n/**\n * @param {?} data\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nexport function resolveNgModuleDep(\n data: NgModuleData, depDef: DepDef, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n if (depDef.flags & DepFlags.Value) {\n return depDef.token;\n }\n if (depDef.flags & DepFlags.Optional) {\n notFoundValue = null;\n }\n if (depDef.flags & DepFlags.SkipSelf) {\n return data._parent.get(depDef.token, notFoundValue);\n }\n const /** @type {?} */ tokenKey = depDef.tokenKey;\n switch (tokenKey) {\n case InjectorRefTokenKey:\n case NgModuleRefTokenKey:\n return data;\n }\n const /** @type {?} */ providerDef = data._def.providersByKey[tokenKey];\n if (providerDef) {\n let /** @type {?} */ providerInstance = data._providers[providerDef.index];\n if (providerInstance === NOT_CREATED) {\n providerInstance = data._providers[providerDef.index] =\n _createProviderInstance(data, providerDef);\n }\n return providerInstance;\n }\n return data._parent.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} ngModule\n * @param {?} providerDef\n * @return {?}\n */\nfunction _createProviderInstance(ngModule: NgModuleData, providerDef: NgModuleProviderDef): any {\n let /** @type {?} */ injectable: any;\n switch (providerDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeClassProvider:\n injectable = _createClass(ngModule, providerDef.value, providerDef.deps);\n break;\n case NodeFlags.TypeFactoryProvider:\n injectable = _callFactory(ngModule, providerDef.value, providerDef.deps);\n break;\n case NodeFlags.TypeUseExistingProvider:\n injectable = resolveNgModuleDep(ngModule, providerDef.deps[0]);\n break;\n case NodeFlags.TypeValueProvider:\n injectable = providerDef.value;\n break;\n }\n return injectable;\n}\n/**\n * @param {?} ngModule\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction _createClass(ngModule: NgModuleData, ctor: any, deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = new ctor();\n break;\n case 1:\n injectable = new ctor(resolveNgModuleDep(ngModule, deps[0]));\n break;\n case 2:\n injectable =\n new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n break;\n case 3:\n injectable = new ctor(\n resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]),\n resolveNgModuleDep(ngModule, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = new Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n injectable = new ctor(...depValues);\n }\n return injectable;\n}\n/**\n * @param {?} ngModule\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction _callFactory(ngModule: NgModuleData, factory: any, deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = factory();\n break;\n case 1:\n injectable = factory(resolveNgModuleDep(ngModule, deps[0]));\n break;\n case 2:\n injectable =\n factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n break;\n case 3:\n injectable = factory(\n resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]),\n resolveNgModuleDep(ngModule, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n injectable = factory(...depValues);\n }\n return injectable;\n}\n/**\n * @param {?} ngModule\n * @param {?} lifecycles\n * @return {?}\n */\nexport function callNgModuleLifecycle(ngModule: NgModuleData, lifecycles: NodeFlags) {\n const /** @type {?} */ def = ngModule._def;\n for (let /** @type {?} */ i = 0; i < def.providers.length; i++) {\n const /** @type {?} */ provDef = def.providers[i];\n if (provDef.flags & NodeFlags.OnDestroy) {\n const /** @type {?} */ instance = ngModule._providers[i];\n if (instance && instance !== NOT_CREATED) {\n instance.ngOnDestroy();\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {RendererType2} from '../render/api';\nimport {SecurityContext} from '../security';\n\nimport {BindingDef, BindingFlags, ElementData, ElementHandleEventFn, NodeDef, NodeFlags, OutputDef, OutputType, QueryValueType, ViewData, ViewDefinitionFactory, asElementData} from './types';\nimport {NOOP, calcBindingFlags, checkAndUpdateBinding, dispatchEvent, elementEventFullName, getParentRenderElement, resolveDefinition, resolveRendererType2, splitMatchedQueriesDsl, splitNamespace} from './util';\n/**\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?=} handleEvent\n * @param {?=} templateFactory\n * @return {?}\n */\nexport function anchorDef(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][],\n ngContentIndex: number, childCount: number, handleEvent?: ElementHandleEventFn,\n templateFactory?: ViewDefinitionFactory): NodeDef {\n flags |= NodeFlags.TypeElement;\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n const /** @type {?} */ template = templateFactory ? resolveDefinition(templateFactory) : null;\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references, ngContentIndex, childCount,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: {\n ns: null,\n name: null,\n attrs: null, template,\n componentProvider: null,\n componentView: null,\n componentRendererType: null,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?} namespaceAndName\n * @param {?=} fixedAttrs\n * @param {?=} bindings\n * @param {?=} outputs\n * @param {?=} handleEvent\n * @param {?=} componentView\n * @param {?=} componentRendererType\n * @return {?}\n */\nexport function elementDef(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][],\n ngContentIndex: number, childCount: number, namespaceAndName: string,\n fixedAttrs: [string, string][] = [],\n bindings?: [BindingFlags, string, string | SecurityContext][], outputs?: ([string, string])[],\n handleEvent?: ElementHandleEventFn, componentView?: ViewDefinitionFactory,\n componentRendererType?: RendererType2 | null): NodeDef {\n if (!handleEvent) {\n handleEvent = NOOP;\n }\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n let /** @type {?} */ ns: string = /** @type {?} */(( null));\n let /** @type {?} */ name: string = /** @type {?} */(( null));\n if (namespaceAndName) {\n [ns, name] = splitNamespace(namespaceAndName);\n }\n bindings = bindings || [];\n const /** @type {?} */ bindingDefs: BindingDef[] = new Array(bindings.length);\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n const [bindingFlags, namespaceAndName, suffixOrSecurityContext] = bindings[i];\n\n const [ns, name] = splitNamespace(namespaceAndName);\n let /** @type {?} */ securityContext: SecurityContext = /** @type {?} */(( undefined));\n let /** @type {?} */ suffix: string = /** @type {?} */(( undefined));\n switch (bindingFlags & BindingFlags.Types) {\n case BindingFlags.TypeElementStyle:\n suffix = /** @type {?} */(( <string>suffixOrSecurityContext));\n break;\n case BindingFlags.TypeElementAttribute:\n case BindingFlags.TypeProperty:\n securityContext = /** @type {?} */(( <SecurityContext>suffixOrSecurityContext));\n break;\n }\n bindingDefs[i] =\n {flags: bindingFlags, ns, name, nonMinifiedName: name, securityContext, suffix};\n }\n outputs = outputs || [];\n const /** @type {?} */ outputDefs: OutputDef[] = new Array(outputs.length);\n for (let /** @type {?} */ i = 0; i < outputs.length; i++) {\n const [target, eventName] = outputs[i];\n outputDefs[i] = {\n type: OutputType.ElementOutput,\n target: /** @type {?} */(( <any>target)), eventName,\n propName: null\n };\n }\n fixedAttrs = fixedAttrs || [];\n const /** @type {?} */ attrs = /** @type {?} */(( <[string, string, string][]>fixedAttrs.map(([namespaceAndName, value]) => {\n const [ns, name] = splitNamespace(namespaceAndName);\n return [ns, name, value];\n })));\n componentRendererType = resolveRendererType2(componentRendererType);\n if (componentView) {\n flags |= NodeFlags.ComponentView;\n }\n flags |= NodeFlags.TypeElement;\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references, ngContentIndex, childCount,\n bindings: bindingDefs,\n bindingFlags: calcBindingFlags(bindingDefs),\n outputs: outputDefs,\n element: {\n ns,\n name,\n attrs,\n template: null,\n // will bet set by the view definition\n componentProvider: null,\n componentView: componentView || null,\n componentRendererType: componentRendererType,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP,\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function createElement(view: ViewData, renderHost: any, def: NodeDef): ElementData {\n const /** @type {?} */ elDef = /** @type {?} */(( def.element));\n const /** @type {?} */ rootSelectorOrNode = view.root.selectorOrNode;\n const /** @type {?} */ renderer = view.renderer;\n let /** @type {?} */ el: any;\n if (view.parent || !rootSelectorOrNode) {\n if (elDef.name) {\n el = renderer.createElement(elDef.name, elDef.ns);\n } else {\n el = renderer.createComment('');\n }\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, el);\n }\n } else {\n el = renderer.selectRootElement(rootSelectorOrNode);\n }\n if (elDef.attrs) {\n for (let /** @type {?} */ i = 0; i < elDef.attrs.length; i++) {\n const [ns, name, value] = elDef.attrs[i];\n renderer.setAttribute(el, name, value, ns);\n }\n }\n return el;\n}\n/**\n * @param {?} view\n * @param {?} compView\n * @param {?} def\n * @param {?} el\n * @return {?}\n */\nexport function listenToElementOutputs(view: ViewData, compView: ViewData, def: NodeDef, el: any) {\n for (let /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n const /** @type {?} */ output = def.outputs[i];\n const /** @type {?} */ handleEventClosure = renderEventHandlerClosure(\n view, def.index, elementEventFullName(output.target, output.eventName));\n let /** @type {?} */ listenTarget: 'window'|'document'|'body'|'component'|null = output.target;\n let /** @type {?} */ listenerView = view;\n if (output.target === 'component') {\n listenTarget = null;\n listenerView = compView;\n }\n const /** @type {?} */ disposable = /** @type {?} */((\n <any>listenerView.renderer.listen(listenTarget || el, output.eventName, handleEventClosure))); /** @type {?} */((\n view.disposables))[def.outputIndex + i] = disposable;\n }\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction renderEventHandlerClosure(view: ViewData, index: number, eventName: string) {\n return (event: any) => {\n try {\n return dispatchEvent(view, index, eventName, event);\n } catch ( /** @type {?} */e) {\n // Attention: Don't rethrow, to keep in sync with directive events.\n view.root.errorHandler.handleError(e);\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nexport function checkAndUpdateElementInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ bindLen = def.bindings.length;\n let /** @type {?} */ changed = false;\n if (bindLen > 0 && checkAndUpdateElementValue(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateElementValue(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateElementValue(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateElementValue(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateElementValue(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateElementValue(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateElementValue(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateElementValue(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateElementValue(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateElementValue(view, def, 9, v9)) changed = true;\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateElementDynamic(view: ViewData, def: NodeDef, values: any[]): boolean {\n let /** @type {?} */ changed = false;\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkAndUpdateElementValue(view, def, i, values[i])) changed = true;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkAndUpdateElementValue(view: ViewData, def: NodeDef, bindingIdx: number, value: any) {\n if (!checkAndUpdateBinding(view, def, bindingIdx, value)) {\n return false;\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n const /** @type {?} */ elData = asElementData(view, def.index);\n const /** @type {?} */ renderNode = elData.renderElement;\n const /** @type {?} */ name = /** @type {?} */(( binding.name));\n switch (binding.flags & BindingFlags.Types) {\n case BindingFlags.TypeElementAttribute:\n setElementAttribute(view, binding, renderNode, binding.ns, name, value);\n break;\n case BindingFlags.TypeElementClass:\n setElementClass(view, renderNode, name, value);\n break;\n case BindingFlags.TypeElementStyle:\n setElementStyle(view, binding, renderNode, name, value);\n break;\n case BindingFlags.TypeProperty:\n const /** @type {?} */ bindView = (def.flags & NodeFlags.ComponentView &&\n binding.flags & BindingFlags.SyntheticHostProperty) ?\n elData.componentView :\n view;\n setElementProperty(bindView, binding, renderNode, name, value);\n break;\n }\n return true;\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementAttribute(\n view: ViewData, binding: BindingDef, renderNode: any, ns: string | null, name: string,\n value: any) {\n const /** @type {?} */ securityContext = binding.securityContext;\n let /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n renderValue = renderValue != null ? renderValue.toString() : null;\n const /** @type {?} */ renderer = view.renderer;\n if (value != null) {\n renderer.setAttribute(renderNode, name, renderValue, ns);\n } else {\n renderer.removeAttribute(renderNode, name, ns);\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementClass(view: ViewData, renderNode: any, name: string, value: boolean) {\n const /** @type {?} */ renderer = view.renderer;\n if (value) {\n renderer.addClass(renderNode, name);\n } else {\n renderer.removeClass(renderNode, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementStyle(\n view: ViewData, binding: BindingDef, renderNode: any, name: string, value: any) {\n let /** @type {?} */ renderValue: string|null =\n view.root.sanitizer.sanitize(SecurityContext.STYLE, /** @type {?} */(( value as{} | string)));\n if (renderValue != null) {\n renderValue = renderValue.toString();\n const /** @type {?} */ unit = binding.suffix;\n if (unit != null) {\n renderValue = renderValue + unit;\n }\n } else {\n renderValue = null;\n }\n const /** @type {?} */ renderer = view.renderer;\n if (renderValue != null) {\n renderer.setStyle(renderNode, name, renderValue);\n } else {\n renderer.removeStyle(renderNode, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementProperty(\n view: ViewData, binding: BindingDef, renderNode: any, name: string, value: any) {\n const /** @type {?} */ securityContext = binding.securityContext;\n let /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n view.renderer.setProperty(renderNode, name, renderValue);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {WrappedValue, devModeEqual} from '../change_detection/change_detection';\nimport {ViewEncapsulation} from '../metadata/view';\nimport {RendererType2} from '../render/api';\nimport {looseIdentical, stringify} from '../util';\n\nimport {expressionChangedAfterItHasBeenCheckedError} from './errors';\nimport {BindingDef, BindingFlags, Definition, DefinitionFactory, DepDef, DepFlags, ElementData, NodeDef, NodeFlags, QueryValueType, Services, ViewData, ViewDefinition, ViewDefinitionFactory, ViewFlags, ViewState, asElementData, asTextData} from './types';\n\nexport const /** @type {?} */ NOOP: any = () => {};\n\nconst /** @type {?} */ _tokenKeyCache = new Map<any, string>();\n/**\n * @param {?} token\n * @return {?}\n */\nexport function tokenKey(token: any): string {\n let /** @type {?} */ key = _tokenKeyCache.get(token);\n if (!key) {\n key = stringify(token) + '_' + _tokenKeyCache.size;\n _tokenKeyCache.set(token, key);\n }\n return key;\n}\n/**\n * @param {?} view\n * @param {?} nodeIdx\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nexport function unwrapValue(view: ViewData, nodeIdx: number, bindingIdx: number, value: any): any {\n if (value instanceof WrappedValue) {\n value = value.wrapped;\n let /** @type {?} */ globalBindingIdx = view.def.nodes[nodeIdx].bindingIndex + bindingIdx;\n let /** @type {?} */ oldValue = view.oldValues[globalBindingIdx];\n if (oldValue instanceof WrappedValue) {\n oldValue = oldValue.wrapped;\n }\n view.oldValues[globalBindingIdx] = new WrappedValue(oldValue);\n }\n return value;\n}\n\nconst /** @type {?} */ UNDEFINED_RENDERER_TYPE_ID = '$$undefined';\nconst /** @type {?} */ EMPTY_RENDERER_TYPE_ID = '$$empty';\n/**\n * @param {?} values\n * @return {?}\n */\nexport function createRendererType2(values: {\n styles: (string | any[])[],\n encapsulation: ViewEncapsulation,\n data: {[kind: string]: any[]}\n}): RendererType2 {\n return {\n id: UNDEFINED_RENDERER_TYPE_ID,\n styles: values.styles,\n encapsulation: values.encapsulation,\n data: values.data\n };\n}\n\nlet /** @type {?} */ _renderCompCount = 0;\n/**\n * @param {?=} type\n * @return {?}\n */\nexport function resolveRendererType2(type?: RendererType2 | null): RendererType2|null {\n if (type && type.id === UNDEFINED_RENDERER_TYPE_ID) {\n // first time we see this RendererType2. Initialize it...\n const /** @type {?} */ isFilled =\n ((type.encapsulation != null && type.encapsulation !== ViewEncapsulation.None) ||\n type.styles.length || Object.keys(type.data).length);\n if (isFilled) {\n type.id = `c${_renderCompCount++}`;\n } else {\n type.id = EMPTY_RENDERER_TYPE_ID;\n }\n }\n if (type && type.id === EMPTY_RENDERER_TYPE_ID) {\n type = null;\n }\n return type || null;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nexport function checkBinding(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any): boolean {\n const /** @type {?} */ oldValues = view.oldValues;\n if ((view.state & ViewState.FirstCheck) ||\n !looseIdentical(oldValues[def.bindingIndex + bindingIdx], value)) {\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nexport function checkAndUpdateBinding(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any): boolean {\n if (checkBinding(view, def, bindingIdx, value)) {\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nexport function checkBindingNoChanges(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any) {\n const /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if ((view.state & ViewState.BeforeFirstCheck) || !devModeEqual(oldValue, value)) {\n throw expressionChangedAfterItHasBeenCheckedError(\n Services.createDebugContext(view, def.index), oldValue, value,\n (view.state & ViewState.BeforeFirstCheck) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function markParentViewsForCheck(view: ViewData) {\n let /** @type {?} */ currView: ViewData|null = view;\n while (currView) {\n if (currView.def.flags & ViewFlags.OnPush) {\n currView.state |= ViewState.ChecksEnabled;\n }\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} endView\n * @return {?}\n */\nexport function markParentViewsForCheckProjectedViews(view: ViewData, endView: ViewData) {\n let /** @type {?} */ currView: ViewData|null = view;\n while (currView && currView !== endView) {\n currView.state |= ViewState.CheckProjectedViews;\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nexport function dispatchEvent(\n view: ViewData, nodeIndex: number, eventName: string, event: any): boolean {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n const /** @type {?} */ startView =\n nodeDef.flags & NodeFlags.ComponentView ? asElementData(view, nodeIndex).componentView : view;\n markParentViewsForCheck(startView);\n return Services.handleEvent(view, nodeIndex, eventName, event);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function declaredViewContainer(view: ViewData): ElementData|null {\n if (view.parent) {\n const /** @type {?} */ parentView = view.parent;\n return asElementData(parentView, /** @type {?} */(( view.parentNodeDef)).index);\n }\n return null;\n}\n/**\n * for component views, this is the host element.\n * for embedded views, this is the index of the parent node\n * that contains the view container.\n * @param {?} view\n * @return {?}\n */\nexport function viewParentEl(view: ViewData): NodeDef|null {\n const /** @type {?} */ parentView = view.parent;\n if (parentView) {\n return /** @type {?} */(( view.parentNodeDef)).parent;\n } else {\n return null;\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function renderNode(view: ViewData, def: NodeDef): any {\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n return asElementData(view, def.index).renderElement;\n case NodeFlags.TypeText:\n return asTextData(view, def.index).renderText;\n }\n}\n/**\n * @param {?} target\n * @param {?} name\n * @return {?}\n */\nexport function elementEventFullName(target: string | null, name: string): string {\n return target ? `${target}:${name}` : name;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function isComponentView(view: ViewData): boolean {\n return !!view.parent && !!( /** @type {?} */((view.parentNodeDef)).flags & NodeFlags.Component);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function isEmbeddedView(view: ViewData): boolean {\n return !!view.parent && !( /** @type {?} */((view.parentNodeDef)).flags & NodeFlags.Component);\n}\n/**\n * @param {?} queryId\n * @return {?}\n */\nexport function filterQueryId(queryId: number): number {\n return 1 << (queryId % 32);\n}\n/**\n * @param {?} matchedQueriesDsl\n * @return {?}\n */\nexport function splitMatchedQueriesDsl(\n matchedQueriesDsl: [string | number, QueryValueType][] | null): {\n matchedQueries: {[queryId: string]: QueryValueType},\n references: {[refId: string]: QueryValueType},\n matchedQueryIds: number\n} {\n const /** @type {?} */ matchedQueries: {[queryId: string]: QueryValueType} = {};\n let /** @type {?} */ matchedQueryIds = 0;\n const /** @type {?} */ references: {[refId: string]: QueryValueType} = {};\n if (matchedQueriesDsl) {\n matchedQueriesDsl.forEach(([queryId, valueType]) => {\n if (typeof queryId === 'number') {\n matchedQueries[queryId] = valueType;\n matchedQueryIds |= filterQueryId(queryId);\n } else {\n references[queryId] = valueType;\n }\n });\n }\n return {matchedQueries, references, matchedQueryIds};\n}\n/**\n * @param {?} deps\n * @return {?}\n */\nexport function splitDepsDsl(deps: ([DepFlags, any] | any)[]): DepDef[] {\n return deps.map(value => {\n let /** @type {?} */ token: any;\n let /** @type {?} */ flags: DepFlags;\n if (Array.isArray(value)) {\n [flags, token] = value;\n } else {\n flags = DepFlags.None;\n token = value;\n }\n return {flags, token, tokenKey: tokenKey(token)};\n });\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function getParentRenderElement(view: ViewData, renderHost: any, def: NodeDef): any {\n let /** @type {?} */ renderParent = def.renderParent;\n if (renderParent) {\n if ((renderParent.flags & NodeFlags.TypeElement) === 0 ||\n (renderParent.flags & NodeFlags.ComponentView) === 0 ||\n ( /** @type {?} */((renderParent.element)).componentRendererType && /** @type {?} */(( /** @type {?} */((\n renderParent.element)).componentRendererType)).encapsulation ===\n ViewEncapsulation.Native)) {\n // only children of non components, or children of components with native encapsulation should\n // be attached.\n return asElementData(view, /** @type {?} */(( def.renderParent)).index).renderElement;\n }\n } else {\n return renderHost;\n }\n}\n\nconst /** @type {?} */ DEFINITION_CACHE = new WeakMap<any, Definition<any>>();\n/**\n * @template D\n * @param {?} factory\n * @return {?}\n */\nexport function resolveDefinition<D extends Definition<any>>(factory: DefinitionFactory<D>): D {\n let /** @type {?} */ value = /** @type {?} */(( /** @type {?} */(( DEFINITION_CACHE.get(factory)))as D));\n if (!value) {\n value = factory(() => NOOP);\n value.factory = factory;\n DEFINITION_CACHE.set(factory, value);\n }\n return value;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function rootRenderNodes(view: ViewData): any[] {\n const /** @type {?} */ renderNodes: any[] = [];\n visitRootRenderNodes(view, RenderNodeAction.Collect, undefined, undefined, renderNodes);\n return renderNodes;\n}\n\nexport const enum RenderNodeAction {Collect, AppendChild, InsertBefore, RemoveChild}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nexport function visitRootRenderNodes(\n view: ViewData, action: RenderNodeAction, parentNode: any, nextSibling: any, target?: any[]) {\n // We need to re-compute the parent node in case the nodes have been moved around manually\n if (action === RenderNodeAction.RemoveChild) {\n parentNode = view.renderer.parentNode(renderNode(view, /** @type {?} */(( view.def.lastRenderRootNode))));\n }\n visitSiblingRenderNodes(\n view, action, 0, view.def.nodes.length - 1, parentNode, nextSibling, target);\n}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nexport function visitSiblingRenderNodes(\n view: ViewData, action: RenderNodeAction, startIndex: number, endIndex: number, parentNode: any,\n nextSibling: any, target?: any[]) {\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & (NodeFlags.TypeElement | NodeFlags.TypeText | NodeFlags.TypeNgContent)) {\n visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n}\n/**\n * @param {?} view\n * @param {?} ngContentIndex\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nexport function visitProjectedRenderNodes(\n view: ViewData, ngContentIndex: number, action: RenderNodeAction, parentNode: any,\n nextSibling: any, target?: any[]) {\n let /** @type {?} */ compView: ViewData|null = view;\n while (compView && !isComponentView(compView)) {\n compView = compView.parent;\n }\n const /** @type {?} */ hostView = /** @type {?} */(( compView)).parent;\n const /** @type {?} */ hostElDef = viewParentEl( /** @type {?} */((compView)));\n const /** @type {?} */ startIndex = /** @type {?} */(( hostElDef)).index + 1;\n const /** @type {?} */ endIndex = /** @type {?} */(( hostElDef)).index + /** @type {?} */(( hostElDef)).childCount;\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @type {?} */ nodeDef = /** @type {?} */(( hostView)).def.nodes[i];\n if (nodeDef.ngContentIndex === ngContentIndex) {\n visitRenderNode( /** @type {?} */((hostView)), nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n if (! /** @type {?} */((hostView)).parent) {\n // a root view\n const /** @type {?} */ projectedNodes = view.root.projectableNodes[ngContentIndex];\n if (projectedNodes) {\n for (let /** @type {?} */ i = 0; i < projectedNodes.length; i++) {\n execRenderNodeAction(view, projectedNodes[i], action, parentNode, nextSibling, target);\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitRenderNode(\n view: ViewData, nodeDef: NodeDef, action: RenderNodeAction, parentNode: any, nextSibling: any,\n target?: any[]) {\n if (nodeDef.flags & NodeFlags.TypeNgContent) {\n visitProjectedRenderNodes(\n view, /** @type {?} */(( nodeDef.ngContent)).index, action, parentNode, nextSibling, target);\n } else {\n const /** @type {?} */ rn = renderNode(view, nodeDef);\n if (action === RenderNodeAction.RemoveChild && (nodeDef.flags & NodeFlags.ComponentView) &&\n (nodeDef.bindingFlags & BindingFlags.CatSyntheticProperty)) {\n // Note: we might need to do both actions.\n if (nodeDef.bindingFlags & (BindingFlags.SyntheticProperty)) {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.bindingFlags & (BindingFlags.SyntheticHostProperty)) {\n const /** @type {?} */ compView = asElementData(view, nodeDef.index).componentView;\n execRenderNodeAction(compView, rn, action, parentNode, nextSibling, target);\n }\n } else {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( asElementData(view, nodeDef.index).viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n visitRootRenderNodes(embeddedViews[k], action, parentNode, nextSibling, target);\n }\n }\n if (nodeDef.flags & NodeFlags.TypeElement && ! /** @type {?} */((nodeDef.element)).name) {\n visitSiblingRenderNodes(\n view, action, nodeDef.index + 1, nodeDef.index + nodeDef.childCount, parentNode,\n nextSibling, target);\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction execRenderNodeAction(\n view: ViewData, renderNode: any, action: RenderNodeAction, parentNode: any, nextSibling: any,\n target?: any[]) {\n const /** @type {?} */ renderer = view.renderer;\n switch (action) {\n case RenderNodeAction.AppendChild:\n renderer.appendChild(parentNode, renderNode);\n break;\n case RenderNodeAction.InsertBefore:\n renderer.insertBefore(parentNode, renderNode, nextSibling);\n break;\n case RenderNodeAction.RemoveChild:\n renderer.removeChild(parentNode, renderNode);\n break;\n case RenderNodeAction.Collect: /** @type {?} */((\n target)).push(renderNode);\n break;\n }\n}\n\nconst /** @type {?} */ NS_PREFIX_RE = /^:([^:]+):(.+)$/;\n/**\n * @param {?} name\n * @return {?}\n */\nexport function splitNamespace(name: string): string[] {\n if (name[0] === ':') {\n const /** @type {?} */ match = /** @type {?} */(( name.match(NS_PREFIX_RE)));\n return [match[1], match[2]];\n }\n return ['', name];\n}\n/**\n * @param {?} bindings\n * @return {?}\n */\nexport function calcBindingFlags(bindings: BindingDef[]): BindingFlags {\n let /** @type {?} */ flags = 0;\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n flags |= bindings[i].flags;\n }\n return flags;\n}\n/**\n * @param {?} valueCount\n * @param {?} constAndInterp\n * @return {?}\n */\nexport function interpolate(valueCount: number, constAndInterp: string[]): string {\n let /** @type {?} */ result = '';\n for (let /** @type {?} */ i = 0; i < valueCount * 2; i = i + 2) {\n result = result + constAndInterp[i] + _toStringWithNull(constAndInterp[i + 1]);\n }\n return result + constAndInterp[valueCount * 2];\n}\n/**\n * @param {?} valueCount\n * @param {?} c0\n * @param {?} a1\n * @param {?} c1\n * @param {?=} a2\n * @param {?=} c2\n * @param {?=} a3\n * @param {?=} c3\n * @param {?=} a4\n * @param {?=} c4\n * @param {?=} a5\n * @param {?=} c5\n * @param {?=} a6\n * @param {?=} c6\n * @param {?=} a7\n * @param {?=} c7\n * @param {?=} a8\n * @param {?=} c8\n * @param {?=} a9\n * @param {?=} c9\n * @return {?}\n */\nexport function inlineInterpolate(\n valueCount: number, c0: string, a1: any, c1: string, a2?: any, c2?: string, a3?: any,\n c3?: string, a4?: any, c4?: string, a5?: any, c5?: string, a6?: any, c6?: string, a7?: any,\n c7?: string, a8?: any, c8?: string, a9?: any, c9?: string): string {\n switch (valueCount) {\n case 1:\n return c0 + _toStringWithNull(a1) + c1;\n case 2:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2;\n case 3:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3;\n case 4:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4;\n case 5:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5;\n case 6:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) + c6;\n case 7:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7;\n case 8:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8;\n case 9:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) + c9;\n default:\n throw new Error(`Does not support more than 9 expressions`);\n }\n}\n/**\n * @param {?} v\n * @return {?}\n */\nfunction _toStringWithNull(v: any): string {\n return v != null ? v.toString() : '';\n}\n\nexport const /** @type {?} */ EMPTY_ARRAY: any[] = [];\nexport const /** @type {?} */ EMPTY_MAP: {[key: string]: any} = {};\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ERROR_DEBUG_CONTEXT, ERROR_LOGGER, getDebugContext} from '../errors';\nimport {DebugContext, ViewState} from './types';\n/**\n * @param {?} context\n * @param {?} oldValue\n * @param {?} currValue\n * @param {?} isFirstCheck\n * @return {?}\n */\nexport function expressionChangedAfterItHasBeenCheckedError(\n context: DebugContext, oldValue: any, currValue: any, isFirstCheck: boolean): Error {\n let /** @type {?} */ msg =\n `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '${oldValue}'. Current value: '${currValue}'.`;\n if (isFirstCheck) {\n msg +=\n ` It seems like the view has been created after its parent and its children have been dirty checked.` +\n ` Has it been created in a change detection hook ?`;\n }\n return viewDebugError(msg, context);\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nexport function viewWrappedDebugError(err: any, context: DebugContext): Error {\n if (!(err instanceof Error)) {\n // errors that are not Error instances don't have a stack,\n // so it is ok to wrap them into a new Error object...\n err = new Error(err.toString());\n }\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} msg\n * @param {?} context\n * @return {?}\n */\nexport function viewDebugError(msg: string, context: DebugContext): Error {\n const /** @type {?} */ err = new Error(msg);\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nfunction _addDebugContext(err: Error, context: DebugContext) {\n ( /** @type {?} */((err as any)))[ERROR_DEBUG_CONTEXT] = context;\n ( /** @type {?} */((err as any)))[ERROR_LOGGER] = context.logError.bind(context);\n}\n/**\n * @param {?} err\n * @return {?}\n */\nexport function isViewDebugError(err: Error): boolean {\n return !!getDebugContext(err);\n}\n/**\n * @param {?} action\n * @return {?}\n */\nexport function viewDestroyedError(action: string): Error {\n return new Error(`ViewDestroyedError: Attempt to use a destroyed view: ${action}`);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di';\nimport {ErrorHandler} from '../error_handler';\nimport {NgModuleRef} from '../linker/ng_module_factory';\nimport {QueryList} from '../linker/query_list';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {Renderer2, RendererFactory2, RendererType2} from '../render/api';\nimport {Sanitizer, SecurityContext} from '../security';\nimport {Type} from '../type';\n\n// -------------------------------------\n// Defs\n// -------------------------------------\n\n/**\n * Factory for ViewDefinitions/NgModuleDefinitions.\n * We use a function so we can reexeute it in case an error happens and use the given logger\n * function to log the error from the definition of the node, which is shown in all browser\n * logs.\n */\nexport interface DefinitionFactory<D extends Definition<any>> { (logger: NodeLogger): D; }\n\n/**\n * Function to call console.error at the right source location. This is an indirection\n * via another function as browser will log the location that actually called\n * `console.error`.\n */\nexport interface NodeLogger { (): () => void; }\n\nexport interface Definition<DF extends DefinitionFactory<any>> { factory: DF|null; }\n\nexport interface NgModuleDefinition extends Definition<NgModuleDefinitionFactory> {\n providers: NgModuleProviderDef[];\n providersByKey: {[tokenKey: string]: NgModuleProviderDef};\n}\n\nexport interface NgModuleDefinitionFactory extends DefinitionFactory<NgModuleDefinition> {}\n;\n\nexport interface ViewDefinition extends Definition<ViewDefinitionFactory> {\n flags: ViewFlags;\n updateDirectives: ViewUpdateFn;\n updateRenderer: ViewUpdateFn;\n handleEvent: ViewHandleEventFn;\n /**\n * Order: Depth first.\n * Especially providers are before elements / anchors.\n */\n nodes: NodeDef[];\n /** aggregated NodeFlags for all nodes **/\n nodeFlags: NodeFlags;\n rootNodeFlags: NodeFlags;\n lastRenderRootNode: NodeDef|null;\n bindingCount: number;\n outputCount: number;\n /**\n * Binary or of all query ids that are matched by one of the nodes.\n * This includes query ids from templates as well.\n * Used as a bloom filter.\n */\n nodeMatchedQueries: number;\n}\n\nexport interface ViewDefinitionFactory extends DefinitionFactory<ViewDefinition> {}\n\n\nexport interface ViewUpdateFn { (check: NodeCheckFn, view: ViewData): void; }\n\n// helper functions to create an overloaded function type.\nexport interface NodeCheckFn {\n (view: ViewData, nodeIndex: number, argStyle: ArgumentType.Dynamic, values: any[]): any;\n\n (view: ViewData, nodeIndex: number, argStyle: ArgumentType.Inline, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any;\n}\n\nexport const enum ArgumentType {Inline, Dynamic}\n\nexport interface ViewHandleEventFn {\n (view: ViewData, nodeIndex: number, eventName: string, event: any): boolean;\n}\n\n/**\n * Bitmask for ViewDefintion.flags.\n */\nexport const enum ViewFlags {\n None = 0,\n OnPush = 1 << 1,\n}\n\n/**\n * A node definition in the view.\n *\n * Note: We use one type for all nodes so that loops that loop over all nodes\n * of a ViewDefinition stay monomorphic!\n */\nexport interface NodeDef {\n flags: NodeFlags;\n index: number;\n parent: NodeDef|null;\n renderParent: NodeDef|null;\n /** this is checked against NgContentDef.index to find matched nodes */\n ngContentIndex: number;\n /** number of transitive children */\n childCount: number;\n /** aggregated NodeFlags for all transitive children (does not include self) **/\n childFlags: NodeFlags;\n /** aggregated NodeFlags for all direct children (does not include self) **/\n directChildFlags: NodeFlags;\n\n bindingIndex: number;\n bindings: BindingDef[];\n bindingFlags: BindingFlags;\n outputIndex: number;\n outputs: OutputDef[];\n /**\n * references that the user placed on the element\n */\n references: {[refId: string]: QueryValueType};\n /**\n * ids and value types of all queries that are matched by this node.\n */\n matchedQueries: {[queryId: number]: QueryValueType};\n /** Binary or of all matched query ids of this node. */\n matchedQueryIds: number;\n /**\n * Binary or of all query ids that are matched by one of the children.\n * This includes query ids from templates as well.\n * Used as a bloom filter.\n */\n childMatchedQueries: number;\n element: ElementDef|null;\n provider: ProviderDef|null;\n text: TextDef|null;\n query: QueryDef|null;\n ngContent: NgContentDef|null;\n}\n\n/**\n * Bitmask for NodeDef.flags.\n * Naming convention:\n * - `Type...`: flags that are mutually exclusive\n * - `Cat...`: union of multiple `Type...` (short for category).\n */\nexport const enum NodeFlags {\n None = 0,\n TypeElement = 1 << 0,\n TypeText = 1 << 1,\n ProjectedTemplate = 1 << 2,\n CatRenderNode = TypeElement | TypeText,\n TypeNgContent = 1 << 3,\n TypePipe = 1 << 4,\n TypePureArray = 1 << 5,\n TypePureObject = 1 << 6,\n TypePurePipe = 1 << 7,\n CatPureExpression = TypePureArray | TypePureObject | TypePurePipe,\n TypeValueProvider = 1 << 8,\n TypeClassProvider = 1 << 9,\n TypeFactoryProvider = 1 << 10,\n TypeUseExistingProvider = 1 << 11,\n LazyProvider = 1 << 12,\n PrivateProvider = 1 << 13,\n TypeDirective = 1 << 14,\n Component = 1 << 15,\n CatProviderNoDirective =\n TypeValueProvider | TypeClassProvider | TypeFactoryProvider | TypeUseExistingProvider,\n CatProvider = CatProviderNoDirective | TypeDirective,\n OnInit = 1 << 16,\n OnDestroy = 1 << 17,\n DoCheck = 1 << 18,\n OnChanges = 1 << 19,\n AfterContentInit = 1 << 20,\n AfterContentChecked = 1 << 21,\n AfterViewInit = 1 << 22,\n AfterViewChecked = 1 << 23,\n EmbeddedViews = 1 << 24,\n ComponentView = 1 << 25,\n TypeContentQuery = 1 << 26,\n TypeViewQuery = 1 << 27,\n StaticQuery = 1 << 28,\n DynamicQuery = 1 << 29,\n CatQuery = TypeContentQuery | TypeViewQuery,\n\n // mutually exclusive values...\n Types = CatRenderNode | TypeNgContent | TypePipe | CatPureExpression | CatProvider | CatQuery\n}\n\nexport interface BindingDef {\n flags: BindingFlags;\n ns: string|null;\n name: string|null;\n nonMinifiedName: string|null;\n securityContext: SecurityContext|null;\n suffix: string|null;\n}\n\nexport const enum BindingFlags {\n TypeElementAttribute = 1 << 0,\n TypeElementClass = 1 << 1,\n TypeElementStyle = 1 << 2,\n TypeProperty = 1 << 3,\n SyntheticProperty = 1 << 4,\n SyntheticHostProperty = 1 << 5,\n CatSyntheticProperty = SyntheticProperty | SyntheticHostProperty,\n\n // mutually exclusive values...\n Types = TypeElementAttribute | TypeElementClass | TypeElementStyle | TypeProperty\n}\n\nexport interface OutputDef {\n type: OutputType;\n target: 'window'|'document'|'body'|'component'|null;\n eventName: string;\n propName: string|null;\n}\n\nexport const enum OutputType {ElementOutput, DirectiveOutput}\n\nexport const enum QueryValueType {\n ElementRef,\n RenderElement,\n TemplateRef,\n ViewContainerRef,\n Provider\n}\n\nexport interface ElementDef {\n name: string|null;\n ns: string|null;\n /** ns, name, value */\n attrs: [string, string, string][]|null;\n template: ViewDefinition|null;\n componentProvider: NodeDef|null;\n componentRendererType: RendererType2|null;\n // closure to allow recursive components\n componentView: ViewDefinitionFactory|null;\n /**\n * visible public providers for DI in the view,\n * as see from this element. This does not include private providers.\n */\n publicProviders: {[tokenKey: string]: NodeDef}|null;\n /**\n * same as visiblePublicProviders, but also includes private providers\n * that are located on this element.\n */\n allProviders: {[tokenKey: string]: NodeDef}|null;\n handleEvent: ElementHandleEventFn|null;\n}\n\nexport interface ElementHandleEventFn { (view: ViewData, eventName: string, event: any): boolean; }\n\nexport interface ProviderDef {\n token: any;\n value: any;\n deps: DepDef[];\n}\n\nexport interface NgModuleProviderDef {\n flags: NodeFlags;\n index: number;\n token: any;\n value: any;\n deps: DepDef[];\n}\n\nexport interface DepDef {\n flags: DepFlags;\n token: any;\n tokenKey: string;\n}\n\n/**\n * Bitmask for DI flags\n */\nexport const enum DepFlags {\n None = 0,\n SkipSelf = 1 << 0,\n Optional = 1 << 1,\n Value = 2 << 2,\n}\n\nexport interface TextDef { prefix: string; }\n\nexport interface QueryDef {\n id: number;\n // variant of the id that can be used to check against NodeDef.matchedQueryIds, ...\n filterId: number;\n bindings: QueryBindingDef[];\n}\n\nexport interface QueryBindingDef {\n propName: string;\n bindingType: QueryBindingType;\n}\n\nexport const enum QueryBindingType {First, All}\n\nexport interface NgContentDef {\n /**\n * this index is checked against NodeDef.ngContentIndex to find the nodes\n * that are matched by this ng-content.\n * Note that a NodeDef with an ng-content can be reprojected, i.e.\n * have a ngContentIndex on its own.\n */\n index: number;\n}\n\n// -------------------------------------\n// Data\n// -------------------------------------\n\nexport interface NgModuleData extends Injector, NgModuleRef<any> {\n // Note: we are using the prefix _ as NgModuleData is an NgModuleRef and therefore directly\n // exposed to the user.\n _def: NgModuleDefinition;\n _parent: Injector;\n _providers: any[];\n}\n\n/**\n * View instance data.\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ViewData {\n def: ViewDefinition;\n root: RootData;\n renderer: Renderer2;\n // index of component provider / anchor.\n parentNodeDef: NodeDef|null;\n parent: ViewData|null;\n viewContainerParent: ViewData|null;\n component: any;\n context: any;\n // Attention: Never loop over this, as this will\n // create a polymorphic usage site.\n // Instead: Always loop over ViewDefinition.nodes,\n // and call the right accessor (e.g. `elementData`) based on\n // the NodeType.\n nodes: {[key: number]: NodeData};\n state: ViewState;\n oldValues: any[];\n disposables: DisposableFn[]|null;\n}\n\n/**\n * Bitmask of states\n */\nexport const enum ViewState {\n BeforeFirstCheck = 1 << 0,\n FirstCheck = 1 << 1,\n Attached = 1 << 2,\n ChecksEnabled = 1 << 3,\n IsProjectedView = 1 << 4,\n CheckProjectedView = 1 << 5,\n CheckProjectedViews = 1 << 6,\n Destroyed = 1 << 7,\n\n CatDetectChanges = Attached | ChecksEnabled,\n CatInit = BeforeFirstCheck | CatDetectChanges\n}\n\nexport interface DisposableFn { (): void; }\n/**\n * Node instance data.\n * \n * We have a separate type per NodeType to save memory\n * (TextData | ElementData | ProviderData | PureExpressionData | QueryList<any>)\n * \n * To keep our code monomorphic,\n * we prohibit using `NodeData` directly but enforce the use of accessors (`asElementData`, ...).\n * This way, no usage site can get a `NodeData` from view.nodes and then use it for different\n * purposes.\n */\nexport class NodeData {\nprivate __brand: any; }\n\nfunction NodeData_tsickle_Closure_declarations() {\n/** @type {?} */\nNodeData.prototype.__brand;\n}\n\n\n/**\n * Data for an instantiated NodeType.Text.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface TextData { renderText: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asTextData(view: ViewData, index: number): TextData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.Element.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ElementData {\n renderElement: any;\n componentView: ViewData;\n viewContainer: ViewContainerData|null;\n template: TemplateData;\n}\n\nexport interface ViewContainerData extends ViewContainerRef {\n // Note: we are using the prefix _ as ViewContainerData is a ViewContainerRef and therefore\n // directly\n // exposed to the user.\n _embeddedViews: ViewData[];\n}\n\nexport interface TemplateData extends TemplateRef<any> {\n // views that have been created from the template\n // of this element,\n // but inserted into the embeddedViews of another element.\n // By default, this is undefined.\n // Note: we are using the prefix _ as TemplateData is a TemplateRef and therefore directly\n // exposed to the user.\n _projectedViews: ViewData[];\n}\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asElementData(view: ViewData, index: number): ElementData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.Provider.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ProviderData { instance: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asProviderData(view: ViewData, index: number): ProviderData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.PureExpression.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface PureExpressionData { value: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asPureExpressionData(view: ViewData, index: number): PureExpressionData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asQueryList(view: ViewData, index: number): QueryList<any> {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\nexport interface RootData {\n injector: Injector;\n ngModule: NgModuleRef<any>;\n projectableNodes: any[][];\n selectorOrNode: any;\n renderer: Renderer2;\n rendererFactory: RendererFactory2;\n errorHandler: ErrorHandler;\n sanitizer: Sanitizer;\n}\n/**\n * @abstract\n */\nexport abstract class DebugContext {\n/**\n * @abstract\n * @return {?}\n */\nview() {}\n/**\n * @abstract\n * @return {?}\n */\nnodeIndex() {}\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponent() {}\n/**\n * @abstract\n * @return {?}\n */\nproviderTokens() {}\n/**\n * @abstract\n * @return {?}\n */\nreferences() {}\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponentRenderElement() {}\n/**\n * @abstract\n * @return {?}\n */\nrenderNode() {}\n/**\n * @abstract\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nlogError(console: Console, ...values: any[]) {}\n}\n\n// -------------------------------------\n// Other\n// -------------------------------------\n\nexport const enum CheckType {CheckAndUpdate, CheckNoChanges}\n\nexport interface ProviderOverride {\n token: any;\n flags: NodeFlags;\n value: any;\n deps: ([DepFlags, any]|any)[];\n}\n\nexport interface Services {\n setCurrentNode(view: ViewData, nodeIndex: number): void;\n createRootView(\n injector: Injector, projectableNodes: any[][], rootSelectorOrNode: string|any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData;\n createEmbeddedView(parent: ViewData, anchorDef: NodeDef, viewDef: ViewDefinition, context?: any):\n ViewData;\n createComponentView(\n parentView: ViewData, nodeDef: NodeDef, viewDef: ViewDefinition, hostElement: any): ViewData;\n createNgModuleRef(\n moduleType: Type<any>, parent: Injector, bootstrapComponents: Type<any>[],\n def: NgModuleDefinition): NgModuleRef<any>;\n overrideProvider(override: ProviderOverride): void;\n clearProviderOverrides(): void;\n checkAndUpdateView(view: ViewData): void;\n checkNoChangesView(view: ViewData): void;\n destroyView(view: ViewData): void;\n resolveDep(\n view: ViewData, elDef: NodeDef|null, allowPrivateServices: boolean, depDef: DepDef,\n notFoundValue?: any): any;\n createDebugContext(view: ViewData, nodeIndex: number): DebugContext;\n handleEvent: ViewHandleEventFn;\n updateDirectives: (view: ViewData, checkType: CheckType) => void;\n updateRenderer: (view: ViewData, checkType: CheckType) => void;\n dirtyParentQueries: (view: ViewData) => void;\n}\n/**\n * This object is used to prevent cycles in the source files and to have a place where\n * debug mode can hook it. It is lazily filled when `isDevMode` is known.\n */\nexport const Services: Services = {\n setCurrentNode: undefined !,\n createRootView: undefined !,\n createEmbeddedView: undefined !,\n createComponentView: undefined !,\n createNgModuleRef: undefined !,\n overrideProvider: undefined !,\n clearProviderOverrides: undefined !,\n checkAndUpdateView: undefined !,\n checkNoChangesView: undefined !,\n destroyView: undefined !,\n resolveDep: undefined !,\n createDebugContext: undefined !,\n handleEvent: undefined !,\n updateDirectives: undefined !,\n updateRenderer: undefined !,\n dirtyParentQueries: undefined !,\n};\n","\nexport type SecurityContext = number;\nexport let SecurityContext: any = {};\nSecurityContext.NONE = 0;\nSecurityContext.HTML = 1;\nSecurityContext.STYLE = 2;\nSecurityContext.SCRIPT = 3;\nSecurityContext.URL = 4;\nSecurityContext.RESOURCE_URL = 5;\nSecurityContext[SecurityContext.NONE] = \"NONE\";\nSecurityContext[SecurityContext.HTML] = \"HTML\";\nSecurityContext[SecurityContext.STYLE] = \"STYLE\";\nSecurityContext[SecurityContext.SCRIPT] = \"SCRIPT\";\nSecurityContext[SecurityContext.URL] = \"URL\";\nSecurityContext[SecurityContext.RESOURCE_URL] = \"RESOURCE_URL\";\n\n/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class Sanitizer {\n/**\n * @abstract\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\nsanitize(context: SecurityContext, value: {}|string|null) {}\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ApplicationInitStatus} from './application_init';\nimport {ApplicationRef, ApplicationRef_} from './application_ref';\nimport {APP_ID_RANDOM_PROVIDER} from './application_tokens';\nimport {IterableDiffers, KeyValueDiffers, defaultIterableDiffers, defaultKeyValueDiffers} from './change_detection/change_detection';\nimport {Inject, Optional, SkipSelf} from './di/metadata';\nimport {LOCALE_ID} from './i18n/tokens';\nimport {Compiler} from './linker/compiler';\nimport {NgModule} from './metadata';\n/**\n * @return {?}\n */\nexport function _iterableDiffersFactory() {\n return defaultIterableDiffers;\n}\n/**\n * @return {?}\n */\nexport function _keyValueDiffersFactory() {\n return defaultKeyValueDiffers;\n}\n/**\n * @param {?=} locale\n * @return {?}\n */\nexport function _localeFactory(locale?: string): string {\n return locale || 'en-US';\n}\n/**\n * This module includes the providers of \\@angular/core that are needed\n * to bootstrap components via `ApplicationRef`.\n * \n * \\@experimental\n */\nexport class ApplicationModule {\n/**\n * @param {?} appRef\n */\nconstructor(appRef: ApplicationRef) {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n providers: [\n ApplicationRef_,\n {provide: ApplicationRef, useExisting: ApplicationRef_},\n ApplicationInitStatus,\n Compiler,\n APP_ID_RANDOM_PROVIDER,\n {provide: IterableDiffers, useFactory: _iterableDiffersFactory},\n {provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory},\n {\n provide: LOCALE_ID,\n useFactory: _localeFactory,\n deps: [[new Inject(LOCALE_ID), new Optional(), new SkipSelf()]]\n },\n ]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ApplicationRef, },\n];\n}\n\nfunction ApplicationModule_tsickle_Closure_declarations() {\n/** @type {?} */\nApplicationModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationModule.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {InjectionToken} from '../di/injection_token';\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const LOCALE_ID = new InjectionToken<string>('LocaleId');\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const TRANSLATIONS = new InjectionToken<string>('Translations');\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const TRANSLATIONS_FORMAT = new InjectionToken<string>('TranslationsFormat');\nexport type MissingTranslationStrategy = number;\nexport let MissingTranslationStrategy: any = {};\nMissingTranslationStrategy.Error = 0;\nMissingTranslationStrategy.Warning = 1;\nMissingTranslationStrategy.Ignore = 2;\nMissingTranslationStrategy[MissingTranslationStrategy.Error] = \"Error\";\nMissingTranslationStrategy[MissingTranslationStrategy.Warning] = \"Warning\";\nMissingTranslationStrategy[MissingTranslationStrategy.Ignore] = \"Ignore\";\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {PlatformRef, PlatformRef_, createPlatformFactory} from './application_ref';\nimport {PLATFORM_ID} from './application_tokens';\nimport {Console} from './console';\nimport {Provider} from './di';\nimport {Reflector, reflector} from './reflection/reflection';\nimport {TestabilityRegistry} from './testability/testability';\n/**\n * @return {?}\n */\nfunction _reflector(): Reflector {\n return reflector;\n}\n\nconst /** @type {?} */ _CORE_PLATFORM_PROVIDERS: Provider[] = [\n // Set a default platform name for platforms that don't set it explicitly.\n {provide: PLATFORM_ID, useValue: 'unknown'},\n PlatformRef_,\n {provide: PlatformRef, useExisting: PlatformRef_},\n {provide: Reflector, useFactory: _reflector, deps: []},\n TestabilityRegistry,\n Console,\n];\n/**\n * This platform has to be included in any other platform\n * \n * \\@experimental\n */\nexport const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {DefaultIterableDifferFactory} from './differs/default_iterable_differ';\nimport {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';\nimport {IterableDifferFactory, IterableDiffers} from './differs/iterable_differs';\nimport {KeyValueDifferFactory, KeyValueDiffers} from './differs/keyvalue_differs';\n\nexport {SimpleChanges} from '../metadata/lifecycle_hooks';\nexport {SimpleChange, ValueUnwrapper, WrappedValue, devModeEqual} from './change_detection_util';\nexport {ChangeDetectorRef} from './change_detector_ref';\nexport {ChangeDetectionStrategy, ChangeDetectorStatus, isDefaultChangeDetectionStrategy} from './constants';\nexport {DefaultIterableDifferFactory} from './differs/default_iterable_differ';\nexport {DefaultIterableDiffer} from './differs/default_iterable_differ';\nexport {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';\nexport {CollectionChangeRecord, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDifferFactory, IterableDiffers, NgIterable, TrackByFn, TrackByFunction} from './differs/iterable_differs';\nexport {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers} from './differs/keyvalue_differs';\nexport {PipeTransform} from './pipe_transform';\n/**\n * Structural diffing for `Object`s and `Map`s.\n */\nconst keyValDiff: KeyValueDifferFactory[] = [new DefaultKeyValueDifferFactory()];\n/**\n * Structural diffing for `Iterable` types such as `Array`s.\n */\nconst iterableDiff: IterableDifferFactory[] = [new DefaultIterableDifferFactory()];\n\nexport const /** @type {?} */ defaultIterableDiffers = new IterableDiffers(iterableDiff);\n\nexport const /** @type {?} */ defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Optional, Provider, SkipSelf} from '../../di';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n\n\n/**\n * A differ that tracks changes made to an object over time.\n *\n * @stable\n */\nexport interface KeyValueDiffer<K, V> {\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: Map<K, V>): KeyValueChanges<K, V>;\n\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: {[key: string]: V}): KeyValueChanges<string, V>;\n // TODO(TS2.1): diff<KP extends string>(this: KeyValueDiffer<KP, V>, object: Record<KP, V>):\n // KeyValueDiffer<KP, V>;\n}\n\n/**\n * An object describing the changes in the `Map` or `{[k:string]: string}` since last time\n * `KeyValueDiffer#diff()` was invoked.\n *\n * @stable\n */\nexport interface KeyValueChanges<K, V> {\n /**\n * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes\n * to each item.\n */\n forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over changes in the order of original Map showing where the original items\n * have moved.\n */\n forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all keys for which values have changed.\n */\n forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all added items.\n */\n forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all removed items.\n */\n forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n}\n\n/**\n * Record representing the item change information.\n *\n * @stable\n */\nexport interface KeyValueChangeRecord<K, V> {\n /**\n * Current key in the Map.\n */\n readonly key: K;\n\n /**\n * Current value for the key or `null` if removed.\n */\n readonly currentValue: V|null;\n\n /**\n * Previous value for the key or `null` if added.\n */\n readonly previousValue: V|null;\n}\n\n/**\n * Provides a factory for {@link KeyValueDiffer}.\n *\n * @stable\n */\nexport interface KeyValueDifferFactory {\n /**\n * Test to see if the differ knows how to diff this kind of object.\n */\n supports(objects: any): boolean;\n\n /**\n * Create a `KeyValueDiffer`.\n */\n create<K, V>(): KeyValueDiffer<K, V>;\n\n /**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n */\n create<K, V>(_cdr?: ChangeDetectorRef): KeyValueDiffer<K, V>;\n}\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * \\@stable\n */\nexport class KeyValueDiffers {\n/**\n * @deprecated v4.0.0 - Should be private.\n */\nfactories: KeyValueDifferFactory[];\n/**\n * @param {?} factories\n */\nconstructor(factories: KeyValueDifferFactory[]) { this.factories = factories; }\n/**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\nstatic create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers {\n if (parent) {\n const /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n }\n return new KeyValueDiffers(factories);\n }\n/**\n * Takes an array of {\\@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {\\@link KeyValueDiffers} instance with the provided factories and return a new\n * {\\@link KeyValueDiffers} instance.\n * \n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link KeyValueDiffer} available.\n * \n * ### Example\n * \n * ```\n * \\@Component({ \n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n * @template S\n * @param {?} factories\n * @return {?}\n */\nstatic extend<S>(factories: KeyValueDifferFactory[]): Provider {\n return {\n provide: KeyValueDiffers,\n useFactory: (parent: KeyValueDiffers) => {\n if (!parent) {\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\n // to bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend KeyValueDiffers without a parent injector');\n }\n return KeyValueDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelf(), new Optional()]]\n };\n }\n/**\n * @param {?} kv\n * @return {?}\n */\nfind(kv: any): KeyValueDifferFactory {\n const /** @type {?} */ factory = this.factories.find(f => f.supports(kv));\n if (factory) {\n return factory;\n }\n throw new Error(`Cannot find a differ supporting object '${kv}'`);\n }\n}\n\nfunction KeyValueDiffers_tsickle_Closure_declarations() {\n/**\n * @deprecated v4.0.0 - Should be private.\n * @type {?}\n */\nKeyValueDiffers.prototype.factories;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Optional, Provider, SkipSelf} from '../../di';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n/**\n * A type describing supported interable types.\n *\n * @stable\n */\nexport type NgIterable<T> = Array<T>| Iterable<T>;\n\n/**\n * A strategy for tracking changes over time to an iterable. Used by {@link NgFor} to\n * respond to changes in an iterable by effecting equivalent changes in the DOM.\n *\n * @stable\n */\nexport interface IterableDiffer<V> {\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: NgIterable<V>): IterableChanges<V>|null;\n}\n\n/**\n * An object describing the changes in the `Iterable` collection since last time\n * `IterableDiffer#diff()` was invoked.\n *\n * @stable\n */\nexport interface IterableChanges<V> {\n /**\n * Iterate over all changes. `IterableChangeRecord` will contain information about changes\n * to each item.\n */\n forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /**\n * Iterate over a set of operations which when applied to the original `Iterable` will produce the\n * new `Iterable`.\n *\n * NOTE: These are not necessarily the actual operations which were applied to the original\n * `Iterable`, rather these are a set of computed operations which may not be the same as the\n * ones applied.\n *\n * @param record A change which needs to be applied\n * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the\n * original `Iterable` location, where as `previousIndex` refers to the transient location\n * of the item, after applying the operations up to this point.\n * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the\n * original `Iterable` location, where as `currentIndex` refers to the transient location\n * of the item, after applying the operations up to this point.\n */\n forEachOperation(\n fn: (record: IterableChangeRecord<V>, previousIndex: number, currentIndex: number) => void):\n void;\n\n /**\n * Iterate over changes in the order of original `Iterable` showing where the original items\n * have moved.\n */\n forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all added items. */\n forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all moved items. */\n forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all removed items. */\n forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all items which had their identity (as computed by the `trackByFn`) changed. */\n forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;\n}\n\n/**\n * Record representing the item change information.\n *\n * @stable\n */\nexport interface IterableChangeRecord<V> {\n /** Current index of the item in `Iterable` or null if removed. */\n readonly currentIndex: number|null;\n\n /** Previous index of the item in `Iterable` or null if added. */\n readonly previousIndex: number|null;\n\n /** The item. */\n readonly item: V;\n\n /** Track by identity as computed by the `trackByFn`. */\n readonly trackById: any;\n}\n\n/**\n * @deprecated v4.0.0 - Use IterableChangeRecord instead.\n */\nexport interface CollectionChangeRecord<V> extends IterableChangeRecord<V> {}\n\n\n/**\n * Nolonger used.\n *\n * @deprecated v4.0.0 - Use TrackByFunction instead\n */\nexport interface TrackByFn { (index: number, item: any): any; }\n\n/**\n * An optional function passed into {@link NgForOf} that defines how to track\n * items in an iterable (e.g. fby index or id)\n *\n * @stable\n */\nexport interface TrackByFunction<T> { (index: number, item: T): any; }\n\n/**\n * Provides a factory for {@link IterableDiffer}.\n *\n * @stable\n */\nexport interface IterableDifferFactory {\n supports(objects: any): boolean;\n create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;\n\n /**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n */\n create<V>(_cdr?: ChangeDetectorRef|TrackByFunction<V>, trackByFn?: TrackByFunction<V>):\n IterableDiffer<V>;\n}\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n * \\@stable\n */\nexport class IterableDiffers {\n/**\n * @deprecated v4.0.0 - Should be private\n */\nfactories: IterableDifferFactory[];\n/**\n * @param {?} factories\n */\nconstructor(factories: IterableDifferFactory[]) { this.factories = factories; }\n/**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\nstatic create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers {\n if (parent != null) {\n const /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n return new IterableDiffers(factories);\n } else {\n return new IterableDiffers(factories);\n }\n }\n/**\n * Takes an array of {\\@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {\\@link IterableDiffers} instance with the provided factories and return a new\n * {\\@link IterableDiffers} instance.\n * \n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link IterableDiffer} available.\n * \n * ### Example\n * \n * ```\n * \\@Component({ \n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n * @param {?} factories\n * @return {?}\n */\nstatic extend(factories: IterableDifferFactory[]): Provider {\n return {\n provide: IterableDiffers,\n useFactory: (parent: IterableDiffers) => {\n if (!parent) {\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend IterableDiffers without a parent injector');\n }\n return IterableDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[IterableDiffers, new SkipSelf(), new Optional()]]\n };\n }\n/**\n * @param {?} iterable\n * @return {?}\n */\nfind(iterable: any): IterableDifferFactory {\n const /** @type {?} */ factory = this.factories.find(f => f.supports(iterable));\n if (factory != null) {\n return factory;\n } else {\n throw new Error(\n `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`);\n }\n }\n}\n\nfunction IterableDiffers_tsickle_Closure_declarations() {\n/**\n * @deprecated v4.0.0 - Should be private\n * @type {?}\n */\nIterableDiffers.prototype.factories;\n}\n\n/**\n * @param {?} type\n * @return {?}\n */\nexport function getTypeNameForDebugging(type: any): string {\n return type['name'] || typeof type;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {looseIdentical, stringify} from '../../util';\nimport {isJsObject} from '../change_detection_util';\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory} from './keyvalue_differs';\nexport class DefaultKeyValueDifferFactory<K, V> implements KeyValueDifferFactory {\nconstructor() {}\n/**\n * @param {?} obj\n * @return {?}\n */\nsupports(obj: any): boolean { return obj instanceof Map || isJsObject(obj); }\n\n create<K, V>(): DefaultKeyValueDiffer<K, V>;\n/**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n * @template K, V\n * @param {?=} cd\n * @return {?}\n */\ncreate<K, V>(cd?: ChangeDetectorRef): KeyValueDiffer<K, V> {\n return new DefaultKeyValueDiffer<K, V>();\n }\n}\nexport class DefaultKeyValueDiffer<K, V> implements KeyValueDiffer<K, V>, KeyValueChanges<K, V> {\nprivate _records = new Map<K, KeyValueChangeRecord_<K, V>>();\nprivate _mapHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _appendAfter: KeyValueChangeRecord_<K, V>|null = null;\nprivate _previousMapHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _changesHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _changesTail: KeyValueChangeRecord_<K, V>|null = null;\nprivate _additionsHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _additionsTail: KeyValueChangeRecord_<K, V>|null = null;\nprivate _removalsHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _removalsTail: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * @return {?}\n */\nget isDirty(): boolean {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n/**\n * @param {?=} map\n * @return {?}\n */\ndiff(map?: Map<any, any>|{[k: string]: any}|null): any {\n if (!map) {\n map = new Map();\n } else if (!(map instanceof Map || isJsObject(map))) {\n throw new Error(\n `Error trying to diff '${stringify(map)}'. Only maps and objects are allowed`);\n }\n\n return this.check(map) ? this : null;\n }\n/**\n * @return {?}\n */\nonDestroy() {}\n/**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n * @param {?} map\n * @return {?}\n */\ncheck(map: Map<any, any>|{[k: string]: any}): boolean {\n this._reset();\n\n let /** @type {?} */ insertBefore = this._mapHead;\n this._appendAfter = null;\n\n this._forEach(map, (value: any, key: any) => {\n if (insertBefore && insertBefore.key === key) {\n this._maybeAddToChanges(insertBefore, value);\n this._appendAfter = insertBefore;\n insertBefore = insertBefore._next;\n } else {\n const /** @type {?} */ record = this._getOrCreateRecordForKey(key, value);\n insertBefore = this._insertBeforeOrAppend(insertBefore, record);\n }\n });\n\n // Items remaining at the end of the list have been deleted\n if (insertBefore) {\n if (insertBefore._prev) {\n insertBefore._prev._next = null;\n }\n\n this._removalsHead = insertBefore;\n\n for (let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null = insertBefore; record !== null;\n record = record._nextRemoved) {\n if (record === this._mapHead) {\n this._mapHead = null;\n }\n this._records.delete(record.key);\n record._nextRemoved = record._next;\n record.previousValue = record.currentValue;\n record.currentValue = null;\n record._prev = null;\n record._next = null;\n }\n }\n\n // Make sure tails have no next records from previous runs\n if (this._changesTail) this._changesTail._nextChanged = null;\n if (this._additionsTail) this._additionsTail._nextAdded = null;\n\n return this.isDirty;\n }\n/**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n * \n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n * @param {?} before\n * @param {?} record\n * @return {?}\n */\nprivate _insertBeforeOrAppend(\n before: KeyValueChangeRecord_<K, V>|null,\n record: KeyValueChangeRecord_<K, V>): KeyValueChangeRecord_<K, V>|null {\n if (before) {\n const /** @type {?} */ prev = before._prev;\n record._next = before;\n record._prev = prev;\n before._prev = record;\n if (prev) {\n prev._next = record;\n }\n if (before === this._mapHead) {\n this._mapHead = record;\n }\n\n this._appendAfter = before;\n return before;\n }\n\n if (this._appendAfter) {\n this._appendAfter._next = record;\n record._prev = this._appendAfter;\n } else {\n this._mapHead = record;\n }\n\n this._appendAfter = record;\n return null;\n }\n/**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nprivate _getOrCreateRecordForKey(key: K, value: V): KeyValueChangeRecord_<K, V> {\n if (this._records.has(key)) {\n const /** @type {?} */ record = /** @type {?} */(( this._records.get(key)));\n this._maybeAddToChanges(record, value);\n const /** @type {?} */ prev = record._prev;\n const /** @type {?} */ next = record._next;\n if (prev) {\n prev._next = next;\n }\n if (next) {\n next._prev = prev;\n }\n record._next = null;\n record._prev = null;\n\n return record;\n }\n\n const /** @type {?} */ record = new KeyValueChangeRecord_<K, V>(key);\n this._records.set(key, record);\n record.currentValue = value;\n this._addToAdditions(record);\n return record;\n }\n/**\n * \\@internal\n * @return {?}\n */\n_reset() {\n if (this.isDirty) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n // let `_previousMapHead` contain the state of the map before the changes\n this._previousMapHead = this._mapHead;\n for (record = this._previousMapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n // Update `record.previousValue` with the value of the item before the changes\n // We need to update all changed items (that's those which have been added and changed)\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = null;\n }\n }\n/**\n * @param {?} record\n * @param {?} newValue\n * @return {?}\n */\nprivate _maybeAddToChanges(record: KeyValueChangeRecord_<K, V>, newValue: any): void {\n if (!looseIdentical(newValue, record.currentValue)) {\n record.previousValue = record.currentValue;\n record.currentValue = newValue;\n this._addToChanges(record);\n }\n }\n/**\n * @param {?} record\n * @return {?}\n */\nprivate _addToAdditions(record: KeyValueChangeRecord_<K, V>) {\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n } else { /** @type {?} */((\n this._additionsTail))._nextAdded = record;\n this._additionsTail = record;\n }\n }\n/**\n * @param {?} record\n * @return {?}\n */\nprivate _addToChanges(record: KeyValueChangeRecord_<K, V>) {\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n } else { /** @type {?} */((\n this._changesTail))._nextChanged = record;\n this._changesTail = record;\n }\n }\n/**\n * @return {?}\n */\ntoString(): string {\n const /** @type {?} */ items: string[] = [];\n const /** @type {?} */ previous: string[] = [];\n const /** @type {?} */ changes: string[] = [];\n const /** @type {?} */ additions: string[] = [];\n const /** @type {?} */ removals: string[] = [];\n\n this.forEachItem(r => items.push(stringify(r)));\n this.forEachPreviousItem(r => previous.push(stringify(r)));\n this.forEachChangedItem(r => changes.push(stringify(r)));\n this.forEachAddedItem(r => additions.push(stringify(r)));\n this.forEachRemovedItem(r => removals.push(stringify(r)));\n\n return 'map: ' + items.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'changes: ' + changes.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n';\n }\n/**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nprivate _forEach<K, V>(obj: Map<K, V>|{[k: string]: V}, fn: (v: V, k: any) => void) {\n if (obj instanceof Map) {\n obj.forEach(fn);\n } else {\n Object.keys(obj).forEach(k => fn(obj[k], k));\n }\n }\n}\n\nfunction DefaultKeyValueDiffer_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._records;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._mapHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._appendAfter;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._previousMapHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._changesHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._changesTail;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._additionsHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._additionsTail;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._removalsHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._removalsTail;\n}\n\n/**\n * \\@stable\n */\nclass KeyValueChangeRecord_<K, V> implements KeyValueChangeRecord<K, V> {\n previousValue: V|null = null;\n currentValue: V|null = null;\n/**\n * \\@internal\n */\n_nextPrevious: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_next: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_prev: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextAdded: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextRemoved: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextChanged: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * @param {?} key\n */\nconstructor(public key: K) {}\n/**\n * @return {?}\n */\ntoString(): string {\n return looseIdentical(this.previousValue, this.currentValue) ?\n stringify(this.key) :\n (stringify(this.key) + '[' + stringify(this.previousValue) + '->' +\n stringify(this.currentValue) + ']');\n }\n}\n\nfunction KeyValueChangeRecord__tsickle_Closure_declarations() {\n/** @type {?} */\nKeyValueChangeRecord_.prototype.previousValue;\n/** @type {?} */\nKeyValueChangeRecord_.prototype.currentValue;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextPrevious;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._next;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._prev;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextAdded;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextChanged;\n/** @type {?} */\nKeyValueChangeRecord_.prototype.key;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {looseIdentical, stringify} from '../../util';\nimport {isListLikeIterable, iterateListLike} from '../change_detection_util';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\nimport {IterableChangeRecord, IterableChanges, IterableDiffer, IterableDifferFactory, NgIterable, TrackByFunction} from './iterable_differs';\nexport class DefaultIterableDifferFactory implements IterableDifferFactory {\nconstructor() {}\n/**\n * @param {?} obj\n * @return {?}\n */\nsupports(obj: Object|null|undefined): boolean { return isListLikeIterable(obj); }\n\n create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>;\n/**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n * @template V\n * @param {?=} cdRefOrTrackBy\n * @param {?=} trackByFn\n * @return {?}\n */\ncreate<V>(cdRefOrTrackBy?: ChangeDetectorRef|TrackByFunction<V>, trackByFn?: TrackByFunction<V>):\n DefaultIterableDiffer<V> {\n return new DefaultIterableDiffer<V>(trackByFn || /** @type {?} */(( <TrackByFunction<any>>cdRefOrTrackBy)));\n }\n}\n\nconst /** @type {?} */ trackByIdentity = (index: number, item: any) => item;\n/**\n * @deprecated v4.0.0 - Should not be part of public API.\n */\nexport class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {\nprivate _length: number = 0;\nprivate _collection: NgIterable<V>|null = null;\nprivate _linkedRecords: _DuplicateMap<V>|null = null;\nprivate _unlinkedRecords: _DuplicateMap<V>|null = null;\nprivate _previousItHead: IterableChangeRecord_<V>|null = null;\nprivate _itHead: IterableChangeRecord_<V>|null = null;\nprivate _itTail: IterableChangeRecord_<V>|null = null;\nprivate _additionsHead: IterableChangeRecord_<V>|null = null;\nprivate _additionsTail: IterableChangeRecord_<V>|null = null;\nprivate _movesHead: IterableChangeRecord_<V>|null = null;\nprivate _movesTail: IterableChangeRecord_<V>|null = null;\nprivate _removalsHead: IterableChangeRecord_<V>|null = null;\nprivate _removalsTail: IterableChangeRecord_<V>|null = null;\nprivate _identityChangesHead: IterableChangeRecord_<V>|null = null;\nprivate _identityChangesTail: IterableChangeRecord_<V>|null = null;\nprivate _trackByFn: TrackByFunction<V>\n/**\n * @param {?=} trackByFn\n */\nconstructor(trackByFn?: TrackByFunction<V>) {\n this._trackByFn = trackByFn || trackByIdentity;\n }\n/**\n * @return {?}\n */\nget collection() { return this._collection; }\n/**\n * @return {?}\n */\nget length(): number { return this._length; }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachOperation(\n fn: (item: IterableChangeRecord<V>, previousIndex: number|null, currentIndex: number|null) =>\n void) {\n let /** @type {?} */ nextIt = this._itHead;\n let /** @type {?} */ nextRemove = this._removalsHead;\n let /** @type {?} */ addRemoveOffset = 0;\n let /** @type {?} */ moveOffsets: number[]|null = null;\n while (nextIt || nextRemove) {\n // Figure out which is the next record to process\n // Order: remove, add, move\n const /** @type {?} */ record: IterableChangeRecord<V> = !nextRemove ||\n nextIt && /** @type {?} */((\n nextIt.currentIndex)) <\n getPreviousIndex(nextRemove, addRemoveOffset, moveOffsets) ? /** @type {?} */((\n nextIt)) :\n nextRemove;\n const /** @type {?} */ adjPreviousIndex = getPreviousIndex(record, addRemoveOffset, moveOffsets);\n const /** @type {?} */ currentIndex = record.currentIndex;\n\n // consume the item, and adjust the addRemoveOffset and update moveDistance if necessary\n if (record === nextRemove) {\n addRemoveOffset--;\n nextRemove = nextRemove._nextRemoved;\n } else {\n nextIt = /** @type {?} */(( nextIt))._next;\n if (record.previousIndex == null) {\n addRemoveOffset++;\n } else {\n // INVARIANT: currentIndex < previousIndex\n if (!moveOffsets) moveOffsets = [];\n const /** @type {?} */ localMovePreviousIndex = adjPreviousIndex - addRemoveOffset;\n const /** @type {?} */ localCurrentIndex = /** @type {?} */(( currentIndex)) - addRemoveOffset;\n if (localMovePreviousIndex != localCurrentIndex) {\n for (let /** @type {?} */ i = 0; i < localMovePreviousIndex; i++) {\n const /** @type {?} */ offset = i < moveOffsets.length ? moveOffsets[i] : (moveOffsets[i] = 0);\n const /** @type {?} */ index = offset + i;\n if (localCurrentIndex <= index && index < localMovePreviousIndex) {\n moveOffsets[i] = offset + 1;\n }\n }\n const /** @type {?} */ previousIndex = record.previousIndex;\n moveOffsets[previousIndex] = localCurrentIndex - localMovePreviousIndex;\n }\n }\n }\n\n if (adjPreviousIndex !== currentIndex) {\n fn(record, adjPreviousIndex, currentIndex);\n }\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n }\n/**\n * @param {?} collection\n * @return {?}\n */\ndiff(collection: NgIterable<V>): DefaultIterableDiffer<V>|null {\n if (collection == null) collection = [];\n if (!isListLikeIterable(collection)) {\n throw new Error(\n `Error trying to diff '${stringify(collection)}'. Only arrays and iterables are allowed`);\n }\n\n if (this.check(collection)) {\n return this;\n } else {\n return null;\n }\n }\n/**\n * @return {?}\n */\nonDestroy() {}\n/**\n * @param {?} collection\n * @return {?}\n */\ncheck(collection: NgIterable<V>): boolean {\n this._reset();\n\n let /** @type {?} */ record: IterableChangeRecord_<V>|null = this._itHead;\n let /** @type {?} */ mayBeDirty: boolean = false;\n let /** @type {?} */ index: number;\n let /** @type {?} */ item: V;\n let /** @type {?} */ itemTrackBy: any;\n if (Array.isArray(collection)) {\n this._length = collection.length;\n\n for (let /** @type {?} */ index = 0; index < this._length; index++) {\n item = collection[index];\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n\n record = record._next;\n }\n } else {\n index = 0;\n iterateListLike(collection, (item: V) => {\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n this._length = index;\n }\n\n this._truncate(record);\n this._collection = collection;\n return this.isDirty;\n }\n/**\n * @return {?}\n */\nget isDirty(): boolean {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n }\n/**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n * \n * \\@internal\n * @return {?}\n */\n_reset() {\n if (this.isDirty) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n let /** @type {?} */ nextRecord: IterableChangeRecord_<V>|null;\n\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n\n for (record = this._movesHead; record !== null; record = nextRecord) {\n record.previousIndex = record.currentIndex;\n nextRecord = record._nextMoved;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n\n // todo(vicb) when assert gets supported\n // assert(!this.isDirty);\n }\n }\n/**\n * This is the core function which handles differences between collections.\n * \n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n * \n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n_mismatch(record: IterableChangeRecord_<V>|null, item: V, itemTrackBy: any, index: number):\n IterableChangeRecord_<V> {\n // The previous record after which we will append the current one.\n let /** @type {?} */ previousRecord: IterableChangeRecord_<V>;\n\n if (record === null) {\n previousRecord = /** @type {?} */(( this._itTail));\n } else {\n previousRecord = /** @type {?} */(( record._prev));\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n\n // Attempt to see if we have seen the item before.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have seen this before, we need to move it forward in the collection.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._moveAfter(record, previousRecord, index);\n } else {\n // Never seen it, check evicted list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._reinsertAfter(record, previousRecord, index);\n } else {\n // It is a new item: add it.\n record =\n this._addAfter(new IterableChangeRecord_<V>(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n }\n/**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n * \n * Use case: `[a, a]` => `[b, a, a]`\n * \n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n * \n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n * \n * \n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n * \n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n_verifyReinsertion(record: IterableChangeRecord_<V>, item: V, itemTrackBy: any, index: number):\n IterableChangeRecord_<V> {\n let /** @type {?} */ reinsertRecord: IterableChangeRecord_<V>|null =\n this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, /** @type {?} */(( record._prev)), index);\n } else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n }\n/**\n * Get rid of any excess {\\@link IterableChangeRecord_}s from the previous collection\n * \n * - `record` The first excess {\\@link IterableChangeRecord_}.\n * \n * \\@internal\n * @param {?} record\n * @return {?}\n */\n_truncate(record: IterableChangeRecord_<V>|null) {\n // Anything after that needs to be removed;\n while (record !== null) {\n const /** @type {?} */ nextRecord: IterableChangeRecord_<V>|null = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_reinsertAfter(\n record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>,\n index: number): IterableChangeRecord_<V> {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n const /** @type {?} */ prev = record._prevRemoved;\n const /** @type {?} */ next = record._nextRemoved;\n\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_moveAfter(record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>, index: number):\n IterableChangeRecord_<V> {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_addAfter(record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>, index: number):\n IterableChangeRecord_<V> {\n this._insertAfter(record, prevRecord, index);\n\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n } else {\n // todo(vicb)\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_insertAfter(\n record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>,\n index: number): IterableChangeRecord_<V> {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n\n const /** @type {?} */ next: IterableChangeRecord_<V>|null =\n prevRecord === null ? this._itHead : prevRecord._next;\n // todo(vicb)\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n } else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n } else {\n prevRecord._next = record;\n }\n\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap<V>();\n }\n this._linkedRecords.put(record);\n\n record.currentIndex = index;\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n_remove(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n return this._addToRemovals(this._unlink(record));\n }\n/**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n_unlink(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n\n const /** @type {?} */ prev = record._prev;\n const /** @type {?} */ next = record._next;\n\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n\n if (prev === null) {\n this._itHead = next;\n } else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n } else {\n next._prev = prev;\n }\n\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n_addToMoves(record: IterableChangeRecord_<V>, toIndex: number): IterableChangeRecord_<V> {\n // todo(vicb)\n // assert(record._nextMoved === null);\n\n if (record.previousIndex === toIndex) {\n return record;\n }\n\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n } else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n\n return record;\n }\n/**\n * @param {?} record\n * @return {?}\n */\nprivate _addToRemovals(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap<V>();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n } else {\n // todo(vicb)\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n_addIdentityChange(record: IterableChangeRecord_<V>, item: V) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n } else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n }\n/**\n * @return {?}\n */\ntoString(): string {\n const /** @type {?} */ list: IterableChangeRecord_<V>[] = [];\n this.forEachItem((record: IterableChangeRecord_<V>) => list.push(record));\n\n const /** @type {?} */ previous: IterableChangeRecord_<V>[] = [];\n this.forEachPreviousItem((record: IterableChangeRecord_<V>) => previous.push(record));\n\n const /** @type {?} */ additions: IterableChangeRecord_<V>[] = [];\n this.forEachAddedItem((record: IterableChangeRecord_<V>) => additions.push(record));\n\n const /** @type {?} */ moves: IterableChangeRecord_<V>[] = [];\n this.forEachMovedItem((record: IterableChangeRecord_<V>) => moves.push(record));\n\n const /** @type {?} */ removals: IterableChangeRecord_<V>[] = [];\n this.forEachRemovedItem((record: IterableChangeRecord_<V>) => removals.push(record));\n\n const /** @type {?} */ identityChanges: IterableChangeRecord_<V>[] = [];\n this.forEachIdentityChange((record: IterableChangeRecord_<V>) => identityChanges.push(record));\n\n return 'collection: ' + list.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'moves: ' + moves.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n' +\n 'identityChanges: ' + identityChanges.join(', ') + '\\n';\n }\n}\n\nfunction DefaultIterableDiffer_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultIterableDiffer.prototype._length;\n/** @type {?} */\nDefaultIterableDiffer.prototype._collection;\n/** @type {?} */\nDefaultIterableDiffer.prototype._linkedRecords;\n/** @type {?} */\nDefaultIterableDiffer.prototype._unlinkedRecords;\n/** @type {?} */\nDefaultIterableDiffer.prototype._previousItHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._itHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._itTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._additionsHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._additionsTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._movesHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._movesTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._removalsHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._removalsTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._identityChangesHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._identityChangesTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._trackByFn;\n}\n\n/**\n * \\@stable\n */\nexport class IterableChangeRecord_<V> implements IterableChangeRecord<V> {\n currentIndex: number|null = null;\n previousIndex: number|null = null;\n/**\n * \\@internal\n */\n_nextPrevious: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prev: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_next: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prevDup: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextDup: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prevRemoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextRemoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextAdded: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextMoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextIdentityChange: IterableChangeRecord_<V>|null = null;\n/**\n * @param {?} item\n * @param {?} trackById\n */\nconstructor(public item: V,\npublic trackById: any) {}\n/**\n * @return {?}\n */\ntoString(): string {\n return this.previousIndex === this.currentIndex ? stringify(this.item) :\n stringify(this.item) + '[' +\n stringify(this.previousIndex) + '->' + stringify(this.currentIndex) + ']';\n }\n}\n\nfunction IterableChangeRecord__tsickle_Closure_declarations() {\n/** @type {?} */\nIterableChangeRecord_.prototype.currentIndex;\n/** @type {?} */\nIterableChangeRecord_.prototype.previousIndex;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextPrevious;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prev;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._next;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prevDup;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextDup;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prevRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextAdded;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextMoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextIdentityChange;\n/** @type {?} */\nIterableChangeRecord_.prototype.item;\n/** @type {?} */\nIterableChangeRecord_.prototype.trackById;\n}\n\nclass _DuplicateItemRecordList<V> {\n/**\n * \\@internal\n */\n_head: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_tail: IterableChangeRecord_<V>|null = null;\n/**\n * Append the record to the list of duplicates.\n * \n * Note: by design all records in the list of duplicates hold the same value in record.item.\n * @param {?} record\n * @return {?}\n */\nadd(record: IterableChangeRecord_<V>): void {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n } else { /** @type {?} */((\n // todo(vicb)\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail))._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n }\n/**\n * @param {?} trackById\n * @param {?} afterIndex\n * @return {?}\n */\nget(trackById: any, afterIndex: number|null): IterableChangeRecord_<V>|null {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((afterIndex === null || afterIndex < /** @type {?} */(( record.currentIndex))) &&\n looseIdentical(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n }\n/**\n * Remove one {\\@link IterableChangeRecord_} from the list of duplicates.\n * \n * Returns whether the list of duplicates is empty.\n * @param {?} record\n * @return {?}\n */\nremove(record: IterableChangeRecord_<V>): boolean {\n // todo(vicb)\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (IterableChangeRecord_ cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n\n const /** @type {?} */ prev: IterableChangeRecord_<V>|null = record._prevDup;\n const /** @type {?} */ next: IterableChangeRecord_<V>|null = record._nextDup;\n if (prev === null) {\n this._head = next;\n } else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n } else {\n next._prevDup = prev;\n }\n return this._head === null;\n }\n}\n\nfunction _DuplicateItemRecordList_tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\n_DuplicateItemRecordList.prototype._head;\n/**\n * \\@internal\n * @type {?}\n */\n_DuplicateItemRecordList.prototype._tail;\n}\n\nclass _DuplicateMap<V> {\n map = new Map<any, _DuplicateItemRecordList<V>>();\n/**\n * @param {?} record\n * @return {?}\n */\nput(record: IterableChangeRecord_<V>) {\n const /** @type {?} */ key = record.trackById;\n\n let /** @type {?} */ duplicates = this.map.get(key);\n if (!duplicates) {\n duplicates = new _DuplicateItemRecordList<V>();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n }\n/**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the afterIndex to pretend it is not there.\n * \n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the last `a` not the first or second.\n * @param {?} trackById\n * @param {?} afterIndex\n * @return {?}\n */\nget(trackById: any, afterIndex: number|null): IterableChangeRecord_<V>|null {\n const /** @type {?} */ key = trackById;\n const /** @type {?} */ recordList = this.map.get(key);\n return recordList ? recordList.get(trackById, afterIndex) : null;\n }\n/**\n * Removes a {\\@link IterableChangeRecord_} from the list of duplicates.\n * \n * The list of duplicates also is removed from the map if it gets empty.\n * @param {?} record\n * @return {?}\n */\nremove(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n const /** @type {?} */ key = record.trackById;\n const /** @type {?} */ recordList: _DuplicateItemRecordList<V> = /** @type {?} */(( this.map.get(key)));\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n }\n/**\n * @return {?}\n */\nget isEmpty(): boolean { return this.map.size === 0; }\n/**\n * @return {?}\n */\nclear() { this.map.clear(); }\n/**\n * @return {?}\n */\ntoString(): string { return '_DuplicateMap(' + stringify(this.map) + ')'; }\n}\n\nfunction _DuplicateMap_tsickle_Closure_declarations() {\n/** @type {?} */\n_DuplicateMap.prototype.map;\n}\n\n/**\n * @param {?} item\n * @param {?} addRemoveOffset\n * @param {?} moveOffsets\n * @return {?}\n */\nfunction getPreviousIndex(\n item: any, addRemoveOffset: number, moveOffsets: number[] | null): number {\n const /** @type {?} */ previousIndex = item.previousIndex;\n if (previousIndex === null) return previousIndex;\n let /** @type {?} */ moveOffset = 0;\n if (moveOffsets && previousIndex < moveOffsets.length) {\n moveOffset = moveOffsets[previousIndex];\n }\n return previousIndex + addRemoveOffset + moveOffset;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {getSymbolIterator, looseIdentical} from '../util';\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function devModeEqual(a: any, b: any): boolean {\n const /** @type {?} */ isListLikeIterableA = isListLikeIterable(a);\n const /** @type {?} */ isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n } else {\n const /** @type {?} */ isAObject = a && (typeof a === 'object' || typeof a === 'function');\n const /** @type {?} */ isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\n } else {\n return looseIdentical(a, b);\n }\n }\n}\n/**\n * Indicates that the result of a {\\@link Pipe} transformation has changed even though the\n * reference\n * has not changed.\n * \n * The wrapped value will be unwrapped by change detection, and the unwrapped value will be stored.\n * \n * Example:\n * \n * ```\n * if (this._latestValue === this._latestReturnedValue) {\n * return this._latestReturnedValue;\n * } else {\n * this._latestReturnedValue = this._latestValue;\n * return WrappedValue.wrap(this._latestValue); // this will force update\n * }\n * ```\n * \\@stable\n */\nexport class WrappedValue {\n/**\n * @param {?} wrapped\n */\nconstructor(public wrapped: any) {}\n/**\n * @param {?} value\n * @return {?}\n */\nstatic wrap(value: any): WrappedValue { return new WrappedValue(value); }\n}\n\nfunction WrappedValue_tsickle_Closure_declarations() {\n/** @type {?} */\nWrappedValue.prototype.wrapped;\n}\n\n/**\n * Helper class for unwrapping WrappedValue s\n */\nexport class ValueUnwrapper {\npublic hasWrappedValue = false;\n/**\n * @param {?} value\n * @return {?}\n */\nunwrap(value: any): any {\n if (value instanceof WrappedValue) {\n this.hasWrappedValue = true;\n return value.wrapped;\n }\n return value;\n }\n/**\n * @return {?}\n */\nreset() { this.hasWrappedValue = false; }\n}\n\nfunction ValueUnwrapper_tsickle_Closure_declarations() {\n/** @type {?} */\nValueUnwrapper.prototype.hasWrappedValue;\n}\n\n/**\n * Represents a basic change from a previous to a new value.\n * \\@stable\n */\nexport class SimpleChange {\n/**\n * @param {?} previousValue\n * @param {?} currentValue\n * @param {?} firstChange\n */\nconstructor(public previousValue: any,\npublic currentValue: any,\npublic firstChange: boolean) {}\n/**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\nisFirstChange(): boolean { return this.firstChange; }\n}\n\nfunction SimpleChange_tsickle_Closure_declarations() {\n/** @type {?} */\nSimpleChange.prototype.previousValue;\n/** @type {?} */\nSimpleChange.prototype.currentValue;\n/** @type {?} */\nSimpleChange.prototype.firstChange;\n}\n\n/**\n * @param {?} obj\n * @return {?}\n */\nexport function isListLikeIterable(obj: any): boolean {\n if (!isJsObject(obj)) return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]\n getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\n}\n/**\n * @param {?} a\n * @param {?} b\n * @param {?} comparator\n * @return {?}\n */\nexport function areIterablesEqual(\n a: any, b: any, comparator: (a: any, b: any) => boolean): boolean {\n const /** @type {?} */ iterator1 = a[getSymbolIterator()]();\n const /** @type {?} */ iterator2 = b[getSymbolIterator()]();\n\n while (true) {\n const /** @type {?} */ item1 = iterator1.next();\n const /** @type {?} */ item2 = iterator2.next();\n if (item1.done && item2.done) return true;\n if (item1.done || item2.done) return false;\n if (!comparator(item1.value, item2.value)) return false;\n }\n}\n/**\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nexport function iterateListLike(obj: any, fn: (p: any) => any) {\n if (Array.isArray(obj)) {\n for (let /** @type {?} */ i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n } else {\n const /** @type {?} */ iterator = obj[getSymbolIterator()]();\n let /** @type {?} */ item: any;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\n/**\n * @param {?} o\n * @return {?}\n */\nexport function isJsObject(o: any): boolean {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di';\nimport {DebugContext} from '../view/index';\nexport class EventListener {\n/**\n * @param {?} name\n * @param {?} callback\n */\nconstructor(public name: string,\npublic callback: Function){}; }\n\nfunction EventListener_tsickle_Closure_declarations() {\n/** @type {?} */\nEventListener.prototype.name;\n/** @type {?} */\nEventListener.prototype.callback;\n}\n\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nexport class DebugNode {\n nativeNode: any;\n listeners: EventListener[];\n parent: DebugElement|null;\n/**\n * @param {?} nativeNode\n * @param {?} parent\n * @param {?} _debugContext\n */\nconstructor(nativeNode: any, parent: DebugNode|null,\nprivate _debugContext: DebugContext) {\n this.nativeNode = nativeNode;\n if (parent && parent instanceof DebugElement) {\n parent.addChild(this);\n } else {\n this.parent = null;\n }\n this.listeners = [];\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return this._debugContext.injector; }\n/**\n * @return {?}\n */\nget componentInstance(): any { return this._debugContext.component; }\n/**\n * @return {?}\n */\nget context(): any { return this._debugContext.context; }\n/**\n * @return {?}\n */\nget references(): {[key: string]: any} { return this._debugContext.references; }\n/**\n * @return {?}\n */\nget providerTokens(): any[] { return this._debugContext.providerTokens; }\n/**\n * @deprecated since v4\n * @return {?}\n */\nget source(): string { return 'Deprecated since v4'; }\n}\n\nfunction DebugNode_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugNode.prototype.nativeNode;\n/** @type {?} */\nDebugNode.prototype.listeners;\n/** @type {?} */\nDebugNode.prototype.parent;\n/** @type {?} */\nDebugNode.prototype._debugContext;\n}\n\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nexport class DebugElement extends DebugNode {\n name: string;\n properties: {[key: string]: any};\n attributes: {[key: string]: string | null};\n classes: {[key: string]: boolean};\n styles: {[key: string]: string | null};\n childNodes: DebugNode[];\n nativeElement: any;\n/**\n * @param {?} nativeNode\n * @param {?} parent\n * @param {?} _debugContext\n */\nconstructor(nativeNode: any, parent: any, _debugContext: DebugContext) {\n super(nativeNode, parent, _debugContext);\n this.properties = {};\n this.attributes = {};\n this.classes = {};\n this.styles = {};\n this.childNodes = [];\n this.nativeElement = nativeNode;\n }\n/**\n * @param {?} child\n * @return {?}\n */\naddChild(child: DebugNode) {\n if (child) {\n this.childNodes.push(child);\n child.parent = this;\n }\n }\n/**\n * @param {?} child\n * @return {?}\n */\nremoveChild(child: DebugNode) {\n const /** @type {?} */ childIndex = this.childNodes.indexOf(child);\n if (childIndex !== -1) {\n child.parent = null;\n this.childNodes.splice(childIndex, 1);\n }\n }\n/**\n * @param {?} child\n * @param {?} newChildren\n * @return {?}\n */\ninsertChildrenAfter(child: DebugNode, newChildren: DebugNode[]) {\n const /** @type {?} */ siblingIndex = this.childNodes.indexOf(child);\n if (siblingIndex !== -1) {\n this.childNodes.splice(siblingIndex + 1, 0, ...newChildren);\n newChildren.forEach(c => {\n if (c.parent) {\n c.parent.removeChild(c);\n }\n c.parent = this;\n });\n }\n }\n/**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\ninsertBefore(refChild: DebugNode, newChild: DebugNode): void {\n const /** @type {?} */ refIndex = this.childNodes.indexOf(refChild);\n if (refIndex === -1) {\n this.addChild(newChild);\n } else {\n if (newChild.parent) {\n newChild.parent.removeChild(newChild);\n }\n newChild.parent = this;\n this.childNodes.splice(refIndex, 0, newChild);\n }\n }\n/**\n * @param {?} predicate\n * @return {?}\n */\nquery(predicate: Predicate<DebugElement>): DebugElement {\n const /** @type {?} */ results = this.queryAll(predicate);\n return results[0] || null;\n }\n/**\n * @param {?} predicate\n * @return {?}\n */\nqueryAll(predicate: Predicate<DebugElement>): DebugElement[] {\n const /** @type {?} */ matches: DebugElement[] = [];\n _queryElementChildren(this, predicate, matches);\n return matches;\n }\n/**\n * @param {?} predicate\n * @return {?}\n */\nqueryAllNodes(predicate: Predicate<DebugNode>): DebugNode[] {\n const /** @type {?} */ matches: DebugNode[] = [];\n _queryNodeChildren(this, predicate, matches);\n return matches;\n }\n/**\n * @return {?}\n */\nget children(): DebugElement[] {\n return /** @type {?} */(( this.childNodes.filter((node) => node instanceof DebugElement) as DebugElement[]));\n }\n/**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\ntriggerEventHandler(eventName: string, eventObj: any) {\n this.listeners.forEach((listener) => {\n if (listener.name == eventName) {\n listener.callback(eventObj);\n }\n });\n }\n}\n\nfunction DebugElement_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugElement.prototype.name;\n/** @type {?} */\nDebugElement.prototype.properties;\n/** @type {?} */\nDebugElement.prototype.attributes;\n/** @type {?} */\nDebugElement.prototype.classes;\n/** @type {?} */\nDebugElement.prototype.styles;\n/** @type {?} */\nDebugElement.prototype.childNodes;\n/** @type {?} */\nDebugElement.prototype.nativeElement;\n}\n\n/**\n * \\@experimental\n * @param {?} debugEls\n * @return {?}\n */\nexport function asNativeElements(debugEls: DebugElement[]): any {\n return debugEls.map((el) => el.nativeElement);\n}\n/**\n * @param {?} element\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryElementChildren(\n element: DebugElement, predicate: Predicate<DebugElement>, matches: DebugElement[]) {\n element.childNodes.forEach(node => {\n if (node instanceof DebugElement) {\n if (predicate(node)) {\n matches.push(node);\n }\n _queryElementChildren(node, predicate, matches);\n }\n });\n}\n/**\n * @param {?} parentNode\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryNodeChildren(\n parentNode: DebugNode, predicate: Predicate<DebugNode>, matches: DebugNode[]) {\n if (parentNode instanceof DebugElement) {\n parentNode.childNodes.forEach(node => {\n if (predicate(node)) {\n matches.push(node);\n }\n if (node instanceof DebugElement) {\n _queryNodeChildren(node, predicate, matches);\n }\n });\n }\n}\n\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\nconst /** @type {?} */ _nativeNodeToDebugNode = new Map<any, DebugNode>();\n/**\n * \\@experimental\n * @param {?} nativeNode\n * @return {?}\n */\nexport function getDebugNode(nativeNode: any): DebugNode|null {\n return _nativeNodeToDebugNode.get(nativeNode) || null;\n}\n/**\n * @return {?}\n */\nexport function getAllDebugNodes(): DebugNode[] {\n return Array.from(_nativeNodeToDebugNode.values());\n}\n/**\n * @param {?} node\n * @return {?}\n */\nexport function indexDebugNode(node: DebugNode) {\n _nativeNodeToDebugNode.set(node.nativeNode, node);\n}\n/**\n * @param {?} node\n * @return {?}\n */\nexport function removeDebugNodeFromIndex(node: DebugNode) {\n _nativeNodeToDebugNode.delete(node.nativeNode);\n}\n\n/**\n * A boolean-valued function over a value, possibly including context information\n * regarding that value's position in an array.\n *\n * @experimental All debugging apis are currently experimental.\n */\nexport interface Predicate<T> { (value: T): boolean; }\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ApplicationRef} from '../application_ref';\nimport {ChangeDetectorRef} from '../change_detection/change_detector_ref';\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ViewRef extends ChangeDetectorRef {\n/**\n * Destroys the view and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroyed() {}\n/**\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {}\n}\n/**\n * Represents an Angular View.\n * \n * <!-- TODO: move the next two paragraphs to the dev guide -->\n * A View is a fundamental building block of the application UI. It is the smallest grouping of\n * Elements which are created and destroyed together.\n * \n * Properties of elements in a View can change, but the structure (number and order) of elements in\n * a View cannot. Changing the structure of Elements can only be done by inserting, moving or\n * removing nested Views via a {\\@link ViewContainerRef}. Each View can contain many View Containers.\n * <!-- /TODO -->\n * \n * ### Example\n * \n * Given this template...\n * \n * ```\n * Count: {{items.length}}\n * <ul>\n * <li *ngFor=\"let item of items\">{{item}}</li>\n * </ul>\n * ```\n * \n * We have two {\\@link TemplateRef}s:\n * \n * Outer {\\@link TemplateRef}:\n * ```\n * Count: {{items.length}}\n * <ul>\n * <ng-template ngFor let-item [ngForOf]=\"items\"></ng-template>\n * </ul>\n * ```\n * \n * Inner {\\@link TemplateRef}:\n * ```\n * <li>{{item}}</li>\n * ```\n * \n * Notice that the original template is broken down into two separate {\\@link TemplateRef}s.\n * \n * The outer/inner {\\@link TemplateRef}s are then assembled into views like so:\n * \n * ```\n * <!-- ViewRef: outer-0 -->\n * Count: 2\n * <ul>\n * <ng-template view-container-ref></ng-template>\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\n * </ul>\n * <!-- /ViewRef: outer-0 -->\n * ```\n * \\@experimental\n * @abstract\n */\nexport abstract class EmbeddedViewRef<C> extends ViewRef {\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\nrootNodes() {}\n}\n\nexport interface InternalViewRef extends ViewRef {\n detachFromAppRef(): void;\n attachToAppRef(appRef: ApplicationRef): void;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di/injector';\nimport {ComponentFactory, ComponentRef} from './component_factory';\nimport {ElementRef} from './element_ref';\nimport {NgModuleRef} from './ng_module_factory';\nimport {TemplateRef} from './template_ref';\nimport {EmbeddedViewRef, ViewRef} from './view_ref';\n/**\n * Represents a container where one or more Views can be attached.\n * \n * The container can contain two kinds of Views. Host Views, created by instantiating a\n * {\\@link Component} via {\\@link #createComponent}, and Embedded Views, created by instantiating an\n * {\\@link TemplateRef Embedded Template} via {\\@link #createEmbeddedView}.\n * \n * The location of the View Container within the containing View is specified by the Anchor\n * `element`. Each View Container can have only one Anchor Element and each Anchor Element can only\n * have a single View Container.\n * \n * Root elements of Views attached to this container become siblings of the Anchor Element in\n * the Rendered View.\n * \n * To access a `ViewContainerRef` of an Element, you can either place a {\\@link Directive} injected\n * with `ViewContainerRef` on the Element, or you obtain it via a {\\@link ViewChild} query.\n * \\@stable\n * @abstract\n */\nexport abstract class ViewContainerRef {\n/**\n * Anchor element that specifies the location of this container in the containing View.\n * <!-- TODO: rename to anchorElement -->\n * @abstract\n * @return {?}\n */\nelement() {}\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\nparentInjector() {}\n/**\n * Destroys all Views in this container.\n * @abstract\n * @return {?}\n */\nclear() {}\n/**\n * Returns the {\\@link ViewRef} for the View located in this container at the specified index.\n * @abstract\n * @param {?} index\n * @return {?}\n */\nget(index: number) {}\n/**\n * Returns the number of Views currently attached to this container.\n * @abstract\n * @return {?}\n */\nlength() {}\n/**\n * Instantiates an Embedded View based on the {\\@link TemplateRef `templateRef`} and inserts it\n * into this container at the specified `index`.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * Returns the {\\@link ViewRef} for the newly created View.\n * @abstract\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\ncreateEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number) {}\n/**\n * Instantiates a single {\\@link Component} and inserts its Host View into this container at the\n * specified `index`.\n * \n * The component is instantiated using its {\\@link ComponentFactory} which can be\n * obtained via {\\@link ComponentFactoryResolver#resolveComponentFactory}.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * You can optionally specify the {\\@link Injector} that will be used as parent for the Component.\n * \n * Returns the {\\@link ComponentRef} of the Host View created for the newly instantiated Component.\n * @abstract\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModule\n * @return {?}\n */\ncreateComponent<C>(\n componentFactory: ComponentFactory<C>, index?: number, injector?: Injector,\n projectableNodes?: any[][], ngModule?: NgModuleRef<any>) {}\n/**\n * Inserts a View identified by a {\\@link ViewRef} into the container at the specified `index`.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * Returns the inserted {\\@link ViewRef}.\n * @abstract\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\ninsert(viewRef: ViewRef, index?: number) {}\n/**\n * Moves a View identified by a {\\@link ViewRef} into the container at the specified `index`.\n * \n * Returns the inserted {\\@link ViewRef}.\n * @abstract\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\nmove(viewRef: ViewRef, currentIndex: number) {}\n/**\n * Returns the index of the View, specified via {\\@link ViewRef}, within the current container or\n * `-1` if this container doesn't contain the View.\n * @abstract\n * @param {?} viewRef\n * @return {?}\n */\nindexOf(viewRef: ViewRef) {}\n/**\n * Destroys a View attached to this container at the specified `index`.\n * \n * If `index` is not specified, the last View in the container will be removed.\n * @abstract\n * @param {?=} index\n * @return {?}\n */\nremove(index?: number) {}\n/**\n * Use along with {\\@link #insert} to move a View within the current container.\n * \n * If the `index` param is omitted, the last {\\@link ViewRef} is detached.\n * @abstract\n * @param {?=} index\n * @return {?}\n */\ndetach(index?: number) {}\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ElementRef} from './element_ref';\nimport {EmbeddedViewRef} from './view_ref';\n/**\n * Represents an Embedded Template that can be used to instantiate Embedded Views.\n * \n * You can access a `TemplateRef`, in two ways. Via a directive placed on a `<ng-template>` element\n * (or directive prefixed with `*`) and have the `TemplateRef` for this Embedded View injected into\n * the constructor of the directive using the `TemplateRef` Token. Alternatively you can query for\n * the `TemplateRef` from a Component or a Directive via {\\@link Query}.\n * \n * To instantiate Embedded Views based on a Template, use\n * {\\@link ViewContainerRef#createEmbeddedView}, which will create the View and attach it to the\n * View Container.\n * \\@stable\n * @abstract\n */\nexport abstract class TemplateRef<C> {\n/**\n * @abstract\n * @return {?}\n */\nelementRef() {}\n/**\n * @abstract\n * @param {?} context\n * @return {?}\n */\ncreateEmbeddedView(context: C) {}\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {Injectable, Optional} from '../di';\n\nimport {Compiler} from './compiler';\nimport {NgModuleFactory} from './ng_module_factory';\nimport {NgModuleFactoryLoader} from './ng_module_factory_loader';\n\nconst /** @type {?} */ _SEPARATOR = '#';\n\nconst /** @type {?} */ FACTORY_CLASS_SUFFIX = 'NgFactory';\ndeclare var System: any;\n/**\n * Configuration for SystemJsNgModuleLoader.\n * token.\n * \n * \\@experimental\n * @abstract\n */\nexport abstract class SystemJsNgModuleLoaderConfig {\n/**\n * Prefix to add when computing the name of the factory module for a given module name.\n */\nfactoryPathPrefix: string;\n/**\n * Suffix to add when computing the name of the factory module for a given module name.\n */\nfactoryPathSuffix: string;\n}\n\nfunction SystemJsNgModuleLoaderConfig_tsickle_Closure_declarations() {\n/**\n * Prefix to add when computing the name of the factory module for a given module name.\n * @type {?}\n */\nSystemJsNgModuleLoaderConfig.prototype.factoryPathPrefix;\n/**\n * Suffix to add when computing the name of the factory module for a given module name.\n * @type {?}\n */\nSystemJsNgModuleLoaderConfig.prototype.factoryPathSuffix;\n}\n\n\nconst /** @type {?} */ DEFAULT_CONFIG: SystemJsNgModuleLoaderConfig = {\n factoryPathPrefix: '',\n factoryPathSuffix: '.ngfactory',\n};\n/**\n * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory\n * \\@experimental\n */\nexport class SystemJsNgModuleLoader implements NgModuleFactoryLoader {\nprivate _config: SystemJsNgModuleLoaderConfig;\n/**\n * @param {?} _compiler\n * @param {?=} config\n */\nconstructor(private _compiler: Compiler, config?: SystemJsNgModuleLoaderConfig) {\n this._config = config || DEFAULT_CONFIG;\n }\n/**\n * @param {?} path\n * @return {?}\n */\nload(path: string): Promise<NgModuleFactory<any>> {\n const /** @type {?} */ offlineMode = this._compiler instanceof Compiler;\n return offlineMode ? this.loadFactory(path) : this.loadAndCompile(path);\n }\n/**\n * @param {?} path\n * @return {?}\n */\nprivate loadAndCompile(path: string): Promise<NgModuleFactory<any>> {\n let [module, exportName] = path.split(_SEPARATOR);\n if (exportName === undefined) {\n exportName = 'default';\n }\n\n return System.import(module)\n .then((module: any) => module[exportName])\n .then((type: any) => checkNotEmpty(type, module, exportName))\n .then((type: any) => this._compiler.compileModuleAsync(type));\n }\n/**\n * @param {?} path\n * @return {?}\n */\nprivate loadFactory(path: string): Promise<NgModuleFactory<any>> {\n let [module, exportName] = path.split(_SEPARATOR);\n let /** @type {?} */ factoryClassSuffix = FACTORY_CLASS_SUFFIX;\n if (exportName === undefined) {\n exportName = 'default';\n factoryClassSuffix = '';\n }\n\n return System.import(this._config.factoryPathPrefix + module + this._config.factoryPathSuffix)\n .then((module: any) => module[exportName + factoryClassSuffix])\n .then((factory: any) => checkNotEmpty(factory, module, exportName));\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Compiler, },\n{type: SystemJsNgModuleLoaderConfig, decorators: [{ type: Optional }, ]},\n];\n}\n\nfunction SystemJsNgModuleLoader_tsickle_Closure_declarations() {\n/** @type {?} */\nSystemJsNgModuleLoader.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nSystemJsNgModuleLoader.ctorParameters;\n/** @type {?} */\nSystemJsNgModuleLoader.prototype._config;\n/** @type {?} */\nSystemJsNgModuleLoader.prototype._compiler;\n}\n\n/**\n * @param {?} value\n * @param {?} modulePath\n * @param {?} exportName\n * @return {?}\n */\nfunction checkNotEmpty(value: any, modulePath: string, exportName: string): any {\n if (!value) {\n throw new Error(`Cannot find '${exportName}' in '${modulePath}'`);\n }\n return value;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Observable} from 'rxjs/Observable';\n\nimport {EventEmitter} from '../event_emitter';\nimport {getSymbolIterator} from '../util';\n/**\n * An unmodifiable list of items that Angular keeps up to date when the state\n * of the application changes.\n * \n * The type of object that {\\@link ViewChildren}, {\\@link ContentChildren}, and {\\@link QueryList}\n * provide.\n * \n * Implements an iterable interface, therefore it can be used in both ES6\n * javascript `for (var i of items)` loops as well as in Angular templates with\n * `*ngFor=\"let i of myList\"`.\n * \n * Changes can be observed by subscribing to the changes `Observable`.\n * \n * NOTE: In the future this class will implement an `Observable` interface.\n * \n * ### Example ([live demo](http://plnkr.co/edit/RX8sJnQYl9FWuSCWme5z?p=preview))\n * ```typescript\n * \\@Component({...}) \n * class Container {\n * \\@ViewChildren(Item) items:QueryList<Item>;\n * }\n * ```\n * \\@stable\n */\nexport class QueryList<T>/* implements Iterable<T> */ {\nprivate _dirty = true;\nprivate _results: Array<T> = [];\nprivate _emitter = new EventEmitter();\n/**\n * @return {?}\n */\nget changes(): Observable<any> { return this._emitter; }\n/**\n * @return {?}\n */\nget length(): number { return this._results.length; }\n/**\n * @return {?}\n */\nget first(): T { return this._results[0]; }\n/**\n * @return {?}\n */\nget last(): T { return this._results[this.length - 1]; }\n/**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n * @template U\n * @param {?} fn\n * @return {?}\n */\nmap<U>(fn: (item: T, index: number, array: T[]) => U): U[] { return this._results.map(fn); }\n/**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n * @param {?} fn\n * @return {?}\n */\nfilter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\n return this._results.filter(fn);\n }\n/**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n * @param {?} fn\n * @return {?}\n */\nfind(fn: (item: T, index: number, array: T[]) => boolean): T|undefined {\n return this._results.find(fn);\n }\n/**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\nreduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U {\n return this._results.reduce(fn, init);\n }\n/**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n * @param {?} fn\n * @return {?}\n */\nforEach(fn: (item: T, index: number, array: T[]) => void): void { this._results.forEach(fn); }\n/**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n * @param {?} fn\n * @return {?}\n */\nsome(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return this._results.some(fn);\n }\n/**\n * @return {?}\n */\ntoArray(): T[] { return this._results.slice(); }\n/**\n * @return {?}\n */\n[getSymbolIterator()](): Iterator<T> { return ( /** @type {?} */((this._results as any)))[getSymbolIterator()](); }\n/**\n * @return {?}\n */\ntoString(): string { return this._results.toString(); }\n/**\n * @param {?} res\n * @return {?}\n */\nreset(res: Array<T|any[]>): void {\n this._results = flatten(res);\n this._dirty = false;\n }\n/**\n * @return {?}\n */\nnotifyOnChanges(): void { this._emitter.emit(this); }\n/**\n * internal\n * @return {?}\n */\nsetDirty() { this._dirty = true; }\n/**\n * internal\n * @return {?}\n */\nget dirty() { return this._dirty; }\n}\n\nfunction QueryList_tsickle_Closure_declarations() {\n/** @type {?} */\nQueryList.prototype._dirty;\n/** @type {?} */\nQueryList.prototype._results;\n/** @type {?} */\nQueryList.prototype._emitter;\n}\n\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten<T>(list: Array<T|T[]>): T[] {\n return list.reduce((flat: any[], item: T | T[]): T[] => {\n const /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return ( /** @type {?} */((<T[]>flat))).concat(flatItem);\n }, []);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {NgModuleFactory} from './ng_module_factory';\n/**\n * Used to load ng module factories.\n * \\@stable\n * @abstract\n */\nexport abstract class NgModuleFactoryLoader {\n/**\n * @abstract\n * @param {?} path\n * @return {?}\n */\nload(path: string) {}\n}\n\nlet /** @type {?} */ moduleFactories = new Map<string, NgModuleFactory<any>>();\n/**\n * Registers a loaded module. Should only be called from generated NgModuleFactory code.\n * \\@experimental\n * @param {?} id\n * @param {?} factory\n * @return {?}\n */\nexport function registerModuleFactory(id: string, factory: NgModuleFactory<any>) {\n const /** @type {?} */ existing = moduleFactories.get(id);\n if (existing) {\n throw new Error(`Duplicate module registered for ${id\n } - ${existing.moduleType.name} vs ${factory.moduleType.name}`);\n }\n moduleFactories.set(id, factory);\n}\n/**\n * @return {?}\n */\nexport function clearModulesForTest() {\n moduleFactories = new Map<string, NgModuleFactory<any>>();\n}\n/**\n * Returns the NgModuleFactory with the given id, if it exists and has been loaded.\n * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module\n * cannot be found.\n * \\@experimental\n * @param {?} id\n * @return {?}\n */\nexport function getModuleFactory(id: string): NgModuleFactory<any> {\n const /** @type {?} */ factory = moduleFactories.get(id);\n if (!factory) throw new Error(`No module with ID ${id} loaded`);\n return factory;\n}\n","\nexport class ElementRef {\n/**\n * The underlying native element or `null` if direct access to native elements is not supported\n * (e.g. when the application runs in a web worker).\n * \n * <div class=\"callout is-critical\">\n * <header>Use with caution</header>\n * <p>\n * Use this API as the last resort when direct access to DOM is needed. Use templating and\n * data-binding provided by Angular instead. Alternatively you take a look at {\\@link Renderer}\n * which provides API that can safely be used even when direct access to native elements is not\n * supported.\n * </p>\n * <p>\n * Relying on direct DOM access creates tight coupling between your application and rendering\n * layers which will make it impossible to separate the two and deploy your application into a\n * web worker.\n * </p>\n * </div>\n * \\@stable\n */\npublic nativeElement: any;\n/**\n * @param {?} nativeElement\n */\nconstructor(nativeElement: any) { this.nativeElement = nativeElement; }\n}\n\nfunction ElementRef_tsickle_Closure_declarations() {\n/**\n * The underlying native element or `null` if direct access to native elements is not supported\n * (e.g. when the application runs in a web worker).\n * \n * <div class=\"callout is-critical\">\n * <header>Use with caution</header>\n * <p>\n * Use this API as the last resort when direct access to DOM is needed. Use templating and\n * data-binding provided by Angular instead. Alternatively you take a look at {\\@link Renderer}\n * which provides API that can safely be used even when direct access to native elements is not\n * supported.\n * </p>\n * <p>\n * Relying on direct DOM access creates tight coupling between your application and rendering\n * layers which will make it impossible to separate the two and deploy your application into a\n * web worker.\n * </p>\n * </div>\n * \\@stable\n * @type {?}\n */\nElementRef.prototype.nativeElement;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {InjectionToken, Injector} from '../di';\nimport {ViewEncapsulation} from '../metadata/view';\n/**\n * @deprecated Use `RendererType2` (and `Renderer2`) instead.\n */\nexport class RenderComponentType {\n/**\n * @param {?} id\n * @param {?} templateUrl\n * @param {?} slotCount\n * @param {?} encapsulation\n * @param {?} styles\n * @param {?} animations\n */\nconstructor(\npublic id: string,\npublic templateUrl: string,\npublic slotCount: number,\npublic encapsulation: ViewEncapsulation,\npublic styles: Array<string|any[]>,\npublic animations: any) {}\n}\n\nfunction RenderComponentType_tsickle_Closure_declarations() {\n/** @type {?} */\nRenderComponentType.prototype.id;\n/** @type {?} */\nRenderComponentType.prototype.templateUrl;\n/** @type {?} */\nRenderComponentType.prototype.slotCount;\n/** @type {?} */\nRenderComponentType.prototype.encapsulation;\n/** @type {?} */\nRenderComponentType.prototype.styles;\n/** @type {?} */\nRenderComponentType.prototype.animations;\n}\n\n/**\n * @deprecated Debug info is handeled internally in the view engine now.\n * @abstract\n */\nexport abstract class RenderDebugInfo {\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponent() {}\n/**\n * @abstract\n * @return {?}\n */\nproviderTokens() {}\n/**\n * @abstract\n * @return {?}\n */\nreferences() {}\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\nsource() {}\n}\n\n/**\n * @deprecated Use the `Renderer2` instead.\n */\nexport interface DirectRenderer {\n remove(node: any): void;\n appendChild(node: any, parent: any): void;\n insertBefore(node: any, refNode: any): void;\n nextSibling(node: any): any;\n parentElement(node: any): any;\n}\n/**\n * @deprecated Use the `Renderer2` instead.\n * @abstract\n */\nexport abstract class Renderer {\n/**\n * @abstract\n * @param {?} selectorOrNode\n * @param {?=} debugInfo\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} name\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateElement(parentElement: any, name: string, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} hostElement\n * @return {?}\n */\ncreateViewRoot(hostElement: any) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateTemplateAnchor(parentElement: any, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateText(parentElement: any, value: string, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\nprojectNodes(parentElement: any, nodes: any[]) {}\n/**\n * @abstract\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\nattachViewAfter(node: any, viewRootNodes: any[]) {}\n/**\n * @abstract\n * @param {?} viewRootNodes\n * @return {?}\n */\ndetachView(viewRootNodes: any[]) {}\n/**\n * @abstract\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\ndestroyView(hostElement: any, viewAllNodes: any[]) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlisten(renderElement: any, name: string, callback: Function) {}\n/**\n * @abstract\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlistenGlobal(target: string, name: string, callback: Function) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetElementProperty(renderElement: any, propertyName: string, propertyValue: any) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} attributeName\n * @param {?} attributeValue\n * @return {?}\n */\nsetElementAttribute(renderElement: any, attributeName: string, attributeValue: string) {}\n/**\n * Used only in debug mode to serialize property changes to dom nodes as attributes.\n * @abstract\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetBindingDebugInfo(renderElement: any, propertyName: string, propertyValue: string) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\nsetElementClass(renderElement: any, className: string, isAdd: boolean) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\nsetElementStyle(renderElement: any, styleName: string, styleValue: string) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?=} args\n * @return {?}\n */\ninvokeElementMethod(renderElement: any, methodName: string, args?: any[]) {}\n/**\n * @abstract\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\nsetText(renderNode: any, text: string) {}\n/**\n * @abstract\n * @param {?} element\n * @param {?} startingStyles\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @return {?}\n */\nanimate(\n element: any, startingStyles: any, keyframes: any[], duration: number, delay: number,\n easing: string, previousPlayers?: any[]) {}\n}\n\nexport const /** @type {?} */ Renderer2Interceptor = new InjectionToken<Renderer2[]>('Renderer2Interceptor');\n/**\n * Injectable service that provides a low-level interface for modifying the UI.\n * \n * Use this service to bypass Angular's templating and make custom UI changes that can't be\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\n * not statically known, use {\\@link Renderer#setElementProperty} or {\\@link\n * Renderer#setElementAttribute}\n * respectively.\n * \n * If you are implementing a custom renderer, you must implement this interface.\n * \n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\n * \n * @deprecated Use `RendererFactory2` instead.\n * @abstract\n */\nexport abstract class RootRenderer {\n/**\n * @abstract\n * @param {?} componentType\n * @return {?}\n */\nrenderComponent(componentType: RenderComponentType) {}\n}\n\n/**\n * @experimental\n */\nexport interface RendererType2 {\n id: string;\n encapsulation: ViewEncapsulation;\n styles: (string|any[])[];\n data: {[kind: string]: any};\n}\n/**\n * \\@experimental\n * @abstract\n */\nexport abstract class RendererFactory2 {\n/**\n * @abstract\n * @param {?} hostElement\n * @param {?} type\n * @return {?}\n */\ncreateRenderer(hostElement: any, type: RendererType2|null) {}\n/**\n * @abstract\n * @return {?}\n */\nbegin?() {}\n/**\n * @abstract\n * @return {?}\n */\nend?() {}\n/**\n * @abstract\n * @return {?}\n */\nwhenRenderingDone?() {}\n}\nexport type RendererStyleFlags2 = number;\nexport let RendererStyleFlags2: any = {};\nRendererStyleFlags2.Important = 1;\nRendererStyleFlags2.DashCase = 2;\nRendererStyleFlags2[RendererStyleFlags2.Important] = \"Important\";\nRendererStyleFlags2[RendererStyleFlags2.DashCase] = \"DashCase\";\n\n/**\n * \\@experimental\n * @abstract\n */\nexport abstract class Renderer2 {\n/**\n * This field can be used to store arbitrary data on this renderer instance.\n * This is useful for renderers that delegate to other renderers.\n * @abstract\n * @return {?}\n */\ndata() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\ncreateElement(name: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} value\n * @return {?}\n */\ncreateComment(value: string) {}\n/**\n * @abstract\n * @param {?} value\n * @return {?}\n */\ncreateText(value: string) {}\n/**\n * This property is allowed to be null / undefined,\n * in which case the view engine won't call it.\n * This is used as a performance optimization for production mode.\n */\ndestroyNode: ((node: any) => void)|null;\n/**\n * @abstract\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\nappendChild(parent: any, newChild: any) {}\n/**\n * @abstract\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\ninsertBefore(parent: any, newChild: any, refChild: any) {}\n/**\n * @abstract\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any) {}\n/**\n * @abstract\n * @param {?} selectorOrNode\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any) {}\n/**\n * Attention: On WebWorkers, this will always return a value,\n * as we are asking for a result synchronously. I.e.\n * the caller can't rely on checking whether this is null or not.\n * @abstract\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any) {}\n/**\n * Attention: On WebWorkers, this will always return a value,\n * as we are asking for a result synchronously. I.e.\n * the caller can't rely on checking whether this is null or not.\n * @abstract\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\nsetAttribute(el: any, name: string, value: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\nremoveAttribute(el: any, name: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\naddClass(el: any, name: string) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nremoveClass(el: any, name: string) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?=} flags\n * @return {?}\n */\nsetStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} style\n * @param {?=} flags\n * @return {?}\n */\nremoveStyle(el: any, style: string, flags?: RendererStyleFlags2) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any) {}\n/**\n * @abstract\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string) {}\n/**\n * @abstract\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\nlisten(\n target: 'window'|'document'|'body'|any, eventName: string,\n callback: (event: any) => boolean | void) {}\n}\n\nfunction Renderer2_tsickle_Closure_declarations() {\n/**\n * This property is allowed to be null / undefined,\n * in which case the view engine won't call it.\n * This is used as a performance optimization for production mode.\n * @type {?}\n */\nRenderer2.prototype.destroyNode;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Public API for Zone\nexport {NgZone} from './zone/ng_zone';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Observable} from 'rxjs/Observable';\nimport {Observer} from 'rxjs/Observer';\nimport {Subscription} from 'rxjs/Subscription';\nimport {merge} from 'rxjs/observable/merge';\nimport {share} from 'rxjs/operator/share';\n\nimport {ErrorHandler} from '../src/error_handler';\nimport {scheduleMicroTask, stringify} from '../src/util';\nimport {isPromise} from '../src/util/lang';\n\nimport {ApplicationInitStatus} from './application_init';\nimport {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens';\nimport {Console} from './console';\nimport {Injectable, InjectionToken, Injector, Provider, ReflectiveInjector} from './di';\nimport {CompilerFactory, CompilerOptions} from './linker/compiler';\nimport {ComponentFactory, ComponentRef} from './linker/component_factory';\nimport {ComponentFactoryBoundToModule, ComponentFactoryResolver} from './linker/component_factory_resolver';\nimport {InternalNgModuleRef, NgModuleFactory, NgModuleRef} from './linker/ng_module_factory';\nimport {InternalViewRef, ViewRef} from './linker/view_ref';\nimport {WtfScopeFn, wtfCreateScope, wtfLeave} from './profile/profile';\nimport {Testability, TestabilityRegistry} from './testability/testability';\nimport {Type} from './type';\nimport {NgZone} from './zone/ng_zone';\n\nlet /** @type {?} */ _devMode: boolean = true;\nlet /** @type {?} */ _runModeLocked: boolean = false;\nlet /** @type {?} */ _platform: PlatformRef;\n\nexport const /** @type {?} */ ALLOW_MULTIPLE_PLATFORMS = new InjectionToken<boolean>('AllowMultipleToken');\n/**\n * Disable Angular's development mode, which turns off assertions and other\n * checks within the framework.\n * \n * One important assertion this disables verifies that a change detection pass\n * does not result in additional changes to any bindings (also known as\n * unidirectional data flow).\n * \n * \\@stable\n * @return {?}\n */\nexport function enableProdMode(): void {\n if (_runModeLocked) {\n throw new Error('Cannot enable prod mode after platform setup.');\n }\n _devMode = false;\n}\n/**\n * Returns whether Angular is in development mode. After called once,\n * the value is locked and won't change any more.\n * \n * By default, this is true, unless a user calls `enableProdMode` before calling this.\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nexport function isDevMode(): boolean {\n _runModeLocked = true;\n return _devMode;\n}\n/**\n * A token for third-party components that can register themselves with NgProbe.\n * \n * \\@experimental\n */\nexport class NgProbeToken {\n/**\n * @param {?} name\n * @param {?} token\n */\nconstructor(public name: string,\npublic token: any) {}\n}\n\nfunction NgProbeToken_tsickle_Closure_declarations() {\n/** @type {?} */\nNgProbeToken.prototype.name;\n/** @type {?} */\nNgProbeToken.prototype.token;\n}\n\n/**\n * Creates a platform.\n * Platforms have to be eagerly created via this function.\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} injector\n * @return {?}\n */\nexport function createPlatform(injector: Injector): PlatformRef {\n if (_platform && !_platform.destroyed &&\n !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n throw new Error(\n 'There can be only one platform. Destroy the previous one to create a new one.');\n }\n _platform = injector.get(PlatformRef);\n const /** @type {?} */ inits = injector.get(PLATFORM_INITIALIZER, null);\n if (inits) inits.forEach((init: any) => init());\n return _platform;\n}\n/**\n * Creates a factory for a platform\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} parentPlatformFactory\n * @param {?} name\n * @param {?=} providers\n * @return {?}\n */\nexport function createPlatformFactory(\n parentPlatformFactory: ((extraProviders?: Provider[]) => PlatformRef) | null, name: string,\n providers: Provider[] = []): (extraProviders?: Provider[]) => PlatformRef {\n const /** @type {?} */ marker = new InjectionToken(`Platform: ${name}`);\n return (extraProviders: Provider[] = []) => {\n let /** @type {?} */ platform = getPlatform();\n if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n if (parentPlatformFactory) {\n parentPlatformFactory(\n providers.concat(extraProviders).concat({provide: marker, useValue: true}));\n } else {\n createPlatform(ReflectiveInjector.resolveAndCreate(\n providers.concat(extraProviders).concat({provide: marker, useValue: true})));\n }\n }\n return assertPlatform(marker);\n };\n}\n/**\n * Checks that there currently is a platform which contains the given token as a provider.\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} requiredToken\n * @return {?}\n */\nexport function assertPlatform(requiredToken: any): PlatformRef {\n const /** @type {?} */ platform = getPlatform();\n\n if (!platform) {\n throw new Error('No platform exists!');\n }\n\n if (!platform.injector.get(requiredToken, null)) {\n throw new Error(\n 'A platform with a different configuration has been created. Please destroy it first.');\n }\n\n return platform;\n}\n/**\n * Destroy the existing platform.\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nexport function destroyPlatform(): void {\n if (_platform && !_platform.destroyed) {\n _platform.destroy();\n }\n}\n/**\n * Returns the current platform.\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nexport function getPlatform(): PlatformRef|null {\n return _platform && !_platform.destroyed ? _platform : null;\n}\n/**\n * The Angular platform is the entry point for Angular on a web page. Each page\n * has exactly one platform, and services (such as reflection) which are common\n * to every Angular application running on the page are bound in its scope.\n * \n * A page's platform is initialized implicitly when a platform is created via a platform factory\n * (e.g. {\\@link platformBrowser}), or explicitly by calling the {\\@link createPlatform} function.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class PlatformRef {\n/**\n * Creates an instance of an `\\@NgModule` for the given platform\n * for offline compilation.\n * \n * ## Simple Example\n * \n * ```typescript\n * my_module.ts:\n * \n * \\@NgModule({ \n * imports: [BrowserModule]\n * })\n * class MyModule {}\n * \n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '\\@angular/platform-browser';\n * \n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n * \n * \\@experimental APIs related to application bootstrap are currently under review.\n * @abstract\n * @template M\n * @param {?} moduleFactory\n * @return {?}\n */\nbootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>) {}\n/**\n * Creates an instance of an `\\@NgModule` for a given platform using the given runtime compiler.\n * \n * ## Simple Example\n * \n * ```typescript\n * \\@NgModule({ \n * imports: [BrowserModule]\n * })\n * class MyModule {}\n * \n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * \\@stable\n * @abstract\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\nbootstrapModule<M>(\n moduleType: Type<M>,\n compilerOptions?: CompilerOptions|CompilerOptions[]) {}\n/**\n * Register a listener to be called when the platform is disposed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void) {}\n/**\n * Retrieve the platform {\\@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * Destroy the Angular platform and all Angular applications on the page.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroyed() {}\n}\n/**\n * @param {?} errorHandler\n * @param {?} callback\n * @return {?}\n */\nfunction _callAndReportToErrorHandler(errorHandler: ErrorHandler, callback: () => any): any {\n try {\n const /** @type {?} */ result = callback();\n if (isPromise(result)) {\n return result.catch((e: any) => {\n errorHandler.handleError(e);\n // rethrow as the exception handler might not do it\n throw e;\n });\n }\n\n return result;\n } catch ( /** @type {?} */e) {\n errorHandler.handleError(e);\n // rethrow as the exception handler might not do it\n throw e;\n }\n}\n/**\n * workaround https://github.com/angular/tsickle/issues/350\n * @suppress {checkTypes}\n */\nexport class PlatformRef_ extends PlatformRef {\nprivate _modules: NgModuleRef<any>[] = [];\nprivate _destroyListeners: Function[] = [];\nprivate _destroyed: boolean = false;\n/**\n * @param {?} _injector\n */\nconstructor(private _injector: Injector) { super(); }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void): void { this._destroyListeners.push(callback); }\n/**\n * @return {?}\n */\nget injector(): Injector { return this._injector; }\n/**\n * @return {?}\n */\nget destroyed() { return this._destroyed; }\n/**\n * @return {?}\n */\ndestroy() {\n if (this._destroyed) {\n throw new Error('The platform has already been destroyed!');\n }\n this._modules.slice().forEach(module => module.destroy());\n this._destroyListeners.forEach(listener => listener());\n this._destroyed = true;\n }\n/**\n * @template M\n * @param {?} moduleFactory\n * @return {?}\n */\nbootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>): Promise<NgModuleRef<M>> {\n return this._bootstrapModuleFactoryWithZone(moduleFactory);\n }\n/**\n * @template M\n * @param {?} moduleFactory\n * @param {?=} ngZone\n * @return {?}\n */\nprivate _bootstrapModuleFactoryWithZone<M>(moduleFactory: NgModuleFactory<M>, ngZone?: NgZone):\n Promise<NgModuleRef<M>> {\n // Note: We need to create the NgZone _before_ we instantiate the module,\n // as instantiating the module creates some providers eagerly.\n // So we create a mini parent injector that just contains the new NgZone and\n // pass that as parent to the NgModuleFactory.\n if (!ngZone) ngZone = new NgZone({enableLongStackTrace: isDevMode()});\n // Attention: Don't use ApplicationRef.run here,\n // as we want to be sure that all possible constructor calls are inside `ngZone.run`!\n return ngZone.run(() => {\n const /** @type {?} */ ngZoneInjector =\n ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector);\n const /** @type {?} */ moduleRef = /** @type {?} */(( <InternalNgModuleRef<M>>moduleFactory.create(ngZoneInjector)));\n const /** @type {?} */ exceptionHandler: ErrorHandler = moduleRef.injector.get(ErrorHandler, null);\n if (!exceptionHandler) {\n throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');\n }\n moduleRef.onDestroy(() => remove(this._modules, moduleRef)); /** @type {?} */((\n ngZone)).onError.subscribe({next: (error: any) => { exceptionHandler.handleError(error); }});\n return _callAndReportToErrorHandler(exceptionHandler, () => {\n const /** @type {?} */ initStatus: ApplicationInitStatus = moduleRef.injector.get(ApplicationInitStatus);\n initStatus.runInitializers();\n return initStatus.donePromise.then(() => {\n this._moduleDoBootstrap(moduleRef);\n return moduleRef;\n });\n });\n });\n }\n/**\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\nbootstrapModule<M>(moduleType: Type<M>, compilerOptions: CompilerOptions|CompilerOptions[] = []):\n Promise<NgModuleRef<M>> {\n return this._bootstrapModuleWithZone(moduleType, compilerOptions);\n }\n/**\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @param {?=} ngZone\n * @return {?}\n */\nprivate _bootstrapModuleWithZone<M>(\n moduleType: Type<M>, compilerOptions: CompilerOptions|CompilerOptions[] = [],\n ngZone?: NgZone): Promise<NgModuleRef<M>> {\n const /** @type {?} */ compilerFactory: CompilerFactory = this.injector.get(CompilerFactory);\n const /** @type {?} */ compiler = compilerFactory.createCompiler(\n Array.isArray(compilerOptions) ? compilerOptions : [compilerOptions]);\n\n return compiler.compileModuleAsync(moduleType)\n .then((moduleFactory) => this._bootstrapModuleFactoryWithZone(moduleFactory, ngZone));\n }\n/**\n * @param {?} moduleRef\n * @return {?}\n */\nprivate _moduleDoBootstrap(moduleRef: InternalNgModuleRef<any>): void {\n const /** @type {?} */ appRef = /** @type {?} */(( moduleRef.injector.get(ApplicationRef) as ApplicationRef));\n if (moduleRef._bootstrapComponents.length > 0) {\n moduleRef._bootstrapComponents.forEach(f => appRef.bootstrap(f));\n } else if (moduleRef.instance.ngDoBootstrap) {\n moduleRef.instance.ngDoBootstrap(appRef);\n } else {\n throw new Error(\n `The module ${stringify(moduleRef.instance.constructor)} was bootstrapped, but it does not declare \"@NgModule.bootstrap\" components nor a \"ngDoBootstrap\" method. ` +\n `Please define one of these.`);\n }\n this._modules.push(moduleRef);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Injector, },\n];\n}\n\nfunction PlatformRef__tsickle_Closure_declarations() {\n/** @type {?} */\nPlatformRef_.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatformRef_.ctorParameters;\n/** @type {?} */\nPlatformRef_.prototype._modules;\n/** @type {?} */\nPlatformRef_.prototype._destroyListeners;\n/** @type {?} */\nPlatformRef_.prototype._destroyed;\n/** @type {?} */\nPlatformRef_.prototype._injector;\n}\n\n/**\n * A reference to an Angular application running on a page.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class ApplicationRef {\n/**\n * Bootstrap a new component at the root level of the application.\n * \n * ### Bootstrap process\n * \n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n * \n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n * \n * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @abstract\n * @template C\n * @param {?} componentFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\nbootstrap<C>(\n componentFactory: ComponentFactory<C>|Type<C>,\n rootSelectorOrNode?: string|any) {}\n/**\n * Invoke this method to explicitly process change detection and its side-effects.\n * \n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n * @abstract\n * @return {?}\n */\ntick() {}\n/**\n * Get a list of component types registered to this application.\n * This list is populated even before the component is created.\n * @abstract\n * @return {?}\n */\ncomponentTypes() {}\n/**\n * Get a list of components registered to this application.\n * @abstract\n * @return {?}\n */\ncomponents() {}\n/**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n * @abstract\n * @param {?} view\n * @return {?}\n */\nattachView(view: ViewRef) {}\n/**\n * Detaches a view from dirty checking again.\n * @abstract\n * @param {?} view\n * @return {?}\n */\ndetachView(view: ViewRef) {}\n/**\n * Returns the number of attached views.\n * @abstract\n * @return {?}\n */\nviewCount() {}\n/**\n * Returns an Observable that indicates when the application is stable or unstable.\n * @abstract\n * @return {?}\n */\nisStable() {}\n}\n/**\n * workaround https://github.com/angular/tsickle/issues/350\n * @suppress {checkTypes}\n */\nexport class ApplicationRef_ extends ApplicationRef {\n/**\n * \\@internal\n */\nstatic _tickScope: WtfScopeFn = wtfCreateScope('ApplicationRef#tick()');\nprivate _bootstrapListeners: ((compRef: ComponentRef<any>) => void)[] = [];\nprivate _rootComponents: ComponentRef<any>[] = [];\nprivate _rootComponentTypes: Type<any>[] = [];\nprivate _views: InternalViewRef[] = [];\nprivate _runningTick: boolean = false;\nprivate _enforceNoNewChanges: boolean = false;\nprivate _isStable: Observable<boolean>;\nprivate _stable = true;\n/**\n * @param {?} _zone\n * @param {?} _console\n * @param {?} _injector\n * @param {?} _exceptionHandler\n * @param {?} _componentFactoryResolver\n * @param {?} _initStatus\n */\nconstructor(\nprivate _zone: NgZone,\nprivate _console: Console,\nprivate _injector: Injector,\nprivate _exceptionHandler: ErrorHandler,\nprivate _componentFactoryResolver: ComponentFactoryResolver,\nprivate _initStatus: ApplicationInitStatus) {\n super();\n this._enforceNoNewChanges = isDevMode();\n\n this._zone.onMicrotaskEmpty.subscribe(\n {next: () => { this._zone.run(() => { this.tick(); }); }});\n\n const isCurrentlyStable = new Observable<boolean>((observer: Observer<boolean>) => {\n this._stable = this._zone.isStable && !this._zone.hasPendingMacrotasks &&\n !this._zone.hasPendingMicrotasks;\n this._zone.runOutsideAngular(() => {\n observer.next(this._stable);\n observer.complete();\n });\n });\n\n const isStable = new Observable<boolean>((observer: Observer<boolean>) => {\n const stableSub: Subscription = this._zone.onStable.subscribe(() => {\n NgZone.assertNotInAngularZone();\n\n // Check whether there are no pending macro/micro tasks in the next tick\n // to allow for NgZone to update the state.\n scheduleMicroTask(() => {\n if (!this._stable && !this._zone.hasPendingMacrotasks &&\n !this._zone.hasPendingMicrotasks) {\n this._stable = true;\n observer.next(true);\n }\n });\n });\n\n const unstableSub: Subscription = this._zone.onUnstable.subscribe(() => {\n NgZone.assertInAngularZone();\n if (this._stable) {\n this._stable = false;\n this._zone.runOutsideAngular(() => { observer.next(false); });\n }\n });\n\n return () => {\n stableSub.unsubscribe();\n unstableSub.unsubscribe();\n };\n });\n\n this._isStable = merge(isCurrentlyStable, share.call(isStable));\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\nattachView(viewRef: ViewRef): void {\n const /** @type {?} */ view = ( /** @type {?} */((viewRef as InternalViewRef)));\n this._views.push(view);\n view.attachToAppRef(this);\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\ndetachView(viewRef: ViewRef): void {\n const /** @type {?} */ view = ( /** @type {?} */((viewRef as InternalViewRef)));\n remove(this._views, view);\n view.detachFromAppRef();\n }\n/**\n * @template C\n * @param {?} componentOrFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\nbootstrap<C>(componentOrFactory: ComponentFactory<C>|Type<C>, rootSelectorOrNode?: string|any):\n ComponentRef<C> {\n if (!this._initStatus.done) {\n throw new Error(\n 'Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');\n }\n let /** @type {?} */ componentFactory: ComponentFactory<C>;\n if (componentOrFactory instanceof ComponentFactory) {\n componentFactory = componentOrFactory;\n } else {\n componentFactory = /** @type {?} */((\n this._componentFactoryResolver.resolveComponentFactory(componentOrFactory)));\n }\n this._rootComponentTypes.push(componentFactory.componentType);\n\n // Create a factory associated with the current module if it's not bound to some other\n const /** @type {?} */ ngModule = componentFactory instanceof ComponentFactoryBoundToModule ?\n null :\n this._injector.get(NgModuleRef);\n const /** @type {?} */ selectorOrNode = rootSelectorOrNode || componentFactory.selector;\n const /** @type {?} */ compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);\n\n compRef.onDestroy(() => { this._unloadComponent(compRef); });\n const /** @type {?} */ testability = compRef.injector.get(Testability, null);\n if (testability) {\n compRef.injector.get(TestabilityRegistry)\n .registerApplication(compRef.location.nativeElement, testability);\n }\n\n this._loadComponent(compRef);\n if (isDevMode()) {\n this._console.log(\n `Angular is running in the development mode. Call enableProdMode() to enable the production mode.`);\n }\n return compRef;\n }\n/**\n * @param {?} componentRef\n * @return {?}\n */\nprivate _loadComponent(componentRef: ComponentRef<any>): void {\n this.attachView(componentRef.hostView);\n this.tick();\n this._rootComponents.push(componentRef);\n // Get the listeners lazily to prevent DI cycles.\n const /** @type {?} */ listeners =\n this._injector.get(APP_BOOTSTRAP_LISTENER, []).concat(this._bootstrapListeners);\n listeners.forEach((listener) => listener(componentRef));\n }\n/**\n * @param {?} componentRef\n * @return {?}\n */\nprivate _unloadComponent(componentRef: ComponentRef<any>): void {\n this.detachView(componentRef.hostView);\n remove(this._rootComponents, componentRef);\n }\n/**\n * @return {?}\n */\ntick(): void {\n if (this._runningTick) {\n throw new Error('ApplicationRef.tick is called recursively');\n }\n\n const /** @type {?} */ scope = ApplicationRef_._tickScope();\n try {\n this._runningTick = true;\n this._views.forEach((view) => view.detectChanges());\n if (this._enforceNoNewChanges) {\n this._views.forEach((view) => view.checkNoChanges());\n }\n } catch ( /** @type {?} */e) {\n // Attention: Don't rethrow as it could cancel subscriptions to Observables!\n this._exceptionHandler.handleError(e);\n } finally {\n this._runningTick = false;\n wtfLeave(scope);\n }\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n // TODO(alxhub): Dispose of the NgZone.\n this._views.slice().forEach((view) => view.destroy());\n }\n/**\n * @return {?}\n */\nget viewCount() { return this._views.length; }\n/**\n * @return {?}\n */\nget componentTypes(): Type<any>[] { return this._rootComponentTypes; }\n/**\n * @return {?}\n */\nget components(): ComponentRef<any>[] { return this._rootComponents; }\n/**\n * @return {?}\n */\nget isStable(): Observable<boolean> { return this._isStable; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: Console, },\n{type: Injector, },\n{type: ErrorHandler, },\n{type: ComponentFactoryResolver, },\n{type: ApplicationInitStatus, },\n];\n}\n\nfunction ApplicationRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nApplicationRef_._tickScope;\n/** @type {?} */\nApplicationRef_.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationRef_.ctorParameters;\n/** @type {?} */\nApplicationRef_.prototype._bootstrapListeners;\n/** @type {?} */\nApplicationRef_.prototype._rootComponents;\n/** @type {?} */\nApplicationRef_.prototype._rootComponentTypes;\n/** @type {?} */\nApplicationRef_.prototype._views;\n/** @type {?} */\nApplicationRef_.prototype._runningTick;\n/** @type {?} */\nApplicationRef_.prototype._enforceNoNewChanges;\n/** @type {?} */\nApplicationRef_.prototype._isStable;\n/** @type {?} */\nApplicationRef_.prototype._stable;\n/** @type {?} */\nApplicationRef_.prototype._zone;\n/** @type {?} */\nApplicationRef_.prototype._console;\n/** @type {?} */\nApplicationRef_.prototype._injector;\n/** @type {?} */\nApplicationRef_.prototype._exceptionHandler;\n/** @type {?} */\nApplicationRef_.prototype._componentFactoryResolver;\n/** @type {?} */\nApplicationRef_.prototype._initStatus;\n}\n\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove<T>(list: T[], el: T): void {\n const /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable} from '../di';\nimport {scheduleMicroTask} from '../util';\nimport {NgZone} from '../zone/ng_zone';\n\n/**\n * Testability API.\n * `declare` keyword causes tsickle to generate externs, so these methods are\n * not renamed by Closure Compiler.\n * @experimental\n */\nexport declare interface PublicTestability {\n isStable(): boolean;\n whenStable(callback: Function): void;\n findProviders(using: any, provider: string, exactMatch: boolean): any[];\n}\n/**\n * The Testability service provides testing hooks that can be accessed from\n * the browser and by services such as Protractor. Each bootstrapped Angular\n * application on the page will have an instance of Testability.\n * \\@experimental\n */\nexport class Testability implements PublicTestability {\n/**\n * \\@internal\n */\n_pendingCount: number = 0;\n/**\n * \\@internal\n */\n_isZoneStable: boolean = true;\n/**\n * Whether any work was done since the last 'whenStable' callback. This is\n * useful to detect if this could have potentially destabilized another\n * component while it is stabilizing.\n * \\@internal\n */\n_didWork: boolean = false;\n/**\n * \\@internal\n */\n_callbacks: Function[] = [];\n/**\n * @param {?} _ngZone\n */\nconstructor(private _ngZone: NgZone) { this._watchAngularEvents(); }\n/**\n * \\@internal\n * @return {?}\n */\n_watchAngularEvents(): void {\n this._ngZone.onUnstable.subscribe({\n next: () => {\n this._didWork = true;\n this._isZoneStable = false;\n }\n });\n\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.subscribe({\n next: () => {\n NgZone.assertNotInAngularZone();\n scheduleMicroTask(() => {\n this._isZoneStable = true;\n this._runCallbacksIfReady();\n });\n }\n });\n });\n }\n/**\n * @return {?}\n */\nincreasePendingRequestCount(): number {\n this._pendingCount += 1;\n this._didWork = true;\n return this._pendingCount;\n }\n/**\n * @return {?}\n */\ndecreasePendingRequestCount(): number {\n this._pendingCount -= 1;\n if (this._pendingCount < 0) {\n throw new Error('pending async requests below zero');\n }\n this._runCallbacksIfReady();\n return this._pendingCount;\n }\n/**\n * @return {?}\n */\nisStable(): boolean {\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\n }\n/**\n * \\@internal\n * @return {?}\n */\n_runCallbacksIfReady(): void {\n if (this.isStable()) {\n // Schedules the call backs in a new frame so that it is always async.\n scheduleMicroTask(() => {\n while (this._callbacks.length !== 0) {\n ( /** @type {?} */((this._callbacks.pop())))(this._didWork);\n }\n this._didWork = false;\n });\n } else {\n // Not Ready\n this._didWork = true;\n }\n }\n/**\n * @param {?} callback\n * @return {?}\n */\nwhenStable(callback: Function): void {\n this._callbacks.push(callback);\n this._runCallbacksIfReady();\n }\n/**\n * @return {?}\n */\ngetPendingRequestCount(): number { return this._pendingCount; }\n/**\n * @deprecated use findProviders\n * @param {?} using\n * @param {?} provider\n * @param {?} exactMatch\n * @return {?}\n */\nfindBindings(using: any, provider: string, exactMatch: boolean): any[] {\n // TODO(juliemr): implement.\n return [];\n }\n/**\n * @param {?} using\n * @param {?} provider\n * @param {?} exactMatch\n * @return {?}\n */\nfindProviders(using: any, provider: string, exactMatch: boolean): any[] {\n // TODO(juliemr): implement.\n return [];\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n];\n}\n\nfunction Testability_tsickle_Closure_declarations() {\n/** @type {?} */\nTestability.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nTestability.ctorParameters;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._pendingCount;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._isZoneStable;\n/**\n * Whether any work was done since the last 'whenStable' callback. This is\n * useful to detect if this could have potentially destabilized another\n * component while it is stabilizing.\n * \\@internal\n * @type {?}\n */\nTestability.prototype._didWork;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._callbacks;\n/** @type {?} */\nTestability.prototype._ngZone;\n}\n\n/**\n * A global registry of {\\@link Testability} instances for specific elements.\n * \\@experimental\n */\nexport class TestabilityRegistry {\n/**\n * \\@internal\n */\n_applications = new Map<any, Testability>();\nconstructor() { _testabilityGetter.addToWindow(this); }\n/**\n * @param {?} token\n * @param {?} testability\n * @return {?}\n */\nregisterApplication(token: any, testability: Testability) {\n this._applications.set(token, testability);\n }\n/**\n * @param {?} elem\n * @return {?}\n */\ngetTestability(elem: any): Testability|null { return this._applications.get(elem) || null; }\n/**\n * @return {?}\n */\ngetAllTestabilities(): Testability[] { return Array.from(this._applications.values()); }\n/**\n * @return {?}\n */\ngetAllRootElements(): any[] { return Array.from(this._applications.keys()); }\n/**\n * @param {?} elem\n * @param {?=} findInAncestors\n * @return {?}\n */\nfindTestabilityInTree(elem: Node, findInAncestors: boolean = true): Testability|null {\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction TestabilityRegistry_tsickle_Closure_declarations() {\n/** @type {?} */\nTestabilityRegistry.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nTestabilityRegistry.ctorParameters;\n/**\n * \\@internal\n * @type {?}\n */\nTestabilityRegistry.prototype._applications;\n}\n\n\n/**\n * Adapter interface for retrieving the `Testability` service associated for a\n * particular context.\n *\n * @experimental Testability apis are primarily intended to be used by e2e test tool vendors like\n * the Protractor team.\n */\nexport interface GetTestability {\n addToWindow(registry: TestabilityRegistry): void;\n findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):\n Testability|null;\n}\nclass _NoopGetTestability implements GetTestability {\n/**\n * @param {?} registry\n * @return {?}\n */\naddToWindow(registry: TestabilityRegistry): void {}\n/**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\nfindTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):\n Testability|null {\n return null;\n }\n}\n/**\n * Set the {\\@link GetTestability} implementation used by the Angular testing framework.\n * \\@experimental\n * @param {?} getter\n * @return {?}\n */\nexport function setTestabilityGetter(getter: GetTestability): void {\n _testabilityGetter = getter;\n}\n\nlet /** @type {?} */ _testabilityGetter: GetTestability = new _NoopGetTestability();\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Import zero symbols from zone.js. This causes the zone ambient type to be\n// added to the type-checker, without emitting any runtime module load statement\n\nimport {} from 'zone.js';\nimport {EventEmitter} from '../event_emitter';\n/**\n * An injectable service for executing work inside or outside of the Angular zone.\n * \n * The most common use of this service is to optimize performance when starting a work consisting of\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\n * Angular. Such tasks can be kicked off via {\\@link #runOutsideAngular} and if needed, these tasks\n * can reenter the Angular zone via {\\@link #run}.\n * \n * <!-- TODO: add/fix links to:\n * - docs explaining zones and the use of zones in Angular and change-detection\n * - link to runOutsideAngular/run (throughout this file!)\n * -->\n * \n * ### Example\n * \n * ```\n * import {Component, NgZone} from '\\@angular/core';\n * import {NgIf} from '\\@angular/common';\n * \n * \\@Component({ \n * selector: 'ng-zone-demo'.\n * template: `\n * <h2>Demo: NgZone</h2>\n * \n * <p>Progress: {{progress}}%</p>\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\n * \n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\n * `,\n * })\n * export class NgZoneDemo {\n * progress: number = 0;\n * label: string;\n * \n * constructor(private _ngZone: NgZone) {}\n * \n * // Loop inside the Angular zone\n * // so the UI DOES refresh after each setTimeout cycle\n * processWithinAngularZone() {\n * this.label = 'inside';\n * this.progress = 0;\n * this._increaseProgress(() => console.log('Inside Done!'));\n * }\n * \n * // Loop outside of the Angular zone\n * // so the UI DOES NOT refresh after each setTimeout cycle\n * processOutsideOfAngularZone() {\n * this.label = 'outside';\n * this.progress = 0;\n * this._ngZone.runOutsideAngular(() => {\n * this._increaseProgress(() => {\n * // reenter the Angular zone and display done\n * this._ngZone.run(() => {console.log('Outside Done!') });\n * }}));\n * }\n * \n * _increaseProgress(doneCallback: () => void) {\n * this.progress += 1;\n * console.log(`Current progress: ${this.progress}%`);\n * \n * if (this.progress < 100) {\n * window.setTimeout(() => this._increaseProgress(doneCallback)), 10)\n * } else {\n * doneCallback();\n * }\n * }\n * }\n * ```\n * \n * \\@experimental\n */\nexport class NgZone {\nprivate outer: Zone;\nprivate inner: Zone;\nprivate _hasPendingMicrotasks: boolean = false;\nprivate _hasPendingMacrotasks: boolean = false;\nprivate _isStable = true;\nprivate _nesting: number = 0;\nprivate _onUnstable: EventEmitter<any> = new EventEmitter(false);\nprivate _onMicrotaskEmpty: EventEmitter<any> = new EventEmitter(false);\nprivate _onStable: EventEmitter<any> = new EventEmitter(false);\nprivate _onErrorEvents: EventEmitter<any> = new EventEmitter(false);\n/**\n * @param {?} __0\n */\nconstructor({enableLongStackTrace = false}) {\n if (typeof Zone == 'undefined') {\n throw new Error('Angular requires Zone.js prolyfill.');\n }\n\n Zone.assertZonePatched();\n\n this.outer = this.inner = Zone.current;\n\n if ((Zone as any)['wtfZoneSpec']) {\n this.inner = this.inner.fork((Zone as any)['wtfZoneSpec']);\n }\n\n if (enableLongStackTrace && (Zone as any)['longStackTraceZoneSpec']) {\n this.inner = this.inner.fork((Zone as any)['longStackTraceZoneSpec']);\n }\n\n this.forkInnerZoneWithAngularBehavior();\n }\n/**\n * @return {?}\n */\nstatic isInAngularZone(): boolean { return Zone.current.get('isAngularZone') === true; }\n/**\n * @return {?}\n */\nstatic assertInAngularZone(): void {\n if (!NgZone.isInAngularZone()) {\n throw new Error('Expected to be in Angular Zone, but it is not!');\n }\n }\n/**\n * @return {?}\n */\nstatic assertNotInAngularZone(): void {\n if (NgZone.isInAngularZone()) {\n throw new Error('Expected to not be in Angular Zone, but it is!');\n }\n }\n/**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n * \n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n * \n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n * \n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @param {?} fn\n * @return {?}\n */\nrun(fn: () => any): any { return this.inner.run(fn); }\n/**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @param {?} fn\n * @return {?}\n */\nrunGuarded(fn: () => any): any { return this.inner.runGuarded(fn); }\n/**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n * \n * Running functions via {\\@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n * \n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n * \n * Use {\\@link #run} to reenter the Angular zone and do work that updates the application model.\n * @param {?} fn\n * @return {?}\n */\nrunOutsideAngular(fn: () => any): any { return this.outer.run(fn); }\n/**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n * @return {?}\n */\nget onUnstable(): EventEmitter<any> { return this._onUnstable; }\n/**\n * Notifies when there is no more microtasks enqueue in the current VM Turn.\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\n * For this reason this event can fire multiple times per VM Turn.\n * @return {?}\n */\nget onMicrotaskEmpty(): EventEmitter<any> { return this._onMicrotaskEmpty; }\n/**\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\n * implies we are about to relinquish VM turn.\n * This event gets called just once.\n * @return {?}\n */\nget onStable(): EventEmitter<any> { return this._onStable; }\n/**\n * Notify that an error has been delivered.\n * @return {?}\n */\nget onError(): EventEmitter<any> { return this._onErrorEvents; }\n/**\n * Whether there are no outstanding microtasks or macrotasks.\n * @return {?}\n */\nget isStable(): boolean { return this._isStable; }\n/**\n * @return {?}\n */\nget hasPendingMicrotasks(): boolean { return this._hasPendingMicrotasks; }\n/**\n * @return {?}\n */\nget hasPendingMacrotasks(): boolean { return this._hasPendingMacrotasks; }\n/**\n * @return {?}\n */\nprivate checkStable() {\n if (this._nesting == 0 && !this._hasPendingMicrotasks && !this._isStable) {\n try {\n this._nesting++;\n this._onMicrotaskEmpty.emit(null);\n } finally {\n this._nesting--;\n if (!this._hasPendingMicrotasks) {\n try {\n this.runOutsideAngular(() => this._onStable.emit(null));\n } finally {\n this._isStable = true;\n }\n }\n }\n }\n }\n/**\n * @return {?}\n */\nprivate forkInnerZoneWithAngularBehavior() {\n this.inner = this.inner.fork({\n name: 'angular',\n properties: /** @type {?} */(( <any>{'isAngularZone': true})),\n onInvokeTask: (delegate: ZoneDelegate, current: Zone, target: Zone, task: Task,\n applyThis: any, applyArgs: any): any => {\n try {\n this.onEnter();\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n } finally {\n this.onLeave();\n }\n },\n\n\n onInvoke: (delegate: ZoneDelegate, current: Zone, target: Zone, callback: Function,\n applyThis: any, applyArgs: any[], source: string): any => {\n try {\n this.onEnter();\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n } finally {\n this.onLeave();\n }\n },\n\n onHasTask:\n (delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) => {\n delegate.hasTask(target, hasTaskState);\n if (current === target) {\n // We are only interested in hasTask events which originate from our zone\n // (A child hasTask event is not interesting to us)\n if (hasTaskState.change == 'microTask') {\n this.setHasMicrotask(hasTaskState.microTask);\n } else if (hasTaskState.change == 'macroTask') {\n this.setHasMacrotask(hasTaskState.macroTask);\n }\n }\n },\n\n onHandleError: (delegate: ZoneDelegate, current: Zone, target: Zone, error: any): boolean => {\n delegate.handleError(target, error);\n this.triggerError(error);\n return false;\n }\n });\n }\n/**\n * @return {?}\n */\nprivate onEnter() {\n this._nesting++;\n if (this._isStable) {\n this._isStable = false;\n this._onUnstable.emit(null);\n }\n }\n/**\n * @return {?}\n */\nprivate onLeave() {\n this._nesting--;\n this.checkStable();\n }\n/**\n * @param {?} hasMicrotasks\n * @return {?}\n */\nprivate setHasMicrotask(hasMicrotasks: boolean) {\n this._hasPendingMicrotasks = hasMicrotasks;\n this.checkStable();\n }\n/**\n * @param {?} hasMacrotasks\n * @return {?}\n */\nprivate setHasMacrotask(hasMacrotasks: boolean) { this._hasPendingMacrotasks = hasMacrotasks; }\n/**\n * @param {?} error\n * @return {?}\n */\nprivate triggerError(error: any) { this._onErrorEvents.emit(error); }\n}\n\nfunction NgZone_tsickle_Closure_declarations() {\n/** @type {?} */\nNgZone.prototype.outer;\n/** @type {?} */\nNgZone.prototype.inner;\n/** @type {?} */\nNgZone.prototype._hasPendingMicrotasks;\n/** @type {?} */\nNgZone.prototype._hasPendingMacrotasks;\n/** @type {?} */\nNgZone.prototype._isStable;\n/** @type {?} */\nNgZone.prototype._nesting;\n/** @type {?} */\nNgZone.prototype._onUnstable;\n/** @type {?} */\nNgZone.prototype._onMicrotaskEmpty;\n/** @type {?} */\nNgZone.prototype._onStable;\n/** @type {?} */\nNgZone.prototype._onErrorEvents;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Subject} from 'rxjs/Subject';\n/**\n * Use by directives and components to emit custom Events.\n * \n * ### Examples\n * \n * In the following example, `Zippy` alternatively emits `open` and `close` events when its\n * title gets clicked:\n * \n * ```\n * \\@Component({ \n * selector: 'zippy',\n * template: `\n * <div class=\"zippy\">\n * <div (click)=\"toggle()\">Toggle</div>\n * <div [hidden]=\"!visible\">\n * <ng-content></ng-content>\n * </div>\n * </div>`})\n * export class Zippy {\n * visible: boolean = true;\n * \\@Output() open: EventEmitter<any> = new EventEmitter();\n * \\@Output() close: EventEmitter<any> = new EventEmitter();\n * \n * toggle() {\n * this.visible = !this.visible;\n * if (this.visible) {\n * this.open.emit(null);\n * } else {\n * this.close.emit(null);\n * }\n * }\n * }\n * ```\n * \n * The events payload can be accessed by the parameter `$event` on the components output event\n * handler:\n * \n * ```\n * <zippy (open)=\"onOpen($event)\" (close)=\"onClose($event)\"></zippy>\n * ```\n * \n * Uses Rx.Observable but provides an adapter to make it work as specified here:\n * https://github.com/jhusain/observable-spec\n * \n * Once a reference implementation of the spec is available, switch to it.\n * \\@stable\n */\nexport class EventEmitter<T> extends Subject<T> {\n // TODO: mark this as internal once all the facades are gone\n // we can't mark it as internal now because EventEmitter exported via @angular/core would not\n // contain this property making it incompatible with all the code that uses EventEmitter via\n // facades, which are local to the code and do not have this property stripped.\n // tslint:disable-next-line\n __isAsync: boolean;\n/**\n * Creates an instance of {\\@link EventEmitter}, which depending on `isAsync`,\n * delivers events synchronously or asynchronously.\n * \n * @param {?=} isAsync By default, events are delivered synchronously (default value: `false`).\n * Set to `true` for asynchronous event delivery.\n */\nconstructor(isAsync: boolean = false) {\n super();\n this.__isAsync = isAsync;\n }\n/**\n * @param {?=} value\n * @return {?}\n */\nemit(value?: T) { super.next(value); }\n/**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\nsubscribe(generatorOrNext?: any, error?: any, complete?: any): any {\n let /** @type {?} */ schedulerFn: (t: any) => any;\n let /** @type {?} */ errorFn = (err: any): any => null;\n let /** @type {?} */ completeFn = (): any => null;\n\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = this.__isAsync ? (value: any) => {\n setTimeout(() => generatorOrNext.next(value));\n } : (value: any) => { generatorOrNext.next(value); };\n\n if (generatorOrNext.error) {\n errorFn = this.__isAsync ? (err) => { setTimeout(() => generatorOrNext.error(err)); } :\n (err) => { generatorOrNext.error(err); };\n }\n\n if (generatorOrNext.complete) {\n completeFn = this.__isAsync ? () => { setTimeout(() => generatorOrNext.complete()); } :\n () => { generatorOrNext.complete(); };\n }\n } else {\n schedulerFn = this.__isAsync ? (value: any) => { setTimeout(() => generatorOrNext(value)); } :\n (value: any) => { generatorOrNext(value); };\n\n if (error) {\n errorFn =\n this.__isAsync ? (err) => { setTimeout(() => error(err)); } : (err) => { error(err); };\n }\n\n if (complete) {\n completeFn =\n this.__isAsync ? () => { setTimeout(() => complete()); } : () => { complete(); };\n }\n }\n\n return super.subscribe(schedulerFn, errorFn, completeFn);\n }\n}\n\nfunction EventEmitter_tsickle_Closure_declarations() {\n/** @type {?} */\nEventEmitter.prototype.__isAsync;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {global} from '../util';\n\n/**\n * A scope function for the Web Tracing Framework (WTF).\n *\n * @experimental\n */\nexport interface WtfScopeFn { (arg0?: any, arg1?: any): any; }\n\ninterface WTF {\n trace: Trace;\n}\n\ninterface Trace {\n events: Events;\n leaveScope(scope: Scope, returnValue: any): any /** TODO #9100 */;\n beginTimeRange(rangeType: string, action: string): Range;\n endTimeRange(range: Range): any /** TODO #9100 */;\n}\n\nexport interface Range {}\n\ninterface Events {\n createScope(signature: string, flags: any): Scope;\n}\n\nexport interface Scope { (...args: any[] /** TODO #9100 */): any; }\n\nlet /** @type {?} */ trace: Trace;\nlet /** @type {?} */ events: Events;\n/**\n * @return {?}\n */\nexport function detectWTF(): boolean {\n const /** @type {?} */ wtf: WTF = ( /** @type {?} */((global as any)) /** TODO #9100 */)['wtf'];\n if (wtf) {\n trace = wtf['trace'];\n if (trace) {\n events = trace['events'];\n return true;\n }\n }\n return false;\n}\n/**\n * @param {?} signature\n * @param {?=} flags\n * @return {?}\n */\nexport function createScope(signature: string, flags: any = null): any {\n return events.createScope(signature, flags);\n}\n\nexport function leave<T>(scope: Scope): void;\nexport function leave<T>(scope: Scope, returnValue?: T): T;\n/**\n * @template T\n * @param {?} scope\n * @param {?=} returnValue\n * @return {?}\n */\nexport function leave<T>(scope: Scope, returnValue?: any): any {\n trace.leaveScope(scope, returnValue);\n return returnValue;\n}\n/**\n * @param {?} rangeType\n * @param {?} action\n * @return {?}\n */\nexport function startTimeRange(rangeType: string, action: string): Range {\n return trace.beginTimeRange(rangeType, action);\n}\n/**\n * @param {?} range\n * @return {?}\n */\nexport function endTimeRange(range: Range): void {\n trace.endTimeRange(range);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di/injector';\nimport {Type} from '../type';\n\nimport {ComponentFactoryResolver} from './component_factory_resolver';\n/**\n * Represents an instance of an NgModule created via a {\\@link NgModuleFactory}.\n * \n * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this\n * NgModule Instance.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class NgModuleRef<T> {\n/**\n * The injector that contains all of the providers of the NgModule.\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * The ComponentFactoryResolver to get hold of the ComponentFactories\n * declared in the `entryComponents` property of the module.\n * @abstract\n * @return {?}\n */\ncomponentFactoryResolver() {}\n/**\n * The NgModule instance.\n * @abstract\n * @return {?}\n */\ninstance() {}\n/**\n * Destroys the module instance and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * Allows to register a callback that will be called when the module is destroyed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void) {}\n}\n\nexport interface InternalNgModuleRef<T> extends NgModuleRef<T> {\n // Note: we are using the prefix _ as NgModuleData is an NgModuleRef and therefore directly\n // exposed to the user.\n _bootstrapComponents: Type<any>[];\n}\n/**\n * \\@experimental\n * @abstract\n */\nexport abstract class NgModuleFactory<T> {\n/**\n * @abstract\n * @return {?}\n */\nmoduleType() {}\n/**\n * @abstract\n * @param {?} parentInjector\n * @return {?}\n */\ncreate(parentInjector: Injector|null) {}\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector} from '../di/injector';\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {ComponentFactory, ComponentRef} from './component_factory';\nimport {NgModuleRef} from './ng_module_factory';\n/**\n * @param {?} component\n * @return {?}\n */\nexport function noComponentFactoryError(component: Function) {\n const /** @type {?} */ error = Error(\n `No component factory found for ${stringify(component)}. Did you add it to @NgModule.entryComponents?`);\n ( /** @type {?} */((error as any)))[ERROR_COMPONENT] = component;\n return error;\n}\n\nconst /** @type {?} */ ERROR_COMPONENT = 'ngComponent';\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getComponent(error: Error): Type<any> {\n return ( /** @type {?} */((error as any)))[ERROR_COMPONENT];\n}\nclass _NullComponentFactoryResolver implements ComponentFactoryResolver {\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: {new (...args: any[]): T}): ComponentFactory<T> {\n throw noComponentFactoryError(component);\n }\n}\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ComponentFactoryResolver {\n static NULL: ComponentFactoryResolver = new _NullComponentFactoryResolver();\n/**\n * @abstract\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: Type<T>) {}\n}\n\nfunction ComponentFactoryResolver_tsickle_Closure_declarations() {\n/** @type {?} */\nComponentFactoryResolver.NULL;\n}\n\nexport class CodegenComponentFactoryResolver implements ComponentFactoryResolver {\nprivate _factories = new Map<any, ComponentFactory<any>>();\n/**\n * @param {?} factories\n * @param {?} _parent\n * @param {?} _ngModule\n */\nconstructor(\n factories: ComponentFactory<any>[],\nprivate _parent: ComponentFactoryResolver,\nprivate _ngModule: NgModuleRef<any>) {\n for (let i = 0; i < factories.length; i++) {\n const factory = factories[i];\n this._factories.set(factory.componentType, factory);\n }\n }\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: {new (...args: any[]): T}): ComponentFactory<T> {\n let /** @type {?} */ factory = this._factories.get(component);\n if (!factory && this._parent) {\n factory = this._parent.resolveComponentFactory(component);\n }\n if (!factory) {\n throw noComponentFactoryError(component);\n }\n return new ComponentFactoryBoundToModule(factory, this._ngModule);\n }\n}\n\nfunction CodegenComponentFactoryResolver_tsickle_Closure_declarations() {\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._factories;\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._parent;\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._ngModule;\n}\n\nexport class ComponentFactoryBoundToModule<C> extends ComponentFactory<C> {\n/**\n * @param {?} factory\n * @param {?} ngModule\n */\nconstructor(private factory: ComponentFactory<C>,\nprivate ngModule: NgModuleRef<any>) { super(); }\n/**\n * @return {?}\n */\nget selector() { return this.factory.selector; }\n/**\n * @return {?}\n */\nget componentType() { return this.factory.componentType; }\n/**\n * @return {?}\n */\nget ngContentSelectors() { return this.factory.ngContentSelectors; }\n/**\n * @return {?}\n */\nget inputs() { return this.factory.inputs; }\n/**\n * @return {?}\n */\nget outputs() { return this.factory.outputs; }\n/**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>): ComponentRef<C> {\n return this.factory.create(\n injector, projectableNodes, rootSelectorOrNode, ngModule || this.ngModule);\n }\n}\n\nfunction ComponentFactoryBoundToModule_tsickle_Closure_declarations() {\n/** @type {?} */\nComponentFactoryBoundToModule.prototype.factory;\n/** @type {?} */\nComponentFactoryBoundToModule.prototype.ngModule;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ChangeDetectorRef} from '../change_detection/change_detection';\nimport {Injector} from '../di/injector';\nimport {Type} from '../type';\n\nimport {ElementRef} from './element_ref';\nimport {NgModuleRef} from './ng_module_factory';\nimport {ViewRef} from './view_ref';\n/**\n * Represents an instance of a Component created via a {\\@link ComponentFactory}.\n * \n * `ComponentRef` provides access to the Component Instance as well other objects related to this\n * Component Instance and allows you to destroy the Component Instance via the {\\@link #destroy}\n * method.\n * \\@stable\n * @abstract\n */\nexport abstract class ComponentRef<C> {\n/**\n * Location of the Host Element of this Component Instance.\n * @abstract\n * @return {?}\n */\nlocation() {}\n/**\n * The injector on which the component instance exists.\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * The instance of the Component.\n * @abstract\n * @return {?}\n */\ninstance() {}\n/**\n * The {\\@link ViewRef} of the Host View of this Component instance.\n * @abstract\n * @return {?}\n */\nhostView() {}\n/**\n * The {\\@link ChangeDetectorRef} of the Component instance.\n * @abstract\n * @return {?}\n */\nchangeDetectorRef() {}\n/**\n * The component type.\n * @abstract\n * @return {?}\n */\ncomponentType() {}\n/**\n * Destroys the component instance and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * Allows to register a callback that will be called when the component is destroyed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {}\n}\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ComponentFactory<C> {\n/**\n * @abstract\n * @return {?}\n */\nselector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponentType() {}\n/**\n * selector for all <ng-content> elements in the component.\n * @abstract\n * @return {?}\n */\nngContentSelectors() {}\n/**\n * the inputs of the component.\n * @abstract\n * @return {?}\n */\ninputs() {}\n/**\n * the outputs of the component.\n * @abstract\n * @return {?}\n */\noutputs() {}\n/**\n * Creates a new component.\n * @abstract\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>) {}\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable, InjectionToken} from '../di';\nimport {MissingTranslationStrategy} from '../i18n/tokens';\nimport {ViewEncapsulation} from '../metadata';\nimport {Type} from '../type';\n\nimport {ComponentFactory} from './component_factory';\nimport {NgModuleFactory} from './ng_module_factory';\n/**\n * Combination of NgModuleFactory and ComponentFactorys.\n * \n * \\@experimental\n */\nexport class ModuleWithComponentFactories<T> {\n/**\n * @param {?} ngModuleFactory\n * @param {?} componentFactories\n */\nconstructor(\npublic ngModuleFactory: NgModuleFactory<T>,\npublic componentFactories: ComponentFactory<any>[]) {}\n}\n\nfunction ModuleWithComponentFactories_tsickle_Closure_declarations() {\n/** @type {?} */\nModuleWithComponentFactories.prototype.ngModuleFactory;\n/** @type {?} */\nModuleWithComponentFactories.prototype.componentFactories;\n}\n\n/**\n * @return {?}\n */\nfunction _throwError() {\n throw new Error(`Runtime compiler is not loaded`);\n}\n/**\n * Low-level service for running the angular compiler during runtime\n * to create {\\@link ComponentFactory}s, which\n * can later be used to create and render a Component instance.\n * \n * Each `\\@NgModule` provides an own `Compiler` to its injector,\n * that will use the directives/pipes of the ng module for compilation\n * of components.\n * \\@stable\n */\nexport class Compiler {\n/**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T> { throw _throwError(); }\n/**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAsync<T>(moduleType: Type<T>): Promise<NgModuleFactory<T>> { throw _throwError(); }\n/**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAndAllComponentsSync<T>(moduleType: Type<T>): ModuleWithComponentFactories<T> {\n throw _throwError();\n }\n/**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAndAllComponentsAsync<T>(moduleType: Type<T>):\n Promise<ModuleWithComponentFactories<T>> {\n throw _throwError();\n }\n/**\n * Exposes the CSS-style selectors that have been used in `ngContent` directives within\n * the template of the given component.\n * This is used by the `upgrade` library to compile the appropriate transclude content\n * in the AngularJS wrapper component.\n * \n * @deprecated since v4. Use ComponentFactory.ngContentSelectors instead.\n * @param {?} component\n * @return {?}\n */\ngetNgContentSelectors(component: Type<any>): string[] { throw _throwError(); }\n/**\n * Clears all caches.\n * @return {?}\n */\nclearCache(): void {}\n/**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\nclearCacheFor(type: Type<any>) {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction Compiler_tsickle_Closure_declarations() {\n/** @type {?} */\nCompiler.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nCompiler.ctorParameters;\n}\n\n\n/**\n * Options for creating a compiler\n *\n * @experimental\n */\nexport type CompilerOptions = {\n /**\n * @deprecated since v4 this option has no effect anymore.\n */\n useDebug?: boolean,\n useJit?: boolean,\n defaultEncapsulation?: ViewEncapsulation,\n providers?: any[],\n missingTranslation?: MissingTranslationStrategy,\n // Whether to support the `<template>` tag and the `template` attribute to define angular\n // templates. They have been deprecated in 4.x, `<ng-template>` should be used instead.\n enableLegacyTemplate?: boolean,\n};\n/**\n * Token to provide CompilerOptions in the platform injector.\n * \n * \\@experimental\n */\nexport const COMPILER_OPTIONS = new InjectionToken<CompilerOptions[]>('compilerOptions');\n/**\n * A factory for creating a Compiler\n * \n * \\@experimental\n * @abstract\n */\nexport abstract class CompilerFactory {\n/**\n * @abstract\n * @param {?=} options\n * @return {?}\n */\ncreateCompiler(options?: CompilerOptions[]) {}\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable} from './di';\nexport class Console {\n/**\n * @param {?} message\n * @return {?}\n */\nlog(message: string): void {\n // tslint:disable-next-line:no-console\n console.log(message);\n }\n/**\n * @param {?} message\n * @return {?}\n */\nwarn(message: string): void {\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction Console_tsickle_Closure_declarations() {\n/** @type {?} */\nConsole.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nConsole.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {InjectionToken} from './di';\nimport {ComponentRef} from './linker/component_factory';\n/**\n * A DI Token representing a unique string id assigned to the application by Angular and used\n * primarily for prefixing application attributes and CSS styles when\n * {\\@link ViewEncapsulation#Emulated} is being used.\n * \n * If you need to avoid randomly generated value to be used as an application id, you can provide\n * a custom value via a DI provider <!-- TODO: provider --> configuring the root {\\@link Injector}\n * using this token.\n * \\@experimental\n */\nexport const APP_ID = new InjectionToken<string>('AppId');\n/**\n * @return {?}\n */\nexport function _appIdRandomProviderFactory() {\n return `${_randomChar()}${_randomChar()}${_randomChar()}`;\n}\n/**\n * Providers that will generate a random APP_ID_TOKEN.\n * \\@experimental\n */\nexport const APP_ID_RANDOM_PROVIDER = {\n provide: APP_ID,\n useFactory: _appIdRandomProviderFactory,\n deps: <any[]>[],\n};\n/**\n * @return {?}\n */\nfunction _randomChar(): string {\n return String.fromCharCode(97 + Math.floor(Math.random() * 25));\n}\n/**\n * A function that will be executed when a platform is initialized.\n * \\@experimental\n */\nexport const PLATFORM_INITIALIZER = new InjectionToken<Array<() => void>>('Platform Initializer');\n/**\n * A token that indicates an opaque platform id.\n * \\@experimental\n */\nexport const PLATFORM_ID = new InjectionToken<Object>('Platform ID');\n/**\n * All callbacks provided via this token will be called for every component that is bootstrapped.\n * Signature of the callback:\n * \n * `(componentRef: ComponentRef) => void`.\n * \n * \\@experimental\n */\nexport const APP_BOOTSTRAP_LISTENER =\n new InjectionToken<Array<(compRef: ComponentRef<any>) => void>>('appBootstrapListener');\n/**\n * A token which indicates the root directory of the application\n * \\@experimental\n */\nexport const PACKAGE_ROOT_URL = new InjectionToken<string>('Application Packages Root URL');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {isPromise} from '../src/util/lang';\n\nimport {Inject, Injectable, InjectionToken, Optional} from './di';\n/**\n * A function that will be executed when an application is initialized.\n * \\@experimental\n */\nexport const APP_INITIALIZER = new InjectionToken<Array<() => void>>('Application Initializer');\n/**\n * A class that reflects the state of running {\\@link APP_INITIALIZER}s.\n * \n * \\@experimental\n */\nexport class ApplicationInitStatus {\nprivate resolve: Function;\nprivate reject: Function;\nprivate initialized = false;\nprivate _donePromise: Promise<any>;\nprivate _done = false;\n/**\n * @param {?} appInits\n */\nconstructor(\nprivate appInits: (() => any)[]) {\n this._donePromise = new Promise((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n }\n/**\n * \\@internal\n * @return {?}\n */\nrunInitializers() {\n if (this.initialized) {\n return;\n }\n\n const /** @type {?} */ asyncInitPromises: Promise<any>[] = [];\n\n const /** @type {?} */ complete =\n () => {\n this._done = true;\n this.resolve();\n }\n\n if (this.appInits) {\n for (let /** @type {?} */ i = 0; i < this.appInits.length; i++) {\n const /** @type {?} */ initResult = this.appInits[i]();\n if (isPromise(initResult)) {\n asyncInitPromises.push(initResult);\n }\n }\n }\n\n Promise.all(asyncInitPromises).then(() => { complete(); }).catch(e => { this.reject(e); });\n\n if (asyncInitPromises.length === 0) {\n complete();\n }\n this.initialized = true;\n }\n/**\n * @return {?}\n */\nget done(): boolean { return this._done; }\n/**\n * @return {?}\n */\nget donePromise(): Promise<any> { return this._donePromise; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Array, decorators: [{ type: Inject, args: [APP_INITIALIZER, ] }, { type: Optional }, ]},\n];\n}\n\nfunction ApplicationInitStatus_tsickle_Closure_declarations() {\n/** @type {?} */\nApplicationInitStatus.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationInitStatus.ctorParameters;\n/** @type {?} */\nApplicationInitStatus.prototype.resolve;\n/** @type {?} */\nApplicationInitStatus.prototype.reject;\n/** @type {?} */\nApplicationInitStatus.prototype.initialized;\n/** @type {?} */\nApplicationInitStatus.prototype._donePromise;\n/** @type {?} */\nApplicationInitStatus.prototype._done;\n/** @type {?} */\nApplicationInitStatus.prototype.appInits;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The `di` module provides dependency injection container services.\n */\n\nexport {InjectDecorator,Inject,OptionalDecorator,Optional,InjectableDecorator,Injectable,SelfDecorator,Self,SkipSelfDecorator,SkipSelf,HostDecorator,Host} from './di/metadata';\n\nexport {forwardRef, resolveForwardRef, ForwardRefFn} from './di/forward_ref';\n\nexport {Injector} from './di/injector';\nexport {ReflectiveInjector} from './di/reflective_injector';\nexport {Provider, TypeProvider, ValueProvider, ClassProvider, ExistingProvider, FactoryProvider} from './di/provider';\nexport {ResolvedReflectiveFactory, ResolvedReflectiveProvider} from './di/reflective_provider';\nexport {ReflectiveKey} from './di/reflective_key';\nexport {InjectionToken, OpaqueToken} from './di/injection_token';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injector, THROW_IF_NOT_FOUND} from './injector';\nimport {Self, SkipSelf} from './metadata';\nimport {Provider} from './provider';\nimport {cyclicDependencyError, instantiationError, noProviderError, outOfBoundsError} from './reflective_errors';\nimport {ReflectiveKey} from './reflective_key';\nimport {ReflectiveDependency, ResolvedReflectiveFactory, ResolvedReflectiveProvider, resolveReflectiveProviders} from './reflective_provider';\n\n// Threshold for the dynamic version\nconst /** @type {?} */ UNDEFINED = new Object();\n/**\n * A ReflectiveDependency injection container used for instantiating objects and resolving\n * dependencies.\n * \n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\n * constructor dependencies.\n * \n * In typical use, application code asks for the dependencies in the constructor and they are\n * resolved by the `Injector`.\n * \n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\n * \n * The following example creates an `Injector` configured to create `Engine` and `Car`.\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * var car = injector.get(Car);\n * expect(car instanceof Car).toBe(true);\n * expect(car.engine instanceof Engine).toBe(true);\n * ```\n * \n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\n * resolve all of the object's dependencies automatically.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class ReflectiveInjector implements Injector {\n/**\n * Turns an array of provider definitions into an array of resolved providers.\n * \n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {\\@link ResolvedReflectiveProvider}s.\n * \n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n * \n * expect(providers.length).toEqual(2);\n * \n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n * \n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n * \n * See {\\@link ReflectiveInjector#fromResolvedProviders} for more info.\n * @param {?} providers\n * @return {?}\n */\nstatic resolve(providers: Provider[]): ResolvedReflectiveProvider[] {\n return resolveReflectiveProviders(providers);\n }\n/**\n * Resolves an array of providers and creates an injector from those providers.\n * \n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n * \n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve} and {\\@link ReflectiveInjector#fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\nstatic resolveAndCreate(providers: Provider[], parent?: Injector): ReflectiveInjector {\n const /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\n }\n/**\n * Creates an injector from previously resolved providers.\n * \n * This API is the recommended way to construct injectors in performance-sensitive parts.\n * \n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \\@experimental\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\nstatic fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector):\n ReflectiveInjector {\n return new ReflectiveInjector_(providers, parent);\n }\n/**\n * Parent of this injector.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n * \n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\n * \n * ```typescript\n * var parent = ReflectiveInjector.resolveAndCreate([]);\n * var child = parent.resolveAndCreateChild([]);\n * expect(child.parent).toBe(parent);\n * ```\n * @abstract\n * @return {?}\n */\nparent() {}\n/**\n * Resolves an array of providers and creates a child injector from those providers.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n * \n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n * \n * ### Example ([live demo](http://plnkr.co/edit/opB3T4?p=preview))\n * \n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n * \n * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);\n * var child = parent.resolveAndCreateChild([ChildProvider]);\n * \n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n * \n * This function is slower than the corresponding `createChildFromResolved`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve} and {\\@link ReflectiveInjector#createChildFromResolved}.\n * @abstract\n * @param {?} providers\n * @return {?}\n */\nresolveAndCreateChild(providers: Provider[]) {}\n/**\n * Creates a child injector from previously resolved providers.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n * \n * This API is the recommended way to construct injectors in performance-sensitive parts.\n * \n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\n * \n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n * \n * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);\n * var childProviders = ReflectiveInjector.resolve([ChildProvider]);\n * \n * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);\n * var child = parent.createChildFromResolved(childProviders);\n * \n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n * @abstract\n * @param {?} providers\n * @return {?}\n */\ncreateChildFromResolved(providers: ResolvedReflectiveProvider[]) {}\n/**\n * Resolves a provider and instantiates an object in the context of the injector.\n * \n * The created object does not get cached by the injector.\n * \n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?p=preview))\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n * \n * var car = injector.resolveAndInstantiate(Car);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\n * ```\n * @abstract\n * @param {?} provider\n * @return {?}\n */\nresolveAndInstantiate(provider: Provider) {}\n/**\n * Instantiates an object using a resolved provider in the context of the injector.\n * \n * The created object does not get cached by the injector.\n * \n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?p=preview))\n * \n * ```typescript\n * \\@Injectable() \n * class Engine {\n * }\n * \n * \\@Injectable() \n * class Car {\n * constructor(public engine:Engine) {}\n * }\n * \n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\n * var carProvider = ReflectiveInjector.resolve([Car])[0];\n * var car = injector.instantiateResolved(carProvider);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\n * ```\n * @abstract\n * @param {?} provider\n * @return {?}\n */\ninstantiateResolved(provider: ResolvedReflectiveProvider) {}\n/**\n * @abstract\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue?: any) {}\n}\nexport class ReflectiveInjector_ implements ReflectiveInjector {\n/**\n * \\@internal\n */\n_constructionCounter: number = 0;\n/**\n * \\@internal\n */\npublic _providers: ResolvedReflectiveProvider[];\n/**\n * \\@internal\n */\npublic _parent: Injector|null;\n\n keyIds: number[];\n objs: any[];\n/**\n * Private\n * @param {?} _providers\n * @param {?=} _parent\n */\nconstructor(_providers: ResolvedReflectiveProvider[], _parent?: Injector) {\n this._providers = _providers;\n this._parent = _parent || null;\n\n const len = _providers.length;\n\n this.keyIds = new Array(len);\n this.objs = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.keyIds[i] = _providers[i].key.id;\n this.objs[i] = UNDEFINED;\n }\n }\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = THROW_IF_NOT_FOUND): any {\n return this._getByKey(ReflectiveKey.get(token), null, notFoundValue);\n }\n/**\n * @return {?}\n */\nget parent(): Injector|null { return this._parent; }\n/**\n * @param {?} providers\n * @return {?}\n */\nresolveAndCreateChild(providers: Provider[]): ReflectiveInjector {\n const /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n }\n/**\n * @param {?} providers\n * @return {?}\n */\ncreateChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n const /** @type {?} */ inj = new ReflectiveInjector_(providers);\n inj._parent = this;\n return inj;\n }\n/**\n * @param {?} provider\n * @return {?}\n */\nresolveAndInstantiate(provider: Provider): any {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n }\n/**\n * @param {?} provider\n * @return {?}\n */\ninstantiateResolved(provider: ResolvedReflectiveProvider): any {\n return this._instantiateProvider(provider);\n }\n/**\n * @param {?} index\n * @return {?}\n */\ngetProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index < 0 || index >= this._providers.length) {\n throw outOfBoundsError(index);\n }\n return this._providers[index];\n }\n/**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n_new(provider: ResolvedReflectiveProvider): any {\n if (this._constructionCounter++ > this._getMaxNumberOfObjects()) {\n throw cyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n }\n/**\n * @return {?}\n */\nprivate _getMaxNumberOfObjects(): number { return this.objs.length; }\n/**\n * @param {?} provider\n * @return {?}\n */\nprivate _instantiateProvider(provider: ResolvedReflectiveProvider): any {\n if (provider.multiProvider) {\n const /** @type {?} */ res = new Array(provider.resolvedFactories.length);\n for (let /** @type {?} */ i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n } else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n }\n/**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\nprivate _instantiate(\n provider: ResolvedReflectiveProvider,\n ResolvedReflectiveFactory: ResolvedReflectiveFactory): any {\n const /** @type {?} */ factory = ResolvedReflectiveFactory.factory;\n\n let /** @type {?} */ deps: any[];\n try {\n deps =\n ResolvedReflectiveFactory.dependencies.map(dep => this._getByReflectiveDependency(dep));\n } catch ( /** @type {?} */e) {\n if (e.addKey) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n\n let /** @type {?} */ obj: any;\n try {\n obj = factory(...deps);\n } catch ( /** @type {?} */e) {\n throw instantiationError(this, e, e.stack, provider.key);\n }\n\n return obj;\n }\n/**\n * @param {?} dep\n * @return {?}\n */\nprivate _getByReflectiveDependency(dep: ReflectiveDependency): any {\n return this._getByKey(dep.key, dep.visibility, dep.optional ? null : THROW_IF_NOT_FOUND);\n }\n/**\n * @param {?} key\n * @param {?} visibility\n * @param {?} notFoundValue\n * @return {?}\n */\nprivate _getByKey(key: ReflectiveKey, visibility: Self|SkipSelf|null, notFoundValue: any): any {\n if (key === INJECTOR_KEY) {\n return this;\n }\n\n if (visibility instanceof Self) {\n return this._getByKeySelf(key, notFoundValue);\n\n } else {\n return this._getByKeyDefault(key, notFoundValue, visibility);\n }\n }\n/**\n * @param {?} keyId\n * @return {?}\n */\nprivate _getObjByKeyId(keyId: number): any {\n for (let /** @type {?} */ i = 0; i < this.keyIds.length; i++) {\n if (this.keyIds[i] === keyId) {\n if (this.objs[i] === UNDEFINED) {\n this.objs[i] = this._new(this._providers[i]);\n }\n\n return this.objs[i];\n }\n }\n\n return UNDEFINED;\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n_throwOrNull(key: ReflectiveKey, notFoundValue: any): any {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n } else {\n throw noProviderError(this, key);\n }\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n_getByKeySelf(key: ReflectiveKey, notFoundValue: any): any {\n const /** @type {?} */ obj = this._getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n_getByKeyDefault(key: ReflectiveKey, notFoundValue: any, visibility: Self|SkipSelf|null): any {\n let /** @type {?} */ inj: Injector|null;\n\n if (visibility instanceof SkipSelf) {\n inj = this._parent;\n } else {\n inj = this;\n }\n\n while (inj instanceof ReflectiveInjector_) {\n const /** @type {?} */ inj_ = /** @type {?} */(( <ReflectiveInjector_>inj));\n const /** @type {?} */ obj = inj_._getObjByKeyId(key.id);\n if (obj !== UNDEFINED) return obj;\n inj = inj_._parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n } else {\n return this._throwOrNull(key, notFoundValue);\n }\n }\n/**\n * @return {?}\n */\nget displayName(): string {\n const /** @type {?} */ providers =\n _mapProviders(this, (b: ResolvedReflectiveProvider) => ' \"' + b.key.displayName + '\" ')\n .join(', ');\n return `ReflectiveInjector(providers: [${providers}])`;\n }\n/**\n * @return {?}\n */\ntoString(): string { return this.displayName; }\n}\n\nfunction ReflectiveInjector__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._constructionCounter;\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._providers;\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._parent;\n/** @type {?} */\nReflectiveInjector_.prototype.keyIds;\n/** @type {?} */\nReflectiveInjector_.prototype.objs;\n}\n\n\nconst /** @type {?} */ INJECTOR_KEY = ReflectiveKey.get(Injector);\n/**\n * @param {?} injector\n * @param {?} fn\n * @return {?}\n */\nfunction _mapProviders(injector: ReflectiveInjector_, fn: Function): any[] {\n const /** @type {?} */ res: any[] = new Array(injector._providers.length);\n for (let /** @type {?} */ i = 0; i < injector._providers.length; ++i) {\n res[i] = fn(injector.getProviderAtIndex(i));\n }\n return res;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {reflector} from '../reflection/reflection';\nimport {Type} from '../type';\n\nimport {resolveForwardRef} from './forward_ref';\nimport {InjectionToken} from './injection_token';\nimport {Inject, Optional, Self, SkipSelf} from './metadata';\nimport {ClassProvider, ExistingProvider, FactoryProvider, Provider, TypeProvider, ValueProvider} from './provider';\nimport {invalidProviderError, mixingMultiProvidersWithRegularProvidersError, noAnnotationError} from './reflective_errors';\nimport {ReflectiveKey} from './reflective_key';\n\n\ninterface NormalizedProvider extends TypeProvider, ValueProvider, ClassProvider, ExistingProvider,\n FactoryProvider {}\n/**\n * `Dependency` is used by the framework to extend DI.\n * This is internal to Angular and should not be used directly.\n */\nexport class ReflectiveDependency {\n/**\n * @param {?} key\n * @param {?} optional\n * @param {?} visibility\n */\nconstructor(\npublic key: ReflectiveKey,\npublic optional: boolean,\npublic visibility: Self|SkipSelf|null) {}\n/**\n * @param {?} key\n * @return {?}\n */\nstatic fromKey(key: ReflectiveKey): ReflectiveDependency {\n return new ReflectiveDependency(key, false, null);\n }\n}\n\nfunction ReflectiveDependency_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectiveDependency.prototype.key;\n/** @type {?} */\nReflectiveDependency.prototype.optional;\n/** @type {?} */\nReflectiveDependency.prototype.visibility;\n}\n\n\nconst /** @type {?} */ _EMPTY_LIST: any[] = [];\n\n/**\n * An internal resolved representation of a {@link Provider} used by the {@link Injector}.\n *\n * It is usually created automatically by `Injector.resolveAndCreate`.\n *\n * It can be created manually, as follows:\n *\n * ### Example ([live demo](http://plnkr.co/edit/RfEnhh8kUEI0G3qsnIeT?p%3Dpreview&p=preview))\n *\n * ```typescript\n * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]);\n * var injector = Injector.fromResolvedProviders(resolvedProviders);\n *\n * expect(injector.get('message')).toEqual('Hello');\n * ```\n *\n * @experimental\n */\nexport interface ResolvedReflectiveProvider {\n /**\n * A key, usually a `Type<any>`.\n */\n key: ReflectiveKey;\n\n /**\n * Factory function which can return an instance of an object represented by a key.\n */\n resolvedFactories: ResolvedReflectiveFactory[];\n\n /**\n * Indicates if the provider is a multi-provider or a regular provider.\n */\n multiProvider: boolean;\n}\nexport class ResolvedReflectiveProvider_ implements ResolvedReflectiveProvider {\n/**\n * @param {?} key\n * @param {?} resolvedFactories\n * @param {?} multiProvider\n */\nconstructor(\npublic key: ReflectiveKey,\npublic resolvedFactories: ResolvedReflectiveFactory[],\npublic multiProvider: boolean) {}\n/**\n * @return {?}\n */\nget resolvedFactory(): ResolvedReflectiveFactory { return this.resolvedFactories[0]; }\n}\n\nfunction ResolvedReflectiveProvider__tsickle_Closure_declarations() {\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.key;\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.resolvedFactories;\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.multiProvider;\n}\n\n/**\n * An internal resolved representation of a factory function created by resolving {\\@link\n * Provider}.\n * \\@experimental\n */\nexport class ResolvedReflectiveFactory {\n/**\n * @param {?} factory\n * @param {?} dependencies\n */\nconstructor(\npublic factory: Function,\npublic dependencies: ReflectiveDependency[]) {}\n}\n\nfunction ResolvedReflectiveFactory_tsickle_Closure_declarations() {\n/**\n * Factory function which can return an instance of an object represented by a key.\n * @type {?}\n */\nResolvedReflectiveFactory.prototype.factory;\n/**\n * Arguments (dependencies) to the `factory` function.\n * @type {?}\n */\nResolvedReflectiveFactory.prototype.dependencies;\n}\n\n/**\n * Resolve a single provider.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveFactory(provider: NormalizedProvider): ResolvedReflectiveFactory {\n let /** @type {?} */ factoryFn: Function;\n let /** @type {?} */ resolvedDeps: ReflectiveDependency[];\n if (provider.useClass) {\n const /** @type {?} */ useClass = resolveForwardRef(provider.useClass);\n factoryFn = reflector.factory(useClass);\n resolvedDeps = _dependenciesFor(useClass);\n } else if (provider.useExisting) {\n factoryFn = (aliasInstance: any) => aliasInstance;\n resolvedDeps = [ReflectiveDependency.fromKey(ReflectiveKey.get(provider.useExisting))];\n } else if (provider.useFactory) {\n factoryFn = provider.useFactory;\n resolvedDeps = constructDependencies(provider.useFactory, provider.deps);\n } else {\n factoryFn = () => provider.useValue;\n resolvedDeps = _EMPTY_LIST;\n }\n return new ResolvedReflectiveFactory(factoryFn, resolvedDeps);\n}\n/**\n * Converts the {\\@link Provider} into {\\@link ResolvedProvider}.\n * \n * {\\@link Injector} internally only uses {\\@link ResolvedProvider}, {\\@link Provider} contains\n * convenience provider syntax.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveProvider(provider: NormalizedProvider): ResolvedReflectiveProvider {\n return new ResolvedReflectiveProvider_(\n ReflectiveKey.get(provider.provide), [resolveReflectiveFactory(provider)],\n provider.multi || false);\n}\n/**\n * Resolve a list of Providers.\n * @param {?} providers\n * @return {?}\n */\nexport function resolveReflectiveProviders(providers: Provider[]): ResolvedReflectiveProvider[] {\n const /** @type {?} */ normalized = _normalizeProviders(providers, []);\n const /** @type {?} */ resolved = normalized.map(resolveReflectiveProvider);\n const /** @type {?} */ resolvedProviderMap = mergeResolvedReflectiveProviders(resolved, new Map());\n return Array.from(resolvedProviderMap.values());\n}\n/**\n * Merges a list of ResolvedProviders into a list where\n * each key is contained exactly once and multi providers\n * have been merged.\n * @param {?} providers\n * @param {?} normalizedProvidersMap\n * @return {?}\n */\nexport function mergeResolvedReflectiveProviders(\n providers: ResolvedReflectiveProvider[],\n normalizedProvidersMap: Map<number, ResolvedReflectiveProvider>):\n Map<number, ResolvedReflectiveProvider> {\n for (let /** @type {?} */ i = 0; i < providers.length; i++) {\n const /** @type {?} */ provider = providers[i];\n const /** @type {?} */ existing = normalizedProvidersMap.get(provider.key.id);\n if (existing) {\n if (provider.multiProvider !== existing.multiProvider) {\n throw mixingMultiProvidersWithRegularProvidersError(existing, provider);\n }\n if (provider.multiProvider) {\n for (let /** @type {?} */ j = 0; j < provider.resolvedFactories.length; j++) {\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\n }\n } else {\n normalizedProvidersMap.set(provider.key.id, provider);\n }\n } else {\n let /** @type {?} */ resolvedProvider: ResolvedReflectiveProvider;\n if (provider.multiProvider) {\n resolvedProvider = new ResolvedReflectiveProvider_(\n provider.key, provider.resolvedFactories.slice(), provider.multiProvider);\n } else {\n resolvedProvider = provider;\n }\n normalizedProvidersMap.set(provider.key.id, resolvedProvider);\n }\n }\n return normalizedProvidersMap;\n}\n/**\n * @param {?} providers\n * @param {?} res\n * @return {?}\n */\nfunction _normalizeProviders(providers: Provider[], res: Provider[]): Provider[] {\n providers.forEach(b => {\n if (b instanceof Type) {\n res.push({provide: b, useClass: b});\n\n } else if (b && typeof b == 'object' && ( /** @type {?} */((b as any))).provide !== undefined) {\n res.push( /** @type {?} */((b as NormalizedProvider)));\n\n } else if (b instanceof Array) {\n _normalizeProviders(b, res);\n\n } else {\n throw invalidProviderError(b);\n }\n });\n\n return res;\n}\n/**\n * @param {?} typeOrFunc\n * @param {?=} dependencies\n * @return {?}\n */\nexport function constructDependencies(\n typeOrFunc: any, dependencies?: any[]): ReflectiveDependency[] {\n if (!dependencies) {\n return _dependenciesFor(typeOrFunc);\n } else {\n const /** @type {?} */ params: any[][] = dependencies.map(t => [t]);\n return dependencies.map(t => _extractToken(typeOrFunc, t, params));\n }\n}\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nfunction _dependenciesFor(typeOrFunc: any): ReflectiveDependency[] {\n const /** @type {?} */ params = reflector.parameters(typeOrFunc);\n\n if (!params) return [];\n if (params.some(p => p == null)) {\n throw noAnnotationError(typeOrFunc, params);\n }\n return params.map(p => _extractToken(typeOrFunc, p, params));\n}\n/**\n * @param {?} typeOrFunc\n * @param {?} metadata\n * @param {?} params\n * @return {?}\n */\nfunction _extractToken(\n typeOrFunc: any, metadata: any[] | any, params: any[][]): ReflectiveDependency {\n let /** @type {?} */ token: any = null;\n let /** @type {?} */ optional = false;\n\n if (!Array.isArray(metadata)) {\n if (metadata instanceof Inject) {\n return _createDependency(metadata.token, optional, null);\n } else {\n return _createDependency(metadata, optional, null);\n }\n }\n\n let /** @type {?} */ visibility: Self|SkipSelf|null = null;\n\n for (let /** @type {?} */ i = 0; i < metadata.length; ++i) {\n const /** @type {?} */ paramMetadata = metadata[i];\n\n if (paramMetadata instanceof Type) {\n token = paramMetadata;\n\n } else if (paramMetadata instanceof Inject) {\n token = paramMetadata.token;\n\n } else if (paramMetadata instanceof Optional) {\n optional = true;\n\n } else if (paramMetadata instanceof Self || paramMetadata instanceof SkipSelf) {\n visibility = paramMetadata;\n } else if (paramMetadata instanceof InjectionToken) {\n token = paramMetadata;\n }\n }\n\n token = resolveForwardRef(token);\n\n if (token != null) {\n return _createDependency(token, optional, visibility);\n } else {\n throw noAnnotationError(typeOrFunc, params);\n }\n}\n/**\n * @param {?} token\n * @param {?} optional\n * @param {?} visibility\n * @return {?}\n */\nfunction _createDependency(\n token: any, optional: boolean, visibility: Self | SkipSelf | null): ReflectiveDependency {\n return new ReflectiveDependency(ReflectiveKey.get(token), optional, visibility);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Type} from '../type';\nimport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nimport {GetterFn, MethodFn, SetterFn} from './types';\n\nexport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nexport {GetterFn, MethodFn, SetterFn} from './types';\n/**\n * Provides access to reflection data about symbols. Used internally by Angular\n * to power dependency injection and compilation.\n */\nexport class Reflector {\n/**\n * @param {?} reflectionCapabilities\n */\nconstructor(public reflectionCapabilities: PlatformReflectionCapabilities) {}\n/**\n * @param {?} caps\n * @return {?}\n */\nupdateCapabilities(caps: PlatformReflectionCapabilities) { this.reflectionCapabilities = caps; }\n/**\n * @param {?} type\n * @return {?}\n */\nfactory(type: Type<any>): Function { return this.reflectionCapabilities.factory(type); }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nparameters(typeOrFunc: Type<any>): any[][] {\n return this.reflectionCapabilities.parameters(typeOrFunc);\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nannotations(typeOrFunc: Type<any>): any[] {\n return this.reflectionCapabilities.annotations(typeOrFunc);\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\npropMetadata(typeOrFunc: Type<any>): {[key: string]: any[]} {\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\n }\n/**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\nhasLifecycleHook(type: any, lcProperty: string): boolean {\n return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);\n }\n/**\n * @param {?} name\n * @return {?}\n */\ngetter(name: string): GetterFn { return this.reflectionCapabilities.getter(name); }\n/**\n * @param {?} name\n * @return {?}\n */\nsetter(name: string): SetterFn { return this.reflectionCapabilities.setter(name); }\n/**\n * @param {?} name\n * @return {?}\n */\nmethod(name: string): MethodFn { return this.reflectionCapabilities.method(name); }\n/**\n * @param {?} type\n * @return {?}\n */\nimportUri(type: any): string { return this.reflectionCapabilities.importUri(type); }\n/**\n * @param {?} type\n * @return {?}\n */\nresourceUri(type: any): string { return this.reflectionCapabilities.resourceUri(type); }\n/**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\nresolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any {\n return this.reflectionCapabilities.resolveIdentifier(name, moduleUrl, members, runtime);\n }\n/**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\nresolveEnum(identifier: any, name: string): any {\n return this.reflectionCapabilities.resolveEnum(identifier, name);\n }\n}\n\nfunction Reflector_tsickle_Closure_declarations() {\n/** @type {?} */\nReflector.prototype.reflectionCapabilities;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ReflectionCapabilities} from './reflection_capabilities';\nimport {Reflector} from './reflector';\n\nexport {Reflector} from './reflector';\n/**\n * The {\\@link Reflector} used internally in Angular to access metadata\n * about symbols.\n */\nexport const reflector = new Reflector(new ReflectionCapabilities());\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Type, isType} from '../type';\nimport {global, stringify} from '../util';\nimport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nimport {GetterFn, MethodFn, SetterFn} from './types';\n/**\n * Attention: This regex has to hold even if the code is minified!\n */\nexport const DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*arguments\\)/;\nexport class ReflectionCapabilities implements PlatformReflectionCapabilities {\nprivate _reflect: any;\n/**\n * @param {?=} reflect\n */\nconstructor(reflect?: any) { this._reflect = reflect || global['Reflect']; }\n/**\n * @return {?}\n */\nisReflectionEnabled(): boolean { return true; }\n/**\n * @template T\n * @param {?} t\n * @return {?}\n */\nfactory<T>(t: Type<T>): (args: any[]) => T { return (...args: any[]) => new t(...args); }\n/**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n_zipTypesAndAnnotations(paramTypes: any[], paramAnnotations: any[]): any[][] {\n let /** @type {?} */ result: any[][];\n\n if (typeof paramTypes === 'undefined') {\n result = new Array(paramAnnotations.length);\n } else {\n result = new Array(paramTypes.length);\n }\n\n for (let /** @type {?} */ i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n } else if (paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n } else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n }\n/**\n * @param {?} type\n * @param {?} parentCtor\n * @return {?}\n */\nprivate _ownParameters(type: Type<any>, parentCtor: any): any[][]|null {\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (DELEGATE_CTOR.exec(type.toString())) {\n return null;\n }\n\n // Prefer the direct API.\n if (( /** @type {?} */((<any>type))).parameters && ( /** @type {?} */((<any>type))).parameters !== parentCtor.parameters) {\n return ( /** @type {?} */((<any>type))).parameters;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n const /** @type {?} */ tsickleCtorParams = ( /** @type {?} */((<any>type))).ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n const /** @type {?} */ ctorParameters =\n typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n const /** @type {?} */ paramTypes = ctorParameters.map((ctorParam: any) => ctorParam && ctorParam.type);\n const /** @type {?} */ paramAnnotations = ctorParameters.map(\n (ctorParam: any) =>\n ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect != null && this._reflect.getOwnMetadata != null) {\n const /** @type {?} */ paramAnnotations = this._reflect.getOwnMetadata('parameters', type);\n const /** @type {?} */ paramTypes = this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n }\n\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return new Array(( /** @type {?} */((<any>type.length)))).fill(undefined);\n }\n/**\n * @param {?} type\n * @return {?}\n */\nparameters(type: Type<any>): any[][] {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n const /** @type {?} */ parentCtor = getParentCtor(type);\n let /** @type {?} */ parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n }\n/**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\nprivate _ownAnnotations(typeOrFunc: Type<any>, parentCtor: any): any[]|null {\n // Prefer the direct API.\n if (( /** @type {?} */((<any>typeOrFunc))).annotations && ( /** @type {?} */((<any>typeOrFunc))).annotations !== parentCtor.annotations) {\n let /** @type {?} */ annotations = ( /** @type {?} */((<any>typeOrFunc))).annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n if (( /** @type {?} */((<any>typeOrFunc))).decorators && ( /** @type {?} */((<any>typeOrFunc))).decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata(( /** @type {?} */((<any>typeOrFunc))).decorators);\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect && this._reflect.getOwnMetadata) {\n return this._reflect.getOwnMetadata('annotations', typeOrFunc);\n }\n return null;\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nannotations(typeOrFunc: Type<any>): any[] {\n if (!isType(typeOrFunc)) {\n return [];\n }\n const /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n const /** @type {?} */ ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n const /** @type {?} */ parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n }\n/**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\nprivate _ownPropMetadata(typeOrFunc: any, parentCtor: any): {[key: string]: any[]}|null {\n // Prefer the direct API.\n if (( /** @type {?} */((<any>typeOrFunc))).propMetadata &&\n ( /** @type {?} */((<any>typeOrFunc))).propMetadata !== parentCtor.propMetadata) {\n let /** @type {?} */ propMetadata = ( /** @type {?} */((<any>typeOrFunc))).propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n if (( /** @type {?} */((<any>typeOrFunc))).propDecorators &&\n ( /** @type {?} */((<any>typeOrFunc))).propDecorators !== parentCtor.propDecorators) {\n const /** @type {?} */ propDecorators = ( /** @type {?} */((<any>typeOrFunc))).propDecorators;\n const /** @type {?} */ propMetadata = /** @type {?} */(( <{[key: string]: any[]}>{}));\n Object.keys(propDecorators).forEach(prop => {\n propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);\n });\n return propMetadata;\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect && this._reflect.getOwnMetadata) {\n return this._reflect.getOwnMetadata('propMetadata', typeOrFunc);\n }\n return null;\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\npropMetadata(typeOrFunc: any): {[key: string]: any[]} {\n if (!isType(typeOrFunc)) {\n return {};\n }\n const /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n const /** @type {?} */ propMetadata: {[key: string]: any[]} = {};\n if (parentCtor !== Object) {\n const /** @type {?} */ parentPropMetadata = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata).forEach((propName) => {\n propMetadata[propName] = parentPropMetadata[propName];\n });\n }\n const /** @type {?} */ ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach((propName) => {\n const /** @type {?} */ decorators: any[] = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push(...propMetadata[propName]);\n }\n decorators.push(...ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n }\n/**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\nhasLifecycleHook(type: any, lcProperty: string): boolean {\n return type instanceof Type && lcProperty in type.prototype;\n }\n/**\n * @param {?} name\n * @return {?}\n */\ngetter(name: string): GetterFn { return /** @type {?} */(( <GetterFn>new Function('o', 'return o.' + name + ';'))); }\n/**\n * @param {?} name\n * @return {?}\n */\nsetter(name: string): SetterFn {\n return /** @type {?} */(( <SetterFn>new Function('o', 'v', 'return o.' + name + ' = v;')));\n }\n/**\n * @param {?} name\n * @return {?}\n */\nmethod(name: string): MethodFn {\n const /** @type {?} */ functionBody = `if (!o.${name}) throw new Error('\"${name}\" is undefined');\n return o.${name}.apply(o, args);`;\n return /** @type {?} */(( <MethodFn>new Function('o', 'args', functionBody)));\n }\n/**\n * @param {?} type\n * @return {?}\n */\nimportUri(type: any): string {\n // StaticSymbol\n if (typeof type === 'object' && type['filePath']) {\n return type['filePath'];\n }\n // Runtime type\n return `./${stringify(type)}`;\n }\n/**\n * @param {?} type\n * @return {?}\n */\nresourceUri(type: any): string { return `./${stringify(type)}`; }\n/**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\nresolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any {\n return runtime;\n }\n/**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\nresolveEnum(enumIdentifier: any, name: string): any { return enumIdentifier[name]; }\n}\n\nfunction ReflectionCapabilities_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectionCapabilities.prototype._reflect;\n}\n\n/**\n * @param {?} decoratorInvocations\n * @return {?}\n */\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations: any[]): any[] {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(decoratorInvocation => {\n const /** @type {?} */ decoratorType = decoratorInvocation.type;\n const /** @type {?} */ annotationCls = decoratorType.annotationCls;\n const /** @type {?} */ annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new annotationCls(...annotationArgs);\n });\n}\n/**\n * @param {?} ctor\n * @return {?}\n */\nfunction getParentCtor(ctor: Function): Type<any> {\n const /** @type {?} */ parentProto = Object.getPrototypeOf(ctor.prototype);\n const /** @type {?} */ parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n","\n/**\n * \\@whatItDoes Represents a type that a Component or other object is instances of.\n * \n * \\@description \n * \n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by\n * the `MyCustomComponent` constructor function.\n * \n * \\@stable\n */\nexport const Type = Function;\n/**\n * @param {?} v\n * @return {?}\n */\nexport function isType(v: any): v is Type<any> {\n return typeof v === 'function';\n}\n\nexport interface Type<T> extends Function { new (...args: any[]): T; }\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {stringify} from '../util';\nimport {resolveForwardRef} from './forward_ref';\n/**\n * A unique object used for retrieving items from the {\\@link ReflectiveInjector}.\n * \n * Keys have:\n * - a system-wide unique `id`.\n * - a `token`.\n * \n * `Key` is used internally by {\\@link ReflectiveInjector} because its system-wide unique `id` allows\n * the\n * injector to store created objects in a more efficient way.\n * \n * `Key` should not be created directly. {\\@link ReflectiveInjector} creates keys automatically when\n * resolving\n * providers.\n * \\@experimental\n */\nexport class ReflectiveKey {\n/**\n * Private\n * @param {?} token\n * @param {?} id\n */\nconstructor(public token: Object,\npublic id: number) {\n if (!token) {\n throw new Error('Token must be defined!');\n }\n }\n/**\n * Returns a stringified token.\n * @return {?}\n */\nget displayName(): string { return stringify(this.token); }\n/**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\nstatic get(token: Object): ReflectiveKey {\n return _globalKeyRegistry.get(resolveForwardRef(token));\n }\n/**\n * @return {?} the number of keys registered in the system.\n */\nstatic get numberOfKeys(): number { return _globalKeyRegistry.numberOfKeys; }\n}\n\nfunction ReflectiveKey_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectiveKey.prototype.token;\n/** @type {?} */\nReflectiveKey.prototype.id;\n}\n\n/**\n * \\@internal\n */\nexport class KeyRegistry {\nprivate _allKeys = new Map<Object, ReflectiveKey>();\n/**\n * @param {?} token\n * @return {?}\n */\nget(token: Object): ReflectiveKey {\n if (token instanceof ReflectiveKey) return token;\n\n if (this._allKeys.has(token)) {\n return /** @type {?} */(( this._allKeys.get(token)));\n }\n\n const /** @type {?} */ newKey = new ReflectiveKey(token, ReflectiveKey.numberOfKeys);\n this._allKeys.set(token, newKey);\n return newKey;\n }\n/**\n * @return {?}\n */\nget numberOfKeys(): number { return this._allKeys.size; }\n}\n\nfunction KeyRegistry_tsickle_Closure_declarations() {\n/** @type {?} */\nKeyRegistry.prototype._allKeys;\n}\n\n\nconst /** @type {?} */ _globalKeyRegistry = new KeyRegistry();\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {wrappedError} from '../error_handler';\nimport {ERROR_ORIGINAL_ERROR, getOriginalError} from '../errors';\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {ReflectiveInjector} from './reflective_injector';\nimport {ReflectiveKey} from './reflective_key';\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction findFirstClosedCycle(keys: any[]): any[] {\n const /** @type {?} */ res: any[] = [];\n for (let /** @type {?} */ i = 0; i < keys.length; ++i) {\n if (res.indexOf(keys[i]) > -1) {\n res.push(keys[i]);\n return res;\n }\n res.push(keys[i]);\n }\n return res;\n}\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction constructResolvingPath(keys: any[]): string {\n if (keys.length > 1) {\n const /** @type {?} */ reversed = findFirstClosedCycle(keys.slice().reverse());\n const /** @type {?} */ tokenStrs = reversed.map(k => stringify(k.token));\n return ' (' + tokenStrs.join(' -> ') + ')';\n }\n\n return '';\n}\n\nexport interface InjectionError extends Error {\n keys: ReflectiveKey[];\n injectors: ReflectiveInjector[];\n constructResolvingMessage: (keys: ReflectiveKey[]) => string;\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void;\n}\n/**\n * @param {?} injector\n * @param {?} key\n * @param {?} constructResolvingMessage\n * @param {?=} originalError\n * @return {?}\n */\nfunction injectionError(\n injector: ReflectiveInjector, key: ReflectiveKey,\n constructResolvingMessage: (keys: ReflectiveKey[]) => string,\n originalError?: Error): InjectionError {\n const /** @type {?} */ keys = [key];\n const /** @type {?} */ errMsg = constructResolvingMessage(keys);\n const /** @type {?} */ error = /** @type {?} */((\n (originalError ? wrappedError(errMsg, originalError) : Error(errMsg)) as InjectionError));\n error.addKey = addKey;\n error.keys = keys;\n error.injectors = [injector];\n error.constructResolvingMessage = constructResolvingMessage;\n ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n/**\n * @this {?}\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction addKey(this: InjectionError, injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n // Note: This updated message won't be reflected in the `.stack` property\n this.message = this.constructResolvingMessage(this.keys);\n}\n/**\n * Thrown when trying to retrieve a dependency by key from {\\@link Injector}, but the\n * {\\@link Injector} does not have a {\\@link Provider} for the given key.\n * \n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\n * \n * ```typescript\n * class A {\n * constructor(b:B) {}\n * }\n * \n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nexport function noProviderError(injector: ReflectiveInjector, key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(keys: ReflectiveKey[]) {\n const /** @type {?} */ first = stringify(keys[0].token);\n return `No provider for ${first}!${constructResolvingPath(keys)}`;\n });\n}\n/**\n * Thrown when dependencies form a cycle.\n * \n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\n * \n * ```typescript\n * var injector = Injector.resolveAndCreate([\n * {provide: \"one\", useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]},\n * {provide: \"two\", useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]}\n * ]);\n * \n * expect(() => injector.get(\"one\")).toThrowError();\n * ```\n * \n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nexport function cyclicDependencyError(\n injector: ReflectiveInjector, key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(keys: ReflectiveKey[]) {\n return `Cannot instantiate cyclic dependency!${constructResolvingPath(keys)}`;\n });\n}\n/**\n * Thrown when a constructing type returns with an Error.\n * \n * The `InstantiationError` class contains the original error plus the dependency graph which caused\n * this object to be instantiated.\n * \n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\n * \n * ```typescript\n * class A {\n * constructor() {\n * throw new Error('message');\n * }\n * }\n * \n * var injector = Injector.resolveAndCreate([A]);\n * try {\n * injector.get(A);\n * } catch (e) {\n * expect(e instanceof InstantiationError).toBe(true);\n * expect(e.originalException.message).toEqual(\"message\");\n * expect(e.originalStack).toBeDefined();\n * }\n * ```\n * @param {?} injector\n * @param {?} originalException\n * @param {?} originalStack\n * @param {?} key\n * @return {?}\n */\nexport function instantiationError(\n injector: ReflectiveInjector, originalException: any, originalStack: any,\n key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(keys: ReflectiveKey[]) {\n const /** @type {?} */ first = stringify(keys[0].token);\n return `${originalException.message}: Error during instantiation of ${first}!${constructResolvingPath(keys)}.`;\n }, originalException);\n}\n/**\n * Thrown when an object other then {\\@link Provider} (or `Type`) is passed to {\\@link Injector}\n * creation.\n * \n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\n * \n * ```typescript\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\n * ```\n * @param {?} provider\n * @return {?}\n */\nexport function invalidProviderError(provider: any) {\n return Error(\n `Invalid provider - only instances of Provider and Type are allowed, got: ${provider}`);\n}\n/**\n * Thrown when the class has no annotation information.\n * \n * Lack of annotation information prevents the {\\@link Injector} from determining which dependencies\n * need to be injected into the constructor.\n * \n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\n * \n * ```typescript\n * class A {\n * constructor(b) {}\n * }\n * \n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n * \n * This error is also thrown when the class not marked with {\\@link Injectable} has parameter types.\n * \n * ```typescript\n * class B {}\n * \n * class A {\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\n * }\n * \n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\n * ```\n * \\@stable\n * @param {?} typeOrFunc\n * @param {?} params\n * @return {?}\n */\nexport function noAnnotationError(typeOrFunc: Type<any>| Function, params: any[][]): Error {\n const /** @type {?} */ signature: string[] = [];\n for (let /** @type {?} */ i = 0, /** @type {?} */ ii = params.length; i < ii; i++) {\n const /** @type {?} */ parameter = params[i];\n if (!parameter || parameter.length == 0) {\n signature.push('?');\n } else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return Error(\n 'Cannot resolve all parameters for \\'' + stringify(typeOrFunc) + '\\'(' +\n signature.join(', ') + '). ' +\n 'Make sure that all the parameters are decorated with Inject or have valid type annotations and that \\'' +\n stringify(typeOrFunc) + '\\' is decorated with Injectable.');\n}\n/**\n * Thrown when getting an object by index.\n * \n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\n * \n * ```typescript\n * class A {}\n * \n * var injector = Injector.resolveAndCreate([A]);\n * \n * expect(() => injector.getAt(100)).toThrowError();\n * ```\n * \\@stable\n * @param {?} index\n * @return {?}\n */\nexport function outOfBoundsError(index: number) {\n return Error(`Index ${index} is out-of-bounds.`);\n}\n/**\n * Thrown when a multi provider and a regular provider are bound to the same token.\n * \n * ### Example\n * \n * ```typescript\n * expect(() => Injector.resolveAndCreate([\n * { provide: \"Strings\", useValue: \"string1\", multi: true},\n * { provide: \"Strings\", useValue: \"string2\", multi: false}\n * ])).toThrowError();\n * ```\n * @param {?} provider1\n * @param {?} provider2\n * @return {?}\n */\nexport function mixingMultiProvidersWithRegularProvidersError(\n provider1: any, provider2: any): Error {\n return Error(`Cannot mix multi providers and regular providers, got: ${provider1} ${provider2}`);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ERROR_ORIGINAL_ERROR, getDebugContext, getErrorLogger, getOriginalError} from './errors';\n/**\n * \\@whatItDoes Provides a hook for centralized exception handling.\n * \n * \\@description \n * \n * The default implementation of `ErrorHandler` prints error messages to the `console`. To\n * intercept error handling, write a custom exception handler that replaces this default as\n * appropriate for your app.\n * \n * ### Example\n * \n * ```\n * class MyErrorHandler implements ErrorHandler {\n * handleError(error) {\n * // do something with the exception\n * }\n * }\n * \n * \\@NgModule({ \n * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]\n * })\n * class MyModule {}\n * ```\n * \n * \\@stable\n */\nexport class ErrorHandler {\n/**\n * \\@internal\n */\n_console: Console = console;\n/**\n * @param {?=} deprecatedParameter\n */\nconstructor(\n /**\n * @deprecated since v4.0 parameter no longer has an effect, as ErrorHandler will never\n * rethrow.\n */\n deprecatedParameter?: boolean) {}\n/**\n * @param {?} error\n * @return {?}\n */\nhandleError(error: any): void {\n const /** @type {?} */ originalError = this._findOriginalError(error);\n const /** @type {?} */ context = this._findContext(error);\n // Note: Browser consoles show the place from where console.error was called.\n // We can use this to give users additional information about the error.\n const /** @type {?} */ errorLogger = getErrorLogger(error);\n\n errorLogger(this._console, `ERROR`, error);\n if (originalError) {\n errorLogger(this._console, `ORIGINAL ERROR`, originalError);\n }\n if (context) {\n errorLogger(this._console, 'ERROR CONTEXT', context);\n }\n }\n/**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n_findContext(error: any): any {\n if (error) {\n return getDebugContext(error) ? getDebugContext(error) :\n this._findContext(getOriginalError(error));\n }\n\n return null;\n }\n/**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n_findOriginalError(error: Error): any {\n let /** @type {?} */ e = getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n\n return e;\n }\n}\n\nfunction ErrorHandler_tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nErrorHandler.prototype._console;\n}\n\n/**\n * @param {?} message\n * @param {?} originalError\n * @return {?}\n */\nexport function wrappedError(message: string, originalError: any): Error {\n const /** @type {?} */ msg =\n `${message} caused by: ${originalError instanceof Error ? originalError.message: originalError }`;\n const /** @type {?} */ error = Error(msg);\n ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {DebugContext} from './view/index';\n\nexport const /** @type {?} */ ERROR_TYPE = 'ngType';\nexport const /** @type {?} */ ERROR_COMPONENT_TYPE = 'ngComponentType';\nexport const /** @type {?} */ ERROR_DEBUG_CONTEXT = 'ngDebugContext';\nexport const /** @type {?} */ ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nexport const /** @type {?} */ ERROR_LOGGER = 'ngErrorLogger';\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getType(error: Error): Function {\n return ( /** @type {?} */((error as any)))[ERROR_TYPE];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getDebugContext(error: Error): DebugContext {\n return ( /** @type {?} */((error as any)))[ERROR_DEBUG_CONTEXT];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getOriginalError(error: Error): Error {\n return ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getErrorLogger(error: Error): (console: Console, ...values: any[]) => void {\n return ( /** @type {?} */((error as any)))[ERROR_LOGGER] || defaultErrorLogger;\n}\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nfunction defaultErrorLogger(console: Console, ...values: any[]) {\n ( /** @type {?} */((<any>console.error)))(...values);\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {InjectionToken} from './injection_token';\n\nconst /** @type {?} */ _THROW_IF_NOT_FOUND = new Object();\nexport const /** @type {?} */ THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\nclass _NullInjector implements Injector {\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = _THROW_IF_NOT_FOUND): any {\n if (notFoundValue === _THROW_IF_NOT_FOUND) {\n throw new Error(`No provider for ${stringify(token)}!`);\n }\n return notFoundValue;\n }\n}\n/**\n * \\@whatItDoes Injector interface\n * \\@howToUse \n * ```\n * const injector: Injector = ...;\n * injector.get(...);\n * ```\n * \n * \\@description \n * For more details, see the {\\@linkDocs guide/dependency-injection \"Dependency Injection Guide\"}.\n * \n * ### Example\n * \n * {\\@example core/di/ts/injector_spec.ts region='Injector'}\n * \n * `Injector` returns itself when given `Injector` as a token:\n * {\\@example core/di/ts/injector_spec.ts region='injectInjector'}\n * \n * \\@stable\n * @abstract\n */\nexport abstract class Injector {\n static THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n static NULL: Injector = new _NullInjector();\n/**\n * Retrieves an instance from the injector based on the provided token.\n * If not found:\n * - Throws an error if no `notFoundValue` that is not equal to\n * Injector.THROW_IF_NOT_FOUND is given\n * - Returns the `notFoundValue` otherwise\n * @abstract\n * @template T\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget<T>(token: Type<T>|InjectionToken<T>, notFoundValue?: T) {}\n/**\n * @deprecated from v4.0.0 use Type<T> or InjectionToken<T>\n * @suppress {duplicate}\n * @abstract\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue?: any) {}\n}\n\nfunction Injector_tsickle_Closure_declarations() {\n/** @type {?} */\nInjector.THROW_IF_NOT_FOUND;\n/** @type {?} */\nInjector.NULL;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\n\n\n/**\n * An interface that a function passed into {@link forwardRef} has to implement.\n *\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}\n * @experimental\n */\nexport interface ForwardRefFn { (): any; }\n/**\n * Allows to refer to references which are not yet defined.\n * \n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared,\n * but not yet defined. It is also used when the `token` which we use when creating a query is not\n * yet defined.\n * \n * ### Example\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * \\@experimental\n * @param {?} forwardRefFn\n * @return {?}\n */\nexport function forwardRef(forwardRefFn: ForwardRefFn): Type<any> {\n ( /** @type {?} */((<any>forwardRefFn))).__forward_ref__ = forwardRef;\n ( /** @type {?} */((<any>forwardRefFn))).toString = function() { return stringify(this()); };\n return ( /** @type {?} */((<Type<any>> /** @type {?} */((<any>forwardRefFn)))));\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n * \n * Acts as the identity function when given a non-forward-ref value.\n * \n * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview))\n * \n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n * \n * See: {\\@link forwardRef}\n * \\@experimental\n * @param {?} type\n * @return {?}\n */\nexport function resolveForwardRef(type: any): any {\n if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__') &&\n type.__forward_ref__ === forwardRef) {\n return ( /** @type {?} */((<ForwardRefFn>type)))();\n } else {\n return type;\n }\n}\n","\n/**\n * \\@whatItDoes Represents the version of Angular\n * \n * \\@stable\n */\nexport class Version {\n/**\n * @param {?} full\n */\nconstructor(public full: string) {}\n/**\n * @return {?}\n */\nget major(): string { return this.full.split('.')[0]; }\n/**\n * @return {?}\n */\nget minor(): string { return this.full.split('.')[1]; }\n/**\n * @return {?}\n */\nget patch(): string { return this.full.split('.').slice(2).join('.'); }\n}\n\nfunction Version_tsickle_Closure_declarations() {\n/** @type {?} */\nVersion.prototype.full;\n}\n\n/**\n * \\@stable\n */\nexport const VERSION = new Version('4.2.3');\n","\nexport type ViewEncapsulation = number;\nexport let ViewEncapsulation: any = {};\nViewEncapsulation.Emulated = 0;\nViewEncapsulation.Native = 1;\nViewEncapsulation.None = 2;\nViewEncapsulation[ViewEncapsulation.Emulated] = \"Emulated\";\nViewEncapsulation[ViewEncapsulation.Native] = \"Native\";\nViewEncapsulation[ViewEncapsulation.None] = \"None\";\n\n/**\n * Metadata properties available for configuring Views.\n * \n * For details on the `\\@Component` annotation, see {\\@link Component}.\n * \n * ### Example\n * \n * ```\n * \\@Component({ \n * selector: 'greet',\n * template: 'Hello {{name}}!',\n * })\n * class Greet {\n * name: string;\n * \n * constructor() {\n * this.name = 'World';\n * }\n * }\n * ```\n * \n * @deprecated Use Component instead.\n * \n * {\\@link Component}\n */\nexport class ViewMetadata {\n/**\n * {\\@link Component#templateUrl}\n */\ntemplateUrl: string|undefined;\n/**\n * {\\@link Component#template}\n */\ntemplate: string|undefined;\n/**\n * {\\@link Component#stylesUrl}\n */\nstyleUrls: string[]|undefined;\n/**\n * {\\@link Component#styles}\n */\nstyles: string[]|undefined;\n/**\n * {\\@link Component#encapsulation}\n */\nencapsulation: ViewEncapsulation|undefined;\n/**\n * {\\@link Component#animation}\n */\nanimations: any[]|undefined;\n/**\n * {\\@link Component#interpolation}\n */\ninterpolation: [string, string]|undefined;\n/**\n * @param {?=} __0\n */\nconstructor(\n {templateUrl, template, encapsulation, styles, styleUrls, animations, interpolation}: {\n templateUrl?: string,\n template?: string,\n encapsulation?: ViewEncapsulation,\n styles?: string[],\n styleUrls?: string[],\n animations?: any[],\n interpolation?: [string, string]\n } = {}) {\n this.templateUrl = templateUrl;\n this.template = template;\n this.styleUrls = styleUrls;\n this.styles = styles;\n this.encapsulation = encapsulation;\n this.animations = animations;\n this.interpolation = interpolation;\n }\n}\n\nfunction ViewMetadata_tsickle_Closure_declarations() {\n/**\n * {\\@link Component#templateUrl}\n * @type {?}\n */\nViewMetadata.prototype.templateUrl;\n/**\n * {\\@link Component#template}\n * @type {?}\n */\nViewMetadata.prototype.template;\n/**\n * {\\@link Component#stylesUrl}\n * @type {?}\n */\nViewMetadata.prototype.styleUrls;\n/**\n * {\\@link Component#styles}\n * @type {?}\n */\nViewMetadata.prototype.styles;\n/**\n * {\\@link Component#encapsulation}\n * @type {?}\n */\nViewMetadata.prototype.encapsulation;\n/**\n * {\\@link Component#animation}\n * @type {?}\n */\nViewMetadata.prototype.animations;\n/**\n * {\\@link Component#interpolation}\n * @type {?}\n */\nViewMetadata.prototype.interpolation;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * This indirection is needed to free up Component, etc symbols in the public API\n * to be used by the decorator versions of these annotations.\n */\n\n\nimport {Attribute, ContentChild, ContentChildren, Query, ViewChild, ViewChildren} from './metadata/di';\nimport {Component, Directive, HostBinding, HostListener, Input, Output, Pipe} from './metadata/directives';\nimport {ModuleWithProviders, NgModule, SchemaMetadata} from './metadata/ng_module';\nimport {ViewEncapsulation} from './metadata/view';\n\nexport {ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, ContentChild, ContentChildDecorator, ContentChildren, ContentChildrenDecorator, Query, ViewChild, ViewChildDecorator, ViewChildren, ViewChildrenDecorator} from './metadata/di';\nexport {Component, ComponentDecorator, Directive, DirectiveDecorator, HostBinding, HostListener, Input, Output, Pipe} from './metadata/directives';\nexport {AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit} from './metadata/lifecycle_hooks';\nexport {CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NO_ERRORS_SCHEMA, NgModule, SchemaMetadata} from './metadata/ng_module';\nexport {ViewEncapsulation} from './metadata/view';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ChangeDetectionStrategy} from '../change_detection/constants';\nimport {Provider} from '../di';\nimport {Type} from '../type';\nimport {TypeDecorator, makeDecorator, makePropDecorator} from '../util/decorators';\n\nimport {ViewEncapsulation} from './view';\n\n\n/**\n * Type of the Directive decorator / constructor function.\n *\n * @stable\n */\nexport interface DirectiveDecorator {\n /**\n * @whatItDoes Marks a class as an Angular directive and collects directive configuration\n * metadata.\n *\n * @howToUse\n *\n * ```\n * import {Directive} from '@angular/core';\n *\n * @Directive({\n * selector: 'my-directive',\n * })\n * export class MyDirective {\n * }\n * ```\n *\n * @description\n *\n * Directive decorator allows you to mark a class as an Angular directive and provide additional\n * metadata that determines how the directive should be processed, instantiated and used at\n * runtime.\n *\n * Directives allow you to attach behavior to elements in the DOM..\n *\n * A directive must belong to an NgModule in order for it to be usable\n * by another directive, component, or application. To specify that a directive is a member of an\n * NgModule,\n * you should list it in the `declarations` field of that NgModule.\n *\n * In addition to the metadata configuration specified via the Directive decorator,\n * directives can control their runtime behavior by implementing various Life-Cycle hooks.\n *\n * **Metadata Properties:**\n *\n * * **exportAs** - name under which the component instance is exported in a template\n * * **host** - map of class property to host element bindings for events, properties and\n * attributes\n * * **inputs** - list of class property names to data-bind as component inputs\n * * **outputs** - list of class property names that expose output events that others can\n * subscribe to\n * * **providers** - list of providers available to this component and its children\n * * **queries** - configure queries that can be injected into the component\n * * **selector** - css selector that identifies this component in a template\n *\n * @stable\n * @Annotation\n */\n (obj: Directive): TypeDecorator;\n\n /**\n * See the {@link Directive} decorator.\n */\n new (obj: Directive): Directive;\n}\n\nexport interface Directive {\n /**\n * The CSS selector that triggers the instantiation of a directive.\n *\n * Angular only allows directives to trigger on CSS selectors that do not cross element\n * boundaries.\n *\n * `selector` may be declared as one of the following:\n *\n * - `element-name`: select by element name.\n * - `.class`: select by class name.\n * - `[attribute]`: select by attribute name.\n * - `[attribute=value]`: select by attribute name and value.\n * - `:not(sub_selector)`: select only if the element does not match the `sub_selector`.\n * - `selector1, selector2`: select if either `selector1` or `selector2` matches.\n *\n *\n * ### Example\n *\n * Suppose we have a directive with an `input[type=text]` selector.\n *\n * And the following HTML:\n *\n * ```html\n * <form>\n * <input type=\"text\">\n * <input type=\"radio\">\n * <form>\n * ```\n *\n * The directive would only be instantiated on the `<input type=\"text\">` element.\n *\n */\n selector?: string;\n\n /**\n * Enumerates the set of data-bound input properties for a directive\n *\n * Angular automatically updates input properties during change detection.\n *\n * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`\n * configuration:\n *\n * - `directiveProperty` specifies the component property where the value is written.\n * - `bindingProperty` specifies the DOM property where the value is read from.\n *\n * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ivhfXY?p=preview))\n *\n * The following example creates a component with two data-bound properties.\n *\n * ```typescript\n * @Component({\n * selector: 'bank-account',\n * inputs: ['bankName', 'id: account-id'],\n * template: `\n * Bank Name: {{bankName}}\n * Account Id: {{id}}\n * `\n * })\n * class BankAccount {\n * bankName: string;\n * id: string;\n *\n * // this property is not bound, and won't be automatically updated by Angular\n * normalizedBankName: string;\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\n * `\n * })\n * class App {}\n * ```\n *\n */\n inputs?: string[];\n\n /**\n * Enumerates the set of event-bound output properties.\n *\n * When an output property emits an event, an event handler attached to that event\n * the template is invoked.\n *\n * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`\n * configuration:\n *\n * - `directiveProperty` specifies the component property that emits events.\n * - `bindingProperty` specifies the DOM property the event handler is attached to.\n *\n * ### Example ([live demo](http://plnkr.co/edit/d5CNq7?p=preview))\n *\n * ```typescript\n * @Directive({\n * selector: 'interval-dir',\n * outputs: ['everySecond', 'five5Secs: everyFiveSeconds']\n * })\n * class IntervalDir {\n * everySecond = new EventEmitter();\n * five5Secs = new EventEmitter();\n *\n * constructor() {\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\n * </interval-dir>\n * `\n * })\n * class App {\n * everySecond() { console.log('second'); }\n * everyFiveSeconds() { console.log('five seconds'); }\n * }\n * ```\n *\n */\n outputs?: string[];\n\n /**\n * Specify the events, actions, properties and attributes related to the host element.\n *\n * ## Host Listeners\n *\n * Specifies which DOM events a directive listens to via a set of `(event)` to `method`\n * key-value pairs:\n *\n * - `event`: the DOM event that the directive listens to.\n * - `statement`: the statement to execute when the event occurs.\n * If the evaluation of the statement returns `false`, then `preventDefault`is applied on the DOM\n * event.\n *\n * To listen to global events, a target must be added to the event name.\n * The target can be `window`, `document` or `body`.\n *\n * When writing a directive event binding, you can also refer to the $event local variable.\n *\n * ### Example ([live demo](http://plnkr.co/edit/DlA5KU?p=preview))\n *\n * The following example declares a directive that attaches a click listener to the button and\n * counts clicks.\n *\n * ```typescript\n * @Directive({\n * selector: 'button[counting]',\n * host: {\n * '(click)': 'onClick($event.target)'\n * }\n * })\n * class CountClicks {\n * numberOfClicks = 0;\n *\n * onClick(btn) {\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<button counting>Increment</button>`\n * })\n * class App {}\n * ```\n *\n * ## Host Property Bindings\n *\n * Specifies which DOM properties a directive updates.\n *\n * Angular automatically checks host property bindings during change detection.\n * If a binding changes, it will update the host element of the directive.\n *\n * ### Example ([live demo](http://plnkr.co/edit/gNg0ED?p=preview))\n *\n * The following example creates a directive that sets the `valid` and `invalid` classes\n * on the DOM element that has ngModel directive on it.\n *\n * ```typescript\n * @Directive({\n * selector: '[ngModel]',\n * host: {\n * '[class.valid]': 'valid',\n * '[class.invalid]': 'invalid'\n * }\n * })\n * class NgModelStatus {\n * constructor(public control:NgModel) {}\n * get valid { return this.control.valid; }\n * get invalid { return this.control.invalid; }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<input [(ngModel)]=\"prop\">`\n * })\n * class App {\n * prop;\n * }\n * ```\n *\n * ## Attributes\n *\n * Specifies static attributes that should be propagated to a host element.\n *\n * ### Example\n *\n * In this example using `my-button` directive (ex.: `<div my-button></div>`) on a host element\n * (here: `<div>` ) will ensure that this element will get the \"button\" role.\n *\n * ```typescript\n * @Directive({\n * selector: '[my-button]',\n * host: {\n * 'role': 'button'\n * }\n * })\n * class MyButton {\n * }\n * ```\n */\n host?: {[key: string]: string};\n\n /**\n * Defines the set of injectable objects that are visible to a Directive and its light DOM\n * children.\n *\n * ## Simple Example\n *\n * Here is an example of a class that can be injected:\n *\n * ```\n * class Greeter {\n * greet(name:string) {\n * return 'Hello ' + name + '!';\n * }\n * }\n *\n * @Directive({\n * selector: 'greet',\n * providers: [\n * Greeter\n * ]\n * })\n * class HelloWorld {\n * greeter:Greeter;\n *\n * constructor(greeter:Greeter) {\n * this.greeter = greeter;\n * }\n * }\n * ```\n */\n providers?: Provider[];\n\n /**\n * Defines the name that can be used in the template to assign this directive to a variable.\n *\n * ## Simple Example\n *\n * ```\n * @Directive({\n * selector: 'child-dir',\n * exportAs: 'child'\n * })\n * class ChildDir {\n * }\n *\n * @Component({\n * selector: 'main',\n * template: `<child-dir #c=\"child\"></child-dir>`\n * })\n * class MainComponent {\n * }\n *\n * ```\n */\n exportAs?: string;\n\n /**\n * Configures the queries that will be injected into the directive.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * ### Example\n *\n * ```\n * @Component({\n * selector: 'someDir',\n * queries: {\n * contentChildren: new ContentChildren(ChildDirective),\n * viewChildren: new ViewChildren(ChildDirective)\n * },\n * template: '<child-directive></child-directive>'\n * })\n * class SomeDir {\n * contentChildren: QueryList<ChildDirective>,\n * viewChildren: QueryList<ChildDirective>\n *\n * ngAfterContentInit() {\n * // contentChildren is set\n * }\n *\n * ngAfterViewInit() {\n * // viewChildren is set\n * }\n * }\n * ```\n */\n queries?: {[key: string]: any};\n}\n/**\n * Directive decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Directive: DirectiveDecorator =\n <DirectiveDecorator>makeDecorator('Directive', (dir: Directive = {}) => dir);\n\n/**\n * Type of the Component decorator / constructor function.\n *\n * @stable\n */\nexport interface ComponentDecorator {\n /**\n * @whatItDoes Marks a class as an Angular component and collects component configuration\n * metadata.\n *\n * @howToUse\n *\n * {@example core/ts/metadata/metadata.ts region='component'}\n *\n * @description\n * Component decorator allows you to mark a class as an Angular component and provide additional\n * metadata that determines how the component should be processed, instantiated and used at\n * runtime.\n *\n * Components are the most basic building block of an UI in an Angular application.\n * An Angular application is a tree of Angular components.\n * Angular components are a subset of directives. Unlike directives, components always have\n * a template and only one component can be instantiated per an element in a template.\n *\n * A component must belong to an NgModule in order for it to be usable\n * by another component or application. To specify that a component is a member of an NgModule,\n * you should list it in the `declarations` field of that NgModule.\n *\n * In addition to the metadata configuration specified via the Component decorator,\n * components can control their runtime behavior by implementing various Life-Cycle hooks.\n *\n * **Metadata Properties:**\n *\n * * **animations** - list of animations of this component\n * * **changeDetection** - change detection strategy used by this component\n * * **encapsulation** - style encapsulation strategy used by this component\n * * **entryComponents** - list of components that are dynamically inserted into the view of this\n * component\n * * **exportAs** - name under which the component instance is exported in a template\n * * **host** - map of class property to host element bindings for events, properties and\n * attributes\n * * **inputs** - list of class property names to data-bind as component inputs\n * * **interpolation** - custom interpolation markers used in this component's template\n * * **moduleId** - ES/CommonJS module id of the file in which this component is defined\n * * **outputs** - list of class property names that expose output events that others can\n * subscribe to\n * * **providers** - list of providers available to this component and its children\n * * **queries** - configure queries that can be injected into the component\n * * **selector** - css selector that identifies this component in a template\n * * **styleUrls** - list of urls to stylesheets to be applied to this component's view\n * * **styles** - inline-defined styles to be applied to this component's view\n * * **template** - inline-defined template for the view\n * * **templateUrl** - url to an external file containing a template for the view\n * * **viewProviders** - list of providers available to this component and its view children\n *\n * ### Example\n *\n * {@example core/ts/metadata/metadata.ts region='component'}\n *\n * @stable\n * @Annotation\n */\n (obj: Component): TypeDecorator;\n /**\n * See the {@link Component} decorator.\n */\n new (obj: Component): Component;\n}\n\n/**\n * Type of the Component metadata.\n *\n * @stable\n */\nexport interface Component extends Directive {\n /**\n * Defines the used change detection strategy.\n *\n * When a component is instantiated, Angular creates a change detector, which is responsible for\n * propagating the component's bindings.\n *\n * The `changeDetection` property defines, whether the change detection will be checked every time\n * or only when the component tells it to do so.\n */\n changeDetection?: ChangeDetectionStrategy;\n\n /**\n * Defines the set of injectable objects that are visible to its view DOM children.\n *\n * ## Simple Example\n *\n * Here is an example of a class that can be injected:\n *\n * ```\n * class Greeter {\n * greet(name:string) {\n * return 'Hello ' + name + '!';\n * }\n * }\n *\n * @Directive({\n * selector: 'needs-greeter'\n * })\n * class NeedsGreeter {\n * greeter:Greeter;\n *\n * constructor(greeter:Greeter) {\n * this.greeter = greeter;\n * }\n * }\n *\n * @Component({\n * selector: 'greet',\n * viewProviders: [\n * Greeter\n * ],\n * template: `<needs-greeter></needs-greeter>`\n * })\n * class HelloWorld {\n * }\n *\n * ```\n */\n viewProviders?: Provider[];\n\n /**\n * The module id of the module that contains the component.\n * Needed to be able to resolve relative urls for templates and styles.\n * In CommonJS, this can always be set to `module.id`, similarly SystemJS exposes `__moduleName`\n * variable within each module.\n *\n *\n * ## Simple Example\n *\n * ```\n * @Directive({\n * selector: 'someDir',\n * moduleId: module.id\n * })\n * class SomeDir {\n * }\n *\n * ```\n */\n moduleId?: string;\n\n /**\n * Specifies a template URL for an Angular component.\n *\n *Only one of `templateUrl` or `template` can be defined per View.\n */\n templateUrl?: string;\n\n /**\n * Specifies an inline template for an Angular component.\n *\n * Only one of `templateUrl` or `template` can be defined per Component.\n */\n template?: string;\n\n /**\n * Specifies stylesheet URLs for an Angular component.\n */\n styleUrls?: string[];\n\n /**\n * Specifies inline stylesheets for an Angular component.\n */\n styles?: string[];\n\n /**\n * Animations are defined on components via an animation-like DSL. This DSL approach to describing\n * animations allows for a flexibility that both benefits developers and the framework.\n *\n * Animations work by listening on state changes that occur on an element within\n * the template. When a state change occurs, Angular can then take advantage and animate the\n * arc in between. This works similar to how CSS transitions work, however, by having a\n * programmatic DSL, animations are not limited to environments that are DOM-specific.\n * (Angular can also perform optimizations behind the scenes to make animations more performant.)\n *\n * For animations to be available for use, animation state changes are placed within\n * {@link trigger animation triggers} which are housed inside of the `animations` annotation\n * metadata. Within a trigger both {@link state state} and {@link transition transition} entries\n * can be placed.\n *\n * ```typescript\n * @Component({\n * selector: 'animation-cmp',\n * templateUrl: 'animation-cmp.html',\n * animations: [\n * // this here is our animation trigger that\n * // will contain our state change animations.\n * trigger('myTriggerName', [\n * // the styles defined for the `on` and `off`\n * // states declared below are persisted on the\n * // element once the animation completes.\n * state('on', style({ opacity: 1 }),\n * state('off', style({ opacity: 0 }),\n *\n * // this here is our animation that kicks off when\n * // this state change jump is true\n * transition('on => off', [\n * animate(\"1s\")\n * ])\n * ])\n * ]\n * })\n * ```\n *\n * As depicted in the code above, a group of related animation states are all contained within\n * an animation `trigger` (the code example above called the trigger `myTriggerName`).\n * When a trigger is created then it can be bound onto an element within the component's\n * template via a property prefixed by an `@` symbol followed by trigger name and an expression\n * that\n * is used to determine the state value for that trigger.\n *\n * ```html\n * <!-- animation-cmp.html -->\n * <div @myTriggerName=\"expression\">...</div>\n * ```\n *\n * For state changes to be executed, the `expression` value must change value from its existing\n * value\n * to something that we have set an animation to animate on (in the example above we are listening\n * to a change of state between `on` and `off`). The `expression` value attached to the trigger\n * must be something that can be evaluated with the template/component context.\n *\n * ### DSL Animation Functions\n *\n * Please visit each of the animation DSL functions listed below to gain a better understanding\n * of how and why they are used for crafting animations in Angular:\n *\n * - {@link trigger trigger()}\n * - {@link state state()}\n * - {@link transition transition()}\n * - {@link group group()}\n * - {@link sequence sequence()}\n * - {@link style style()}\n * - {@link animate animate()}\n * - {@link keyframes keyframes()}\n */\n animations?: any[];\n\n /**\n * Specifies how the template and the styles should be encapsulated:\n * - {@link ViewEncapsulation#Native `ViewEncapsulation.Native`} to use shadow roots - only works\n * if natively available on the platform,\n * - {@link ViewEncapsulation#Emulated `ViewEncapsulation.Emulated`} to use shimmed CSS that\n * emulates the native behavior,\n * - {@link ViewEncapsulation#None `ViewEncapsulation.None`} to use global CSS without any\n * encapsulation.\n *\n * When no `encapsulation` is defined for the component, the default value from the\n * {@link CompilerOptions} is used. The default is `ViewEncapsulation.Emulated`}. Provide a new\n * `CompilerOptions` to override this value.\n *\n * If the encapsulation is set to `ViewEncapsulation.Emulated` and the component has no `styles`\n * nor `styleUrls` the encapsulation will automatically be switched to `ViewEncapsulation.None`.\n */\n encapsulation?: ViewEncapsulation;\n\n /**\n * Overrides the default encapsulation start and end delimiters (respectively `{{` and `}}`)\n */\n interpolation?: [string, string];\n\n /**\n * Defines the components that should be compiled as well when\n * this component is defined. For each components listed here,\n * Angular will create a {@link ComponentFactory} and store it in the\n * {@link ComponentFactoryResolver}.\n */\n entryComponents?: Array<Type<any>|any[]>;\n}\n/**\n * Component decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Component: ComponentDecorator = <ComponentDecorator>makeDecorator(\n 'Component', (c: Component = {}) => ({changeDetection: ChangeDetectionStrategy.Default, ...c}),\n Directive);\n\n/**\n * Type of the Pipe decorator / constructor function.\n *\n * @stable\n */\nexport interface PipeDecorator {\n /**\n * Declare reusable pipe function.\n *\n * A \"pure\" pipe is only re-evaluated when either the input or any of the arguments change.\n *\n * When not specified, pipes default to being pure.\n */\n (obj: Pipe): TypeDecorator;\n\n /**\n * See the {@link Pipe} decorator.\n */\n new (obj: Pipe): Pipe;\n}\n\n/**\n * Type of the Pipe metadata.\n *\n * @stable\n */\nexport interface Pipe {\n name: string;\n pure?: boolean;\n}\n/**\n * Pipe decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Pipe: PipeDecorator =\n <PipeDecorator>makeDecorator('Pipe', (p: Pipe) => ({pure: true, ...p}));\n\n\n/**\n * Type of the Input decorator / constructor function.\n *\n * @stable\n */\nexport interface InputDecorator {\n /**\n * Declares a data-bound input property.\n *\n * Angular automatically updates data-bound properties during change detection.\n *\n * `Input` takes an optional parameter that specifies the name\n * used when instantiating a component in the template. When not provided,\n * the name of the decorated property is used.\n *\n * ### Example\n *\n * The following example creates a component with two input properties.\n *\n * ```typescript\n * @Component({\n * selector: 'bank-account',\n * template: `\n * Bank Name: {{bankName}}\n * Account Id: {{id}}\n * `\n * })\n * class BankAccount {\n * @Input() bankName: string;\n * @Input('account-id') id: string;\n *\n * // this property is not bound, and won't be automatically updated by Angular\n * normalizedBankName: string;\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\n * `\n * })\n *\n * class App {}\n * ```\n * @stable\n */\n (bindingPropertyName?: string): any;\n new (bindingPropertyName?: string): any;\n}\n\n/**\n * Type of the Input metadata.\n *\n * @stable\n */\nexport interface Input {\n /**\n * Name used when instantiating a component in the template.\n */\n bindingPropertyName?: string;\n}\n/**\n * Input decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Input: InputDecorator =\n makePropDecorator('Input', (bindingPropertyName?: string) => ({bindingPropertyName}));\n\n/**\n * Type of the Output decorator / constructor function.\n *\n * @stable\n */\nexport interface OutputDecorator {\n /**\n * Declares an event-bound output property.\n *\n * When an output property emits an event, an event handler attached to that event\n * the template is invoked.\n *\n * `Output` takes an optional parameter that specifies the name\n * used when instantiating a component in the template. When not provided,\n * the name of the decorated property is used.\n *\n * ### Example\n *\n * ```typescript\n * @Directive({\n * selector: 'interval-dir',\n * })\n * class IntervalDir {\n * @Output() everySecond = new EventEmitter();\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\n *\n * constructor() {\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\n * </interval-dir>\n * `\n * })\n * class App {\n * everySecond() { console.log('second'); }\n * everyFiveSeconds() { console.log('five seconds'); }\n * }\n * ```\n * @stable\n */\n (bindingPropertyName?: string): any;\n new (bindingPropertyName?: string): any;\n}\n\n/**\n * Type of the Output metadata.\n *\n * @stable\n */\nexport interface Output { bindingPropertyName?: string; }\n/**\n * Output decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Output: OutputDecorator =\n makePropDecorator('Output', (bindingPropertyName?: string) => ({bindingPropertyName}));\n\n\n/**\n * Type of the HostBinding decorator / constructor function.\n *\n * @stable\n */\nexport interface HostBindingDecorator {\n /**\n * Declares a host property binding.\n *\n * Angular automatically checks host property bindings during change detection.\n * If a binding changes, it will update the host element of the directive.\n *\n * `HostBinding` takes an optional parameter that specifies the property\n * name of the host element that will be updated. When not provided,\n * the class property name is used.\n *\n * ### Example\n *\n * The following example creates a directive that sets the `valid` and `invalid` classes\n * on the DOM element that has ngModel directive on it.\n *\n * ```typescript\n * @Directive({selector: '[ngModel]'})\n * class NgModelStatus {\n * constructor(public control:NgModel) {}\n * @HostBinding('class.valid') get valid() { return this.control.valid; }\n * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<input [(ngModel)]=\"prop\">`,\n * })\n * class App {\n * prop;\n * }\n * ```\n * @stable\n */\n (hostPropertyName?: string): any;\n new (hostPropertyName?: string): any;\n}\n\n/**\n * Type of the HostBinding metadata.\n *\n * @stable\n */\nexport interface HostBinding { hostPropertyName?: string; }\n/**\n * HostBinding decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const HostBinding: HostBindingDecorator =\n makePropDecorator('HostBinding', (hostPropertyName?: string) => ({hostPropertyName}));\n\n\n/**\n * Type of the HostListener decorator / constructor function.\n *\n * @stable\n */\nexport interface HostListenerDecorator {\n /**\n * Declares a host listener.\n *\n * Angular will invoke the decorated method when the host element emits the specified event.\n *\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM event.\n *\n * ### Example\n *\n * The following example declares a directive that attaches a click listener to the button and\n * counts clicks.\n *\n * ```typescript\n * @Directive({selector: 'button[counting]'})\n * class CountClicks {\n * numberOfClicks = 0;\n *\n * @HostListener('click', ['$event.target'])\n * onClick(btn) {\n * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: '<button counting>Increment</button>',\n * })\n * class App {}\n * ```\n * @stable\n * @Annotation\n */\n (eventName: string, args?: string[]): any;\n new (eventName: string, args?: string[]): any;\n}\n\n/**\n * Type of the HostListener metadata.\n *\n * @stable\n */\nexport interface HostListener {\n eventName?: string;\n args?: string[];\n}\n/**\n * HostListener decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const HostListener: HostListenerDecorator =\n makePropDecorator('HostListener', (eventName?: string, args?: string[]) => ({eventName, args}));\n","\nexport type ChangeDetectionStrategy = number;\nexport let ChangeDetectionStrategy: any = {};\nChangeDetectionStrategy.OnPush = 0;\nChangeDetectionStrategy.Default = 1;\nChangeDetectionStrategy[ChangeDetectionStrategy.OnPush] = \"OnPush\";\nChangeDetectionStrategy[ChangeDetectionStrategy.Default] = \"Default\";\n\nexport type ChangeDetectorStatus = number;\nexport let ChangeDetectorStatus: any = {};\nChangeDetectorStatus.CheckOnce = 0;\nChangeDetectorStatus.Checked = 1;\nChangeDetectorStatus.CheckAlways = 2;\nChangeDetectorStatus.Detached = 3;\nChangeDetectorStatus.Errored = 4;\nChangeDetectorStatus.Destroyed = 5;\nChangeDetectorStatus[ChangeDetectorStatus.CheckOnce] = \"CheckOnce\";\nChangeDetectorStatus[ChangeDetectorStatus.Checked] = \"Checked\";\nChangeDetectorStatus[ChangeDetectorStatus.CheckAlways] = \"CheckAlways\";\nChangeDetectorStatus[ChangeDetectorStatus.Detached] = \"Detached\";\nChangeDetectorStatus[ChangeDetectorStatus.Errored] = \"Errored\";\nChangeDetectorStatus[ChangeDetectorStatus.Destroyed] = \"Destroyed\";\n\n/**\n * @param {?} changeDetectionStrategy\n * @return {?}\n */\nexport function isDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy):\n boolean {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {InjectionToken} from '../di/injection_token';\nimport {Type} from '../type';\nimport {makeParamDecorator, makePropDecorator} from '../util/decorators';\n/**\n * This token can be used to create a virtual provider that will populate the\n * `entryComponents` fields of components and ng modules based on its `useValue`.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) will be added to the `entryComponents` property.\n * \n * ### Example\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on the router configuration which refers\n * to components.\n * \n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n * \n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n * \n * \\@NgModule({ \n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n * \n * \\@experimental\n */\nexport const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken<any>('AnalyzeForEntryComponents');\n\n/**\n * Type of the Attribute decorator / constructor function.\n *\n * @stable\n */\nexport interface AttributeDecorator {\n /**\n * Specifies that a constant attribute value should be injected.\n *\n * The directive can inject constant string literals of host element attributes.\n *\n * ### Example\n *\n * Suppose we have an `<input>` element and want to know its `type`.\n *\n * ```html\n * <input type=\"text\">\n * ```\n *\n * A decorator can inject string literal `text` like so:\n *\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\n *\n * ### Example as TypeScript Decorator\n *\n * {@example core/ts/metadata/metadata.ts region='attributeFactory'}\n *\n * ### Example as ES5 DSL\n *\n * ```\n * var MyComponent = ng\n * .Component({...})\n * .Class({\n * constructor: [new ng.Attribute('title'), function(title) {\n * ...\n * }]\n * })\n * ```\n *\n * ### Example as ES5 annotation\n *\n * ```\n * var MyComponent = function(title) {\n * ...\n * };\n *\n * MyComponent.annotations = [\n * new ng.Component({...})\n * ]\n * MyComponent.parameters = [\n * [new ng.Attribute('title')]\n * ]\n * ```\n *\n * @stable\n */\n (name: string): any;\n new (name: string): Attribute;\n}\n\n\n/**\n * Type of the Attribute metadata.\n */\nexport interface Attribute { attributeName?: string; }\n/**\n * Attribute decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Attribute: AttributeDecorator =\n makeParamDecorator('Attribute', (attributeName?: string) => ({attributeName}));\n\n/**\n * Type of the Query metadata.\n *\n * @stable\n */\nexport interface Query {\n descendants: boolean;\n first: boolean;\n read: any;\n isViewQuery: boolean;\n selector: any;\n}\n/**\n * Base class for query metadata.\n * \n * See {\\@link ContentChildren}, {\\@link ContentChild}, {\\@link ViewChildren}, {\\@link ViewChild} for\n * more information.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class Query {}\n\n/**\n * Type of the ContentChildren decorator / constructor function.\n *\n * See {@link ContentChildren}.\n *\n * @stable\n */\nexport interface ContentChildrenDecorator {\n /**\n * @whatItDoes Configures a content query.\n *\n * @howToUse\n *\n * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ContentChildren to get the {@link QueryList} of elements or directives from the\n * content DOM. Any time a child element is added, removed, or moved, the query list will be\n * updated,\n * and the changes observable of the query list will emit a new value.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **descendants** - include only direct children or all descendants.\n * * **read** - read a different token from the queried elements.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string,\n {descendants, read}?: {descendants?: boolean, read?: any}): any;\n new (\n selector: Type<any>|Function|string,\n {descendants, read}?: {descendants?: boolean, read?: any}): Query;\n}\n\n/**\n * Type of the ContentChildren metadata.\n *\n * @stable\n * @Annotation\n */\nexport type ContentChildren = Query;\n/**\n * ContentChildren decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ContentChildren: ContentChildrenDecorator =\n <ContentChildrenDecorator>makePropDecorator(\n 'ContentChildren',\n (selector?: any, data: any = {}) =>\n ({selector, first: false, isViewQuery: false, descendants: false, ...data}),\n Query);\n\n/**\n * Type of the ContentChild decorator / constructor function.\n *\n *\n * @stable\n */\nexport interface ContentChildDecorator {\n /**\n * @whatItDoes Configures a content query.\n *\n * @howToUse\n *\n * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ContentChild to get the first element or the directive matching the selector from\n * the content DOM. If the content DOM changes, and a new child matches the selector,\n * the property will be updated.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried element.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ContentChild;\n}\n\n/**\n * Type of the ContentChild metadata.\n *\n * See {@link ContentChild}.\n *\n * @stable\n */\nexport type ContentChild = Query;\n/**\n * ContentChild decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ContentChild: ContentChildDecorator = makePropDecorator(\n 'ContentChild', (selector?: any, data: any = {}) =>\n ({selector, first: true, isViewQuery: false, descendants: true, ...data}),\n Query);\n\n/**\n * Type of the ViewChildren decorator / constructor function.\n *\n * See {@link ViewChildren}.\n *\n * @stable\n */\nexport interface ViewChildrenDecorator {\n /**\n * @whatItDoes Configures a view query.\n *\n * @howToUse\n *\n * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ViewChildren to get the {@link QueryList} of elements or directives from the\n * view DOM. Any time a child element is added, removed, or moved, the query list will be updated,\n * and the changes observable of the query list will emit a new value.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried elements.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ViewChildren;\n}\n\n/**\n * Type of the ViewChildren metadata.\n *\n * @stable\n */\nexport type ViewChildren = Query;\n/**\n * ViewChildren decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ViewChildren: ViewChildrenDecorator = makePropDecorator(\n 'ViewChildren', (selector?: any, data: any = {}) =>\n ({selector, first: false, isViewQuery: true, descendants: true, ...data}),\n Query);\n\n/**\n * Type of the ViewChild decorator / constructor function.\n *\n * See {@link ViewChild}\n *\n * @stable\n */\nexport interface ViewChildDecorator {\n /**\n * @whatItDoes Configures a view query.\n *\n * @howToUse\n *\n * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ViewChild to get the first element or the directive matching the selector from the\n * view DOM. If the view DOM changes, and a new child matches the selector,\n * the property will be updated.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried elements.\n *\n * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ViewChild;\n}\n\n/**\n * Type of the ViewChild metadata.\n *\n * @stable\n */\nexport type ViewChild = Query;\n/**\n * ViewChild decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ViewChild: ViewChildDecorator = makePropDecorator(\n 'ViewChild', (selector: any, data: any) =>\n ({selector, first: true, isViewQuery: true, descendants: true, ...data}),\n Query);\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Type} from '../type';\nimport {global, stringify} from '../util';\n\nlet /** @type {?} */ _nextClassId = 0;\nconst /** @type {?} */ Reflect = global['Reflect'];\n\n/**\n * Declares the interface to be used with {@link Class}.\n *\n * @stable\n */\nexport type ClassDefinition = {\n /**\n * Optional argument for specifying the superclass.\n */\n extends?: Type<any>;\n\n /**\n * Required constructor function for a class.\n *\n * The function may be optionally wrapped in an `Array`, in which case additional parameter\n * annotations may be specified.\n * The number of arguments and the number of parameter annotations must match.\n *\n * See {@link Class} for example of usage.\n */\n constructor: Function | any[];\n} &\n{\n /**\n * Other methods on the class. Note that values should have type 'Function' but TS requires\n * all properties to have a narrower type than the index signature.\n */\n [x: string]: Type<any>|Function|any[];\n};\n\n/**\n * An interface implemented by all Angular type decorators, which allows them to be used as ES7\n * decorators as well as\n * Angular DSL syntax.\n *\n * DSL syntax:\n *\n * ```\n * var MyClass = ng\n * .Component({...})\n * .Class({...});\n * ```\n *\n * ES7 syntax:\n *\n * ```\n * @ng.Component({...})\n * class MyClass {...}\n * ```\n * @stable\n */\nexport interface TypeDecorator {\n /**\n * Invoke as ES7 decorator.\n */\n <T extends Type<any>>(type: T): T;\n\n // Make TypeDecorator assignable to built-in ParameterDecorator type.\n // ParameterDecorator is declared in lib.d.ts as a `declare type`\n // so we cannot declare this interface as a subtype.\n // see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n (target: Object, propertyKey?: string|symbol, parameterIndex?: number): void;\n\n /**\n * Storage for the accumulated annotations so far used by the DSL syntax.\n *\n * Used by {@link Class} to annotate the generated class.\n */\n annotations: any[];\n\n /**\n * Generate a class from the definition and annotate it with {@link TypeDecorator#annotations}.\n */\n Class(obj: ClassDefinition): Type<any>;\n}\n/**\n * @param {?} annotation\n * @return {?}\n */\nfunction extractAnnotation(annotation: any): any {\n if (typeof annotation === 'function' && annotation.hasOwnProperty('annotation')) {\n // it is a decorator, extract annotation\n annotation = annotation.annotation;\n }\n return annotation;\n}\n/**\n * @param {?} fnOrArray\n * @param {?} key\n * @return {?}\n */\nfunction applyParams(fnOrArray: Function | any[] | undefined, key: string): Function {\n if (fnOrArray === Object || fnOrArray === String || fnOrArray === Function ||\n fnOrArray === Number || fnOrArray === Array) {\n throw new Error(`Can not use native ${stringify(fnOrArray)} as constructor`);\n }\n\n if (typeof fnOrArray === 'function') {\n return fnOrArray;\n }\n\n if (Array.isArray(fnOrArray)) {\n const /** @type {?} */ annotations: any[] = /** @type {?} */(( fnOrArray as any[]));\n const /** @type {?} */ annoLength = annotations.length - 1;\n const /** @type {?} */ fn: Function = fnOrArray[annoLength];\n if (typeof fn !== 'function') {\n throw new Error(\n `Last position of Class method array must be Function in key ${key} was '${stringify(fn)}'`);\n }\n if (annoLength != fn.length) {\n throw new Error(\n `Number of annotations (${annoLength}) does not match number of arguments (${fn.length}) in the function: ${stringify(fn)}`);\n }\n const /** @type {?} */ paramsAnnotations: any[][] = [];\n for (let /** @type {?} */ i = 0, /** @type {?} */ ii = annotations.length - 1; i < ii; i++) {\n const /** @type {?} */ paramAnnotations: any[] = [];\n paramsAnnotations.push(paramAnnotations);\n const /** @type {?} */ annotation = annotations[i];\n if (Array.isArray(annotation)) {\n for (let /** @type {?} */ j = 0; j < annotation.length; j++) {\n paramAnnotations.push(extractAnnotation(annotation[j]));\n }\n } else if (typeof annotation === 'function') {\n paramAnnotations.push(extractAnnotation(annotation));\n } else {\n paramAnnotations.push(annotation);\n }\n }\n Reflect.defineMetadata('parameters', paramsAnnotations, fn);\n return fn;\n }\n\n throw new Error(\n `Only Function or Array is supported in Class definition for key '${key}' is '${stringify(fnOrArray)}'`);\n}\n/**\n * Provides a way for expressing ES6 classes with parameter annotations in ES5.\n * \n * ## Basic Example\n * \n * ```\n * var Greeter = ng.Class({\n * constructor: function(name) {\n * this.name = name;\n * },\n * \n * greet: function() {\n * alert('Hello ' + this.name + '!');\n * }\n * });\n * ```\n * \n * is equivalent to ES6:\n * \n * ```\n * class Greeter {\n * constructor(name) {\n * this.name = name;\n * }\n * \n * greet() {\n * alert('Hello ' + this.name + '!');\n * }\n * }\n * ```\n * \n * or equivalent to ES5:\n * \n * ```\n * var Greeter = function (name) {\n * this.name = name;\n * }\n * \n * Greeter.prototype.greet = function () {\n * alert('Hello ' + this.name + '!');\n * }\n * ```\n * \n * ### Example with parameter annotations\n * \n * ```\n * var MyService = ng.Class({\n * constructor: [String, [new Optional(), Service], function(name, myService) {\n * ...\n * }]\n * });\n * ```\n * \n * is equivalent to ES6:\n * \n * ```\n * class MyService {\n * constructor(name: string, \\@Optional() myService: Service) {\n * ...\n * }\n * }\n * ```\n * \n * ### Example with inheritance\n * \n * ```\n * var Shape = ng.Class({\n * constructor: (color) {\n * this.color = color;\n * }\n * });\n * \n * var Square = ng.Class({\n * extends: Shape,\n * constructor: function(color, size) {\n * Shape.call(this, color);\n * this.size = size;\n * }\n * });\n * ```\n * @suppress {globalThis}\n * \\@stable\n * @param {?} clsDef\n * @return {?}\n */\nexport function Class(clsDef: ClassDefinition): Type<any> {\n const /** @type {?} */ constructor = applyParams(\n clsDef.hasOwnProperty('constructor') ? clsDef.constructor : undefined, 'constructor');\n\n let /** @type {?} */ proto = constructor.prototype;\n\n if (clsDef.hasOwnProperty('extends')) {\n if (typeof clsDef.extends === 'function') {\n ( /** @type {?} */((<Function>constructor))).prototype = proto =\n Object.create(( /** @type {?} */((<Function>clsDef.extends))).prototype);\n } else {\n throw new Error(\n `Class definition 'extends' property must be a constructor function was: ${stringify(clsDef.extends)}`);\n }\n }\n\n for (const /** @type {?} */ key in clsDef) {\n if (key !== 'extends' && key !== 'prototype' && clsDef.hasOwnProperty(key)) {\n proto[key] = applyParams(clsDef[key], key);\n }\n }\n\n if (this && this.annotations instanceof Array) {\n Reflect.defineMetadata('annotations', this.annotations, constructor);\n }\n\n const /** @type {?} */ constructorName = constructor['name'];\n if (!constructorName || constructorName === 'constructor') {\n ( /** @type {?} */((constructor as any)))['overriddenName'] = `class${_nextClassId++}`;\n }\n\n return /** @type {?} */(( <Type<any>>constructor));\n}\n/**\n * @suppress {globalThis}\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @param {?=} chainFn\n * @return {?}\n */\nexport function makeDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any,\n chainFn?: (fn: Function) => void): (...args: any[]) => (cls: any) => any {\n const /** @type {?} */ metaCtor = makeMetadataCtor(props);\n/**\n * @param {?} objOrType\n * @return {?}\n */\nfunction DecoratorFactory(objOrType: any): (cls: any) => any {\n if (!(Reflect && Reflect.getOwnMetadata)) {\n throw 'reflect-metadata shim is required when using class decorators';\n }\n\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, objOrType);\n return this;\n }\n\n const /** @type {?} */ annotationInstance = new ( /** @type {?} */((<any>DecoratorFactory)))(objOrType);\n const /** @type {?} */ chainAnnotation =\n typeof this === 'function' && Array.isArray(this.annotations) ? this.annotations : [];\n chainAnnotation.push(annotationInstance);\n const /** @type {?} */ TypeDecorator: TypeDecorator = /** @type {?} */(( <TypeDecorator>function TypeDecorator(cls: Type<any>) {\n const /** @type {?} */ annotations = Reflect.getOwnMetadata('annotations', cls) || [];\n annotations.push(annotationInstance);\n Reflect.defineMetadata('annotations', annotations, cls);\n return cls;\n }));\n TypeDecorator.annotations = chainAnnotation;\n TypeDecorator.Class = Class;\n if (chainFn) chainFn(TypeDecorator);\n return TypeDecorator;\n }\n\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n DecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>DecoratorFactory))).annotationCls = DecoratorFactory;\n return DecoratorFactory;\n}\n/**\n * @param {?=} props\n * @return {?}\n */\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n return function ctor(...args: any[]) {\n if (props) {\n const /** @type {?} */ values = props(...args);\n for (const /** @type {?} */ propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nexport function makeParamDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any): any {\n const /** @type {?} */ metaCtor = makeMetadataCtor(props);\n/**\n * @param {...?} args\n * @return {?}\n */\nfunction ParamDecoratorFactory(...args: any[]): any {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const /** @type {?} */ annotationInstance = new ( /** @type {?} */((<any>ParamDecoratorFactory)))(...args);\n\n ( /** @type {?} */((<any>ParamDecorator))).annotation = annotationInstance;\n return ParamDecorator;\n/**\n * @param {?} cls\n * @param {?} unusedKey\n * @param {?} index\n * @return {?}\n */\nfunction ParamDecorator(cls: any, unusedKey: any, index: number): any {\n const /** @type {?} */ parameters: (any[] | null)[] = Reflect.getOwnMetadata('parameters', cls) || [];\n\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n\n parameters[index] = parameters[index] || []; /** @type {?} */((\n parameters[index])).push(annotationInstance);\n\n Reflect.defineMetadata('parameters', parameters, cls);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>ParamDecoratorFactory))).annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nexport function makePropDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any): any {\n const /** @type {?} */ metaCtor = makeMetadataCtor(props);\n/**\n * @param {...?} args\n * @return {?}\n */\nfunction PropDecoratorFactory(...args: any[]): any {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n\n const /** @type {?} */ decoratorInstance = new ( /** @type {?} */((<any>PropDecoratorFactory)))(...args);\n\n return function PropDecorator(target: any, name: string) {\n const /** @type {?} */ meta = Reflect.getOwnMetadata('propMetadata', target.constructor) || {};\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n Reflect.defineMetadata('propMetadata', meta, target.constructor);\n };\n }\n\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n PropDecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>PropDecoratorFactory))).annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Import zero symbols from zone.js. This causes the zone ambient type to be\n// added to the type-checker, without emitting any runtime module load statement\n\nimport {} from 'zone.js';\n\n// TODO(jteplitz602): Load WorkerGlobalScope from lib.webworker.d.ts file #3492\ndeclare var WorkerGlobalScope: any /** TODO #9100 */;\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\ndeclare var global: any /** TODO #9100 */;\nconst /** @type {?} */ __window = typeof window !== 'undefined' && window;\nconst /** @type {?} */ __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nconst /** @type {?} */ __global = typeof global !== 'undefined' && global;\nconst /** @type {?} */ _global: {[name: string]: any} = __window || __global || __self;\nexport {_global as global};\n\n// When Symbol.iterator doesn't exist, retrieves the key used in es6-shim\ndeclare const Symbol: any;\nlet /** @type {?} */ _symbolIterator: any = null;\n/**\n * @return {?}\n */\nexport function getSymbolIterator(): string|symbol {\n if (!_symbolIterator) {\n const /** @type {?} */ Symbol = _global['Symbol'];\n if (Symbol && Symbol.iterator) {\n _symbolIterator = Symbol.iterator;\n } else {\n // es6-shim specific logic\n const /** @type {?} */ keys = Object.getOwnPropertyNames(Map.prototype);\n for (let /** @type {?} */ i = 0; i < keys.length; ++i) {\n const /** @type {?} */ key = keys[i];\n if (key !== 'entries' && key !== 'size' &&\n ( /** @type {?} */((Map as any))).prototype[key] === Map.prototype['entries']) {\n _symbolIterator = key;\n }\n }\n }\n }\n return _symbolIterator;\n}\n/**\n * @param {?} fn\n * @return {?}\n */\nexport function scheduleMicroTask(fn: Function) {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function looseIdentical(a: any, b: any): boolean {\n return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nexport function stringify(token: any): string {\n if (typeof token === 'string') {\n return token;\n }\n\n if (token == null) {\n return '' + token;\n }\n\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n\n if (token.name) {\n return `${token.name}`;\n }\n\n const /** @type {?} */ res = token.toString();\n\n if (res == null) {\n return '' + res;\n }\n\n const /** @type {?} */ newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n","\n/**\n * Creates a token that can be used in a DI Provider.\n * \n * ### Example ([live demo](http://plnkr.co/edit/Ys9ezXpj2Mnoy3Uc8KBp?p=preview))\n * \n * ```typescript\n * var t = new OpaqueToken(\"value\");\n * \n * var injector = Injector.resolveAndCreate([\n * {provide: t, useValue: \"bindingValue\"}\n * ]);\n * \n * expect(injector.get(t)).toEqual(\"bindingValue\");\n * ```\n * \n * Using an `OpaqueToken` is preferable to using strings as tokens because of possible collisions\n * caused by multiple providers using the same string as two different tokens.\n * \n * Using an `OpaqueToken` is preferable to using an `Object` as tokens because it provides better\n * error messages.\n * @deprecated since v4.0.0 because it does not support type information, use `InjectionToken<?>`\n * instead.\n */\nexport class OpaqueToken {\n/**\n * @param {?} _desc\n */\nconstructor(protected _desc: string) {}\n/**\n * @return {?}\n */\ntoString(): string { return `Token ${this._desc}`; }\n}\n\nfunction OpaqueToken_tsickle_Closure_declarations() {\n/** @type {?} */\nOpaqueToken.prototype._desc;\n}\n\n/**\n * Creates a token that can be used in a DI Provider.\n * \n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parametrized type.\n * \n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n * \n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n * \n * ### Example\n * \n * {\\@example core/di/ts/injector_spec.ts region='InjectionToken'}\n * \n * \\@stable\n */\nexport class InjectionToken<T> extends OpaqueToken {\nprivate _differentiate_from_OpaqueToken_structurally: any;\n/**\n * @param {?} desc\n */\nconstructor(desc: string) { super(desc); }\n/**\n * @return {?}\n */\ntoString(): string { return `InjectionToken ${this._desc}`; }\n}\n\nfunction InjectionToken_tsickle_Closure_declarations() {\n/** @type {?} */\nInjectionToken.prototype._differentiate_from_OpaqueToken_structurally;\n}\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}"],"names":["renderNode","tslib_1.__extends","NOT_CREATED","_createProviderInstance","Observable","ResolvedReflectiveFactory","Reflect"],"mappings":"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"}
\No newline at end of file