Front end of the Slack clone application.

platform-browser.js.map 304KB

1
  1. {"version":3,"file":"platform-browser.js","sources":["../../../packages/platform-browser/esm5/src/dom/dom_adapter.js","../../../packages/platform-browser/esm5/src/browser/generic_browser_adapter.js","../../../packages/platform-browser/esm5/src/browser/browser_adapter.js","../../../packages/platform-browser/esm5/src/dom/dom_tokens.js","../../../packages/platform-browser/esm5/src/browser/location/history.js","../../../packages/platform-browser/esm5/src/browser/location/browser_platform_location.js","../../../packages/platform-browser/esm5/src/browser/meta.js","../../../packages/platform-browser/esm5/src/browser/server-transition.js","../../../packages/platform-browser/esm5/src/browser/testability.js","../../../packages/platform-browser/esm5/src/browser/title.js","../../../packages/platform-browser/esm5/src/dom/util.js","../../../packages/platform-browser/esm5/src/dom/debug/ng_probe.js","../../../packages/platform-browser/esm5/src/dom/events/event_manager.js","../../../packages/platform-browser/esm5/src/dom/shared_styles_host.js","../../../packages/platform-browser/esm5/src/dom/dom_renderer.js","../../../packages/platform-browser/esm5/src/dom/events/dom_events.js","../../../packages/platform-browser/esm5/src/dom/events/hammer_gestures.js","../../../packages/platform-browser/esm5/src/dom/events/key_events.js","../../../packages/platform-browser/esm5/src/security/inert_body.js","../../../packages/platform-browser/esm5/src/security/url_sanitizer.js","../../../packages/platform-browser/esm5/src/security/html_sanitizer.js","../../../packages/platform-browser/esm5/src/security/style_sanitizer.js","../../../packages/platform-browser/esm5/src/security/dom_sanitization_service.js","../../../packages/platform-browser/esm5/src/browser.js","../../../packages/platform-browser/esm5/src/browser/tools/browser.js","../../../packages/platform-browser/esm5/src/browser/tools/common_tools.js","../../../packages/platform-browser/esm5/src/browser/tools/tools.js","../../../packages/platform-browser/esm5/src/browser/transfer_state.js","../../../packages/platform-browser/esm5/src/dom/debug/by.js","../../../packages/platform-browser/esm5/src/private_export.js","../../../packages/platform-browser/esm5/src/version.js","../../../packages/platform-browser/esm5/src/platform-browser.js","../../../packages/platform-browser/esm5/public_api.js","../../../packages/platform-browser/esm5/platform-browser.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nvar /** @type {?} */ _DOM = /** @type {?} */ ((null));\n/**\n * @return {?}\n */\nexport function getDOM() {\n return _DOM;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nexport function setDOM(adapter) {\n _DOM = adapter;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nexport function setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nvar /**\n * Provides DOM operations in an environment-agnostic way.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nDomAdapter = /** @class */ (function () {\n function DomAdapter() {\n this.resourceLoaderType = /** @type {?} */ ((null));\n }\n Object.defineProperty(DomAdapter.prototype, \"attrToPropMap\", {\n /**\n * Maps attribute names to their corresponding property names for cases\n * where attribute name doesn't match property name.\n */\n get: /**\n * Maps attribute names to their corresponding property names for cases\n * where attribute name doesn't match property name.\n * @return {?}\n */\n function () { return this._attrToPropMap; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) { this._attrToPropMap = value; },\n enumerable: true,\n configurable: true\n });\n return DomAdapter;\n}());\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nexport { DomAdapter };\nfunction DomAdapter_tsickle_Closure_declarations() {\n /** @type {?} */\n DomAdapter.prototype.resourceLoaderType;\n /**\n * \\@internal\n * @type {?}\n */\n DomAdapter.prototype._attrToPropMap;\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.hasProperty = function (element, name) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setProperty = function (el, name, value) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getProperty = function (el, name) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n DomAdapter.prototype.invoke = function (el, methodName, args) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.logError = function (error) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.log = function (error) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.logGroup = function (error) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.logGroupEnd = function () { };\n /**\n * @abstract\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\n DomAdapter.prototype.contains = function (nodeA, nodeB) { };\n /**\n * @abstract\n * @param {?} templateHtml\n * @return {?}\n */\n DomAdapter.prototype.parse = function (templateHtml) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.querySelector = function (el, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.querySelectorAll = function (el, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n DomAdapter.prototype.on = function (el, evt, listener) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n DomAdapter.prototype.onAndCancel = function (el, evt, listener) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.dispatchEvent = function (el, evt) { };\n /**\n * @abstract\n * @param {?} eventType\n * @return {?}\n */\n DomAdapter.prototype.createMouseEvent = function (eventType) { };\n /**\n * @abstract\n * @param {?} eventType\n * @return {?}\n */\n DomAdapter.prototype.createEvent = function (eventType) { };\n /**\n * @abstract\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.preventDefault = function (evt) { };\n /**\n * @abstract\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.isPrevented = function (evt) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getInnerHTML = function (el) { };\n /**\n * Returns content if el is a <template> element, null otherwise.\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getTemplateContent = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getOuterHTML = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.nodeName = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.nodeValue = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.type = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.content = function (node) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.firstChild = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.nextSibling = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.parentElement = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.childNodes = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.childNodesAsList = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.clearNodes = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.appendChild = function (el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.removeChild = function (el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} newNode\n * @param {?} oldNode\n * @return {?}\n */\n DomAdapter.prototype.replaceChild = function (el, newNode, oldNode) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.remove = function (el) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.insertBefore = function (parent, ref, node) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\n DomAdapter.prototype.insertAllBefore = function (parent, ref, nodes) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.insertAfter = function (parent, el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setInnerHTML = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getText = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setText = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getValue = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setValue = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getChecked = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setChecked = function (el, value) { };\n /**\n * @abstract\n * @param {?} text\n * @return {?}\n */\n DomAdapter.prototype.createComment = function (text) { };\n /**\n * @abstract\n * @param {?} html\n * @return {?}\n */\n DomAdapter.prototype.createTemplate = function (html) { };\n /**\n * @abstract\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createElement = function (tagName, doc) { };\n /**\n * @abstract\n * @param {?} ns\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createElementNS = function (ns, tagName, doc) { };\n /**\n * @abstract\n * @param {?} text\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createTextNode = function (text, doc) { };\n /**\n * @abstract\n * @param {?} attrName\n * @param {?} attrValue\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createScriptTag = function (attrName, attrValue, doc) { };\n /**\n * @abstract\n * @param {?} css\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createStyleElement = function (css, doc) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.createShadowRoot = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getShadowRoot = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getHost = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getDistributedNodes = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.clone = function (node) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getElementsByClassName = function (element, name) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getElementsByTagName = function (element, name) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.classList = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.addClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.removeClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.hasClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n DomAdapter.prototype.setStyle = function (element, styleName, styleValue) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n DomAdapter.prototype.removeStyle = function (element, styleName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n DomAdapter.prototype.getStyle = function (element, styleName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n DomAdapter.prototype.hasStyle = function (element, styleName, styleValue) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.tagName = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.attributeMap = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.hasAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.getAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.getAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setAttribute = function (element, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setAttributeNS = function (element, ns, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.removeAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.removeAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.templateAwareRoot = function (el) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.createHtmlDocument = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getDefaultDocument = function () { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getBoundingClientRect = function (el) { };\n /**\n * @abstract\n * @param {?} doc\n * @return {?}\n */\n DomAdapter.prototype.getTitle = function (doc) { };\n /**\n * @abstract\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\n DomAdapter.prototype.setTitle = function (doc, newTitle) { };\n /**\n * @abstract\n * @param {?} n\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.elementMatches = function (n, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.isTemplateElement = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isTextNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isCommentNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isElementNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.hasShadowRoot = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isShadowRoot = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.importIntoDoc = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.adoptNode = function (node) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.getHref = function (element) { };\n /**\n * @abstract\n * @param {?} event\n * @return {?}\n */\n DomAdapter.prototype.getEventKey = function (event) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\n DomAdapter.prototype.resolveAndSetHref = function (element, baseUrl, href) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsDOMEvents = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsNativeShadowDOM = function () { };\n /**\n * @abstract\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\n DomAdapter.prototype.getGlobalEventTarget = function (doc, target) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getHistory = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getLocation = function () { };\n /**\n * @abstract\n * @param {?} doc\n * @return {?}\n */\n DomAdapter.prototype.getBaseHref = function (doc) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.resetBaseElement = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getUserAgent = function () { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setData = function (element, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.getComputedStyle = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getData = function (element, name) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsWebAnimation = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.performanceNow = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getAnimationPrefix = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getTransitionEnd = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsAnimation = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsCookies = function () { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getCookie = function (name) { };\n /**\n * @abstract\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setCookie = function (name, value) { };\n}\n//# sourceMappingURL=dom_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { DomAdapter } from '../dom/dom_adapter';\n/**\n * Provides DOM operations in any browser environment.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nvar /**\n * Provides DOM operations in any browser environment.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nGenericBrowserDomAdapter = /** @class */ (function (_super) {\n tslib_1.__extends(GenericBrowserDomAdapter, _super);\n function GenericBrowserDomAdapter() {\n var _this = _super.call(this) || this;\n _this._animationPrefix = null;\n _this._transitionEnd = null;\n try {\n var /** @type {?} */ element_1 = _this.createElement('div', document);\n if (_this.getStyle(element_1, 'animationName') != null) {\n _this._animationPrefix = '';\n }\n else {\n var /** @type {?} */ domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];\n for (var /** @type {?} */ i = 0; i < domPrefixes.length; i++) {\n if (_this.getStyle(element_1, domPrefixes[i] + 'AnimationName') != null) {\n _this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';\n break;\n }\n }\n }\n var /** @type {?} */ transEndEventNames_1 = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n Object.keys(transEndEventNames_1).forEach(function (key) {\n if (_this.getStyle(element_1, key) != null) {\n _this._transitionEnd = transEndEventNames_1[key];\n }\n });\n }\n catch (/** @type {?} */ e) {\n _this._animationPrefix = null;\n _this._transitionEnd = null;\n }\n return _this;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.getDistributedNodes = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return (/** @type {?} */ (el)).getDistributedNodes(); };\n /**\n * @param {?} el\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.resolveAndSetHref = /**\n * @param {?} el\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\n function (el, baseUrl, href) {\n el.href = href == null ? baseUrl : baseUrl + '/../' + href;\n };\n /**\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.supportsDOMEvents = /**\n * @return {?}\n */\n function () { return true; };\n /**\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM = /**\n * @return {?}\n */\n function () {\n return typeof (/** @type {?} */ (document.body)).createShadowRoot === 'function';\n };\n /**\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.getAnimationPrefix = /**\n * @return {?}\n */\n function () { return this._animationPrefix ? this._animationPrefix : ''; };\n /**\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.getTransitionEnd = /**\n * @return {?}\n */\n function () { return this._transitionEnd ? this._transitionEnd : ''; };\n /**\n * @return {?}\n */\n GenericBrowserDomAdapter.prototype.supportsAnimation = /**\n * @return {?}\n */\n function () {\n return this._animationPrefix != null && this._transitionEnd != null;\n };\n return GenericBrowserDomAdapter;\n}(DomAdapter));\n/**\n * Provides DOM operations in any browser environment.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nexport { GenericBrowserDomAdapter };\nfunction GenericBrowserDomAdapter_tsickle_Closure_declarations() {\n /** @type {?} */\n GenericBrowserDomAdapter.prototype._animationPrefix;\n /** @type {?} */\n GenericBrowserDomAdapter.prototype._transitionEnd;\n}\n//# sourceMappingURL=generic_browser_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { ɵparseCookieValue as parseCookieValue } from '@angular/common';\nimport { ɵglobal as global } from '@angular/core';\nimport { setRootDomAdapter } from '../dom/dom_adapter';\nimport { GenericBrowserDomAdapter } from './generic_browser_adapter';\nvar /** @type {?} */ _attrToPropMap = {\n 'class': 'className',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\nvar /** @type {?} */ DOM_KEY_LOCATION_NUMPAD = 3;\n// Map to convert some key or keyIdentifier values to what will be returned by getEventKey\nvar /** @type {?} */ _keyMap = {\n // The following values are here for cross-browser compatibility and to match the W3C standard\n // cf http://www.w3.org/TR/DOM-Level-3-Events-key/\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS'\n};\n// There is a bug in Chrome for numeric keypad keys:\n// https://code.google.com/p/chromium/issues/detail?id=155654\n// 1, 2, 3 ... are reported as A, B, C ...\nvar /** @type {?} */ _chromeNumKeyPadMap = {\n 'A': '1',\n 'B': '2',\n 'C': '3',\n 'D': '4',\n 'E': '5',\n 'F': '6',\n 'G': '7',\n 'H': '8',\n 'I': '9',\n 'J': '*',\n 'K': '+',\n 'M': '-',\n 'N': '.',\n 'O': '/',\n '\\x60': '0',\n '\\x90': 'NumLock'\n};\nvar /** @type {?} */ nodeContains;\nif (global['Node']) {\n nodeContains = global['Node'].prototype.contains || function (node) {\n return !!(this.compareDocumentPosition(node) & 16);\n };\n}\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nvar /**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nBrowserDomAdapter = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserDomAdapter, _super);\n function BrowserDomAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} templateHtml\n * @return {?}\n */\n BrowserDomAdapter.prototype.parse = /**\n * @param {?} templateHtml\n * @return {?}\n */\n function (templateHtml) { throw new Error('parse not implemented'); };\n /**\n * @return {?}\n */\n BrowserDomAdapter.makeCurrent = /**\n * @return {?}\n */\n function () { setRootDomAdapter(new BrowserDomAdapter()); };\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasProperty = /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n function (element, name) { return name in element; };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setProperty = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (el, name, value) { (/** @type {?} */ (el))[name] = value; };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getProperty = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) { return (/** @type {?} */ (el))[name]; };\n /**\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n BrowserDomAdapter.prototype.invoke = /**\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n function (el, methodName, args) {\n (_a = (/** @type {?} */ (el)))[methodName].apply(_a, args);\n var _a;\n };\n // TODO(tbosch): move this into a separate environment class once we have it\n /**\n * @param {?} error\n * @return {?}\n */\n BrowserDomAdapter.prototype.logError = /**\n * @param {?} error\n * @return {?}\n */\n function (error) {\n if (window.console) {\n if (console.error) {\n console.error(error);\n }\n else {\n console.log(error);\n }\n }\n };\n /**\n * @param {?} error\n * @return {?}\n */\n BrowserDomAdapter.prototype.log = /**\n * @param {?} error\n * @return {?}\n */\n function (error) {\n if (window.console) {\n window.console.log && window.console.log(error);\n }\n };\n /**\n * @param {?} error\n * @return {?}\n */\n BrowserDomAdapter.prototype.logGroup = /**\n * @param {?} error\n * @return {?}\n */\n function (error) {\n if (window.console) {\n window.console.group && window.console.group(error);\n }\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.logGroupEnd = /**\n * @return {?}\n */\n function () {\n if (window.console) {\n window.console.groupEnd && window.console.groupEnd();\n }\n };\n Object.defineProperty(BrowserDomAdapter.prototype, \"attrToPropMap\", {\n get: /**\n * @return {?}\n */\n function () { return _attrToPropMap; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\n BrowserDomAdapter.prototype.contains = /**\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\n function (nodeA, nodeB) { return nodeContains.call(nodeA, nodeB); };\n /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n BrowserDomAdapter.prototype.querySelector = /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n function (el, selector) { return el.querySelector(selector); };\n /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n BrowserDomAdapter.prototype.querySelectorAll = /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n function (el, selector) { return el.querySelectorAll(selector); };\n /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n BrowserDomAdapter.prototype.on = /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n function (el, evt, listener) { el.addEventListener(evt, listener, false); };\n /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n BrowserDomAdapter.prototype.onAndCancel = /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n function (el, evt, listener) {\n el.addEventListener(evt, listener, false);\n // Needed to follow Dart's subscription semantic, until fix of\n // https://code.google.com/p/dart/issues/detail?id=17406\n return function () { el.removeEventListener(evt, listener, false); };\n };\n /**\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n BrowserDomAdapter.prototype.dispatchEvent = /**\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n function (el, evt) { el.dispatchEvent(evt); };\n /**\n * @param {?} eventType\n * @return {?}\n */\n BrowserDomAdapter.prototype.createMouseEvent = /**\n * @param {?} eventType\n * @return {?}\n */\n function (eventType) {\n var /** @type {?} */ evt = this.getDefaultDocument().createEvent('MouseEvent');\n evt.initEvent(eventType, true, true);\n return evt;\n };\n /**\n * @param {?} eventType\n * @return {?}\n */\n BrowserDomAdapter.prototype.createEvent = /**\n * @param {?} eventType\n * @return {?}\n */\n function (eventType) {\n var /** @type {?} */ evt = this.getDefaultDocument().createEvent('Event');\n evt.initEvent(eventType, true, true);\n return evt;\n };\n /**\n * @param {?} evt\n * @return {?}\n */\n BrowserDomAdapter.prototype.preventDefault = /**\n * @param {?} evt\n * @return {?}\n */\n function (evt) {\n evt.preventDefault();\n evt.returnValue = false;\n };\n /**\n * @param {?} evt\n * @return {?}\n */\n BrowserDomAdapter.prototype.isPrevented = /**\n * @param {?} evt\n * @return {?}\n */\n function (evt) {\n return evt.defaultPrevented || evt.returnValue != null && !evt.returnValue;\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getInnerHTML = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.innerHTML; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getTemplateContent = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n return 'content' in el && this.isTemplateElement(el) ? (/** @type {?} */ (el)).content : null;\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getOuterHTML = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.outerHTML; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.nodeName = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nodeName; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.nodeValue = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nodeValue; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.type = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.type; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.content = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n if (this.hasProperty(node, 'content')) {\n return (/** @type {?} */ (node)).content;\n }\n else {\n return node;\n }\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.firstChild = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.firstChild; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.nextSibling = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.nextSibling; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.parentElement = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.parentNode; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.childNodes = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.childNodes; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.childNodesAsList = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n var /** @type {?} */ childNodes = el.childNodes;\n var /** @type {?} */ res = new Array(childNodes.length);\n for (var /** @type {?} */ i = 0; i < childNodes.length; i++) {\n res[i] = childNodes[i];\n }\n return res;\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.clearNodes = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n };\n /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.appendChild = /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n function (el, node) { el.appendChild(node); };\n /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.removeChild = /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n function (el, node) { el.removeChild(node); };\n /**\n * @param {?} el\n * @param {?} newChild\n * @param {?} oldChild\n * @return {?}\n */\n BrowserDomAdapter.prototype.replaceChild = /**\n * @param {?} el\n * @param {?} newChild\n * @param {?} oldChild\n * @return {?}\n */\n function (el, newChild, oldChild) { el.replaceChild(newChild, oldChild); };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.remove = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n return node;\n };\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.insertBefore = /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n function (parent, ref, node) { parent.insertBefore(node, ref); };\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\n BrowserDomAdapter.prototype.insertAllBefore = /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\n function (parent, ref, nodes) {\n nodes.forEach(function (n) { return parent.insertBefore(n, ref); });\n };\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.insertAfter = /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n function (parent, ref, node) { parent.insertBefore(node, ref.nextSibling); };\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setInnerHTML = /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n function (el, value) { el.innerHTML = value; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getText = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.textContent; };\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setText = /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n function (el, value) { el.textContent = value; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getValue = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.value; };\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setValue = /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n function (el, value) { el.value = value; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getChecked = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.checked; };\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setChecked = /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n function (el, value) { el.checked = value; };\n /**\n * @param {?} text\n * @return {?}\n */\n BrowserDomAdapter.prototype.createComment = /**\n * @param {?} text\n * @return {?}\n */\n function (text) { return this.getDefaultDocument().createComment(text); };\n /**\n * @param {?} html\n * @return {?}\n */\n BrowserDomAdapter.prototype.createTemplate = /**\n * @param {?} html\n * @return {?}\n */\n function (html) {\n var /** @type {?} */ t = this.getDefaultDocument().createElement('template');\n t.innerHTML = html;\n return t;\n };\n /**\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.createElement = /**\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n function (tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n };\n /**\n * @param {?} ns\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.createElementNS = /**\n * @param {?} ns\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n function (ns, tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElementNS(ns, tagName);\n };\n /**\n * @param {?} text\n * @param {?=} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.createTextNode = /**\n * @param {?} text\n * @param {?=} doc\n * @return {?}\n */\n function (text, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createTextNode(text);\n };\n /**\n * @param {?} attrName\n * @param {?} attrValue\n * @param {?=} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.createScriptTag = /**\n * @param {?} attrName\n * @param {?} attrValue\n * @param {?=} doc\n * @return {?}\n */\n function (attrName, attrValue, doc) {\n doc = doc || this.getDefaultDocument();\n var /** @type {?} */ el = /** @type {?} */ (doc.createElement('SCRIPT'));\n el.setAttribute(attrName, attrValue);\n return el;\n };\n /**\n * @param {?} css\n * @param {?=} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.createStyleElement = /**\n * @param {?} css\n * @param {?=} doc\n * @return {?}\n */\n function (css, doc) {\n doc = doc || this.getDefaultDocument();\n var /** @type {?} */ style = /** @type {?} */ (doc.createElement('style'));\n this.appendChild(style, this.createTextNode(css, doc));\n return style;\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.createShadowRoot = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return (/** @type {?} */ (el)).createShadowRoot(); };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getShadowRoot = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return (/** @type {?} */ (el)).shadowRoot; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getHost = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return (/** @type {?} */ (el)).host; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.clone = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.cloneNode(true); };\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getElementsByClassName = /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n function (element, name) {\n return element.getElementsByClassName(name);\n };\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getElementsByTagName = /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n function (element, name) {\n return element.getElementsByTagName(name);\n };\n /**\n * @param {?} element\n * @return {?}\n */\n BrowserDomAdapter.prototype.classList = /**\n * @param {?} element\n * @return {?}\n */\n function (element) { return Array.prototype.slice.call(element.classList, 0); };\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n BrowserDomAdapter.prototype.addClass = /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n function (element, className) { element.classList.add(className); };\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n BrowserDomAdapter.prototype.removeClass = /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n function (element, className) { element.classList.remove(className); };\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasClass = /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n function (element, className) {\n return element.classList.contains(className);\n };\n /**\n * @param {?} element\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n BrowserDomAdapter.prototype.setStyle = /**\n * @param {?} element\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n function (element, styleName, styleValue) {\n element.style[styleName] = styleValue;\n };\n /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n BrowserDomAdapter.prototype.removeStyle = /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n function (element, stylename) {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n element.style[stylename] = '';\n };\n /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n BrowserDomAdapter.prototype.getStyle = /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n function (element, stylename) { return element.style[stylename]; };\n /**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasStyle = /**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n function (element, styleName, styleValue) {\n var /** @type {?} */ value = this.getStyle(element, styleName) || '';\n return styleValue ? value == styleValue : value.length > 0;\n };\n /**\n * @param {?} element\n * @return {?}\n */\n BrowserDomAdapter.prototype.tagName = /**\n * @param {?} element\n * @return {?}\n */\n function (element) { return element.tagName; };\n /**\n * @param {?} element\n * @return {?}\n */\n BrowserDomAdapter.prototype.attributeMap = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var /** @type {?} */ res = new Map();\n var /** @type {?} */ elAttrs = element.attributes;\n for (var /** @type {?} */ i = 0; i < elAttrs.length; i++) {\n var /** @type {?} */ attrib = elAttrs.item(i);\n res.set(attrib.name, attrib.value);\n }\n return res;\n };\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasAttribute = /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n function (element, attribute) {\n return element.hasAttribute(attribute);\n };\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasAttributeNS = /**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n function (element, ns, attribute) {\n return element.hasAttributeNS(ns, attribute);\n };\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n BrowserDomAdapter.prototype.getAttribute = /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n function (element, attribute) {\n return element.getAttribute(attribute);\n };\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getAttributeNS = /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n function (element, ns, name) {\n return element.getAttributeNS(ns, name);\n };\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setAttribute = /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (element, name, value) { element.setAttribute(name, value); };\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setAttributeNS = /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (element, ns, name, value) {\n element.setAttributeNS(ns, name, value);\n };\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n BrowserDomAdapter.prototype.removeAttribute = /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n function (element, attribute) { element.removeAttribute(attribute); };\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.removeAttributeNS = /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n function (element, ns, name) {\n element.removeAttributeNS(ns, name);\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.templateAwareRoot = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return this.isTemplateElement(el) ? this.content(el) : el; };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.createHtmlDocument = /**\n * @return {?}\n */\n function () {\n return document.implementation.createHTMLDocument('fakeTitle');\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.getDefaultDocument = /**\n * @return {?}\n */\n function () { return document; };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getBoundingClientRect = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n try {\n return el.getBoundingClientRect();\n }\n catch (/** @type {?} */ e) {\n return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 };\n }\n };\n /**\n * @param {?} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.getTitle = /**\n * @param {?} doc\n * @return {?}\n */\n function (doc) { return doc.title; };\n /**\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\n BrowserDomAdapter.prototype.setTitle = /**\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\n function (doc, newTitle) { doc.title = newTitle || ''; };\n /**\n * @param {?} n\n * @param {?} selector\n * @return {?}\n */\n BrowserDomAdapter.prototype.elementMatches = /**\n * @param {?} n\n * @param {?} selector\n * @return {?}\n */\n function (n, selector) {\n if (this.isElementNode(n)) {\n return n.matches && n.matches(selector) ||\n n.msMatchesSelector && n.msMatchesSelector(selector) ||\n n.webkitMatchesSelector && n.webkitMatchesSelector(selector);\n }\n return false;\n };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.isTemplateElement = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n return this.isElementNode(el) && el.nodeName === 'TEMPLATE';\n };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.isTextNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nodeType === Node.TEXT_NODE; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.isCommentNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nodeType === Node.COMMENT_NODE; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.isElementNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.hasShadowRoot = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n return node.shadowRoot != null && node instanceof HTMLElement;\n };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.isShadowRoot = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node instanceof DocumentFragment; };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.importIntoDoc = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return document.importNode(this.templateAwareRoot(node), true); };\n /**\n * @param {?} node\n * @return {?}\n */\n BrowserDomAdapter.prototype.adoptNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return document.adoptNode(node); };\n /**\n * @param {?} el\n * @return {?}\n */\n BrowserDomAdapter.prototype.getHref = /**\n * @param {?} el\n * @return {?}\n */\n function (el) { return /** @type {?} */ ((el.getAttribute('href'))); };\n /**\n * @param {?} event\n * @return {?}\n */\n BrowserDomAdapter.prototype.getEventKey = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n var /** @type {?} */ key = event.key;\n if (key == null) {\n key = event.keyIdentifier;\n // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and\n // Safari cf\n // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces\n if (key == null) {\n return 'Unidentified';\n }\n if (key.startsWith('U+')) {\n key = String.fromCharCode(parseInt(key.substring(2), 16));\n if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {\n // There is a bug in Chrome for numeric keypad keys:\n // https://code.google.com/p/chromium/issues/detail?id=155654\n // 1, 2, 3 ... are reported as A, B, C ...\n key = (/** @type {?} */ (_chromeNumKeyPadMap))[key];\n }\n }\n }\n return _keyMap[key] || key;\n };\n /**\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\n BrowserDomAdapter.prototype.getGlobalEventTarget = /**\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\n function (doc, target) {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.getHistory = /**\n * @return {?}\n */\n function () { return window.history; };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.getLocation = /**\n * @return {?}\n */\n function () { return window.location; };\n /**\n * @param {?} doc\n * @return {?}\n */\n BrowserDomAdapter.prototype.getBaseHref = /**\n * @param {?} doc\n * @return {?}\n */\n function (doc) {\n var /** @type {?} */ href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.resetBaseElement = /**\n * @return {?}\n */\n function () { baseElement = null; };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.getUserAgent = /**\n * @return {?}\n */\n function () { return window.navigator.userAgent; };\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setData = /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (element, name, value) {\n this.setAttribute(element, 'data-' + name, value);\n };\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getData = /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n function (element, name) {\n return this.getAttribute(element, 'data-' + name);\n };\n /**\n * @param {?} element\n * @return {?}\n */\n BrowserDomAdapter.prototype.getComputedStyle = /**\n * @param {?} element\n * @return {?}\n */\n function (element) { return getComputedStyle(element); };\n // TODO(tbosch): move this into a separate environment class once we have it\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.supportsWebAnimation = /**\n * @return {?}\n */\n function () {\n return typeof (/** @type {?} */ (Element)).prototype['animate'] === 'function';\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.performanceNow = /**\n * @return {?}\n */\n function () {\n // performance.now() is not available in all browsers, see\n // http://caniuse.com/#search=performance.now\n return window.performance && window.performance.now ? window.performance.now() :\n new Date().getTime();\n };\n /**\n * @return {?}\n */\n BrowserDomAdapter.prototype.supportsCookies = /**\n * @return {?}\n */\n function () { return true; };\n /**\n * @param {?} name\n * @return {?}\n */\n BrowserDomAdapter.prototype.getCookie = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return parseCookieValue(document.cookie, name); };\n /**\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n BrowserDomAdapter.prototype.setCookie = /**\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (name, value) {\n // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does\n // not clear other cookies.\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n };\n return BrowserDomAdapter;\n}(GenericBrowserDomAdapter));\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport { BrowserDomAdapter };\nvar /** @type {?} */ baseElement = null;\n/**\n * @return {?}\n */\nfunction getBaseElementHref() {\n if (!baseElement) {\n baseElement = /** @type {?} */ ((document.querySelector('base')));\n if (!baseElement) {\n return null;\n }\n }\n return baseElement.getAttribute('href');\n}\n// based on urlUtils.js in AngularJS 1\nvar /** @type {?} */ urlParsingNode;\n/**\n * @param {?} url\n * @return {?}\n */\nfunction relativePath(url) {\n if (!urlParsingNode) {\n urlParsingNode = document.createElement('a');\n }\n urlParsingNode.setAttribute('href', url);\n return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :\n '/' + urlParsingNode.pathname;\n}\n//# sourceMappingURL=browser_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { DOCUMENT as commonDOCUMENT } from '@angular/common';\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application into a Web Worker).\n *\n * @deprecated import from `\\@angular/common` instead.\n */\nexport var /** @type {?} */ DOCUMENT = commonDOCUMENT;\n//# sourceMappingURL=dom_tokens.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 * @return {?}\n */\nexport function supportsState() {\n return !!window.history.pushState;\n}\n//# sourceMappingURL=history.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { PlatformLocation } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../../dom/dom_adapter';\nimport { DOCUMENT } from '../../dom/dom_tokens';\nimport { supportsState } from './history';\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {\\@link Location}.\n */\nvar BrowserPlatformLocation = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserPlatformLocation, _super);\n function BrowserPlatformLocation(_doc) {\n var _this = _super.call(this) || this;\n _this._doc = _doc;\n _this._init();\n return _this;\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n BrowserPlatformLocation.prototype._init = /**\n * \\@internal\n * @return {?}\n */\n function () {\n (/** @type {?} */ (this)).location = getDOM().getLocation();\n this._history = getDOM().getHistory();\n };\n /**\n * @return {?}\n */\n BrowserPlatformLocation.prototype.getBaseHrefFromDOM = /**\n * @return {?}\n */\n function () { return /** @type {?} */ ((getDOM().getBaseHref(this._doc))); };\n /**\n * @param {?} fn\n * @return {?}\n */\n BrowserPlatformLocation.prototype.onPopState = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('popstate', fn, false);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n BrowserPlatformLocation.prototype.onHashChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('hashchange', fn, false);\n };\n Object.defineProperty(BrowserPlatformLocation.prototype, \"pathname\", {\n get: /**\n * @return {?}\n */\n function () { return this.location.pathname; },\n set: /**\n * @param {?} newPath\n * @return {?}\n */\n function (newPath) { this.location.pathname = newPath; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BrowserPlatformLocation.prototype, \"search\", {\n get: /**\n * @return {?}\n */\n function () { return this.location.search; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BrowserPlatformLocation.prototype, \"hash\", {\n get: /**\n * @return {?}\n */\n function () { return this.location.hash; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n BrowserPlatformLocation.prototype.pushState = /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n function (state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n };\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n BrowserPlatformLocation.prototype.replaceState = /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n function (state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n };\n /**\n * @return {?}\n */\n BrowserPlatformLocation.prototype.forward = /**\n * @return {?}\n */\n function () { this._history.forward(); };\n /**\n * @return {?}\n */\n BrowserPlatformLocation.prototype.back = /**\n * @return {?}\n */\n function () { this._history.back(); };\n BrowserPlatformLocation.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n BrowserPlatformLocation.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return BrowserPlatformLocation;\n}(PlatformLocation));\nexport { BrowserPlatformLocation };\nfunction BrowserPlatformLocation_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserPlatformLocation.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserPlatformLocation.ctorParameters;\n /** @type {?} */\n BrowserPlatformLocation.prototype.location;\n /** @type {?} */\n BrowserPlatformLocation.prototype._history;\n /** @type {?} */\n BrowserPlatformLocation.prototype._doc;\n}\n//# sourceMappingURL=browser_platform_location.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * A service that can be used to get and add meta tags.\n *\n * \\@experimental\n */\nvar Meta = /** @class */ (function () {\n function Meta(_doc) {\n this._doc = _doc;\n this._dom = getDOM();\n }\n /**\n * @param {?} tag\n * @param {?=} forceCreation\n * @return {?}\n */\n Meta.prototype.addTag = /**\n * @param {?} tag\n * @param {?=} forceCreation\n * @return {?}\n */\n function (tag, forceCreation) {\n if (forceCreation === void 0) { forceCreation = false; }\n if (!tag)\n return null;\n return this._getOrCreateElement(tag, forceCreation);\n };\n /**\n * @param {?} tags\n * @param {?=} forceCreation\n * @return {?}\n */\n Meta.prototype.addTags = /**\n * @param {?} tags\n * @param {?=} forceCreation\n * @return {?}\n */\n function (tags, forceCreation) {\n var _this = this;\n if (forceCreation === void 0) { forceCreation = false; }\n if (!tags)\n return [];\n return tags.reduce(function (result, tag) {\n if (tag) {\n result.push(_this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n };\n /**\n * @param {?} attrSelector\n * @return {?}\n */\n Meta.prototype.getTag = /**\n * @param {?} attrSelector\n * @return {?}\n */\n function (attrSelector) {\n if (!attrSelector)\n return null;\n return this._dom.querySelector(this._doc, \"meta[\" + attrSelector + \"]\") || null;\n };\n /**\n * @param {?} attrSelector\n * @return {?}\n */\n Meta.prototype.getTags = /**\n * @param {?} attrSelector\n * @return {?}\n */\n function (attrSelector) {\n if (!attrSelector)\n return [];\n var /** @type {?} */ list = this._dom.querySelectorAll(this._doc, \"meta[\" + attrSelector + \"]\");\n return list ? [].slice.call(list) : [];\n };\n /**\n * @param {?} tag\n * @param {?=} selector\n * @return {?}\n */\n Meta.prototype.updateTag = /**\n * @param {?} tag\n * @param {?=} selector\n * @return {?}\n */\n function (tag, selector) {\n if (!tag)\n return null;\n selector = selector || this._parseSelector(tag);\n var /** @type {?} */ meta = /** @type {?} */ ((this.getTag(selector)));\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n };\n /**\n * @param {?} attrSelector\n * @return {?}\n */\n Meta.prototype.removeTag = /**\n * @param {?} attrSelector\n * @return {?}\n */\n function (attrSelector) { this.removeTagElement(/** @type {?} */ ((this.getTag(attrSelector)))); };\n /**\n * @param {?} meta\n * @return {?}\n */\n Meta.prototype.removeTagElement = /**\n * @param {?} meta\n * @return {?}\n */\n function (meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n };\n /**\n * @param {?} meta\n * @param {?=} forceCreation\n * @return {?}\n */\n Meta.prototype._getOrCreateElement = /**\n * @param {?} meta\n * @param {?=} forceCreation\n * @return {?}\n */\n function (meta, forceCreation) {\n if (forceCreation === void 0) { forceCreation = false; }\n if (!forceCreation) {\n var /** @type {?} */ selector = this._parseSelector(meta);\n var /** @type {?} */ elem = /** @type {?} */ ((this.getTag(selector)));\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n if (elem && this._containsAttributes(meta, elem))\n return elem;\n }\n var /** @type {?} */ element = /** @type {?} */ (this._dom.createElement('meta'));\n this._setMetaElementAttributes(meta, element);\n var /** @type {?} */ head = this._dom.getElementsByTagName(this._doc, 'head')[0];\n this._dom.appendChild(head, element);\n return element;\n };\n /**\n * @param {?} tag\n * @param {?} el\n * @return {?}\n */\n Meta.prototype._setMetaElementAttributes = /**\n * @param {?} tag\n * @param {?} el\n * @return {?}\n */\n function (tag, el) {\n var _this = this;\n Object.keys(tag).forEach(function (prop) { return _this._dom.setAttribute(el, prop, tag[prop]); });\n return el;\n };\n /**\n * @param {?} tag\n * @return {?}\n */\n Meta.prototype._parseSelector = /**\n * @param {?} tag\n * @return {?}\n */\n function (tag) {\n var /** @type {?} */ attr = tag.name ? 'name' : 'property';\n return attr + \"=\\\"\" + tag[attr] + \"\\\"\";\n };\n /**\n * @param {?} tag\n * @param {?} elem\n * @return {?}\n */\n Meta.prototype._containsAttributes = /**\n * @param {?} tag\n * @param {?} elem\n * @return {?}\n */\n function (tag, elem) {\n var _this = this;\n return Object.keys(tag).every(function (key) { return _this._dom.getAttribute(elem, key) === tag[key]; });\n };\n Meta.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Meta.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return Meta;\n}());\nexport { Meta };\nfunction Meta_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n Meta.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n Meta.ctorParameters;\n /** @type {?} */\n Meta.prototype._dom;\n /** @type {?} */\n Meta.prototype._doc;\n}\n//# sourceMappingURL=meta.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { APP_INITIALIZER, ApplicationInitStatus, InjectionToken, Injector } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * An id that identifies a particular application being bootstrapped, that should\n * match across the client/server boundary.\n */\nexport var /** @type {?} */ TRANSITION_ID = new InjectionToken('TRANSITION_ID');\n/**\n * @param {?} transitionId\n * @param {?} document\n * @param {?} injector\n * @return {?}\n */\nexport function appInitializerFactory(transitionId, document, injector) {\n return function () {\n // Wait for all application initializers to be completed before removing the styles set by\n // the server.\n injector.get(ApplicationInitStatus).donePromise.then(function () {\n var /** @type {?} */ dom = getDOM();\n var /** @type {?} */ styles = Array.prototype.slice.apply(dom.querySelectorAll(document, \"style[ng-transition]\"));\n styles.filter(function (el) { return dom.getAttribute(el, 'ng-transition') === transitionId; })\n .forEach(function (el) { return dom.remove(el); });\n });\n };\n}\nexport var /** @type {?} */ SERVER_TRANSITION_PROVIDERS = [\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TRANSITION_ID, DOCUMENT, Injector],\n multi: true\n },\n];\n//# sourceMappingURL=server-transition.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { setTestabilityGetter, ɵglobal as global } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nvar BrowserGetTestability = /** @class */ (function () {\n function BrowserGetTestability() {\n }\n /**\n * @return {?}\n */\n BrowserGetTestability.init = /**\n * @return {?}\n */\n function () { setTestabilityGetter(new BrowserGetTestability()); };\n /**\n * @param {?} registry\n * @return {?}\n */\n BrowserGetTestability.prototype.addToWindow = /**\n * @param {?} registry\n * @return {?}\n */\n function (registry) {\n global['getAngularTestability'] = function (elem, findInAncestors) {\n if (findInAncestors === void 0) { findInAncestors = true; }\n var /** @type {?} */ testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new Error('Could not find testability for element.');\n }\n return testability;\n };\n global['getAllAngularTestabilities'] = function () { return registry.getAllTestabilities(); };\n global['getAllAngularRootElements'] = function () { return registry.getAllRootElements(); };\n var /** @type {?} */ whenAllStable = function (callback /** TODO #9100 */) {\n var /** @type {?} */ testabilities = global['getAllAngularTestabilities']();\n var /** @type {?} */ count = testabilities.length;\n var /** @type {?} */ didWork = false;\n var /** @type {?} */ decrement = function (didWork_ /** TODO #9100 */) {\n didWork = didWork || didWork_;\n count--;\n if (count == 0) {\n callback(didWork);\n }\n };\n testabilities.forEach(function (testability /** TODO #9100 */) {\n testability.whenStable(decrement);\n });\n };\n if (!global['frameworkStabilizers']) {\n global['frameworkStabilizers'] = [];\n }\n global['frameworkStabilizers'].push(whenAllStable);\n };\n /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n BrowserGetTestability.prototype.findTestabilityInTree = /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n function (registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n var /** @type {?} */ t = registry.getTestability(elem);\n if (t != null) {\n return t;\n }\n else if (!findInAncestors) {\n return null;\n }\n if (getDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, getDOM().getHost(elem), true);\n }\n return this.findTestabilityInTree(registry, getDOM().parentElement(elem), true);\n };\n return BrowserGetTestability;\n}());\nexport { BrowserGetTestability };\n//# sourceMappingURL=testability.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * \\@experimental\n */\nvar Title = /** @class */ (function () {\n function Title(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n */\n /**\n * Get the title of the current HTML document.\n * @return {?}\n */\n Title.prototype.getTitle = /**\n * Get the title of the current HTML document.\n * @return {?}\n */\n function () { return getDOM().getTitle(this._doc); };\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n /**\n * Set the title of the current HTML document.\n * @param {?} newTitle\n * @return {?}\n */\n Title.prototype.setTitle = /**\n * Set the title of the current HTML document.\n * @param {?} newTitle\n * @return {?}\n */\n function (newTitle) { getDOM().setTitle(this._doc, newTitle); };\n Title.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Title.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return Title;\n}());\nexport { Title };\nfunction Title_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n Title.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n Title.ctorParameters;\n /** @type {?} */\n Title.prototype._doc;\n}\n//# sourceMappingURL=title.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { ɵglobal as global } from '@angular/core';\nvar /** @type {?} */ CAMEL_CASE_REGEXP = /([A-Z])/g;\nvar /** @type {?} */ DASH_CASE_REGEXP = /-([a-z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nexport function camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return '-' + m[1].toLowerCase();\n });\n}\n/**\n * @param {?} input\n * @return {?}\n */\nexport function dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[1].toUpperCase();\n });\n}\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param {?} name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param {?} value The value to export.\n * @return {?}\n */\nexport function exportNgVar(name, value) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n var /** @type {?} */ ng = global['ng'] = (/** @type {?} */ (global['ng'])) || {};\n ng[name] = value;\n }\n}\n//# sourceMappingURL=util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport * as core from '@angular/core';\nimport { exportNgVar } from '../util';\nvar /** @type {?} */ CORE_TOKENS = {\n 'ApplicationRef': core.ApplicationRef,\n 'NgZone': core.NgZone,\n};\nvar /** @type {?} */ INSPECT_GLOBAL_NAME = 'probe';\nvar /** @type {?} */ CORE_TOKENS_GLOBAL_NAME = 'coreTokens';\n/**\n * Returns a {\\@link DebugElement} for the given native DOM element, or\n * null if the given native element does not have an Angular view associated\n * with it.\n * @param {?} element\n * @return {?}\n */\nexport function inspectNativeElement(element) {\n return core.getDebugNode(element);\n}\n/**\n * @param {?} coreTokens\n * @return {?}\n */\nexport function _createNgProbe(coreTokens) {\n exportNgVar(INSPECT_GLOBAL_NAME, inspectNativeElement);\n exportNgVar(CORE_TOKENS_GLOBAL_NAME, tslib_1.__assign({}, CORE_TOKENS, _ngProbeTokensToMap(coreTokens || [])));\n return function () { return inspectNativeElement; };\n}\n/**\n * @param {?} tokens\n * @return {?}\n */\nfunction _ngProbeTokensToMap(tokens) {\n return tokens.reduce(function (prev, t) { return (prev[t.name] = t.token, prev); }, {});\n}\n/**\n * Providers which support debugging Angular applications (e.g. via `ng.probe`).\n */\nexport var /** @type {?} */ ELEMENT_PROBE_PROVIDERS = [\n {\n provide: core.APP_INITIALIZER,\n useFactory: _createNgProbe,\n deps: [\n [core.NgProbeToken, new core.Optional()],\n ],\n multi: true,\n },\n];\n//# sourceMappingURL=ng_probe.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { Inject, Injectable, InjectionToken, NgZone } from '@angular/core';\nimport { getDOM } from '../dom_adapter';\n/**\n * \\@stable\n */\nexport var /** @type {?} */ EVENT_MANAGER_PLUGINS = new InjectionToken('EventManagerPlugins');\n/**\n * \\@stable\n */\nvar EventManager = /** @class */ (function () {\n function EventManager(plugins, _zone) {\n var _this = this;\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach(function (p) { return p.manager = _this; });\n this._plugins = plugins.slice().reverse();\n }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n EventManager.prototype.addEventListener = /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (element, eventName, handler) {\n var /** @type {?} */ plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n };\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n EventManager.prototype.addGlobalEventListener = /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (target, eventName, handler) {\n var /** @type {?} */ plugin = this._findPluginFor(eventName);\n return plugin.addGlobalEventListener(target, eventName, handler);\n };\n /**\n * @return {?}\n */\n EventManager.prototype.getZone = /**\n * @return {?}\n */\n function () { return this._zone; };\n /** @internal */\n /**\n * \\@internal\n * @param {?} eventName\n * @return {?}\n */\n EventManager.prototype._findPluginFor = /**\n * \\@internal\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) {\n var /** @type {?} */ plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n var /** @type {?} */ plugins = this._plugins;\n for (var /** @type {?} */ i = 0; i < plugins.length; i++) {\n var /** @type {?} */ plugin_1 = plugins[i];\n if (plugin_1.supports(eventName)) {\n this._eventNameToPlugin.set(eventName, plugin_1);\n return plugin_1;\n }\n }\n throw new Error(\"No event manager plugin found for event \" + eventName);\n };\n EventManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n EventManager.ctorParameters = function () { return [\n { type: Array, decorators: [{ type: Inject, args: [EVENT_MANAGER_PLUGINS,] },] },\n { type: NgZone, },\n ]; };\n return EventManager;\n}());\nexport { EventManager };\nfunction EventManager_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n EventManager.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n EventManager.ctorParameters;\n /** @type {?} */\n EventManager.prototype._plugins;\n /** @type {?} */\n EventManager.prototype._eventNameToPlugin;\n /** @type {?} */\n EventManager.prototype._zone;\n}\n/**\n * @abstract\n */\nvar /**\n * @abstract\n */\nEventManagerPlugin = /** @class */ (function () {\n function EventManagerPlugin(_doc) {\n this._doc = _doc;\n }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n EventManagerPlugin.prototype.addGlobalEventListener = /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (element, eventName, handler) {\n var /** @type {?} */ target = getDOM().getGlobalEventTarget(this._doc, element);\n if (!target) {\n throw new Error(\"Unsupported event target \" + target + \" for event \" + eventName);\n }\n return this.addEventListener(target, eventName, handler);\n };\n return EventManagerPlugin;\n}());\n/**\n * @abstract\n */\nexport { EventManagerPlugin };\nfunction EventManagerPlugin_tsickle_Closure_declarations() {\n /** @type {?} */\n EventManagerPlugin.prototype.manager;\n /** @type {?} */\n EventManagerPlugin.prototype._doc;\n /**\n * @abstract\n * @param {?} eventName\n * @return {?}\n */\n EventManagerPlugin.prototype.supports = function (eventName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n EventManagerPlugin.prototype.addEventListener = function (element, eventName, handler) { };\n}\n//# sourceMappingURL=event_manager.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from './dom_adapter';\nimport { DOCUMENT } from './dom_tokens';\nvar SharedStylesHost = /** @class */ (function () {\n function SharedStylesHost() {\n /**\n * \\@internal\n */\n this._stylesSet = new Set();\n }\n /**\n * @param {?} styles\n * @return {?}\n */\n SharedStylesHost.prototype.addStyles = /**\n * @param {?} styles\n * @return {?}\n */\n function (styles) {\n var _this = this;\n var /** @type {?} */ additions = new Set();\n styles.forEach(function (style) {\n if (!_this._stylesSet.has(style)) {\n _this._stylesSet.add(style);\n additions.add(style);\n }\n });\n this.onStylesAdded(additions);\n };\n /**\n * @param {?} additions\n * @return {?}\n */\n SharedStylesHost.prototype.onStylesAdded = /**\n * @param {?} additions\n * @return {?}\n */\n function (additions) { };\n /**\n * @return {?}\n */\n SharedStylesHost.prototype.getAllStyles = /**\n * @return {?}\n */\n function () { return Array.from(this._stylesSet); };\n SharedStylesHost.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n SharedStylesHost.ctorParameters = function () { return []; };\n return SharedStylesHost;\n}());\nexport { SharedStylesHost };\nfunction SharedStylesHost_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n SharedStylesHost.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n SharedStylesHost.ctorParameters;\n /**\n * \\@internal\n * @type {?}\n */\n SharedStylesHost.prototype._stylesSet;\n}\nvar DomSharedStylesHost = /** @class */ (function (_super) {\n tslib_1.__extends(DomSharedStylesHost, _super);\n function DomSharedStylesHost(_doc) {\n var _this = _super.call(this) || this;\n _this._doc = _doc;\n _this._hostNodes = new Set();\n _this._styleNodes = new Set();\n _this._hostNodes.add(_doc.head);\n return _this;\n }\n /**\n * @param {?} styles\n * @param {?} host\n * @return {?}\n */\n DomSharedStylesHost.prototype._addStylesToHost = /**\n * @param {?} styles\n * @param {?} host\n * @return {?}\n */\n function (styles, host) {\n var _this = this;\n styles.forEach(function (style) {\n var /** @type {?} */ styleEl = _this._doc.createElement('style');\n styleEl.textContent = style;\n _this._styleNodes.add(host.appendChild(styleEl));\n });\n };\n /**\n * @param {?} hostNode\n * @return {?}\n */\n DomSharedStylesHost.prototype.addHost = /**\n * @param {?} hostNode\n * @return {?}\n */\n function (hostNode) {\n this._addStylesToHost(this._stylesSet, hostNode);\n this._hostNodes.add(hostNode);\n };\n /**\n * @param {?} hostNode\n * @return {?}\n */\n DomSharedStylesHost.prototype.removeHost = /**\n * @param {?} hostNode\n * @return {?}\n */\n function (hostNode) { this._hostNodes.delete(hostNode); };\n /**\n * @param {?} additions\n * @return {?}\n */\n DomSharedStylesHost.prototype.onStylesAdded = /**\n * @param {?} additions\n * @return {?}\n */\n function (additions) {\n var _this = this;\n this._hostNodes.forEach(function (hostNode) { return _this._addStylesToHost(additions, hostNode); });\n };\n /**\n * @return {?}\n */\n DomSharedStylesHost.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._styleNodes.forEach(function (styleNode) { return getDOM().remove(styleNode); }); };\n DomSharedStylesHost.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n DomSharedStylesHost.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return DomSharedStylesHost;\n}(SharedStylesHost));\nexport { DomSharedStylesHost };\nfunction DomSharedStylesHost_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomSharedStylesHost.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomSharedStylesHost.ctorParameters;\n /** @type {?} */\n DomSharedStylesHost.prototype._hostNodes;\n /** @type {?} */\n DomSharedStylesHost.prototype._styleNodes;\n /** @type {?} */\n DomSharedStylesHost.prototype._doc;\n}\n//# sourceMappingURL=shared_styles_host.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Injectable, RendererStyleFlags2, ViewEncapsulation } from '@angular/core';\nimport { EventManager } from './events/event_manager';\nimport { DomSharedStylesHost } from './shared_styles_host';\nexport var /** @type {?} */ NAMESPACE_URIS = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n};\nvar /** @type {?} */ COMPONENT_REGEX = /%COMP%/g;\nexport var /** @type {?} */ COMPONENT_VARIABLE = '%COMP%';\nexport var /** @type {?} */ HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\nexport var /** @type {?} */ CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\n/**\n * @param {?} componentShortId\n * @return {?}\n */\nexport function shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n/**\n * @param {?} componentShortId\n * @return {?}\n */\nexport function shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n/**\n * @param {?} compId\n * @param {?} styles\n * @param {?} target\n * @return {?}\n */\nexport function flattenStyles(compId, styles, target) {\n for (var /** @type {?} */ i = 0; i < styles.length; i++) {\n var /** @type {?} */ style = styles[i];\n if (Array.isArray(style)) {\n flattenStyles(compId, style, target);\n }\n else {\n style = style.replace(COMPONENT_REGEX, compId);\n target.push(style);\n }\n }\n return target;\n}\n/**\n * @param {?} eventHandler\n * @return {?}\n */\nfunction decoratePreventDefault(eventHandler) {\n return function (event) {\n var /** @type {?} */ allowDefaultBehavior = eventHandler(event);\n if (allowDefaultBehavior === false) {\n // TODO(tbosch): move preventDefault into event plugins...\n event.preventDefault();\n event.returnValue = false;\n }\n };\n}\nvar DomRendererFactory2 = /** @class */ (function () {\n function DomRendererFactory2(eventManager, sharedStylesHost) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.rendererByCompId = new Map();\n this.defaultRenderer = new DefaultDomRenderer2(eventManager);\n }\n /**\n * @param {?} element\n * @param {?} type\n * @return {?}\n */\n DomRendererFactory2.prototype.createRenderer = /**\n * @param {?} element\n * @param {?} type\n * @return {?}\n */\n function (element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated: {\n var /** @type {?} */ renderer = this.rendererByCompId.get(type.id);\n if (!renderer) {\n renderer =\n new EmulatedEncapsulationDomRenderer2(this.eventManager, this.sharedStylesHost, type);\n this.rendererByCompId.set(type.id, renderer);\n }\n (/** @type {?} */ (renderer)).applyToHost(element);\n return renderer;\n }\n case ViewEncapsulation.Native:\n return new ShadowDomRenderer(this.eventManager, this.sharedStylesHost, element, type);\n default: {\n if (!this.rendererByCompId.has(type.id)) {\n var /** @type {?} */ styles = flattenStyles(type.id, type.styles, []);\n this.sharedStylesHost.addStyles(styles);\n this.rendererByCompId.set(type.id, this.defaultRenderer);\n }\n return this.defaultRenderer;\n }\n }\n };\n /**\n * @return {?}\n */\n DomRendererFactory2.prototype.begin = /**\n * @return {?}\n */\n function () { };\n /**\n * @return {?}\n */\n DomRendererFactory2.prototype.end = /**\n * @return {?}\n */\n function () { };\n DomRendererFactory2.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n DomRendererFactory2.ctorParameters = function () { return [\n { type: EventManager, },\n { type: DomSharedStylesHost, },\n ]; };\n return DomRendererFactory2;\n}());\nexport { DomRendererFactory2 };\nfunction DomRendererFactory2_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomRendererFactory2.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomRendererFactory2.ctorParameters;\n /** @type {?} */\n DomRendererFactory2.prototype.rendererByCompId;\n /** @type {?} */\n DomRendererFactory2.prototype.defaultRenderer;\n /** @type {?} */\n DomRendererFactory2.prototype.eventManager;\n /** @type {?} */\n DomRendererFactory2.prototype.sharedStylesHost;\n}\nvar DefaultDomRenderer2 = /** @class */ (function () {\n function DefaultDomRenderer2(eventManager) {\n this.eventManager = eventManager;\n this.data = Object.create(null);\n }\n /**\n * @return {?}\n */\n DefaultDomRenderer2.prototype.destroy = /**\n * @return {?}\n */\n function () { };\n /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DefaultDomRenderer2.prototype.createElement = /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (name, namespace) {\n if (namespace) {\n return document.createElementNS(NAMESPACE_URIS[namespace], name);\n }\n return document.createElement(name);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DefaultDomRenderer2.prototype.createComment = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return document.createComment(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n DefaultDomRenderer2.prototype.createText = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return document.createTextNode(value); };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n DefaultDomRenderer2.prototype.appendChild = /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n function (parent, newChild) { parent.appendChild(newChild); };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n DefaultDomRenderer2.prototype.insertBefore = /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n function (parent, newChild, refChild) {\n if (parent) {\n parent.insertBefore(newChild, refChild);\n }\n };\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n DefaultDomRenderer2.prototype.removeChild = /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n function (parent, oldChild) {\n if (parent) {\n parent.removeChild(oldChild);\n }\n };\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n DefaultDomRenderer2.prototype.selectRootElement = /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n function (selectorOrNode) {\n var /** @type {?} */ el = typeof selectorOrNode === 'string' ? document.querySelector(selectorOrNode) :\n selectorOrNode;\n if (!el) {\n throw new Error(\"The selector \\\"\" + selectorOrNode + \"\\\" did not match any elements\");\n }\n el.textContent = '';\n return el;\n };\n /**\n * @param {?} node\n * @return {?}\n */\n DefaultDomRenderer2.prototype.parentNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.parentNode; };\n /**\n * @param {?} node\n * @return {?}\n */\n DefaultDomRenderer2.prototype.nextSibling = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node.nextSibling; };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n DefaultDomRenderer2.prototype.setAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, value, namespace) {\n if (namespace) {\n name = namespace + \":\" + name;\n var /** @type {?} */ namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n }\n else {\n el.setAttribute(name, value);\n }\n }\n else {\n el.setAttribute(name, value);\n }\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DefaultDomRenderer2.prototype.removeAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, namespace) {\n if (namespace) {\n var /** @type {?} */ namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n }\n else {\n el.removeAttribute(namespace + \":\" + name);\n }\n }\n else {\n el.removeAttribute(name);\n }\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DefaultDomRenderer2.prototype.addClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) { el.classList.add(name); };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DefaultDomRenderer2.prototype.removeClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) { el.classList.remove(name); };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n DefaultDomRenderer2.prototype.setStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n function (el, style, value, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.setProperty(style, value, !!(flags & RendererStyleFlags2.Important) ? 'important' : '');\n }\n else {\n el.style[style] = value;\n }\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n DefaultDomRenderer2.prototype.removeStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n function (el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.removeProperty(style);\n }\n else {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n el.style[style] = '';\n }\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DefaultDomRenderer2.prototype.setProperty = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (el, name, value) {\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n };\n /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n DefaultDomRenderer2.prototype.setValue = /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n function (node, value) { node.nodeValue = value; };\n /**\n * @param {?} target\n * @param {?} event\n * @param {?} callback\n * @return {?}\n */\n DefaultDomRenderer2.prototype.listen = /**\n * @param {?} target\n * @param {?} event\n * @param {?} callback\n * @return {?}\n */\n function (target, event, callback) {\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n return /** @type {?} */ (this.eventManager.addGlobalEventListener(target, event, decoratePreventDefault(callback)));\n }\n return /** @type {?} */ ((this.eventManager.addEventListener(target, event, decoratePreventDefault(callback))));\n };\n return DefaultDomRenderer2;\n}());\nfunction DefaultDomRenderer2_tsickle_Closure_declarations() {\n /** @type {?} */\n DefaultDomRenderer2.prototype.data;\n /** @type {?} */\n DefaultDomRenderer2.prototype.destroyNode;\n /** @type {?} */\n DefaultDomRenderer2.prototype.eventManager;\n}\nvar /** @type {?} */ AT_CHARCODE = '@'.charCodeAt(0);\n/**\n * @param {?} name\n * @param {?} nameKind\n * @return {?}\n */\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new Error(\"Found the synthetic \" + nameKind + \" \" + name + \". Please include either \\\"BrowserAnimationsModule\\\" or \\\"NoopAnimationsModule\\\" in your application.\");\n }\n}\nvar EmulatedEncapsulationDomRenderer2 = /** @class */ (function (_super) {\n tslib_1.__extends(EmulatedEncapsulationDomRenderer2, _super);\n function EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, component) {\n var _this = _super.call(this, eventManager) || this;\n _this.component = component;\n var /** @type {?} */ styles = flattenStyles(component.id, component.styles, []);\n sharedStylesHost.addStyles(styles);\n _this.contentAttr = shimContentAttribute(component.id);\n _this.hostAttr = shimHostAttribute(component.id);\n return _this;\n }\n /**\n * @param {?} element\n * @return {?}\n */\n EmulatedEncapsulationDomRenderer2.prototype.applyToHost = /**\n * @param {?} element\n * @return {?}\n */\n function (element) { _super.prototype.setAttribute.call(this, element, this.hostAttr, ''); };\n /**\n * @param {?} parent\n * @param {?} name\n * @return {?}\n */\n EmulatedEncapsulationDomRenderer2.prototype.createElement = /**\n * @param {?} parent\n * @param {?} name\n * @return {?}\n */\n function (parent, name) {\n var /** @type {?} */ el = _super.prototype.createElement.call(this, parent, name);\n _super.prototype.setAttribute.call(this, el, this.contentAttr, '');\n return el;\n };\n return EmulatedEncapsulationDomRenderer2;\n}(DefaultDomRenderer2));\nfunction EmulatedEncapsulationDomRenderer2_tsickle_Closure_declarations() {\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.contentAttr;\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.hostAttr;\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.component;\n}\nvar ShadowDomRenderer = /** @class */ (function (_super) {\n tslib_1.__extends(ShadowDomRenderer, _super);\n function ShadowDomRenderer(eventManager, sharedStylesHost, hostEl, component) {\n var _this = _super.call(this, eventManager) || this;\n _this.sharedStylesHost = sharedStylesHost;\n _this.hostEl = hostEl;\n _this.component = component;\n _this.shadowRoot = (/** @type {?} */ (hostEl)).createShadowRoot();\n _this.sharedStylesHost.addHost(_this.shadowRoot);\n var /** @type {?} */ styles = flattenStyles(component.id, component.styles, []);\n for (var /** @type {?} */ i = 0; i < styles.length; i++) {\n var /** @type {?} */ styleEl = document.createElement('style');\n styleEl.textContent = styles[i];\n _this.shadowRoot.appendChild(styleEl);\n }\n return _this;\n }\n /**\n * @param {?} node\n * @return {?}\n */\n ShadowDomRenderer.prototype.nodeOrShadowRoot = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return node === this.hostEl ? this.shadowRoot : node; };\n /**\n * @return {?}\n */\n ShadowDomRenderer.prototype.destroy = /**\n * @return {?}\n */\n function () { this.sharedStylesHost.removeHost(this.shadowRoot); };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n ShadowDomRenderer.prototype.appendChild = /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n function (parent, newChild) {\n return _super.prototype.appendChild.call(this, this.nodeOrShadowRoot(parent), newChild);\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n ShadowDomRenderer.prototype.insertBefore = /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n function (parent, newChild, refChild) {\n return _super.prototype.insertBefore.call(this, this.nodeOrShadowRoot(parent), newChild, refChild);\n };\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n ShadowDomRenderer.prototype.removeChild = /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n function (parent, oldChild) {\n return _super.prototype.removeChild.call(this, this.nodeOrShadowRoot(parent), oldChild);\n };\n /**\n * @param {?} node\n * @return {?}\n */\n ShadowDomRenderer.prototype.parentNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n return this.nodeOrShadowRoot(_super.prototype.parentNode.call(this, this.nodeOrShadowRoot(node)));\n };\n return ShadowDomRenderer;\n}(DefaultDomRenderer2));\nfunction ShadowDomRenderer_tsickle_Closure_declarations() {\n /** @type {?} */\n ShadowDomRenderer.prototype.shadowRoot;\n /** @type {?} */\n ShadowDomRenderer.prototype.sharedStylesHost;\n /** @type {?} */\n ShadowDomRenderer.prototype.hostEl;\n /** @type {?} */\n ShadowDomRenderer.prototype.component;\n}\n//# sourceMappingURL=dom_renderer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Inject, Injectable, NgZone } from '@angular/core';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nvar ɵ0 = function (v) {\n return '__zone_symbol__' + v;\n};\n/**\n * Detect if Zone is present. If it is then use simple zone aware 'addEventListener'\n * since Angular can do much more\n * efficient bookkeeping than Zone can, because we have additional information. This speeds up\n * addEventListener by 3x.\n */\nvar /** @type {?} */ __symbol__ = (typeof Zone !== 'undefined') && (/** @type {?} */ (Zone))['__symbol__'] || ɵ0;\nvar /** @type {?} */ ADD_EVENT_LISTENER = __symbol__('addEventListener');\nvar /** @type {?} */ REMOVE_EVENT_LISTENER = __symbol__('removeEventListener');\nvar /** @type {?} */ symbolNames = {};\nvar /** @type {?} */ FALSE = 'FALSE';\nvar /** @type {?} */ ANGULAR = 'ANGULAR';\nvar /** @type {?} */ NATIVE_ADD_LISTENER = 'addEventListener';\nvar /** @type {?} */ NATIVE_REMOVE_LISTENER = 'removeEventListener';\n// use the same symbol string which is used in zone.js\nvar /** @type {?} */ stopSymbol = '__zone_symbol__propagationStopped';\nvar /** @type {?} */ stopMethodSymbol = '__zone_symbol__stopImmediatePropagation';\nvar /** @type {?} */ blackListedEvents = (typeof Zone !== 'undefined') && (/** @type {?} */ (Zone))[__symbol__('BLACK_LISTED_EVENTS')];\nvar /** @type {?} */ blackListedMap;\nif (blackListedEvents) {\n blackListedMap = {};\n blackListedEvents.forEach(function (eventName) { blackListedMap[eventName] = eventName; });\n}\nvar /** @type {?} */ isBlackListedEvent = function (eventName) {\n if (!blackListedMap) {\n return false;\n }\n return blackListedMap.hasOwnProperty(eventName);\n};\nvar ɵ1 = isBlackListedEvent;\n/**\n * @record\n */\nfunction TaskData() { }\nfunction TaskData_tsickle_Closure_declarations() {\n /** @type {?} */\n TaskData.prototype.zone;\n /** @type {?} */\n TaskData.prototype.handler;\n}\n// a global listener to handle all dom event,\n// so we do not need to create a closure everytime\nvar /** @type {?} */ globalListener = function (event) {\n var /** @type {?} */ symbolName = symbolNames[event.type];\n if (!symbolName) {\n return;\n }\n var /** @type {?} */ taskDatas = this[symbolName];\n if (!taskDatas) {\n return;\n }\n var /** @type {?} */ args = [event];\n if (taskDatas.length === 1) {\n // if taskDatas only have one element, just invoke it\n var /** @type {?} */ taskData = taskDatas[0];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n return taskData.zone.run(taskData.handler, this, args);\n }\n else {\n return taskData.handler.apply(this, args);\n }\n }\n else {\n // copy tasks as a snapshot to avoid event handlers remove\n // itself or others\n var /** @type {?} */ copiedTasks = taskDatas.slice();\n for (var /** @type {?} */ i = 0; i < copiedTasks.length; i++) {\n // if other listener call event.stopImmediatePropagation\n // just break\n if ((/** @type {?} */ (event))[stopSymbol] === true) {\n break;\n }\n var /** @type {?} */ taskData = copiedTasks[i];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n taskData.zone.run(taskData.handler, this, args);\n }\n else {\n taskData.handler.apply(this, args);\n }\n }\n }\n};\nvar ɵ2 = globalListener;\nvar DomEventsPlugin = /** @class */ (function (_super) {\n tslib_1.__extends(DomEventsPlugin, _super);\n function DomEventsPlugin(doc, ngZone) {\n var _this = _super.call(this, doc) || this;\n _this.ngZone = ngZone;\n _this.patchEvent();\n return _this;\n }\n /**\n * @return {?}\n */\n DomEventsPlugin.prototype.patchEvent = /**\n * @return {?}\n */\n function () {\n if (!Event || !Event.prototype) {\n return;\n }\n if ((/** @type {?} */ (Event.prototype))[stopMethodSymbol]) {\n // already patched by zone.js\n return;\n }\n var /** @type {?} */ delegate = (/** @type {?} */ (Event.prototype))[stopMethodSymbol] =\n Event.prototype.stopImmediatePropagation;\n Event.prototype.stopImmediatePropagation = function () {\n if (this) {\n this[stopSymbol] = true;\n }\n // should call native delegate in case\n // in some enviroment part of the application\n // will not use the patched Event\n delegate && delegate.apply(this, arguments);\n };\n };\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n /**\n * @param {?} eventName\n * @return {?}\n */\n DomEventsPlugin.prototype.supports = /**\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) { return true; };\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n DomEventsPlugin.prototype.addEventListener = /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (element, eventName, handler) {\n var _this = this;\n /**\n * This code is about to add a listener to the DOM. If Zone.js is present, than\n * `addEventListener` has been patched. The patched code adds overhead in both\n * memory and speed (3x slower) than native. For this reason if we detect that\n * Zone.js is present we use a simple version of zone aware addEventListener instead.\n * The result is faster registration and the zone will be restored.\n * But ZoneSpec.onScheduleTask, ZoneSpec.onInvokeTask, ZoneSpec.onCancelTask\n * will not be invoked\n * We also do manual zone restoration in element.ts renderEventHandlerClosure method.\n *\n * NOTE: it is possible that the element is from different iframe, and so we\n * have to check before we execute the method.\n */\n var /** @type {?} */ self = this;\n var /** @type {?} */ zoneJsLoaded = element[ADD_EVENT_LISTENER];\n var /** @type {?} */ callback = /** @type {?} */ (handler);\n // if zonejs is loaded and current zone is not ngZone\n // we keep Zone.current on target for later restoration.\n if (zoneJsLoaded && (!NgZone.isInAngularZone() || isBlackListedEvent(eventName))) {\n var /** @type {?} */ symbolName = symbolNames[eventName];\n if (!symbolName) {\n symbolName = symbolNames[eventName] = __symbol__(ANGULAR + eventName + FALSE);\n }\n var /** @type {?} */ taskDatas = (/** @type {?} */ (element))[symbolName];\n var /** @type {?} */ globalListenerRegistered = taskDatas && taskDatas.length > 0;\n if (!taskDatas) {\n taskDatas = (/** @type {?} */ (element))[symbolName] = [];\n }\n var /** @type {?} */ zone = isBlackListedEvent(eventName) ? Zone.root : Zone.current;\n if (taskDatas.length === 0) {\n taskDatas.push({ zone: zone, handler: callback });\n }\n else {\n var /** @type {?} */ callbackRegistered = false;\n for (var /** @type {?} */ i = 0; i < taskDatas.length; i++) {\n if (taskDatas[i].handler === callback) {\n callbackRegistered = true;\n break;\n }\n }\n if (!callbackRegistered) {\n taskDatas.push({ zone: zone, handler: callback });\n }\n }\n if (!globalListenerRegistered) {\n element[ADD_EVENT_LISTENER](eventName, globalListener, false);\n }\n }\n else {\n element[NATIVE_ADD_LISTENER](eventName, callback, false);\n }\n return function () { return _this.removeEventListener(element, eventName, callback); };\n };\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n DomEventsPlugin.prototype.removeEventListener = /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n function (target, eventName, callback) {\n var /** @type {?} */ underlyingRemove = target[REMOVE_EVENT_LISTENER];\n // zone.js not loaded, use native removeEventListener\n if (!underlyingRemove) {\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n var /** @type {?} */ symbolName = symbolNames[eventName];\n var /** @type {?} */ taskDatas = symbolName && target[symbolName];\n if (!taskDatas) {\n // addEventListener not using patched version\n // just call native removeEventListener\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n // fix issue 20532, should be able to remove\n // listener which was added inside of ngZone\n var /** @type {?} */ found = false;\n for (var /** @type {?} */ i = 0; i < taskDatas.length; i++) {\n // remove listener from taskDatas if the callback equals\n if (taskDatas[i].handler === callback) {\n found = true;\n taskDatas.splice(i, 1);\n break;\n }\n }\n if (found) {\n if (taskDatas.length === 0) {\n // all listeners are removed, we can remove the globalListener from target\n underlyingRemove.apply(target, [eventName, globalListener, false]);\n }\n }\n else {\n // not found in taskDatas, the callback may be added inside of ngZone\n // use native remove listener to remove the calback\n target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n };\n DomEventsPlugin.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n DomEventsPlugin.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n { type: NgZone, },\n ]; };\n return DomEventsPlugin;\n}(EventManagerPlugin));\nexport { DomEventsPlugin };\nfunction DomEventsPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomEventsPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomEventsPlugin.ctorParameters;\n /** @type {?} */\n DomEventsPlugin.prototype.ngZone;\n}\nexport { ɵ0, ɵ1, ɵ2 };\n//# sourceMappingURL=dom_events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nvar /** @type {?} */ EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n};\n/**\n * A DI token that you can use to provide{\\@link HammerGestureConfig} to Angular. Use it to configure\n * Hammer gestures.\n *\n * \\@experimental\n */\nexport var /** @type {?} */ HAMMER_GESTURE_CONFIG = new InjectionToken('HammerGestureConfig');\n/**\n * @record\n */\nexport function HammerInstance() { }\nfunction HammerInstance_tsickle_Closure_declarations() {\n /** @type {?} */\n HammerInstance.prototype.on;\n /** @type {?} */\n HammerInstance.prototype.off;\n}\n/**\n * \\@experimental\n */\nvar HammerGestureConfig = /** @class */ (function () {\n function HammerGestureConfig() {\n this.events = [];\n this.overrides = {};\n }\n /**\n * @param {?} element\n * @return {?}\n */\n HammerGestureConfig.prototype.buildHammer = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var /** @type {?} */ mc = new Hammer(element);\n mc.get('pinch').set({ enable: true });\n mc.get('rotate').set({ enable: true });\n for (var /** @type {?} */ eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n };\n HammerGestureConfig.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n HammerGestureConfig.ctorParameters = function () { return []; };\n return HammerGestureConfig;\n}());\nexport { HammerGestureConfig };\nfunction HammerGestureConfig_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n HammerGestureConfig.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n HammerGestureConfig.ctorParameters;\n /** @type {?} */\n HammerGestureConfig.prototype.events;\n /** @type {?} */\n HammerGestureConfig.prototype.overrides;\n}\nvar HammerGesturesPlugin = /** @class */ (function (_super) {\n tslib_1.__extends(HammerGesturesPlugin, _super);\n function HammerGesturesPlugin(doc, _config) {\n var _this = _super.call(this, doc) || this;\n _this._config = _config;\n return _this;\n }\n /**\n * @param {?} eventName\n * @return {?}\n */\n HammerGesturesPlugin.prototype.supports = /**\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!(/** @type {?} */ (window)).Hammer) {\n throw new Error(\"Hammer.js is not loaded, can not bind \" + eventName + \" event\");\n }\n return true;\n };\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n HammerGesturesPlugin.prototype.addEventListener = /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (element, eventName, handler) {\n var _this = this;\n var /** @type {?} */ zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n return zone.runOutsideAngular(function () {\n // Creating the manager bind events, must be done outside of angular\n var /** @type {?} */ mc = _this._config.buildHammer(element);\n var /** @type {?} */ callback = function (eventObj) {\n zone.runGuarded(function () { handler(eventObj); });\n };\n mc.on(eventName, callback);\n return function () { return mc.off(eventName, callback); };\n });\n };\n /**\n * @param {?} eventName\n * @return {?}\n */\n HammerGesturesPlugin.prototype.isCustomEvent = /**\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) { return this._config.events.indexOf(eventName) > -1; };\n HammerGesturesPlugin.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n HammerGesturesPlugin.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n { type: HammerGestureConfig, decorators: [{ type: Inject, args: [HAMMER_GESTURE_CONFIG,] },] },\n ]; };\n return HammerGesturesPlugin;\n}(EventManagerPlugin));\nexport { HammerGesturesPlugin };\nfunction HammerGesturesPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n HammerGesturesPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n HammerGesturesPlugin.ctorParameters;\n /** @type {?} */\n HammerGesturesPlugin.prototype._config;\n}\n//# sourceMappingURL=hammer_gestures.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom_adapter';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nvar /** @type {?} */ MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\nvar ɵ0 = function (event) { return event.altKey; }, ɵ1 = function (event) { return event.ctrlKey; }, ɵ2 = function (event) { return event.metaKey; }, ɵ3 = function (event) { return event.shiftKey; };\nvar /** @type {?} */ MODIFIER_KEY_GETTERS = {\n 'alt': ɵ0,\n 'control': ɵ1,\n 'meta': ɵ2,\n 'shift': ɵ3\n};\n/**\n * \\@experimental\n */\nvar KeyEventsPlugin = /** @class */ (function (_super) {\n tslib_1.__extends(KeyEventsPlugin, _super);\n function KeyEventsPlugin(doc) {\n return _super.call(this, doc) || this;\n }\n /**\n * @param {?} eventName\n * @return {?}\n */\n KeyEventsPlugin.prototype.supports = /**\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) { return KeyEventsPlugin.parseEventName(eventName) != null; };\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n KeyEventsPlugin.prototype.addEventListener = /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n function (element, eventName, handler) {\n var /** @type {?} */ parsedEvent = /** @type {?} */ ((KeyEventsPlugin.parseEventName(eventName)));\n var /** @type {?} */ outsideHandler = KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n return this.manager.getZone().runOutsideAngular(function () {\n return getDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n };\n /**\n * @param {?} eventName\n * @return {?}\n */\n KeyEventsPlugin.parseEventName = /**\n * @param {?} eventName\n * @return {?}\n */\n function (eventName) {\n var /** @type {?} */ parts = eventName.toLowerCase().split('.');\n var /** @type {?} */ domEventName = parts.shift();\n if ((parts.length === 0) || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n var /** @type {?} */ key = KeyEventsPlugin._normalizeKey(/** @type {?} */ ((parts.pop())));\n var /** @type {?} */ fullKey = '';\n MODIFIER_KEYS.forEach(function (modifierName) {\n var /** @type {?} */ index = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n var /** @type {?} */ result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n KeyEventsPlugin.getEventFullKey = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n var /** @type {?} */ fullKey = '';\n var /** @type {?} */ key = getDOM().getEventKey(event);\n key = key.toLowerCase();\n if (key === ' ') {\n key = 'space'; // for readability\n }\n else if (key === '.') {\n key = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(function (modifierName) {\n if (modifierName != key) {\n var /** @type {?} */ modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n fullKey += modifierName + '.';\n }\n }\n });\n fullKey += key;\n return fullKey;\n };\n /**\n * @param {?} fullKey\n * @param {?} handler\n * @param {?} zone\n * @return {?}\n */\n KeyEventsPlugin.eventCallback = /**\n * @param {?} fullKey\n * @param {?} handler\n * @param {?} zone\n * @return {?}\n */\n function (fullKey, handler, zone) {\n return function (event /** TODO #9100 */) {\n if (KeyEventsPlugin.getEventFullKey(event) === fullKey) {\n zone.runGuarded(function () { return handler(event); });\n }\n };\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} keyName\n * @return {?}\n */\n KeyEventsPlugin._normalizeKey = /**\n * \\@internal\n * @param {?} keyName\n * @return {?}\n */\n function (keyName) {\n // TODO: switch to a Map if the mapping grows too much\n switch (keyName) {\n case 'esc':\n return 'escape';\n default:\n return keyName;\n }\n };\n KeyEventsPlugin.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n KeyEventsPlugin.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return KeyEventsPlugin;\n}(EventManagerPlugin));\nexport { KeyEventsPlugin };\nfunction KeyEventsPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n KeyEventsPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n KeyEventsPlugin.ctorParameters;\n}\nexport { ɵ0, ɵ1, ɵ2, ɵ3 };\n//# sourceMappingURL=key_events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 * This helper class is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we must use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n * Default: InertDocument strategy\n */\nvar /**\n * This helper class is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we must use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n * Default: InertDocument strategy\n */\nInertBodyHelper = /** @class */ (function () {\n function InertBodyHelper(defaultDoc, DOM) {\n this.defaultDoc = defaultDoc;\n this.DOM = DOM;\n var /** @type {?} */ inertDocument = this.DOM.createHtmlDocument();\n this.inertBodyElement = inertDocument.body;\n if (this.inertBodyElement == null) {\n // usually there should be only one body element in the document, but IE doesn't have any, so\n // we need to create one.\n var /** @type {?} */ inertHtml = this.DOM.createElement('html', inertDocument);\n this.inertBodyElement = this.DOM.createElement('body', inertDocument);\n this.DOM.appendChild(inertHtml, this.inertBodyElement);\n this.DOM.appendChild(inertDocument, inertHtml);\n }\n this.DOM.setInnerHTML(this.inertBodyElement, '<svg><g onload=\"this.parentNode.remove()\"></g></svg>');\n if (this.inertBodyElement.querySelector && !this.inertBodyElement.querySelector('svg')) {\n // We just hit the Safari 10.1 bug - which allows JS to run inside the SVG G element\n // so use the XHR strategy.\n this.getInertBodyElement = this.getInertBodyElement_XHR;\n return;\n }\n this.DOM.setInnerHTML(this.inertBodyElement, '<svg><p><style><img src=\"</style><img src=x onerror=alert(1)//\">');\n if (this.inertBodyElement.querySelector && this.inertBodyElement.querySelector('svg img')) {\n // We just hit the Firefox bug - which prevents the inner img JS from being sanitized\n // so use the DOMParser strategy, if it is available.\n // If the DOMParser is not available then we are not in Firefox (Server/WebWorker?) so we\n // fall through to the default strategy below.\n if (isDOMParserAvailable()) {\n this.getInertBodyElement = this.getInertBodyElement_DOMParser;\n return;\n }\n }\n // None of the bugs were hit so it is safe for us to use the default InertDocument strategy\n this.getInertBodyElement = this.getInertBodyElement_InertDocument;\n }\n /**\n * Use XHR to create and fill an inert body element (on Safari 10.1)\n * See\n * https://github.com/cure53/DOMPurify/blob/a992d3a75031cb8bb032e5ea8399ba972bdf9a65/src/purify.js#L439-L449\n * @param {?} html\n * @return {?}\n */\n InertBodyHelper.prototype.getInertBodyElement_XHR = /**\n * Use XHR to create and fill an inert body element (on Safari 10.1)\n * See\n * https://github.com/cure53/DOMPurify/blob/a992d3a75031cb8bb032e5ea8399ba972bdf9a65/src/purify.js#L439-L449\n * @param {?} html\n * @return {?}\n */\n function (html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the\n // `<head>` tag.\n html = '<body><remove></remove>' + html + '</body>';\n try {\n html = encodeURI(html);\n }\n catch (/** @type {?} */ e) {\n return null;\n }\n var /** @type {?} */ xhr = new XMLHttpRequest();\n xhr.responseType = 'document';\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n xhr.send(null);\n var /** @type {?} */ body = xhr.response.body;\n body.removeChild(/** @type {?} */ ((body.firstChild)));\n return body;\n };\n /**\n * Use DOMParser to create and fill an inert body element (on Firefox)\n * See https://github.com/cure53/DOMPurify/releases/tag/0.6.7\n *\n * @param {?} html\n * @return {?}\n */\n InertBodyHelper.prototype.getInertBodyElement_DOMParser = /**\n * Use DOMParser to create and fill an inert body element (on Firefox)\n * See https://github.com/cure53/DOMPurify/releases/tag/0.6.7\n *\n * @param {?} html\n * @return {?}\n */\n function (html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the\n // `<head>` tag.\n html = '<body><remove></remove>' + html + '</body>';\n try {\n var /** @type {?} */ body = /** @type {?} */ (new (/** @type {?} */ (window))\n .DOMParser()\n .parseFromString(html, 'text/html')\n .body);\n body.removeChild(/** @type {?} */ ((body.firstChild)));\n return body;\n }\n catch (/** @type {?} */ e) {\n return null;\n }\n };\n /**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the default sane strategy to use if the browser does not require one of the specialised\n * strategies above.\n * @param {?} html\n * @return {?}\n */\n InertBodyHelper.prototype.getInertBodyElement_InertDocument = /**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the default sane strategy to use if the browser does not require one of the specialised\n * strategies above.\n * @param {?} html\n * @return {?}\n */\n function (html) {\n // Prefer using <template> element if supported.\n var /** @type {?} */ templateEl = this.DOM.createElement('template');\n if ('content' in templateEl) {\n this.DOM.setInnerHTML(templateEl, html);\n return templateEl;\n }\n this.DOM.setInnerHTML(this.inertBodyElement, html);\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (this.defaultDoc.documentMode) {\n this.stripCustomNsAttrs(this.inertBodyElement);\n }\n return this.inertBodyElement;\n };\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1'\n * attribute to declare ns1 namespace and prefixes the attribute with 'ns1' (e.g.\n * 'ns1:xlink:foo').\n *\n * This is undesirable since we don't want to allow any of these custom attributes. This method\n * strips them all.\n * @param {?} el\n * @return {?}\n */\n InertBodyHelper.prototype.stripCustomNsAttrs = /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1'\n * attribute to declare ns1 namespace and prefixes the attribute with 'ns1' (e.g.\n * 'ns1:xlink:foo').\n *\n * This is undesirable since we don't want to allow any of these custom attributes. This method\n * strips them all.\n * @param {?} el\n * @return {?}\n */\n function (el) {\n var _this = this;\n this.DOM.attributeMap(el).forEach(function (_, attrName) {\n if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) {\n _this.DOM.removeAttribute(el, attrName);\n }\n });\n for (var _i = 0, _a = this.DOM.childNodesAsList(el); _i < _a.length; _i++) {\n var n = _a[_i];\n if (this.DOM.isElementNode(n))\n this.stripCustomNsAttrs(/** @type {?} */ (n));\n }\n };\n return InertBodyHelper;\n}());\n/**\n * This helper class is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we must use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n * Default: InertDocument strategy\n */\nexport { InertBodyHelper };\nfunction InertBodyHelper_tsickle_Closure_declarations() {\n /** @type {?} */\n InertBodyHelper.prototype.inertBodyElement;\n /**\n * Get an inert DOM element containing DOM created from the dirty HTML string provided.\n * The implementation of this is determined in the constructor, when the class is instantiated.\n * @type {?}\n */\n InertBodyHelper.prototype.getInertBodyElement;\n /** @type {?} */\n InertBodyHelper.prototype.defaultDoc;\n /** @type {?} */\n InertBodyHelper.prototype.DOM;\n}\n/**\n * We need to determine whether the DOMParser exists in the global context.\n * The try-catch is because, on some browsers, trying to access this property\n * on window can actually throw an error.\n *\n * @suppress {uselessCode}\n * @return {?}\n */\nfunction isDOMParserAvailable() {\n try {\n return !!(/** @type {?} */ (window)).DOMParser;\n }\n catch (/** @type {?} */ e) {\n return false;\n }\n}\n//# sourceMappingURL=inert_body.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * This regular expression matches a subset of URLs that will not cause script\n * execution if used in URL context within a HTML document. Specifically, this\n * regular expression matches if (comment from here on and regex copied from\n * Soy's EscapingConventions):\n * (1) Either a protocol in a whitelist (http, https, mailto or ftp).\n * (2) or no protocol. A protocol must be followed by a colon. The below\n * allows that by allowing colons only after one of the characters [/?#].\n * A colon after a hash (#) must be in the fragment.\n * Otherwise, a colon after a (?) must be in a query.\n * Otherwise, a colon after a single solidus (/) must be in a path.\n * Otherwise, a colon after a double solidus (//) must be in the authority\n * (before port).\n *\n * The pattern disallows &, used in HTML entity declarations before\n * one of the characters in [/?#]. This disallows HTML entities used in the\n * protocol name, which should never happen, e.g. \"h&#116;tp\" for \"http\".\n * It also disallows HTML entities in the first path part of a relative path,\n * e.g. \"foo&lt;bar/baz\". Our existing escaping functions should not produce\n * that. More importantly, it disallows masking of a colon,\n * e.g. \"javascript&#58;...\".\n *\n * This regular expression was taken from the Closure sanitization library.\n */\nvar /** @type {?} */ SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n/* A pattern that matches safe srcset values */\nvar /** @type {?} */ SAFE_SRCSET_PATTERN = /^(?:(?:https?|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n */\nvar /** @type {?} */ DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\\/]+=*$/i;\n/**\n * @param {?} url\n * @return {?}\n */\nexport function sanitizeUrl(url) {\n url = String(url);\n if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN))\n return url;\n if (isDevMode()) {\n getDOM().log(\"WARNING: sanitizing unsafe URL value \" + url + \" (see http://g.co/ng/security#xss)\");\n }\n return 'unsafe:' + url;\n}\n/**\n * @param {?} srcset\n * @return {?}\n */\nexport function sanitizeSrcset(srcset) {\n srcset = String(srcset);\n return srcset.split(',').map(function (srcset) { return sanitizeUrl(srcset.trim()); }).join(', ');\n}\n//# sourceMappingURL=url_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { InertBodyHelper } from './inert_body';\nimport { sanitizeSrcset, sanitizeUrl } from './url_sanitizer';\n/**\n * @param {?} tags\n * @return {?}\n */\nfunction tagSet(tags) {\n var /** @type {?} */ res = {};\n for (var _i = 0, _a = tags.split(','); _i < _a.length; _i++) {\n var t = _a[_i];\n res[t] = true;\n }\n return res;\n}\n/**\n * @param {...?} sets\n * @return {?}\n */\nfunction merge() {\n var sets = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sets[_i] = arguments[_i];\n }\n var /** @type {?} */ res = {};\n for (var _a = 0, sets_1 = sets; _a < sets_1.length; _a++) {\n var s = sets_1[_a];\n for (var /** @type {?} */ v in s) {\n if (s.hasOwnProperty(v))\n res[v] = true;\n }\n }\n return res;\n}\n// Good source of info about elements and attributes\n// http://dev.w3.org/html5/spec/Overview.html#semantics\n// http://simon.html5.org/html-elements\n// Safe Void Elements - HTML5\n// http://dev.w3.org/html5/spec/Overview.html#void-elements\nvar /** @type {?} */ VOID_ELEMENTS = tagSet('area,br,col,hr,img,wbr');\n// Elements that you can, intentionally, leave open (and which close themselves)\n// http://dev.w3.org/html5/spec/Overview.html#optional-tags\nvar /** @type {?} */ OPTIONAL_END_TAG_BLOCK_ELEMENTS = tagSet('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr');\nvar /** @type {?} */ OPTIONAL_END_TAG_INLINE_ELEMENTS = tagSet('rp,rt');\nvar /** @type {?} */ OPTIONAL_END_TAG_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, OPTIONAL_END_TAG_BLOCK_ELEMENTS);\n// Safe Block Elements - HTML5\nvar /** @type {?} */ BLOCK_ELEMENTS = merge(OPTIONAL_END_TAG_BLOCK_ELEMENTS, tagSet('address,article,' +\n 'aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul'));\n// Inline Elements - HTML5\nvar /** @type {?} */ INLINE_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet('a,abbr,acronym,audio,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,' +\n 'samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video'));\nvar /** @type {?} */ VALID_ELEMENTS = merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);\n// Attributes that have href and hence need to be sanitized\nvar /** @type {?} */ URI_ATTRS = tagSet('background,cite,href,itemtype,longdesc,poster,src,xlink:href');\n// Attributes that have special href set hence need to be sanitized\nvar /** @type {?} */ SRCSET_ATTRS = tagSet('srcset');\nvar /** @type {?} */ HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,' +\n 'compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,' +\n 'ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,' +\n 'valign,value,vspace,width');\n// NB: This currently consciously doesn't support SVG. SVG sanitization has had several security\n// issues in the past, so it seems safer to leave it out if possible. If support for binding SVG via\n// innerHTML is required, SVG attributes should be added here.\n// NB: Sanitization does not allow <form> elements or other active elements (<button> etc). Those\n// can be sanitized, but they increase security surface area without a legitimate use case, so they\n// are left out here.\nvar /** @type {?} */ VALID_ATTRS = merge(URI_ATTRS, SRCSET_ATTRS, HTML_ATTRS);\n/**\n * SanitizingHtmlSerializer serializes a DOM fragment, stripping out any unsafe elements and unsafe\n * attributes.\n */\nvar /**\n * SanitizingHtmlSerializer serializes a DOM fragment, stripping out any unsafe elements and unsafe\n * attributes.\n */\nSanitizingHtmlSerializer = /** @class */ (function () {\n function SanitizingHtmlSerializer() {\n this.sanitizedSomething = false;\n this.buf = [];\n this.DOM = getDOM();\n }\n /**\n * @param {?} el\n * @return {?}\n */\n SanitizingHtmlSerializer.prototype.sanitizeChildren = /**\n * @param {?} el\n * @return {?}\n */\n function (el) {\n // This cannot use a TreeWalker, as it has to run on Angular's various DOM adapters.\n // However this code never accesses properties off of `document` before deleting its contents\n // again, so it shouldn't be vulnerable to DOM clobbering.\n var /** @type {?} */ current = /** @type {?} */ ((this.DOM.firstChild(el)));\n while (current) {\n if (this.DOM.isElementNode(current)) {\n this.startElement(/** @type {?} */ (current));\n }\n else if (this.DOM.isTextNode(current)) {\n this.chars(/** @type {?} */ ((this.DOM.nodeValue(current))));\n }\n else {\n // Strip non-element, non-text nodes.\n this.sanitizedSomething = true;\n }\n if (this.DOM.firstChild(current)) {\n current = /** @type {?} */ ((this.DOM.firstChild(current)));\n continue;\n }\n while (current) {\n // Leaving the element. Walk up and to the right, closing tags as we go.\n if (this.DOM.isElementNode(current)) {\n this.endElement(/** @type {?} */ (current));\n }\n var /** @type {?} */ next = this.checkClobberedElement(current, /** @type {?} */ ((this.DOM.nextSibling(current))));\n if (next) {\n current = next;\n break;\n }\n current = this.checkClobberedElement(current, /** @type {?} */ ((this.DOM.parentElement(current))));\n }\n }\n return this.buf.join('');\n };\n /**\n * @param {?} element\n * @return {?}\n */\n SanitizingHtmlSerializer.prototype.startElement = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var _this = this;\n var /** @type {?} */ tagName = this.DOM.nodeName(element).toLowerCase();\n if (!VALID_ELEMENTS.hasOwnProperty(tagName)) {\n this.sanitizedSomething = true;\n return;\n }\n this.buf.push('<');\n this.buf.push(tagName);\n this.DOM.attributeMap(element).forEach(function (value, attrName) {\n var /** @type {?} */ lower = attrName.toLowerCase();\n if (!VALID_ATTRS.hasOwnProperty(lower)) {\n _this.sanitizedSomething = true;\n return;\n }\n // TODO(martinprobst): Special case image URIs for data:image/...\n if (URI_ATTRS[lower])\n value = sanitizeUrl(value);\n if (SRCSET_ATTRS[lower])\n value = sanitizeSrcset(value);\n _this.buf.push(' ');\n _this.buf.push(attrName);\n _this.buf.push('=\"');\n _this.buf.push(encodeEntities(value));\n _this.buf.push('\"');\n });\n this.buf.push('>');\n };\n /**\n * @param {?} current\n * @return {?}\n */\n SanitizingHtmlSerializer.prototype.endElement = /**\n * @param {?} current\n * @return {?}\n */\n function (current) {\n var /** @type {?} */ tagName = this.DOM.nodeName(current).toLowerCase();\n if (VALID_ELEMENTS.hasOwnProperty(tagName) && !VOID_ELEMENTS.hasOwnProperty(tagName)) {\n this.buf.push('</');\n this.buf.push(tagName);\n this.buf.push('>');\n }\n };\n /**\n * @param {?} chars\n * @return {?}\n */\n SanitizingHtmlSerializer.prototype.chars = /**\n * @param {?} chars\n * @return {?}\n */\n function (chars) { this.buf.push(encodeEntities(chars)); };\n /**\n * @param {?} node\n * @param {?} nextNode\n * @return {?}\n */\n SanitizingHtmlSerializer.prototype.checkClobberedElement = /**\n * @param {?} node\n * @param {?} nextNode\n * @return {?}\n */\n function (node, nextNode) {\n if (nextNode && this.DOM.contains(node, nextNode)) {\n throw new Error(\"Failed to sanitize html because the element is clobbered: \" + this.DOM.getOuterHTML(node));\n }\n return nextNode;\n };\n return SanitizingHtmlSerializer;\n}());\nfunction SanitizingHtmlSerializer_tsickle_Closure_declarations() {\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.sanitizedSomething;\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.buf;\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.DOM;\n}\n// Regular Expressions for parsing tags and attributes\nvar /** @type {?} */ SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n// ! to ~ is the ASCII range.\nvar /** @type {?} */ NON_ALPHANUMERIC_REGEXP = /([^\\#-~ |!])/g;\n/**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param {?} value\n * @return {?}\n */\nfunction encodeEntities(value) {\n return value.replace(/&/g, '&amp;')\n .replace(SURROGATE_PAIR_REGEXP, function (match) {\n var /** @type {?} */ hi = match.charCodeAt(0);\n var /** @type {?} */ low = match.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n })\n .replace(NON_ALPHANUMERIC_REGEXP, function (match) { return '&#' + match.charCodeAt(0) + ';'; })\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\nvar /** @type {?} */ inertBodyHelper;\n/**\n * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to\n * the DOM in a browser environment.\n * @param {?} defaultDoc\n * @param {?} unsafeHtmlInput\n * @return {?}\n */\nexport function sanitizeHtml(defaultDoc, unsafeHtmlInput) {\n var /** @type {?} */ DOM = getDOM();\n var /** @type {?} */ inertBodyElement = null;\n try {\n inertBodyHelper = inertBodyHelper || new InertBodyHelper(defaultDoc, DOM);\n // Make sure unsafeHtml is actually a string (TypeScript types are not enforced at runtime).\n var /** @type {?} */ unsafeHtml = unsafeHtmlInput ? String(unsafeHtmlInput) : '';\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n // mXSS protection. Repeatedly parse the document to make sure it stabilizes, so that a browser\n // trying to auto-correct incorrect HTML cannot cause formerly inert HTML to become dangerous.\n var /** @type {?} */ mXSSAttempts = 5;\n var /** @type {?} */ parsedHtml = unsafeHtml;\n do {\n if (mXSSAttempts === 0) {\n throw new Error('Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n unsafeHtml = parsedHtml;\n parsedHtml = DOM.getInnerHTML(inertBodyElement);\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n } while (unsafeHtml !== parsedHtml);\n var /** @type {?} */ sanitizer = new SanitizingHtmlSerializer();\n var /** @type {?} */ safeHtml = sanitizer.sanitizeChildren(DOM.getTemplateContent(inertBodyElement) || inertBodyElement);\n if (isDevMode() && sanitizer.sanitizedSomething) {\n DOM.log('WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).');\n }\n return safeHtml;\n }\n finally {\n // In case anything goes wrong, clear out inertElement to reset the entire DOM structure.\n if (inertBodyElement) {\n var /** @type {?} */ parent_1 = DOM.getTemplateContent(inertBodyElement) || inertBodyElement;\n for (var _i = 0, _a = DOM.childNodesAsList(parent_1); _i < _a.length; _i++) {\n var child = _a[_i];\n DOM.removeChild(parent_1, child);\n }\n }\n }\n}\n//# sourceMappingURL=html_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { sanitizeUrl } from './url_sanitizer';\n/**\n * Regular expression for safe style values.\n *\n * Quotes (\" and ') are allowed, but a check must be done elsewhere to ensure they're balanced.\n *\n * ',' allows multiple values to be assigned to the same property (e.g. background-attachment or\n * font-family) and hence could allow multiple values to get injected, but that should pose no risk\n * of XSS.\n *\n * The function expression checks only for XSS safety, not for CSS validity.\n *\n * This regular expression was taken from the Closure sanitization library, and augmented for\n * transformation values.\n */\nvar /** @type {?} */ VALUES = '[-,.\"\\'%_!# a-zA-Z0-9]+';\nvar /** @type {?} */ TRANSFORMATION_FNS = '(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?';\nvar /** @type {?} */ COLOR_FNS = '(?:rgb|hsl)a?';\nvar /** @type {?} */ GRADIENTS = '(?:repeating-)?(?:linear|radial)-gradient';\nvar /** @type {?} */ CSS3_FNS = '(?:calc|attr)';\nvar /** @type {?} */ FN_ARGS = '\\\\([-0-9.%, #a-zA-Z]+\\\\)';\nvar /** @type {?} */ SAFE_STYLE_VALUE = new RegExp(\"^(\" + VALUES + \"|\" +\n (\"(?:\" + TRANSFORMATION_FNS + \"|\" + COLOR_FNS + \"|\" + GRADIENTS + \"|\" + CSS3_FNS + \")\") +\n (FN_ARGS + \")$\"), 'g');\n/**\n * Matches a `url(...)` value with an arbitrary argument as long as it does\n * not contain parentheses.\n *\n * The URL value still needs to be sanitized separately.\n *\n * `url(...)` values are a very common use case, e.g. for `background-image`. With carefully crafted\n * CSS style rules, it is possible to construct an information leak with `url` values in CSS, e.g.\n * by observing whether scroll bars are displayed, or character ranges used by a font face\n * definition.\n *\n * Angular only allows binding CSS values (as opposed to entire CSS rules), so it is unlikely that\n * binding a URL value without further cooperation from the page will cause an information leak, and\n * if so, it is just a leak, not a full blown XSS vulnerability.\n *\n * Given the common use case, low likelihood of attack vector, and low impact of an attack, this\n * code is permissive and allows URLs that sanitize otherwise.\n */\nvar /** @type {?} */ URL_RE = /^url\\(([^)]+)\\)$/;\n/**\n * Checks that quotes (\" and ') are properly balanced inside a string. Assumes\n * that neither escape (\\) nor any other character that could result in\n * breaking out of a string parsing context are allowed;\n * see http://www.w3.org/TR/css3-syntax/#string-token-diagram.\n *\n * This code was taken from the Closure sanitization library.\n * @param {?} value\n * @return {?}\n */\nfunction hasBalancedQuotes(value) {\n var /** @type {?} */ outsideSingle = true;\n var /** @type {?} */ outsideDouble = true;\n for (var /** @type {?} */ i = 0; i < value.length; i++) {\n var /** @type {?} */ c = value.charAt(i);\n if (c === '\\'' && outsideDouble) {\n outsideSingle = !outsideSingle;\n }\n else if (c === '\"' && outsideSingle) {\n outsideDouble = !outsideDouble;\n }\n }\n return outsideSingle && outsideDouble;\n}\n/**\n * Sanitizes the given untrusted CSS style property value (i.e. not an entire object, just a single\n * value) and returns a value that is safe to use in a browser environment.\n * @param {?} value\n * @return {?}\n */\nexport function sanitizeStyle(value) {\n value = String(value).trim(); // Make sure it's actually a string.\n if (!value)\n return '';\n // Single url(...) values are supported, but only for URLs that sanitize cleanly. See above for\n // reasoning behind this.\n var /** @type {?} */ urlMatch = value.match(URL_RE);\n if ((urlMatch && sanitizeUrl(urlMatch[1]) === urlMatch[1]) ||\n value.match(SAFE_STYLE_VALUE) && hasBalancedQuotes(value)) {\n return value; // Safe style values.\n }\n if (isDevMode()) {\n getDOM().log(\"WARNING: sanitizing unsafe style value \" + value + \" (see http://g.co/ng/security#xss).\");\n }\n return 'unsafe';\n}\n//# sourceMappingURL=style_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport * as tslib_1 from \"tslib\";\nimport { Inject, Injectable, SecurityContext } from '@angular/core';\nimport { DOCUMENT } from '../dom/dom_tokens';\nimport { sanitizeHtml } from './html_sanitizer';\nimport { sanitizeStyle } from './style_sanitizer';\nimport { sanitizeUrl } from './url_sanitizer';\nexport { SecurityContext };\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * \\@stable\n * @record\n */\nexport function SafeValue() { }\nfunction SafeValue_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * \\@stable\n * @record\n */\nexport function SafeHtml() { }\nfunction SafeHtml_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * \\@stable\n * @record\n */\nexport function SafeStyle() { }\nfunction SafeStyle_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * \\@stable\n * @record\n */\nexport function SafeScript() { }\nfunction SafeScript_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * \\@stable\n * @record\n */\nexport function SafeUrl() { }\nfunction SafeUrl_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * \\@stable\n * @record\n */\nexport function SafeResourceUrl() { }\nfunction SafeResourceUrl_tsickle_Closure_declarations() {\n}\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * \\@security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](http://g.co/ng/security).\n *\n * \\@stable\n * @abstract\n */\nvar /**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * \\@security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](http://g.co/ng/security).\n *\n * \\@stable\n * @abstract\n */\nDomSanitizer = /** @class */ (function () {\n function DomSanitizer() {\n }\n return DomSanitizer;\n}());\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * \\@security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](http://g.co/ng/security).\n *\n * \\@stable\n * @abstract\n */\nexport { DomSanitizer };\nfunction DomSanitizer_tsickle_Closure_declarations() {\n /**\n * Sanitizes a value for use in the given SecurityContext.\n *\n * If value is trusted for the context, this method will unwrap the contained safe value and use\n * it directly. Otherwise, value will be sanitized to be safe in the given context, for example\n * by replacing URLs that have an unsafe protocol part (such as `javascript:`). The implementation\n * is responsible to make sure that the value can definitely be safely used in the given context.\n * @abstract\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.sanitize = function (context, value) { };\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustHtml = function (value) { };\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustStyle = function (value) { };\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustScript = function (value) { };\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustUrl = function (value) { };\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustResourceUrl = function (value) { };\n}\nvar DomSanitizerImpl = /** @class */ (function (_super) {\n tslib_1.__extends(DomSanitizerImpl, _super);\n function DomSanitizerImpl(_doc) {\n var _this = _super.call(this) || this;\n _this._doc = _doc;\n return _this;\n }\n /**\n * @param {?} ctx\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.sanitize = /**\n * @param {?} ctx\n * @param {?} value\n * @return {?}\n */\n function (ctx, value) {\n if (value == null)\n return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return /** @type {?} */ (value);\n case SecurityContext.HTML:\n if (value instanceof SafeHtmlImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'HTML');\n return sanitizeHtml(this._doc, String(value));\n case SecurityContext.STYLE:\n if (value instanceof SafeStyleImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Style');\n return sanitizeStyle(/** @type {?} */ (value));\n case SecurityContext.SCRIPT:\n if (value instanceof SafeScriptImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Script');\n throw new Error('unsafe value used in a script context');\n case SecurityContext.URL:\n if (value instanceof SafeResourceUrlImpl || value instanceof SafeUrlImpl) {\n // Allow resource URLs in URL contexts, they are strictly more trusted.\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'URL');\n return sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (value instanceof SafeResourceUrlImpl) {\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'ResourceURL');\n throw new Error('unsafe value used in a resource URL context (see http://g.co/ng/security#xss)');\n default:\n throw new Error(\"Unexpected SecurityContext \" + ctx + \" (see http://g.co/ng/security#xss)\");\n }\n };\n /**\n * @param {?} value\n * @param {?} expectedType\n * @return {?}\n */\n DomSanitizerImpl.prototype.checkNotSafeValue = /**\n * @param {?} value\n * @param {?} expectedType\n * @return {?}\n */\n function (value, expectedType) {\n if (value instanceof SafeValueImpl) {\n throw new Error(\"Required a safe \" + expectedType + \", got a \" + value.getTypeName() + \" \" +\n \"(see http://g.co/ng/security#xss)\");\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.bypassSecurityTrustHtml = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return new SafeHtmlImpl(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.bypassSecurityTrustStyle = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return new SafeStyleImpl(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.bypassSecurityTrustScript = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return new SafeScriptImpl(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.bypassSecurityTrustUrl = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return new SafeUrlImpl(value); };\n /**\n * @param {?} value\n * @return {?}\n */\n DomSanitizerImpl.prototype.bypassSecurityTrustResourceUrl = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n return new SafeResourceUrlImpl(value);\n };\n DomSanitizerImpl.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n DomSanitizerImpl.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return DomSanitizerImpl;\n}(DomSanitizer));\nexport { DomSanitizerImpl };\nfunction DomSanitizerImpl_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomSanitizerImpl.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomSanitizerImpl.ctorParameters;\n /** @type {?} */\n DomSanitizerImpl.prototype._doc;\n}\n/**\n * @abstract\n */\nvar /**\n * @abstract\n */\nSafeValueImpl = /** @class */ (function () {\n function SafeValueImpl(changingThisBreaksApplicationSecurity) {\n // empty\n this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;\n }\n /**\n * @return {?}\n */\n SafeValueImpl.prototype.toString = /**\n * @return {?}\n */\n function () {\n return \"SafeValue must use [property]=binding: \" + this.changingThisBreaksApplicationSecurity +\n \" (see http://g.co/ng/security#xss)\";\n };\n return SafeValueImpl;\n}());\nfunction SafeValueImpl_tsickle_Closure_declarations() {\n /** @type {?} */\n SafeValueImpl.prototype.changingThisBreaksApplicationSecurity;\n /**\n * @abstract\n * @return {?}\n */\n SafeValueImpl.prototype.getTypeName = function () { };\n}\nvar SafeHtmlImpl = /** @class */ (function (_super) {\n tslib_1.__extends(SafeHtmlImpl, _super);\n function SafeHtmlImpl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n SafeHtmlImpl.prototype.getTypeName = /**\n * @return {?}\n */\n function () { return 'HTML'; };\n return SafeHtmlImpl;\n}(SafeValueImpl));\nvar SafeStyleImpl = /** @class */ (function (_super) {\n tslib_1.__extends(SafeStyleImpl, _super);\n function SafeStyleImpl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n SafeStyleImpl.prototype.getTypeName = /**\n * @return {?}\n */\n function () { return 'Style'; };\n return SafeStyleImpl;\n}(SafeValueImpl));\nvar SafeScriptImpl = /** @class */ (function (_super) {\n tslib_1.__extends(SafeScriptImpl, _super);\n function SafeScriptImpl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n SafeScriptImpl.prototype.getTypeName = /**\n * @return {?}\n */\n function () { return 'Script'; };\n return SafeScriptImpl;\n}(SafeValueImpl));\nvar SafeUrlImpl = /** @class */ (function (_super) {\n tslib_1.__extends(SafeUrlImpl, _super);\n function SafeUrlImpl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n SafeUrlImpl.prototype.getTypeName = /**\n * @return {?}\n */\n function () { return 'URL'; };\n return SafeUrlImpl;\n}(SafeValueImpl));\nvar SafeResourceUrlImpl = /** @class */ (function (_super) {\n tslib_1.__extends(SafeResourceUrlImpl, _super);\n function SafeResourceUrlImpl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n SafeResourceUrlImpl.prototype.getTypeName = /**\n * @return {?}\n */\n function () { return 'ResourceURL'; };\n return SafeResourceUrlImpl;\n}(SafeValueImpl));\n//# sourceMappingURL=dom_sanitization_service.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { CommonModule, PlatformLocation, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID } from '@angular/common';\nimport { APP_ID, ApplicationModule, ErrorHandler, NgModule, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, RendererFactory2, Sanitizer, SkipSelf, Testability, createPlatformFactory, platformCore } from '@angular/core';\nimport { BrowserDomAdapter } from './browser/browser_adapter';\nimport { BrowserPlatformLocation } from './browser/location/browser_platform_location';\nimport { Meta } from './browser/meta';\nimport { SERVER_TRANSITION_PROVIDERS, TRANSITION_ID } from './browser/server-transition';\nimport { BrowserGetTestability } from './browser/testability';\nimport { Title } from './browser/title';\nimport { ELEMENT_PROBE_PROVIDERS } from './dom/debug/ng_probe';\nimport { DomRendererFactory2 } from './dom/dom_renderer';\nimport { DOCUMENT } from './dom/dom_tokens';\nimport { DomEventsPlugin } from './dom/events/dom_events';\nimport { EVENT_MANAGER_PLUGINS, EventManager } from './dom/events/event_manager';\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerGesturesPlugin } from './dom/events/hammer_gestures';\nimport { KeyEventsPlugin } from './dom/events/key_events';\nimport { DomSharedStylesHost, SharedStylesHost } from './dom/shared_styles_host';\nimport { DomSanitizer, DomSanitizerImpl } from './security/dom_sanitization_service';\nexport var /** @type {?} */ INTERNAL_BROWSER_PLATFORM_PROVIDERS = [\n { provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID },\n { provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },\n { provide: PlatformLocation, useClass: BrowserPlatformLocation, deps: [DOCUMENT] },\n { provide: DOCUMENT, useFactory: _document, deps: [] },\n];\n/**\n * \\@security Replacing built-in sanitization providers exposes the application to XSS risks.\n * Attacker-controlled data introduced by an unsanitized provider could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n * \\@experimental\n */\nexport var /** @type {?} */ BROWSER_SANITIZATION_PROVIDERS = [\n { provide: Sanitizer, useExisting: DomSanitizer },\n { provide: DomSanitizer, useClass: DomSanitizerImpl, deps: [DOCUMENT] },\n];\n/**\n * \\@stable\n */\nexport var /** @type {?} */ platformBrowser = createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * @return {?}\n */\nexport function initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n BrowserGetTestability.init();\n}\n/**\n * @return {?}\n */\nexport function errorHandler() {\n return new ErrorHandler();\n}\n/**\n * @return {?}\n */\nexport function _document() {\n return document;\n}\n/**\n * The ng module for the browser.\n *\n * \\@stable\n */\nvar BrowserModule = /** @class */ (function () {\n function BrowserModule(parentModule) {\n if (parentModule) {\n throw new Error(\"BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.\");\n }\n }\n /**\n * Configures a browser-based application to transition from a server-rendered app, if\n * one is present on the page. The specified parameters must include an application id,\n * which must match between the client and server applications.\n *\n * @experimental\n */\n /**\n * Configures a browser-based application to transition from a server-rendered app, if\n * one is present on the page. The specified parameters must include an application id,\n * which must match between the client and server applications.\n *\n * \\@experimental\n * @param {?} params\n * @return {?}\n */\n BrowserModule.withServerTransition = /**\n * Configures a browser-based application to transition from a server-rendered app, if\n * one is present on the page. The specified parameters must include an application id,\n * which must match between the client and server applications.\n *\n * \\@experimental\n * @param {?} params\n * @return {?}\n */\n function (params) {\n return {\n ngModule: BrowserModule,\n providers: [\n { provide: APP_ID, useValue: params.appId },\n { provide: TRANSITION_ID, useExisting: APP_ID },\n SERVER_TRANSITION_PROVIDERS,\n ],\n };\n };\n BrowserModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n BROWSER_SANITIZATION_PROVIDERS,\n { provide: ErrorHandler, useFactory: errorHandler, deps: [] },\n { provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true },\n { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true },\n { provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig },\n DomRendererFactory2,\n { provide: RendererFactory2, useExisting: DomRendererFactory2 },\n { provide: SharedStylesHost, useExisting: DomSharedStylesHost },\n DomSharedStylesHost,\n Testability,\n EventManager,\n ELEMENT_PROBE_PROVIDERS,\n Meta,\n Title,\n ],\n exports: [CommonModule, ApplicationModule]\n },] },\n ];\n /** @nocollapse */\n BrowserModule.ctorParameters = function () { return [\n { type: BrowserModule, decorators: [{ type: Optional }, { type: SkipSelf },] },\n ]; };\n return BrowserModule;\n}());\nexport { BrowserModule };\nfunction BrowserModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserModule.ctorParameters;\n}\n//# sourceMappingURL=browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nvar /** @type {?} */ win = typeof window !== 'undefined' && window || /** @type {?} */ ({});\nexport { win as window };\n//# sourceMappingURL=browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { ApplicationRef } from '@angular/core';\nimport { getDOM } from '../../dom/dom_adapter';\nimport { window } from './browser';\nvar ChangeDetectionPerfRecord = /** @class */ (function () {\n function ChangeDetectionPerfRecord(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n return ChangeDetectionPerfRecord;\n}());\nexport { ChangeDetectionPerfRecord };\nfunction ChangeDetectionPerfRecord_tsickle_Closure_declarations() {\n /** @type {?} */\n ChangeDetectionPerfRecord.prototype.msPerTick;\n /** @type {?} */\n ChangeDetectionPerfRecord.prototype.numTicks;\n}\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nvar /**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nAngularProfiler = /** @class */ (function () {\n function AngularProfiler(ref) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n * @param {?} config\n * @return {?}\n */\n AngularProfiler.prototype.timeChangeDetection = /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n * @param {?} config\n * @return {?}\n */\n function (config) {\n var /** @type {?} */ record = config && config['record'];\n var /** @type {?} */ profileName = 'Change Detection';\n // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened\n var /** @type {?} */ isProfilerAvailable = window.console.profile != null;\n if (record && isProfilerAvailable) {\n window.console.profile(profileName);\n }\n var /** @type {?} */ start = getDOM().performanceNow();\n var /** @type {?} */ numTicks = 0;\n while (numTicks < 5 || (getDOM().performanceNow() - start) < 500) {\n this.appRef.tick();\n numTicks++;\n }\n var /** @type {?} */ end = getDOM().performanceNow();\n if (record && isProfilerAvailable) {\n // need to cast to <any> because type checker thinks there's no argument\n // while in fact there is:\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/Console/profileEnd\n (/** @type {?} */ (window.console.profileEnd))(profileName);\n }\n var /** @type {?} */ msPerTick = (end - start) / numTicks;\n window.console.log(\"ran \" + numTicks + \" change detection cycles\");\n window.console.log(msPerTick.toFixed(2) + \" ms per check\");\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n };\n return AngularProfiler;\n}());\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nexport { AngularProfiler };\nfunction AngularProfiler_tsickle_Closure_declarations() {\n /** @type {?} */\n AngularProfiler.prototype.appRef;\n}\n//# sourceMappingURL=common_tools.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { exportNgVar } from '../../dom/util';\nimport { AngularProfiler } from './common_tools';\nvar /** @type {?} */ PROFILER_GLOBAL_NAME = 'profiler';\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * \\@experimental All debugging apis are currently experimental.\n * @template T\n * @param {?} ref\n * @return {?}\n */\nexport function enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * \\@experimental All debugging apis are currently experimental.\n * @return {?}\n */\nexport function disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n//# sourceMappingURL=tools.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { APP_ID, Injectable, NgModule } from '@angular/core';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * @param {?} text\n * @return {?}\n */\nexport function escapeHtml(text) {\n var /** @type {?} */ escapedText = {\n '&': '&a;',\n '\"': '&q;',\n '\\'': '&s;',\n '<': '&l;',\n '>': '&g;',\n };\n return text.replace(/[&\"'<>]/g, function (s) { return escapedText[s]; });\n}\n/**\n * @param {?} text\n * @return {?}\n */\nexport function unescapeHtml(text) {\n var /** @type {?} */ unescapedText = {\n '&a;': '&',\n '&q;': '\"',\n '&s;': '\\'',\n '&l;': '<',\n '&g;': '>',\n };\n return text.replace(/&[^;]+;/g, function (s) { return unescapedText[s]; });\n}\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * \\@experimental\n * @template T\n * @param {?} key\n * @return {?}\n */\nexport function makeStateKey(key) {\n return /** @type {?} */ (key);\n}\n/**\n * A key value store that is transferred from the application on the server side to the application\n * on the client side.\n *\n * `TransferState` will be available as an injectable token. To use it import\n * `ServerTransferStateModule` on the server and `BrowserTransferStateModule` on the client.\n *\n * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only\n * boolean, number, string, null and non-class objects will be serialized and deserialzied in a\n * non-lossy manner.\n *\n * \\@experimental\n */\nvar TransferState = /** @class */ (function () {\n function TransferState() {\n this.store = {};\n this.onSerializeCallbacks = {};\n }\n /** @internal */\n /**\n * \\@internal\n * @param {?} initState\n * @return {?}\n */\n TransferState.init = /**\n * \\@internal\n * @param {?} initState\n * @return {?}\n */\n function (initState) {\n var /** @type {?} */ transferState = new TransferState();\n transferState.store = initState;\n return transferState;\n };\n /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n */\n /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n * @template T\n * @param {?} key\n * @param {?} defaultValue\n * @return {?}\n */\n TransferState.prototype.get = /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n * @template T\n * @param {?} key\n * @param {?} defaultValue\n * @return {?}\n */\n function (key, defaultValue) {\n return this.store[key] !== undefined ? /** @type {?} */ (this.store[key]) : defaultValue;\n };\n /**\n * Set the value corresponding to a key.\n */\n /**\n * Set the value corresponding to a key.\n * @template T\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n TransferState.prototype.set = /**\n * Set the value corresponding to a key.\n * @template T\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n function (key, value) { this.store[key] = value; };\n /**\n * Remove a key from the store.\n */\n /**\n * Remove a key from the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n TransferState.prototype.remove = /**\n * Remove a key from the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n function (key) { delete this.store[key]; };\n /**\n * Test whether a key exists in the store.\n */\n /**\n * Test whether a key exists in the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n TransferState.prototype.hasKey = /**\n * Test whether a key exists in the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n function (key) { return this.store.hasOwnProperty(key); };\n /**\n * Register a callback to provide the value for a key when `toJson` is called.\n */\n /**\n * Register a callback to provide the value for a key when `toJson` is called.\n * @template T\n * @param {?} key\n * @param {?} callback\n * @return {?}\n */\n TransferState.prototype.onSerialize = /**\n * Register a callback to provide the value for a key when `toJson` is called.\n * @template T\n * @param {?} key\n * @param {?} callback\n * @return {?}\n */\n function (key, callback) {\n this.onSerializeCallbacks[key] = callback;\n };\n /**\n * Serialize the current state of the store to JSON.\n */\n /**\n * Serialize the current state of the store to JSON.\n * @return {?}\n */\n TransferState.prototype.toJson = /**\n * Serialize the current state of the store to JSON.\n * @return {?}\n */\n function () {\n // Call the onSerialize callbacks and put those values into the store.\n for (var /** @type {?} */ key in this.onSerializeCallbacks) {\n if (this.onSerializeCallbacks.hasOwnProperty(key)) {\n try {\n this.store[key] = this.onSerializeCallbacks[key]();\n }\n catch (/** @type {?} */ e) {\n console.warn('Exception in onSerialize callback: ', e);\n }\n }\n }\n return JSON.stringify(this.store);\n };\n TransferState.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n TransferState.ctorParameters = function () { return []; };\n return TransferState;\n}());\nexport { TransferState };\nfunction TransferState_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n TransferState.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n TransferState.ctorParameters;\n /** @type {?} */\n TransferState.prototype.store;\n /** @type {?} */\n TransferState.prototype.onSerializeCallbacks;\n}\n/**\n * @param {?} doc\n * @param {?} appId\n * @return {?}\n */\nexport function initTransferState(doc, appId) {\n // Locate the script tag with the JSON data transferred from the server.\n // The id of the script tag is set to the Angular appId + 'state'.\n var /** @type {?} */ script = doc.getElementById(appId + '-state');\n var /** @type {?} */ initialState = {};\n if (script && script.textContent) {\n try {\n initialState = JSON.parse(unescapeHtml(script.textContent));\n }\n catch (/** @type {?} */ e) {\n console.warn('Exception while restoring TransferState for app ' + appId, e);\n }\n }\n return TransferState.init(initialState);\n}\n/**\n * NgModule to install on the client side while using the `TransferState` to transfer state from\n * server to client.\n *\n * \\@experimental\n */\nvar BrowserTransferStateModule = /** @class */ (function () {\n function BrowserTransferStateModule() {\n }\n BrowserTransferStateModule.decorators = [\n { type: NgModule, args: [{\n providers: [{ provide: TransferState, useFactory: initTransferState, deps: [DOCUMENT, APP_ID] }],\n },] },\n ];\n /** @nocollapse */\n BrowserTransferStateModule.ctorParameters = function () { return []; };\n return BrowserTransferStateModule;\n}());\nexport { BrowserTransferStateModule };\nfunction BrowserTransferStateModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserTransferStateModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserTransferStateModule.ctorParameters;\n}\n//# sourceMappingURL=transfer_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { getDOM } from '../../dom/dom_adapter';\n/**\n * Predicates for use with {\\@link DebugElement}'s query functions.\n *\n * \\@experimental All debugging apis are currently experimental.\n */\nvar /**\n * Predicates for use with {\\@link DebugElement}'s query functions.\n *\n * \\@experimental All debugging apis are currently experimental.\n */\nBy = /** @class */ (function () {\n function By() {\n }\n /**\n * Match all elements.\n *\n * ## Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n /**\n * Match all elements.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n * @return {?}\n */\n By.all = /**\n * Match all elements.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n * @return {?}\n */\n function () { return function (debugElement) { return true; }; };\n /**\n * Match elements by the given CSS selector.\n *\n * ## Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n /**\n * Match elements by the given CSS selector.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n * @param {?} selector\n * @return {?}\n */\n By.css = /**\n * Match elements by the given CSS selector.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n * @param {?} selector\n * @return {?}\n */\n function (selector) {\n return function (debugElement) {\n return debugElement.nativeElement != null ?\n getDOM().elementMatches(debugElement.nativeElement, selector) :\n false;\n };\n };\n /**\n * Match elements that have the given directive present.\n *\n * ## Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n /**\n * Match elements that have the given directive present.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n * @param {?} type\n * @return {?}\n */\n By.directive = /**\n * Match elements that have the given directive present.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n * @param {?} type\n * @return {?}\n */\n function (type) {\n return function (debugElement) { return ((debugElement.providerTokens)).indexOf(type) !== -1; };\n };\n return By;\n}());\n/**\n * Predicates for use with {\\@link DebugElement}'s query functions.\n *\n * \\@experimental All debugging apis are currently experimental.\n */\nexport { By };\n//# sourceMappingURL=by.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nexport { BROWSER_SANITIZATION_PROVIDERS as ɵBROWSER_SANITIZATION_PROVIDERS, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, initDomAdapter as ɵinitDomAdapter } from './browser';\nexport { BrowserDomAdapter as ɵBrowserDomAdapter } from './browser/browser_adapter';\nexport { BrowserPlatformLocation as ɵBrowserPlatformLocation } from './browser/location/browser_platform_location';\nexport { TRANSITION_ID as ɵTRANSITION_ID } from './browser/server-transition';\nexport { BrowserGetTestability as ɵBrowserGetTestability } from './browser/testability';\nexport { escapeHtml as ɵescapeHtml } from './browser/transfer_state';\nexport { ELEMENT_PROBE_PROVIDERS as ɵELEMENT_PROBE_PROVIDERS } from './dom/debug/ng_probe';\nexport { DomAdapter as ɵDomAdapter, getDOM as ɵgetDOM, setRootDomAdapter as ɵsetRootDomAdapter } from './dom/dom_adapter';\nexport { DomRendererFactory2 as ɵDomRendererFactory2, NAMESPACE_URIS as ɵNAMESPACE_URIS, flattenStyles as ɵflattenStyles, shimContentAttribute as ɵshimContentAttribute, shimHostAttribute as ɵshimHostAttribute } from './dom/dom_renderer';\nexport { DomEventsPlugin as ɵDomEventsPlugin } from './dom/events/dom_events';\nexport { HammerGesturesPlugin as ɵHammerGesturesPlugin } from './dom/events/hammer_gestures';\nexport { KeyEventsPlugin as ɵKeyEventsPlugin } from './dom/events/key_events';\nexport { DomSharedStylesHost as ɵDomSharedStylesHost, SharedStylesHost as ɵSharedStylesHost } from './dom/shared_styles_host';\n//# sourceMappingURL=private_export.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nimport { Version } from '@angular/core';\n/**\n * \\@stable\n */\nexport var /** @type {?} */ VERSION = new Version('5.2.11');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 */\nexport { BrowserModule, platformBrowser } from './browser';\nexport { Meta } from './browser/meta';\nexport { Title } from './browser/title';\nexport { disableDebugTools, enableDebugTools } from './browser/tools/tools';\nexport { BrowserTransferStateModule, TransferState, makeStateKey } from './browser/transfer_state';\nexport { By } from './dom/debug/by';\nexport { DOCUMENT } from './dom/dom_tokens';\nexport { EVENT_MANAGER_PLUGINS, EventManager } from './dom/events/event_manager';\nexport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from './dom/events/hammer_gestures';\nexport { DomSanitizer } from './security/dom_sanitization_service';\nexport { ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './private_export';\nexport { VERSION } from './version';\n//# sourceMappingURL=platform-browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\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 * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { BrowserModule, platformBrowser, Meta, Title, disableDebugTools, enableDebugTools, BrowserTransferStateModule, TransferState, makeStateKey, By, DOCUMENT, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HammerGestureConfig, DomSanitizer, VERSION, ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './src/platform-browser';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { BrowserModule, platformBrowser, Meta, Title, disableDebugTools, enableDebugTools, BrowserTransferStateModule, TransferState, makeStateKey, By, DOCUMENT, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HammerGestureConfig, DomSanitizer, VERSION, ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './public_api';\nexport { _document as ɵb, errorHandler as ɵa } from './src/browser';\nexport { GenericBrowserDomAdapter as ɵi } from './src/browser/generic_browser_adapter';\nexport { SERVER_TRANSITION_PROVIDERS as ɵg, appInitializerFactory as ɵf } from './src/browser/server-transition';\nexport { initTransferState as ɵc } from './src/browser/transfer_state';\nexport { _createNgProbe as ɵh } from './src/dom/debug/ng_probe';\nexport { EventManagerPlugin as ɵd } from './src/dom/events/event_manager';\nexport { DomSanitizerImpl as ɵe } from './src/security/dom_sanitization_service';\n//# sourceMappingURL=platform-browser.js.map"],"names":["tslib_1.__extends","global","parseCookieValue","DOCUMENT","commonDOCUMENT","core.ApplicationRef","core.NgZone","core.getDebugNode","tslib_1.__assign","core.APP_INITIALIZER","core.NgProbeToken","core.Optional","ɵ0","ɵ1","ɵ2","PLATFORM_BROWSER_ID","window"],"mappings":"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"}