{"version":3,"file":"init.mjs","sources":["../../../../../../external/npm/node_modules/domino/lib/Event.js","../../../../../../external/npm/node_modules/domino/lib/UIEvent.js","../../../../../../external/npm/node_modules/domino/lib/MouseEvent.js","../../../../../../external/npm/node_modules/domino/lib/DOMException.js","../../../../../../external/npm/node_modules/domino/lib/config.js","../../../../../../external/npm/node_modules/domino/lib/utils.js","../../../../../../external/npm/node_modules/domino/lib/EventTarget.js","../../../../../../external/npm/node_modules/domino/lib/LinkedList.js","../../../../../../external/npm/node_modules/domino/lib/NodeUtils.js","../../../../../../external/npm/node_modules/domino/lib/Node.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.es6.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.es5.js","../../../../../../external/npm/node_modules/domino/lib/NodeList.js","../../../../../../external/npm/node_modules/domino/lib/ContainerNode.js","../../../../../../external/npm/node_modules/domino/lib/xmlnames.js","../../../../../../external/npm/node_modules/domino/lib/attributes.js","../../../../../../external/npm/node_modules/domino/lib/FilteredElementList.js","../../../../../../external/npm/node_modules/domino/lib/DOMTokenList.js","../../../../../../external/npm/node_modules/domino/lib/select.js","../../../../../../external/npm/node_modules/domino/lib/ChildNode.js","../../../../../../external/npm/node_modules/domino/lib/NonDocumentTypeChildNode.js","../../../../../../external/npm/node_modules/domino/lib/NamedNodeMap.js","../../../../../../external/npm/node_modules/domino/lib/Element.js","../../../../../../external/npm/node_modules/domino/lib/Leaf.js","../../../../../../external/npm/node_modules/domino/lib/CharacterData.js","../../../../../../external/npm/node_modules/domino/lib/Text.js","../../../../../../external/npm/node_modules/domino/lib/Comment.js","../../../../../../external/npm/node_modules/domino/lib/DocumentFragment.js","../../../../../../external/npm/node_modules/domino/lib/ProcessingInstruction.js","../../../../../../external/npm/node_modules/domino/lib/NodeFilter.js","../../../../../../external/npm/node_modules/domino/lib/NodeTraversal.js","../../../../../../external/npm/node_modules/domino/lib/TreeWalker.js","../../../../../../external/npm/node_modules/domino/lib/NodeIterator.js","../../../../../../external/npm/node_modules/domino/lib/URL.js","../../../../../../external/npm/node_modules/domino/lib/CustomEvent.js","../../../../../../external/npm/node_modules/domino/lib/events.js","../../../../../../external/npm/node_modules/domino/lib/style_parser.js","../../../../../../external/npm/node_modules/domino/lib/CSSStyleDeclaration.js","../../../../../../external/npm/node_modules/domino/lib/URLUtils.js","../../../../../../external/npm/node_modules/domino/lib/defineElement.js","../../../../../../external/npm/node_modules/domino/lib/htmlelts.js","../../../../../../external/npm/node_modules/domino/lib/svg.js","../../../../../../external/npm/node_modules/domino/lib/MutationConstants.js","../../../../../../external/npm/node_modules/domino/lib/Document.js","../../../../../../external/npm/node_modules/domino/lib/DocumentType.js","../../../../../../external/npm/node_modules/domino/lib/HTMLParser.js","../../../../../../external/npm/node_modules/domino/lib/DOMImplementation.js","../../../../../../external/npm/node_modules/domino/lib/Location.js","../../../../../../external/npm/node_modules/domino/lib/NavigatorID.js","../../../../../../external/npm/node_modules/domino/lib/WindowTimers.js","../../../../../../external/npm/node_modules/domino/lib/impl.js","../../../../../../external/npm/node_modules/domino/lib/Window.js","../../../../../../external/npm/node_modules/domino/lib/index.js","../../../../../../packages/platform-server/init/src/shims.ts","../../../../../../packages/platform-server/init/src/init.ts","../../../../../../packages/platform-server/init/public_api.ts","../../../../../../packages/platform-server/init/index.ts","../../../../../../packages/platform-server/init/init.ts"],"sourcesContent":["\"use strict\";\nmodule.exports = Event;\n\nEvent.CAPTURING_PHASE = 1;\nEvent.AT_TARGET = 2;\nEvent.BUBBLING_PHASE = 3;\n\nfunction Event(type, dictionary) {\n // Initialize basic event properties\n this.type = '';\n this.target = null;\n this.currentTarget = null;\n this.eventPhase = Event.AT_TARGET;\n this.bubbles = false;\n this.cancelable = false;\n this.isTrusted = false;\n this.defaultPrevented = false;\n this.timeStamp = Date.now();\n\n // Initialize internal flags\n // XXX: Would it be better to inherit these defaults from the prototype?\n this._propagationStopped = false;\n this._immediatePropagationStopped = false;\n this._initialized = true;\n this._dispatching = false;\n\n // Now initialize based on the constructor arguments (if any)\n if (type) this.type = type;\n if (dictionary) {\n for(var p in dictionary) {\n this[p] = dictionary[p];\n }\n }\n}\n\nEvent.prototype = Object.create(Object.prototype, {\n constructor: { value: Event },\n stopPropagation: { value: function stopPropagation() {\n this._propagationStopped = true;\n }},\n\n stopImmediatePropagation: { value: function stopImmediatePropagation() {\n this._propagationStopped = true;\n this._immediatePropagationStopped = true;\n }},\n\n preventDefault: { value: function preventDefault() {\n if (this.cancelable) this.defaultPrevented = true;\n }},\n\n initEvent: { value: function initEvent(type, bubbles, cancelable) {\n this._initialized = true;\n if (this._dispatching) return;\n\n this._propagationStopped = false;\n this._immediatePropagationStopped = false;\n this.defaultPrevented = false;\n this.isTrusted = false;\n\n this.target = null;\n this.type = type;\n this.bubbles = bubbles;\n this.cancelable = cancelable;\n }},\n\n});\n","\"use strict\";\nvar Event = require('./Event');\n\nmodule.exports = UIEvent;\n\nfunction UIEvent() {\n // Just use the superclass constructor to initialize\n Event.call(this);\n this.view = null; // FF uses the current window\n this.detail = 0;\n}\nUIEvent.prototype = Object.create(Event.prototype, {\n constructor: { value: UIEvent },\n initUIEvent: { value: function(type, bubbles, cancelable, view, detail) {\n this.initEvent(type, bubbles, cancelable);\n this.view = view;\n this.detail = detail;\n }}\n});\n","\"use strict\";\nvar UIEvent = require('./UIEvent');\n\nmodule.exports = MouseEvent;\n\nfunction MouseEvent() {\n // Just use the superclass constructor to initialize\n UIEvent.call(this);\n\n this.screenX = this.screenY = this.clientX = this.clientY = 0;\n this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false;\n this.button = 0;\n this.buttons = 1;\n this.relatedTarget = null;\n}\nMouseEvent.prototype = Object.create(UIEvent.prototype, {\n constructor: { value: MouseEvent },\n initMouseEvent: { value: function(type, bubbles, cancelable,\n view, detail,\n screenX, screenY, clientX, clientY,\n ctrlKey, altKey, shiftKey, metaKey,\n button, relatedTarget) {\n\n this.initEvent(type, bubbles, cancelable, view, detail);\n this.screenX = screenX;\n this.screenY = screenY;\n this.clientX = clientX;\n this.clientY = clientY;\n this.ctrlKey = ctrlKey;\n this.altKey = altKey;\n this.shiftKey = shiftKey;\n this.metaKey = metaKey;\n this.button = button;\n switch(button) {\n case 0: this.buttons = 1; break;\n case 1: this.buttons = 4; break;\n case 2: this.buttons = 2; break;\n default: this.buttons = 0; break;\n }\n this.relatedTarget = relatedTarget;\n }},\n\n getModifierState: { value: function(key) {\n switch(key) {\n case \"Alt\": return this.altKey;\n case \"Control\": return this.ctrlKey;\n case \"Shift\": return this.shiftKey;\n case \"Meta\": return this.metaKey;\n default: return false;\n }\n }}\n});\n","\"use strict\";\nmodule.exports = DOMException;\n\nvar INDEX_SIZE_ERR = 1;\nvar HIERARCHY_REQUEST_ERR = 3;\nvar WRONG_DOCUMENT_ERR = 4;\nvar INVALID_CHARACTER_ERR = 5;\nvar NO_MODIFICATION_ALLOWED_ERR = 7;\nvar NOT_FOUND_ERR = 8;\nvar NOT_SUPPORTED_ERR = 9;\nvar INVALID_STATE_ERR = 11;\nvar SYNTAX_ERR = 12;\nvar INVALID_MODIFICATION_ERR = 13;\nvar NAMESPACE_ERR = 14;\nvar INVALID_ACCESS_ERR = 15;\nvar TYPE_MISMATCH_ERR = 17;\nvar SECURITY_ERR = 18;\nvar NETWORK_ERR = 19;\nvar ABORT_ERR = 20;\nvar URL_MISMATCH_ERR = 21;\nvar QUOTA_EXCEEDED_ERR = 22;\nvar TIMEOUT_ERR = 23;\nvar INVALID_NODE_TYPE_ERR = 24;\nvar DATA_CLONE_ERR = 25;\n\n// Code to name\nvar names = [\n null, // No error with code 0\n 'INDEX_SIZE_ERR',\n null, // historical\n 'HIERARCHY_REQUEST_ERR',\n 'WRONG_DOCUMENT_ERR',\n 'INVALID_CHARACTER_ERR',\n null, // historical\n 'NO_MODIFICATION_ALLOWED_ERR',\n 'NOT_FOUND_ERR',\n 'NOT_SUPPORTED_ERR',\n 'INUSE_ATTRIBUTE_ERR', // historical\n 'INVALID_STATE_ERR',\n 'SYNTAX_ERR',\n 'INVALID_MODIFICATION_ERR',\n 'NAMESPACE_ERR',\n 'INVALID_ACCESS_ERR',\n null, // historical\n 'TYPE_MISMATCH_ERR',\n 'SECURITY_ERR',\n 'NETWORK_ERR',\n 'ABORT_ERR',\n 'URL_MISMATCH_ERR',\n 'QUOTA_EXCEEDED_ERR',\n 'TIMEOUT_ERR',\n 'INVALID_NODE_TYPE_ERR',\n 'DATA_CLONE_ERR',\n];\n\n// Code to message\n// These strings are from the 13 May 2011 Editor's Draft of DOM Core.\n// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html\n// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved.\n// Used under the terms of the W3C Document License:\n// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231\nvar messages = [\n null, // No error with code 0\n 'INDEX_SIZE_ERR (1): the index is not in the allowed range',\n null,\n 'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model',\n 'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required',\n 'INVALID_CHARACTER_ERR (5): the string contains invalid characters',\n null,\n 'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified',\n 'NOT_FOUND_ERR (8): the object can not be found here',\n 'NOT_SUPPORTED_ERR (9): this operation is not supported',\n 'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute',\n 'INVALID_STATE_ERR (11): the object is in an invalid state',\n 'SYNTAX_ERR (12): the string did not match the expected pattern',\n 'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way',\n 'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML',\n 'INVALID_ACCESS_ERR (15): the object does not support the operation or argument',\n null,\n 'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type',\n 'SECURITY_ERR (18): the operation is insecure',\n 'NETWORK_ERR (19): a network error occurred',\n 'ABORT_ERR (20): the user aborted an operation',\n 'URL_MISMATCH_ERR (21): the given URL does not match another URL',\n 'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded',\n 'TIMEOUT_ERR (23): a timeout occurred',\n 'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation',\n 'DATA_CLONE_ERR (25): the object can not be cloned.'\n];\n\n// Name to code\nvar constants = {\n INDEX_SIZE_ERR: INDEX_SIZE_ERR,\n DOMSTRING_SIZE_ERR: 2, // historical\n HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR,\n WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR,\n INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR,\n NO_DATA_ALLOWED_ERR: 6, // historical\n NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR,\n NOT_FOUND_ERR: NOT_FOUND_ERR,\n NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR,\n INUSE_ATTRIBUTE_ERR: 10, // historical\n INVALID_STATE_ERR: INVALID_STATE_ERR,\n SYNTAX_ERR: SYNTAX_ERR,\n INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR,\n NAMESPACE_ERR: NAMESPACE_ERR,\n INVALID_ACCESS_ERR: INVALID_ACCESS_ERR,\n VALIDATION_ERR: 16, // historical\n TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR,\n SECURITY_ERR: SECURITY_ERR,\n NETWORK_ERR: NETWORK_ERR,\n ABORT_ERR: ABORT_ERR,\n URL_MISMATCH_ERR: URL_MISMATCH_ERR,\n QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR,\n TIMEOUT_ERR: TIMEOUT_ERR,\n INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR,\n DATA_CLONE_ERR: DATA_CLONE_ERR\n};\n\nfunction DOMException(code) {\n Error.call(this);\n Error.captureStackTrace(this, this.constructor);\n this.code = code;\n this.message = messages[code];\n this.name = names[code];\n}\nDOMException.prototype.__proto__ = Error.prototype;\n\n// Initialize the constants on DOMException and DOMException.prototype\nfor(var c in constants) {\n var v = { value: constants[c] };\n Object.defineProperty(DOMException, c, v);\n Object.defineProperty(DOMException.prototype, c, v);\n}\n","/*\n * This file defines Domino behaviour that can be externally configured.\n * To change these settings, set the relevant global property *before*\n * you call `require(\"domino\")`.\n */\n\nexports.isApiWritable = !globalThis.__domino_frozen__;\n","\"use strict\";\nvar DOMException = require('./DOMException');\nvar ERR = DOMException;\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nexports.NAMESPACE = {\n HTML: 'http://www.w3.org/1999/xhtml',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink'\n};\n\n//\n// Shortcut functions for throwing errors of various types.\n//\nexports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); };\nexports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); };\nexports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); };\nexports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); };\nexports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); };\nexports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); };\nexports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); };\nexports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); };\nexports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); };\nexports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); };\nexports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); };\nexports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); };\nexports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); };\nexports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); };\nexports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); };\nexports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); };\nexports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); };\nexports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); };\nexports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); };\nexports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); };\nexports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); };\n\nexports.nyi = function() {\n throw new Error(\"NotYetImplemented\");\n};\n\nexports.shouldOverride = function() {\n throw new Error(\"Abstract function; should be overriding in subclass.\");\n};\n\nexports.assert = function(expr, msg) {\n if (!expr) {\n throw new Error(\"Assertion failed: \" + (msg || \"\") + \"\\n\" + new Error().stack);\n }\n};\n\nexports.expose = function(src, c) {\n for (var n in src) {\n Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable });\n }\n};\n\nexports.merge = function(a, b) {\n for (var n in b) {\n a[n] = b[n];\n }\n};\n\n// Compare two nodes based on their document order. This function is intended\n// to be passed to sort(). Assumes that the array being sorted does not\n// contain duplicates. And that all nodes are connected and comparable.\n// Clever code by ppk via jeresig.\nexports.documentOrder = function(n,m) {\n /* jshint bitwise: false */\n return 3 - (n.compareDocumentPosition(m) & 6);\n};\n\nexports.toASCIILowerCase = function(s) {\n return s.replace(/[A-Z]+/g, function(c) {\n return c.toLowerCase();\n });\n};\n\nexports.toASCIIUpperCase = function(s) {\n return s.replace(/[a-z]+/g, function(c) {\n return c.toUpperCase();\n });\n};\n","\"use strict\";\nvar Event = require('./Event');\nvar MouseEvent = require('./MouseEvent');\nvar utils = require('./utils');\n\nmodule.exports = EventTarget;\n\nfunction EventTarget() {}\n\nEventTarget.prototype = {\n // XXX\n // See WebIDL §4.8 for details on object event handlers\n // and how they should behave. We actually have to accept\n // any object to addEventListener... Can't type check it.\n // on registration.\n\n // XXX:\n // Capturing event listeners are sort of rare. I think I can optimize\n // them so that dispatchEvent can skip the capturing phase (or much of\n // it). Each time a capturing listener is added, increment a flag on\n // the target node and each of its ancestors. Decrement when removed.\n // And update the counter when nodes are added and removed from the\n // tree as well. Then, in dispatch event, the capturing phase can\n // abort if it sees any node with a zero count.\n addEventListener: function addEventListener(type, listener, capture) {\n if (!listener) return;\n if (capture === undefined) capture = false;\n if (!this._listeners) this._listeners = Object.create(null);\n if (!this._listeners[type]) this._listeners[type] = [];\n var list = this._listeners[type];\n\n // If this listener has already been registered, just return\n for(var i = 0, n = list.length; i < n; i++) {\n var l = list[i];\n if (l.listener === listener && l.capture === capture)\n return;\n }\n\n // Add an object to the list of listeners\n var obj = { listener: listener, capture: capture };\n if (typeof listener === 'function') obj.f = listener;\n list.push(obj);\n },\n\n removeEventListener: function removeEventListener(type,\n listener,\n capture) {\n if (capture === undefined) capture = false;\n if (this._listeners) {\n var list = this._listeners[type];\n if (list) {\n // Find the listener in the list and remove it\n for(var i = 0, n = list.length; i < n; i++) {\n var l = list[i];\n if (l.listener === listener && l.capture === capture) {\n if (list.length === 1) {\n this._listeners[type] = undefined;\n }\n else {\n list.splice(i, 1);\n }\n return;\n }\n }\n }\n }\n },\n\n // This is the public API for dispatching untrusted public events.\n // See _dispatchEvent for the implementation\n dispatchEvent: function dispatchEvent(event) {\n // Dispatch an untrusted event\n return this._dispatchEvent(event, false);\n },\n\n //\n // See DOMCore §4.4\n // XXX: I'll probably need another version of this method for\n // internal use, one that does not set isTrusted to false.\n // XXX: see Document._dispatchEvent: perhaps that and this could\n // call a common internal function with different settings of\n // a trusted boolean argument\n //\n // XXX:\n // The spec has changed in how to deal with handlers registered\n // on idl or content attributes rather than with addEventListener.\n // Used to say that they always ran first. That's how webkit does it\n // Spec now says that they run in a position determined by\n // when they were first set. FF does it that way. See:\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers\n //\n _dispatchEvent: function _dispatchEvent(event, trusted) {\n if (typeof trusted !== 'boolean') trusted = false;\n function invoke(target, event) {\n var type = event.type, phase = event.eventPhase;\n event.currentTarget = target;\n\n // If there was an individual handler defined, invoke it first\n // XXX: see comment above: this shouldn't always be first.\n if (phase !== Event.CAPTURING_PHASE &&\n target._handlers && target._handlers[type])\n {\n var handler = target._handlers[type];\n var rv;\n if (typeof handler === 'function') {\n rv=handler.call(event.currentTarget, event);\n }\n else {\n var f = handler.handleEvent;\n if (typeof f !== 'function')\n throw new TypeError('handleEvent property of ' +\n 'event handler object is' +\n 'not a function.');\n rv=f.call(handler, event);\n }\n\n switch(event.type) {\n case 'mouseover':\n if (rv === true) // Historical baggage\n event.preventDefault();\n break;\n case 'beforeunload':\n // XXX: eventually we need a special case here\n /* falls through */\n default:\n if (rv === false)\n event.preventDefault();\n break;\n }\n }\n\n // Now invoke list list of listeners for this target and type\n var list = target._listeners && target._listeners[type];\n if (!list) return;\n list = list.slice();\n for(var i = 0, n = list.length; i < n; i++) {\n if (event._immediatePropagationStopped) return;\n var l = list[i];\n if ((phase === Event.CAPTURING_PHASE && !l.capture) ||\n (phase === Event.BUBBLING_PHASE && l.capture))\n continue;\n if (l.f) {\n l.f.call(event.currentTarget, event);\n }\n else {\n var fn = l.listener.handleEvent;\n if (typeof fn !== 'function')\n throw new TypeError('handleEvent property of event listener object is not a function.');\n fn.call(l.listener, event);\n }\n }\n }\n\n if (!event._initialized || event._dispatching) utils.InvalidStateError();\n event.isTrusted = trusted;\n\n // Begin dispatching the event now\n event._dispatching = true;\n event.target = this;\n\n // Build the list of targets for the capturing and bubbling phases\n // XXX: we'll eventually have to add Window to this list.\n var ancestors = [];\n for(var n = this.parentNode; n; n = n.parentNode)\n ancestors.push(n);\n\n // Capturing phase\n event.eventPhase = Event.CAPTURING_PHASE;\n for(var i = ancestors.length-1; i >= 0; i--) {\n invoke(ancestors[i], event);\n if (event._propagationStopped) break;\n }\n\n // At target phase\n if (!event._propagationStopped) {\n event.eventPhase = Event.AT_TARGET;\n invoke(this, event);\n }\n\n // Bubbling phase\n if (event.bubbles && !event._propagationStopped) {\n event.eventPhase = Event.BUBBLING_PHASE;\n for(var ii = 0, nn = ancestors.length; ii < nn; ii++) {\n invoke(ancestors[ii], event);\n if (event._propagationStopped) break;\n }\n }\n\n event._dispatching = false;\n event.eventPhase = Event.AT_TARGET;\n event.currentTarget = null;\n\n // Deal with mouse events and figure out when\n // a click has happened\n if (trusted && !event.defaultPrevented && event instanceof MouseEvent) {\n switch(event.type) {\n case 'mousedown':\n this._armed = {\n x: event.clientX,\n y: event.clientY,\n t: event.timeStamp\n };\n break;\n case 'mouseout':\n case 'mouseover':\n this._armed = null;\n break;\n case 'mouseup':\n if (this._isClick(event)) this._doClick(event);\n this._armed = null;\n break;\n }\n }\n\n\n\n return !event.defaultPrevented;\n },\n\n // Determine whether a click occurred\n // XXX We don't support double clicks for now\n _isClick: function(event) {\n return (this._armed !== null &&\n event.type === 'mouseup' &&\n event.isTrusted &&\n event.button === 0 &&\n event.timeStamp - this._armed.t < 1000 &&\n Math.abs(event.clientX - this._armed.x) < 10 &&\n Math.abs(event.clientY - this._armed.Y) < 10);\n },\n\n // Clicks are handled like this:\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0\n //\n // Note that this method is similar to the HTMLElement.click() method\n // The event argument must be the trusted mouseup event\n _doClick: function(event) {\n if (this._click_in_progress) return;\n this._click_in_progress = true;\n\n // Find the nearest enclosing element that is activatable\n // An element is activatable if it has a\n // _post_click_activation_steps hook\n var activated = this;\n while(activated && !activated._post_click_activation_steps)\n activated = activated.parentNode;\n\n if (activated && activated._pre_click_activation_steps) {\n activated._pre_click_activation_steps();\n }\n\n var click = this.ownerDocument.createEvent('MouseEvent');\n click.initMouseEvent('click', true, true,\n this.ownerDocument.defaultView, 1,\n event.screenX, event.screenY,\n event.clientX, event.clientY,\n event.ctrlKey, event.altKey,\n event.shiftKey, event.metaKey,\n event.button, null);\n\n var result = this._dispatchEvent(click, true);\n\n if (activated) {\n if (result) {\n // This is where hyperlinks get followed, for example.\n if (activated._post_click_activation_steps)\n activated._post_click_activation_steps(click);\n }\n else {\n if (activated._cancelled_activation_steps)\n activated._cancelled_activation_steps();\n }\n }\n },\n\n //\n // An event handler is like an event listener, but it registered\n // by setting an IDL or content attribute like onload or onclick.\n // There can only be one of these at a time for any event type.\n // This is an internal method for the attribute accessors and\n // content attribute handlers that need to register events handlers.\n // The type argument is the same as in addEventListener().\n // The handler argument is the same as listeners in addEventListener:\n // it can be a function or an object. Pass null to remove any existing\n // handler. Handlers are always invoked before any listeners of\n // the same type. They are not invoked during the capturing phase\n // of event dispatch.\n //\n _setEventHandler: function _setEventHandler(type, handler) {\n if (!this._handlers) this._handlers = Object.create(null);\n this._handlers[type] = handler;\n },\n\n _getEventHandler: function _getEventHandler(type) {\n return (this._handlers && this._handlers[type]) || null;\n }\n\n};\n","\"use strict\";\nvar utils = require('./utils');\n\nvar LinkedList = module.exports = {\n // basic validity tests on a circular linked list a\n valid: function(a) {\n utils.assert(a, \"list falsy\");\n utils.assert(a._previousSibling, \"previous falsy\");\n utils.assert(a._nextSibling, \"next falsy\");\n // xxx check that list is actually circular\n return true;\n },\n // insert a before b\n insertBefore: function(a, b) {\n utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n var a_first = a, a_last = a._previousSibling;\n var b_first = b, b_last = b._previousSibling;\n a_first._previousSibling = b_last;\n a_last._nextSibling = b_first;\n b_last._nextSibling = a_first;\n b_first._previousSibling = a_last;\n utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n },\n // replace a single node a with a list b (which could be null)\n replace: function(a, b) {\n utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n if (b!==null) {\n LinkedList.insertBefore(b, a);\n }\n LinkedList.remove(a);\n utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n },\n // remove single node a from its list\n remove: function(a) {\n utils.assert(LinkedList.valid(a));\n var prev = a._previousSibling;\n if (prev === a) { return; }\n var next = a._nextSibling;\n prev._nextSibling = next;\n next._previousSibling = prev;\n a._previousSibling = a._nextSibling = a;\n utils.assert(LinkedList.valid(a));\n }\n};\n","\"use strict\";\nmodule.exports = {\n // NOTE: The `serializeOne()` function used to live on the `Node.prototype`\n // as a private method `Node#_serializeOne(child)`, however that requires\n // a megamorphic property access `this._serializeOne` just to get to the\n // method, and this is being done on lots of different `Node` subclasses,\n // which puts a lot of pressure on V8's megamorphic stub cache. So by\n // moving the helper off of the `Node.prototype` and into a separate\n // function in this helper module, we get a monomorphic property access\n // `NodeUtils.serializeOne` to get to the function and reduce pressure\n // on the megamorphic stub cache.\n // See https://github.com/fgnass/domino/pull/142 for more information.\n serializeOne: serializeOne,\n\n // Export util functions so that we can run extra test for them.\n // Note: we prefix function names with `ɵ`, similar to what we do\n // with internal functions in Angular packages.\n ɵescapeMatchingClosingTag: escapeMatchingClosingTag,\n ɵescapeClosingCommentTag: escapeClosingCommentTag,\n ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent\n};\n\nvar utils = require('./utils');\nvar NAMESPACE = utils.NAMESPACE;\n\nvar hasRawContent = {\n STYLE: true,\n SCRIPT: true,\n XMP: true,\n IFRAME: true,\n NOEMBED: true,\n NOFRAMES: true,\n PLAINTEXT: true\n};\n\nvar emptyElements = {\n area: true,\n base: true,\n basefont: true,\n bgsound: true,\n br: true,\n col: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar extraNewLine = {\n /* Removed in https://github.com/whatwg/html/issues/944\n pre: true,\n textarea: true,\n listing: true\n */\n};\n\nconst ESCAPE_REGEXP = /[&<>\\u00A0]/g;\nconst ESCAPE_ATTR_REGEXP = /[&\"<>\\u00A0]/g;\n\nfunction escape(s) {\n if (!ESCAPE_REGEXP.test(s)) {\n // nothing to do, fast path\n return s;\n }\n\n return s.replace(ESCAPE_REGEXP, (c) => {\n switch (c) {\n case \"&\":\n return \"&\";\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n case \"\\u00A0\":\n return \" \";\n }\n });\n}\n\nfunction escapeAttr(s) {\n if (!ESCAPE_ATTR_REGEXP.test(s)) {\n // nothing to do, fast path\n return s;\n }\n\n return s.replace(ESCAPE_ATTR_REGEXP, (c) => {\n switch (c) {\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n case \"&\":\n return \"&\";\n case '\"':\n return \""\";\n case \"\\u00A0\":\n return \" \";\n }\n });\n}\n\nfunction attrname(a) {\n var ns = a.namespaceURI;\n if (!ns)\n return a.localName;\n if (ns === NAMESPACE.XML)\n return 'xml:' + a.localName;\n if (ns === NAMESPACE.XLINK)\n return 'xlink:' + a.localName;\n\n if (ns === NAMESPACE.XMLNS) {\n if (a.localName === 'xmlns') return 'xmlns';\n else return 'xmlns:' + a.localName;\n }\n return a.name;\n}\n\n/**\n * Escapes matching closing tag in a raw text.\n *\n * For example, given `)`,\n * the parent tag would by \"style\" and the raw text is\n * \"\". If we come across a matching closing tag\n * (in out case ``) - replace `<` with `<` to avoid unexpected\n * and unsafe behavior after de-serialization.\n */\nfunction escapeMatchingClosingTag(rawText, parentTag) {\n const parentClosingTag = '/;\n\n/**\n * Escapes closing comment tag in a comment content.\n *\n * For example, given `#comment('-->')`, the content of a comment would be\n * updated to `-->` to avoid unexpected and unsafe behavior after\n * de-serialization.\n */\nfunction escapeClosingCommentTag(rawContent) {\n if (!CLOSING_COMMENT_REGEXP.test(rawContent)) {\n return rawContent; // fast path\n }\n return rawContent.replace(/(--\\!?)>/g, '$1>');\n}\n\n/**\n * Escapes processing instruction content by replacing `>` with `>`.\n */\nfunction escapeProcessingInstructionContent(rawContent) {\n return rawContent.includes('>')\n ? rawContent.replaceAll('>', '>')\n : rawContent;\n}\n\nfunction serializeOne(kid, parent) {\n var s = '';\n switch(kid.nodeType) {\n case 1: //ELEMENT_NODE\n var ns = kid.namespaceURI;\n var html = ns === NAMESPACE.HTML;\n var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName;\n\n s += '<' + tagname;\n\n for(var j = 0, k = kid._numattrs; j < k; j++) {\n var a = kid._attr(j);\n s += ' ' + attrname(a);\n if (a.value !== undefined) s += '=\"' + escapeAttr(a.value) + '\"';\n }\n s += '>';\n\n if (!(html && emptyElements[tagname])) {\n var ss = kid.serialize();\n // If an element can have raw content, this content may\n // potentially require escaping to avoid XSS.\n if (hasRawContent[tagname.toUpperCase()]) {\n ss = escapeMatchingClosingTag(ss, tagname);\n }\n if (html && extraNewLine[tagname] && ss.charAt(0)==='\\n') s += '\\n';\n // Serialize children and add end tag for all others\n s += ss;\n s += '';\n }\n break;\n case 3: //TEXT_NODE\n case 4: //CDATA_SECTION_NODE\n var parenttag;\n if (parent.nodeType === 1 /*ELEMENT_NODE*/ &&\n parent.namespaceURI === NAMESPACE.HTML)\n parenttag = parent.tagName;\n else\n parenttag = '';\n\n if (hasRawContent[parenttag] ||\n (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) {\n s += kid.data;\n } else {\n s += escape(kid.data);\n }\n break;\n case 8: //COMMENT_NODE\n s += '';\n break;\n case 7: //PROCESSING_INSTRUCTION_NODE\n const content = escapeProcessingInstructionContent(kid.data);\n s += '';\n break;\n case 10: //DOCUMENT_TYPE_NODE\n s += '';\n break;\n default:\n utils.InvalidStateError();\n }\n return s;\n}\n","\"use strict\";\nmodule.exports = Node;\n\nvar EventTarget = require('./EventTarget');\nvar LinkedList = require('./LinkedList');\nvar NodeUtils = require('./NodeUtils');\nvar utils = require('./utils');\n\n// All nodes have a nodeType and an ownerDocument.\n// Once inserted, they also have a parentNode.\n// This is an abstract class; all nodes in a document are instances\n// of a subtype, so all the properties are defined by more specific\n// constructors.\nfunction Node() {\n EventTarget.call(this);\n this.parentNode = null;\n this._nextSibling = this._previousSibling = this;\n this._index = undefined;\n}\n\nvar ELEMENT_NODE = Node.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = Node.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = Node.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = Node.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = Node.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = Node.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = Node.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = Node.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = Node.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = Node.NOTATION_NODE = 12;\n\nvar DOCUMENT_POSITION_DISCONNECTED = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;\nvar DOCUMENT_POSITION_PRECEDING = Node.DOCUMENT_POSITION_PRECEDING = 0x02;\nvar DOCUMENT_POSITION_FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING = 0x04;\nvar DOCUMENT_POSITION_CONTAINS = Node.DOCUMENT_POSITION_CONTAINS = 0x08;\nvar DOCUMENT_POSITION_CONTAINED_BY = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nvar DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\nNode.prototype = Object.create(EventTarget.prototype, {\n\n // Node that are not inserted into the tree inherit a null parent\n\n // XXX: the baseURI attribute is defined by dom core, but\n // a correct implementation of it requires HTML features, so\n // we'll come back to this later.\n baseURI: { get: utils.nyi },\n\n parentElement: { get: function() {\n return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null;\n }},\n\n hasChildNodes: { value: utils.shouldOverride },\n\n firstChild: { get: utils.shouldOverride },\n\n lastChild: { get: utils.shouldOverride },\n\n isConnected: {\n get: function () {\n let node = this;\n while (node != null) {\n if (node.nodeType === Node.DOCUMENT_NODE) {\n return true;\n }\n\n node = node.parentNode;\n if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n node = node.host;\n }\n }\n return false;\n },\n },\n\n previousSibling: { get: function() {\n var parent = this.parentNode;\n if (!parent) return null;\n if (this === parent.firstChild) return null;\n return this._previousSibling;\n }},\n\n nextSibling: { get: function() {\n var parent = this.parentNode, next = this._nextSibling;\n if (!parent) return null;\n if (next === parent.firstChild) return null;\n return next;\n }},\n\n textContent: {\n // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n get: function() { return null; },\n set: function(v) { /* do nothing */ },\n },\n\n innerText: {\n // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n get: function() { return null; },\n set: function(v) { /* do nothing */ },\n },\n\n _countChildrenOfType: { value: function(type) {\n var sum = 0;\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === type) sum++;\n }\n return sum;\n }},\n\n _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) {\n var parent = this, i, kid;\n if (!node.nodeType) throw new TypeError('not a node');\n // 1. If parent is not a Document, DocumentFragment, or Element\n // node, throw a HierarchyRequestError.\n switch (parent.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n case ELEMENT_NODE:\n break;\n default: utils.HierarchyRequestError();\n }\n // 2. If node is a host-including inclusive ancestor of parent,\n // throw a HierarchyRequestError.\n if (node.isAncestor(parent)) utils.HierarchyRequestError();\n // 3. If child is not null and its parent is not parent, then\n // throw a NotFoundError. (replaceChild omits the 'child is not null'\n // and throws a TypeError here if child is null.)\n if (child !== null || !isPreinsert) {\n if (child.parentNode !== parent) utils.NotFoundError();\n }\n // 4. If node is not a DocumentFragment, DocumentType, Element,\n // Text, ProcessingInstruction, or Comment node, throw a\n // HierarchyRequestError.\n switch (node.nodeType) {\n case DOCUMENT_FRAGMENT_NODE:\n case DOCUMENT_TYPE_NODE:\n case ELEMENT_NODE:\n case TEXT_NODE:\n case PROCESSING_INSTRUCTION_NODE:\n case COMMENT_NODE:\n break;\n default: utils.HierarchyRequestError();\n }\n // 5. If either node is a Text node and parent is a document, or\n // node is a doctype and parent is not a document, throw a\n // HierarchyRequestError.\n // 6. If parent is a document, and any of the statements below, switched\n // on node, are true, throw a HierarchyRequestError.\n if (parent.nodeType === DOCUMENT_NODE) {\n switch (node.nodeType) {\n case TEXT_NODE:\n utils.HierarchyRequestError();\n break;\n case DOCUMENT_FRAGMENT_NODE:\n // 6a1. If node has more than one element child or has a Text\n // node child.\n if (node._countChildrenOfType(TEXT_NODE) > 0)\n utils.HierarchyRequestError();\n switch (node._countChildrenOfType(ELEMENT_NODE)) {\n case 0:\n break;\n case 1:\n // 6a2. Otherwise, if node has one element child and either\n // parent has an element child, child is a doctype, or child\n // is not null and a doctype is following child. [preinsert]\n // 6a2. Otherwise, if node has one element child and either\n // parent has an element child that is not child or a\n // doctype is following child. [replaceWith]\n if (child !== null /* always true here for replaceWith */) {\n if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n utils.HierarchyRequestError();\n for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === DOCUMENT_TYPE_NODE)\n utils.HierarchyRequestError();\n }\n }\n i = parent._countChildrenOfType(ELEMENT_NODE);\n if (isPreinsert) {\n // \"parent has an element child\"\n if (i > 0)\n utils.HierarchyRequestError();\n } else {\n // \"parent has an element child that is not child\"\n if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n utils.HierarchyRequestError();\n }\n break;\n default: // 6a1, continued. (more than one Element child)\n utils.HierarchyRequestError();\n }\n break;\n case ELEMENT_NODE:\n // 6b. parent has an element child, child is a doctype, or\n // child is not null and a doctype is following child. [preinsert]\n // 6b. parent has an element child that is not child or a\n // doctype is following child. [replaceWith]\n if (child !== null /* always true here for replaceWith */) {\n if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n utils.HierarchyRequestError();\n for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === DOCUMENT_TYPE_NODE)\n utils.HierarchyRequestError();\n }\n }\n i = parent._countChildrenOfType(ELEMENT_NODE);\n if (isPreinsert) {\n // \"parent has an element child\"\n if (i > 0)\n utils.HierarchyRequestError();\n } else {\n // \"parent has an element child that is not child\"\n if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n utils.HierarchyRequestError();\n }\n break;\n case DOCUMENT_TYPE_NODE:\n // 6c. parent has a doctype child, child is non-null and an\n // element is preceding child, or child is null and parent has\n // an element child. [preinsert]\n // 6c. parent has a doctype child that is not child, or an\n // element is preceding child. [replaceWith]\n if (child === null) {\n if (parent._countChildrenOfType(ELEMENT_NODE))\n utils.HierarchyRequestError();\n } else {\n // child is always non-null for [replaceWith] case\n for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n if (kid === child) break;\n if (kid.nodeType === ELEMENT_NODE)\n utils.HierarchyRequestError();\n }\n }\n i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE);\n if (isPreinsert) {\n // \"parent has an doctype child\"\n if (i > 0)\n utils.HierarchyRequestError();\n } else {\n // \"parent has an doctype child that is not child\"\n if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE))\n utils.HierarchyRequestError();\n }\n break;\n }\n } else {\n // 5, continued: (parent is not a document)\n if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError();\n }\n }},\n\n insertBefore: { value: function insertBefore(node, child) {\n var parent = this;\n // 1. Ensure pre-insertion validity\n parent._ensureInsertValid(node, child, true);\n // 2. Let reference child be child.\n var refChild = child;\n // 3. If reference child is node, set it to node's next sibling\n if (refChild === node) { refChild = node.nextSibling; }\n // 4. Adopt node into parent's node document.\n parent.doc.adoptNode(node);\n // 5. Insert node into parent before reference child.\n node._insertOrReplace(parent, refChild, false);\n // 6. Return node\n return node;\n }},\n\n\n appendChild: { value: function(child) {\n // This invokes _appendChild after doing validity checks.\n return this.insertBefore(child, null);\n }},\n\n _appendChild: { value: function(child) {\n child._insertOrReplace(this, null, false);\n }},\n\n removeChild: { value: function removeChild(child) {\n var parent = this;\n if (!child.nodeType) throw new TypeError('not a node');\n if (child.parentNode !== parent) utils.NotFoundError();\n child.remove();\n return child;\n }},\n\n // To replace a `child` with `node` within a `parent` (this)\n replaceChild: { value: function replaceChild(node, child) {\n var parent = this;\n // Ensure validity (slight differences from pre-insertion check)\n parent._ensureInsertValid(node, child, false);\n // Adopt node into parent's node document.\n if (node.doc !== parent.doc) {\n // XXX adoptNode has side-effect of removing node from its parent\n // and generating a mutation event, thus causing the _insertOrReplace\n // to generate two deletes and an insert instead of a 'move'\n // event. It looks like the new MutationObserver stuff avoids\n // this problem, but for now let's only adopt (ie, remove `node`\n // from its parent) here if we need to.\n parent.doc.adoptNode(node);\n }\n // Do the replace.\n node._insertOrReplace(parent, child, true);\n return child;\n }},\n\n // See: http://ejohn.org/blog/comparing-document-position/\n contains: { value: function contains(node) {\n if (node === null) { return false; }\n if (this === node) { return true; /* inclusive descendant */ }\n /* jshint bitwise: false */\n return (this.compareDocumentPosition(node) &\n DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n }},\n\n compareDocumentPosition: { value: function compareDocumentPosition(that){\n // Basic algorithm for finding the relative position of two nodes.\n // Make a list the ancestors of each node, starting with the\n // document element and proceeding down to the nodes themselves.\n // Then, loop through the lists, looking for the first element\n // that differs. The order of those two elements give the\n // order of their descendant nodes. Or, if one list is a prefix\n // of the other one, then that node contains the other.\n\n if (this === that) return 0;\n\n // If they're not owned by the same document or if one is rooted\n // and one is not, then they're disconnected.\n if (this.doc !== that.doc ||\n this.rooted !== that.rooted)\n return (DOCUMENT_POSITION_DISCONNECTED +\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n // Get arrays of ancestors for this and that\n var these = [], those = [];\n for(var n = this; n !== null; n = n.parentNode) these.push(n);\n for(n = that; n !== null; n = n.parentNode) those.push(n);\n these.reverse(); // So we start with the outermost\n those.reverse();\n\n if (these[0] !== those[0]) // No common ancestor\n return (DOCUMENT_POSITION_DISCONNECTED +\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n n = Math.min(these.length, those.length);\n for(var i = 1; i < n; i++) {\n if (these[i] !== those[i]) {\n // We found two different ancestors, so compare\n // their positions\n if (these[i].index < those[i].index)\n return DOCUMENT_POSITION_FOLLOWING;\n else\n return DOCUMENT_POSITION_PRECEDING;\n }\n }\n\n // If we get to here, then one of the nodes (the one with the\n // shorter list of ancestors) contains the other one.\n if (these.length < those.length)\n return (DOCUMENT_POSITION_FOLLOWING +\n DOCUMENT_POSITION_CONTAINED_BY);\n else\n return (DOCUMENT_POSITION_PRECEDING +\n DOCUMENT_POSITION_CONTAINS);\n }},\n\n isSameNode: {value : function isSameNode(node) {\n return this === node;\n }},\n\n\n // This method implements the generic parts of node equality testing\n // and defers to the (non-recursive) type-specific isEqual() method\n // defined by subclasses\n isEqualNode: { value: function isEqualNode(node) {\n if (!node) return false;\n if (node.nodeType !== this.nodeType) return false;\n\n // Check type-specific properties for equality\n if (!this.isEqual(node)) return false;\n\n // Now check children for number and equality\n for (var c1 = this.firstChild, c2 = node.firstChild;\n c1 && c2;\n c1 = c1.nextSibling, c2 = c2.nextSibling) {\n if (!c1.isEqualNode(c2)) return false;\n }\n return c1 === null && c2 === null;\n }},\n\n // This method delegates shallow cloning to a clone() method\n // that each concrete subclass must implement\n cloneNode: { value: function(deep) {\n // Clone this node\n var clone = this.clone();\n\n // Handle the recursive case if necessary\n if (deep) {\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n clone._appendChild(kid.cloneNode(true));\n }\n }\n\n return clone;\n }},\n\n lookupPrefix: { value: function lookupPrefix(ns) {\n var e;\n if (ns === '' || ns === null || ns === undefined) return null;\n switch(this.nodeType) {\n case ELEMENT_NODE:\n return this._lookupNamespacePrefix(ns, this);\n case DOCUMENT_NODE:\n e = this.documentElement;\n return e ? e.lookupPrefix(ns) : null;\n case ENTITY_NODE:\n case NOTATION_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n case DOCUMENT_TYPE_NODE:\n return null;\n case ATTRIBUTE_NODE:\n e = this.ownerElement;\n return e ? e.lookupPrefix(ns) : null;\n default:\n e = this.parentElement;\n return e ? e.lookupPrefix(ns) : null;\n }\n }},\n\n\n lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) {\n if (prefix === '' || prefix === undefined) { prefix = null; }\n var e;\n switch(this.nodeType) {\n case ELEMENT_NODE:\n return utils.shouldOverride();\n case DOCUMENT_NODE:\n e = this.documentElement;\n return e ? e.lookupNamespaceURI(prefix) : null;\n case ENTITY_NODE:\n case NOTATION_NODE:\n case DOCUMENT_TYPE_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n case ATTRIBUTE_NODE:\n e = this.ownerElement;\n return e ? e.lookupNamespaceURI(prefix) : null;\n default:\n e = this.parentElement;\n return e ? e.lookupNamespaceURI(prefix) : null;\n }\n }},\n\n isDefaultNamespace: { value: function isDefaultNamespace(ns) {\n if (ns === '' || ns === undefined) { ns = null; }\n var defaultNamespace = this.lookupNamespaceURI(null);\n return (defaultNamespace === ns);\n }},\n\n // Utility methods for nodes. Not part of the DOM\n\n // Return the index of this node in its parent.\n // Throw if no parent, or if this node is not a child of its parent\n index: { get: function() {\n var parent = this.parentNode;\n if (this === parent.firstChild) return 0; // fast case\n var kids = parent.childNodes;\n if (this._index === undefined || kids[this._index] !== this) {\n // Ensure that we don't have an O(N^2) blowup if none of the\n // kids have defined indices yet and we're traversing via\n // nextSibling or previousSibling\n for (var i=0; i 2 ? spliceArgs[2] : null);\n } else if (len > 2 && n !== null) {\n LinkedList.insertBefore(spliceArgs[2], n);\n }\n if (parent._childNodes) {\n spliceArgs[0] = (before === null) ?\n parent._childNodes.length : before._index;\n parent._childNodes.splice.apply(parent._childNodes, spliceArgs);\n for (i=2; i 2) {\n parent._firstChild = spliceArgs[2];\n } else if (isReplace) {\n parent._firstChild = null;\n }\n }\n // Remove all nodes from the document fragment\n if (child._childNodes) {\n child._childNodes.length = 0;\n } else {\n child._firstChild = null;\n }\n // Call the mutation handlers\n // Use spliceArgs since the original array has been destroyed. The\n // liveness guarantee requires us to clone the array so that\n // references to the childNodes of the DocumentFragment will be empty\n // when the insertion handlers are called.\n if (parent.rooted) {\n parent.modify();\n for (i = 2; i < len; i++) {\n parent.doc.mutateInsert(spliceArgs[i]);\n }\n }\n } else {\n if (before === child) { return; }\n if (bothRooted) {\n // Remove the child from its current position in the tree\n // without calling remove(), since we don't want to uproot it.\n child._remove();\n } else if (child.parentNode) {\n child.remove();\n }\n\n // Insert it as a child of its new parent\n child.parentNode = parent;\n if (isReplace) {\n LinkedList.replace(n, child);\n if (parent._childNodes) {\n child._index = before_index;\n parent._childNodes[before_index] = child;\n } else if (parent._firstChild === before) {\n parent._firstChild = child;\n }\n } else {\n if (n !== null) {\n LinkedList.insertBefore(child, n);\n }\n if (parent._childNodes) {\n child._index = before_index;\n parent._childNodes.splice(before_index, 0, child);\n } else if (parent._firstChild === before) {\n parent._firstChild = child;\n }\n }\n if (bothRooted) {\n parent.modify();\n // Generate a move mutation event\n parent.doc.mutateMove(child);\n } else if (parent.rooted) {\n parent.modify();\n parent.doc.mutateInsert(child);\n }\n }\n }},\n\n\n // Return the lastModTime value for this node. (For use as a\n // cache invalidation mechanism. If the node does not already\n // have one, initialize it from the owner document's modclock\n // property. (Note that modclock does not return the actual\n // time; it is simply a counter incremented on each document\n // modification)\n lastModTime: { get: function() {\n if (!this._lastModTime) {\n this._lastModTime = this.doc.modclock;\n }\n return this._lastModTime;\n }},\n\n // Increment the owner document's modclock and use the new\n // value to update the lastModTime value for this node and\n // all of its ancestors. Nodes that have never had their\n // lastModTime value queried do not need to have a\n // lastModTime property set on them since there is no\n // previously queried value to ever compare the new value\n // against, so only update nodes that already have a\n // _lastModTime property.\n modify: { value: function() {\n if (this.doc.modclock) { // Skip while doc.modclock == 0\n var time = ++this.doc.modclock;\n for(var n = this; n; n = n.parentElement) {\n if (n._lastModTime) {\n n._lastModTime = time;\n }\n }\n }\n }},\n\n // This attribute is not part of the DOM but is quite helpful.\n // It returns the document with which a node is associated. Usually\n // this is the ownerDocument. But ownerDocument is null for the\n // document object itself, so this is a handy way to get the document\n // regardless of the node type\n doc: { get: function() {\n return this.ownerDocument || this;\n }},\n\n\n // If the node has a nid (node id), then it is rooted in a document\n rooted: { get: function() {\n return !!this._nid;\n }},\n\n normalize: { value: function() {\n var next;\n for (var child=this.firstChild; child !== null; child=next) {\n next = child.nextSibling;\n\n if (child.normalize) {\n child.normalize();\n }\n\n if (child.nodeType !== Node.TEXT_NODE) {\n continue;\n }\n\n if (child.nodeValue === \"\") {\n this.removeChild(child);\n continue;\n }\n\n var prevChild = child.previousSibling;\n if (prevChild === null) {\n continue;\n } else if (prevChild.nodeType === Node.TEXT_NODE) {\n // merge this with previous and remove the child\n prevChild.appendData(child.nodeValue);\n this.removeChild(child);\n }\n }\n }},\n\n // Convert the children of a node to an HTML string.\n // This is used by the innerHTML getter\n // The serialization spec is at:\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments\n //\n // The serialization logic is intentionally implemented in a separate\n // `NodeUtils` helper instead of the more obvious choice of a private\n // `_serializeOne()` method on the `Node.prototype` in order to avoid\n // the megamorphic `this._serializeOne` property access, which reduces\n // performance unnecessarily. If you need specialized behavior for a\n // certain subclass, you'll need to implement that in `NodeUtils`.\n // See https://github.com/fgnass/domino/pull/142 for more information.\n serialize: { value: function() {\n if (this._innerHTML) {\n return this._innerHTML;\n }\n var s = '';\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n s += NodeUtils.serializeOne(kid, this);\n }\n return s;\n }},\n\n // Non-standard, but often useful for debugging.\n outerHTML: {\n get: function() {\n return NodeUtils.serializeOne(this, { nodeType: 0 });\n },\n set: utils.nyi,\n },\n\n // mirror node type properties in the prototype, so they are present\n // in instances of Node (and subclasses)\n ELEMENT_NODE: { value: ELEMENT_NODE },\n ATTRIBUTE_NODE: { value: ATTRIBUTE_NODE },\n TEXT_NODE: { value: TEXT_NODE },\n CDATA_SECTION_NODE: { value: CDATA_SECTION_NODE },\n ENTITY_REFERENCE_NODE: { value: ENTITY_REFERENCE_NODE },\n ENTITY_NODE: { value: ENTITY_NODE },\n PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE },\n COMMENT_NODE: { value: COMMENT_NODE },\n DOCUMENT_NODE: { value: DOCUMENT_NODE },\n DOCUMENT_TYPE_NODE: { value: DOCUMENT_TYPE_NODE },\n DOCUMENT_FRAGMENT_NODE: { value: DOCUMENT_FRAGMENT_NODE },\n NOTATION_NODE: { value: NOTATION_NODE },\n\n DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED },\n DOCUMENT_POSITION_PRECEDING: { value: DOCUMENT_POSITION_PRECEDING },\n DOCUMENT_POSITION_FOLLOWING: { value: DOCUMENT_POSITION_FOLLOWING },\n DOCUMENT_POSITION_CONTAINS: { value: DOCUMENT_POSITION_CONTAINS },\n DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY },\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC },\n});\n","/* jshint esversion: 6 */\n\"use strict\";\n\nmodule.exports = class NodeList extends Array {\n constructor(a) {\n super((a && a.length) || 0);\n if (a) {\n for (var idx in a) { this[idx] = a[idx]; }\n }\n }\n item(i) { return this[i] || null; }\n};\n","\"use strict\";\n\n// No support for subclassing array, return an actual Array object.\nfunction item(i) {\n /* jshint validthis: true */\n return this[i] || null;\n}\n\nfunction NodeList(a) {\n if (!a) a = [];\n a.item = item;\n return a;\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\n\nvar NodeList;\n\ntry {\n // Attempt to use ES6-style Array subclass if possible.\n NodeList = require('./NodeList.es6.js');\n} catch (e) {\n // No support for subclassing array, return an actual Array object.\n NodeList = require('./NodeList.es5.js');\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\nmodule.exports = ContainerNode;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\n\n// This class defines common functionality for node subtypes that\n// can have children\n\nfunction ContainerNode() {\n Node.call(this);\n this._firstChild = this._childNodes = null;\n}\n\n// Primary representation is a circular linked list of siblings\nContainerNode.prototype = Object.create(Node.prototype, {\n\n hasChildNodes: { value: function() {\n if (this._childNodes) {\n return this._childNodes.length > 0;\n }\n return this._firstChild !== null;\n }},\n\n childNodes: { get: function() {\n this._ensureChildNodes();\n return this._childNodes;\n }},\n\n firstChild: { get: function() {\n if (this._childNodes) {\n return this._childNodes.length === 0 ? null : this._childNodes[0];\n }\n return this._firstChild;\n }},\n\n lastChild: { get: function() {\n var kids = this._childNodes, first;\n if (kids) {\n return kids.length === 0 ? null: kids[kids.length-1];\n }\n first = this._firstChild;\n if (first === null) { return null; }\n return first._previousSibling; // circular linked list\n }},\n\n _ensureChildNodes: { value: function() {\n if (this._childNodes) { return; }\n var first = this._firstChild,\n kid = first,\n childNodes = this._childNodes = new NodeList();\n if (first) do {\n childNodes.push(kid);\n kid = kid._nextSibling;\n } while (kid !== first); // circular linked list\n this._firstChild = null; // free memory\n }},\n\n // Remove all of this node's children. This is a minor\n // optimization that only calls modify() once.\n removeChildren: { value: function removeChildren() {\n var root = this.rooted ? this.ownerDocument : null,\n next = this.firstChild,\n kid;\n while (next !== null) {\n kid = next;\n next = kid.nextSibling;\n\n if (root) root.mutateRemove(kid);\n kid.parentNode = null;\n }\n if (this._childNodes) {\n this._childNodes.length = 0;\n } else {\n this._firstChild = null;\n }\n this.modify(); // Update last modified type once only\n }},\n\n});\n","\"use strict\";\n// This grammar is from the XML and XML Namespace specs. It specifies whether\n// a string (such as an element or attribute name) is a valid Name or QName.\n//\n// Name ::= NameStartChar (NameChar)*\n// NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] |\n// [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |\n// [#x370-#x37D] | [#x37F-#x1FFF] |\n// [#x200C-#x200D] | [#x2070-#x218F] |\n// [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n// [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |\n// [#x10000-#xEFFFF]\n//\n// NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] |\n// #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//\n// QName ::= PrefixedName| UnprefixedName\n// PrefixedName ::= Prefix ':' LocalPart\n// UnprefixedName ::= LocalPart\n// Prefix ::= NCName\n// LocalPart ::= NCName\n// NCName ::= Name - (Char* ':' Char*)\n// # An XML Name, minus the \":\"\n//\n\nexports.isValidName = isValidName;\nexports.isValidQName = isValidQName;\n\n// Most names will be ASCII only. Try matching against simple regexps first\nvar simplename = /^[_:A-Za-z][-.:\\w]+$/;\nvar simpleqname = /^([_A-Za-z][-.\\w]+|[_A-Za-z][-.\\w]+:[_A-Za-z][-.\\w]+)$/;\n\n// If the regular expressions above fail, try more complex ones that work\n// for any identifiers using codepoints from the Unicode BMP\nvar ncnamestartchars = \"_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\nvar ncnamechars = \"-._A-Za-z0-9\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0300-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203f\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\n\nvar ncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nvar namestartchars = ncnamestartchars + \":\";\nvar namechars = ncnamechars + \":\";\nvar name = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar qname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\n// XML says that these characters are also legal:\n// [#x10000-#xEFFFF]. So if the patterns above fail, and the\n// target string includes surrogates, then try the following\n// patterns that allow surrogates and then run an extra validation\n// step to make sure that the surrogates are in valid pairs and in\n// the right range. Note that since the characters \\uf0000 to \\u1f0000\n// are not allowed, it means that the high surrogate can only go up to\n// \\uDB7f instead of \\uDBFF.\nvar hassurrogates = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/;\nvar surrogatechars = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/g;\nvar surrogatepairs = /[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/g;\n\n// Modify the variables above to allow surrogates\nncnamestartchars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncnamechars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nnamestartchars = ncnamestartchars + \":\";\nnamechars = ncnamechars + \":\";\n\n// Build another set of regexps that include surrogates\nvar surrogatename = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar surrogateqname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\nfunction isValidName(s) {\n if (simplename.test(s)) return true; // Plain ASCII\n if (name.test(s)) return true; // Unicode BMP\n\n // Maybe the tests above failed because s includes surrogate pairs\n // Most likely, though, they failed for some more basic syntax problem\n if (!hassurrogates.test(s)) return false;\n\n // Is the string a valid name if we allow surrogates?\n if (!surrogatename.test(s)) return false;\n\n // Finally, are the surrogates all correctly paired up?\n var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n return pairs !== null && 2*pairs.length === chars.length;\n}\n\nfunction isValidQName(s) {\n if (simpleqname.test(s)) return true; // Plain ASCII\n if (qname.test(s)) return true; // Unicode BMP\n\n if (!hassurrogates.test(s)) return false;\n if (!surrogateqname.test(s)) return false;\n var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n return pairs !== null && 2*pairs.length === chars.length;\n}\n","\"use strict\";\nvar utils = require('./utils');\n\nexports.property = function(attr) {\n if (Array.isArray(attr.type)) {\n var valid = Object.create(null);\n attr.type.forEach(function(val) {\n valid[val.value || val] = val.alias || val;\n });\n var missingValueDefault = attr.missing;\n if (missingValueDefault===undefined) { missingValueDefault = null; }\n var invalidValueDefault = attr.invalid;\n if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; }\n return {\n get: function() {\n var v = this._getattr(attr.name);\n if (v === null) return missingValueDefault;\n\n v = valid[v.toLowerCase()];\n if (v !== undefined) return v;\n if (invalidValueDefault !== null) return invalidValueDefault;\n return v;\n },\n set: function(v) {\n this._setattr(attr.name, v);\n }\n };\n }\n else if (attr.type === Boolean) {\n return {\n get: function() {\n return this.hasAttribute(attr.name);\n },\n set: function(v) {\n if (v) {\n this._setattr(attr.name, '');\n }\n else {\n this.removeAttribute(attr.name);\n }\n }\n };\n }\n else if (attr.type === Number ||\n attr.type === \"long\" ||\n attr.type === \"unsigned long\" ||\n attr.type === \"limited unsigned long with fallback\") {\n return numberPropDesc(attr);\n }\n else if (!attr.type || attr.type === String) {\n return {\n get: function() { return this._getattr(attr.name) || ''; },\n set: function(v) {\n if (attr.treatNullAsEmptyString && v === null) { v = ''; }\n this._setattr(attr.name, v);\n }\n };\n }\n else if (typeof attr.type === 'function') {\n return attr.type(attr.name, attr);\n }\n throw new Error('Invalid attribute definition');\n};\n\n// See http://www.whatwg.org/specs/web-apps/current-work/#reflect\n//\n// defval is the default value. If it is a function, then that function\n// will be invoked as a method of the element to obtain the default.\n// If no default is specified for a given attribute, then the default\n// depends on the type of the attribute, but since this function handles\n// 4 integer cases, you must specify the default value in each call\n//\n// min and max define a valid range for getting the attribute.\n//\n// setmin defines a minimum value when setting. If the value is less\n// than that, then throw INDEX_SIZE_ERR.\n//\n// Conveniently, JavaScript's parseInt function appears to be\n// compatible with HTML's 'rules for parsing integers'\nfunction numberPropDesc(a) {\n var def;\n if(typeof a.default === 'function') {\n def = a.default;\n }\n else if(typeof a.default === 'number') {\n def = function() { return a.default; };\n }\n else {\n def = function() { utils.assert(false, typeof a.default); };\n }\n var unsigned_long = (a.type === 'unsigned long');\n var signed_long = (a.type === 'long');\n var unsigned_fallback = (a.type === 'limited unsigned long with fallback');\n var min = a.min, max = a.max, setmin = a.setmin;\n if (min === undefined) {\n if (unsigned_long) min = 0;\n if (signed_long) min = -0x80000000;\n if (unsigned_fallback) min = 1;\n }\n if (max === undefined) {\n if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF;\n }\n\n return {\n get: function() {\n var v = this._getattr(a.name);\n var n = a.float ? parseFloat(v) : parseInt(v, 10);\n if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) {\n return def.call(this);\n }\n if (unsigned_long || signed_long || unsigned_fallback) {\n if (!/^[ \\t\\n\\f\\r]*[-+]?[0-9]/.test(v)) { return def.call(this); }\n n = n|0; // jshint ignore:line\n }\n return n;\n },\n set: function(v) {\n if (!a.float) { v = Math.floor(v); }\n if (setmin !== undefined && v < setmin) {\n utils.IndexSizeError(a.name + ' set to ' + v);\n }\n if (unsigned_long) {\n v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) :\n (v|0); // jshint ignore:line\n } else if (unsigned_fallback) {\n v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) :\n (v|0); // jshint ignore:line\n } else if (signed_long) {\n v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) :\n (v|0); // jshint ignore:line\n }\n this._setattr(a.name, String(v));\n }\n };\n}\n\n// This is a utility function for setting up change handler functions\n// for attributes like 'id' that require special handling when they change.\nexports.registerChangeHandler = function(c, name, handler) {\n var p = c.prototype;\n\n // If p does not already have its own _attributeChangeHandlers\n // then create one for it, inheriting from the inherited\n // _attributeChangeHandlers. At the top (for the Element class) the\n // _attributeChangeHandlers object will be created with a null prototype.\n if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) {\n p._attributeChangeHandlers =\n Object.create(p._attributeChangeHandlers || null);\n }\n\n p._attributeChangeHandlers[name] = handler;\n};\n","\"use strict\";\nmodule.exports = FilteredElementList;\n\nvar Node = require('./Node');\n\n//\n// This file defines node list implementation that lazily traverses\n// the document tree (or a subtree rooted at any element) and includes\n// only those elements for which a specified filter function returns true.\n// It is used to implement the\n// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods.\n//\n// XXX this should inherit from NodeList\n\nfunction FilteredElementList(root, filter) {\n this.root = root;\n this.filter = filter;\n this.lastModTime = root.lastModTime;\n this.done = false;\n this.cache = [];\n this.traverse();\n}\n\nFilteredElementList.prototype = Object.create(Object.prototype, {\n length: { get: function() {\n this.checkcache();\n if (!this.done) this.traverse();\n return this.cache.length;\n } },\n\n item: { value: function(n) {\n this.checkcache();\n if (!this.done && n >= this.cache.length) {\n // This can lead to O(N^2) behavior if we stop when we get to n\n // and the caller is iterating through the items in order; so\n // be sure to do the full traverse here.\n this.traverse(/*n*/);\n }\n return this.cache[n];\n } },\n\n checkcache: { value: function() {\n if (this.lastModTime !== this.root.lastModTime) {\n // subtree has changed, so invalidate cache\n for (var i = this.cache.length-1; i>=0; i--) {\n this[i] = undefined;\n }\n this.cache.length = 0;\n this.done = false;\n this.lastModTime = this.root.lastModTime;\n }\n } },\n\n // If n is specified, then traverse the tree until we've found the nth\n // item (or until we've found all items). If n is not specified,\n // traverse until we've found all items.\n traverse: { value: function(n) {\n // increment n so we can compare to length, and so it is never falsy\n if (n !== undefined) n++;\n\n var elt;\n while ((elt = this.next()) !== null) {\n this[this.cache.length] = elt; //XXX Use proxy instead\n this.cache.push(elt);\n if (n && this.cache.length === n) return;\n }\n\n // no next element, so we've found everything\n this.done = true;\n } },\n\n // Return the next element under root that matches filter\n next: { value: function() {\n var start = (this.cache.length === 0) ? this.root // Start at the root or at\n : this.cache[this.cache.length-1]; // the last element we found\n\n var elt;\n if (start.nodeType === Node.DOCUMENT_NODE)\n elt = start.documentElement;\n else\n elt = start.nextElement(this.root);\n\n while(elt) {\n if (this.filter(elt)) {\n return elt;\n }\n\n elt = elt.nextElement(this.root);\n }\n return null;\n } },\n});\n","\"use strict\";\n// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim\nvar utils = require('./utils');\n\nmodule.exports = DOMTokenList;\n\nfunction DOMTokenList(getter, setter) {\n this._getString = getter;\n this._setString = setter;\n this._length = 0;\n this._lastStringValue = '';\n this._update();\n}\n\nObject.defineProperties(DOMTokenList.prototype, {\n length: { get: function() { return this._length; } },\n item: { value: function(index) {\n var list = getList(this);\n if (index < 0 || index >= list.length) {\n return null;\n }\n return list[index];\n }},\n\n contains: { value: function(token) {\n token = String(token); // no error checking for contains()\n var list = getList(this);\n return list.indexOf(token) > -1;\n }},\n\n add: { value: function() {\n var list = getList(this);\n for (var i = 0, len = arguments.length; i < len; i++) {\n var token = handleErrors(arguments[i]);\n if (list.indexOf(token) < 0) {\n list.push(token);\n }\n }\n // Note: as per spec, if handleErrors() throws any errors, we never\n // make it here and none of the changes take effect.\n // Also per spec: we run the \"update steps\" even if no change was\n // made (ie, if the token already existed)\n this._update(list);\n }},\n\n remove: { value: function() {\n var list = getList(this);\n for (var i = 0, len = arguments.length; i < len; i++) {\n var token = handleErrors(arguments[i]);\n var index = list.indexOf(token);\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n // Note: as per spec, if handleErrors() throws any errors, we never\n // make it here and none of the changes take effect.\n // Also per spec: we run the \"update steps\" even if no change was\n // made (ie, if the token wasn't previously present)\n this._update(list);\n }},\n\n toggle: { value: function toggle(token, force) {\n token = handleErrors(token);\n if (this.contains(token)) {\n if (force === undefined || force === false) {\n this.remove(token);\n return false;\n }\n return true;\n } else {\n if (force === undefined || force === true) {\n this.add(token);\n return true;\n }\n return false;\n }\n }},\n\n replace: { value: function replace(token, newToken) {\n // weird corner case of spec: if `token` contains whitespace, but\n // `newToken` is the empty string, we must throw SyntaxError not\n // InvalidCharacterError (sigh)\n if (String(newToken)==='') { utils.SyntaxError(); }\n token = handleErrors(token);\n newToken = handleErrors(newToken);\n var list = getList(this);\n var idx = list.indexOf(token);\n if (idx < 0) {\n // Note that, per spec, we do not run the update steps on this path.\n return false;\n }\n var idx2 = list.indexOf(newToken);\n if (idx2 < 0) {\n list[idx] = newToken;\n } else {\n // \"replace the first instance of either `token` or `newToken` with\n // `newToken` and remove all other instances\"\n if (idx < idx2) {\n list[idx] = newToken;\n list.splice(idx2, 1);\n } else {\n // idx2 is already `newToken`\n list.splice(idx, 1);\n }\n }\n this._update(list);\n return true;\n }},\n\n toString: { value: function() {\n return this._getString();\n }},\n\n value: {\n get: function() {\n return this._getString();\n },\n set: function(v) {\n this._setString(v);\n this._update();\n }\n },\n\n // Called when the setter is called from outside this interface.\n _update: { value: function(list) {\n if (list) {\n fixIndex(this, list);\n this._setString(list.join(\" \").trim());\n } else {\n fixIndex(this, getList(this));\n }\n this._lastStringValue = this._getString();\n } },\n});\n\nfunction fixIndex(clist, list) {\n var oldLength = clist._length;\n var i;\n clist._length = list.length;\n for (i = 0; i < list.length; i++) {\n clist[i] = list[i];\n }\n // Clear/free old entries.\n for (; i < oldLength; i++) {\n clist[i] = undefined;\n }\n}\n\nfunction handleErrors(token) {\n token = String(token);\n if (token === \"\") {\n utils.SyntaxError();\n }\n if (/[ \\t\\r\\n\\f]/.test(token)) {\n utils.InvalidCharacterError();\n }\n return token;\n}\n\nfunction toArray(clist) {\n var length = clist._length;\n var arr = Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = clist[i];\n }\n return arr;\n}\n\nfunction getList(clist) {\n var strProp = clist._getString();\n if (strProp === clist._lastStringValue) {\n return toArray(clist);\n }\n var str = strProp.replace(/(^[ \\t\\r\\n\\f]+)|([ \\t\\r\\n\\f]+$)/g, '');\n if (str === \"\") {\n return [];\n } else {\n var seen = Object.create(null);\n return str.split(/[ \\t\\r\\n\\f]+/g).filter(function(n) {\n var key = '$' + n;\n if (seen[key]) { return false; }\n seen[key] = true;\n return true;\n });\n }\n}\n","\"use strict\";\n/* jshint eqnull: true */\n/**\n * Zest (https://github.com/chjj/zest)\n * A css selector engine.\n * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed)\n * Domino version based on Zest v0.1.3 with bugfixes applied.\n */\n\n/**\n * Helpers\n */\n\nvar window = Object.create(null, {\n location: { get: function() {\n throw new Error('window.location is not supported.');\n } }\n});\n\nvar compareDocumentPosition = function(a, b) {\n return a.compareDocumentPosition(b);\n};\n\nvar order = function(a, b) {\n /* jshint bitwise: false */\n return compareDocumentPosition(a, b) & 2 ? 1 : -1;\n};\n\nvar next = function(el) {\n while ((el = el.nextSibling)\n && el.nodeType !== 1);\n return el;\n};\n\nvar prev = function(el) {\n while ((el = el.previousSibling)\n && el.nodeType !== 1);\n return el;\n};\n\nvar child = function(el) {\n /*jshint -W084 */\n if (el = el.firstChild) {\n while (el.nodeType !== 1\n && (el = el.nextSibling));\n }\n return el;\n};\n\nvar lastChild = function(el) {\n /*jshint -W084 */\n if (el = el.lastChild) {\n while (el.nodeType !== 1\n && (el = el.previousSibling));\n }\n return el;\n};\n\nvar parentIsElement = function(n) {\n if (!n.parentNode) { return false; }\n var nodeType = n.parentNode.nodeType;\n // The root `html` element can be a first- or last-child, too.\n return nodeType === 1 || nodeType === 9;\n};\n\nvar unquote = function(str) {\n if (!str) return str;\n var ch = str[0];\n if (ch === '\"' || ch === '\\'') {\n if (str[str.length-1] === ch) {\n str = str.slice(1, -1);\n } else {\n // bad string.\n str = str.slice(1);\n }\n return str.replace(rules.str_escape, function(s) {\n var m = /^\\\\(?:([0-9A-Fa-f]+)|([\\r\\n\\f]+))/.exec(s);\n if (!m) { return s.slice(1); }\n if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ }\n var cp = parseInt(m[1], 16);\n return String.fromCodePoint ? String.fromCodePoint(cp) :\n // Not all JavaScript implementations have String.fromCodePoint yet.\n String.fromCharCode(cp);\n });\n } else if (rules.ident.test(str)) {\n return decodeid(str);\n } else {\n // NUMBER, PERCENTAGE, DIMENSION, etc\n return str;\n }\n};\n\nvar decodeid = function(str) {\n return str.replace(rules.escape, function(s) {\n var m = /^\\\\([0-9A-Fa-f]+)/.exec(s);\n if (!m) { return s[1]; }\n var cp = parseInt(m[1], 16);\n return String.fromCodePoint ? String.fromCodePoint(cp) :\n // Not all JavaScript implementations have String.fromCodePoint yet.\n String.fromCharCode(cp);\n });\n};\n\nvar indexOf = (function() {\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf;\n }\n return function(obj, item) {\n var i = this.length;\n while (i--) {\n if (this[i] === item) return i;\n }\n return -1;\n };\n})();\n\nvar makeInside = function(start, end) {\n var regex = rules.inside.source\n .replace(//g, end);\n\n return new RegExp(regex);\n};\n\nvar replace = function(regex, name, val) {\n regex = regex.source;\n regex = regex.replace(name, val.source || val);\n return new RegExp(regex);\n};\n\nvar truncateUrl = function(url, num) {\n return url\n .replace(/^(?:\\w+:\\/\\/|\\/+)/, '')\n .replace(/(?:\\/+|\\/*#.*?)$/, '')\n .split('/', num)\n .join('/');\n};\n\n/**\n * Handle `nth` Selectors\n */\n\nvar parseNth = function(param_, test) {\n var param = param_.replace(/\\s+/g, '')\n , cap;\n\n if (param === 'even') {\n param = '2n+0';\n } else if (param === 'odd') {\n param = '2n+1';\n } else if (param.indexOf('n') === -1) {\n param = '0n' + param;\n }\n\n cap = /^([+-])?(\\d+)?n([+-])?(\\d+)?$/.exec(param);\n\n return {\n group: cap[1] === '-'\n ? -(cap[2] || 1)\n : +(cap[2] || 1),\n offset: cap[4]\n ? (cap[3] === '-' ? -cap[4] : +cap[4])\n : 0\n };\n};\n\nvar nth = function(param_, test, last) {\n var param = parseNth(param_)\n , group = param.group\n , offset = param.offset\n , find = !last ? child : lastChild\n , advance = !last ? next : prev;\n\n return function(el) {\n if (!parentIsElement(el)) return;\n\n var rel = find(el.parentNode)\n , pos = 0;\n\n while (rel) {\n if (test(rel, el)) pos++;\n if (rel === el) {\n pos -= offset;\n return group && pos\n ? (pos % group) === 0 && (pos < 0 === group < 0)\n : !pos;\n }\n rel = advance(rel);\n }\n };\n};\n\n/**\n * Simple Selectors\n */\n\nvar selectors = {\n '*': (function() {\n if (false/*function() {\n var el = document.createElement('div');\n el.appendChild(document.createComment(''));\n return !!el.getElementsByTagName('*')[0];\n }()*/) {\n return function(el) {\n if (el.nodeType === 1) return true;\n };\n }\n return function() {\n return true;\n };\n })(),\n 'type': function(type) {\n type = type.toLowerCase();\n return function(el) {\n return el.nodeName.toLowerCase() === type;\n };\n },\n 'attr': function(key, op, val, i) {\n op = operators[op];\n return function(el) {\n var attr;\n switch (key) {\n case 'for':\n attr = el.htmlFor;\n break;\n case 'class':\n // className is '' when non-existent\n // getAttribute('class') is null\n attr = el.className;\n if (attr === '' && el.getAttribute('class') == null) {\n attr = null;\n }\n break;\n case 'href':\n case 'src':\n attr = el.getAttribute(key, 2);\n break;\n case 'title':\n // getAttribute('title') can be '' when non-existent sometimes?\n attr = el.getAttribute('title') || null;\n break;\n // careful with attributes with special getter functions\n case 'id':\n case 'lang':\n case 'dir':\n case 'accessKey':\n case 'hidden':\n case 'tabIndex':\n case 'style':\n if (el.getAttribute) {\n attr = el.getAttribute(key);\n break;\n }\n /* falls through */\n default:\n if (el.hasAttribute && !el.hasAttribute(key)) {\n break;\n }\n attr = el[key] != null\n ? el[key]\n : el.getAttribute && el.getAttribute(key);\n break;\n }\n if (attr == null) return;\n attr = attr + '';\n if (i) {\n attr = attr.toLowerCase();\n val = val.toLowerCase();\n }\n return op(attr, val);\n };\n },\n ':first-child': function(el) {\n return !prev(el) && parentIsElement(el);\n },\n ':last-child': function(el) {\n return !next(el) && parentIsElement(el);\n },\n ':only-child': function(el) {\n return !prev(el) && !next(el) && parentIsElement(el);\n },\n ':nth-child': function(param, last) {\n return nth(param, function() {\n return true;\n }, last);\n },\n ':nth-last-child': function(param) {\n return selectors[':nth-child'](param, true);\n },\n ':root': function(el) {\n return el.ownerDocument.documentElement === el;\n },\n ':empty': function(el) {\n return !el.firstChild;\n },\n ':not': function(sel) {\n var test = compileGroup(sel);\n return function(el) {\n return !test(el);\n };\n },\n ':first-of-type': function(el) {\n if (!parentIsElement(el)) return;\n var type = el.nodeName;\n /*jshint -W084 */\n while (el = prev(el)) {\n if (el.nodeName === type) return;\n }\n return true;\n },\n ':last-of-type': function(el) {\n if (!parentIsElement(el)) return;\n var type = el.nodeName;\n /*jshint -W084 */\n while (el = next(el)) {\n if (el.nodeName === type) return;\n }\n return true;\n },\n ':only-of-type': function(el) {\n return selectors[':first-of-type'](el)\n && selectors[':last-of-type'](el);\n },\n ':nth-of-type': function(param, last) {\n return nth(param, function(rel, el) {\n return rel.nodeName === el.nodeName;\n }, last);\n },\n ':nth-last-of-type': function(param) {\n return selectors[':nth-of-type'](param, true);\n },\n ':checked': function(el) {\n return !!(el.checked || el.selected);\n },\n ':indeterminate': function(el) {\n return !selectors[':checked'](el);\n },\n ':enabled': function(el) {\n return !el.disabled && el.type !== 'hidden';\n },\n ':disabled': function(el) {\n return !!el.disabled;\n },\n ':target': function(el) {\n return el.id === window.location.hash.substring(1);\n },\n ':focus': function(el) {\n return el === el.ownerDocument.activeElement;\n },\n ':is': function(sel) {\n return compileGroup(sel);\n },\n // :matches is an older name for :is; see\n // https://github.com/w3c/csswg-drafts/issues/3258\n ':matches': function(sel) {\n return selectors[':is'](sel);\n },\n ':nth-match': function(param, last) {\n var args = param.split(/\\s*,\\s*/)\n , arg = args.shift()\n , test = compileGroup(args.join(','));\n\n return nth(arg, test, last);\n },\n ':nth-last-match': function(param) {\n return selectors[':nth-match'](param, true);\n },\n ':links-here': function(el) {\n return el + '' === window.location + '';\n },\n ':lang': function(param) {\n return function(el) {\n while (el) {\n if (el.lang) return el.lang.indexOf(param) === 0;\n el = el.parentNode;\n }\n };\n },\n ':dir': function(param) {\n return function(el) {\n while (el) {\n if (el.dir) return el.dir === param;\n el = el.parentNode;\n }\n };\n },\n ':scope': function(el, con) {\n var context = con || el.ownerDocument;\n if (context.nodeType === 9) {\n return el === context.documentElement;\n }\n return el === context;\n },\n ':any-link': function(el) {\n return typeof el.href === 'string';\n },\n ':local-link': function(el) {\n if (el.nodeName) {\n return el.href && el.host === window.location.host;\n }\n var param = +el + 1;\n return function(el) {\n if (!el.href) return;\n\n var url = window.location + ''\n , href = el + '';\n\n return truncateUrl(url, param) === truncateUrl(href, param);\n };\n },\n ':default': function(el) {\n return !!el.defaultSelected;\n },\n ':valid': function(el) {\n return el.willValidate || (el.validity && el.validity.valid);\n },\n ':invalid': function(el) {\n return !selectors[':valid'](el);\n },\n ':in-range': function(el) {\n return el.value > el.min && el.value <= el.max;\n },\n ':out-of-range': function(el) {\n return !selectors[':in-range'](el);\n },\n ':required': function(el) {\n return !!el.required;\n },\n ':optional': function(el) {\n return !el.required;\n },\n ':read-only': function(el) {\n if (el.readOnly) return true;\n\n var attr = el.getAttribute('contenteditable')\n , prop = el.contentEditable\n , name = el.nodeName.toLowerCase();\n\n name = name !== 'input' && name !== 'textarea';\n\n return (name || el.disabled) && attr == null && prop !== 'true';\n },\n ':read-write': function(el) {\n return !selectors[':read-only'](el);\n },\n ':hover': function() {\n throw new Error(':hover is not supported.');\n },\n ':active': function() {\n throw new Error(':active is not supported.');\n },\n ':link': function() {\n throw new Error(':link is not supported.');\n },\n ':visited': function() {\n throw new Error(':visited is not supported.');\n },\n ':column': function() {\n throw new Error(':column is not supported.');\n },\n ':nth-column': function() {\n throw new Error(':nth-column is not supported.');\n },\n ':nth-last-column': function() {\n throw new Error(':nth-last-column is not supported.');\n },\n ':current': function() {\n throw new Error(':current is not supported.');\n },\n ':past': function() {\n throw new Error(':past is not supported.');\n },\n ':future': function() {\n throw new Error(':future is not supported.');\n },\n // Non-standard, for compatibility purposes.\n ':contains': function(param) {\n return function(el) {\n var text = el.innerText || el.textContent || el.value || '';\n return text.indexOf(param) !== -1;\n };\n },\n ':has': function(param) {\n return function(el) {\n return find(param, el).length > 0;\n };\n }\n // Potentially add more pseudo selectors for\n // compatibility with sizzle and most other\n // selector engines (?).\n};\n\n/**\n * Attribute Operators\n */\n\nvar operators = {\n '-': function() {\n return true;\n },\n '=': function(attr, val) {\n return attr === val;\n },\n '*=': function(attr, val) {\n return attr.indexOf(val) !== -1;\n },\n '~=': function(attr, val) {\n var i\n , s\n , f\n , l;\n\n for (s = 0; true; s = i + 1) {\n i = attr.indexOf(val, s);\n if (i === -1) return false;\n f = attr[i - 1];\n l = attr[i + val.length];\n if ((!f || f === ' ') && (!l || l === ' ')) return true;\n }\n },\n '|=': function(attr, val) {\n var i = attr.indexOf(val)\n , l;\n\n if (i !== 0) return;\n l = attr[i + val.length];\n\n return l === '-' || !l;\n },\n '^=': function(attr, val) {\n return attr.indexOf(val) === 0;\n },\n '$=': function(attr, val) {\n var i = attr.lastIndexOf(val);\n return i !== -1 && i + val.length === attr.length;\n },\n // non-standard\n '!=': function(attr, val) {\n return attr !== val;\n }\n};\n\n/**\n * Combinator Logic\n */\n\nvar combinators = {\n ' ': function(test) {\n return function(el) {\n /*jshint -W084 */\n while (el = el.parentNode) {\n if (test(el)) return el;\n }\n };\n },\n '>': function(test) {\n return function(el) {\n /*jshint -W084 */\n if (el = el.parentNode) {\n return test(el) && el;\n }\n };\n },\n '+': function(test) {\n return function(el) {\n /*jshint -W084 */\n if (el = prev(el)) {\n return test(el) && el;\n }\n };\n },\n '~': function(test) {\n return function(el) {\n /*jshint -W084 */\n while (el = prev(el)) {\n if (test(el)) return el;\n }\n };\n },\n 'noop': function(test) {\n return function(el) {\n return test(el) && el;\n };\n },\n 'ref': function(test, name) {\n var node;\n\n function ref(el) {\n var doc = el.ownerDocument\n , nodes = doc.getElementsByTagName('*')\n , i = nodes.length;\n\n while (i--) {\n node = nodes[i];\n if (ref.test(el)) {\n node = null;\n return true;\n }\n }\n\n node = null;\n }\n\n ref.combinator = function(el) {\n if (!node || !node.getAttribute) return;\n\n var attr = node.getAttribute(name) || '';\n if (attr[0] === '#') attr = attr.substring(1);\n\n if (attr === el.id && test(node)) {\n return node;\n }\n };\n\n return ref;\n }\n};\n\n/**\n * Grammar\n */\n\nvar rules = {\n escape: /\\\\(?:[^0-9A-Fa-f\\r\\n]|[0-9A-Fa-f]{1,6}[\\r\\n\\t ]?)/g,\n str_escape: /(escape)|\\\\(\\n|\\r\\n?|\\f)/g,\n nonascii: /[\\u00A0-\\uFFFF]/,\n cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/,\n qname: /^ *(cssid|\\*)/,\n simple: /^(?:([.#]cssid)|pseudo|attr)/,\n ref: /^ *\\/(cssid)\\/ */,\n combinator: /^(?: +([^ \\w*.#\\\\]) +|( )+|([^ \\w*.#\\\\]))(?! *$)/,\n attr: /^\\[(cssid)(?:([^\\w]?=)(inside))?\\]/,\n pseudo: /^(:cssid)(?:\\((inside)\\))?/,\n inside: /(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|<[^\"'>]*>|\\\\[\"'>]|[^\"'>])*/,\n ident: /^(cssid)$/\n};\n\nrules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii);\nrules.cssid = replace(rules.cssid, 'escape', rules.escape);\nrules.qname = replace(rules.qname, 'cssid', rules.cssid);\nrules.simple = replace(rules.simple, 'cssid', rules.cssid);\nrules.ref = replace(rules.ref, 'cssid', rules.cssid);\nrules.attr = replace(rules.attr, 'cssid', rules.cssid);\nrules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid);\nrules.inside = replace(rules.inside, '[^\"\\'>]*', rules.inside);\nrules.attr = replace(rules.attr, 'inside', makeInside('\\\\[', '\\\\]'));\nrules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\\\(', '\\\\)'));\nrules.simple = replace(rules.simple, 'pseudo', rules.pseudo);\nrules.simple = replace(rules.simple, 'attr', rules.attr);\nrules.ident = replace(rules.ident, 'cssid', rules.cssid);\nrules.str_escape = replace(rules.str_escape, 'escape', rules.escape);\n\n/**\n * Compiling\n */\n\nvar compile = function(sel_) {\n var sel = sel_.replace(/^\\s+|\\s+$/g, '')\n , test\n , filter = []\n , buff = []\n , subject\n , qname\n , cap\n , op\n , ref;\n\n /*jshint -W084 */\n while (sel) {\n if (cap = rules.qname.exec(sel)) {\n sel = sel.substring(cap[0].length);\n qname = decodeid(cap[1]);\n buff.push(tok(qname, true));\n } else if (cap = rules.simple.exec(sel)) {\n sel = sel.substring(cap[0].length);\n qname = '*';\n buff.push(tok(qname, true));\n buff.push(tok(cap));\n } else {\n throw new SyntaxError('Invalid selector.');\n }\n\n while (cap = rules.simple.exec(sel)) {\n sel = sel.substring(cap[0].length);\n buff.push(tok(cap));\n }\n\n if (sel[0] === '!') {\n sel = sel.substring(1);\n subject = makeSubject();\n subject.qname = qname;\n buff.push(subject.simple);\n }\n\n if (cap = rules.ref.exec(sel)) {\n sel = sel.substring(cap[0].length);\n ref = combinators.ref(makeSimple(buff), decodeid(cap[1]));\n filter.push(ref.combinator);\n buff = [];\n continue;\n }\n\n if (cap = rules.combinator.exec(sel)) {\n sel = sel.substring(cap[0].length);\n op = cap[1] || cap[2] || cap[3];\n if (op === ',') {\n filter.push(combinators.noop(makeSimple(buff)));\n break;\n }\n } else {\n op = 'noop';\n }\n\n if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); }\n filter.push(combinators[op](makeSimple(buff)));\n buff = [];\n }\n\n test = makeTest(filter);\n test.qname = qname;\n test.sel = sel;\n\n if (subject) {\n subject.lname = test.qname;\n\n subject.test = test;\n subject.qname = subject.qname;\n subject.sel = test.sel;\n test = subject;\n }\n\n if (ref) {\n ref.test = test;\n ref.qname = test.qname;\n ref.sel = test.sel;\n test = ref;\n }\n\n return test;\n};\n\nvar tok = function(cap, qname) {\n // qname\n if (qname) {\n return cap === '*'\n ? selectors['*']\n : selectors.type(cap);\n }\n\n // class/id\n if (cap[1]) {\n return cap[1][0] === '.'\n\t // XXX unescape here? or in attr?\n ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false)\n : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false);\n }\n\n // pseudo-name\n // inside-pseudo\n if (cap[2]) {\n return cap[3]\n ? selectors[decodeid(cap[2])](unquote(cap[3]))\n : selectors[decodeid(cap[2])];\n }\n\n // attr name\n // attr op\n // attr value\n if (cap[4]) {\n var value = cap[6];\n var i = /[\"'\\s]\\s*I$/i.test(value);\n if (i) {\n value = value.replace(/\\s*I$/i, '');\n }\n return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i);\n }\n\n throw new SyntaxError('Unknown Selector.');\n};\n\nvar makeSimple = function(func) {\n var l = func.length\n , i;\n\n // Potentially make sure\n // `el` is truthy.\n if (l < 2) return func[0];\n\n return function(el) {\n if (!el) return;\n for (i = 0; i < l; i++) {\n if (!func[i](el)) return;\n }\n return true;\n };\n};\n\nvar makeTest = function(func) {\n if (func.length < 2) {\n return function(el) {\n return !!func[0](el);\n };\n }\n return function(el) {\n var i = func.length;\n while (i--) {\n if (!(el = func[i](el))) return;\n }\n return true;\n };\n};\n\nvar makeSubject = function() {\n var target;\n\n function subject(el) {\n var node = el.ownerDocument\n , scope = node.getElementsByTagName(subject.lname)\n , i = scope.length;\n\n while (i--) {\n if (subject.test(scope[i]) && target === el) {\n target = null;\n return true;\n }\n }\n\n target = null;\n }\n\n subject.simple = function(el) {\n target = el;\n return true;\n };\n\n return subject;\n};\n\nvar compileGroup = function(sel) {\n var test = compile(sel)\n , tests = [ test ];\n\n while (test.sel) {\n test = compile(test.sel);\n tests.push(test);\n }\n\n if (tests.length < 2) return test;\n\n return function(el) {\n var l = tests.length\n , i = 0;\n\n for (; i < l; i++) {\n if (tests[i](el)) return true;\n }\n };\n};\n\n/**\n * Selection\n */\n\nvar find = function(sel, node) {\n var results = []\n , test = compile(sel)\n , scope = node.getElementsByTagName(test.qname)\n , i = 0\n , el;\n\n /*jshint -W084 */\n while (el = scope[i++]) {\n if (test(el)) results.push(el);\n }\n\n if (test.sel) {\n while (test.sel) {\n test = compile(test.sel);\n scope = node.getElementsByTagName(test.qname);\n i = 0;\n /*jshint -W084 */\n while (el = scope[i++]) {\n if (test(el) && indexOf.call(results, el) === -1) {\n results.push(el);\n }\n }\n }\n results.sort(order);\n }\n\n return results;\n};\n\n/**\n * Expose\n */\n\nmodule.exports = exports = function(sel, context) {\n /* when context isn't a DocumentFragment and the selector is simple: */\n var id, r;\n if (context.nodeType !== 11 && sel.indexOf(' ') === -1) {\n if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) {\n if (context.doc._hasMultipleElementsWithId) {\n id = sel.substring(1);\n if (!context.doc._hasMultipleElementsWithId(id)) {\n r = context.doc.getElementById(id);\n return r ? [r] : [];\n }\n }\n }\n if (sel[0] === '.' && /^\\.\\w+$/.test(sel)) {\n return context.getElementsByClassName(sel.substring(1));\n }\n if (/^\\w+$/.test(sel)) {\n return context.getElementsByTagName(sel);\n }\n }\n /* do things the hard/slow way */\n return find(sel, context);\n};\n\nexports.selectors = selectors;\nexports.operators = operators;\nexports.combinators = combinators;\n\nexports.matches = function(el, sel) {\n var test = { sel: sel };\n do {\n test = compile(test.sel);\n if (test(el)) { return true; }\n } while (test.sel);\n return false;\n};\n","\"use strict\";\n\nvar Node = require('./Node');\nvar LinkedList = require('./LinkedList');\n\nvar createDocumentFragmentFromArguments = function(document, args) {\n var docFrag = document.createDocumentFragment();\n\n for (var i=0; iAttr map\n this._attrsByLName = Object.create(null); // The ns|lname->Attr map\n this._attrKeys = []; // attr index -> ns|lname\n}\n\nfunction recursiveGetText(node, a) {\n if (node.nodeType === Node.TEXT_NODE) {\n a.push(node._data);\n }\n else {\n for(var i = 0, n = node.childNodes.length; i < n; i++)\n recursiveGetText(node.childNodes[i], a);\n }\n}\n\nElement.prototype = Object.create(ContainerNode.prototype, {\n isHTML: { get: function isHTML() {\n return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML;\n }},\n tagName: { get: function tagName() {\n if (this._tagName === undefined) {\n var tn;\n if (this.prefix === null) {\n tn = this.localName;\n } else {\n tn = this.prefix + ':' + this.localName;\n }\n if (this.isHTML) {\n var up = uppercaseCache[tn];\n if (!up) {\n // Converting to uppercase can be slow, so cache the conversion.\n uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn);\n }\n tn = up;\n }\n this._tagName = tn;\n }\n return this._tagName;\n }},\n nodeName: { get: function() { return this.tagName; }},\n nodeValue: {\n get: function() {\n return null;\n },\n set: function() {}\n },\n textContent: {\n get: function() {\n var strings = [];\n recursiveGetText(this, strings);\n return strings.join('');\n },\n set: function(newtext) {\n this.removeChildren();\n if (newtext !== null && newtext !== undefined && newtext !== '') {\n this._appendChild(this.ownerDocument.createTextNode(newtext));\n }\n }\n },\n innerText: {\n get: function() {\n var strings = [];\n recursiveGetText(this, strings);\n // Strip and collapse whitespace\n // This doesn't 100% match the browser behavior,\n // but should cover most of the cases. This is also similar to\n // how Angular's renderer used to work: the `textContent` and `innerText`\n // were almost equivalent from the renderer perspective.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\n return strings.join('').replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n },\n set: function(newtext) {\n this.removeChildren();\n if (newtext !== null && newtext !== undefined && newtext !== '') {\n this._appendChild(this.ownerDocument.createTextNode(newtext));\n }\n }\n },\n innerHTML: {\n get: function() {\n return this.serialize();\n },\n set: utils.nyi\n },\n outerHTML: {\n get: function() {\n // \"the attribute must return the result of running the HTML fragment\n // serialization algorithm on a fictional node whose only child is\n // the context object\"\n //\n // The serialization logic is intentionally implemented in a separate\n // `NodeUtils` helper instead of the more obvious choice of a private\n // `_serializeOne()` method on the `Node.prototype` in order to avoid\n // the megamorphic `this._serializeOne` property access, which reduces\n // performance unnecessarily. If you need specialized behavior for a\n // certain subclass, you'll need to implement that in `NodeUtils`.\n // See https://github.com/fgnass/domino/pull/142 for more information.\n return NodeUtils.serializeOne(this, { nodeType: 0 });\n },\n set: function(v) {\n var document = this.ownerDocument;\n var parent = this.parentNode;\n if (parent === null) { return; }\n if (parent.nodeType === Node.DOCUMENT_NODE) {\n utils.NoModificationAllowedError();\n }\n if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n parent = parent.ownerDocument.createElement(\"body\");\n }\n var parser = document.implementation.mozHTMLParser(\n document._address,\n parent\n );\n parser.parse(v===null?'':String(v), true);\n this.replaceWith(parser._asDocumentFragment());\n },\n },\n\n _insertAdjacent: { value: function _insertAdjacent(position, node) {\n var first = false;\n switch(position) {\n case 'beforebegin':\n first = true;\n /* falls through */\n case 'afterend':\n var parent = this.parentNode;\n if (parent === null) { return null; }\n return parent.insertBefore(node, first ? this : this.nextSibling);\n case 'afterbegin':\n first = true;\n /* falls through */\n case 'beforeend':\n return this.insertBefore(node, first ? this.firstChild : null);\n default:\n return utils.SyntaxError();\n }\n }},\n\n insertAdjacentElement: { value: function insertAdjacentElement(position, element) {\n if (element.nodeType !== Node.ELEMENT_NODE) {\n throw new TypeError('not an element');\n }\n position = utils.toASCIILowerCase(String(position));\n return this._insertAdjacent(position, element);\n }},\n\n insertAdjacentText: { value: function insertAdjacentText(position, data) {\n var textNode = this.ownerDocument.createTextNode(data);\n position = utils.toASCIILowerCase(String(position));\n this._insertAdjacent(position, textNode);\n // \"This method returns nothing because it existed before we had a chance\n // to design it.\"\n }},\n\n insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) {\n position = utils.toASCIILowerCase(String(position));\n text = String(text);\n var context;\n switch(position) {\n case 'beforebegin':\n case 'afterend':\n context = this.parentNode;\n if (context === null || context.nodeType === Node.DOCUMENT_NODE) {\n utils.NoModificationAllowedError();\n }\n break;\n case 'afterbegin':\n case 'beforeend':\n context = this;\n break;\n default:\n utils.SyntaxError();\n }\n if ( (!(context instanceof Element)) || (\n context.ownerDocument.isHTML &&\n context.localName === 'html' &&\n context.namespaceURI === NAMESPACE.HTML\n ) ) {\n context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body');\n }\n var parser = this.ownerDocument.implementation.mozHTMLParser(\n this.ownerDocument._address, context\n );\n parser.parse(text, true);\n this._insertAdjacent(position, parser._asDocumentFragment());\n }},\n\n children: { get: function() {\n if (!this._children) {\n this._children = new ChildrenCollection(this);\n }\n return this._children;\n }},\n\n attributes: { get: function() {\n if (!this._attributes) {\n this._attributes = new AttributesArray(this);\n }\n return this._attributes;\n }},\n\n\n firstElementChild: { get: function() {\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n }\n return null;\n }},\n\n lastElementChild: { get: function() {\n for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) {\n if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n }\n return null;\n }},\n\n childElementCount: { get: function() {\n return this.children.length;\n }},\n\n\n // Return the next element, in source order, after this one or\n // null if there are no more. If root element is specified,\n // then don't traverse beyond its subtree.\n //\n // This is not a DOM method, but is convenient for\n // lazy traversals of the tree.\n nextElement: { value: function(root) {\n if (!root) root = this.ownerDocument.documentElement;\n var next = this.firstElementChild;\n if (!next) {\n // don't use sibling if we're at root\n if (this===root) return null;\n next = this.nextElementSibling;\n }\n if (next) return next;\n\n // If we can't go down or across, then we have to go up\n // and across to the parent sibling or another ancestor's\n // sibling. Be careful, though: if we reach the root\n // element, or if we reach the documentElement, then\n // the traversal ends.\n for(var parent = this.parentElement;\n parent && parent !== root;\n parent = parent.parentElement) {\n\n next = parent.nextElementSibling;\n if (next) return next;\n }\n\n return null;\n }},\n\n // XXX:\n // Tests are currently failing for this function.\n // Awaiting resolution of:\n // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html\n getElementsByTagName: { value: function getElementsByTagName(lname) {\n var filter;\n if (!lname) return new NodeList();\n if (lname === '*')\n filter = function() { return true; };\n else if (this.isHTML)\n filter = htmlLocalNameElementFilter(lname);\n else\n filter = localNameElementFilter(lname);\n\n return new FilteredElementList(this, filter);\n }},\n\n getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){\n var filter;\n if (ns === '*' && lname === '*')\n filter = function() { return true; };\n else if (ns === '*')\n filter = localNameElementFilter(lname);\n else if (lname === '*')\n filter = namespaceElementFilter(ns);\n else\n filter = namespaceLocalNameElementFilter(ns, lname);\n\n return new FilteredElementList(this, filter);\n }},\n\n getElementsByClassName: { value: function getElementsByClassName(names){\n names = String(names).trim();\n if (names === '') {\n var result = new NodeList(); // Empty node list\n return result;\n }\n names = names.split(/[ \\t\\r\\n\\f]+/); // Split on ASCII whitespace\n return new FilteredElementList(this, classNamesElementFilter(names));\n }},\n\n getElementsByName: { value: function getElementsByName(name) {\n return new FilteredElementList(this, elementNameFilter(String(name)));\n }},\n\n // Utility methods used by the public API methods above\n clone: { value: function clone() {\n var e;\n\n // XXX:\n // Modify this to use the constructor directly or\n // avoid error checking in some other way. In case we try\n // to clone an invalid node that the parser inserted.\n //\n if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) {\n e = this.ownerDocument.createElementNS(\n this.namespaceURI, (this.prefix !== null) ?\n (this.prefix + ':' + this.localName) : this.localName\n );\n } else {\n e = this.ownerDocument.createElement(this.localName);\n }\n\n for(var i = 0, n = this._attrKeys.length; i < n; i++) {\n var lname = this._attrKeys[i];\n var a = this._attrsByLName[lname];\n var b = a.cloneNode();\n b._setOwnerElement(e);\n e._attrsByLName[lname] = b;\n e._addQName(b);\n }\n e._attrKeys = this._attrKeys.concat();\n\n return e;\n }},\n\n isEqual: { value: function isEqual(that) {\n if (this.localName !== that.localName ||\n this.namespaceURI !== that.namespaceURI ||\n this.prefix !== that.prefix ||\n this._numattrs !== that._numattrs)\n return false;\n\n // Compare the sets of attributes, ignoring order\n // and ignoring attribute prefixes.\n for(var i = 0, n = this._numattrs; i < n; i++) {\n var a = this._attr(i);\n if (!that.hasAttributeNS(a.namespaceURI, a.localName))\n return false;\n if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value)\n return false;\n }\n\n return true;\n }},\n\n // This is the 'locate a namespace prefix' algorithm from the\n // DOM specification. It is used by Node.lookupPrefix()\n // (Be sure to compare DOM3 and DOM4 versions of spec.)\n _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) {\n if (\n this.namespaceURI &&\n this.namespaceURI === ns &&\n this.prefix !== null &&\n originalElement.lookupNamespaceURI(this.prefix) === ns\n ) {\n return this.prefix;\n }\n\n for(var i = 0, n = this._numattrs; i < n; i++) {\n var a = this._attr(i);\n if (\n a.prefix === 'xmlns' &&\n a.value === ns &&\n originalElement.lookupNamespaceURI(a.localName) === ns\n ) {\n return a.localName;\n }\n }\n\n var parent = this.parentElement;\n return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null;\n }},\n\n // This is the 'locate a namespace' algorithm for Element nodes\n // from the DOM Core spec. It is used by Node#lookupNamespaceURI()\n lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) {\n if (prefix === '' || prefix === undefined) { prefix = null; }\n if (this.namespaceURI !== null && this.prefix === prefix)\n return this.namespaceURI;\n\n for(var i = 0, n = this._numattrs; i < n; i++) {\n var a = this._attr(i);\n if (a.namespaceURI === NAMESPACE.XMLNS) {\n if (\n (a.prefix === 'xmlns' && a.localName === prefix) ||\n (prefix === null && a.prefix === null && a.localName === 'xmlns')\n ) {\n return a.value || null;\n }\n }\n }\n\n var parent = this.parentElement;\n return parent ? parent.lookupNamespaceURI(prefix) : null;\n }},\n\n //\n // Attribute handling methods and utilities\n //\n\n /*\n * Attributes in the DOM are tricky:\n *\n * - there are the 8 basic get/set/has/removeAttribute{NS} methods\n *\n * - but many HTML attributes are also 'reflected' through IDL\n * attributes which means that they can be queried and set through\n * regular properties of the element. There is just one attribute\n * value, but two ways to get and set it.\n *\n * - Different HTML element types have different sets of reflected\n attributes.\n *\n * - attributes can also be queried and set through the .attributes\n * property of an element. This property behaves like an array of\n * Attr objects. The value property of each Attr is writeable, so\n * this is a third way to read and write attributes.\n *\n * - for efficiency, we really want to store attributes in some kind\n * of name->attr map. But the attributes[] array is an array, not a\n * map, which is kind of unnatural.\n *\n * - When using namespaces and prefixes, and mixing the NS methods\n * with the non-NS methods, it is apparently actually possible for\n * an attributes[] array to have more than one attribute with the\n * same qualified name. And certain methods must operate on only\n * the first attribute with such a name. So for these methods, an\n * inefficient array-like data structure would be easier to\n * implement.\n *\n * - The attributes[] array is live, not a snapshot, so changes to the\n * attributes must be immediately visible through existing arrays.\n *\n * - When attributes are queried and set through IDL properties\n * (instead of the get/setAttributes() method or the attributes[]\n * array) they may be subject to type conversions, URL\n * normalization, etc., so some extra processing is required in that\n * case.\n *\n * - But access through IDL properties is probably the most common\n * case, so we'd like that to be as fast as possible.\n *\n * - We can't just store attribute values in their parsed idl form,\n * because setAttribute() has to return whatever string is passed to\n * getAttribute even if it is not a legal, parseable value. So\n * attribute values must be stored in unparsed string form.\n *\n * - We need to be able to send change notifications or mutation\n * events of some sort to the renderer whenever an attribute value\n * changes, regardless of the way in which it changes.\n *\n * - Some attributes, such as id and class affect other parts of the\n * DOM API, like getElementById and getElementsByClassName and so\n * for efficiency, we need to specially track changes to these\n * special attributes.\n *\n * - Some attributes like class have different names (className) when\n * reflected.\n *\n * - Attributes whose names begin with the string 'data-' are treated\n specially.\n *\n * - Reflected attributes that have a boolean type in IDL have special\n * behavior: setting them to false (in IDL) is the same as removing\n * them with removeAttribute()\n *\n * - numeric attributes (like HTMLElement.tabIndex) can have default\n * values that must be returned by the idl getter even if the\n * content attribute does not exist. (The default tabIndex value\n * actually varies based on the type of the element, so that is a\n * tricky one).\n *\n * See\n * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect\n * for rules on how attributes are reflected.\n *\n */\n\n getAttribute: { value: function getAttribute(qname) {\n var attr = this.getAttributeNode(qname);\n return attr ? attr.value : null;\n }},\n\n getAttributeNS: { value: function getAttributeNS(ns, lname) {\n var attr = this.getAttributeNodeNS(ns, lname);\n return attr ? attr.value : null;\n }},\n\n getAttributeNode: { value: function getAttributeNode(qname) {\n qname = String(qname);\n if (/[A-Z]/.test(qname) && this.isHTML)\n qname = utils.toASCIILowerCase(qname);\n var attr = this._attrsByQName[qname];\n if (!attr) return null;\n\n if (Array.isArray(attr)) // If there is more than one\n attr = attr[0]; // use the first\n\n return attr;\n }},\n\n getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) {\n ns = (ns === undefined || ns === null) ? '' : String(ns);\n lname = String(lname);\n var attr = this._attrsByLName[ns + '|' + lname];\n return attr ? attr : null;\n }},\n\n hasAttribute: { value: function hasAttribute(qname) {\n qname = String(qname);\n if (/[A-Z]/.test(qname) && this.isHTML)\n qname = utils.toASCIILowerCase(qname);\n return this._attrsByQName[qname] !== undefined;\n }},\n\n hasAttributeNS: { value: function hasAttributeNS(ns, lname) {\n ns = (ns === undefined || ns === null) ? '' : String(ns);\n lname = String(lname);\n var key = ns + '|' + lname;\n return this._attrsByLName[key] !== undefined;\n }},\n\n hasAttributes: { value: function hasAttributes() {\n return this._numattrs > 0;\n }},\n\n toggleAttribute: { value: function toggleAttribute(qname, force) {\n qname = String(qname);\n if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n if (/[A-Z]/.test(qname) && this.isHTML)\n qname = utils.toASCIILowerCase(qname);\n var a = this._attrsByQName[qname];\n if (a === undefined) {\n if (force === undefined || force === true) {\n this._setAttribute(qname, '');\n return true;\n }\n return false;\n } else {\n if (force === undefined || force === false) {\n this.removeAttribute(qname);\n return false;\n }\n return true;\n }\n }},\n\n // Set the attribute without error checking. The parser uses this.\n _setAttribute: { value: function _setAttribute(qname, value) {\n // XXX: the spec says that this next search should be done\n // on the local name, but I think that is an error.\n // email pending on www-dom about it.\n var attr = this._attrsByQName[qname];\n var isnew;\n if (!attr) {\n attr = this._newattr(qname);\n isnew = true;\n }\n else {\n if (Array.isArray(attr)) attr = attr[0];\n }\n\n // Now set the attribute value on the new or existing Attr object.\n // The Attr.value setter method handles mutation events, etc.\n attr.value = value;\n if (this._attributes) this._attributes[qname] = attr;\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\n }},\n\n // Check for errors, and then set the attribute\n setAttribute: { value: function setAttribute(qname, value) {\n qname = String(qname);\n if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n if (/[A-Z]/.test(qname) && this.isHTML)\n qname = utils.toASCIILowerCase(qname);\n this._setAttribute(qname, String(value));\n }},\n\n\n // The version with no error checking used by the parser\n _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) {\n var pos = qname.indexOf(':'), prefix, lname;\n if (pos < 0) {\n prefix = null;\n lname = qname;\n }\n else {\n prefix = qname.substring(0, pos);\n lname = qname.substring(pos+1);\n }\n\n if (ns === '' || ns === undefined) ns = null;\n var key = (ns === null ? '' : ns) + '|' + lname;\n\n var attr = this._attrsByLName[key];\n var isnew;\n if (!attr) {\n attr = new Attr(this, lname, prefix, ns);\n isnew = true;\n this._attrsByLName[key] = attr;\n if (this._attributes) {\n this._attributes[this._attrKeys.length] = attr;\n }\n this._attrKeys.push(key);\n\n // We also have to make the attr searchable by qname.\n // But we have to be careful because there may already\n // be an attr with this qname.\n this._addQName(attr);\n }\n else if (false /* changed in DOM 4 */) {\n // Calling setAttributeNS() can change the prefix of an\n // existing attribute in DOM 2/3.\n if (attr.prefix !== prefix) {\n // Unbind the old qname\n this._removeQName(attr);\n // Update the prefix\n attr.prefix = prefix;\n // Bind the new qname\n this._addQName(attr);\n }\n\n }\n attr.value = value; // Automatically sends mutation event\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\n }},\n\n // Do error checking then call _setAttributeNS\n setAttributeNS: { value: function setAttributeNS(ns, qname, value) {\n // Convert parameter types according to WebIDL\n ns = (ns === null || ns === undefined || ns === '') ? null : String(ns);\n qname = String(qname);\n if (!xml.isValidQName(qname)) utils.InvalidCharacterError();\n\n var pos = qname.indexOf(':');\n var prefix = (pos < 0) ? null : qname.substring(0, pos);\n\n if ((prefix !== null && ns === null) ||\n (prefix === 'xml' && ns !== NAMESPACE.XML) ||\n ((qname === 'xmlns' || prefix === 'xmlns') &&\n (ns !== NAMESPACE.XMLNS)) ||\n (ns === NAMESPACE.XMLNS &&\n !(qname === 'xmlns' || prefix === 'xmlns')))\n utils.NamespaceError();\n\n this._setAttributeNS(ns, qname, String(value));\n }},\n\n setAttributeNode: { value: function setAttributeNode(attr) {\n if (attr.ownerElement !== null && attr.ownerElement !== this) {\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n }\n var result = null;\n var oldAttrs = this._attrsByQName[attr.name];\n if (oldAttrs) {\n if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; }\n if (oldAttrs.some(function(a) { return a===attr; })) {\n return attr;\n } else if (attr.ownerElement !== null) {\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n }\n oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this);\n result = oldAttrs[0];\n }\n this.setAttributeNodeNS(attr);\n return result;\n }},\n\n setAttributeNodeNS: { value: function setAttributeNodeNS(attr) {\n if (attr.ownerElement !== null) {\n throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n }\n var ns = attr.namespaceURI;\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\n var oldAttr = this._attrsByLName[key];\n if (oldAttr) { this.removeAttributeNode(oldAttr); }\n attr._setOwnerElement(this);\n this._attrsByLName[key] = attr;\n if (this._attributes) {\n this._attributes[this._attrKeys.length] = attr;\n }\n this._attrKeys.push(key);\n this._addQName(attr);\n if (this._newattrhook) this._newattrhook(attr.name, attr.value);\n return oldAttr || null;\n }},\n\n removeAttribute: { value: function removeAttribute(qname) {\n qname = String(qname);\n if (/[A-Z]/.test(qname) && this.isHTML)\n qname = utils.toASCIILowerCase(qname);\n\n var attr = this._attrsByQName[qname];\n if (!attr) return;\n\n // If there is more than one match for this qname\n // so don't delete the qname mapping, just remove the first\n // element from it.\n if (Array.isArray(attr)) {\n if (attr.length > 2) {\n attr = attr.shift(); // remove it from the array\n }\n else {\n this._attrsByQName[qname] = attr[1];\n attr = attr[0];\n }\n }\n else {\n // only a single match, so remove the qname mapping\n this._attrsByQName[qname] = undefined;\n }\n\n var ns = attr.namespaceURI;\n // Now attr is the removed attribute. Figure out its\n // ns+lname key and remove it from the other mapping as well.\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\n this._attrsByLName[key] = undefined;\n\n var i = this._attrKeys.indexOf(key);\n if (this._attributes) {\n Array.prototype.splice.call(this._attributes, i, 1);\n this._attributes[qname] = undefined;\n }\n this._attrKeys.splice(i, 1);\n\n // Onchange handler for the attribute\n var onchange = attr.onchange;\n attr._setOwnerElement(null);\n if (onchange) {\n onchange.call(attr, this, attr.localName, attr.value, null);\n }\n // Mutation event\n if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n }},\n\n removeAttributeNS: { value: function removeAttributeNS(ns, lname) {\n ns = (ns === undefined || ns === null) ? '' : String(ns);\n lname = String(lname);\n var key = ns + '|' + lname;\n var attr = this._attrsByLName[key];\n if (!attr) return;\n\n this._attrsByLName[key] = undefined;\n\n var i = this._attrKeys.indexOf(key);\n if (this._attributes) {\n Array.prototype.splice.call(this._attributes, i, 1);\n }\n this._attrKeys.splice(i, 1);\n\n // Now find the same Attr object in the qname mapping and remove it\n // But be careful because there may be more than one match.\n this._removeQName(attr);\n\n // Onchange handler for the attribute\n var onchange = attr.onchange;\n attr._setOwnerElement(null);\n if (onchange) {\n onchange.call(attr, this, attr.localName, attr.value, null);\n }\n // Mutation event\n if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n }},\n\n removeAttributeNode: { value: function removeAttributeNode(attr) {\n var ns = attr.namespaceURI;\n var key = (ns === null ? '' : ns) + '|' + attr.localName;\n if (this._attrsByLName[key] !== attr) {\n utils.NotFoundError();\n }\n this.removeAttributeNS(ns, attr.localName);\n return attr;\n }},\n\n getAttributeNames: { value: function getAttributeNames() {\n var elt = this;\n return this._attrKeys.map(function(key) {\n return elt._attrsByLName[key].name;\n });\n }},\n\n // This 'raw' version of getAttribute is used by the getter functions\n // of reflected attributes. It skips some error checking and\n // namespace steps\n _getattr: { value: function _getattr(qname) {\n // Assume that qname is already lowercased, so don't do it here.\n // Also don't check whether attr is an array: a qname with no\n // prefix will never have two matching Attr objects (because\n // setAttributeNS doesn't allow a non-null namespace with a\n // null prefix.\n var attr = this._attrsByQName[qname];\n return attr ? attr.value : null;\n }},\n\n // The raw version of setAttribute for reflected idl attributes.\n _setattr: { value: function _setattr(qname, value) {\n var attr = this._attrsByQName[qname];\n var isnew;\n if (!attr) {\n attr = this._newattr(qname);\n isnew = true;\n }\n attr.value = String(value);\n if (this._attributes) this._attributes[qname] = attr;\n if (isnew && this._newattrhook) this._newattrhook(qname, value);\n }},\n\n // Create a new Attr object, insert it, and return it.\n // Used by setAttribute() and by set()\n _newattr: { value: function _newattr(qname) {\n var attr = new Attr(this, qname, null, null);\n var key = '|' + qname;\n this._attrsByQName[qname] = attr;\n this._attrsByLName[key] = attr;\n if (this._attributes) {\n this._attributes[this._attrKeys.length] = attr;\n }\n this._attrKeys.push(key);\n return attr;\n }},\n\n // Add a qname->Attr mapping to the _attrsByQName object, taking into\n // account that there may be more than one attr object with the\n // same qname\n _addQName: { value: function(attr) {\n var qname = attr.name;\n var existing = this._attrsByQName[qname];\n if (!existing) {\n this._attrsByQName[qname] = attr;\n }\n else if (Array.isArray(existing)) {\n existing.push(attr);\n }\n else {\n this._attrsByQName[qname] = [existing, attr];\n }\n if (this._attributes) this._attributes[qname] = attr;\n }},\n\n // Remove a qname->Attr mapping to the _attrsByQName object, taking into\n // account that there may be more than one attr object with the\n // same qname\n _removeQName: { value: function(attr) {\n var qname = attr.name;\n var target = this._attrsByQName[qname];\n\n if (Array.isArray(target)) {\n var idx = target.indexOf(attr);\n utils.assert(idx !== -1); // It must be here somewhere\n if (target.length === 2) {\n this._attrsByQName[qname] = target[1-idx];\n if (this._attributes) {\n this._attributes[qname] = this._attrsByQName[qname];\n }\n } else {\n target.splice(idx, 1);\n if (this._attributes && this._attributes[qname] === attr) {\n this._attributes[qname] = target[0];\n }\n }\n }\n else {\n utils.assert(target === attr); // If only one, it must match\n this._attrsByQName[qname] = undefined;\n if (this._attributes) {\n this._attributes[qname] = undefined;\n }\n }\n }},\n\n // Return the number of attributes\n _numattrs: { get: function() { return this._attrKeys.length; }},\n // Return the nth Attr object\n _attr: { value: function(n) {\n return this._attrsByLName[this._attrKeys[n]];\n }},\n\n // Define getters and setters for an 'id' property that reflects\n // the content attribute 'id'.\n id: attributes.property({name: 'id'}),\n\n // Define getters and setters for a 'className' property that reflects\n // the content attribute 'class'.\n className: attributes.property({name: 'class'}),\n\n classList: { get: function() {\n var self = this;\n if (this._classList) {\n return this._classList;\n }\n var dtlist = new DOMTokenList(\n function() {\n return self.className || \"\";\n },\n function(v) {\n self.className = v;\n }\n );\n this._classList = dtlist;\n return dtlist;\n }, set: function(v) { this.className = v; }},\n\n matches: { value: function(selector) {\n return select.matches(this, selector);\n }},\n\n closest: { value: function(selector) {\n var el = this;\n\tdo {\n\t if (el.matches && el.matches(selector)) { return el; }\n\t el = el.parentElement || el.parentNode;\n\t} while (el !== null && el.nodeType === Node.ELEMENT_NODE);\n\treturn null;\n }},\n\n querySelector: { value: function(selector) {\n return select(selector, this)[0];\n }},\n\n querySelectorAll: { value: function(selector) {\n var nodes = select(selector, this);\n return nodes.item ? nodes : new NodeList(nodes);\n }}\n\n});\n\nObject.defineProperties(Element.prototype, ChildNode);\nObject.defineProperties(Element.prototype, NonDocumentTypeChildNode);\n\n// Register special handling for the id attribute\nattributes.registerChangeHandler(Element, 'id',\n function(element, lname, oldval, newval) {\n if (element.rooted) {\n if (oldval) {\n element.ownerDocument.delId(oldval, element);\n }\n if (newval) {\n element.ownerDocument.addId(newval, element);\n }\n }\n }\n);\nattributes.registerChangeHandler(Element, 'class',\n function(element, lname, oldval, newval) {\n if (element._classList) { element._classList._update(); }\n }\n);\n\n// The Attr class represents a single attribute. The values in\n// _attrsByQName and _attrsByLName are instances of this class.\nfunction Attr(elt, lname, prefix, namespace, value) {\n // localName and namespace are constant for any attr object.\n // But value may change. And so can prefix, and so, therefore can name.\n this.localName = lname;\n this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix);\n this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace);\n this.data = value;\n // Set ownerElement last to ensure it is hooked up to onchange handler\n this._setOwnerElement(elt);\n}\n\n// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned.\nAttr.prototype = Object.create(Object.prototype, {\n ownerElement: {\n get: function() { return this._ownerElement; },\n },\n _setOwnerElement: { value: function _setOwnerElement(elt) {\n this._ownerElement = elt;\n if (this.prefix === null && this.namespaceURI === null && elt) {\n this.onchange = elt._attributeChangeHandlers[this.localName];\n } else {\n this.onchange = null;\n }\n }},\n\n name: { get: function() {\n return this.prefix ? this.prefix + ':' + this.localName : this.localName;\n }},\n\n specified: { get: function() {\n // Deprecated\n return true;\n }},\n\n value: {\n get: function() {\n return this.data;\n },\n set: function(value) {\n var oldval = this.data;\n value = (value === undefined) ? '' : value + '';\n if (value === oldval) return;\n\n this.data = value;\n\n // Run the onchange hook for the attribute\n // if there is one.\n if (this.ownerElement) {\n if (this.onchange)\n this.onchange(this.ownerElement,this.localName, oldval, value);\n\n // Generate a mutation event if the element is rooted\n if (this.ownerElement.rooted)\n this.ownerElement.ownerDocument.mutateAttr(this, oldval);\n }\n },\n },\n\n cloneNode: { value: function cloneNode(deep) {\n // Both this method and Document#createAttribute*() create unowned Attrs\n return new Attr(\n null, this.localName, this.prefix, this.namespaceURI, this.data\n );\n }},\n\n // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr)\n nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } },\n nodeName: { get: function() { return this.name; } },\n nodeValue: {\n get: function() { return this.value; },\n set: function(v) { this.value = v; },\n },\n textContent: {\n get: function() { return this.value; },\n set: function(v) {\n if (v === null || v === undefined) { v = ''; }\n this.value = v;\n },\n },\n innerText: {\n get: function() { return this.value; },\n set: function(v) {\n if (v === null || v === undefined) { v = ''; }\n this.value = v;\n },\n },\n});\n// Sneakily export this class for use by Document.createAttribute()\nElement._Attr = Attr;\n\n// The attributes property of an Element will be an instance of this class.\n// This class is really just a dummy, though. It only defines a length\n// property and an item() method. The AttrArrayProxy that\n// defines the public API just uses the Element object itself.\nfunction AttributesArray(elt) {\n NamedNodeMap.call(this, elt);\n for (var name in elt._attrsByQName) {\n this[name] = elt._attrsByQName[name];\n }\n for (var i = 0; i < elt._attrKeys.length; i++) {\n this[i] = elt._attrsByLName[elt._attrKeys[i]];\n }\n}\nAttributesArray.prototype = Object.create(NamedNodeMap.prototype, {\n length: { get: function() {\n return this.element._attrKeys.length;\n }, set: function() { /* ignore */ } },\n item: { value: function(n) {\n /* jshint bitwise: false */\n n = n >>> 0;\n if (n >= this.length) { return null; }\n return this.element._attrsByLName[this.element._attrKeys[n]];\n /* jshint bitwise: true */\n } },\n});\n\n// We can't make direct array access work (without Proxies, node >=6)\n// but we can make `Array.from(node.attributes)` and for-of loops work.\nif (globalThis.Symbol?.iterator) {\n AttributesArray.prototype[globalThis.Symbol.iterator] = function() {\n var i=0, n=this.length, self=this;\n return {\n next: function() {\n if (ielement map.\n // It is not part of the HTMLCollection API, but we need it in\n // src/HTMLCollectionProxy\n namedItems: { get: function() {\n this.updateCache();\n return this.childrenByName;\n } },\n\n updateCache: { value: function updateCache() {\n var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/;\n if (this.lastModTime !== this.element.lastModTime) {\n this.lastModTime = this.element.lastModTime;\n\n var n = this.childrenByNumber && this.childrenByNumber.length || 0;\n for(var i = 0; i < n; i++) {\n this[i] = undefined;\n }\n\n this.childrenByNumber = [];\n this.childrenByName = Object.create(null);\n\n for (var c = this.element.firstChild; c !== null; c = c.nextSibling) {\n if (c.nodeType === Node.ELEMENT_NODE) {\n\n this[this.childrenByNumber.length] = c;\n this.childrenByNumber.push(c);\n\n // XXX Are there any requirements about the namespace\n // of the id property?\n var id = c.getAttribute('id');\n\n // If there is an id that is not already in use...\n if (id && !this.childrenByName[id])\n this.childrenByName[id] = c;\n\n // For certain HTML elements we check the name attribute\n var name = c.getAttribute('name');\n if (name &&\n this.element.namespaceURI === NAMESPACE.HTML &&\n namedElts.test(this.element.localName) &&\n !this.childrenByName[name])\n this.childrenByName[id] = c;\n }\n }\n }\n } },\n});\n\n// These functions return predicates for filtering elements.\n// They're used by the Document and Element classes for methods like\n// getElementsByTagName and getElementsByClassName\n\nfunction localNameElementFilter(lname) {\n return function(e) { return e.localName === lname; };\n}\n\nfunction htmlLocalNameElementFilter(lname) {\n var lclname = utils.toASCIILowerCase(lname);\n if (lclname === lname)\n return localNameElementFilter(lname);\n\n return function(e) {\n return e.isHTML ? e.localName === lclname : e.localName === lname;\n };\n}\n\nfunction namespaceElementFilter(ns) {\n return function(e) { return e.namespaceURI === ns; };\n}\n\nfunction namespaceLocalNameElementFilter(ns, lname) {\n return function(e) {\n return e.namespaceURI === ns && e.localName === lname;\n };\n}\n\nfunction classNamesElementFilter(names) {\n return function(e) {\n return names.every(function(n) { return e.classList.contains(n); });\n };\n}\n\nfunction elementNameFilter(name) {\n return function(e) {\n // All the *HTML elements* in the document with the given name attribute\n if (e.namespaceURI !== NAMESPACE.HTML) { return false; }\n return e.getAttribute('name') === name;\n };\n}\n","\"use strict\";\nmodule.exports = Leaf;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar utils = require('./utils');\nvar HierarchyRequestError = utils.HierarchyRequestError;\nvar NotFoundError = utils.NotFoundError;\n\n// This class defines common functionality for node subtypes that\n// can never have children\nfunction Leaf() {\n Node.call(this);\n}\n\nLeaf.prototype = Object.create(Node.prototype, {\n hasChildNodes: { value: function() { return false; }},\n firstChild: { value: null },\n lastChild: { value: null },\n insertBefore: { value: function(node, child) {\n if (!node.nodeType) throw new TypeError('not a node');\n HierarchyRequestError();\n }},\n replaceChild: { value: function(node, child) {\n if (!node.nodeType) throw new TypeError('not a node');\n HierarchyRequestError();\n }},\n removeChild: { value: function(node) {\n if (!node.nodeType) throw new TypeError('not a node');\n NotFoundError();\n }},\n removeChildren: { value: function() { /* no op */ }},\n childNodes: { get: function() {\n if (!this._childNodes) this._childNodes = new NodeList();\n return this._childNodes;\n }}\n});\n","/* jshint bitwise: false */\n\"use strict\";\nmodule.exports = CharacterData;\n\nvar Leaf = require('./Leaf');\nvar utils = require('./utils');\nvar ChildNode = require('./ChildNode');\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\n\nfunction CharacterData() {\n Leaf.call(this);\n}\n\nCharacterData.prototype = Object.create(Leaf.prototype, {\n // DOMString substringData(unsigned long offset,\n // unsigned long count);\n // The substringData(offset, count) method must run these steps:\n //\n // If offset is greater than the context object's\n // length, throw an INDEX_SIZE_ERR exception and\n // terminate these steps.\n //\n // If offset+count is greater than the context\n // object's length, return a DOMString whose value is\n // the UTF-16 code units from the offsetth UTF-16 code\n // unit to the end of data.\n //\n // Return a DOMString whose value is the UTF-16 code\n // units from the offsetth UTF-16 code unit to the\n // offset+countth UTF-16 code unit in data.\n substringData: { value: function substringData(offset, count) {\n if (arguments.length < 2) { throw new TypeError(\"Not enough arguments\"); }\n // Convert arguments to WebIDL \"unsigned long\"\n offset = offset >>> 0;\n count = count >>> 0;\n if (offset > this.data.length || offset < 0 || count < 0) {\n utils.IndexSizeError();\n }\n return this.data.substring(offset, offset+count);\n }},\n\n // void appendData(DOMString data);\n // The appendData(data) method must append data to the context\n // object's data.\n appendData: { value: function appendData(data) {\n if (arguments.length < 1) { throw new TypeError(\"Not enough arguments\"); }\n this.data += String(data);\n }},\n\n // void insertData(unsigned long offset, DOMString data);\n // The insertData(offset, data) method must run these steps:\n //\n // If offset is greater than the context object's\n // length, throw an INDEX_SIZE_ERR exception and\n // terminate these steps.\n //\n // Insert data into the context object's data after\n // offset UTF-16 code units.\n //\n insertData: { value: function insertData(offset, data) {\n return this.replaceData(offset, 0, data);\n }},\n\n\n // void deleteData(unsigned long offset, unsigned long count);\n // The deleteData(offset, count) method must run these steps:\n //\n // If offset is greater than the context object's\n // length, throw an INDEX_SIZE_ERR exception and\n // terminate these steps.\n //\n // If offset+count is greater than the context\n // object's length var count be length-offset.\n //\n // Starting from offset UTF-16 code units remove count\n // UTF-16 code units from the context object's data.\n deleteData: { value: function deleteData(offset, count) {\n return this.replaceData(offset, count, '');\n }},\n\n\n // void replaceData(unsigned long offset, unsigned long count,\n // DOMString data);\n //\n // The replaceData(offset, count, data) method must act as\n // if the deleteData() method is invoked with offset and\n // count as arguments followed by the insertData() method\n // with offset and data as arguments and re-throw any\n // exceptions these methods might have thrown.\n replaceData: { value: function replaceData(offset, count, data) {\n var curtext = this.data, len = curtext.length;\n // Convert arguments to correct WebIDL type\n offset = offset >>> 0;\n count = count >>> 0;\n data = String(data);\n\n if (offset > len || offset < 0) utils.IndexSizeError();\n\n if (offset+count > len)\n count = len - offset;\n\n var prefix = curtext.substring(0, offset),\n suffix = curtext.substring(offset+count);\n\n this.data = prefix + data + suffix;\n }},\n\n // Utility method that Node.isEqualNode() calls to test Text and\n // Comment nodes for equality. It is okay to put it here, since\n // Node will have already verified that nodeType is equal\n isEqual: { value: function isEqual(n) {\n return this._data === n._data;\n }},\n\n length: { get: function() { return this.data.length; }}\n\n});\n\nObject.defineProperties(CharacterData.prototype, ChildNode);\nObject.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode);\n","\"use strict\";\nmodule.exports = Text;\n\nvar utils = require('./utils');\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Text(doc, data) {\n CharacterData.call(this);\n this.nodeType = Node.TEXT_NODE;\n this.ownerDocument = doc;\n this._data = data;\n this._index = undefined;\n}\n\nvar nodeValue = {\n get: function() { return this._data; },\n set: function(v) {\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n if (v === this._data) return;\n this._data = v;\n if (this.rooted)\n this.ownerDocument.mutateValue(this);\n if (this.parentNode &&\n this.parentNode._textchangehook)\n this.parentNode._textchangehook(this);\n }\n};\n\nText.prototype = Object.create(CharacterData.prototype, {\n nodeName: { value: \"#text\" },\n // These three attributes are all the same.\n // The data attribute has a [TreatNullAs=EmptyString] but we'll\n // implement that at the interface level\n nodeValue: nodeValue,\n textContent: nodeValue,\n innerText: nodeValue,\n data: {\n get: nodeValue.get,\n set: function(v) {\n nodeValue.set.call(this, v===null ? '' : String(v));\n },\n },\n\n splitText: { value: function splitText(offset) {\n if (offset > this._data.length || offset < 0) utils.IndexSizeError();\n\n var newdata = this._data.substring(offset),\n newnode = this.ownerDocument.createTextNode(newdata);\n this.data = this.data.substring(0, offset);\n\n var parent = this.parentNode;\n if (parent !== null)\n parent.insertBefore(newnode, this.nextSibling);\n\n return newnode;\n }},\n\n wholeText: { get: function wholeText() {\n var result = this.textContent;\n for (var next = this.nextSibling; next; next = next.nextSibling) {\n if (next.nodeType !== Node.TEXT_NODE) { break; }\n result += next.textContent;\n }\n return result;\n }},\n // Obsolete, removed from spec.\n replaceWholeText: { value: utils.nyi },\n\n // Utility methods\n clone: { value: function clone() {\n return new Text(this.ownerDocument, this._data);\n }},\n\n});\n","\"use strict\";\nmodule.exports = Comment;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Comment(doc, data) {\n CharacterData.call(this);\n this.nodeType = Node.COMMENT_NODE;\n this.ownerDocument = doc;\n this._data = data;\n}\n\nvar nodeValue = {\n get: function() { return this._data; },\n set: function(v) {\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n this._data = v;\n if (this.rooted)\n this.ownerDocument.mutateValue(this);\n }\n};\n\nComment.prototype = Object.create(CharacterData.prototype, {\n nodeName: { value: '#comment' },\n nodeValue: nodeValue,\n textContent: nodeValue,\n innerText: nodeValue,\n data: {\n get: nodeValue.get,\n set: function(v) {\n nodeValue.set.call(this, v===null ? '' : String(v));\n },\n },\n\n // Utility methods\n clone: { value: function clone() {\n return new Comment(this.ownerDocument, this._data);\n }},\n});\n","\"use strict\";\nmodule.exports = DocumentFragment;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar select = require('./select');\nvar utils = require('./utils');\n\nfunction DocumentFragment(doc) {\n ContainerNode.call(this);\n this.nodeType = Node.DOCUMENT_FRAGMENT_NODE;\n this.ownerDocument = doc;\n}\n\nDocumentFragment.prototype = Object.create(ContainerNode.prototype, {\n nodeName: { value: '#document-fragment' },\n nodeValue: {\n get: function() {\n return null;\n },\n set: function() {}\n },\n // Copy the text content getter/setter from Element\n textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'),\n\n // Copy the text content getter/setter from Element\n innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'),\n\n querySelector: { value: function(selector) {\n // implement in terms of querySelectorAll\n var nodes = this.querySelectorAll(selector);\n return nodes.length ? nodes[0] : null;\n }},\n querySelectorAll: { value: function(selector) {\n // create a context\n var context = Object.create(this);\n // add some methods to the context for zest implementation, without\n // adding them to the public DocumentFragment API\n context.isHTML = true; // in HTML namespace (case-insensitive match)\n context.getElementsByTagName = Element.prototype.getElementsByTagName;\n context.nextElement =\n Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild').\n get;\n // invoke zest\n var nodes = select(selector, context);\n return nodes.item ? nodes : new NodeList(nodes);\n }},\n\n // Utility methods\n clone: { value: function clone() {\n return new DocumentFragment(this.ownerDocument);\n }},\n isEqual: { value: function isEqual(n) {\n // Any two document fragments are shallowly equal.\n // Node.isEqualNode() will test their children for equality\n return true;\n }},\n\n // Non-standard, but useful (github issue #73)\n innerHTML: {\n get: function() { return this.serialize(); },\n set: utils.nyi\n },\n outerHTML: {\n get: function() { return this.serialize(); },\n set: utils.nyi\n },\n\n});\n","\"use strict\";\nmodule.exports = ProcessingInstruction;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction ProcessingInstruction(doc, target, data) {\n CharacterData.call(this);\n this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;\n this.ownerDocument = doc;\n this.target = target;\n this._data = data;\n}\n\nvar nodeValue = {\n get: function() { return this._data; },\n set: function(v) {\n if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n this._data = v;\n if (this.rooted) this.ownerDocument.mutateValue(this);\n }\n};\n\nProcessingInstruction.prototype = Object.create(CharacterData.prototype, {\n nodeName: { get: function() { return this.target; }},\n nodeValue: nodeValue,\n textContent: nodeValue,\n innerText: nodeValue,\n data: {\n get: nodeValue.get,\n set: function(v) {\n nodeValue.set.call(this, v===null ? '' : String(v));\n },\n },\n\n // Utility methods\n clone: { value: function clone() {\n return new ProcessingInstruction(this.ownerDocument, this.target, this._data);\n }},\n isEqual: { value: function isEqual(n) {\n return this.target === n.target && this._data === n._data;\n }}\n\n});\n","\"use strict\";\nvar NodeFilter = {\n // Constants for acceptNode()\n FILTER_ACCEPT: 1,\n FILTER_REJECT: 2,\n FILTER_SKIP: 3,\n\n // Constants for whatToShow\n SHOW_ALL: 0xFFFFFFFF,\n SHOW_ELEMENT: 0x1,\n SHOW_ATTRIBUTE: 0x2, // historical\n SHOW_TEXT: 0x4,\n SHOW_CDATA_SECTION: 0x8, // historical\n SHOW_ENTITY_REFERENCE: 0x10, // historical\n SHOW_ENTITY: 0x20, // historical\n SHOW_PROCESSING_INSTRUCTION: 0x40,\n SHOW_COMMENT: 0x80,\n SHOW_DOCUMENT: 0x100,\n SHOW_DOCUMENT_TYPE: 0x200,\n SHOW_DOCUMENT_FRAGMENT: 0x400,\n SHOW_NOTATION: 0x800 // historical\n};\n\nmodule.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter);\n","\"use strict\";\n/* exported NodeTraversal */\nvar NodeTraversal = module.exports = {\n nextSkippingChildren: nextSkippingChildren,\n nextAncestorSibling: nextAncestorSibling,\n next: next,\n previous: previous,\n deepLastChild: deepLastChild\n};\n\n/**\n * @based on WebKit's NodeTraversal::nextSkippingChildren\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109\n */\nfunction nextSkippingChildren(node, stayWithin) {\n if (node === stayWithin) {\n return null;\n }\n if (node.nextSibling !== null) {\n return node.nextSibling;\n }\n return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::nextAncestorSibling\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93\n */\nfunction nextAncestorSibling(node, stayWithin) {\n for (node = node.parentNode; node !== null; node = node.parentNode) {\n if (node === stayWithin) {\n return null;\n }\n if (node.nextSibling !== null) {\n return node.nextSibling;\n }\n }\n return null;\n}\n\n/**\n * @based on WebKit's NodeTraversal::next\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99\n */\nfunction next(node, stayWithin) {\n var n;\n n = node.firstChild;\n if (n !== null) {\n return n;\n }\n if (node === stayWithin) {\n return null;\n }\n n = node.nextSibling;\n if (n !== null) {\n return n;\n }\n return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::deepLastChild\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116\n */\nfunction deepLastChild(node) {\n while (node.lastChild) {\n node = node.lastChild;\n }\n return node;\n}\n\n/**\n * @based on WebKit's NodeTraversal::previous\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121\n */\nfunction previous(node, stayWithin) {\n var p;\n p = node.previousSibling;\n if (p !== null) {\n return deepLastChild(p);\n }\n p = node.parentNode;\n if (p === stayWithin) {\n return null;\n }\n return p;\n}\n","\"use strict\";\nmodule.exports = TreeWalker;\n\nvar Node = require('./Node');\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\nvar mapChild = {\n first: 'firstChild',\n last: 'lastChild',\n next: 'firstChild',\n previous: 'lastChild'\n};\n\nvar mapSibling = {\n first: 'nextSibling',\n last: 'previousSibling',\n next: 'nextSibling',\n previous: 'previousSibling'\n};\n\n/* Private methods and helpers */\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-children\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {string} type One of 'first' or 'last'.\n * @return {Node|null}\n */\nfunction traverseChildren(tw, type) {\n var child, node, parent, result, sibling;\n node = tw._currentNode[mapChild[type]];\n while (node !== null) {\n result = tw._internalFilter(node);\n if (result === NodeFilter.FILTER_ACCEPT) {\n tw._currentNode = node;\n return node;\n }\n if (result === NodeFilter.FILTER_SKIP) {\n child = node[mapChild[type]];\n if (child !== null) {\n node = child;\n continue;\n }\n }\n while (node !== null) {\n sibling = node[mapSibling[type]];\n if (sibling !== null) {\n node = sibling;\n break;\n }\n parent = node.parentNode;\n if (parent === null || parent === tw.root || parent === tw._currentNode) {\n return null;\n } else {\n node = parent;\n }\n }\n }\n return null;\n}\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {TreeWalker} type One of 'next' or 'previous'.\n * @return {Node|nul}\n */\nfunction traverseSiblings(tw, type) {\n var node, result, sibling;\n node = tw._currentNode;\n if (node === tw.root) {\n return null;\n }\n while (true) {\n sibling = node[mapSibling[type]];\n while (sibling !== null) {\n node = sibling;\n result = tw._internalFilter(node);\n if (result === NodeFilter.FILTER_ACCEPT) {\n tw._currentNode = node;\n return node;\n }\n sibling = node[mapChild[type]];\n if (result === NodeFilter.FILTER_REJECT || sibling === null) {\n sibling = node[mapSibling[type]];\n }\n }\n node = node.parentNode;\n if (node === null || node === tw.root) {\n return null;\n }\n if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n return null;\n }\n }\n}\n\n\n/* Public API */\n\n/**\n * Latest version: https://dom.spec.whatwg.org/#treewalker\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction TreeWalker(root, whatToShow, filter) {\n if (!root || !root.nodeType) {\n utils.NotSupportedError();\n }\n\n // Read-only properties\n this._root = root;\n this._whatToShow = Number(whatToShow) || 0;\n this._filter = filter || null;\n this._active = false;\n // Read-write property\n this._currentNode = root;\n}\n\nObject.defineProperties(TreeWalker.prototype, {\n root: { get: function() { return this._root; } },\n whatToShow: { get: function() { return this._whatToShow; } },\n filter: { get: function() { return this._filter; } },\n\n currentNode: {\n get: function currentNode() {\n return this._currentNode;\n },\n set: function setCurrentNode(v) {\n if (!(v instanceof Node)) {\n throw new TypeError(\"Not a Node\"); // `null` is also not a node\n }\n this._currentNode = v;\n },\n },\n\n /**\n * @method\n * @param {Node} node\n * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n */\n _internalFilter: { value: function _internalFilter(node) {\n /* jshint bitwise: false */\n var result, filter;\n if (this._active) {\n utils.InvalidStateError();\n }\n\n // Maps nodeType to whatToShow\n if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n return NodeFilter.FILTER_SKIP;\n }\n\n filter = this._filter;\n if (filter === null) {\n result = NodeFilter.FILTER_ACCEPT;\n } else {\n this._active = true;\n try {\n if (typeof filter === 'function') {\n result = filter(node);\n } else {\n result = filter.acceptNode(node);\n }\n } finally {\n this._active = false;\n }\n }\n\n // Note that coercing to a number means that\n // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n // `false` becomes `0` (neither accept, reject, or skip)\n return (+result);\n }},\n\n /**\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode\n * @based on WebKit's TreeWalker::parentNode\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50\n * @method\n * @return {Node|null}\n */\n parentNode: { value: function parentNode() {\n var node = this._currentNode;\n while (node !== this.root) {\n node = node.parentNode;\n if (node === null) {\n return null;\n }\n if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n this._currentNode = node;\n return node;\n }\n }\n return null;\n }},\n\n /**\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild\n * @method\n * @return {Node|null}\n */\n firstChild: { value: function firstChild() {\n return traverseChildren(this, 'first');\n }},\n\n /**\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild\n * @method\n * @return {Node|null}\n */\n lastChild: { value: function lastChild() {\n return traverseChildren(this, 'last');\n }},\n\n /**\n * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling\n * @method\n * @return {Node|null}\n */\n previousSibling: { value: function previousSibling() {\n return traverseSiblings(this, 'previous');\n }},\n\n /**\n * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling\n * @method\n * @return {Node|null}\n */\n nextSibling: { value: function nextSibling() {\n return traverseSiblings(this, 'next');\n }},\n\n /**\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode\n * @based on WebKit's TreeWalker::previousNode\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181\n * @method\n * @return {Node|null}\n */\n previousNode: { value: function previousNode() {\n var node, result, previousSibling, lastChild;\n node = this._currentNode;\n while (node !== this._root) {\n for (previousSibling = node.previousSibling;\n previousSibling;\n previousSibling = node.previousSibling) {\n node = previousSibling;\n result = this._internalFilter(node);\n if (result === NodeFilter.FILTER_REJECT) {\n continue;\n }\n for (lastChild = node.lastChild;\n lastChild;\n lastChild = node.lastChild) {\n node = lastChild;\n result = this._internalFilter(node);\n if (result === NodeFilter.FILTER_REJECT) {\n break;\n }\n }\n if (result === NodeFilter.FILTER_ACCEPT) {\n this._currentNode = node;\n return node;\n }\n }\n if (node === this.root || node.parentNode === null) {\n return null;\n }\n node = node.parentNode;\n if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n this._currentNode = node;\n return node;\n }\n }\n return null;\n }},\n\n /**\n * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode\n * @based on WebKit's TreeWalker::nextNode\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228\n * @method\n * @return {Node|null}\n */\n nextNode: { value: function nextNode() {\n var node, result, firstChild, nextSibling;\n node = this._currentNode;\n result = NodeFilter.FILTER_ACCEPT;\n\n CHILDREN:\n while (true) {\n for (firstChild = node.firstChild;\n firstChild;\n firstChild = node.firstChild) {\n node = firstChild;\n result = this._internalFilter(node);\n if (result === NodeFilter.FILTER_ACCEPT) {\n this._currentNode = node;\n return node;\n } else if (result === NodeFilter.FILTER_REJECT) {\n break;\n }\n }\n for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root);\n nextSibling;\n nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) {\n node = nextSibling;\n result = this._internalFilter(node);\n if (result === NodeFilter.FILTER_ACCEPT) {\n this._currentNode = node;\n return node;\n } else if (result === NodeFilter.FILTER_SKIP) {\n continue CHILDREN;\n }\n }\n return null;\n }\n }},\n\n /** For compatibility with web-platform-tests. */\n toString: { value: function toString() {\n return \"[object TreeWalker]\";\n }},\n});\n","\"use strict\";\nmodule.exports = NodeIterator;\n\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\n/* Private methods and helpers */\n\n/**\n * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51\n */\nfunction move(node, stayWithin, directionIsNext) {\n if (directionIsNext) {\n return NodeTraversal.next(node, stayWithin);\n } else {\n if (node === stayWithin) {\n return null;\n }\n return NodeTraversal.previous(node, null);\n }\n}\n\nfunction isInclusiveAncestor(node, possibleChild) {\n for ( ; possibleChild; possibleChild = possibleChild.parentNode) {\n if (node === possibleChild) { return true; }\n }\n return false;\n}\n\n/**\n * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse\n * @method\n * @access private\n * @param {NodeIterator} ni\n * @param {string} direction One of 'next' or 'previous'.\n * @return {Node|null}\n */\nfunction traverse(ni, directionIsNext) {\n var node, beforeNode;\n node = ni._referenceNode;\n beforeNode = ni._pointerBeforeReferenceNode;\n while (true) {\n if (beforeNode === directionIsNext) {\n beforeNode = !beforeNode;\n } else {\n node = move(node, ni._root, directionIsNext);\n if (node === null) {\n return null;\n }\n }\n var result = ni._internalFilter(node);\n if (result === NodeFilter.FILTER_ACCEPT) {\n break;\n }\n }\n ni._referenceNode = node;\n ni._pointerBeforeReferenceNode = beforeNode;\n return node;\n}\n\n/* Public API */\n\n/**\n * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator\n * Latest version: http://www.w3.org/TR/dom/#nodeiterator\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction NodeIterator(root, whatToShow, filter) {\n if (!root || !root.nodeType) {\n utils.NotSupportedError();\n }\n\n // Read-only properties\n this._root = root;\n this._referenceNode = root;\n this._pointerBeforeReferenceNode = true;\n this._whatToShow = Number(whatToShow) || 0;\n this._filter = filter || null;\n this._active = false;\n // Record active node iterators in the document, in order to perform\n // \"node iterator pre-removal steps\".\n root.doc._attachNodeIterator(this);\n}\n\nObject.defineProperties(NodeIterator.prototype, {\n root: { get: function root() {\n return this._root;\n } },\n referenceNode: { get: function referenceNode() {\n return this._referenceNode;\n } },\n pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() {\n return this._pointerBeforeReferenceNode;\n } },\n whatToShow: { get: function whatToShow() {\n return this._whatToShow;\n } },\n filter: { get: function filter() {\n return this._filter;\n } },\n\n /**\n * @method\n * @param {Node} node\n * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n */\n _internalFilter: { value: function _internalFilter(node) {\n /* jshint bitwise: false */\n var result, filter;\n if (this._active) {\n utils.InvalidStateError();\n }\n\n // Maps nodeType to whatToShow\n if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n return NodeFilter.FILTER_SKIP;\n }\n\n filter = this._filter;\n if (filter === null) {\n result = NodeFilter.FILTER_ACCEPT;\n } else {\n this._active = true;\n try {\n if (typeof filter === 'function') {\n result = filter(node);\n } else {\n result = filter.acceptNode(node);\n }\n } finally {\n this._active = false;\n }\n }\n\n // Note that coercing to a number means that\n // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n // `false` becomes `0` (neither accept, reject, or skip)\n return (+result);\n } },\n\n /**\n * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps\n * @method\n * @return void\n */\n _preremove: { value: function _preremove(toBeRemovedNode) {\n if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; }\n if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; }\n if (this._pointerBeforeReferenceNode) {\n var next = toBeRemovedNode;\n while (next.lastChild) {\n next = next.lastChild;\n }\n next = NodeTraversal.next(next, this.root);\n if (next) {\n this._referenceNode = next;\n return;\n }\n this._pointerBeforeReferenceNode = false;\n // fall through\n }\n if (toBeRemovedNode.previousSibling === null) {\n this._referenceNode = toBeRemovedNode.parentNode;\n } else {\n this._referenceNode = toBeRemovedNode.previousSibling;\n var lastChild;\n for (lastChild = this._referenceNode.lastChild;\n lastChild;\n lastChild = this._referenceNode.lastChild) {\n this._referenceNode = lastChild;\n }\n }\n } },\n\n /**\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode\n * @method\n * @return {Node|null}\n */\n nextNode: { value: function nextNode() {\n return traverse(this, true);\n } },\n\n /**\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode\n * @method\n * @return {Node|null}\n */\n previousNode: { value: function previousNode() {\n return traverse(this, false);\n } },\n\n /**\n * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach\n * @method\n * @return void\n */\n detach: { value: function detach() {\n /* \"The detach() method must do nothing.\n * Its functionality (disabling a NodeIterator object) was removed,\n * but the method itself is preserved for compatibility.\n */\n } },\n\n /** For compatibility with web-platform-tests. */\n toString: { value: function toString() {\n return \"[object NodeIterator]\";\n } },\n});\n","\"use strict\";\nmodule.exports = URL;\n\nfunction URL(url) {\n if (!url) return Object.create(URL.prototype);\n // Can't use String.trim() since it defines whitespace differently than HTML\n this.url = url.replace(/^[ \\t\\n\\r\\f]+|[ \\t\\n\\r\\f]+$/g, \"\");\n\n // See http://tools.ietf.org/html/rfc3986#appendix-B\n // and https://url.spec.whatwg.org/#parsing\n var match = URL.pattern.exec(this.url);\n if (match) {\n if (match[2]) this.scheme = match[2];\n if (match[4]) {\n // parse username/password\n var userinfo = match[4].match(URL.userinfoPattern);\n if (userinfo) {\n this.username = userinfo[1];\n this.password = userinfo[3];\n match[4] = match[4].substring(userinfo[0].length);\n }\n if (match[4].match(URL.portPattern)) {\n var pos = match[4].lastIndexOf(':');\n this.host = match[4].substring(0, pos);\n this.port = match[4].substring(pos+1);\n }\n else {\n this.host = match[4];\n }\n }\n if (match[5]) this.path = match[5];\n if (match[6]) this.query = match[7];\n if (match[8]) this.fragment = match[9];\n }\n}\n\nURL.pattern = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/;\nURL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/;\nURL.portPattern = /:\\d+$/;\nURL.authorityPattern = /^[^:\\/?#]+:\\/\\//;\nURL.hierarchyPattern = /^[^:\\/?#]+:\\//;\n\n// Return a percentEncoded version of s.\n// S should be a single-character string\n// XXX: needs to do utf-8 encoding?\nURL.percentEncode = function percentEncode(s) {\n var c = s.charCodeAt(0);\n if (c < 256) return \"%\" + c.toString(16);\n else throw Error(\"can't percent-encode codepoints > 255 yet\");\n};\n\nURL.prototype = {\n constructor: URL,\n\n // XXX: not sure if this is the precise definition of absolute\n isAbsolute: function() { return !!this.scheme; },\n isAuthorityBased: function() {\n return URL.authorityPattern.test(this.url);\n },\n isHierarchical: function() {\n return URL.hierarchyPattern.test(this.url);\n },\n\n toString: function() {\n var s = \"\";\n if (this.scheme !== undefined) s += this.scheme + \":\";\n if (this.isAbsolute()) {\n s += '//';\n if (this.username || this.password) {\n s += this.username || '';\n if (this.password) {\n s += ':' + this.password;\n }\n s += '@';\n }\n if (this.host) {\n s += this.host;\n }\n }\n if (this.port !== undefined) s += \":\" + this.port;\n if (this.path !== undefined) s += this.path;\n if (this.query !== undefined) s += \"?\" + this.query;\n if (this.fragment !== undefined) s += \"#\" + this.fragment;\n return s;\n },\n\n // See: http://tools.ietf.org/html/rfc3986#section-5.2\n // and https://url.spec.whatwg.org/#constructors\n resolve: function(relative) {\n var base = this; // The base url we're resolving against\n var r = new URL(relative); // The relative reference url to resolve\n var t = new URL(); // The absolute target url we will return\n\n if (r.scheme !== undefined) {\n t.scheme = r.scheme;\n t.username = r.username;\n t.password = r.password;\n t.host = r.host;\n t.port = r.port;\n t.path = remove_dot_segments(r.path);\n t.query = r.query;\n }\n else {\n t.scheme = base.scheme;\n if (r.host !== undefined) {\n t.username = r.username;\n t.password = r.password;\n t.host = r.host;\n t.port = r.port;\n t.path = remove_dot_segments(r.path);\n t.query = r.query;\n }\n else {\n t.username = base.username;\n t.password = base.password;\n t.host = base.host;\n t.port = base.port;\n if (!r.path) { // undefined or empty\n t.path = base.path;\n if (r.query !== undefined)\n t.query = r.query;\n else\n t.query = base.query;\n }\n else {\n if (r.path.charAt(0) === \"/\") {\n t.path = remove_dot_segments(r.path);\n }\n else {\n t.path = merge(base.path, r.path);\n t.path = remove_dot_segments(t.path);\n }\n t.query = r.query;\n }\n }\n }\n t.fragment = r.fragment;\n\n return t.toString();\n\n\n function merge(basepath, refpath) {\n if (base.host !== undefined && !base.path)\n return \"/\" + refpath;\n\n var lastslash = basepath.lastIndexOf(\"/\");\n if (lastslash === -1)\n return refpath;\n else\n return basepath.substring(0, lastslash+1) + refpath;\n }\n\n function remove_dot_segments(path) {\n if (!path) return path; // For \"\" or undefined\n\n var output = \"\";\n while(path.length > 0) {\n if (path === \".\" || path === \"..\") {\n path = \"\";\n break;\n }\n\n var twochars = path.substring(0,2);\n var threechars = path.substring(0,3);\n var fourchars = path.substring(0,4);\n if (threechars === \"../\") {\n path = path.substring(3);\n }\n else if (twochars === \"./\") {\n path = path.substring(2);\n }\n else if (threechars === \"/./\") {\n path = \"/\" + path.substring(3);\n }\n else if (twochars === \"/.\" && path.length === 2) {\n path = \"/\";\n }\n else if (fourchars === \"/../\" ||\n (threechars === \"/..\" && path.length === 3)) {\n path = \"/\" + path.substring(4);\n\n output = output.replace(/\\/?[^\\/]*$/, \"\");\n }\n else {\n var segment = path.match(/(\\/?([^\\/]*))/)[0];\n output += segment;\n path = path.substring(segment.length);\n }\n }\n\n return output;\n }\n },\n};\n","\"use strict\";\nmodule.exports = CustomEvent;\n\nvar Event = require('./Event');\n\nfunction CustomEvent(type, dictionary) {\n // Just use the superclass constructor to initialize\n Event.call(this, type, dictionary);\n}\nCustomEvent.prototype = Object.create(Event.prototype, {\n constructor: { value: CustomEvent }\n});\n","\"use strict\";\nmodule.exports = {\n Event: require('./Event'),\n UIEvent: require('./UIEvent'),\n MouseEvent: require('./MouseEvent'),\n CustomEvent: require('./CustomEvent')\n};\n","\"use strict\";\n/**\n * @license\n * Copyright Google LLC 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// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hyphenate = exports.parse = void 0;\n/**\n * Parses string representation of a style and converts it into object literal.\n *\n * @param value string representation of style as used in the `style` attribute in HTML.\n * Example: `color: red; height: auto`.\n * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',\n * 'auto']`\n */\nfunction parse(value) {\n // we use a string array here instead of a string map\n // because a string-map is not guaranteed to retain the\n // order of the entries whereas a string array can be\n // constructed in a [key, value, key, value] format.\n const styles = [];\n let i = 0;\n let parenDepth = 0;\n let quote = 0; /* Char.QuoteNone */\n let valueStart = 0;\n let propStart = 0;\n let currentProp = null;\n while (i < value.length) {\n const token = value.charCodeAt(i++);\n switch (token) {\n case 40 /* Char.OpenParen */:\n parenDepth++;\n break;\n case 41 /* Char.CloseParen */:\n parenDepth--;\n break;\n case 39 /* Char.QuoteSingle */:\n // valueStart needs to be there since prop values don't\n // have quotes in CSS\n if (quote === 0 /* Char.QuoteNone */) {\n quote = 39 /* Char.QuoteSingle */;\n } else if (\n quote === 39 /* Char.QuoteSingle */ &&\n value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n ) {\n quote = 0 /* Char.QuoteNone */;\n }\n break;\n case 34 /* Char.QuoteDouble */:\n // same logic as above\n if (quote === 0 /* Char.QuoteNone */) {\n quote = 34 /* Char.QuoteDouble */;\n } else if (\n quote === 34 /* Char.QuoteDouble */ &&\n value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n ) {\n quote = 0 /* Char.QuoteNone */;\n }\n break;\n case 58 /* Char.Colon */:\n if (\n !currentProp &&\n parenDepth === 0 &&\n quote === 0 /* Char.QuoteNone */\n ) {\n currentProp = hyphenate(value.substring(propStart, i - 1).trim());\n valueStart = i;\n }\n break;\n case 59 /* Char.Semicolon */:\n if (\n currentProp &&\n valueStart > 0 &&\n parenDepth === 0 &&\n quote === 0 /* Char.QuoteNone */\n ) {\n const styleVal = value.substring(valueStart, i - 1).trim();\n styles.push(currentProp, styleVal);\n propStart = i;\n valueStart = 0;\n currentProp = null;\n }\n break;\n }\n }\n if (currentProp && valueStart) {\n const styleVal = value.slice(valueStart).trim();\n styles.push(currentProp, styleVal);\n }\n return styles;\n}\nexports.parse = parse;\nfunction hyphenate(value) {\n return value\n .replace(/[a-z][A-Z]/g, (v) => {\n return v.charAt(0) + \"-\" + v.charAt(1);\n })\n .toLowerCase();\n}\nexports.hyphenate = hyphenate;\n","\"use strict\";\n\nconst { parse } = require('./style_parser');\n\nmodule.exports = function (elt) {\n const style = new CSSStyleDeclaration(elt)\n const handler = {\n get: function(target, property) {\n return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property));\n },\n has: function(target, key) {\n return true;\n },\n set: function(target, property, value) {\n if (property in target) {\n target[property] = value;\n } else {\n target.setProperty(dasherizeProperty(property), value ?? undefined);\n }\n\n return true;\n }\n };\n\n return new Proxy(style, handler);\n};\n\nfunction dasherizeProperty(property) {\n return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n\nfunction CSSStyleDeclaration(elt) {\n this._element = elt;\n}\n\nconst IMPORTANT_BANG = '!important';\n\n// Utility function for parsing style declarations\n// Pass in a string like \"margin-left: 5px; border-style: solid\"\n// and this function returns an object like\n// {\"margin-left\":\"5px\", \"border-style\":\"solid\"}\nfunction parseStyles(value) {\n const result = {\n property: {},\n priority: {},\n }\n\n if (!value) {\n return result;\n }\n\n const styleValues = parse(value);\n if (styleValues.length < 2) {\n return result;\n }\n\n for (let i = 0; i < styleValues.length; i += 2) {\n const name = styleValues[i];\n let value = styleValues[i+1];\n\n if (value.endsWith(IMPORTANT_BANG)) {\n result.priority[name] = 'important';\n value = value.slice(0, -IMPORTANT_BANG.length).trim();\n }\n\n result.property[name] = value;\n }\n\n return result;\n}\n\nvar NO_CHANGE = {}; // Private marker object\n\nCSSStyleDeclaration.prototype = Object.create(Object.prototype, {\n\n // Return the parsed form of the element's style attribute.\n // If the element's style attribute has never been parsed\n // or if it has changed since the last parse, then reparse it\n // Note that the styles don't get parsed until they're actually needed\n _parsed: { get: function() {\n if (!this._parsedStyles || this.cssText !== this._lastParsedText) {\n var text = this.cssText;\n this._parsedStyles = parseStyles(text);\n this._lastParsedText = text;\n delete this._names;\n }\n return this._parsedStyles;\n }},\n\n // Call this method any time the parsed representation of the\n // style changes. It converts the style properties to a string and\n // sets cssText and the element's style attribute\n _serialize: { value: function() {\n var styles = this._parsed;\n var s = \"\";\n\n for(var name in styles.property) {\n if (s) s += \" \";\n s += name + \": \" + styles.property[name];\n if (styles.priority[name]) {\n s += \" !\" + styles.priority[name];\n }\n s += \";\";\n }\n\n this.cssText = s; // also sets the style attribute\n this._lastParsedText = s; // so we don't reparse\n delete this._names;\n }},\n\n cssText: {\n get: function() {\n // XXX: this is a CSSStyleDeclaration for an element.\n // A different impl might be necessary for a set of styles\n // associated returned by getComputedStyle(), e.g.\n return this._element.getAttribute(\"style\");\n },\n set: function(value) {\n // XXX: I should parse and serialize the value to\n // normalize it and remove errors. FF and chrome do that.\n this._element.setAttribute(\"style\", value);\n }\n },\n\n length: { get: function() {\n if (!this._names)\n this._names = Object.getOwnPropertyNames(this._parsed.property);\n return this._names.length;\n }},\n\n item: { value: function(n) {\n if (!this._names)\n this._names = Object.getOwnPropertyNames(this._parsed.property);\n return this._names[n];\n }},\n\n getPropertyValue: { value: function(property) {\n property = property.toLowerCase();\n return this._parsed.property[property] || \"\";\n }},\n\n getPropertyPriority: { value: function(property) {\n property = property.toLowerCase();\n return this._parsed.priority[property] || \"\";\n }},\n\n setProperty: { value: function(property, value, priority) {\n property = property.toLowerCase();\n if (value === null || value === undefined) {\n value = \"\";\n }\n if (priority === null || priority === undefined) {\n priority = \"\";\n }\n\n // String coercion\n if (value !== NO_CHANGE) {\n value = \"\" + value;\n }\n\n value = value.trim();\n if (value === \"\") {\n this.removeProperty(property);\n return;\n }\n\n if (priority !== \"\" && priority !== NO_CHANGE &&\n !/^important$/i.test(priority)) {\n return;\n }\n\n var styles = this._parsed;\n if (value === NO_CHANGE) {\n if (!styles.property[property]) {\n return; // Not a valid property name.\n }\n if (priority !== \"\") {\n styles.priority[property] = \"important\";\n } else {\n delete styles.priority[property];\n }\n } else {\n // We don't just accept the property value. Instead\n // we parse it to ensure that it is something valid.\n // If it contains a semicolon it is invalid\n if (value.indexOf(\";\") !== -1) return;\n\n var newprops = parseStyles(property + \":\" + value);\n if (Object.getOwnPropertyNames(newprops.property).length === 0) {\n return; // no valid property found\n }\n if (Object.getOwnPropertyNames(newprops.priority).length !== 0) {\n return; // if the value included '!important' it wasn't valid.\n }\n\n // XXX handle shorthand properties\n\n for (var p in newprops.property) {\n styles.property[p] = newprops.property[p];\n if (priority === NO_CHANGE) {\n continue;\n } else if (priority !== \"\") {\n styles.priority[p] = \"important\";\n } else if (styles.priority[p]) {\n delete styles.priority[p];\n }\n }\n }\n\n // Serialize and update cssText and element.style!\n this._serialize();\n }},\n\n setPropertyValue: { value: function(property, value) {\n return this.setProperty(property, value, NO_CHANGE);\n }},\n\n setPropertyPriority: { value: function(property, priority) {\n return this.setProperty(property, NO_CHANGE, priority);\n }},\n\n removeProperty: { value: function(property) {\n property = property.toLowerCase();\n var styles = this._parsed;\n if (property in styles.property) {\n delete styles.property[property];\n delete styles.priority[property];\n\n // Serialize and update cssText and element.style!\n this._serialize();\n }\n }},\n});\n","\"use strict\";\nvar URL = require('./URL');\n\nmodule.exports = URLUtils;\n\n// Allow the `x == null` pattern. This is eslint's \"null: 'ignore'\" option,\n// but jshint doesn't support this.\n/* jshint eqeqeq: false */\n\n// This is an abstract superclass for Location, HTMLAnchorElement and\n// other types that have the standard complement of \"URL decomposition\n// IDL attributes\". This is now standardized as URLUtils, see:\n// https://url.spec.whatwg.org/#urlutils\n// Subclasses must define a getter/setter on href.\n// The getter and setter methods parse and rebuild the URL on each\n// invocation; there is no attempt to cache the value and be more efficient\nfunction URLUtils() {}\nURLUtils.prototype = Object.create(Object.prototype, {\n\n _url: { get: function() {\n // XXX: this should do the \"Reinitialize url\" steps, and \"null\" should\n // be a valid return value.\n return new URL(this.href);\n } },\n\n protocol: {\n get: function() {\n var url = this._url;\n if (url && url.scheme) return url.scheme + \":\";\n else return \":\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute()) {\n v = v.replace(/:+$/, \"\");\n v = v.replace(/[^-+\\.a-zA-Z0-9]/g, URL.percentEncode);\n if (v.length > 0) {\n url.scheme = v;\n output = url.toString();\n }\n }\n this.href = output;\n },\n },\n\n host: {\n get: function() {\n var url = this._url;\n if (url.isAbsolute() && url.isAuthorityBased())\n return url.host + (url.port ? (\":\" + url.port) : \"\");\n else\n return \"\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute() && url.isAuthorityBased()) {\n v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n if (v.length > 0) {\n url.host = v;\n delete url.port;\n output = url.toString();\n }\n }\n this.href = output;\n },\n },\n\n hostname: {\n get: function() {\n var url = this._url;\n if (url.isAbsolute() && url.isAuthorityBased())\n return url.host;\n else\n return \"\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute() && url.isAuthorityBased()) {\n v = v.replace(/^\\/+/, \"\");\n v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n if (v.length > 0) {\n url.host = v;\n output = url.toString();\n }\n }\n this.href = output;\n },\n },\n\n port: {\n get: function() {\n var url = this._url;\n if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined)\n return url.port;\n else\n return \"\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute() && url.isAuthorityBased()) {\n v = '' + v;\n v = v.replace(/[^0-9].*$/, \"\");\n v = v.replace(/^0+/, \"\");\n if (v.length === 0) v = \"0\";\n if (parseInt(v, 10) <= 65535) {\n url.port = v;\n output = url.toString();\n }\n }\n this.href = output;\n },\n },\n\n pathname: {\n get: function() {\n var url = this._url;\n if (url.isAbsolute() && url.isHierarchical())\n return url.path;\n else\n return \"\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute() && url.isHierarchical()) {\n if (v.charAt(0) !== \"/\")\n v = \"/\" + v;\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/a-zA-Z0-9]/g, URL.percentEncode);\n url.path = v;\n output = url.toString();\n }\n this.href = output;\n },\n },\n\n search: {\n get: function() {\n var url = this._url;\n if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined)\n return \"?\" + url.query;\n else\n return \"\";\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute() && url.isHierarchical()) {\n if (v.charAt(0) === \"?\") v = v.substring(1);\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n url.query = v;\n output = url.toString();\n }\n this.href = output;\n },\n },\n\n hash: {\n get: function() {\n var url = this._url;\n if (url == null || url.fragment == null || url.fragment === '') {\n return \"\";\n } else {\n return \"#\" + url.fragment;\n }\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n\n if (v.charAt(0) === \"#\") v = v.substring(1);\n v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n url.fragment = v;\n output = url.toString();\n\n this.href = output;\n },\n },\n\n username: {\n get: function() {\n var url = this._url;\n return url.username || '';\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute()) {\n v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\:]/g, URL.percentEncode);\n url.username = v;\n output = url.toString();\n }\n this.href = output;\n },\n },\n\n password: {\n get: function() {\n var url = this._url;\n return url.password || '';\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n if (url.isAbsolute()) {\n if (v==='') {\n url.password = null;\n } else {\n v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\]/g, URL.percentEncode);\n url.password = v;\n }\n output = url.toString();\n }\n this.href = output;\n },\n },\n\n origin: { get: function() {\n var url = this._url;\n if (url == null) { return ''; }\n var originForPort = function(defaultPort) {\n var origin = [url.scheme, url.host, +url.port || defaultPort];\n // XXX should be \"unicode serialization\"\n return origin[0] + '://' + origin[1] +\n (origin[2] === defaultPort ? '' : (':' + origin[2]));\n };\n switch (url.scheme) {\n case 'ftp':\n return originForPort(21);\n case 'gopher':\n return originForPort(70);\n case 'http':\n case 'ws':\n return originForPort(80);\n case 'https':\n case 'wss':\n return originForPort(443);\n default:\n // this is what chrome does\n return url.scheme + '://';\n }\n } },\n\n /*\n searchParams: {\n get: function() {\n var url = this._url;\n // XXX\n },\n set: function(v) {\n var output = this.href;\n var url = new URL(output);\n // XXX\n this.href = output;\n },\n },\n */\n});\n\nURLUtils._inherit = function(proto) {\n // copy getters/setters from URLUtils to o.\n Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) {\n if (p==='constructor' || p==='href') { return; }\n var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p);\n Object.defineProperty(proto, p, desc);\n });\n};\n","\"use strict\";\n\nvar attributes = require('./attributes');\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nmodule.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) {\n var c = spec.ctor;\n if (c) {\n var props = spec.props || {};\n\n if (spec.attributes) {\n for (var n in spec.attributes) {\n var attr = spec.attributes[n];\n if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr};\n if (!attr.name) attr.name = n.toLowerCase();\n props[n] = attributes.property(attr);\n }\n }\n\n props.constructor = { value : c, writable: isApiWritable };\n c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props);\n if (spec.events) {\n addEventHandlers(c, spec.events);\n }\n tagList[spec.name] = c;\n }\n else {\n c = defaultConstructor;\n }\n\n (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) {\n tagNameToImpl[tag] = c;\n });\n\n return c;\n};\n\nfunction EventHandlerBuilder(body, document, form, element) {\n this.body = body;\n this.document = document;\n this.form = form;\n this.element = element;\n}\n\nEventHandlerBuilder.prototype.build = function () {\n return () => {};\n};\n\nfunction EventHandlerChangeHandler(elt, name, oldval, newval) {\n var doc = elt.ownerDocument || Object.create(null);\n var form = elt.form || Object.create(null);\n elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build();\n}\n\nfunction addEventHandlers(c, eventHandlerTypes) {\n var p = c.prototype;\n eventHandlerTypes.forEach(function(type) {\n // Define the event handler registration IDL attribute for this type\n Object.defineProperty(p, \"on\" + type, {\n get: function() {\n return this._getEventHandler(type);\n },\n set: function(v) {\n this._setEventHandler(type, v);\n },\n });\n\n // Define special behavior for the content attribute as well\n attributes.registerChangeHandler(c, \"on\" + type, EventHandlerChangeHandler);\n });\n}\n","\"use strict\";\nvar Node = require('./Node');\nvar Element = require('./Element');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\nvar utils = require('./utils');\nvar URLUtils = require('./URLUtils');\nvar defineElement = require('./defineElement');\n\nvar htmlElements = exports.elements = {};\nvar htmlNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n var impl = htmlNameToImpl[localName] || HTMLUnknownElement;\n return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl);\n}\n\nfunction URL(attr) {\n return {\n get: function() {\n var v = this._getattr(attr);\n if (v === null) { return ''; }\n var url = this.doc._resolve(v);\n return (url === null) ? v : url;\n },\n set: function(value) {\n this._setattr(attr, value);\n }\n };\n}\n\nfunction CORS(attr) {\n return {\n get: function() {\n var v = this._getattr(attr);\n if (v === null) { return null; }\n if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; }\n return 'anonymous';\n },\n set: function(value) {\n if (value===null || value===undefined) {\n this.removeAttribute(attr);\n } else {\n this._setattr(attr, value);\n }\n }\n };\n}\n\nconst REFERRER = {\n type: [\"\", \"no-referrer\", \"no-referrer-when-downgrade\", \"same-origin\", \"origin\", \"strict-origin\", \"origin-when-cross-origin\", \"strict-origin-when-cross-origin\", \"unsafe-url\"],\n missing: '',\n};\n\n\n// XXX: the default value for tabIndex should be 0 if the element is\n// focusable and -1 if it is not. But the full definition of focusable\n// is actually hard to compute, so for now, I'll follow Firefox and\n// just base the default value on the type of the element.\nvar focusableElements = {\n \"A\":true, \"LINK\":true, \"BUTTON\":true, \"INPUT\":true,\n \"SELECT\":true, \"TEXTAREA\":true, \"COMMAND\":true\n};\n\nvar HTMLFormElement = function(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n this._form = null; // Prevent later deoptimization\n};\n\nvar HTMLElement = exports.HTMLElement = define({\n superclass: Element,\n name: 'HTMLElement',\n ctor: function HTMLElement(doc, localName, prefix) {\n Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix);\n },\n props: {\n dangerouslySetInnerHTML: {\n set: function (v) {\n this._innerHTML = v;\n },\n },\n innerHTML: {\n get: function() {\n return this.serialize();\n },\n set: function(v) {\n var parser = this.ownerDocument.implementation.mozHTMLParser(\n this.ownerDocument._address,\n this);\n parser.parse(v===null ? '' : String(v), true);\n\n // Remove any existing children of this node\n var target = (this instanceof htmlNameToImpl.template) ?\n this.content : this;\n while(target.hasChildNodes())\n target.removeChild(target.firstChild);\n\n // Now copy newly parsed children to this node\n target.appendChild(parser._asDocumentFragment());\n }\n },\n style: { get: function() {\n if (!this._style)\n this._style = new CSSStyleDeclaration(this);\n return this._style;\n }, set: function(v) {\n if (v===null||v===undefined) { v = ''; }\n this._setattr('style', String(v));\n }},\n\n // These can't really be implemented server-side in a reasonable way.\n blur: { value: function() {}},\n focus: { value: function() {}},\n forceSpellCheck: { value: function() {}},\n\n click: { value: function() {\n if (this._click_in_progress) return;\n this._click_in_progress = true;\n try {\n if (this._pre_click_activation_steps)\n this._pre_click_activation_steps();\n\n var event = this.ownerDocument.createEvent(\"MouseEvent\");\n event.initMouseEvent(\"click\", true, true,\n this.ownerDocument.defaultView, 1,\n 0, 0, 0, 0,\n // These 4 should be initialized with\n // the actually current keyboard state\n // somehow...\n false, false, false, false,\n 0, null\n );\n\n // Dispatch this as an untrusted event since it is synthetic\n var success = this.dispatchEvent(event);\n\n if (success) {\n if (this._post_click_activation_steps)\n this._post_click_activation_steps(event);\n }\n else {\n if (this._cancelled_activation_steps)\n this._cancelled_activation_steps();\n }\n }\n finally {\n this._click_in_progress = false;\n }\n }},\n submit: { value: utils.nyi },\n },\n attributes: {\n title: String,\n lang: String,\n dir: {type: [\"ltr\", \"rtl\", \"auto\"], missing: ''},\n draggable: {type: [\"true\", \"false\"], treatNullAsEmptyString: true },\n spellcheck: {type: [\"true\", \"false\"], missing: ''},\n enterKeyHint: {type: [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"], missing: ''},\n autoCapitalize: {type: [\"off\", \"on\", \"none\", \"sentences\", \"words\", \"characters\"], missing: '' },\n autoFocus: Boolean,\n accessKey: String,\n nonce: String,\n hidden: Boolean,\n translate: {type: [\"no\", \"yes\"], missing: '' },\n tabIndex: {type: \"long\", default: function() {\n if (this.tagName in focusableElements ||\n this.contentEditable)\n return 0;\n else\n return -1;\n }}\n },\n events: [\n \"abort\", \"canplay\", \"canplaythrough\", \"change\", \"click\", \"contextmenu\",\n \"cuechange\", \"dblclick\", \"drag\", \"dragend\", \"dragenter\", \"dragleave\",\n \"dragover\", \"dragstart\", \"drop\", \"durationchange\", \"emptied\", \"ended\",\n \"input\", \"invalid\", \"keydown\", \"keypress\", \"keyup\", \"loadeddata\",\n \"loadedmetadata\", \"loadstart\", \"mousedown\", \"mousemove\", \"mouseout\",\n \"mouseover\", \"mouseup\", \"mousewheel\", \"pause\", \"play\", \"playing\",\n \"progress\", \"ratechange\", \"readystatechange\", \"reset\", \"seeked\",\n \"seeking\", \"select\", \"show\", \"stalled\", \"submit\", \"suspend\",\n \"timeupdate\", \"volumechange\", \"waiting\",\n\n // These last 5 event types will be overriden by HTMLBodyElement\n \"blur\", \"error\", \"focus\", \"load\", \"scroll\"\n ]\n});\n\n\n// XXX: reflect contextmenu as contextMenu, with element type\n\n\n// style: the spec doesn't call this a reflected attribute.\n// may want to handle it manually.\n\n// contentEditable: enumerated, not clear if it is actually\n// reflected or requires custom getter/setter. Not listed as\n// \"limited to known values\". Raises syntax_err on bad setting,\n// so I think this is custom.\n\n// contextmenu: content is element id, idl type is an element\n// draggable: boolean, but not a reflected attribute\n// dropzone: reflected SettableTokenList, experimental, so don't\n// implement it right away.\n\n// data-* attributes: need special handling in setAttribute?\n// Or maybe that isn't necessary. Can I just scan the attribute list\n// when building the dataset? Liveness and caching issues?\n\n// microdata attributes: many are simple reflected attributes, but\n// I'm not going to implement this now.\n\n\nvar HTMLUnknownElement = define({\n name: 'HTMLUnknownElement',\n ctor: function HTMLUnknownElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\n\nvar formAssociatedProps = {\n // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner\n form: { get: function() {\n return this._form;\n }}\n};\n\ndefine({\n tag: 'a',\n name: 'HTMLAnchorElement',\n ctor: function HTMLAnchorElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n _post_click_activation_steps: { value: function(e) {\n if (this.href) {\n // Follow the link\n // XXX: this is just a quick hack\n // XXX: the HTML spec probably requires more than this\n this.ownerDocument.defaultView.location = this.href;\n }\n }},\n },\n attributes: {\n href: URL,\n ping: String,\n download: String,\n target: String,\n rel: String,\n media: String,\n hreflang: String,\n type: String,\n referrerPolicy: REFERRER,\n // Obsolete\n coords: String,\n charset: String,\n name: String,\n rev: String,\n shape: String,\n }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.a.prototype);\n\ndefine({\n tag: 'area',\n name: 'HTMLAreaElement',\n ctor: function HTMLAreaElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n alt: String,\n target: String,\n download: String,\n rel: String,\n media: String,\n href: URL,\n hreflang: String,\n type: String,\n shape: String,\n coords: String,\n ping: String,\n // XXX: also reflect relList\n referrerPolicy: REFERRER,\n // Obsolete\n noHref: Boolean,\n }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.area.prototype);\n\ndefine({\n tag: 'br',\n name: 'HTMLBRElement',\n ctor: function HTMLBRElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n clear: String\n },\n});\n\ndefine({\n tag: 'base',\n name: 'HTMLBaseElement',\n ctor: function HTMLBaseElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n \"target\": String\n }\n});\n\n\ndefine({\n tag: 'body',\n name: 'HTMLBodyElement',\n ctor: function HTMLBodyElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n // Certain event handler attributes on a tag actually set\n // handlers for the window rather than just that element. Define\n // getters and setters for those here. Note that some of these override\n // properties on HTMLElement.prototype.\n // XXX: If I add support for , these have to go there, too\n // XXX\n // When the Window object is implemented, these attribute will have\n // to work with the same-named attributes on the Window.\n events: [\n \"afterprint\", \"beforeprint\", \"beforeunload\", \"blur\", \"error\",\n \"focus\",\"hashchange\", \"load\", \"message\", \"offline\", \"online\",\n \"pagehide\", \"pageshow\",\"popstate\",\"resize\",\"scroll\",\"storage\",\"unload\",\n ],\n attributes: {\n // Obsolete\n text: { type: String, treatNullAsEmptyString: true },\n link: { type: String, treatNullAsEmptyString: true },\n vLink: { type: String, treatNullAsEmptyString: true },\n aLink: { type: String, treatNullAsEmptyString: true },\n bgColor: { type: String, treatNullAsEmptyString: true },\n background: String,\n }\n});\n\ndefine({\n tag: 'button',\n name: 'HTMLButtonElement',\n ctor: function HTMLButtonElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n name: String,\n value: String,\n disabled: Boolean,\n autofocus: Boolean,\n type: { type:[\"submit\", \"reset\", \"button\", \"menu\"], missing: 'submit' },\n formTarget: String,\n formAction: URL,\n formNoValidate: Boolean,\n formMethod: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: '' },\n formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n }\n});\n\ndefine({\n tag: 'dl',\n name: 'HTMLDListElement',\n ctor: function HTMLDListElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n compact: Boolean,\n }\n});\n\ndefine({\n tag: 'data',\n name: 'HTMLDataElement',\n ctor: function HTMLDataElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n value: String,\n }\n});\n\ndefine({\n tag: 'datalist',\n name: 'HTMLDataListElement',\n ctor: function HTMLDataListElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tag: 'details',\n name: 'HTMLDetailsElement',\n ctor: function HTMLDetailsElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n \"open\": Boolean\n }\n});\n\ndefine({\n tag: 'div',\n name: 'HTMLDivElement',\n ctor: function HTMLDivElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String\n }\n});\n\ndefine({\n tag: 'embed',\n name: 'HTMLEmbedElement',\n ctor: function HTMLEmbedElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n src: URL,\n type: String,\n width: String,\n height: String,\n // Obsolete\n align: String,\n name: String,\n }\n});\n\ndefine({\n tag: 'fieldset',\n name: 'HTMLFieldSetElement',\n ctor: function HTMLFieldSetElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n disabled: Boolean,\n name: String\n }\n});\n\ndefine({\n tag: 'form',\n name: 'HTMLFormElement',\n ctor: function HTMLFormElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n action: String,\n autocomplete: {type:['on', 'off'], missing: 'on'},\n name: String,\n acceptCharset: {name: \"accept-charset\"},\n target: String,\n noValidate: Boolean,\n method: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: 'get' },\n // Both enctype and encoding reflect the enctype content attribute\n enctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n encoding: {name: 'enctype', type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n }\n});\n\ndefine({\n tag: 'hr',\n name: 'HTMLHRElement',\n ctor: function HTMLHRElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String,\n color: String,\n noShade: Boolean,\n size: String,\n width: String,\n },\n});\n\ndefine({\n tag: 'head',\n name: 'HTMLHeadElement',\n ctor: function HTMLHeadElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tags: ['h1','h2','h3','h4','h5','h6'],\n name: 'HTMLHeadingElement',\n ctor: function HTMLHeadingElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String,\n },\n});\n\ndefine({\n tag: 'html',\n name: 'HTMLHtmlElement',\n ctor: function HTMLHtmlElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n xmlns: URL,\n // Obsolete\n version: String\n }\n});\n\ndefine({\n tag: 'iframe',\n name: 'HTMLIFrameElement',\n ctor: function HTMLIFrameElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n src: URL,\n srcdoc: String,\n name: String,\n width: String,\n height: String,\n // XXX: sandbox is a reflected settable token list\n seamless: Boolean,\n allow: Boolean,\n allowFullscreen: Boolean,\n allowUserMedia: Boolean,\n allowPaymentRequest: Boolean,\n referrerPolicy: REFERRER,\n loading: { type:['eager','lazy'], treatNullAsEmptyString: true },\n // Obsolete\n align: String,\n scrolling: String,\n frameBorder: String,\n longDesc: URL,\n marginHeight: { type: String, treatNullAsEmptyString: true },\n marginWidth: { type: String, treatNullAsEmptyString: true },\n }\n});\n\ndefine({\n tag: 'img',\n name: 'HTMLImageElement',\n ctor: function HTMLImageElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n alt: String,\n src: URL,\n srcset: String,\n crossOrigin: CORS,\n useMap: String,\n isMap: Boolean,\n sizes: String,\n height: { type: \"unsigned long\", default: 0 },\n width: { type: \"unsigned long\", default: 0 },\n referrerPolicy: REFERRER,\n loading: { type:['eager','lazy'], missing: '' },\n // Obsolete:\n name: String,\n lowsrc: URL,\n align: String,\n hspace: { type: \"unsigned long\", default: 0 },\n vspace: { type: \"unsigned long\", default: 0 },\n longDesc: URL,\n border: { type: String, treatNullAsEmptyString: true },\n }\n});\n\ndefine({\n tag: 'input',\n name: 'HTMLInputElement',\n ctor: function HTMLInputElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: {\n form: formAssociatedProps.form,\n _post_click_activation_steps: { value: function(e) {\n if (this.type === 'checkbox') {\n this.checked = !this.checked;\n }\n else if (this.type === 'radio') {\n var group = this.form.getElementsByName(this.name);\n for (var i=group.length-1; i >= 0; i--) {\n var el = group[i];\n el.checked = (el === this);\n }\n }\n }},\n },\n attributes: {\n name: String,\n disabled: Boolean,\n autofocus: Boolean,\n accept: String,\n alt: String,\n max: String,\n min: String,\n pattern: String,\n placeholder: String,\n step: String,\n dirName: String,\n defaultValue: {name: 'value'},\n multiple: Boolean,\n required: Boolean,\n readOnly: Boolean,\n checked: Boolean,\n value: String,\n src: URL,\n defaultChecked: {name: 'checked', type: Boolean},\n size: {type: 'unsigned long', default: 20, min: 1, setmin: 1},\n width: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n height: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n autocomplete: String, // It's complicated\n type: { type:\n [\"text\", \"hidden\", \"search\", \"tel\", \"url\", \"email\", \"password\",\n \"datetime\", \"date\", \"month\", \"week\", \"time\", \"datetime-local\",\n \"number\", \"range\", \"color\", \"checkbox\", \"radio\", \"file\", \"submit\",\n \"image\", \"reset\", \"button\"],\n missing: 'text' },\n formTarget: String,\n formNoValidate: Boolean,\n formMethod: { type: [\"get\", \"post\"], invalid: 'get', missing: '' },\n formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n // Obsolete\n align: String,\n useMap: String,\n }\n});\n\ndefine({\n tag: 'keygen',\n name: 'HTMLKeygenElement',\n ctor: function HTMLKeygenElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n name: String,\n disabled: Boolean,\n autofocus: Boolean,\n challenge: String,\n keytype: { type:[\"rsa\"], missing: '' },\n }\n});\n\ndefine({\n tag: 'li',\n name: 'HTMLLIElement',\n ctor: function HTMLLIElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n value: {type: \"long\", default: 0},\n // Obsolete\n type: String,\n }\n});\n\ndefine({\n tag: 'label',\n name: 'HTMLLabelElement',\n ctor: function HTMLLabelElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n htmlFor: {name: 'for', type: String}\n }\n});\n\ndefine({\n tag: 'legend',\n name: 'HTMLLegendElement',\n ctor: function HTMLLegendElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String\n },\n});\n\ndefine({\n tag: 'link',\n name: 'HTMLLinkElement',\n ctor: function HTMLLinkElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList\n href: URL,\n rel: String,\n media: String,\n hreflang: String,\n type: String,\n crossOrigin: CORS,\n nonce: String,\n integrity: String,\n referrerPolicy: REFERRER,\n imageSizes: String,\n imageSrcset: String,\n // Obsolete\n charset: String,\n rev: String,\n target: String,\n }\n});\n\ndefine({\n tag: 'map',\n name: 'HTMLMapElement',\n ctor: function HTMLMapElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n name: String\n }\n});\n\ndefine({\n tag: 'menu',\n name: 'HTMLMenuElement',\n ctor: function HTMLMenuElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // XXX: not quite right, default should be popup if parent element is\n // popup.\n type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' },\n label: String,\n // Obsolete\n compact: Boolean,\n }\n});\n\ndefine({\n tag: 'meta',\n name: 'HTMLMetaElement',\n ctor: function HTMLMetaElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n name: String,\n content: String,\n httpEquiv: {name: 'http-equiv', type: String},\n // Obsolete\n scheme: String,\n }\n});\n\ndefine({\n tag: 'meter',\n name: 'HTMLMeterElement',\n ctor: function HTMLMeterElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps\n});\n\ndefine({\n tags: ['ins', 'del'],\n name: 'HTMLModElement',\n ctor: function HTMLModElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n cite: URL,\n dateTime: String\n }\n});\n\ndefine({\n tag: 'ol',\n name: 'HTMLOListElement',\n ctor: function HTMLOListElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n // Utility function (see the start attribute default value). Returns\n // the number of
  • children of this element\n _numitems: { get: function() {\n var items = 0;\n this.childNodes.forEach(function(n) {\n if (n.nodeType === Node.ELEMENT_NODE && n.tagName === \"LI\")\n items++;\n });\n return items;\n }}\n },\n attributes: {\n type: String,\n reversed: Boolean,\n start: {\n type: \"long\",\n default: function() {\n // The default value of the start attribute is 1 unless the list is\n // reversed. Then it is the # of li children\n if (this.reversed)\n return this._numitems;\n else\n return 1;\n }\n },\n // Obsolete\n compact: Boolean,\n }\n});\n\ndefine({\n tag: 'object',\n name: 'HTMLObjectElement',\n ctor: function HTMLObjectElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n data: URL,\n type: String,\n name: String,\n useMap: String,\n typeMustMatch: Boolean,\n width: String,\n height: String,\n // Obsolete\n align: String,\n archive: String,\n code: String,\n declare: Boolean,\n hspace: { type: \"unsigned long\", default: 0 },\n standby: String,\n vspace: { type: \"unsigned long\", default: 0 },\n codeBase: URL,\n codeType: String,\n border: { type: String, treatNullAsEmptyString: true },\n }\n});\n\ndefine({\n tag: 'optgroup',\n name: 'HTMLOptGroupElement',\n ctor: function HTMLOptGroupElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n disabled: Boolean,\n label: String\n }\n});\n\ndefine({\n tag: 'option',\n name: 'HTMLOptionElement',\n ctor: function HTMLOptionElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n form: { get: function() {\n var p = this.parentNode;\n while (p && p.nodeType === Node.ELEMENT_NODE) {\n if (p.localName === 'select') return p.form;\n p = p.parentNode;\n }\n }},\n value: {\n get: function() { return this._getattr('value') || this.text; },\n set: function(v) { this._setattr('value', v); },\n },\n text: {\n get: function() {\n // Strip and collapse whitespace\n return this.textContent.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n },\n set: function(v) { this.textContent = v; },\n },\n // missing: index\n },\n attributes: {\n disabled: Boolean,\n defaultSelected: {name: 'selected', type: Boolean},\n label: String,\n }\n});\n\ndefine({\n tag: 'output',\n name: 'HTMLOutputElement',\n ctor: function HTMLOutputElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n // XXX Reflect for/htmlFor as a settable token list\n name: String\n }\n});\n\ndefine({\n tag: 'p',\n name: 'HTMLParagraphElement',\n ctor: function HTMLParagraphElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String\n }\n});\n\ndefine({\n tag: 'param',\n name: 'HTMLParamElement',\n ctor: function HTMLParamElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n name: String,\n value: String,\n // Obsolete\n type: String,\n valueType: String,\n }\n});\n\ndefine({\n tags: ['pre',/*legacy elements:*/'listing','xmp'],\n name: 'HTMLPreElement',\n ctor: function HTMLPreElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n width: { type: \"long\", default: 0 },\n }\n});\n\ndefine({\n tag: 'progress',\n name: 'HTMLProgressElement',\n ctor: function HTMLProgressElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: formAssociatedProps,\n attributes: {\n max: {type: Number, float: true, default: 1.0, min: 0}\n }\n});\n\ndefine({\n tags: ['q', 'blockquote'],\n name: 'HTMLQuoteElement',\n ctor: function HTMLQuoteElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n cite: URL\n }\n});\n\ndefine({\n tag: 'script',\n name: 'HTMLScriptElement',\n ctor: function HTMLScriptElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n text: {\n get: function() {\n var s = \"\";\n for(var i = 0, n = this.childNodes.length; i < n; i++) {\n var child = this.childNodes[i];\n if (child.nodeType === Node.TEXT_NODE)\n s += child._data;\n }\n return s;\n },\n set: function(value) {\n this.removeChildren();\n if (value !== null && value !== \"\") {\n this.appendChild(this.ownerDocument.createTextNode(value));\n }\n }\n }\n },\n attributes: {\n src: URL,\n type: String,\n charset: String,\n referrerPolicy: REFERRER,\n defer: Boolean,\n async: Boolean,\n nomodule: Boolean,\n crossOrigin: CORS,\n nonce: String,\n integrity: String,\n }\n});\n\ndefine({\n tag: 'select',\n name: 'HTMLSelectElement',\n ctor: function HTMLSelectElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: {\n form: formAssociatedProps.form,\n options: { get: function() {\n return this.getElementsByTagName('option');\n }}\n },\n attributes: {\n autocomplete: String, // It's complicated\n name: String,\n disabled: Boolean,\n autofocus: Boolean,\n multiple: Boolean,\n required: Boolean,\n size: {type: \"unsigned long\", default: 0}\n }\n});\n\ndefine({\n tag: 'span',\n name: 'HTMLSpanElement',\n ctor: function HTMLSpanElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tag: 'style',\n name: 'HTMLStyleElement',\n ctor: function HTMLStyleElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n media: String,\n type: String,\n scoped: Boolean\n }\n});\n\ndefine({\n tag: 'caption',\n name: 'HTMLTableCaptionElement',\n ctor: function HTMLTableCaptionElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n // Obsolete\n align: String,\n }\n});\n\n\ndefine({\n name: 'HTMLTableCellElement',\n ctor: function HTMLTableCellElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n colSpan: {type: \"unsigned long\", default: 1},\n rowSpan: {type: \"unsigned long\", default: 1},\n //XXX Also reflect settable token list headers\n scope: { type: ['row','col','rowgroup','colgroup'], missing: '' },\n abbr: String,\n // Obsolete\n align: String,\n axis: String,\n height: String,\n width: String,\n ch: { name: 'char', type: String },\n chOff: { name: 'charoff', type: String },\n noWrap: Boolean,\n vAlign: String,\n bgColor: { type: String, treatNullAsEmptyString: true },\n }\n});\n\ndefine({\n tags: ['col', 'colgroup'],\n name: 'HTMLTableColElement',\n ctor: function HTMLTableColElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n span: {type: 'limited unsigned long with fallback', default: 1, min: 1},\n // Obsolete\n align: String,\n ch: { name: 'char', type: String },\n chOff: { name: 'charoff', type: String },\n vAlign: String,\n width: String,\n }\n});\n\ndefine({\n tag: 'table',\n name: 'HTMLTableElement',\n ctor: function HTMLTableElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n rows: { get: function() {\n return this.getElementsByTagName('tr');\n }}\n },\n attributes: {\n // Obsolete\n align: String,\n border: String,\n frame: String,\n rules: String,\n summary: String,\n width: String,\n bgColor: { type: String, treatNullAsEmptyString: true },\n cellPadding: { type: String, treatNullAsEmptyString: true },\n cellSpacing: { type: String, treatNullAsEmptyString: true },\n }\n});\n\ndefine({\n tag: 'template',\n name: 'HTMLTemplateElement',\n ctor: function HTMLTemplateElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n this._contentFragment = doc._templateDoc.createDocumentFragment();\n },\n props: {\n content: { get: function() { return this._contentFragment; } },\n serialize: { value: function() { return this.content.serialize(); } }\n }\n});\n\ndefine({\n tag: 'tr',\n name: 'HTMLTableRowElement',\n ctor: function HTMLTableRowElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n cells: { get: function() {\n return this.querySelectorAll('td,th');\n }}\n },\n attributes: {\n // Obsolete\n align: String,\n ch: { name: 'char', type: String },\n chOff: { name: 'charoff', type: String },\n vAlign: String,\n bgColor: { type: String, treatNullAsEmptyString: true },\n },\n});\n\ndefine({\n tags: ['thead', 'tfoot', 'tbody'],\n name: 'HTMLTableSectionElement',\n ctor: function HTMLTableSectionElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n rows: { get: function() {\n return this.getElementsByTagName('tr');\n }}\n },\n attributes: {\n // Obsolete\n align: String,\n ch: { name: 'char', type: String },\n chOff: { name: 'charoff', type: String },\n vAlign: String,\n }\n});\n\ndefine({\n tag: 'textarea',\n name: 'HTMLTextAreaElement',\n ctor: function HTMLTextAreaElement(doc, localName, prefix) {\n HTMLFormElement.call(this, doc, localName, prefix);\n },\n props: {\n form: formAssociatedProps.form,\n type: { get: function() { return 'textarea'; } },\n defaultValue: {\n get: function() { return this.textContent; },\n set: function(v) { this.textContent = v; },\n },\n value: {\n get: function() { return this.defaultValue; /* never dirty */ },\n set: function(v) {\n // This isn't completely correct: according to the spec, this\n // should \"dirty\" the API value, and result in\n // `this.value !== this.defaultValue`. But for most of what\n // folks want to do, this implementation should be fine:\n this.defaultValue = v;\n },\n },\n textLength: { get: function() { return this.value.length; } },\n },\n attributes: {\n autocomplete: String, // It's complicated\n name: String,\n disabled: Boolean,\n autofocus: Boolean,\n placeholder: String,\n wrap: String,\n dirName: String,\n required: Boolean,\n readOnly: Boolean,\n rows: {type: 'limited unsigned long with fallback', default: 2 },\n cols: {type: 'limited unsigned long with fallback', default: 20 },\n maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n }\n});\n\ndefine({\n tag: 'time',\n name: 'HTMLTimeElement',\n ctor: function HTMLTimeElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n dateTime: String,\n pubDate: Boolean\n }\n});\n\ndefine({\n tag: 'title',\n name: 'HTMLTitleElement',\n ctor: function HTMLTitleElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n text: { get: function() {\n return this.textContent;\n }}\n }\n});\n\ndefine({\n tag: 'ul',\n name: 'HTMLUListElement',\n ctor: function HTMLUListElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n type: String,\n // Obsolete\n compact: Boolean,\n }\n});\n\ndefine({\n name: 'HTMLMediaElement',\n ctor: function HTMLMediaElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n src: URL,\n crossOrigin: CORS,\n preload: { type:[\"metadata\", \"none\", \"auto\", {value: \"\", alias: \"auto\"}], missing: 'auto' },\n loop: Boolean,\n autoplay: Boolean,\n mediaGroup: String,\n controls: Boolean,\n defaultMuted: {name: \"muted\", type: Boolean}\n }\n});\n\ndefine({\n name: 'HTMLAudioElement',\n tag: 'audio',\n superclass: htmlElements.HTMLMediaElement,\n ctor: function HTMLAudioElement(doc, localName, prefix) {\n htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n name: 'HTMLVideoElement',\n tag: 'video',\n superclass: htmlElements.HTMLMediaElement,\n ctor: function HTMLVideoElement(doc, localName, prefix) {\n htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n },\n attributes: {\n poster: URL,\n width: {type: \"unsigned long\", min: 0, default: 0 },\n height: {type: \"unsigned long\", min: 0, default: 0 }\n }\n});\n\ndefine({\n tag: 'td',\n name: 'HTMLTableDataCellElement',\n superclass: htmlElements.HTMLTableCellElement,\n ctor: function HTMLTableDataCellElement(doc, localName, prefix) {\n htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tag: 'th',\n name: 'HTMLTableHeaderCellElement',\n superclass: htmlElements.HTMLTableCellElement,\n ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) {\n htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n },\n});\n\ndefine({\n tag: 'frameset',\n name: 'HTMLFrameSetElement',\n ctor: function HTMLFrameSetElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tag: 'frame',\n name: 'HTMLFrameElement',\n ctor: function HTMLFrameElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n }\n});\n\ndefine({\n tag: 'canvas',\n name: 'HTMLCanvasElement',\n ctor: function HTMLCanvasElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n getContext: { value: utils.nyi },\n probablySupportsContext: { value: utils.nyi },\n setContext: { value: utils.nyi },\n transferControlToProxy: { value: utils.nyi },\n toDataURL: { value: utils.nyi },\n toBlob: { value: utils.nyi }\n },\n attributes: {\n width: { type: \"unsigned long\", default: 300},\n height: { type: \"unsigned long\", default: 150}\n }\n});\n\ndefine({\n tag: 'dialog',\n name: 'HTMLDialogElement',\n ctor: function HTMLDialogElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n show: { value: utils.nyi },\n showModal: { value: utils.nyi },\n close: { value: utils.nyi }\n },\n attributes: {\n open: Boolean,\n returnValue: String\n }\n});\n\ndefine({\n tag: 'menuitem',\n name: 'HTMLMenuItemElement',\n ctor: function HTMLMenuItemElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n props: {\n // The menuitem's label\n _label: {\n get: function() {\n var val = this._getattr('label');\n if (val !== null && val !== '') { return val; }\n val = this.textContent;\n // Strip and collapse whitespace\n return val.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n }\n },\n // The menuitem label IDL attribute\n label: {\n get: function() {\n var val = this._getattr('label');\n if (val !== null) { return val; }\n return this._label;\n },\n set: function(v) {\n this._setattr('label', v);\n },\n }\n },\n attributes: {\n type: { type: [\"command\",\"checkbox\",\"radio\"], missing: 'command' },\n icon: URL,\n disabled: Boolean,\n checked: Boolean,\n radiogroup: String,\n default: Boolean\n }\n});\n\ndefine({\n tag: 'source',\n name: 'HTMLSourceElement',\n ctor: function HTMLSourceElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n srcset: String,\n sizes: String,\n media: String,\n src: URL,\n type: String,\n width: String,\n height: String,\n }\n});\n\ndefine({\n tag: 'track',\n name: 'HTMLTrackElement',\n ctor: function HTMLTrackElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n src: URL,\n srclang: String,\n label: String,\n default: Boolean,\n kind: { type: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"], missing: 'subtitles', invalid: 'metadata' },\n },\n props: {\n NONE: { get: function() { return 0; } },\n LOADING: { get: function() { return 1; } },\n LOADED: { get: function() { return 2; } },\n ERROR: { get: function() { return 3; } },\n readyState: { get: utils.nyi },\n track: { get: utils.nyi }\n }\n});\n\ndefine({\n // obsolete\n tag: 'font',\n name: 'HTMLFontElement',\n ctor: function HTMLFontElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n color: { type: String, treatNullAsEmptyString: true },\n face: { type: String },\n size: { type: String },\n },\n});\n\ndefine({\n // obsolete\n tag: 'dir',\n name: 'HTMLDirectoryElement',\n ctor: function HTMLDirectoryElement(doc, localName, prefix) {\n HTMLElement.call(this, doc, localName, prefix);\n },\n attributes: {\n compact: Boolean,\n },\n});\n\ndefine({\n tags: [\n \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"content\", \"code\",\n \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\",\n \"main\", \"mark\", \"nav\", \"noscript\", \"rb\", \"rp\", \"rt\", \"rtc\",\n \"ruby\", \"s\", \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\",\n // Legacy elements\n \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\",\n \"plaintext\", \"strike\", \"tt\"\n ]\n});\n","\"use strict\";\nvar Element = require('./Element');\nvar defineElement = require('./defineElement');\nvar utils = require('./utils');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\n\nvar svgElements = exports.elements = {};\nvar svgNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n var impl = svgNameToImpl[localName] || SVGElement;\n return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n return defineElement(spec, SVGElement, svgElements, svgNameToImpl);\n}\n\nvar SVGElement = define({\n superclass: Element,\n name: 'SVGElement',\n ctor: function SVGElement(doc, localName, prefix) {\n Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix);\n },\n props: {\n style: { get: function() {\n if (!this._style)\n this._style = new CSSStyleDeclaration(this);\n return this._style;\n }}\n }\n});\n\ndefine({\n name: 'SVGSVGElement',\n ctor: function SVGSVGElement(doc, localName, prefix) {\n SVGElement.call(this, doc, localName, prefix);\n },\n tag: 'svg',\n props: {\n createSVGRect: { value: function () {\n return exports.createElement(this.ownerDocument, 'rect', null);\n } }\n }\n});\n\ndefine({\n tags: [\n 'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform',\n 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',\n 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight',\n 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode',\n 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',\n 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g',\n 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',\n 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style',\n 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'\n ]\n});\n","\"use strict\";\nmodule.exports = {\n VALUE: 1, // The value of a Text, Comment or PI node changed\n ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed\n REMOVE_ATTR: 3, // An attribute was removed\n REMOVE: 4, // A node was removed\n MOVE: 5, // A node was moved\n INSERT: 6 // A node (or a subtree of nodes) was inserted\n};","\"use strict\";\nmodule.exports = Document;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar Text = require('./Text');\nvar Comment = require('./Comment');\nvar Event = require('./Event');\nvar DocumentFragment = require('./DocumentFragment');\nvar ProcessingInstruction = require('./ProcessingInstruction');\nvar DOMImplementation = require('./DOMImplementation');\nvar TreeWalker = require('./TreeWalker');\nvar NodeIterator = require('./NodeIterator');\nvar NodeFilter = require('./NodeFilter');\nvar URL = require('./URL');\nvar select = require('./select');\nvar events = require('./events');\nvar xml = require('./xmlnames');\nvar html = require('./htmlelts');\nvar svg = require('./svg');\nvar utils = require('./utils');\nvar MUTATE = require('./MutationConstants');\nvar NAMESPACE = utils.NAMESPACE;\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nfunction Document(isHTML, address) {\n ContainerNode.call(this);\n this.nodeType = Node.DOCUMENT_NODE;\n this.isHTML = isHTML;\n this._address = address || 'about:blank';\n this.readyState = 'loading';\n this.implementation = new DOMImplementation(this);\n\n // DOMCore says that documents are always associated with themselves\n this.ownerDocument = null; // ... but W3C tests expect null\n this._contentType = isHTML ? 'text/html' : 'application/xml';\n\n // These will be initialized by our custom versions of\n // appendChild and insertBefore that override the inherited\n // Node methods.\n // XXX: override those methods!\n this.doctype = null;\n this.documentElement = null;\n\n // \"Associated inert template document\"\n this._templateDocCache = null;\n // List of active NodeIterators, see NodeIterator#_preremove()\n this._nodeIterators = null;\n\n // Documents are always rooted, by definition\n this._nid = 1;\n this._nextnid = 2; // For numbering children of the document\n this._nodes = [null, this]; // nid to node map\n\n // This maintains the mapping from element ids to element nodes.\n // We may need to update this mapping every time a node is rooted\n // or uprooted, and any time an attribute is added, removed or changed\n // on a rooted element.\n this.byId = Object.create(null);\n\n // This property holds a monotonically increasing value akin to\n // a timestamp used to record the last modification time of nodes\n // and their subtrees. See the lastModTime attribute and modify()\n // method of the Node class. And see FilteredElementList for an example\n // of the use of lastModTime\n this.modclock = 0;\n}\n\n// Map from lowercase event category names (used as arguments to\n// createEvent()) to the property name in the impl object of the\n// event constructor.\nvar supportedEvents = {\n event: 'Event',\n customevent: 'CustomEvent',\n uievent: 'UIEvent',\n mouseevent: 'MouseEvent'\n};\n\n// Certain arguments to document.createEvent() must be treated specially\nvar replacementEvent = {\n events: 'event',\n htmlevents: 'event',\n mouseevents: 'mouseevent',\n mutationevents: 'mutationevent',\n uievents: 'uievent'\n};\n\nvar mirrorAttr = function(f, name, defaultValue) {\n return {\n get: function() {\n var o = f.call(this);\n if (o) { return o[name]; }\n return defaultValue;\n },\n set: function(value) {\n var o = f.call(this);\n if (o) { o[name] = value; }\n },\n };\n};\n\n/** @spec https://dom.spec.whatwg.org/#validate-and-extract */\nfunction validateAndExtract(namespace, qualifiedName) {\n var prefix, localName, pos;\n if (namespace==='') { namespace = null; }\n // See https://github.com/whatwg/dom/issues/671\n // and https://github.com/whatwg/dom/issues/319\n if (!xml.isValidQName(qualifiedName)) {\n utils.InvalidCharacterError();\n }\n prefix = null;\n localName = qualifiedName;\n\n pos = qualifiedName.indexOf(':');\n if (pos >= 0) {\n prefix = qualifiedName.substring(0, pos);\n localName = qualifiedName.substring(pos+1);\n }\n if (prefix !== null && namespace === null) {\n utils.NamespaceError();\n }\n if (prefix === 'xml' && namespace !== NAMESPACE.XML) {\n utils.NamespaceError();\n }\n if ((prefix === 'xmlns' || qualifiedName === 'xmlns') &&\n namespace !== NAMESPACE.XMLNS) {\n utils.NamespaceError();\n }\n if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) {\n utils.NamespaceError();\n }\n return { namespace: namespace, prefix: prefix, localName: localName };\n}\n\nDocument.prototype = Object.create(ContainerNode.prototype, {\n // This method allows dom.js to communicate with a renderer\n // that displays the document in some way\n // XXX: I should probably move this to the window object\n _setMutationHandler: { value: function(handler) {\n this.mutationHandler = handler;\n }},\n\n // This method allows dom.js to receive event notifications\n // from the renderer.\n // XXX: I should probably move this to the window object\n _dispatchRendererEvent: { value: function(targetNid, type, details) {\n var target = this._nodes[targetNid];\n if (!target) return;\n target._dispatchEvent(new Event(type, details), true);\n }},\n\n nodeName: { value: '#document'},\n nodeValue: {\n get: function() {\n return null;\n },\n set: function() {}\n },\n\n // XXX: DOMCore may remove documentURI, so it is NYI for now\n documentURI: { get: function() { return this._address; }, set: utils.nyi },\n compatMode: { get: function() {\n // The _quirks property is set by the HTML parser\n return this._quirks ? 'BackCompat' : 'CSS1Compat';\n }},\n\n createTextNode: { value: function(data) {\n return new Text(this, String(data));\n }},\n createComment: { value: function(data) {\n return new Comment(this, data);\n }},\n createDocumentFragment: { value: function() {\n return new DocumentFragment(this);\n }},\n createProcessingInstruction: { value: function(target, data) {\n if (!xml.isValidName(target) || data.indexOf('?>') !== -1)\n utils.InvalidCharacterError();\n return new ProcessingInstruction(this, target, data);\n }},\n\n createAttribute: { value: function(localName) {\n localName = String(localName);\n if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n if (this.isHTML) {\n localName = utils.toASCIILowerCase(localName);\n }\n return new Element._Attr(null, localName, null, null, '');\n }},\n createAttributeNS: { value: function(namespace, qualifiedName) {\n // Convert parameter types according to WebIDL\n namespace =\n (namespace === null || namespace === undefined || namespace === '') ? null :\n String(namespace);\n qualifiedName = String(qualifiedName);\n var ve = validateAndExtract(namespace, qualifiedName);\n return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, '');\n }},\n\n createElement: { value: function(localName) {\n localName = String(localName);\n if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n // Per spec, namespace should be HTML namespace if \"context object is\n // an HTML document or context object's content type is\n // \"application/xhtml+xml\", and null otherwise.\n if (this.isHTML) {\n if (/[A-Z]/.test(localName))\n localName = utils.toASCIILowerCase(localName);\n return html.createElement(this, localName, null);\n } else if (this.contentType === 'application/xhtml+xml') {\n return html.createElement(this, localName, null);\n } else {\n return new Element(this, localName, null, null);\n }\n }, writable: isApiWritable },\n\n createElementNS: { value: function(namespace, qualifiedName) {\n // Convert parameter types according to WebIDL\n namespace =\n (namespace === null || namespace === undefined || namespace === '') ? null :\n String(namespace);\n qualifiedName = String(qualifiedName);\n var ve = validateAndExtract(namespace, qualifiedName);\n return this._createElementNS(ve.localName, ve.namespace, ve.prefix);\n }, writable: isApiWritable },\n\n // This is used directly by HTML parser, which allows it to create\n // elements with localNames containing ':' and non-default namespaces\n _createElementNS: { value: function(localName, namespace, prefix) {\n if (namespace === NAMESPACE.HTML) {\n return html.createElement(this, localName, prefix);\n }\n else if (namespace === NAMESPACE.SVG) {\n return svg.createElement(this, localName, prefix);\n }\n\n return new Element(this, localName, namespace, prefix);\n }},\n\n createEvent: { value: function createEvent(interfaceName) {\n interfaceName = interfaceName.toLowerCase();\n var name = replacementEvent[interfaceName] || interfaceName;\n var constructor = events[supportedEvents[name]];\n\n if (constructor) {\n var e = new constructor();\n e._initialized = false;\n return e;\n }\n else {\n utils.NotSupportedError();\n }\n }},\n\n // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker\n createTreeWalker: {value: function (root, whatToShow, filter) {\n if (!root) { throw new TypeError(\"root argument is required\"); }\n if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n filter = filter === undefined ? null : filter;\n\n return new TreeWalker(root, whatToShow, filter);\n }},\n\n // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator\n createNodeIterator: {value: function (root, whatToShow, filter) {\n if (!root) { throw new TypeError(\"root argument is required\"); }\n if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n filter = filter === undefined ? null : filter;\n\n return new NodeIterator(root, whatToShow, filter);\n }},\n\n _attachNodeIterator: { value: function(ni) {\n // XXX ideally this should be a weak reference from Document to NodeIterator\n if (!this._nodeIterators) { this._nodeIterators = []; }\n this._nodeIterators.push(ni);\n }},\n\n _detachNodeIterator: { value: function(ni) {\n // ni should always be in list of node iterators\n var idx = this._nodeIterators.indexOf(ni);\n this._nodeIterators.splice(idx, 1);\n }},\n\n _preremoveNodeIterators: { value: function(toBeRemoved) {\n if (this._nodeIterators) {\n this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); });\n }\n }},\n\n // Maintain the documentElement and\n // doctype properties of the document. Each of the following\n // methods chains to the Node implementation of the method\n // to do the actual inserting, removal or replacement.\n\n _updateDocTypeElement: { value: function _updateDocTypeElement() {\n this.doctype = this.documentElement = null;\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === Node.DOCUMENT_TYPE_NODE)\n this.doctype = kid;\n else if (kid.nodeType === Node.ELEMENT_NODE)\n this.documentElement = kid;\n }\n }},\n\n insertBefore: { value: function insertBefore(child, refChild) {\n Node.prototype.insertBefore.call(this, child, refChild);\n this._updateDocTypeElement();\n return child;\n }},\n\n replaceChild: { value: function replaceChild(node, child) {\n Node.prototype.replaceChild.call(this, node, child);\n this._updateDocTypeElement();\n return child;\n }},\n\n removeChild: { value: function removeChild(child) {\n Node.prototype.removeChild.call(this, child);\n this._updateDocTypeElement();\n return child;\n }},\n\n getElementById: { value: function(id) {\n var n = this.byId[id];\n if (!n) return null;\n if (n instanceof MultiId) { // there was more than one element with this id\n return n.getFirst();\n }\n return n;\n }},\n\n _hasMultipleElementsWithId: { value: function(id) {\n // Used internally by querySelectorAll optimization\n return (this.byId[id] instanceof MultiId);\n }},\n\n // Just copy this method from the Element prototype\n getElementsByName: { value: Element.prototype.getElementsByName },\n getElementsByTagName: { value: Element.prototype.getElementsByTagName },\n getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS },\n getElementsByClassName: { value: Element.prototype.getElementsByClassName },\n\n adoptNode: { value: function adoptNode(node) {\n if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError();\n if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; }\n\n if (node.parentNode) node.parentNode.removeChild(node);\n\n if (node.ownerDocument !== this)\n recursivelySetOwner(node, this);\n\n return node;\n }},\n\n importNode: { value: function importNode(node, deep) {\n return this.adoptNode(node.cloneNode(deep));\n }, writable: isApiWritable },\n\n // The following attributes and methods are from the HTML spec\n origin: { get: function origin() { return null; } },\n characterSet: { get: function characterSet() { return \"UTF-8\"; } },\n contentType: { get: function contentType() { return this._contentType; } },\n URL: { get: function URL() { return this._address; } },\n domain: { get: utils.nyi, set: utils.nyi },\n referrer: { get: utils.nyi },\n cookie: { get: utils.nyi, set: utils.nyi },\n lastModified: { get: utils.nyi },\n location: {\n\tget: function() {\n\t return this.defaultView ? this.defaultView.location : null; // gh #75\n\t},\n\tset: utils.nyi\n },\n _titleElement: {\n get: function() {\n // The title element of a document is the first title element in the\n // document in tree order, if there is one, or null otherwise.\n return this.getElementsByTagName('title').item(0) || null;\n }\n },\n title: {\n get: function() {\n var elt = this._titleElement;\n // The child text content of the title element, or '' if null.\n var value = elt ? elt.textContent : '';\n // Strip and collapse whitespace in value\n return value.replace(/[ \\t\\n\\r\\f]+/g, ' ').replace(/(^ )|( $)/g, '');\n },\n set: function(value) {\n var elt = this._titleElement;\n var head = this.head;\n if (!elt && !head) { return; /* according to spec */ }\n if (!elt) {\n elt = this.createElement('title');\n head.appendChild(elt);\n }\n elt.textContent = value;\n }\n },\n dir: mirrorAttr(function() {\n var htmlElement = this.documentElement;\n if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; }\n }, 'dir', ''),\n fgColor: mirrorAttr(function() { return this.body; }, 'text', ''),\n linkColor: mirrorAttr(function() { return this.body; }, 'link', ''),\n vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''),\n alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''),\n bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''),\n\n // Historical aliases of Document#characterSet\n charset: { get: function() { return this.characterSet; } },\n inputEncoding: { get: function() { return this.characterSet; } },\n\n scrollingElement: {\n get: function() {\n return this._quirks ? this.body : this.documentElement;\n }\n },\n\n // Return the first child of the document element.\n // XXX For now, setting this attribute is not implemented.\n body: {\n get: function() {\n return namedHTMLChild(this.documentElement, 'body');\n },\n set: utils.nyi\n },\n // Return the first child of the document element.\n head: { get: function() {\n return namedHTMLChild(this.documentElement, 'head');\n }},\n images: { get: utils.nyi },\n embeds: { get: utils.nyi },\n plugins: { get: utils.nyi },\n links: { get: utils.nyi },\n forms: { get: utils.nyi },\n scripts: { get: utils.nyi },\n applets: { get: function() { return []; } },\n activeElement: { get: function() { return null; } },\n innerHTML: {\n get: function() { return this.serialize(); },\n set: utils.nyi\n },\n outerHTML: {\n get: function() { return this.serialize(); },\n set: utils.nyi\n },\n\n write: { value: function(args) {\n if (!this.isHTML) utils.InvalidStateError();\n\n // XXX: still have to implement the ignore part\n if (!this._parser /* && this._ignore_destructive_writes > 0 */ )\n return;\n\n if (!this._parser) {\n // XXX call document.open, etc.\n }\n\n var s = arguments.join('');\n\n // If the Document object's reload override flag is set, then\n // append the string consisting of the concatenation of all the\n // arguments to the method to the Document's reload override\n // buffer.\n // XXX: don't know what this is about. Still have to do it\n\n // If there is no pending parsing-blocking script, have the\n // tokenizer process the characters that were inserted, one at a\n // time, processing resulting tokens as they are emitted, and\n // stopping when the tokenizer reaches the insertion point or when\n // the processing of the tokenizer is aborted by the tree\n // construction stage (this can happen if a script end tag token is\n // emitted by the tokenizer).\n\n // XXX: still have to do the above. Sounds as if we don't\n // always call parse() here. If we're blocked, then we just\n // insert the text into the stream but don't parse it reentrantly...\n\n // Invoke the parser reentrantly\n this._parser.parse(s);\n }},\n\n writeln: { value: function writeln(args) {\n this.write(Array.prototype.join.call(arguments, '') + '\\n');\n }},\n\n open: { value: function() {\n this.documentElement = null;\n }},\n\n close: { value: function() {\n this.readyState = 'interactive';\n this._dispatchEvent(new Event('readystatechange'), true);\n this._dispatchEvent(new Event('DOMContentLoaded'), true);\n this.readyState = 'complete';\n this._dispatchEvent(new Event('readystatechange'), true);\n if (this.defaultView) {\n this.defaultView._dispatchEvent(new Event('load'), true);\n }\n }},\n\n // Utility methods\n clone: { value: function clone() {\n var d = new Document(this.isHTML, this._address);\n d._quirks = this._quirks;\n d._contentType = this._contentType;\n return d;\n }},\n\n // We need to adopt the nodes if we do a deep clone\n cloneNode: { value: function cloneNode(deep) {\n var clone = Node.prototype.cloneNode.call(this, false);\n if (deep) {\n for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n clone._appendChild(clone.importNode(kid, true));\n }\n }\n clone._updateDocTypeElement();\n return clone;\n }},\n\n isEqual: { value: function isEqual(n) {\n // Any two documents are shallowly equal.\n // Node.isEqualNode will also test the children\n return true;\n }},\n\n // Implementation-specific function. Called when a text, comment,\n // or pi value changes.\n mutateValue: { value: function(node) {\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.VALUE,\n target: node,\n data: node.data\n });\n }\n }},\n\n // Invoked when an attribute's value changes. Attr holds the new\n // value. oldval is the old value. Attribute mutations can also\n // involve changes to the prefix (and therefore the qualified name)\n mutateAttr: { value: function(attr, oldval) {\n // Manage id->element mapping for getElementsById()\n // XXX: this special case id handling should not go here,\n // but in the attribute declaration for the id attribute\n /*\n if (attr.localName === 'id' && attr.namespaceURI === null) {\n if (oldval) delId(oldval, attr.ownerElement);\n addId(attr.value, attr.ownerElement);\n }\n */\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.ATTR,\n target: attr.ownerElement,\n attr: attr\n });\n }\n }},\n\n // Used by removeAttribute and removeAttributeNS for attributes.\n mutateRemoveAttr: { value: function(attr) {\n/*\n* This is now handled in Attributes.js\n // Manage id to element mapping\n if (attr.localName === 'id' && attr.namespaceURI === null) {\n this.delId(attr.value, attr.ownerElement);\n }\n*/\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.REMOVE_ATTR,\n target: attr.ownerElement,\n attr: attr\n });\n }\n }},\n\n // Called by Node.removeChild, etc. to remove a rooted element from\n // the tree. Only needs to generate a single mutation event when a\n // node is removed, but must recursively mark all descendants as not\n // rooted.\n mutateRemove: { value: function(node) {\n // Send a single mutation event\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.REMOVE,\n target: node.parentNode,\n node: node\n });\n }\n\n // Mark this and all descendants as not rooted\n recursivelyUproot(node);\n }},\n\n // Called when a new element becomes rooted. It must recursively\n // generate mutation events for each of the children, and mark them all\n // as rooted.\n mutateInsert: { value: function(node) {\n // Mark node and its descendants as rooted\n recursivelyRoot(node);\n\n // Send a single mutation event\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.INSERT,\n target: node.parentNode,\n node: node\n });\n }\n }},\n\n // Called when a rooted element is moved within the document\n mutateMove: { value: function(node) {\n if (this.mutationHandler) {\n this.mutationHandler({\n type: MUTATE.MOVE,\n target: node\n });\n }\n }},\n\n\n // Add a mapping from id to n for n.ownerDocument\n addId: { value: function addId(id, n) {\n var val = this.byId[id];\n if (!val) {\n this.byId[id] = n;\n }\n else {\n // TODO: Add a way to opt-out console warnings\n //console.warn('Duplicate element id ' + id);\n if (!(val instanceof MultiId)) {\n val = new MultiId(val);\n this.byId[id] = val;\n }\n val.add(n);\n }\n }},\n\n // Delete the mapping from id to n for n.ownerDocument\n delId: { value: function delId(id, n) {\n var val = this.byId[id];\n utils.assert(val);\n\n if (val instanceof MultiId) {\n val.del(n);\n if (val.length === 1) { // convert back to a single node\n this.byId[id] = val.downgrade();\n }\n }\n else {\n this.byId[id] = undefined;\n }\n }},\n\n _resolve: { value: function(href) {\n //XXX: Cache the URL\n return new URL(this._documentBaseURL).resolve(href);\n }},\n\n _documentBaseURL: { get: function() {\n // XXX: This is not implemented correctly yet\n var url = this._address;\n if (url === 'about:blank') url = '/';\n\n var base = this.querySelector('base[href]');\n if (base) {\n return new URL(url).resolve(base.getAttribute('href'));\n }\n return url;\n\n // The document base URL of a Document object is the\n // absolute URL obtained by running these substeps:\n\n // Let fallback base url be the document's address.\n\n // If fallback base url is about:blank, and the\n // Document's browsing context has a creator browsing\n // context, then let fallback base url be the document\n // base URL of the creator Document instead.\n\n // If the Document is an iframe srcdoc document, then\n // let fallback base url be the document base URL of\n // the Document's browsing context's browsing context\n // container's Document instead.\n\n // If there is no base element that has an href\n // attribute, then the document base URL is fallback\n // base url; abort these steps. Otherwise, let url be\n // the value of the href attribute of the first such\n // element.\n\n // Resolve url relative to fallback base url (thus,\n // the base href attribute isn't affected by xml:base\n // attributes).\n\n // The document base URL is the result of the previous\n // step if it was successful; otherwise it is fallback\n // base url.\n }},\n\n _templateDoc: { get: function() {\n if (!this._templateDocCache) {\n // \"associated inert template document\"\n var newDoc = new Document(this.isHTML, this._address);\n this._templateDocCache = newDoc._templateDocCache = newDoc;\n }\n return this._templateDocCache;\n }},\n\n querySelector: { value: function(selector) {\n return select(selector, this)[0];\n }},\n\n querySelectorAll: { value: function(selector) {\n var nodes = select(selector, this);\n return nodes.item ? nodes : new NodeList(nodes);\n }}\n\n});\n\n\nvar eventHandlerTypes = [\n 'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu',\n 'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave',\n 'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended',\n 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata',\n 'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout',\n 'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing',\n 'progress', 'ratechange', 'readystatechange', 'reset', 'seeked',\n 'seeking', 'select', 'show', 'stalled', 'submit', 'suspend',\n 'timeupdate', 'volumechange', 'waiting',\n\n 'blur', 'error', 'focus', 'load', 'scroll'\n];\n\n// Add event handler idl attribute getters and setters to Document\neventHandlerTypes.forEach(function(type) {\n // Define the event handler registration IDL attribute for this type\n Object.defineProperty(Document.prototype, 'on' + type, {\n get: function() {\n return this._getEventHandler(type);\n },\n set: function(v) {\n this._setEventHandler(type, v);\n }\n });\n});\n\nfunction namedHTMLChild(parent, name) {\n if (parent && parent.isHTML) {\n for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n if (kid.nodeType === Node.ELEMENT_NODE &&\n kid.localName === name &&\n kid.namespaceURI === NAMESPACE.HTML) {\n return kid;\n }\n }\n }\n return null;\n}\n\nfunction root(n) {\n n._nid = n.ownerDocument._nextnid++;\n n.ownerDocument._nodes[n._nid] = n;\n // Manage id to element mapping\n if (n.nodeType === Node.ELEMENT_NODE) {\n var id = n.getAttribute('id');\n if (id) n.ownerDocument.addId(id, n);\n\n // Script elements need to know when they're inserted\n // into the document\n if (n._roothook) n._roothook();\n }\n}\n\nfunction uproot(n) {\n // Manage id to element mapping\n if (n.nodeType === Node.ELEMENT_NODE) {\n var id = n.getAttribute('id');\n if (id) n.ownerDocument.delId(id, n);\n }\n n.ownerDocument._nodes[n._nid] = undefined;\n n._nid = undefined;\n}\n\nfunction recursivelyRoot(node) {\n root(node);\n // XXX:\n // accessing childNodes on a leaf node creates a new array the\n // first time, so be careful to write this loop so that it\n // doesn't do that. node is polymorphic, so maybe this is hard to\n // optimize? Try switching on nodeType?\n/*\n if (node.hasChildNodes()) {\n var kids = node.childNodes;\n for(var i = 0, n = kids.length; i < n; i++)\n recursivelyRoot(kids[i]);\n }\n*/\n if (node.nodeType === Node.ELEMENT_NODE) {\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n recursivelyRoot(kid);\n }\n}\n\nfunction recursivelyUproot(node) {\n uproot(node);\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n recursivelyUproot(kid);\n}\n\nfunction recursivelySetOwner(node, owner) {\n node.ownerDocument = owner;\n node._lastModTime = undefined; // mod times are document-based\n if (Object.prototype.hasOwnProperty.call(node, '_tagName')) {\n node._tagName = undefined; // Element subclasses might need to change case\n }\n for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n recursivelySetOwner(kid, owner);\n}\n\n// A class for storing multiple nodes with the same ID\nfunction MultiId(node) {\n this.nodes = Object.create(null);\n this.nodes[node._nid] = node;\n this.length = 1;\n this.firstNode = undefined;\n}\n\n// Add a node to the list, with O(1) time\nMultiId.prototype.add = function(node) {\n if (!this.nodes[node._nid]) {\n this.nodes[node._nid] = node;\n this.length++;\n this.firstNode = undefined;\n }\n};\n\n// Remove a node from the list, with O(1) time\nMultiId.prototype.del = function(node) {\n if (this.nodes[node._nid]) {\n delete this.nodes[node._nid];\n this.length--;\n this.firstNode = undefined;\n }\n};\n\n// Get the first node from the list, in the document order\n// Takes O(N) time in the size of the list, with a cache that is invalidated\n// when the list is modified.\nMultiId.prototype.getFirst = function() {\n /* jshint bitwise: false */\n if (!this.firstNode) {\n var nid;\n for (nid in this.nodes) {\n if (this.firstNode === undefined ||\n this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) {\n this.firstNode = this.nodes[nid];\n }\n }\n }\n return this.firstNode;\n};\n\n// If there is only one node left, return it. Otherwise return \"this\".\nMultiId.prototype.downgrade = function() {\n if (this.length === 1) {\n var nid;\n for (nid in this.nodes) {\n return this.nodes[nid];\n }\n }\n return this;\n};\n","\"use strict\";\nmodule.exports = DocumentType;\n\nvar Node = require('./Node');\nvar Leaf = require('./Leaf');\nvar ChildNode = require('./ChildNode');\n\nfunction DocumentType(ownerDocument, name, publicId, systemId) {\n Leaf.call(this);\n this.nodeType = Node.DOCUMENT_TYPE_NODE;\n this.ownerDocument = ownerDocument || null;\n this.name = name;\n this.publicId = publicId || \"\";\n this.systemId = systemId || \"\";\n}\n\nDocumentType.prototype = Object.create(Leaf.prototype, {\n nodeName: { get: function() { return this.name; }},\n nodeValue: {\n get: function() { return null; },\n set: function() {}\n },\n\n // Utility methods\n clone: { value: function clone() {\n return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId);\n }},\n\n isEqual: { value: function isEqual(n) {\n return this.name === n.name &&\n this.publicId === n.publicId &&\n this.systemId === n.systemId;\n }}\n});\n\nObject.defineProperties(DocumentType.prototype, ChildNode);\n","\"use strict\";\nmodule.exports = HTMLParser;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar Node = require('./Node');\nvar NAMESPACE = require('./utils').NAMESPACE;\nvar html = require('./htmlelts');\nvar impl = html.elements;\n\nvar pushAll = Function.prototype.apply.bind(Array.prototype.push);\n\n/*\n * This file contains an implementation of the HTML parsing algorithm.\n * The algorithm and the implementation are complex because HTML\n * explicitly defines how the parser should behave for all possible\n * valid and invalid inputs.\n *\n * Usage:\n *\n * The file defines a single HTMLParser() function, which dom.js exposes\n * publicly as document.implementation.mozHTMLParser(). This is a\n * factory function, not a constructor.\n *\n * When you call document.implementation.mozHTMLParser(), it returns\n * an object that has parse() and document() methods. To parse HTML text,\n * pass the text (in one or more chunks) to the parse() method. When\n * you've passed all the text (on the last chunk, or afterward) pass\n * true as the second argument to parse() to tell the parser that there\n * is no more coming. Call document() to get the document object that\n * the parser is parsing into. You can call this at any time, before\n * or after calling parse().\n *\n * The first argument to mozHTMLParser is the absolute URL of the document.\n *\n * The second argument is optional and is for internal use only. Pass an\n * element as the fragmentContext to do innerHTML parsing for the\n * element. To do innerHTML parsing on a document, pass null. Otherwise,\n * omit the 2nd argument. See HTMLElement.innerHTML for an example. Note\n * that if you pass a context element, the end() method will return an\n * unwrapped document instead of a wrapped one.\n *\n * Implementation details:\n *\n * This is a long file of almost 7000 lines. It is structured as one\n * big function nested within another big function. The outer\n * function defines a bunch of constant data, utility functions\n * that use that data, and a couple of classes used by the parser.\n * The outer function also defines and returns the\n * inner function. This inner function is the HTMLParser factory\n * function that implements the parser and holds all the parser state\n * as local variables. The HTMLParser function is quite big because\n * it defines many nested functions that use those local variables.\n *\n * There are three tightly coupled parser stages: a scanner, a\n * tokenizer and a tree builder. In a (possibly misguided) attempt at\n * efficiency, the stages are not implemented as separate classes:\n * everything shares state and is (mostly) implemented in imperative\n * (rather than OO) style.\n *\n * The stages of the parser work like this: When the client code calls\n * the parser's parse() method, the specified string is passed to\n * scanChars(). The scanner loops through that string and passes characters\n * (sometimes one at a time, sometimes in chunks) to the tokenizer stage.\n * The tokenizer groups the characters into tokens: tags, endtags, runs\n * of text, comments, doctype declarations, and the end-of-file (EOF)\n * token. These tokens are then passed to the tree building stage via\n * the insertToken() function. The tree building stage builds up the\n * document tree.\n *\n * The tokenizer stage is a finite state machine. Each state is\n * implemented as a function with a name that ends in \"_state\". The\n * initial state is data_state(). The current tokenizer state is stored\n * in the variable 'tokenizer'. Most state functions expect a single\n * integer argument which represents a single UTF-16 codepoint. Some\n * states want more characters and set a lookahead property on\n * themselves. The scanChars() function in the scanner checks for this\n * lookahead property. If it doesn't exist, then scanChars() just passes\n * the next input character to the current tokenizer state function.\n * Otherwise, scanChars() looks ahead (a given # of characters, or for a\n * matching string, or for a matching regexp) and passes a string of\n * characters to the current tokenizer state function.\n *\n * As a shortcut, certain states of the tokenizer use regular expressions\n * to look ahead in the scanner's input buffer for runs of text, simple\n * tags and attributes. For well-formed input, these shortcuts skip a\n * lot of state transitions and speed things up a bit.\n *\n * When a tokenizer state function has consumed a complete token, it\n * emits that token, by calling insertToken(), or by calling a utility\n * function that itself calls insertToken(). These tokens are passed to\n * the tree building stage, which is also a state machine. Like the\n * tokenizer, the tree building states are implemented as functions, and\n * these functions have names that end with _mode (because the HTML spec\n * refers to them as insertion modes). The current insertion mode is held\n * by the 'parser' variable. Each insertion mode function takes up to 4\n * arguments. The first is a token type, represented by the constants\n * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF. The second argument is\n * the value of the token: the text or comment data, or tagname or\n * doctype. For tags, the 3rd argument is an array of attributes. For\n * DOCTYPES it is the optional public id. For tags, the 4th argument is\n * true if the tag is self-closing. For doctypes, the 4th argument is the\n * optional system id.\n *\n * Search for \"***\" to find the major sub-divisions in the code.\n */\n\n\n/***\n * Data prolog. Lots of constants declared here, including some\n * very large objects. They're used throughout the code that follows\n */\n// Token types for the tree builder.\nvar EOF = -1;\nvar TEXT = 1;\nvar TAG = 2;\nvar ENDTAG = 3;\nvar COMMENT = 4;\nvar DOCTYPE = 5;\n\n// A re-usable empty array\nvar NOATTRS = [];\n\n// These DTD public ids put the browser in quirks mode\nvar quirkyPublicIds = /^HTML$|^-\\/\\/W3O\\/\\/DTD W3 HTML Strict 3\\.0\\/\\/EN\\/\\/$|^-\\/W3C\\/DTD HTML 4\\.0 Transitional\\/EN$|^\\+\\/\\/Silmaril\\/\\/dtd html Pro v0r11 19970101\\/\\/|^-\\/\\/AdvaSoft Ltd\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/AS\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.1E\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML\\/\\/|^-\\/\\/Metrius\\/\\/DTD Metrius Presentational\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 Tables\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 Tables\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD HTML\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD Strict HTML\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended 1\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended Relaxed 1\\.0\\/\\/|^-\\/\\/SoftQuad Software\\/\\/DTD HoTMetaL PRO 6\\.0::19990601::extensions to HTML 4\\.0\\/\\/|^-\\/\\/SoftQuad\\/\\/DTD HoTMetaL PRO 4\\.0::19971010::extensions to HTML 4\\.0\\/\\/|^-\\/\\/Spyglass\\/\\/DTD HTML 2\\.0 Extended\\/\\/|^-\\/\\/SQ\\/\\/DTD HTML 2\\.0 HoTMetaL \\+ extensions\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava HTML\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava Strict HTML\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3 1995-03-24\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2S Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Transitional\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 19960712\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 970421\\/\\/|^-\\/\\/W3C\\/\\/DTD W3 HTML\\/\\/|^-\\/\\/W3O\\/\\/DTD W3 HTML 3\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML 2\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML\\/\\//i;\n\nvar quirkySystemId = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\n\nvar conditionallyQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Transitional\\/\\//i;\n\n// These DTD public ids put the browser in limited quirks mode\nvar limitedQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Transitional\\/\\//i;\n\n\n// Element sets below. See the isA() function for a way to test\n// whether an element is a member of a set\nvar specialSet = Object.create(null);\nspecialSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"address\":true, \"applet\":true, \"area\":true, \"article\":true,\n \"aside\":true, \"base\":true, \"basefont\":true, \"bgsound\":true,\n \"blockquote\":true, \"body\":true, \"br\":true, \"button\":true,\n \"caption\":true, \"center\":true, \"col\":true, \"colgroup\":true,\n \"dd\":true, \"details\":true, \"dir\":true,\n \"div\":true, \"dl\":true, \"dt\":true, \"embed\":true,\n \"fieldset\":true, \"figcaption\":true, \"figure\":true, \"footer\":true,\n \"form\":true, \"frame\":true, \"frameset\":true, \"h1\":true,\n \"h2\":true, \"h3\":true, \"h4\":true, \"h5\":true,\n \"h6\":true, \"head\":true, \"header\":true, \"hgroup\":true,\n \"hr\":true, \"html\":true, \"iframe\":true, \"img\":true,\n \"input\":true, \"li\":true, \"link\":true,\n \"listing\":true, \"main\":true, \"marquee\":true, \"menu\":true, \"meta\":true,\n \"nav\":true, \"noembed\":true, \"noframes\":true, \"noscript\":true,\n \"object\":true, \"ol\":true, \"p\":true, \"param\":true,\n \"plaintext\":true, \"pre\":true, \"script\":true, \"section\":true,\n \"select\":true, \"source\":true, \"style\":true, \"summary\":true, \"table\":true,\n \"tbody\":true, \"td\":true, \"template\":true, \"textarea\":true, \"tfoot\":true,\n \"th\":true, \"thead\":true, \"title\":true, \"tr\":true, \"track\":true,\n // Note that \"xmp\" was removed from the \"special\" set in the latest\n // spec, apparently by accident; see\n // https://github.com/whatwg/html/pull/1919\n \"ul\":true, \"wbr\":true, \"xmp\":true\n};\nspecialSet[NAMESPACE.SVG] = {\n __proto__: null,\n \"foreignObject\": true, \"desc\": true, \"title\": true\n};\nspecialSet[NAMESPACE.MATHML] = {\n __proto__: null,\n \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n \"mtext\":true, \"annotation-xml\":true\n};\n\n// The set of address, div, and p HTML tags\nvar addressdivpSet = Object.create(null);\naddressdivpSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"address\":true, \"div\":true, \"p\":true\n};\n\nvar dddtSet = Object.create(null);\ndddtSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"dd\":true, \"dt\":true\n};\n\nvar tablesectionrowSet = Object.create(null);\ntablesectionrowSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"table\":true, \"thead\":true, \"tbody\":true, \"tfoot\":true, \"tr\":true\n};\n\nvar impliedEndTagsSet = Object.create(null);\nimpliedEndTagsSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"dd\": true, \"dt\": true, \"li\": true, \"menuitem\": true, \"optgroup\": true,\n \"option\": true, \"p\": true, \"rb\": true, \"rp\": true, \"rt\": true, \"rtc\": true\n};\n\nvar thoroughImpliedEndTagsSet = Object.create(null);\nthoroughImpliedEndTagsSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"caption\": true, \"colgroup\": true, \"dd\": true, \"dt\": true, \"li\": true,\n \"optgroup\": true, \"option\": true, \"p\": true, \"rb\": true, \"rp\": true,\n \"rt\": true, \"rtc\": true, \"tbody\": true, \"td\": true, \"tfoot\": true,\n \"th\": true, \"thead\": true, \"tr\": true\n};\n\nvar tableContextSet = Object.create(null);\ntableContextSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"table\": true, \"template\": true, \"html\": true\n};\n\nvar tableBodyContextSet = Object.create(null);\ntableBodyContextSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"tbody\": true, \"tfoot\": true, \"thead\": true, \"template\": true, \"html\": true\n};\n\nvar tableRowContextSet = Object.create(null);\ntableRowContextSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"tr\": true, \"template\": true, \"html\": true\n};\n\n// See http://www.w3.org/TR/html5/forms.html#form-associated-element\nvar formassociatedSet = Object.create(null);\nformassociatedSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"button\": true, \"fieldset\": true, \"input\": true, \"keygen\": true,\n \"object\": true, \"output\": true, \"select\": true, \"textarea\": true,\n \"img\": true\n};\n\nvar inScopeSet = Object.create(null);\ninScopeSet[NAMESPACE.HTML]= {\n __proto__: null,\n \"applet\":true, \"caption\":true, \"html\":true, \"table\":true,\n \"td\":true, \"th\":true, \"marquee\":true, \"object\":true,\n \"template\":true\n};\ninScopeSet[NAMESPACE.MATHML] = {\n __proto__: null,\n \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n \"mtext\":true, \"annotation-xml\":true\n};\ninScopeSet[NAMESPACE.SVG] = {\n __proto__: null,\n \"foreignObject\":true, \"desc\":true, \"title\":true\n};\n\nvar inListItemScopeSet = Object.create(inScopeSet);\ninListItemScopeSet[NAMESPACE.HTML] =\n Object.create(inScopeSet[NAMESPACE.HTML]);\ninListItemScopeSet[NAMESPACE.HTML].ol = true;\ninListItemScopeSet[NAMESPACE.HTML].ul = true;\n\nvar inButtonScopeSet = Object.create(inScopeSet);\ninButtonScopeSet[NAMESPACE.HTML] =\n Object.create(inScopeSet[NAMESPACE.HTML]);\ninButtonScopeSet[NAMESPACE.HTML].button = true;\n\nvar inTableScopeSet = Object.create(null);\ninTableScopeSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"html\":true, \"table\":true, \"template\":true\n};\n\n// The set of elements for select scope is the everything *except* these\nvar invertedSelectScopeSet = Object.create(null);\ninvertedSelectScopeSet[NAMESPACE.HTML] = {\n __proto__: null,\n \"optgroup\":true, \"option\":true\n};\n\nvar mathmlTextIntegrationPointSet = Object.create(null);\nmathmlTextIntegrationPointSet[NAMESPACE.MATHML] = {\n __proto__: null,\n mi: true,\n mo: true,\n mn: true,\n ms: true,\n mtext: true\n};\n\nvar htmlIntegrationPointSet = Object.create(null);\nhtmlIntegrationPointSet[NAMESPACE.SVG] = {\n __proto__: null,\n foreignObject: true,\n desc: true,\n title: true\n};\n\nvar foreignAttributes = {\n __proto__: null,\n \"xlink:actuate\": NAMESPACE.XLINK, \"xlink:arcrole\": NAMESPACE.XLINK,\n \"xlink:href\": NAMESPACE.XLINK, \"xlink:role\": NAMESPACE.XLINK,\n \"xlink:show\": NAMESPACE.XLINK, \"xlink:title\": NAMESPACE.XLINK,\n \"xlink:type\": NAMESPACE.XLINK, \"xml:base\": NAMESPACE.XML,\n \"xml:lang\": NAMESPACE.XML, \"xml:space\": NAMESPACE.XML,\n \"xmlns\": NAMESPACE.XMLNS, \"xmlns:xlink\": NAMESPACE.XMLNS\n};\n\n\n// Lowercase to mixed case mapping for SVG attributes and tagnames\nvar svgAttrAdjustments = {\n __proto__: null,\n attributename: \"attributeName\", attributetype: \"attributeType\",\n basefrequency: \"baseFrequency\", baseprofile: \"baseProfile\",\n calcmode: \"calcMode\", clippathunits: \"clipPathUnits\",\n diffuseconstant: \"diffuseConstant\",\n edgemode: \"edgeMode\",\n filterunits: \"filterUnits\",\n glyphref: \"glyphRef\", gradienttransform: \"gradientTransform\",\n gradientunits: \"gradientUnits\", kernelmatrix: \"kernelMatrix\",\n kernelunitlength: \"kernelUnitLength\", keypoints: \"keyPoints\",\n keysplines: \"keySplines\", keytimes: \"keyTimes\",\n lengthadjust: \"lengthAdjust\", limitingconeangle: \"limitingConeAngle\",\n markerheight: \"markerHeight\", markerunits: \"markerUnits\",\n markerwidth: \"markerWidth\", maskcontentunits: \"maskContentUnits\",\n maskunits: \"maskUnits\", numoctaves: \"numOctaves\",\n pathlength: \"pathLength\", patterncontentunits: \"patternContentUnits\",\n patterntransform: \"patternTransform\", patternunits: \"patternUnits\",\n pointsatx: \"pointsAtX\", pointsaty: \"pointsAtY\",\n pointsatz: \"pointsAtZ\", preservealpha: \"preserveAlpha\",\n preserveaspectratio: \"preserveAspectRatio\",\n primitiveunits: \"primitiveUnits\", refx: \"refX\",\n refy: \"refY\", repeatcount: \"repeatCount\",\n repeatdur: \"repeatDur\", requiredextensions: \"requiredExtensions\",\n requiredfeatures: \"requiredFeatures\",\n specularconstant: \"specularConstant\",\n specularexponent: \"specularExponent\", spreadmethod: \"spreadMethod\",\n startoffset: \"startOffset\", stddeviation: \"stdDeviation\",\n stitchtiles: \"stitchTiles\", surfacescale: \"surfaceScale\",\n systemlanguage: \"systemLanguage\", tablevalues: \"tableValues\",\n targetx: \"targetX\", targety: \"targetY\",\n textlength: \"textLength\", viewbox: \"viewBox\",\n viewtarget: \"viewTarget\", xchannelselector: \"xChannelSelector\",\n ychannelselector: \"yChannelSelector\", zoomandpan: \"zoomAndPan\"\n};\n\nvar svgTagNameAdjustments = {\n __proto__: null,\n altglyph: \"altGlyph\", altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\", animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\", animatetransform: \"animateTransform\",\n clippath: \"clipPath\", feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\", fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\", feflood: \"feFlood\",\n fefunca: \"feFuncA\", fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\", fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\", feimage: \"feImage\",\n femerge: \"feMerge\", femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\", feoffset: \"feOffset\",\n fepointlight: \"fePointLight\", fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\", fetile: \"feTile\",\n feturbulence: \"feTurbulence\", foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\", lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\", textpath: \"textPath\"\n};\n\n\n// Data for parsing numeric and named character references\n// These next 3 objects are direct translations of tables\n// in the HTML spec into JavaScript object format\nvar numericCharRefReplacements = {\n __proto__: null,\n 0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E,\n 0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030,\n 0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018,\n 0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013,\n 0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A,\n 0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178\n};\n\n/*\n * This table is generated with test/tools/update-entities.js\n */\nvar namedCharRefs = {\n __proto__: null,\n \"AElig\":0xc6, \"AElig;\":0xc6,\n \"AMP\":0x26, \"AMP;\":0x26,\n \"Aacute\":0xc1, \"Aacute;\":0xc1,\n \"Abreve;\":0x102, \"Acirc\":0xc2,\n \"Acirc;\":0xc2, \"Acy;\":0x410,\n \"Afr;\":[0xd835,0xdd04], \"Agrave\":0xc0,\n \"Agrave;\":0xc0, \"Alpha;\":0x391,\n \"Amacr;\":0x100, \"And;\":0x2a53,\n \"Aogon;\":0x104, \"Aopf;\":[0xd835,0xdd38],\n \"ApplyFunction;\":0x2061, \"Aring\":0xc5,\n \"Aring;\":0xc5, \"Ascr;\":[0xd835,0xdc9c],\n \"Assign;\":0x2254, \"Atilde\":0xc3,\n \"Atilde;\":0xc3, \"Auml\":0xc4,\n \"Auml;\":0xc4, \"Backslash;\":0x2216,\n \"Barv;\":0x2ae7, \"Barwed;\":0x2306,\n \"Bcy;\":0x411, \"Because;\":0x2235,\n \"Bernoullis;\":0x212c, \"Beta;\":0x392,\n \"Bfr;\":[0xd835,0xdd05], \"Bopf;\":[0xd835,0xdd39],\n \"Breve;\":0x2d8, \"Bscr;\":0x212c,\n \"Bumpeq;\":0x224e, \"CHcy;\":0x427,\n \"COPY\":0xa9, \"COPY;\":0xa9,\n \"Cacute;\":0x106, \"Cap;\":0x22d2,\n \"CapitalDifferentialD;\":0x2145, \"Cayleys;\":0x212d,\n \"Ccaron;\":0x10c, \"Ccedil\":0xc7,\n \"Ccedil;\":0xc7, \"Ccirc;\":0x108,\n \"Cconint;\":0x2230, \"Cdot;\":0x10a,\n \"Cedilla;\":0xb8, \"CenterDot;\":0xb7,\n \"Cfr;\":0x212d, \"Chi;\":0x3a7,\n \"CircleDot;\":0x2299, \"CircleMinus;\":0x2296,\n \"CirclePlus;\":0x2295, \"CircleTimes;\":0x2297,\n \"ClockwiseContourIntegral;\":0x2232, \"CloseCurlyDoubleQuote;\":0x201d,\n \"CloseCurlyQuote;\":0x2019, \"Colon;\":0x2237,\n \"Colone;\":0x2a74, \"Congruent;\":0x2261,\n \"Conint;\":0x222f, \"ContourIntegral;\":0x222e,\n \"Copf;\":0x2102, \"Coproduct;\":0x2210,\n \"CounterClockwiseContourIntegral;\":0x2233, \"Cross;\":0x2a2f,\n \"Cscr;\":[0xd835,0xdc9e], \"Cup;\":0x22d3,\n \"CupCap;\":0x224d, \"DD;\":0x2145,\n \"DDotrahd;\":0x2911, \"DJcy;\":0x402,\n \"DScy;\":0x405, \"DZcy;\":0x40f,\n \"Dagger;\":0x2021, \"Darr;\":0x21a1,\n \"Dashv;\":0x2ae4, \"Dcaron;\":0x10e,\n \"Dcy;\":0x414, \"Del;\":0x2207,\n \"Delta;\":0x394, \"Dfr;\":[0xd835,0xdd07],\n \"DiacriticalAcute;\":0xb4, \"DiacriticalDot;\":0x2d9,\n \"DiacriticalDoubleAcute;\":0x2dd, \"DiacriticalGrave;\":0x60,\n \"DiacriticalTilde;\":0x2dc, \"Diamond;\":0x22c4,\n \"DifferentialD;\":0x2146, \"Dopf;\":[0xd835,0xdd3b],\n \"Dot;\":0xa8, \"DotDot;\":0x20dc,\n \"DotEqual;\":0x2250, \"DoubleContourIntegral;\":0x222f,\n \"DoubleDot;\":0xa8, \"DoubleDownArrow;\":0x21d3,\n \"DoubleLeftArrow;\":0x21d0, \"DoubleLeftRightArrow;\":0x21d4,\n \"DoubleLeftTee;\":0x2ae4, \"DoubleLongLeftArrow;\":0x27f8,\n \"DoubleLongLeftRightArrow;\":0x27fa, \"DoubleLongRightArrow;\":0x27f9,\n \"DoubleRightArrow;\":0x21d2, \"DoubleRightTee;\":0x22a8,\n \"DoubleUpArrow;\":0x21d1, \"DoubleUpDownArrow;\":0x21d5,\n \"DoubleVerticalBar;\":0x2225, \"DownArrow;\":0x2193,\n \"DownArrowBar;\":0x2913, \"DownArrowUpArrow;\":0x21f5,\n \"DownBreve;\":0x311, \"DownLeftRightVector;\":0x2950,\n \"DownLeftTeeVector;\":0x295e, \"DownLeftVector;\":0x21bd,\n \"DownLeftVectorBar;\":0x2956, \"DownRightTeeVector;\":0x295f,\n \"DownRightVector;\":0x21c1, \"DownRightVectorBar;\":0x2957,\n \"DownTee;\":0x22a4, \"DownTeeArrow;\":0x21a7,\n \"Downarrow;\":0x21d3, \"Dscr;\":[0xd835,0xdc9f],\n \"Dstrok;\":0x110, \"ENG;\":0x14a,\n \"ETH\":0xd0, \"ETH;\":0xd0,\n \"Eacute\":0xc9, \"Eacute;\":0xc9,\n \"Ecaron;\":0x11a, \"Ecirc\":0xca,\n \"Ecirc;\":0xca, \"Ecy;\":0x42d,\n \"Edot;\":0x116, \"Efr;\":[0xd835,0xdd08],\n \"Egrave\":0xc8, \"Egrave;\":0xc8,\n \"Element;\":0x2208, \"Emacr;\":0x112,\n \"EmptySmallSquare;\":0x25fb, \"EmptyVerySmallSquare;\":0x25ab,\n \"Eogon;\":0x118, \"Eopf;\":[0xd835,0xdd3c],\n \"Epsilon;\":0x395, \"Equal;\":0x2a75,\n \"EqualTilde;\":0x2242, \"Equilibrium;\":0x21cc,\n \"Escr;\":0x2130, \"Esim;\":0x2a73,\n \"Eta;\":0x397, \"Euml\":0xcb,\n \"Euml;\":0xcb, \"Exists;\":0x2203,\n \"ExponentialE;\":0x2147, \"Fcy;\":0x424,\n \"Ffr;\":[0xd835,0xdd09], \"FilledSmallSquare;\":0x25fc,\n \"FilledVerySmallSquare;\":0x25aa, \"Fopf;\":[0xd835,0xdd3d],\n \"ForAll;\":0x2200, \"Fouriertrf;\":0x2131,\n \"Fscr;\":0x2131, \"GJcy;\":0x403,\n \"GT\":0x3e, \"GT;\":0x3e,\n \"Gamma;\":0x393, \"Gammad;\":0x3dc,\n \"Gbreve;\":0x11e, \"Gcedil;\":0x122,\n \"Gcirc;\":0x11c, \"Gcy;\":0x413,\n \"Gdot;\":0x120, \"Gfr;\":[0xd835,0xdd0a],\n \"Gg;\":0x22d9, \"Gopf;\":[0xd835,0xdd3e],\n \"GreaterEqual;\":0x2265, \"GreaterEqualLess;\":0x22db,\n \"GreaterFullEqual;\":0x2267, \"GreaterGreater;\":0x2aa2,\n \"GreaterLess;\":0x2277, \"GreaterSlantEqual;\":0x2a7e,\n \"GreaterTilde;\":0x2273, \"Gscr;\":[0xd835,0xdca2],\n \"Gt;\":0x226b, \"HARDcy;\":0x42a,\n \"Hacek;\":0x2c7, \"Hat;\":0x5e,\n \"Hcirc;\":0x124, \"Hfr;\":0x210c,\n \"HilbertSpace;\":0x210b, \"Hopf;\":0x210d,\n \"HorizontalLine;\":0x2500, \"Hscr;\":0x210b,\n \"Hstrok;\":0x126, \"HumpDownHump;\":0x224e,\n \"HumpEqual;\":0x224f, \"IEcy;\":0x415,\n \"IJlig;\":0x132, \"IOcy;\":0x401,\n \"Iacute\":0xcd, \"Iacute;\":0xcd,\n \"Icirc\":0xce, \"Icirc;\":0xce,\n \"Icy;\":0x418, \"Idot;\":0x130,\n \"Ifr;\":0x2111, \"Igrave\":0xcc,\n \"Igrave;\":0xcc, \"Im;\":0x2111,\n \"Imacr;\":0x12a, \"ImaginaryI;\":0x2148,\n \"Implies;\":0x21d2, \"Int;\":0x222c,\n \"Integral;\":0x222b, \"Intersection;\":0x22c2,\n \"InvisibleComma;\":0x2063, \"InvisibleTimes;\":0x2062,\n \"Iogon;\":0x12e, \"Iopf;\":[0xd835,0xdd40],\n \"Iota;\":0x399, \"Iscr;\":0x2110,\n \"Itilde;\":0x128, \"Iukcy;\":0x406,\n \"Iuml\":0xcf, \"Iuml;\":0xcf,\n \"Jcirc;\":0x134, \"Jcy;\":0x419,\n \"Jfr;\":[0xd835,0xdd0d], \"Jopf;\":[0xd835,0xdd41],\n \"Jscr;\":[0xd835,0xdca5], \"Jsercy;\":0x408,\n \"Jukcy;\":0x404, \"KHcy;\":0x425,\n \"KJcy;\":0x40c, \"Kappa;\":0x39a,\n \"Kcedil;\":0x136, \"Kcy;\":0x41a,\n \"Kfr;\":[0xd835,0xdd0e], \"Kopf;\":[0xd835,0xdd42],\n \"Kscr;\":[0xd835,0xdca6], \"LJcy;\":0x409,\n \"LT\":0x3c, \"LT;\":0x3c,\n \"Lacute;\":0x139, \"Lambda;\":0x39b,\n \"Lang;\":0x27ea, \"Laplacetrf;\":0x2112,\n \"Larr;\":0x219e, \"Lcaron;\":0x13d,\n \"Lcedil;\":0x13b, \"Lcy;\":0x41b,\n \"LeftAngleBracket;\":0x27e8, \"LeftArrow;\":0x2190,\n \"LeftArrowBar;\":0x21e4, \"LeftArrowRightArrow;\":0x21c6,\n \"LeftCeiling;\":0x2308, \"LeftDoubleBracket;\":0x27e6,\n \"LeftDownTeeVector;\":0x2961, \"LeftDownVector;\":0x21c3,\n \"LeftDownVectorBar;\":0x2959, \"LeftFloor;\":0x230a,\n \"LeftRightArrow;\":0x2194, \"LeftRightVector;\":0x294e,\n \"LeftTee;\":0x22a3, \"LeftTeeArrow;\":0x21a4,\n \"LeftTeeVector;\":0x295a, \"LeftTriangle;\":0x22b2,\n \"LeftTriangleBar;\":0x29cf, \"LeftTriangleEqual;\":0x22b4,\n \"LeftUpDownVector;\":0x2951, \"LeftUpTeeVector;\":0x2960,\n \"LeftUpVector;\":0x21bf, \"LeftUpVectorBar;\":0x2958,\n \"LeftVector;\":0x21bc, \"LeftVectorBar;\":0x2952,\n \"Leftarrow;\":0x21d0, \"Leftrightarrow;\":0x21d4,\n \"LessEqualGreater;\":0x22da, \"LessFullEqual;\":0x2266,\n \"LessGreater;\":0x2276, \"LessLess;\":0x2aa1,\n \"LessSlantEqual;\":0x2a7d, \"LessTilde;\":0x2272,\n \"Lfr;\":[0xd835,0xdd0f], \"Ll;\":0x22d8,\n \"Lleftarrow;\":0x21da, \"Lmidot;\":0x13f,\n \"LongLeftArrow;\":0x27f5, \"LongLeftRightArrow;\":0x27f7,\n \"LongRightArrow;\":0x27f6, \"Longleftarrow;\":0x27f8,\n \"Longleftrightarrow;\":0x27fa, \"Longrightarrow;\":0x27f9,\n \"Lopf;\":[0xd835,0xdd43], \"LowerLeftArrow;\":0x2199,\n \"LowerRightArrow;\":0x2198, \"Lscr;\":0x2112,\n \"Lsh;\":0x21b0, \"Lstrok;\":0x141,\n \"Lt;\":0x226a, \"Map;\":0x2905,\n \"Mcy;\":0x41c, \"MediumSpace;\":0x205f,\n \"Mellintrf;\":0x2133, \"Mfr;\":[0xd835,0xdd10],\n \"MinusPlus;\":0x2213, \"Mopf;\":[0xd835,0xdd44],\n \"Mscr;\":0x2133, \"Mu;\":0x39c,\n \"NJcy;\":0x40a, \"Nacute;\":0x143,\n \"Ncaron;\":0x147, \"Ncedil;\":0x145,\n \"Ncy;\":0x41d, \"NegativeMediumSpace;\":0x200b,\n \"NegativeThickSpace;\":0x200b, \"NegativeThinSpace;\":0x200b,\n \"NegativeVeryThinSpace;\":0x200b, \"NestedGreaterGreater;\":0x226b,\n \"NestedLessLess;\":0x226a, \"NewLine;\":0xa,\n \"Nfr;\":[0xd835,0xdd11], \"NoBreak;\":0x2060,\n \"NonBreakingSpace;\":0xa0, \"Nopf;\":0x2115,\n \"Not;\":0x2aec, \"NotCongruent;\":0x2262,\n \"NotCupCap;\":0x226d, \"NotDoubleVerticalBar;\":0x2226,\n \"NotElement;\":0x2209, \"NotEqual;\":0x2260,\n \"NotEqualTilde;\":[0x2242,0x338], \"NotExists;\":0x2204,\n \"NotGreater;\":0x226f, \"NotGreaterEqual;\":0x2271,\n \"NotGreaterFullEqual;\":[0x2267,0x338], \"NotGreaterGreater;\":[0x226b,0x338],\n \"NotGreaterLess;\":0x2279, \"NotGreaterSlantEqual;\":[0x2a7e,0x338],\n \"NotGreaterTilde;\":0x2275, \"NotHumpDownHump;\":[0x224e,0x338],\n \"NotHumpEqual;\":[0x224f,0x338], \"NotLeftTriangle;\":0x22ea,\n \"NotLeftTriangleBar;\":[0x29cf,0x338], \"NotLeftTriangleEqual;\":0x22ec,\n \"NotLess;\":0x226e, \"NotLessEqual;\":0x2270,\n \"NotLessGreater;\":0x2278, \"NotLessLess;\":[0x226a,0x338],\n \"NotLessSlantEqual;\":[0x2a7d,0x338], \"NotLessTilde;\":0x2274,\n \"NotNestedGreaterGreater;\":[0x2aa2,0x338], \"NotNestedLessLess;\":[0x2aa1,0x338],\n \"NotPrecedes;\":0x2280, \"NotPrecedesEqual;\":[0x2aaf,0x338],\n \"NotPrecedesSlantEqual;\":0x22e0, \"NotReverseElement;\":0x220c,\n \"NotRightTriangle;\":0x22eb, \"NotRightTriangleBar;\":[0x29d0,0x338],\n \"NotRightTriangleEqual;\":0x22ed, \"NotSquareSubset;\":[0x228f,0x338],\n \"NotSquareSubsetEqual;\":0x22e2, \"NotSquareSuperset;\":[0x2290,0x338],\n \"NotSquareSupersetEqual;\":0x22e3, \"NotSubset;\":[0x2282,0x20d2],\n \"NotSubsetEqual;\":0x2288, \"NotSucceeds;\":0x2281,\n \"NotSucceedsEqual;\":[0x2ab0,0x338], \"NotSucceedsSlantEqual;\":0x22e1,\n \"NotSucceedsTilde;\":[0x227f,0x338], \"NotSuperset;\":[0x2283,0x20d2],\n \"NotSupersetEqual;\":0x2289, \"NotTilde;\":0x2241,\n \"NotTildeEqual;\":0x2244, \"NotTildeFullEqual;\":0x2247,\n \"NotTildeTilde;\":0x2249, \"NotVerticalBar;\":0x2224,\n \"Nscr;\":[0xd835,0xdca9], \"Ntilde\":0xd1,\n \"Ntilde;\":0xd1, \"Nu;\":0x39d,\n \"OElig;\":0x152, \"Oacute\":0xd3,\n \"Oacute;\":0xd3, \"Ocirc\":0xd4,\n \"Ocirc;\":0xd4, \"Ocy;\":0x41e,\n \"Odblac;\":0x150, \"Ofr;\":[0xd835,0xdd12],\n \"Ograve\":0xd2, \"Ograve;\":0xd2,\n \"Omacr;\":0x14c, \"Omega;\":0x3a9,\n \"Omicron;\":0x39f, \"Oopf;\":[0xd835,0xdd46],\n \"OpenCurlyDoubleQuote;\":0x201c, \"OpenCurlyQuote;\":0x2018,\n \"Or;\":0x2a54, \"Oscr;\":[0xd835,0xdcaa],\n \"Oslash\":0xd8, \"Oslash;\":0xd8,\n \"Otilde\":0xd5, \"Otilde;\":0xd5,\n \"Otimes;\":0x2a37, \"Ouml\":0xd6,\n \"Ouml;\":0xd6, \"OverBar;\":0x203e,\n \"OverBrace;\":0x23de, \"OverBracket;\":0x23b4,\n \"OverParenthesis;\":0x23dc, \"PartialD;\":0x2202,\n \"Pcy;\":0x41f, \"Pfr;\":[0xd835,0xdd13],\n \"Phi;\":0x3a6, \"Pi;\":0x3a0,\n \"PlusMinus;\":0xb1, \"Poincareplane;\":0x210c,\n \"Popf;\":0x2119, \"Pr;\":0x2abb,\n \"Precedes;\":0x227a, \"PrecedesEqual;\":0x2aaf,\n \"PrecedesSlantEqual;\":0x227c, \"PrecedesTilde;\":0x227e,\n \"Prime;\":0x2033, \"Product;\":0x220f,\n \"Proportion;\":0x2237, \"Proportional;\":0x221d,\n \"Pscr;\":[0xd835,0xdcab], \"Psi;\":0x3a8,\n \"QUOT\":0x22, \"QUOT;\":0x22,\n \"Qfr;\":[0xd835,0xdd14], \"Qopf;\":0x211a,\n \"Qscr;\":[0xd835,0xdcac], \"RBarr;\":0x2910,\n \"REG\":0xae, \"REG;\":0xae,\n \"Racute;\":0x154, \"Rang;\":0x27eb,\n \"Rarr;\":0x21a0, \"Rarrtl;\":0x2916,\n \"Rcaron;\":0x158, \"Rcedil;\":0x156,\n \"Rcy;\":0x420, \"Re;\":0x211c,\n \"ReverseElement;\":0x220b, \"ReverseEquilibrium;\":0x21cb,\n \"ReverseUpEquilibrium;\":0x296f, \"Rfr;\":0x211c,\n \"Rho;\":0x3a1, \"RightAngleBracket;\":0x27e9,\n \"RightArrow;\":0x2192, \"RightArrowBar;\":0x21e5,\n \"RightArrowLeftArrow;\":0x21c4, \"RightCeiling;\":0x2309,\n \"RightDoubleBracket;\":0x27e7, \"RightDownTeeVector;\":0x295d,\n \"RightDownVector;\":0x21c2, \"RightDownVectorBar;\":0x2955,\n \"RightFloor;\":0x230b, \"RightTee;\":0x22a2,\n \"RightTeeArrow;\":0x21a6, \"RightTeeVector;\":0x295b,\n \"RightTriangle;\":0x22b3, \"RightTriangleBar;\":0x29d0,\n \"RightTriangleEqual;\":0x22b5, \"RightUpDownVector;\":0x294f,\n \"RightUpTeeVector;\":0x295c, \"RightUpVector;\":0x21be,\n \"RightUpVectorBar;\":0x2954, \"RightVector;\":0x21c0,\n \"RightVectorBar;\":0x2953, \"Rightarrow;\":0x21d2,\n \"Ropf;\":0x211d, \"RoundImplies;\":0x2970,\n \"Rrightarrow;\":0x21db, \"Rscr;\":0x211b,\n \"Rsh;\":0x21b1, \"RuleDelayed;\":0x29f4,\n \"SHCHcy;\":0x429, \"SHcy;\":0x428,\n \"SOFTcy;\":0x42c, \"Sacute;\":0x15a,\n \"Sc;\":0x2abc, \"Scaron;\":0x160,\n \"Scedil;\":0x15e, \"Scirc;\":0x15c,\n \"Scy;\":0x421, \"Sfr;\":[0xd835,0xdd16],\n \"ShortDownArrow;\":0x2193, \"ShortLeftArrow;\":0x2190,\n \"ShortRightArrow;\":0x2192, \"ShortUpArrow;\":0x2191,\n \"Sigma;\":0x3a3, \"SmallCircle;\":0x2218,\n \"Sopf;\":[0xd835,0xdd4a], \"Sqrt;\":0x221a,\n \"Square;\":0x25a1, \"SquareIntersection;\":0x2293,\n \"SquareSubset;\":0x228f, \"SquareSubsetEqual;\":0x2291,\n \"SquareSuperset;\":0x2290, \"SquareSupersetEqual;\":0x2292,\n \"SquareUnion;\":0x2294, \"Sscr;\":[0xd835,0xdcae],\n \"Star;\":0x22c6, \"Sub;\":0x22d0,\n \"Subset;\":0x22d0, \"SubsetEqual;\":0x2286,\n \"Succeeds;\":0x227b, \"SucceedsEqual;\":0x2ab0,\n \"SucceedsSlantEqual;\":0x227d, \"SucceedsTilde;\":0x227f,\n \"SuchThat;\":0x220b, \"Sum;\":0x2211,\n \"Sup;\":0x22d1, \"Superset;\":0x2283,\n \"SupersetEqual;\":0x2287, \"Supset;\":0x22d1,\n \"THORN\":0xde, \"THORN;\":0xde,\n \"TRADE;\":0x2122, \"TSHcy;\":0x40b,\n \"TScy;\":0x426, \"Tab;\":0x9,\n \"Tau;\":0x3a4, \"Tcaron;\":0x164,\n \"Tcedil;\":0x162, \"Tcy;\":0x422,\n \"Tfr;\":[0xd835,0xdd17], \"Therefore;\":0x2234,\n \"Theta;\":0x398, \"ThickSpace;\":[0x205f,0x200a],\n \"ThinSpace;\":0x2009, \"Tilde;\":0x223c,\n \"TildeEqual;\":0x2243, \"TildeFullEqual;\":0x2245,\n \"TildeTilde;\":0x2248, \"Topf;\":[0xd835,0xdd4b],\n \"TripleDot;\":0x20db, \"Tscr;\":[0xd835,0xdcaf],\n \"Tstrok;\":0x166, \"Uacute\":0xda,\n \"Uacute;\":0xda, \"Uarr;\":0x219f,\n \"Uarrocir;\":0x2949, \"Ubrcy;\":0x40e,\n \"Ubreve;\":0x16c, \"Ucirc\":0xdb,\n \"Ucirc;\":0xdb, \"Ucy;\":0x423,\n \"Udblac;\":0x170, \"Ufr;\":[0xd835,0xdd18],\n \"Ugrave\":0xd9, \"Ugrave;\":0xd9,\n \"Umacr;\":0x16a, \"UnderBar;\":0x5f,\n \"UnderBrace;\":0x23df, \"UnderBracket;\":0x23b5,\n \"UnderParenthesis;\":0x23dd, \"Union;\":0x22c3,\n \"UnionPlus;\":0x228e, \"Uogon;\":0x172,\n \"Uopf;\":[0xd835,0xdd4c], \"UpArrow;\":0x2191,\n \"UpArrowBar;\":0x2912, \"UpArrowDownArrow;\":0x21c5,\n \"UpDownArrow;\":0x2195, \"UpEquilibrium;\":0x296e,\n \"UpTee;\":0x22a5, \"UpTeeArrow;\":0x21a5,\n \"Uparrow;\":0x21d1, \"Updownarrow;\":0x21d5,\n \"UpperLeftArrow;\":0x2196, \"UpperRightArrow;\":0x2197,\n \"Upsi;\":0x3d2, \"Upsilon;\":0x3a5,\n \"Uring;\":0x16e, \"Uscr;\":[0xd835,0xdcb0],\n \"Utilde;\":0x168, \"Uuml\":0xdc,\n \"Uuml;\":0xdc, \"VDash;\":0x22ab,\n \"Vbar;\":0x2aeb, \"Vcy;\":0x412,\n \"Vdash;\":0x22a9, \"Vdashl;\":0x2ae6,\n \"Vee;\":0x22c1, \"Verbar;\":0x2016,\n \"Vert;\":0x2016, \"VerticalBar;\":0x2223,\n \"VerticalLine;\":0x7c, \"VerticalSeparator;\":0x2758,\n \"VerticalTilde;\":0x2240, \"VeryThinSpace;\":0x200a,\n \"Vfr;\":[0xd835,0xdd19], \"Vopf;\":[0xd835,0xdd4d],\n \"Vscr;\":[0xd835,0xdcb1], \"Vvdash;\":0x22aa,\n \"Wcirc;\":0x174, \"Wedge;\":0x22c0,\n \"Wfr;\":[0xd835,0xdd1a], \"Wopf;\":[0xd835,0xdd4e],\n \"Wscr;\":[0xd835,0xdcb2], \"Xfr;\":[0xd835,0xdd1b],\n \"Xi;\":0x39e, \"Xopf;\":[0xd835,0xdd4f],\n \"Xscr;\":[0xd835,0xdcb3], \"YAcy;\":0x42f,\n \"YIcy;\":0x407, \"YUcy;\":0x42e,\n \"Yacute\":0xdd, \"Yacute;\":0xdd,\n \"Ycirc;\":0x176, \"Ycy;\":0x42b,\n \"Yfr;\":[0xd835,0xdd1c], \"Yopf;\":[0xd835,0xdd50],\n \"Yscr;\":[0xd835,0xdcb4], \"Yuml;\":0x178,\n \"ZHcy;\":0x416, \"Zacute;\":0x179,\n \"Zcaron;\":0x17d, \"Zcy;\":0x417,\n \"Zdot;\":0x17b, \"ZeroWidthSpace;\":0x200b,\n \"Zeta;\":0x396, \"Zfr;\":0x2128,\n \"Zopf;\":0x2124, \"Zscr;\":[0xd835,0xdcb5],\n \"aacute\":0xe1, \"aacute;\":0xe1,\n \"abreve;\":0x103, \"ac;\":0x223e,\n \"acE;\":[0x223e,0x333], \"acd;\":0x223f,\n \"acirc\":0xe2, \"acirc;\":0xe2,\n \"acute\":0xb4, \"acute;\":0xb4,\n \"acy;\":0x430, \"aelig\":0xe6,\n \"aelig;\":0xe6, \"af;\":0x2061,\n \"afr;\":[0xd835,0xdd1e], \"agrave\":0xe0,\n \"agrave;\":0xe0, \"alefsym;\":0x2135,\n \"aleph;\":0x2135, \"alpha;\":0x3b1,\n \"amacr;\":0x101, \"amalg;\":0x2a3f,\n \"amp\":0x26, \"amp;\":0x26,\n \"and;\":0x2227, \"andand;\":0x2a55,\n \"andd;\":0x2a5c, \"andslope;\":0x2a58,\n \"andv;\":0x2a5a, \"ang;\":0x2220,\n \"ange;\":0x29a4, \"angle;\":0x2220,\n \"angmsd;\":0x2221, \"angmsdaa;\":0x29a8,\n \"angmsdab;\":0x29a9, \"angmsdac;\":0x29aa,\n \"angmsdad;\":0x29ab, \"angmsdae;\":0x29ac,\n \"angmsdaf;\":0x29ad, \"angmsdag;\":0x29ae,\n \"angmsdah;\":0x29af, \"angrt;\":0x221f,\n \"angrtvb;\":0x22be, \"angrtvbd;\":0x299d,\n \"angsph;\":0x2222, \"angst;\":0xc5,\n \"angzarr;\":0x237c, \"aogon;\":0x105,\n \"aopf;\":[0xd835,0xdd52], \"ap;\":0x2248,\n \"apE;\":0x2a70, \"apacir;\":0x2a6f,\n \"ape;\":0x224a, \"apid;\":0x224b,\n \"apos;\":0x27, \"approx;\":0x2248,\n \"approxeq;\":0x224a, \"aring\":0xe5,\n \"aring;\":0xe5, \"ascr;\":[0xd835,0xdcb6],\n \"ast;\":0x2a, \"asymp;\":0x2248,\n \"asympeq;\":0x224d, \"atilde\":0xe3,\n \"atilde;\":0xe3, \"auml\":0xe4,\n \"auml;\":0xe4, \"awconint;\":0x2233,\n \"awint;\":0x2a11, \"bNot;\":0x2aed,\n \"backcong;\":0x224c, \"backepsilon;\":0x3f6,\n \"backprime;\":0x2035, \"backsim;\":0x223d,\n \"backsimeq;\":0x22cd, \"barvee;\":0x22bd,\n \"barwed;\":0x2305, \"barwedge;\":0x2305,\n \"bbrk;\":0x23b5, \"bbrktbrk;\":0x23b6,\n \"bcong;\":0x224c, \"bcy;\":0x431,\n \"bdquo;\":0x201e, \"becaus;\":0x2235,\n \"because;\":0x2235, \"bemptyv;\":0x29b0,\n \"bepsi;\":0x3f6, \"bernou;\":0x212c,\n \"beta;\":0x3b2, \"beth;\":0x2136,\n \"between;\":0x226c, \"bfr;\":[0xd835,0xdd1f],\n \"bigcap;\":0x22c2, \"bigcirc;\":0x25ef,\n \"bigcup;\":0x22c3, \"bigodot;\":0x2a00,\n \"bigoplus;\":0x2a01, \"bigotimes;\":0x2a02,\n \"bigsqcup;\":0x2a06, \"bigstar;\":0x2605,\n \"bigtriangledown;\":0x25bd, \"bigtriangleup;\":0x25b3,\n \"biguplus;\":0x2a04, \"bigvee;\":0x22c1,\n \"bigwedge;\":0x22c0, \"bkarow;\":0x290d,\n \"blacklozenge;\":0x29eb, \"blacksquare;\":0x25aa,\n \"blacktriangle;\":0x25b4, \"blacktriangledown;\":0x25be,\n \"blacktriangleleft;\":0x25c2, \"blacktriangleright;\":0x25b8,\n \"blank;\":0x2423, \"blk12;\":0x2592,\n \"blk14;\":0x2591, \"blk34;\":0x2593,\n \"block;\":0x2588, \"bne;\":[0x3d,0x20e5],\n \"bnequiv;\":[0x2261,0x20e5], \"bnot;\":0x2310,\n \"bopf;\":[0xd835,0xdd53], \"bot;\":0x22a5,\n \"bottom;\":0x22a5, \"bowtie;\":0x22c8,\n \"boxDL;\":0x2557, \"boxDR;\":0x2554,\n \"boxDl;\":0x2556, \"boxDr;\":0x2553,\n \"boxH;\":0x2550, \"boxHD;\":0x2566,\n \"boxHU;\":0x2569, \"boxHd;\":0x2564,\n \"boxHu;\":0x2567, \"boxUL;\":0x255d,\n \"boxUR;\":0x255a, \"boxUl;\":0x255c,\n \"boxUr;\":0x2559, \"boxV;\":0x2551,\n \"boxVH;\":0x256c, \"boxVL;\":0x2563,\n \"boxVR;\":0x2560, \"boxVh;\":0x256b,\n \"boxVl;\":0x2562, \"boxVr;\":0x255f,\n \"boxbox;\":0x29c9, \"boxdL;\":0x2555,\n \"boxdR;\":0x2552, \"boxdl;\":0x2510,\n \"boxdr;\":0x250c, \"boxh;\":0x2500,\n \"boxhD;\":0x2565, \"boxhU;\":0x2568,\n \"boxhd;\":0x252c, \"boxhu;\":0x2534,\n \"boxminus;\":0x229f, \"boxplus;\":0x229e,\n \"boxtimes;\":0x22a0, \"boxuL;\":0x255b,\n \"boxuR;\":0x2558, \"boxul;\":0x2518,\n \"boxur;\":0x2514, \"boxv;\":0x2502,\n \"boxvH;\":0x256a, \"boxvL;\":0x2561,\n \"boxvR;\":0x255e, \"boxvh;\":0x253c,\n \"boxvl;\":0x2524, \"boxvr;\":0x251c,\n \"bprime;\":0x2035, \"breve;\":0x2d8,\n \"brvbar\":0xa6, \"brvbar;\":0xa6,\n \"bscr;\":[0xd835,0xdcb7], \"bsemi;\":0x204f,\n \"bsim;\":0x223d, \"bsime;\":0x22cd,\n \"bsol;\":0x5c, \"bsolb;\":0x29c5,\n \"bsolhsub;\":0x27c8, \"bull;\":0x2022,\n \"bullet;\":0x2022, \"bump;\":0x224e,\n \"bumpE;\":0x2aae, \"bumpe;\":0x224f,\n \"bumpeq;\":0x224f, \"cacute;\":0x107,\n \"cap;\":0x2229, \"capand;\":0x2a44,\n \"capbrcup;\":0x2a49, \"capcap;\":0x2a4b,\n \"capcup;\":0x2a47, \"capdot;\":0x2a40,\n \"caps;\":[0x2229,0xfe00], \"caret;\":0x2041,\n \"caron;\":0x2c7, \"ccaps;\":0x2a4d,\n \"ccaron;\":0x10d, \"ccedil\":0xe7,\n \"ccedil;\":0xe7, \"ccirc;\":0x109,\n \"ccups;\":0x2a4c, \"ccupssm;\":0x2a50,\n \"cdot;\":0x10b, \"cedil\":0xb8,\n \"cedil;\":0xb8, \"cemptyv;\":0x29b2,\n \"cent\":0xa2, \"cent;\":0xa2,\n \"centerdot;\":0xb7, \"cfr;\":[0xd835,0xdd20],\n \"chcy;\":0x447, \"check;\":0x2713,\n \"checkmark;\":0x2713, \"chi;\":0x3c7,\n \"cir;\":0x25cb, \"cirE;\":0x29c3,\n \"circ;\":0x2c6, \"circeq;\":0x2257,\n \"circlearrowleft;\":0x21ba, \"circlearrowright;\":0x21bb,\n \"circledR;\":0xae, \"circledS;\":0x24c8,\n \"circledast;\":0x229b, \"circledcirc;\":0x229a,\n \"circleddash;\":0x229d, \"cire;\":0x2257,\n \"cirfnint;\":0x2a10, \"cirmid;\":0x2aef,\n \"cirscir;\":0x29c2, \"clubs;\":0x2663,\n \"clubsuit;\":0x2663, \"colon;\":0x3a,\n \"colone;\":0x2254, \"coloneq;\":0x2254,\n \"comma;\":0x2c, \"commat;\":0x40,\n \"comp;\":0x2201, \"compfn;\":0x2218,\n \"complement;\":0x2201, \"complexes;\":0x2102,\n \"cong;\":0x2245, \"congdot;\":0x2a6d,\n \"conint;\":0x222e, \"copf;\":[0xd835,0xdd54],\n \"coprod;\":0x2210, \"copy\":0xa9,\n \"copy;\":0xa9, \"copysr;\":0x2117,\n \"crarr;\":0x21b5, \"cross;\":0x2717,\n \"cscr;\":[0xd835,0xdcb8], \"csub;\":0x2acf,\n \"csube;\":0x2ad1, \"csup;\":0x2ad0,\n \"csupe;\":0x2ad2, \"ctdot;\":0x22ef,\n \"cudarrl;\":0x2938, \"cudarrr;\":0x2935,\n \"cuepr;\":0x22de, \"cuesc;\":0x22df,\n \"cularr;\":0x21b6, \"cularrp;\":0x293d,\n \"cup;\":0x222a, \"cupbrcap;\":0x2a48,\n \"cupcap;\":0x2a46, \"cupcup;\":0x2a4a,\n \"cupdot;\":0x228d, \"cupor;\":0x2a45,\n \"cups;\":[0x222a,0xfe00], \"curarr;\":0x21b7,\n \"curarrm;\":0x293c, \"curlyeqprec;\":0x22de,\n \"curlyeqsucc;\":0x22df, \"curlyvee;\":0x22ce,\n \"curlywedge;\":0x22cf, \"curren\":0xa4,\n \"curren;\":0xa4, \"curvearrowleft;\":0x21b6,\n \"curvearrowright;\":0x21b7, \"cuvee;\":0x22ce,\n \"cuwed;\":0x22cf, \"cwconint;\":0x2232,\n \"cwint;\":0x2231, \"cylcty;\":0x232d,\n \"dArr;\":0x21d3, \"dHar;\":0x2965,\n \"dagger;\":0x2020, \"daleth;\":0x2138,\n \"darr;\":0x2193, \"dash;\":0x2010,\n \"dashv;\":0x22a3, \"dbkarow;\":0x290f,\n \"dblac;\":0x2dd, \"dcaron;\":0x10f,\n \"dcy;\":0x434, \"dd;\":0x2146,\n \"ddagger;\":0x2021, \"ddarr;\":0x21ca,\n \"ddotseq;\":0x2a77, \"deg\":0xb0,\n \"deg;\":0xb0, \"delta;\":0x3b4,\n \"demptyv;\":0x29b1, \"dfisht;\":0x297f,\n \"dfr;\":[0xd835,0xdd21], \"dharl;\":0x21c3,\n \"dharr;\":0x21c2, \"diam;\":0x22c4,\n \"diamond;\":0x22c4, \"diamondsuit;\":0x2666,\n \"diams;\":0x2666, \"die;\":0xa8,\n \"digamma;\":0x3dd, \"disin;\":0x22f2,\n \"div;\":0xf7, \"divide\":0xf7,\n \"divide;\":0xf7, \"divideontimes;\":0x22c7,\n \"divonx;\":0x22c7, \"djcy;\":0x452,\n \"dlcorn;\":0x231e, \"dlcrop;\":0x230d,\n \"dollar;\":0x24, \"dopf;\":[0xd835,0xdd55],\n \"dot;\":0x2d9, \"doteq;\":0x2250,\n \"doteqdot;\":0x2251, \"dotminus;\":0x2238,\n \"dotplus;\":0x2214, \"dotsquare;\":0x22a1,\n \"doublebarwedge;\":0x2306, \"downarrow;\":0x2193,\n \"downdownarrows;\":0x21ca, \"downharpoonleft;\":0x21c3,\n \"downharpoonright;\":0x21c2, \"drbkarow;\":0x2910,\n \"drcorn;\":0x231f, \"drcrop;\":0x230c,\n \"dscr;\":[0xd835,0xdcb9], \"dscy;\":0x455,\n \"dsol;\":0x29f6, \"dstrok;\":0x111,\n \"dtdot;\":0x22f1, \"dtri;\":0x25bf,\n \"dtrif;\":0x25be, \"duarr;\":0x21f5,\n \"duhar;\":0x296f, \"dwangle;\":0x29a6,\n \"dzcy;\":0x45f, \"dzigrarr;\":0x27ff,\n \"eDDot;\":0x2a77, \"eDot;\":0x2251,\n \"eacute\":0xe9, \"eacute;\":0xe9,\n \"easter;\":0x2a6e, \"ecaron;\":0x11b,\n \"ecir;\":0x2256, \"ecirc\":0xea,\n \"ecirc;\":0xea, \"ecolon;\":0x2255,\n \"ecy;\":0x44d, \"edot;\":0x117,\n \"ee;\":0x2147, \"efDot;\":0x2252,\n \"efr;\":[0xd835,0xdd22], \"eg;\":0x2a9a,\n \"egrave\":0xe8, \"egrave;\":0xe8,\n \"egs;\":0x2a96, \"egsdot;\":0x2a98,\n \"el;\":0x2a99, \"elinters;\":0x23e7,\n \"ell;\":0x2113, \"els;\":0x2a95,\n \"elsdot;\":0x2a97, \"emacr;\":0x113,\n \"empty;\":0x2205, \"emptyset;\":0x2205,\n \"emptyv;\":0x2205, \"emsp13;\":0x2004,\n \"emsp14;\":0x2005, \"emsp;\":0x2003,\n \"eng;\":0x14b, \"ensp;\":0x2002,\n \"eogon;\":0x119, \"eopf;\":[0xd835,0xdd56],\n \"epar;\":0x22d5, \"eparsl;\":0x29e3,\n \"eplus;\":0x2a71, \"epsi;\":0x3b5,\n \"epsilon;\":0x3b5, \"epsiv;\":0x3f5,\n \"eqcirc;\":0x2256, \"eqcolon;\":0x2255,\n \"eqsim;\":0x2242, \"eqslantgtr;\":0x2a96,\n \"eqslantless;\":0x2a95, \"equals;\":0x3d,\n \"equest;\":0x225f, \"equiv;\":0x2261,\n \"equivDD;\":0x2a78, \"eqvparsl;\":0x29e5,\n \"erDot;\":0x2253, \"erarr;\":0x2971,\n \"escr;\":0x212f, \"esdot;\":0x2250,\n \"esim;\":0x2242, \"eta;\":0x3b7,\n \"eth\":0xf0, \"eth;\":0xf0,\n \"euml\":0xeb, \"euml;\":0xeb,\n \"euro;\":0x20ac, \"excl;\":0x21,\n \"exist;\":0x2203, \"expectation;\":0x2130,\n \"exponentiale;\":0x2147, \"fallingdotseq;\":0x2252,\n \"fcy;\":0x444, \"female;\":0x2640,\n \"ffilig;\":0xfb03, \"fflig;\":0xfb00,\n \"ffllig;\":0xfb04, \"ffr;\":[0xd835,0xdd23],\n \"filig;\":0xfb01, \"fjlig;\":[0x66,0x6a],\n \"flat;\":0x266d, \"fllig;\":0xfb02,\n \"fltns;\":0x25b1, \"fnof;\":0x192,\n \"fopf;\":[0xd835,0xdd57], \"forall;\":0x2200,\n \"fork;\":0x22d4, \"forkv;\":0x2ad9,\n \"fpartint;\":0x2a0d, \"frac12\":0xbd,\n \"frac12;\":0xbd, \"frac13;\":0x2153,\n \"frac14\":0xbc, \"frac14;\":0xbc,\n \"frac15;\":0x2155, \"frac16;\":0x2159,\n \"frac18;\":0x215b, \"frac23;\":0x2154,\n \"frac25;\":0x2156, \"frac34\":0xbe,\n \"frac34;\":0xbe, \"frac35;\":0x2157,\n \"frac38;\":0x215c, \"frac45;\":0x2158,\n \"frac56;\":0x215a, \"frac58;\":0x215d,\n \"frac78;\":0x215e, \"frasl;\":0x2044,\n \"frown;\":0x2322, \"fscr;\":[0xd835,0xdcbb],\n \"gE;\":0x2267, \"gEl;\":0x2a8c,\n \"gacute;\":0x1f5, \"gamma;\":0x3b3,\n \"gammad;\":0x3dd, \"gap;\":0x2a86,\n \"gbreve;\":0x11f, \"gcirc;\":0x11d,\n \"gcy;\":0x433, \"gdot;\":0x121,\n \"ge;\":0x2265, \"gel;\":0x22db,\n \"geq;\":0x2265, \"geqq;\":0x2267,\n \"geqslant;\":0x2a7e, \"ges;\":0x2a7e,\n \"gescc;\":0x2aa9, \"gesdot;\":0x2a80,\n \"gesdoto;\":0x2a82, \"gesdotol;\":0x2a84,\n \"gesl;\":[0x22db,0xfe00], \"gesles;\":0x2a94,\n \"gfr;\":[0xd835,0xdd24], \"gg;\":0x226b,\n \"ggg;\":0x22d9, \"gimel;\":0x2137,\n \"gjcy;\":0x453, \"gl;\":0x2277,\n \"glE;\":0x2a92, \"gla;\":0x2aa5,\n \"glj;\":0x2aa4, \"gnE;\":0x2269,\n \"gnap;\":0x2a8a, \"gnapprox;\":0x2a8a,\n \"gne;\":0x2a88, \"gneq;\":0x2a88,\n \"gneqq;\":0x2269, \"gnsim;\":0x22e7,\n \"gopf;\":[0xd835,0xdd58], \"grave;\":0x60,\n \"gscr;\":0x210a, \"gsim;\":0x2273,\n \"gsime;\":0x2a8e, \"gsiml;\":0x2a90,\n \"gt\":0x3e, \"gt;\":0x3e,\n \"gtcc;\":0x2aa7, \"gtcir;\":0x2a7a,\n \"gtdot;\":0x22d7, \"gtlPar;\":0x2995,\n \"gtquest;\":0x2a7c, \"gtrapprox;\":0x2a86,\n \"gtrarr;\":0x2978, \"gtrdot;\":0x22d7,\n \"gtreqless;\":0x22db, \"gtreqqless;\":0x2a8c,\n \"gtrless;\":0x2277, \"gtrsim;\":0x2273,\n \"gvertneqq;\":[0x2269,0xfe00], \"gvnE;\":[0x2269,0xfe00],\n \"hArr;\":0x21d4, \"hairsp;\":0x200a,\n \"half;\":0xbd, \"hamilt;\":0x210b,\n \"hardcy;\":0x44a, \"harr;\":0x2194,\n \"harrcir;\":0x2948, \"harrw;\":0x21ad,\n \"hbar;\":0x210f, \"hcirc;\":0x125,\n \"hearts;\":0x2665, \"heartsuit;\":0x2665,\n \"hellip;\":0x2026, \"hercon;\":0x22b9,\n \"hfr;\":[0xd835,0xdd25], \"hksearow;\":0x2925,\n \"hkswarow;\":0x2926, \"hoarr;\":0x21ff,\n \"homtht;\":0x223b, \"hookleftarrow;\":0x21a9,\n \"hookrightarrow;\":0x21aa, \"hopf;\":[0xd835,0xdd59],\n \"horbar;\":0x2015, \"hscr;\":[0xd835,0xdcbd],\n \"hslash;\":0x210f, \"hstrok;\":0x127,\n \"hybull;\":0x2043, \"hyphen;\":0x2010,\n \"iacute\":0xed, \"iacute;\":0xed,\n \"ic;\":0x2063, \"icirc\":0xee,\n \"icirc;\":0xee, \"icy;\":0x438,\n \"iecy;\":0x435, \"iexcl\":0xa1,\n \"iexcl;\":0xa1, \"iff;\":0x21d4,\n \"ifr;\":[0xd835,0xdd26], \"igrave\":0xec,\n \"igrave;\":0xec, \"ii;\":0x2148,\n \"iiiint;\":0x2a0c, \"iiint;\":0x222d,\n \"iinfin;\":0x29dc, \"iiota;\":0x2129,\n \"ijlig;\":0x133, \"imacr;\":0x12b,\n \"image;\":0x2111, \"imagline;\":0x2110,\n \"imagpart;\":0x2111, \"imath;\":0x131,\n \"imof;\":0x22b7, \"imped;\":0x1b5,\n \"in;\":0x2208, \"incare;\":0x2105,\n \"infin;\":0x221e, \"infintie;\":0x29dd,\n \"inodot;\":0x131, \"int;\":0x222b,\n \"intcal;\":0x22ba, \"integers;\":0x2124,\n \"intercal;\":0x22ba, \"intlarhk;\":0x2a17,\n \"intprod;\":0x2a3c, \"iocy;\":0x451,\n \"iogon;\":0x12f, \"iopf;\":[0xd835,0xdd5a],\n \"iota;\":0x3b9, \"iprod;\":0x2a3c,\n \"iquest\":0xbf, \"iquest;\":0xbf,\n \"iscr;\":[0xd835,0xdcbe], \"isin;\":0x2208,\n \"isinE;\":0x22f9, \"isindot;\":0x22f5,\n \"isins;\":0x22f4, \"isinsv;\":0x22f3,\n \"isinv;\":0x2208, \"it;\":0x2062,\n \"itilde;\":0x129, \"iukcy;\":0x456,\n \"iuml\":0xef, \"iuml;\":0xef,\n \"jcirc;\":0x135, \"jcy;\":0x439,\n \"jfr;\":[0xd835,0xdd27], \"jmath;\":0x237,\n \"jopf;\":[0xd835,0xdd5b], \"jscr;\":[0xd835,0xdcbf],\n \"jsercy;\":0x458, \"jukcy;\":0x454,\n \"kappa;\":0x3ba, \"kappav;\":0x3f0,\n \"kcedil;\":0x137, \"kcy;\":0x43a,\n \"kfr;\":[0xd835,0xdd28], \"kgreen;\":0x138,\n \"khcy;\":0x445, \"kjcy;\":0x45c,\n \"kopf;\":[0xd835,0xdd5c], \"kscr;\":[0xd835,0xdcc0],\n \"lAarr;\":0x21da, \"lArr;\":0x21d0,\n \"lAtail;\":0x291b, \"lBarr;\":0x290e,\n \"lE;\":0x2266, \"lEg;\":0x2a8b,\n \"lHar;\":0x2962, \"lacute;\":0x13a,\n \"laemptyv;\":0x29b4, \"lagran;\":0x2112,\n \"lambda;\":0x3bb, \"lang;\":0x27e8,\n \"langd;\":0x2991, \"langle;\":0x27e8,\n \"lap;\":0x2a85, \"laquo\":0xab,\n \"laquo;\":0xab, \"larr;\":0x2190,\n \"larrb;\":0x21e4, \"larrbfs;\":0x291f,\n \"larrfs;\":0x291d, \"larrhk;\":0x21a9,\n \"larrlp;\":0x21ab, \"larrpl;\":0x2939,\n \"larrsim;\":0x2973, \"larrtl;\":0x21a2,\n \"lat;\":0x2aab, \"latail;\":0x2919,\n \"late;\":0x2aad, \"lates;\":[0x2aad,0xfe00],\n \"lbarr;\":0x290c, \"lbbrk;\":0x2772,\n \"lbrace;\":0x7b, \"lbrack;\":0x5b,\n \"lbrke;\":0x298b, \"lbrksld;\":0x298f,\n \"lbrkslu;\":0x298d, \"lcaron;\":0x13e,\n \"lcedil;\":0x13c, \"lceil;\":0x2308,\n \"lcub;\":0x7b, \"lcy;\":0x43b,\n \"ldca;\":0x2936, \"ldquo;\":0x201c,\n \"ldquor;\":0x201e, \"ldrdhar;\":0x2967,\n \"ldrushar;\":0x294b, \"ldsh;\":0x21b2,\n \"le;\":0x2264, \"leftarrow;\":0x2190,\n \"leftarrowtail;\":0x21a2, \"leftharpoondown;\":0x21bd,\n \"leftharpoonup;\":0x21bc, \"leftleftarrows;\":0x21c7,\n \"leftrightarrow;\":0x2194, \"leftrightarrows;\":0x21c6,\n \"leftrightharpoons;\":0x21cb, \"leftrightsquigarrow;\":0x21ad,\n \"leftthreetimes;\":0x22cb, \"leg;\":0x22da,\n \"leq;\":0x2264, \"leqq;\":0x2266,\n \"leqslant;\":0x2a7d, \"les;\":0x2a7d,\n \"lescc;\":0x2aa8, \"lesdot;\":0x2a7f,\n \"lesdoto;\":0x2a81, \"lesdotor;\":0x2a83,\n \"lesg;\":[0x22da,0xfe00], \"lesges;\":0x2a93,\n \"lessapprox;\":0x2a85, \"lessdot;\":0x22d6,\n \"lesseqgtr;\":0x22da, \"lesseqqgtr;\":0x2a8b,\n \"lessgtr;\":0x2276, \"lesssim;\":0x2272,\n \"lfisht;\":0x297c, \"lfloor;\":0x230a,\n \"lfr;\":[0xd835,0xdd29], \"lg;\":0x2276,\n \"lgE;\":0x2a91, \"lhard;\":0x21bd,\n \"lharu;\":0x21bc, \"lharul;\":0x296a,\n \"lhblk;\":0x2584, \"ljcy;\":0x459,\n \"ll;\":0x226a, \"llarr;\":0x21c7,\n \"llcorner;\":0x231e, \"llhard;\":0x296b,\n \"lltri;\":0x25fa, \"lmidot;\":0x140,\n \"lmoust;\":0x23b0, \"lmoustache;\":0x23b0,\n \"lnE;\":0x2268, \"lnap;\":0x2a89,\n \"lnapprox;\":0x2a89, \"lne;\":0x2a87,\n \"lneq;\":0x2a87, \"lneqq;\":0x2268,\n \"lnsim;\":0x22e6, \"loang;\":0x27ec,\n \"loarr;\":0x21fd, \"lobrk;\":0x27e6,\n \"longleftarrow;\":0x27f5, \"longleftrightarrow;\":0x27f7,\n \"longmapsto;\":0x27fc, \"longrightarrow;\":0x27f6,\n \"looparrowleft;\":0x21ab, \"looparrowright;\":0x21ac,\n \"lopar;\":0x2985, \"lopf;\":[0xd835,0xdd5d],\n \"loplus;\":0x2a2d, \"lotimes;\":0x2a34,\n \"lowast;\":0x2217, \"lowbar;\":0x5f,\n \"loz;\":0x25ca, \"lozenge;\":0x25ca,\n \"lozf;\":0x29eb, \"lpar;\":0x28,\n \"lparlt;\":0x2993, \"lrarr;\":0x21c6,\n \"lrcorner;\":0x231f, \"lrhar;\":0x21cb,\n \"lrhard;\":0x296d, \"lrm;\":0x200e,\n \"lrtri;\":0x22bf, \"lsaquo;\":0x2039,\n \"lscr;\":[0xd835,0xdcc1], \"lsh;\":0x21b0,\n \"lsim;\":0x2272, \"lsime;\":0x2a8d,\n \"lsimg;\":0x2a8f, \"lsqb;\":0x5b,\n \"lsquo;\":0x2018, \"lsquor;\":0x201a,\n \"lstrok;\":0x142, \"lt\":0x3c,\n \"lt;\":0x3c, \"ltcc;\":0x2aa6,\n \"ltcir;\":0x2a79, \"ltdot;\":0x22d6,\n \"lthree;\":0x22cb, \"ltimes;\":0x22c9,\n \"ltlarr;\":0x2976, \"ltquest;\":0x2a7b,\n \"ltrPar;\":0x2996, \"ltri;\":0x25c3,\n \"ltrie;\":0x22b4, \"ltrif;\":0x25c2,\n \"lurdshar;\":0x294a, \"luruhar;\":0x2966,\n \"lvertneqq;\":[0x2268,0xfe00], \"lvnE;\":[0x2268,0xfe00],\n \"mDDot;\":0x223a, \"macr\":0xaf,\n \"macr;\":0xaf, \"male;\":0x2642,\n \"malt;\":0x2720, \"maltese;\":0x2720,\n \"map;\":0x21a6, \"mapsto;\":0x21a6,\n \"mapstodown;\":0x21a7, \"mapstoleft;\":0x21a4,\n \"mapstoup;\":0x21a5, \"marker;\":0x25ae,\n \"mcomma;\":0x2a29, \"mcy;\":0x43c,\n \"mdash;\":0x2014, \"measuredangle;\":0x2221,\n \"mfr;\":[0xd835,0xdd2a], \"mho;\":0x2127,\n \"micro\":0xb5, \"micro;\":0xb5,\n \"mid;\":0x2223, \"midast;\":0x2a,\n \"midcir;\":0x2af0, \"middot\":0xb7,\n \"middot;\":0xb7, \"minus;\":0x2212,\n \"minusb;\":0x229f, \"minusd;\":0x2238,\n \"minusdu;\":0x2a2a, \"mlcp;\":0x2adb,\n \"mldr;\":0x2026, \"mnplus;\":0x2213,\n \"models;\":0x22a7, \"mopf;\":[0xd835,0xdd5e],\n \"mp;\":0x2213, \"mscr;\":[0xd835,0xdcc2],\n \"mstpos;\":0x223e, \"mu;\":0x3bc,\n \"multimap;\":0x22b8, \"mumap;\":0x22b8,\n \"nGg;\":[0x22d9,0x338], \"nGt;\":[0x226b,0x20d2],\n \"nGtv;\":[0x226b,0x338], \"nLeftarrow;\":0x21cd,\n \"nLeftrightarrow;\":0x21ce, \"nLl;\":[0x22d8,0x338],\n \"nLt;\":[0x226a,0x20d2], \"nLtv;\":[0x226a,0x338],\n \"nRightarrow;\":0x21cf, \"nVDash;\":0x22af,\n \"nVdash;\":0x22ae, \"nabla;\":0x2207,\n \"nacute;\":0x144, \"nang;\":[0x2220,0x20d2],\n \"nap;\":0x2249, \"napE;\":[0x2a70,0x338],\n \"napid;\":[0x224b,0x338], \"napos;\":0x149,\n \"napprox;\":0x2249, \"natur;\":0x266e,\n \"natural;\":0x266e, \"naturals;\":0x2115,\n \"nbsp\":0xa0, \"nbsp;\":0xa0,\n \"nbump;\":[0x224e,0x338], \"nbumpe;\":[0x224f,0x338],\n \"ncap;\":0x2a43, \"ncaron;\":0x148,\n \"ncedil;\":0x146, \"ncong;\":0x2247,\n \"ncongdot;\":[0x2a6d,0x338], \"ncup;\":0x2a42,\n \"ncy;\":0x43d, \"ndash;\":0x2013,\n \"ne;\":0x2260, \"neArr;\":0x21d7,\n \"nearhk;\":0x2924, \"nearr;\":0x2197,\n \"nearrow;\":0x2197, \"nedot;\":[0x2250,0x338],\n \"nequiv;\":0x2262, \"nesear;\":0x2928,\n \"nesim;\":[0x2242,0x338], \"nexist;\":0x2204,\n \"nexists;\":0x2204, \"nfr;\":[0xd835,0xdd2b],\n \"ngE;\":[0x2267,0x338], \"nge;\":0x2271,\n \"ngeq;\":0x2271, \"ngeqq;\":[0x2267,0x338],\n \"ngeqslant;\":[0x2a7e,0x338], \"nges;\":[0x2a7e,0x338],\n \"ngsim;\":0x2275, \"ngt;\":0x226f,\n \"ngtr;\":0x226f, \"nhArr;\":0x21ce,\n \"nharr;\":0x21ae, \"nhpar;\":0x2af2,\n \"ni;\":0x220b, \"nis;\":0x22fc,\n \"nisd;\":0x22fa, \"niv;\":0x220b,\n \"njcy;\":0x45a, \"nlArr;\":0x21cd,\n \"nlE;\":[0x2266,0x338], \"nlarr;\":0x219a,\n \"nldr;\":0x2025, \"nle;\":0x2270,\n \"nleftarrow;\":0x219a, \"nleftrightarrow;\":0x21ae,\n \"nleq;\":0x2270, \"nleqq;\":[0x2266,0x338],\n \"nleqslant;\":[0x2a7d,0x338], \"nles;\":[0x2a7d,0x338],\n \"nless;\":0x226e, \"nlsim;\":0x2274,\n \"nlt;\":0x226e, \"nltri;\":0x22ea,\n \"nltrie;\":0x22ec, \"nmid;\":0x2224,\n \"nopf;\":[0xd835,0xdd5f], \"not\":0xac,\n \"not;\":0xac, \"notin;\":0x2209,\n \"notinE;\":[0x22f9,0x338], \"notindot;\":[0x22f5,0x338],\n \"notinva;\":0x2209, \"notinvb;\":0x22f7,\n \"notinvc;\":0x22f6, \"notni;\":0x220c,\n \"notniva;\":0x220c, \"notnivb;\":0x22fe,\n \"notnivc;\":0x22fd, \"npar;\":0x2226,\n \"nparallel;\":0x2226, \"nparsl;\":[0x2afd,0x20e5],\n \"npart;\":[0x2202,0x338], \"npolint;\":0x2a14,\n \"npr;\":0x2280, \"nprcue;\":0x22e0,\n \"npre;\":[0x2aaf,0x338], \"nprec;\":0x2280,\n \"npreceq;\":[0x2aaf,0x338], \"nrArr;\":0x21cf,\n \"nrarr;\":0x219b, \"nrarrc;\":[0x2933,0x338],\n \"nrarrw;\":[0x219d,0x338], \"nrightarrow;\":0x219b,\n \"nrtri;\":0x22eb, \"nrtrie;\":0x22ed,\n \"nsc;\":0x2281, \"nsccue;\":0x22e1,\n \"nsce;\":[0x2ab0,0x338], \"nscr;\":[0xd835,0xdcc3],\n \"nshortmid;\":0x2224, \"nshortparallel;\":0x2226,\n \"nsim;\":0x2241, \"nsime;\":0x2244,\n \"nsimeq;\":0x2244, \"nsmid;\":0x2224,\n \"nspar;\":0x2226, \"nsqsube;\":0x22e2,\n \"nsqsupe;\":0x22e3, \"nsub;\":0x2284,\n \"nsubE;\":[0x2ac5,0x338], \"nsube;\":0x2288,\n \"nsubset;\":[0x2282,0x20d2], \"nsubseteq;\":0x2288,\n \"nsubseteqq;\":[0x2ac5,0x338], \"nsucc;\":0x2281,\n \"nsucceq;\":[0x2ab0,0x338], \"nsup;\":0x2285,\n \"nsupE;\":[0x2ac6,0x338], \"nsupe;\":0x2289,\n \"nsupset;\":[0x2283,0x20d2], \"nsupseteq;\":0x2289,\n \"nsupseteqq;\":[0x2ac6,0x338], \"ntgl;\":0x2279,\n \"ntilde\":0xf1, \"ntilde;\":0xf1,\n \"ntlg;\":0x2278, \"ntriangleleft;\":0x22ea,\n \"ntrianglelefteq;\":0x22ec, \"ntriangleright;\":0x22eb,\n \"ntrianglerighteq;\":0x22ed, \"nu;\":0x3bd,\n \"num;\":0x23, \"numero;\":0x2116,\n \"numsp;\":0x2007, \"nvDash;\":0x22ad,\n \"nvHarr;\":0x2904, \"nvap;\":[0x224d,0x20d2],\n \"nvdash;\":0x22ac, \"nvge;\":[0x2265,0x20d2],\n \"nvgt;\":[0x3e,0x20d2], \"nvinfin;\":0x29de,\n \"nvlArr;\":0x2902, \"nvle;\":[0x2264,0x20d2],\n \"nvlt;\":[0x3c,0x20d2], \"nvltrie;\":[0x22b4,0x20d2],\n \"nvrArr;\":0x2903, \"nvrtrie;\":[0x22b5,0x20d2],\n \"nvsim;\":[0x223c,0x20d2], \"nwArr;\":0x21d6,\n \"nwarhk;\":0x2923, \"nwarr;\":0x2196,\n \"nwarrow;\":0x2196, \"nwnear;\":0x2927,\n \"oS;\":0x24c8, \"oacute\":0xf3,\n \"oacute;\":0xf3, \"oast;\":0x229b,\n \"ocir;\":0x229a, \"ocirc\":0xf4,\n \"ocirc;\":0xf4, \"ocy;\":0x43e,\n \"odash;\":0x229d, \"odblac;\":0x151,\n \"odiv;\":0x2a38, \"odot;\":0x2299,\n \"odsold;\":0x29bc, \"oelig;\":0x153,\n \"ofcir;\":0x29bf, \"ofr;\":[0xd835,0xdd2c],\n \"ogon;\":0x2db, \"ograve\":0xf2,\n \"ograve;\":0xf2, \"ogt;\":0x29c1,\n \"ohbar;\":0x29b5, \"ohm;\":0x3a9,\n \"oint;\":0x222e, \"olarr;\":0x21ba,\n \"olcir;\":0x29be, \"olcross;\":0x29bb,\n \"oline;\":0x203e, \"olt;\":0x29c0,\n \"omacr;\":0x14d, \"omega;\":0x3c9,\n \"omicron;\":0x3bf, \"omid;\":0x29b6,\n \"ominus;\":0x2296, \"oopf;\":[0xd835,0xdd60],\n \"opar;\":0x29b7, \"operp;\":0x29b9,\n \"oplus;\":0x2295, \"or;\":0x2228,\n \"orarr;\":0x21bb, \"ord;\":0x2a5d,\n \"order;\":0x2134, \"orderof;\":0x2134,\n \"ordf\":0xaa, \"ordf;\":0xaa,\n \"ordm\":0xba, \"ordm;\":0xba,\n \"origof;\":0x22b6, \"oror;\":0x2a56,\n \"orslope;\":0x2a57, \"orv;\":0x2a5b,\n \"oscr;\":0x2134, \"oslash\":0xf8,\n \"oslash;\":0xf8, \"osol;\":0x2298,\n \"otilde\":0xf5, \"otilde;\":0xf5,\n \"otimes;\":0x2297, \"otimesas;\":0x2a36,\n \"ouml\":0xf6, \"ouml;\":0xf6,\n \"ovbar;\":0x233d, \"par;\":0x2225,\n \"para\":0xb6, \"para;\":0xb6,\n \"parallel;\":0x2225, \"parsim;\":0x2af3,\n \"parsl;\":0x2afd, \"part;\":0x2202,\n \"pcy;\":0x43f, \"percnt;\":0x25,\n \"period;\":0x2e, \"permil;\":0x2030,\n \"perp;\":0x22a5, \"pertenk;\":0x2031,\n \"pfr;\":[0xd835,0xdd2d], \"phi;\":0x3c6,\n \"phiv;\":0x3d5, \"phmmat;\":0x2133,\n \"phone;\":0x260e, \"pi;\":0x3c0,\n \"pitchfork;\":0x22d4, \"piv;\":0x3d6,\n \"planck;\":0x210f, \"planckh;\":0x210e,\n \"plankv;\":0x210f, \"plus;\":0x2b,\n \"plusacir;\":0x2a23, \"plusb;\":0x229e,\n \"pluscir;\":0x2a22, \"plusdo;\":0x2214,\n \"plusdu;\":0x2a25, \"pluse;\":0x2a72,\n \"plusmn\":0xb1, \"plusmn;\":0xb1,\n \"plussim;\":0x2a26, \"plustwo;\":0x2a27,\n \"pm;\":0xb1, \"pointint;\":0x2a15,\n \"popf;\":[0xd835,0xdd61], \"pound\":0xa3,\n \"pound;\":0xa3, \"pr;\":0x227a,\n \"prE;\":0x2ab3, \"prap;\":0x2ab7,\n \"prcue;\":0x227c, \"pre;\":0x2aaf,\n \"prec;\":0x227a, \"precapprox;\":0x2ab7,\n \"preccurlyeq;\":0x227c, \"preceq;\":0x2aaf,\n \"precnapprox;\":0x2ab9, \"precneqq;\":0x2ab5,\n \"precnsim;\":0x22e8, \"precsim;\":0x227e,\n \"prime;\":0x2032, \"primes;\":0x2119,\n \"prnE;\":0x2ab5, \"prnap;\":0x2ab9,\n \"prnsim;\":0x22e8, \"prod;\":0x220f,\n \"profalar;\":0x232e, \"profline;\":0x2312,\n \"profsurf;\":0x2313, \"prop;\":0x221d,\n \"propto;\":0x221d, \"prsim;\":0x227e,\n \"prurel;\":0x22b0, \"pscr;\":[0xd835,0xdcc5],\n \"psi;\":0x3c8, \"puncsp;\":0x2008,\n \"qfr;\":[0xd835,0xdd2e], \"qint;\":0x2a0c,\n \"qopf;\":[0xd835,0xdd62], \"qprime;\":0x2057,\n \"qscr;\":[0xd835,0xdcc6], \"quaternions;\":0x210d,\n \"quatint;\":0x2a16, \"quest;\":0x3f,\n \"questeq;\":0x225f, \"quot\":0x22,\n \"quot;\":0x22, \"rAarr;\":0x21db,\n \"rArr;\":0x21d2, \"rAtail;\":0x291c,\n \"rBarr;\":0x290f, \"rHar;\":0x2964,\n \"race;\":[0x223d,0x331], \"racute;\":0x155,\n \"radic;\":0x221a, \"raemptyv;\":0x29b3,\n \"rang;\":0x27e9, \"rangd;\":0x2992,\n \"range;\":0x29a5, \"rangle;\":0x27e9,\n \"raquo\":0xbb, \"raquo;\":0xbb,\n \"rarr;\":0x2192, \"rarrap;\":0x2975,\n \"rarrb;\":0x21e5, \"rarrbfs;\":0x2920,\n \"rarrc;\":0x2933, \"rarrfs;\":0x291e,\n \"rarrhk;\":0x21aa, \"rarrlp;\":0x21ac,\n \"rarrpl;\":0x2945, \"rarrsim;\":0x2974,\n \"rarrtl;\":0x21a3, \"rarrw;\":0x219d,\n \"ratail;\":0x291a, \"ratio;\":0x2236,\n \"rationals;\":0x211a, \"rbarr;\":0x290d,\n \"rbbrk;\":0x2773, \"rbrace;\":0x7d,\n \"rbrack;\":0x5d, \"rbrke;\":0x298c,\n \"rbrksld;\":0x298e, \"rbrkslu;\":0x2990,\n \"rcaron;\":0x159, \"rcedil;\":0x157,\n \"rceil;\":0x2309, \"rcub;\":0x7d,\n \"rcy;\":0x440, \"rdca;\":0x2937,\n \"rdldhar;\":0x2969, \"rdquo;\":0x201d,\n \"rdquor;\":0x201d, \"rdsh;\":0x21b3,\n \"real;\":0x211c, \"realine;\":0x211b,\n \"realpart;\":0x211c, \"reals;\":0x211d,\n \"rect;\":0x25ad, \"reg\":0xae,\n \"reg;\":0xae, \"rfisht;\":0x297d,\n \"rfloor;\":0x230b, \"rfr;\":[0xd835,0xdd2f],\n \"rhard;\":0x21c1, \"rharu;\":0x21c0,\n \"rharul;\":0x296c, \"rho;\":0x3c1,\n \"rhov;\":0x3f1, \"rightarrow;\":0x2192,\n \"rightarrowtail;\":0x21a3, \"rightharpoondown;\":0x21c1,\n \"rightharpoonup;\":0x21c0, \"rightleftarrows;\":0x21c4,\n \"rightleftharpoons;\":0x21cc, \"rightrightarrows;\":0x21c9,\n \"rightsquigarrow;\":0x219d, \"rightthreetimes;\":0x22cc,\n \"ring;\":0x2da, \"risingdotseq;\":0x2253,\n \"rlarr;\":0x21c4, \"rlhar;\":0x21cc,\n \"rlm;\":0x200f, \"rmoust;\":0x23b1,\n \"rmoustache;\":0x23b1, \"rnmid;\":0x2aee,\n \"roang;\":0x27ed, \"roarr;\":0x21fe,\n \"robrk;\":0x27e7, \"ropar;\":0x2986,\n \"ropf;\":[0xd835,0xdd63], \"roplus;\":0x2a2e,\n \"rotimes;\":0x2a35, \"rpar;\":0x29,\n \"rpargt;\":0x2994, \"rppolint;\":0x2a12,\n \"rrarr;\":0x21c9, \"rsaquo;\":0x203a,\n \"rscr;\":[0xd835,0xdcc7], \"rsh;\":0x21b1,\n \"rsqb;\":0x5d, \"rsquo;\":0x2019,\n \"rsquor;\":0x2019, \"rthree;\":0x22cc,\n \"rtimes;\":0x22ca, \"rtri;\":0x25b9,\n \"rtrie;\":0x22b5, \"rtrif;\":0x25b8,\n \"rtriltri;\":0x29ce, \"ruluhar;\":0x2968,\n \"rx;\":0x211e, \"sacute;\":0x15b,\n \"sbquo;\":0x201a, \"sc;\":0x227b,\n \"scE;\":0x2ab4, \"scap;\":0x2ab8,\n \"scaron;\":0x161, \"sccue;\":0x227d,\n \"sce;\":0x2ab0, \"scedil;\":0x15f,\n \"scirc;\":0x15d, \"scnE;\":0x2ab6,\n \"scnap;\":0x2aba, \"scnsim;\":0x22e9,\n \"scpolint;\":0x2a13, \"scsim;\":0x227f,\n \"scy;\":0x441, \"sdot;\":0x22c5,\n \"sdotb;\":0x22a1, \"sdote;\":0x2a66,\n \"seArr;\":0x21d8, \"searhk;\":0x2925,\n \"searr;\":0x2198, \"searrow;\":0x2198,\n \"sect\":0xa7, \"sect;\":0xa7,\n \"semi;\":0x3b, \"seswar;\":0x2929,\n \"setminus;\":0x2216, \"setmn;\":0x2216,\n \"sext;\":0x2736, \"sfr;\":[0xd835,0xdd30],\n \"sfrown;\":0x2322, \"sharp;\":0x266f,\n \"shchcy;\":0x449, \"shcy;\":0x448,\n \"shortmid;\":0x2223, \"shortparallel;\":0x2225,\n \"shy\":0xad, \"shy;\":0xad,\n \"sigma;\":0x3c3, \"sigmaf;\":0x3c2,\n \"sigmav;\":0x3c2, \"sim;\":0x223c,\n \"simdot;\":0x2a6a, \"sime;\":0x2243,\n \"simeq;\":0x2243, \"simg;\":0x2a9e,\n \"simgE;\":0x2aa0, \"siml;\":0x2a9d,\n \"simlE;\":0x2a9f, \"simne;\":0x2246,\n \"simplus;\":0x2a24, \"simrarr;\":0x2972,\n \"slarr;\":0x2190, \"smallsetminus;\":0x2216,\n \"smashp;\":0x2a33, \"smeparsl;\":0x29e4,\n \"smid;\":0x2223, \"smile;\":0x2323,\n \"smt;\":0x2aaa, \"smte;\":0x2aac,\n \"smtes;\":[0x2aac,0xfe00], \"softcy;\":0x44c,\n \"sol;\":0x2f, \"solb;\":0x29c4,\n \"solbar;\":0x233f, \"sopf;\":[0xd835,0xdd64],\n \"spades;\":0x2660, \"spadesuit;\":0x2660,\n \"spar;\":0x2225, \"sqcap;\":0x2293,\n \"sqcaps;\":[0x2293,0xfe00], \"sqcup;\":0x2294,\n \"sqcups;\":[0x2294,0xfe00], \"sqsub;\":0x228f,\n \"sqsube;\":0x2291, \"sqsubset;\":0x228f,\n \"sqsubseteq;\":0x2291, \"sqsup;\":0x2290,\n \"sqsupe;\":0x2292, \"sqsupset;\":0x2290,\n \"sqsupseteq;\":0x2292, \"squ;\":0x25a1,\n \"square;\":0x25a1, \"squarf;\":0x25aa,\n \"squf;\":0x25aa, \"srarr;\":0x2192,\n \"sscr;\":[0xd835,0xdcc8], \"ssetmn;\":0x2216,\n \"ssmile;\":0x2323, \"sstarf;\":0x22c6,\n \"star;\":0x2606, \"starf;\":0x2605,\n \"straightepsilon;\":0x3f5, \"straightphi;\":0x3d5,\n \"strns;\":0xaf, \"sub;\":0x2282,\n \"subE;\":0x2ac5, \"subdot;\":0x2abd,\n \"sube;\":0x2286, \"subedot;\":0x2ac3,\n \"submult;\":0x2ac1, \"subnE;\":0x2acb,\n \"subne;\":0x228a, \"subplus;\":0x2abf,\n \"subrarr;\":0x2979, \"subset;\":0x2282,\n \"subseteq;\":0x2286, \"subseteqq;\":0x2ac5,\n \"subsetneq;\":0x228a, \"subsetneqq;\":0x2acb,\n \"subsim;\":0x2ac7, \"subsub;\":0x2ad5,\n \"subsup;\":0x2ad3, \"succ;\":0x227b,\n \"succapprox;\":0x2ab8, \"succcurlyeq;\":0x227d,\n \"succeq;\":0x2ab0, \"succnapprox;\":0x2aba,\n \"succneqq;\":0x2ab6, \"succnsim;\":0x22e9,\n \"succsim;\":0x227f, \"sum;\":0x2211,\n \"sung;\":0x266a, \"sup1\":0xb9,\n \"sup1;\":0xb9, \"sup2\":0xb2,\n \"sup2;\":0xb2, \"sup3\":0xb3,\n \"sup3;\":0xb3, \"sup;\":0x2283,\n \"supE;\":0x2ac6, \"supdot;\":0x2abe,\n \"supdsub;\":0x2ad8, \"supe;\":0x2287,\n \"supedot;\":0x2ac4, \"suphsol;\":0x27c9,\n \"suphsub;\":0x2ad7, \"suplarr;\":0x297b,\n \"supmult;\":0x2ac2, \"supnE;\":0x2acc,\n \"supne;\":0x228b, \"supplus;\":0x2ac0,\n \"supset;\":0x2283, \"supseteq;\":0x2287,\n \"supseteqq;\":0x2ac6, \"supsetneq;\":0x228b,\n \"supsetneqq;\":0x2acc, \"supsim;\":0x2ac8,\n \"supsub;\":0x2ad4, \"supsup;\":0x2ad6,\n \"swArr;\":0x21d9, \"swarhk;\":0x2926,\n \"swarr;\":0x2199, \"swarrow;\":0x2199,\n \"swnwar;\":0x292a, \"szlig\":0xdf,\n \"szlig;\":0xdf, \"target;\":0x2316,\n \"tau;\":0x3c4, \"tbrk;\":0x23b4,\n \"tcaron;\":0x165, \"tcedil;\":0x163,\n \"tcy;\":0x442, \"tdot;\":0x20db,\n \"telrec;\":0x2315, \"tfr;\":[0xd835,0xdd31],\n \"there4;\":0x2234, \"therefore;\":0x2234,\n \"theta;\":0x3b8, \"thetasym;\":0x3d1,\n \"thetav;\":0x3d1, \"thickapprox;\":0x2248,\n \"thicksim;\":0x223c, \"thinsp;\":0x2009,\n \"thkap;\":0x2248, \"thksim;\":0x223c,\n \"thorn\":0xfe, \"thorn;\":0xfe,\n \"tilde;\":0x2dc, \"times\":0xd7,\n \"times;\":0xd7, \"timesb;\":0x22a0,\n \"timesbar;\":0x2a31, \"timesd;\":0x2a30,\n \"tint;\":0x222d, \"toea;\":0x2928,\n \"top;\":0x22a4, \"topbot;\":0x2336,\n \"topcir;\":0x2af1, \"topf;\":[0xd835,0xdd65],\n \"topfork;\":0x2ada, \"tosa;\":0x2929,\n \"tprime;\":0x2034, \"trade;\":0x2122,\n \"triangle;\":0x25b5, \"triangledown;\":0x25bf,\n \"triangleleft;\":0x25c3, \"trianglelefteq;\":0x22b4,\n \"triangleq;\":0x225c, \"triangleright;\":0x25b9,\n \"trianglerighteq;\":0x22b5, \"tridot;\":0x25ec,\n \"trie;\":0x225c, \"triminus;\":0x2a3a,\n \"triplus;\":0x2a39, \"trisb;\":0x29cd,\n \"tritime;\":0x2a3b, \"trpezium;\":0x23e2,\n \"tscr;\":[0xd835,0xdcc9], \"tscy;\":0x446,\n \"tshcy;\":0x45b, \"tstrok;\":0x167,\n \"twixt;\":0x226c, \"twoheadleftarrow;\":0x219e,\n \"twoheadrightarrow;\":0x21a0, \"uArr;\":0x21d1,\n \"uHar;\":0x2963, \"uacute\":0xfa,\n \"uacute;\":0xfa, \"uarr;\":0x2191,\n \"ubrcy;\":0x45e, \"ubreve;\":0x16d,\n \"ucirc\":0xfb, \"ucirc;\":0xfb,\n \"ucy;\":0x443, \"udarr;\":0x21c5,\n \"udblac;\":0x171, \"udhar;\":0x296e,\n \"ufisht;\":0x297e, \"ufr;\":[0xd835,0xdd32],\n \"ugrave\":0xf9, \"ugrave;\":0xf9,\n \"uharl;\":0x21bf, \"uharr;\":0x21be,\n \"uhblk;\":0x2580, \"ulcorn;\":0x231c,\n \"ulcorner;\":0x231c, \"ulcrop;\":0x230f,\n \"ultri;\":0x25f8, \"umacr;\":0x16b,\n \"uml\":0xa8, \"uml;\":0xa8,\n \"uogon;\":0x173, \"uopf;\":[0xd835,0xdd66],\n \"uparrow;\":0x2191, \"updownarrow;\":0x2195,\n \"upharpoonleft;\":0x21bf, \"upharpoonright;\":0x21be,\n \"uplus;\":0x228e, \"upsi;\":0x3c5,\n \"upsih;\":0x3d2, \"upsilon;\":0x3c5,\n \"upuparrows;\":0x21c8, \"urcorn;\":0x231d,\n \"urcorner;\":0x231d, \"urcrop;\":0x230e,\n \"uring;\":0x16f, \"urtri;\":0x25f9,\n \"uscr;\":[0xd835,0xdcca], \"utdot;\":0x22f0,\n \"utilde;\":0x169, \"utri;\":0x25b5,\n \"utrif;\":0x25b4, \"uuarr;\":0x21c8,\n \"uuml\":0xfc, \"uuml;\":0xfc,\n \"uwangle;\":0x29a7, \"vArr;\":0x21d5,\n \"vBar;\":0x2ae8, \"vBarv;\":0x2ae9,\n \"vDash;\":0x22a8, \"vangrt;\":0x299c,\n \"varepsilon;\":0x3f5, \"varkappa;\":0x3f0,\n \"varnothing;\":0x2205, \"varphi;\":0x3d5,\n \"varpi;\":0x3d6, \"varpropto;\":0x221d,\n \"varr;\":0x2195, \"varrho;\":0x3f1,\n \"varsigma;\":0x3c2, \"varsubsetneq;\":[0x228a,0xfe00],\n \"varsubsetneqq;\":[0x2acb,0xfe00], \"varsupsetneq;\":[0x228b,0xfe00],\n \"varsupsetneqq;\":[0x2acc,0xfe00], \"vartheta;\":0x3d1,\n \"vartriangleleft;\":0x22b2, \"vartriangleright;\":0x22b3,\n \"vcy;\":0x432, \"vdash;\":0x22a2,\n \"vee;\":0x2228, \"veebar;\":0x22bb,\n \"veeeq;\":0x225a, \"vellip;\":0x22ee,\n \"verbar;\":0x7c, \"vert;\":0x7c,\n \"vfr;\":[0xd835,0xdd33], \"vltri;\":0x22b2,\n \"vnsub;\":[0x2282,0x20d2], \"vnsup;\":[0x2283,0x20d2],\n \"vopf;\":[0xd835,0xdd67], \"vprop;\":0x221d,\n \"vrtri;\":0x22b3, \"vscr;\":[0xd835,0xdccb],\n \"vsubnE;\":[0x2acb,0xfe00], \"vsubne;\":[0x228a,0xfe00],\n \"vsupnE;\":[0x2acc,0xfe00], \"vsupne;\":[0x228b,0xfe00],\n \"vzigzag;\":0x299a, \"wcirc;\":0x175,\n \"wedbar;\":0x2a5f, \"wedge;\":0x2227,\n \"wedgeq;\":0x2259, \"weierp;\":0x2118,\n \"wfr;\":[0xd835,0xdd34], \"wopf;\":[0xd835,0xdd68],\n \"wp;\":0x2118, \"wr;\":0x2240,\n \"wreath;\":0x2240, \"wscr;\":[0xd835,0xdccc],\n \"xcap;\":0x22c2, \"xcirc;\":0x25ef,\n \"xcup;\":0x22c3, \"xdtri;\":0x25bd,\n \"xfr;\":[0xd835,0xdd35], \"xhArr;\":0x27fa,\n \"xharr;\":0x27f7, \"xi;\":0x3be,\n \"xlArr;\":0x27f8, \"xlarr;\":0x27f5,\n \"xmap;\":0x27fc, \"xnis;\":0x22fb,\n \"xodot;\":0x2a00, \"xopf;\":[0xd835,0xdd69],\n \"xoplus;\":0x2a01, \"xotime;\":0x2a02,\n \"xrArr;\":0x27f9, \"xrarr;\":0x27f6,\n \"xscr;\":[0xd835,0xdccd], \"xsqcup;\":0x2a06,\n \"xuplus;\":0x2a04, \"xutri;\":0x25b3,\n \"xvee;\":0x22c1, \"xwedge;\":0x22c0,\n \"yacute\":0xfd, \"yacute;\":0xfd,\n \"yacy;\":0x44f, \"ycirc;\":0x177,\n \"ycy;\":0x44b, \"yen\":0xa5,\n \"yen;\":0xa5, \"yfr;\":[0xd835,0xdd36],\n \"yicy;\":0x457, \"yopf;\":[0xd835,0xdd6a],\n \"yscr;\":[0xd835,0xdcce], \"yucy;\":0x44e,\n \"yuml\":0xff, \"yuml;\":0xff,\n \"zacute;\":0x17a, \"zcaron;\":0x17e,\n \"zcy;\":0x437, \"zdot;\":0x17c,\n \"zeetrf;\":0x2128, \"zeta;\":0x3b6,\n \"zfr;\":[0xd835,0xdd37], \"zhcy;\":0x436,\n \"zigrarr;\":0x21dd, \"zopf;\":[0xd835,0xdd6b],\n \"zscr;\":[0xd835,0xdccf], \"zwj;\":0x200d,\n \"zwnj;\":0x200c,\n};\n/*\n * This regexp is generated with test/tools/update-entities.js\n * It will always match at least one character -- but note that there\n * are no entities whose names are a single character long.\n */\nvar NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\\s\\S]/g;\n\nvar NAMEDCHARREF_MAXLEN = 32;\n\n// Regular expression constants used by the tokenizer and parser\n\n// Note that \\r is included in all of these regexps because it will need\n// to be converted to LF by the scanChars() function.\nvar DBLQUOTEATTRVAL = /[^\\r\"&\\u0000]+/g;\nvar SINGLEQUOTEATTRVAL = /[^\\r'&\\u0000]+/g;\nvar UNQUOTEDATTRVAL = /[^\\r\\t\\n\\f &>\\u0000]+/g;\nvar TAGNAME = /[^\\r\\t\\n\\f \\/>A-Z\\u0000]+/g;\nvar ATTRNAME = /[^\\r\\t\\n\\f \\/=>A-Z\\u0000]+/g;\n\nvar CDATATEXT = /[^\\]\\r\\u0000\\uffff]*/g;\nvar DATATEXT = /[^&<\\r\\u0000\\uffff]*/g;\nvar RAWTEXT = /[^<\\r\\u0000\\uffff]*/g;\nvar PLAINTEXT = /[^\\r\\u0000\\uffff]*/g;\n// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG\n// and SIMPLEATTR so that we are guaranteed to always match. This prevents\n// us from scanning past the lastIndex set. (Note that the desired matches\n// are always greater than 1 char long, so longest-match will ensure that .\n// is not matched unless the desired match fails.)\nvar SIMPLETAG = /(?:(\\/)?([a-z]+)>)|[\\s\\S]/g;\nvar SIMPLEATTR = /(?:([-a-z]+)[ \\t\\n\\f]*=[ \\t\\n\\f]*('[^'&\\r\\u0000]*'|\"[^\"&\\r\\u0000]*\"|[^\\t\\n\\r\\f \"&'\\u0000>][^&> \\t\\n\\r\\f\\u0000]*[ \\t\\n\\f]))|[\\s\\S]/g;\n\nvar NONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/;\nvar ALLNONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/g; // like above, with g flag\nvar NONWSNONNUL = /[^\\x00\\x09\\x0A\\x0C\\x0D\\x20]/; // don't allow NUL either\nvar LEADINGWS = /^[\\x09\\x0A\\x0C\\x0D\\x20]+/;\nvar NULCHARS = /\\x00/g;\n\n/***\n * These are utility functions that don't use any of the parser's\n * internal state.\n */\nfunction buf2str(buf) {\n var CHUNKSIZE=16384;\n if (buf.length < CHUNKSIZE) {\n return String.fromCharCode.apply(String, buf);\n }\n // special case for large strings, to avoid busting the stack.\n var result = '';\n for (var i = 0; i < buf.length; i += CHUNKSIZE) {\n result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE));\n }\n return result;\n}\n\nfunction str2buf(s) {\n var result = [];\n for (var i=0; i 0; i--) {\n var e = this.elements[i];\n if (isA(e, tag)) break;\n }\n this.elements.length = i;\n this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the first\n// element that is an instance of the specified type\nHTMLParser.ElementStack.prototype.popElementType = function(type) {\n for(var i = this.elements.length-1; i > 0; i--) {\n if (this.elements[i] instanceof type) break;\n }\n this.elements.length = i;\n this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the element e.\n// Note that this is very different from removeElement()\n// This requires that e is on the stack.\nHTMLParser.ElementStack.prototype.popElement = function(e) {\n for(var i = this.elements.length-1; i > 0; i--) {\n if (this.elements[i] === e) break;\n }\n this.elements.length = i;\n this.top = this.elements[i-1];\n};\n\n// Remove a specific element from the stack.\n// Do nothing if the element is not on the stack\nHTMLParser.ElementStack.prototype.removeElement = function(e) {\n if (this.top === e) this.pop();\n else {\n var idx = this.elements.lastIndexOf(e);\n if (idx !== -1)\n this.elements.splice(idx, 1);\n }\n};\n\nHTMLParser.ElementStack.prototype.clearToContext = function(set) {\n // Note that we don't loop to 0. Never pop the elt off.\n for(var i = this.elements.length-1; i > 0; i--) {\n if (isA(this.elements[i], set)) break;\n }\n this.elements.length = i+1;\n this.top = this.elements[i];\n};\n\nHTMLParser.ElementStack.prototype.contains = function(tag) {\n return this.inSpecificScope(tag, Object.create(null));\n};\n\nHTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) {\n for(var i = this.elements.length-1; i >= 0; i--) {\n var elt = this.elements[i];\n if (isA(elt, tag)) return true;\n if (isA(elt, set)) return false;\n }\n return false;\n};\n\n// Like the above, but for a specific element, not a tagname\nHTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) {\n for(var i = this.elements.length-1; i >= 0; i--) {\n var elt = this.elements[i];\n if (elt === target) return true;\n if (isA(elt, set)) return false;\n }\n return false;\n};\n\n// Like the above, but for an element interface, not a tagname\nHTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) {\n for(var i = this.elements.length-1; i >= 0; i--) {\n var elt = this.elements[i];\n if (elt instanceof target) return true;\n if (isA(elt, set)) return false;\n }\n return false;\n};\n\nHTMLParser.ElementStack.prototype.inScope = function(tag) {\n return this.inSpecificScope(tag, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementInScope = function(e) {\n return this.elementInSpecificScope(e, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementTypeInScope = function(type) {\n return this.elementTypeInSpecificScope(type, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inButtonScope = function(tag) {\n return this.inSpecificScope(tag, inButtonScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inListItemScope = function(tag) {\n return this.inSpecificScope(tag, inListItemScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inTableScope = function(tag) {\n return this.inSpecificScope(tag, inTableScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inSelectScope = function(tag) {\n // Can't implement this one with inSpecificScope, since it involves\n // a set defined by inverting another set. So implement manually.\n for(var i = this.elements.length-1; i >= 0; i--) {\n var elt = this.elements[i];\n if (elt.namespaceURI !== NAMESPACE.HTML) return false;\n var localname = elt.localName;\n if (localname === tag) return true;\n if (localname !== \"optgroup\" && localname !== \"option\")\n return false;\n }\n return false;\n};\n\nHTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) {\n var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet;\n for(var i = this.elements.length-1; i >= 0; i--) {\n var e = this.elements[i];\n if (butnot && isA(e, butnot)) break;\n if (!isA(this.elements[i], endTagSet)) break;\n }\n\n this.elements.length = i+1;\n this.top = this.elements[i];\n};\n\n/***\n * The ActiveFormattingElements class\n */\nHTMLParser.ActiveFormattingElements = function AFE() {\n this.list = []; // elements\n this.attrs = []; // attribute tokens for cloning\n};\n\nHTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: \"|\" };\n\n/*\n// For debugging\nHTMLParser.ActiveFormattingElements.prototype.toString = function() {\n return \"AFE: \" +\n this.list.map(function(e) { return e.localName; }).join(\"-\");\n}\n*/\n\nHTMLParser.ActiveFormattingElements.prototype.insertMarker = function() {\n this.list.push(this.MARKER);\n this.attrs.push(this.MARKER);\n};\n\nHTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) {\n // Scan backwards: if there are already 3 copies of this element\n // before we encounter a marker, then drop the last one\n var count = 0;\n for(var i = this.list.length-1; i >= 0; i--) {\n if (this.list[i] === this.MARKER) break;\n // equal() is defined below\n if (equal(elt, this.list[i], this.attrs[i])) {\n count++;\n if (count === 3) {\n this.list.splice(i, 1);\n this.attrs.splice(i, 1);\n break;\n }\n }\n }\n\n\n // Now push the element onto the list\n this.list.push(elt);\n\n // Copy the attributes and push those on, too\n var attrcopy = [];\n for(var ii = 0; ii < attrs.length; ii++) {\n attrcopy[ii] = attrs[ii];\n }\n\n this.attrs.push(attrcopy);\n\n // This function defines equality of two elements for the purposes\n // of the AFE list. Note that it compares the new elements\n // attributes to the saved array of attributes associated with\n // the old element because a script could have changed the\n // old element's set of attributes\n function equal(newelt, oldelt, oldattrs) {\n if (newelt.localName !== oldelt.localName) return false;\n if (newelt._numattrs !== oldattrs.length) return false;\n for(var i = 0, n = oldattrs.length; i < n; i++) {\n var oldname = oldattrs[i][0];\n var oldval = oldattrs[i][1];\n if (!newelt.hasAttribute(oldname)) return false;\n if (newelt.getAttribute(oldname) !== oldval) return false;\n }\n return true;\n }\n};\n\nHTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() {\n for(var i = this.list.length-1; i >= 0; i--) {\n if (this.list[i] === this.MARKER) break;\n }\n if (i < 0) i = 0;\n this.list.length = i;\n this.attrs.length = i;\n};\n\n// Find and return the last element with the specified tag between the\n// end of the list and the last marker on the list.\n// Used when parsing in_body_mode()\nHTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) {\n for(var i = this.list.length-1; i >= 0; i--) {\n var elt = this.list[i];\n if (elt === this.MARKER) break;\n if (elt.localName === tag) return elt;\n }\n return null;\n};\n\nHTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) {\n return this.list.lastIndexOf(e);\n};\n\n// Find the element e in the list and remove it\n// Used when parsing in_body()\nHTMLParser.ActiveFormattingElements.prototype.remove = function(e) {\n var idx = this.list.lastIndexOf(e);\n if (idx !== -1) {\n this.list.splice(idx, 1);\n this.attrs.splice(idx, 1);\n }\n};\n\n// Find element a in the list and replace it with element b\n// XXX: Do I need to handle attributes here?\nHTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) {\n var idx = this.list.lastIndexOf(a);\n if (idx !== -1) {\n this.list[idx] = b;\n this.attrs[idx] = attrs;\n }\n};\n\n// Find a in the list and insert b after it\n// This is only used for insert a bookmark object, so the\n// attrs array doesn't really matter\nHTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) {\n var idx = this.list.lastIndexOf(a);\n if (idx !== -1) {\n this.list.splice(idx, 0, b);\n this.attrs.splice(idx, 0, b);\n }\n};\n\n\n\n\n/***\n * This is the parser factory function. It is the return value of\n * the outer closure that it is defined within. Most of the parser\n * implementation details are inside this function.\n */\nfunction HTMLParser(address, fragmentContext, options) {\n /***\n * These are the parser's state variables\n */\n // Scanner state\n var chars = null;\n var numchars = 0; // Length of chars\n var nextchar = 0; // Index of next char\n var input_complete = false; // Becomes true when end() called.\n var scanner_skip_newline = false; // If previous char was CR\n var reentrant_invocations = 0;\n var saved_scanner_state = [];\n var leftovers = \"\";\n var first_batch = true;\n var paused = 0; // Becomes non-zero while loading scripts\n\n\n // Tokenizer state\n var tokenizer = data_state; // Current tokenizer state\n var return_state;\n var character_reference_code;\n var tagnamebuf = \"\";\n var lasttagname = \"\"; // holds the target end tag for text states\n var tempbuf = [];\n var attrnamebuf = \"\";\n var attrvaluebuf = \"\";\n var commentbuf = [];\n var doctypenamebuf = [];\n var doctypepublicbuf = [];\n var doctypesystembuf = [];\n var attributes = [];\n var is_end_tag = false;\n\n // Tree builder state\n var parser = initial_mode; // Current insertion mode\n var originalInsertionMode = null; // A saved insertion mode\n var templateInsertionModes = []; // Stack of template insertion modes.\n var stack = new HTMLParser.ElementStack(); // Stack of open elements\n var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags\n var fragment = (fragmentContext!==undefined); // For innerHTML, etc.\n var head_element_pointer = null;\n var form_element_pointer = null;\n var scripting_enabled = true;\n if (fragmentContext) {\n\tscripting_enabled = fragmentContext.ownerDocument._scripting_enabled;\n }\n if (options && options.scripting_enabled === false)\n scripting_enabled = false;\n var frameset_ok = true;\n var force_quirks = false;\n var pending_table_text;\n var text_integration_mode; // XXX a spec bug workaround?\n\n // A single run of characters, buffered up to be sent to\n // the parser as a single string.\n var textrun = [];\n var textIncludesNUL = false;\n var ignore_linefeed = false;\n\n /***\n * This is the parser object that will be the return value of this\n * factory function, which is some 5000 lines below.\n * Note that the variable \"parser\" is the current state of the\n * parser's state machine. This variable \"htmlparser\" is the\n * return value and defines the public API of the parser\n */\n var htmlparser = {\n document: function() {\n return doc;\n },\n\n // Convenience function for internal use. Can only be called once,\n // as it removes the nodes from `doc` to add them to fragment.\n _asDocumentFragment: function() {\n var frag = doc.createDocumentFragment();\n var root = doc.firstChild;\n while(root.hasChildNodes()) {\n frag.appendChild(root.firstChild);\n }\n return frag;\n },\n\n // Internal function used from HTMLScriptElement to pause the\n // parser while a script is being loaded from the network\n pause: function() {\n // print(\"pausing parser\");\n paused++;\n },\n\n // Called when a script finishes loading\n resume: function() {\n // print(\"resuming parser\");\n paused--;\n // XXX: added this to force a resumption.\n // Is this the right thing to do?\n this.parse(\"\");\n },\n\n // Parse the HTML text s.\n // The second argument should be true if there is no more\n // text to be parsed, and should be false or omitted otherwise.\n // The second argument must not be set for recursive invocations\n // from document.write()\n parse: function(s, end, shouldPauseFunc) {\n var moreToDo;\n\n // If we're paused, remember the text to parse, but\n // don't parse it now.\n // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.)\n if (paused > 0) {\n leftovers += s;\n return true; // more to do\n }\n\n\n if (reentrant_invocations === 0) {\n // A normal, top-level invocation\n if (leftovers) {\n s = leftovers + s;\n leftovers = \"\";\n }\n\n // Add a special marker character to the end of\n // the buffer. If the scanner is at the end of\n // the buffer and input_complete is set, then this\n // character will transform into an EOF token.\n // Having an actual character that represents EOF\n // in the character buffer makes lookahead regexp\n // matching work more easily, and this is\n // important for character references.\n if (end) {\n s += \"\\uFFFF\";\n input_complete = true; // Makes scanChars() send EOF\n }\n\n chars = s;\n numchars = s.length;\n nextchar = 0;\n\n if (first_batch) {\n // We skip a leading Byte Order Mark (\\uFEFF)\n // on first batch of text we're given\n first_batch = false;\n if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1;\n }\n\n reentrant_invocations++;\n moreToDo = scanChars(shouldPauseFunc);\n leftovers = chars.substring(nextchar, numchars);\n reentrant_invocations--;\n }\n else {\n // This is the re-entrant case, which we have to\n // handle a little differently.\n reentrant_invocations++;\n\n // Save current scanner state\n saved_scanner_state.push(chars, numchars, nextchar);\n\n // Set new scanner state\n chars = s;\n numchars = s.length;\n nextchar = 0;\n\n // Now scan as many of these new chars as we can\n scanChars();\n moreToDo = false;\n\n leftovers = chars.substring(nextchar, numchars);\n\n // restore old scanner state\n nextchar = saved_scanner_state.pop();\n numchars = saved_scanner_state.pop();\n chars = saved_scanner_state.pop();\n\n // If there were leftover chars from this invocation\n // insert them into the pending invocation's buffer\n // and trim already processed chars at the same time\n if (leftovers) {\n chars = leftovers + chars.substring(nextchar);\n numchars = chars.length;\n nextchar = 0;\n leftovers = \"\";\n }\n\n // Decrement the counter\n reentrant_invocations--;\n }\n return moreToDo;\n }\n };\n\n\n // This is the document we'll be building up\n var doc = new Document(true, address);\n\n // The document needs to know about the parser, for document.write().\n // This _parser property will be deleted when we're done parsing.\n doc._parser = htmlparser;\n\n // XXX I think that any document we use this parser on should support\n // scripts. But I may need to configure that through a parser parameter\n // Only documents with windows (\"browsing contexts\" to be precise)\n // allow scripting.\n doc._scripting_enabled = scripting_enabled;\n\n\n /***\n * The actual code of the HTMLParser() factory function begins here.\n */\n\n if (fragmentContext) { // for innerHTML parsing\n if (fragmentContext.ownerDocument._quirks)\n doc._quirks = true;\n if (fragmentContext.ownerDocument._limitedQuirks)\n doc._limitedQuirks = true;\n\n // Set the initial tokenizer state\n if (fragmentContext.namespaceURI === NAMESPACE.HTML) {\n switch(fragmentContext.localName) {\n case \"title\":\n case \"textarea\":\n tokenizer = rcdata_state;\n break;\n case \"style\":\n case \"xmp\":\n case \"iframe\":\n case \"noembed\":\n case \"noframes\":\n case \"script\":\n case \"plaintext\":\n tokenizer = plaintext_state;\n break;\n }\n }\n\n var root = doc.createElement(\"html\");\n doc._appendChild(root);\n stack.push(root);\n if (fragmentContext instanceof impl.HTMLTemplateElement) {\n templateInsertionModes.push(in_template_mode);\n }\n resetInsertionMode();\n\n for(var e = fragmentContext; e !== null; e = e.parentElement) {\n if (e instanceof impl.HTMLFormElement) {\n form_element_pointer = e;\n break;\n }\n }\n }\n\n /***\n * Scanner functions\n */\n // Loop through the characters in chars, and pass them one at a time\n // to the tokenizer FSM. Return when no more characters can be processed\n // (This may leave 1 or more characters in the buffer: like a CR\n // waiting to see if the next char is LF, or for states that require\n // lookahead...)\n function scanChars(shouldPauseFunc) {\n var codepoint, s, pattern, eof;\n\n while(nextchar < numchars) {\n\n // If we just tokenized a tag, then the paused flag\n // may have been set to tell us to stop tokenizing while\n // the script is loading\n if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) {\n return true;\n }\n\n\n switch(typeof tokenizer.lookahead) {\n case 'undefined':\n codepoint = chars.charCodeAt(nextchar++);\n if (scanner_skip_newline) {\n scanner_skip_newline = false;\n if (codepoint === 0x000A) {\n nextchar++;\n continue;\n }\n }\n switch(codepoint) {\n case 0x000D:\n // CR always turns into LF, but if the next character\n // is LF, then that second LF is skipped.\n if (nextchar < numchars) {\n if (chars.charCodeAt(nextchar) === 0x000A)\n nextchar++;\n }\n else {\n // We don't know the next char right now, so we\n // can't check if it is a LF. So set a flag\n scanner_skip_newline = true;\n }\n\n // In either case, emit a LF\n tokenizer(0x000A);\n\n break;\n case 0xFFFF:\n if (input_complete && nextchar === numchars) {\n tokenizer(EOF); // codepoint will be 0xFFFF here\n break;\n }\n /* falls through */\n default:\n tokenizer(codepoint);\n break;\n }\n break;\n\n case 'number':\n codepoint = chars.charCodeAt(nextchar);\n\n // The only tokenizer states that require fixed lookahead\n // only consume alphanum characters, so we don't have\n // to worry about CR and LF in this case\n\n // tokenizer wants n chars of lookahead\n var n = tokenizer.lookahead;\n var needsString = true;\n if (n < 0) {\n needsString = false;\n n = -n;\n }\n\n if (n < numchars - nextchar) {\n // If we can look ahead that far\n s = needsString ? chars.substring(nextchar, nextchar+n) : null;\n eof = false;\n }\n else { // if we don't have that many characters\n if (input_complete) { // If no more are coming\n // Just return what we have\n s = needsString ? chars.substring(nextchar, numchars) : null;\n eof = true;\n if (codepoint === 0xFFFF && nextchar === numchars-1)\n codepoint = EOF;\n }\n else {\n // Return now and wait for more chars later\n return true;\n }\n }\n tokenizer(codepoint, s, eof);\n break;\n case 'string':\n codepoint = chars.charCodeAt(nextchar);\n\n // tokenizer wants characters up to a matching string\n pattern = tokenizer.lookahead;\n var pos = chars.indexOf(pattern, nextchar);\n if (pos !== -1) {\n s = chars.substring(nextchar, pos + pattern.length);\n eof = false;\n }\n else { // No match\n // If more characters coming, wait for them\n if (!input_complete) return true;\n\n // Otherwise, we've got to return what we've got\n s = chars.substring(nextchar, numchars);\n if (codepoint === 0xFFFF && nextchar === numchars-1)\n codepoint = EOF;\n eof = true;\n }\n\n // The tokenizer states that require this kind of\n // lookahead have to be careful to handle CR characters\n // correctly\n tokenizer(codepoint, s, eof);\n break;\n }\n }\n return false; // no more characters to scan!\n }\n\n\n /***\n * Tokenizer utility functions\n */\n function addAttribute(name,value) {\n // Make sure there isn't already an attribute with this name\n // If there is, ignore this one.\n for(var i = 0; i < attributes.length; i++) {\n if (attributes[i][0] === name) return;\n }\n\n if (value !== undefined) {\n attributes.push([name, value]);\n }\n else {\n attributes.push([name]);\n }\n }\n\n // Shortcut for simple attributes\n function handleSimpleAttribute() {\n SIMPLEATTR.lastIndex = nextchar-1;\n var matched = SIMPLEATTR.exec(chars);\n if (!matched) throw new Error(\"should never happen\");\n var name = matched[1];\n if (!name) return false;\n var value = matched[2];\n var len = value.length;\n switch(value[0]) {\n case '\"':\n case \"'\":\n value = value.substring(1, len-1);\n nextchar += (matched[0].length-1);\n tokenizer = after_attribute_value_quoted_state;\n break;\n default:\n tokenizer = before_attribute_name_state;\n nextchar += (matched[0].length-1);\n value = value.substring(0, len-1);\n break;\n }\n\n // Make sure there isn't already an attribute with this name\n // If there is, ignore this one.\n for(var i = 0; i < attributes.length; i++) {\n if (attributes[i][0] === name) return true;\n }\n\n attributes.push([name, value]);\n return true;\n }\n\n function beginTagName() {\n is_end_tag = false;\n tagnamebuf = \"\";\n attributes.length = 0;\n }\n function beginEndTagName() {\n is_end_tag = true;\n tagnamebuf = \"\";\n attributes.length = 0;\n }\n\n function beginTempBuf() { tempbuf.length = 0; }\n function beginAttrName() { attrnamebuf = \"\"; }\n function beginAttrValue() { attrvaluebuf = \"\"; }\n function beginComment() { commentbuf.length = 0; }\n function beginDoctype() {\n doctypenamebuf.length = 0;\n doctypepublicbuf = null;\n doctypesystembuf = null;\n }\n function beginDoctypePublicId() { doctypepublicbuf = []; }\n function beginDoctypeSystemId() { doctypesystembuf = []; }\n function forcequirks() { force_quirks = true; }\n function cdataAllowed() {\n return stack.top &&\n stack.top.namespaceURI !== \"http://www.w3.org/1999/xhtml\";\n }\n\n // Return true if the codepoints in the specified buffer match the\n // characters of lasttagname\n function appropriateEndTag(buf) {\n return lasttagname === buf;\n }\n\n function flushText() {\n if (textrun.length > 0) {\n var s = buf2str(textrun);\n textrun.length = 0;\n\n if (ignore_linefeed) {\n ignore_linefeed = false;\n if (s[0] === \"\\n\") s = s.substring(1);\n if (s.length === 0) return;\n }\n\n insertToken(TEXT, s);\n textIncludesNUL = false;\n }\n ignore_linefeed = false;\n }\n\n // Consume chars matched by the pattern and return them as a string. Starts\n // matching at the current position, so users should drop the current char\n // otherwise.\n function getMatchingChars(pattern) {\n pattern.lastIndex = nextchar - 1;\n var match = pattern.exec(chars);\n if (match && match.index === nextchar - 1) {\n match = match[0];\n nextchar += match.length - 1;\n /* Careful! Make sure we haven't matched the EOF character! */\n if (input_complete && nextchar === numchars) {\n // Oops, backup one.\n match = match.slice(0, -1);\n nextchar--;\n }\n return match;\n } else {\n throw new Error(\"should never happen\");\n }\n }\n\n // emit a string of chars that match a regexp\n // Returns false if no chars matched.\n function emitCharsWhile(pattern) {\n pattern.lastIndex = nextchar-1;\n var match = pattern.exec(chars)[0];\n if (!match) return false;\n emitCharString(match);\n nextchar += match.length - 1;\n return true;\n }\n\n // This is used by CDATA sections\n function emitCharString(s) {\n if (textrun.length > 0) flushText();\n\n if (ignore_linefeed) {\n ignore_linefeed = false;\n if (s[0] === \"\\n\") s = s.substring(1);\n if (s.length === 0) return;\n }\n\n insertToken(TEXT, s);\n }\n\n function emitTag() {\n if (is_end_tag) insertToken(ENDTAG, tagnamebuf);\n else {\n // Remember the last open tag we emitted\n var tagname = tagnamebuf;\n tagnamebuf = \"\";\n lasttagname = tagname;\n insertToken(TAG, tagname, attributes);\n }\n }\n\n\n // A shortcut: look ahead and if this is a open or close tag\n // in lowercase with no spaces and no attributes, just emit it now.\n function emitSimpleTag() {\n if (nextchar === numchars) { return false; /* not even 1 char left */ }\n SIMPLETAG.lastIndex = nextchar;\n var matched = SIMPLETAG.exec(chars);\n if (!matched) throw new Error(\"should never happen\");\n var tagname = matched[2];\n if (!tagname) return false;\n var endtag = matched[1];\n if (endtag) {\n nextchar += (tagname.length+2);\n insertToken(ENDTAG, tagname);\n }\n else {\n nextchar += (tagname.length+1);\n lasttagname = tagname;\n insertToken(TAG, tagname, NOATTRS);\n }\n return true;\n }\n\n function emitSelfClosingTag() {\n if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true);\n else {\n insertToken(TAG, tagnamebuf, attributes, true);\n }\n }\n\n function emitDoctype() {\n insertToken(DOCTYPE,\n buf2str(doctypenamebuf),\n doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined,\n doctypesystembuf ? buf2str(doctypesystembuf) : undefined);\n }\n\n function emitEOF() {\n flushText();\n parser(EOF); // EOF never goes to insertForeignContent()\n doc.modclock = 1; // Start tracking modifications\n }\n\n // Insert a token, either using the current parser insertion mode\n // (for HTML stuff) or using the insertForeignToken() method.\n var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) {\n flushText();\n var current = stack.top;\n\n if (!current || current.namespaceURI === NAMESPACE.HTML) {\n // This is the common case\n parser(t, value, arg3, arg4);\n }\n else {\n // Otherwise we may need to insert this token as foreign content\n if (t !== TAG && t !== TEXT) {\n insertForeignToken(t, value, arg3, arg4);\n }\n else {\n // But in some cases we treat it as regular content\n if ((isMathmlTextIntegrationPoint(current) &&\n (t === TEXT ||\n (t === TAG &&\n value !== \"mglyph\" && value !== \"malignmark\"))) ||\n (t === TAG &&\n value === \"svg\" &&\n current.namespaceURI === NAMESPACE.MATHML &&\n current.localName === \"annotation-xml\") ||\n isHTMLIntegrationPoint(current)) {\n\n // XXX: the text_integration_mode stuff is an\n // attempted bug workaround of mine\n text_integration_mode = true;\n parser(t, value, arg3, arg4);\n text_integration_mode = false;\n }\n // Otherwise it is foreign content\n else {\n insertForeignToken(t, value, arg3, arg4);\n }\n }\n }\n };\n\n\n /***\n * Tree building utility functions\n */\n function insertComment(data) {\n var parent = stack.top;\n if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n fosterParent(function(doc) { return doc.createComment(data); });\n } else {\n // \"If the adjusted insertion location is inside a template element,\n // let it instead be inside the template element's template contents\"\n if (parent instanceof impl.HTMLTemplateElement) {\n parent = parent.content;\n }\n parent._appendChild(parent.ownerDocument.createComment(data));\n }\n }\n\n function insertText(s) {\n var parent = stack.top;\n if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n fosterParent(function(doc) { return doc.createTextNode(s); });\n } else {\n // \"If the adjusted insertion location is inside a template element,\n // let it instead be inside the template element's template contents\"\n if (parent instanceof impl.HTMLTemplateElement) {\n parent = parent.content;\n }\n // \"If there is a Text node immediately before the adjusted insertion\n // location, then append data to that Text node's data.\"\n var lastChild = parent.lastChild;\n if (lastChild && lastChild.nodeType === Node.TEXT_NODE) {\n lastChild.appendData(s);\n } else {\n parent._appendChild(parent.ownerDocument.createTextNode(s));\n }\n }\n }\n\n function createHTMLElt(doc, name, attrs) {\n // Create the element this way, rather than with\n // doc.createElement because createElement() does error\n // checking on the element name that we need to avoid here.\n var elt = html.createElement(doc, name, null);\n\n if (attrs) {\n for(var i = 0, n = attrs.length; i < n; i++) {\n // Use the _ version to avoid testing the validity\n // of the attribute name\n elt._setAttribute(attrs[i][0], attrs[i][1]);\n }\n }\n // XXX\n // If the element is a resettable form element,\n // run its reset algorithm now\n // XXX\n // handle case where form-element-pointer is not null\n return elt;\n }\n\n // The in_table insertion mode turns on this flag, and that makes\n // insertHTMLElement use the foster parenting algorithm for elements\n // tags inside a table\n var foster_parent_mode = false;\n\n function insertHTMLElement(name, attrs) {\n var elt = insertElement(function(doc) {\n return createHTMLElt(doc, name, attrs);\n });\n\n // XXX\n // If this is a form element, set its form attribute property here\n if (isA(elt, formassociatedSet)) {\n elt._form = form_element_pointer;\n }\n\n return elt;\n }\n\n // Insert the element into the open element or foster parent it\n function insertElement(eltFunc) {\n var elt;\n if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) {\n elt = fosterParent(eltFunc);\n }\n else if (stack.top instanceof impl.HTMLTemplateElement) {\n // \"If the adjusted insertion location is inside a template element,\n // let it instead be inside the template element's template contents\"\n elt = eltFunc(stack.top.content.ownerDocument);\n stack.top.content._appendChild(elt);\n } else {\n elt = eltFunc(stack.top.ownerDocument);\n stack.top._appendChild(elt);\n }\n\n stack.push(elt);\n return elt;\n }\n\n function insertForeignElement(name, attrs, ns) {\n return insertElement(function(doc) {\n // We need to prevent createElementNS from trying to parse `name` as a\n // `qname`, so use an internal Document#_createElementNS() interface.\n var elt = doc._createElementNS(name, ns, null);\n if (attrs) {\n for(var i = 0, n = attrs.length; i < n; i++) {\n var attr = attrs[i];\n if (attr.length === 2)\n elt._setAttribute(attr[0], attr[1]);\n else {\n elt._setAttributeNS(attr[2], attr[0], attr[1]);\n }\n }\n }\n return elt;\n });\n }\n\n function lastElementOfType(type) {\n for(var i = stack.elements.length-1; i >= 0; i--) {\n if (stack.elements[i] instanceof type) {\n return i;\n }\n }\n return -1;\n }\n\n function fosterParent(eltFunc) {\n var parent, before, lastTable = -1, lastTemplate = -1, elt;\n\n lastTable = lastElementOfType(impl.HTMLTableElement);\n lastTemplate = lastElementOfType(impl.HTMLTemplateElement);\n\n if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) {\n parent = stack.elements[lastTemplate];\n } else if (lastTable >= 0) {\n parent = stack.elements[lastTable].parentNode;\n if (parent) {\n before = stack.elements[lastTable];\n } else {\n parent = stack.elements[lastTable - 1];\n }\n }\n if (!parent) parent = stack.elements[0]; // the `html` element.\n\n // \"If the adjusted insertion location is inside a template element,\n // let it instead be inside the template element's template contents\"\n if (parent instanceof impl.HTMLTemplateElement) {\n parent = parent.content;\n }\n // Create element in the appropriate document.\n elt = eltFunc(parent.ownerDocument);\n\n if (elt.nodeType === Node.TEXT_NODE) {\n var prev;\n if (before) prev = before.previousSibling;\n else prev = parent.lastChild;\n if (prev && prev.nodeType === Node.TEXT_NODE) {\n prev.appendData(elt.data);\n return elt;\n }\n }\n if (before)\n parent.insertBefore(elt, before);\n else\n parent._appendChild(elt);\n return elt;\n }\n\n\n function resetInsertionMode() {\n var last = false;\n for(var i = stack.elements.length-1; i >= 0; i--) {\n var node = stack.elements[i];\n if (i === 0) {\n last = true;\n if (fragment) {\n node = fragmentContext;\n }\n }\n if (node.namespaceURI === NAMESPACE.HTML) {\n var tag = node.localName;\n switch(tag) {\n case \"select\":\n for(var j = i; j > 0; ) {\n var ancestor = stack.elements[--j];\n if (ancestor instanceof impl.HTMLTemplateElement) {\n break;\n } else if (ancestor instanceof impl.HTMLTableElement) {\n parser = in_select_in_table_mode;\n return;\n }\n }\n parser = in_select_mode;\n return;\n case \"tr\":\n parser = in_row_mode;\n return;\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n parser = in_table_body_mode;\n return;\n case \"caption\":\n parser = in_caption_mode;\n return;\n case \"colgroup\":\n parser = in_column_group_mode;\n return;\n case \"table\":\n parser = in_table_mode;\n return;\n case \"template\":\n parser = templateInsertionModes[templateInsertionModes.length-1];\n return;\n case \"body\":\n parser = in_body_mode;\n return;\n case \"frameset\":\n parser = in_frameset_mode;\n return;\n case \"html\":\n if (head_element_pointer === null) {\n parser = before_head_mode;\n } else {\n parser = after_head_mode;\n }\n return;\n default:\n if (!last) {\n if (tag === \"head\") {\n parser = in_head_mode;\n return;\n }\n if (tag === \"td\" || tag === \"th\") {\n parser = in_cell_mode;\n return;\n }\n }\n }\n }\n if (last) {\n parser = in_body_mode;\n return;\n }\n }\n }\n\n\n function parseRawText(name, attrs) {\n insertHTMLElement(name, attrs);\n tokenizer = rawtext_state;\n originalInsertionMode = parser;\n parser = text_mode;\n }\n\n function parseRCDATA(name, attrs) {\n insertHTMLElement(name, attrs);\n tokenizer = rcdata_state;\n originalInsertionMode = parser;\n parser = text_mode;\n }\n\n // Make a copy of element i on the list of active formatting\n // elements, using its original attributes, not current\n // attributes (which may have been modified by a script)\n function afeclone(doc, i) {\n return {\n elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]),\n attrs: afe.attrs[i],\n };\n }\n\n\n function afereconstruct() {\n if (afe.list.length === 0) return;\n var entry = afe.list[afe.list.length-1];\n // If the last is a marker , do nothing\n if (entry === afe.MARKER) return;\n // Or if it is an open element, do nothing\n if (stack.elements.lastIndexOf(entry) !== -1) return;\n\n // Loop backward through the list until we find a marker or an\n // open element, and then move forward one from there.\n for(var i = afe.list.length-2; i >= 0; i--) {\n entry = afe.list[i];\n if (entry === afe.MARKER) break;\n if (stack.elements.lastIndexOf(entry) !== -1) break;\n }\n\n // Now loop forward, starting from the element after the current\n // one, recreating formatting elements and pushing them back onto\n // the list of open elements\n for(i = i+1; i < afe.list.length; i++) {\n var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; });\n afe.list[i] = newelt;\n }\n }\n\n // Used by the adoptionAgency() function\n var BOOKMARK = {localName:\"BM\"};\n\n function adoptionAgency(tag) {\n // If the current node is an HTML element whose tag name is subject,\n // and the current node is not in the list of active formatting\n // elements, then pop the current node off the stack of open\n // elements and abort these steps.\n if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) {\n stack.pop();\n return true; // no more handling required\n }\n\n // Let outer loop counter be zero.\n var outer = 0;\n\n // Outer loop: If outer loop counter is greater than or\n // equal to eight, then abort these steps.\n while(outer < 8) {\n // Increment outer loop counter by one.\n outer++;\n\n // Let the formatting element be the last element in the list\n // of active formatting elements that: is between the end of\n // the list and the last scope marker in the list, if any, or\n // the start of the list otherwise, and has the same tag name\n // as the token.\n var fmtelt = afe.findElementByTag(tag);\n\n // If there is no such node, then abort these steps and instead\n // act as described in the \"any other end tag\" entry below.\n if (!fmtelt) {\n return false; // false means handle by the default case\n }\n\n // Otherwise, if there is such a node, but that node is not in\n // the stack of open elements, then this is a parse error;\n // remove the element from the list, and abort these steps.\n var index = stack.elements.lastIndexOf(fmtelt);\n if (index === -1) {\n afe.remove(fmtelt);\n return true; // true means no more handling required\n }\n\n // Otherwise, if there is such a node, and that node is also in\n // the stack of open elements, but the element is not in scope,\n // then this is a parse error; ignore the token, and abort\n // these steps.\n if (!stack.elementInScope(fmtelt)) {\n return true;\n }\n\n // Let the furthest block be the topmost node in the stack of\n // open elements that is lower in the stack than the formatting\n // element, and is an element in the special category. There\n // might not be one.\n var furthestblock = null, furthestblockindex;\n for(var i = index+1; i < stack.elements.length; i++) {\n if (isA(stack.elements[i], specialSet)) {\n furthestblock = stack.elements[i];\n furthestblockindex = i;\n break;\n }\n }\n\n // If there is no furthest block, then the UA must skip the\n // subsequent steps and instead just pop all the nodes from the\n // bottom of the stack of open elements, from the current node\n // up to and including the formatting element, and remove the\n // formatting element from the list of active formatting\n // elements.\n if (!furthestblock) {\n stack.popElement(fmtelt);\n afe.remove(fmtelt);\n return true;\n }\n else {\n // Let the common ancestor be the element immediately above\n // the formatting element in the stack of open elements.\n var ancestor = stack.elements[index-1];\n\n // Let a bookmark note the position of the formatting\n // element in the list of active formatting elements\n // relative to the elements on either side of it in the\n // list.\n afe.insertAfter(fmtelt, BOOKMARK);\n\n // Let node and last node be the furthest block.\n var node = furthestblock;\n var lastnode = furthestblock;\n var nodeindex = furthestblockindex;\n var nodeafeindex;\n\n // Let inner loop counter be zero.\n var inner = 0;\n\n while (true) {\n\n // Increment inner loop counter by one.\n inner++;\n\n // Let node be the element immediately above node in\n // the stack of open elements, or if node is no longer\n // in the stack of open elements (e.g. because it got\n // removed by this algorithm), the element that was\n // immediately above node in the stack of open elements\n // before node was removed.\n node = stack.elements[--nodeindex];\n\n // If node is the formatting element, then go\n // to the next step in the overall algorithm.\n if (node === fmtelt) break;\n\n // If the inner loop counter is greater than three and node\n // is in the list of active formatting elements, then remove\n // node from the list of active formatting elements.\n nodeafeindex = afe.indexOf(node);\n if (inner > 3 && nodeafeindex !== -1) {\n afe.remove(node);\n nodeafeindex = -1;\n }\n\n // If node is not in the list of active formatting\n // elements, then remove node from the stack of open\n // elements and then go back to the step labeled inner\n // loop.\n if (nodeafeindex === -1) {\n stack.removeElement(node);\n continue;\n }\n\n // Create an element for the token for which the\n // element node was created with common ancestor as\n // the intended parent, replace the entry for node\n // in the list of active formatting elements with an\n // entry for the new element, replace the entry for\n // node in the stack of open elements with an entry for\n // the new element, and let node be the new element.\n var newelt = afeclone(ancestor.ownerDocument, nodeafeindex);\n afe.replace(node, newelt.elt, newelt.attrs);\n stack.elements[nodeindex] = newelt.elt;\n node = newelt.elt;\n\n // If last node is the furthest block, then move the\n // aforementioned bookmark to be immediately after the\n // new node in the list of active formatting elements.\n if (lastnode === furthestblock) {\n afe.remove(BOOKMARK);\n afe.insertAfter(newelt.elt, BOOKMARK);\n }\n\n // Insert last node into node, first removing it from\n // its previous parent node if any.\n node._appendChild(lastnode);\n\n // Let last node be node.\n lastnode = node;\n }\n\n // If the common ancestor node is a table, tbody, tfoot,\n // thead, or tr element, then, foster parent whatever last\n // node ended up being in the previous step, first removing\n // it from its previous parent node if any.\n if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) {\n fosterParent(function() { return lastnode; });\n }\n // Otherwise, append whatever last node ended up being in\n // the previous step to the common ancestor node, first\n // removing it from its previous parent node if any.\n else if (ancestor instanceof impl.HTMLTemplateElement) {\n ancestor.content._appendChild(lastnode);\n } else {\n ancestor._appendChild(lastnode);\n }\n\n // Create an element for the token for which the\n // formatting element was created, with furthest block\n // as the intended parent.\n var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt));\n\n // Take all of the child nodes of the furthest block and\n // append them to the element created in the last step.\n while(furthestblock.hasChildNodes()) {\n newelt2.elt._appendChild(furthestblock.firstChild);\n }\n\n // Append that new element to the furthest block.\n furthestblock._appendChild(newelt2.elt);\n\n // Remove the formatting element from the list of active\n // formatting elements, and insert the new element into the\n // list of active formatting elements at the position of\n // the aforementioned bookmark.\n afe.remove(fmtelt);\n afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs);\n\n // Remove the formatting element from the stack of open\n // elements, and insert the new element into the stack of\n // open elements immediately below the position of the\n // furthest block in that stack.\n stack.removeElement(fmtelt);\n var pos = stack.elements.lastIndexOf(furthestblock);\n stack.elements.splice(pos+1, 0, newelt2.elt);\n }\n }\n\n return true;\n }\n\n // We do this when we get /script in in_text_mode\n function handleScriptEnd() {\n // XXX:\n // This is just a stub implementation right now and doesn't run scripts.\n // Getting this method right involves the event loop, URL resolution\n // script fetching etc. For now I just want to be able to parse\n // documents and test the parser.\n\n //var script = stack.top;\n stack.pop();\n parser = originalInsertionMode;\n //script._prepare();\n return;\n\n // XXX: here is what this method is supposed to do\n\n // Provide a stable state.\n\n // Let script be the current node (which will be a script\n // element).\n\n // Pop the current node off the stack of open elements.\n\n // Switch the insertion mode to the original insertion mode.\n\n // Let the old insertion point have the same value as the current\n // insertion point. Let the insertion point be just before the\n // next input character.\n\n // Increment the parser's script nesting level by one.\n\n // Prepare the script. This might cause some script to execute,\n // which might cause new characters to be inserted into the\n // tokenizer, and might cause the tokenizer to output more tokens,\n // resulting in a reentrant invocation of the parser.\n\n // Decrement the parser's script nesting level by one. If the\n // parser's script nesting level is zero, then set the parser\n // pause flag to false.\n\n // Let the insertion point have the value of the old insertion\n // point. (In other words, restore the insertion point to its\n // previous value. This value might be the \"undefined\" value.)\n\n // At this stage, if there is a pending parsing-blocking script,\n // then:\n\n // If the script nesting level is not zero:\n\n // Set the parser pause flag to true, and abort the processing\n // of any nested invocations of the tokenizer, yielding\n // control back to the caller. (Tokenization will resume when\n // the caller returns to the \"outer\" tree construction stage.)\n\n // The tree construction stage of this particular parser is\n // being called reentrantly, say from a call to\n // document.write().\n\n // Otherwise:\n\n // Run these steps:\n\n // Let the script be the pending parsing-blocking\n // script. There is no longer a pending\n // parsing-blocking script.\n\n // Block the tokenizer for this instance of the HTML\n // parser, such that the event loop will not run tasks\n // that invoke the tokenizer.\n\n // If the parser's Document has a style sheet that is\n // blocking scripts or the script's \"ready to be\n // parser-executed\" flag is not set: spin the event\n // loop until the parser's Document has no style sheet\n // that is blocking scripts and the script's \"ready to\n // be parser-executed\" flag is set.\n\n // Unblock the tokenizer for this instance of the HTML\n // parser, such that tasks that invoke the tokenizer\n // can again be run.\n\n // Let the insertion point be just before the next\n // input character.\n\n // Increment the parser's script nesting level by one\n // (it should be zero before this step, so this sets\n // it to one).\n\n // Execute the script.\n\n // Decrement the parser's script nesting level by\n // one. If the parser's script nesting level is zero\n // (which it always should be at this point), then set\n // the parser pause flag to false.\n\n // Let the insertion point be undefined again.\n\n // If there is once again a pending parsing-blocking\n // script, then repeat these steps from step 1.\n\n\n }\n\n function stopParsing() {\n // XXX This is just a temporary implementation to get the parser working.\n // A full implementation involves scripts and events and the event loop.\n\n // Remove the link from document to parser.\n // This is instead of \"set the insertion point to undefined\".\n // It means that document.write() can't write into the doc anymore.\n delete doc._parser;\n\n stack.elements.length = 0; // pop everything off\n\n // If there is a window object associated with the document\n // then trigger an load event on it\n if (doc.defaultView) {\n doc.defaultView.dispatchEvent(new impl.Event(\"load\",{}));\n }\n\n }\n\n /****\n * Tokenizer states\n */\n\n /**\n * This file was partially mechanically generated from\n * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html\n *\n * After mechanical conversion, it was further converted from\n * prose to JS by hand, but the intent is that it is a very\n * faithful rendering of the HTML tokenization spec in\n * JavaScript.\n *\n * It is not a goal of this tokenizer to detect or report\n * parse errors.\n *\n * XXX The tokenizer is supposed to work with straight UTF32\n * codepoints. But I don't think it has any dependencies on\n * any character outside of the BMP so I think it is safe to\n * pass it UTF16 characters. I don't think it will ever change\n * state in the middle of a surrogate pair.\n */\n\n /*\n * Each state is represented by a function. For most states, the\n * scanner simply passes the next character (as an integer\n * codepoint) to the current state function and automatically\n * consumes the character. If the state function can't process\n * the character it can call pushback() to push it back to the\n * scanner.\n *\n * Some states require lookahead, though. If a state function has\n * a lookahead property, then it is invoked differently. In this\n * case, the scanner invokes the function with 3 arguments: 1) the\n * next codepoint 2) a string of lookahead text 3) a boolean that\n * is true if the lookahead goes all the way to the EOF. (XXX\n * actually maybe this third is not necessary... the lookahead\n * could just include \\uFFFF?)\n *\n * If the lookahead property of a state function is an integer, it\n * specifies the number of characters required. If it is a string,\n * then the scanner will scan for that string and return all\n * characters up to and including that sequence, or up to EOF. If\n * the lookahead property is a regexp, then the scanner will match\n * the regexp at the current point and return the matching string.\n *\n * States that require lookahead are responsible for explicitly\n * consuming the characters they process. They do this by\n * incrementing nextchar by the number of processed characters.\n */\n function reconsume(c, new_state) {\n tokenizer = new_state;\n nextchar--; // pushback\n }\n\n function data_state(c) {\n switch(c) {\n case 0x0026: // AMPERSAND\n return_state = data_state;\n tokenizer = character_reference_state;\n break;\n case 0x003C: // LESS-THAN SIGN\n if (emitSimpleTag()) // Shortcut for

    ,

    , etc.\n break;\n tokenizer = tag_open_state;\n break;\n case 0x0000: // NULL\n // Usually null characters emitted by the tokenizer will be\n // ignored by the tree builder, but sometimes they'll be\n // converted to \\uFFFD. I don't want to have the search every\n // string emitted to replace NULs, so I'll set a flag\n // if I've emitted a NUL.\n textrun.push(c);\n textIncludesNUL = true;\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n // Instead of just pushing a single character and then\n // coming back to the very same place, lookahead and\n // emit everything we can at once.\n /*jshint -W030 */\n emitCharsWhile(DATATEXT) || textrun.push(c);\n break;\n }\n }\n\n function rcdata_state(c) {\n // Save the open tag so we can find a matching close tag\n switch(c) {\n case 0x0026: // AMPERSAND\n return_state = rcdata_state;\n tokenizer = character_reference_state;\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = rcdata_less_than_sign_state;\n break;\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n textIncludesNUL = true;\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n textrun.push(c);\n break;\n }\n }\n\n function rawtext_state(c) {\n switch(c) {\n case 0x003C: // LESS-THAN SIGN\n tokenizer = rawtext_less_than_sign_state;\n break;\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n /*jshint -W030 */\n emitCharsWhile(RAWTEXT) || textrun.push(c);\n break;\n }\n }\n\n function script_data_state(c) {\n switch(c) {\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_less_than_sign_state;\n break;\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n /*jshint -W030 */\n emitCharsWhile(RAWTEXT) || textrun.push(c);\n break;\n }\n }\n\n function plaintext_state(c) {\n switch(c) {\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n /*jshint -W030 */\n emitCharsWhile(PLAINTEXT) || textrun.push(c);\n break;\n }\n }\n\n function tag_open_state(c) {\n switch(c) {\n case 0x0021: // EXCLAMATION MARK\n tokenizer = markup_declaration_open_state;\n break;\n case 0x002F: // SOLIDUS\n tokenizer = end_tag_open_state;\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginTagName();\n reconsume(c, tag_name_state);\n break;\n case 0x003F: // QUESTION MARK\n reconsume(c, bogus_comment_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, data_state);\n break;\n }\n }\n\n function end_tag_open_state(c) {\n switch(c) {\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginEndTagName();\n reconsume(c, tag_name_state);\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n break;\n case -1: // EOF\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n emitEOF();\n break;\n default:\n reconsume(c, bogus_comment_state);\n break;\n }\n }\n\n function tag_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = before_attribute_name_state;\n break;\n case 0x002F: // SOLIDUS\n tokenizer = self_closing_start_tag_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitTag();\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n tagnamebuf += String.fromCharCode(c + 0x0020);\n break;\n case 0x0000: // NULL\n tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n tagnamebuf += getMatchingChars(TAGNAME);\n break;\n }\n }\n\n function rcdata_less_than_sign_state(c) {\n /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */\n if (c === 0x002F) { // SOLIDUS\n beginTempBuf();\n tokenizer = rcdata_end_tag_open_state;\n }\n else {\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, rcdata_state);\n }\n }\n\n function rcdata_end_tag_open_state(c) {\n /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */\n switch(c) {\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginEndTagName();\n reconsume(c, rcdata_end_tag_name_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n reconsume(c, rcdata_state);\n break;\n }\n }\n\n function rcdata_end_tag_name_state(c) {\n /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = before_attribute_name_state;\n return;\n }\n break;\n case 0x002F: // SOLIDUS\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = self_closing_start_tag_state;\n return;\n }\n break;\n case 0x003E: // GREATER-THAN SIGN\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = data_state;\n emitTag();\n return;\n }\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n tagnamebuf += String.fromCharCode(c + 0x0020);\n tempbuf.push(c);\n return;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n tagnamebuf += String.fromCharCode(c);\n tempbuf.push(c);\n return;\n default:\n break;\n }\n\n // If we don't return in one of the cases above, then this was not\n // an appropriately matching close tag, so back out by emitting all\n // the characters as text\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n pushAll(textrun, tempbuf);\n reconsume(c, rcdata_state);\n }\n\n function rawtext_less_than_sign_state(c) {\n /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g\n */\n if (c === 0x002F) { // SOLIDUS\n beginTempBuf();\n tokenizer = rawtext_end_tag_open_state;\n }\n else {\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, rawtext_state);\n }\n }\n\n function rawtext_end_tag_open_state(c) {\n /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */\n switch(c) {\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginEndTagName();\n reconsume(c, rawtext_end_tag_name_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n reconsume(c, rawtext_state);\n break;\n }\n }\n\n function rawtext_end_tag_name_state(c) {\n /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = before_attribute_name_state;\n return;\n }\n break;\n case 0x002F: // SOLIDUS\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = self_closing_start_tag_state;\n return;\n }\n break;\n case 0x003E: // GREATER-THAN SIGN\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = data_state;\n emitTag();\n return;\n }\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n tagnamebuf += String.fromCharCode(c + 0x0020);\n tempbuf.push(c);\n return;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n tagnamebuf += String.fromCharCode(c);\n tempbuf.push(c);\n return;\n default:\n break;\n }\n\n // If we don't return in one of the cases above, then this was not\n // an appropriately matching close tag, so back out by emitting all\n // the characters as text\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n pushAll(textrun,tempbuf);\n reconsume(c, rawtext_state);\n }\n\n function script_data_less_than_sign_state(c) {\n switch(c) {\n case 0x002F: // SOLIDUS\n beginTempBuf();\n tokenizer = script_data_end_tag_open_state;\n break;\n case 0x0021: // EXCLAMATION MARK\n tokenizer = script_data_escape_start_state;\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x0021); // EXCLAMATION MARK\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, script_data_state);\n break;\n }\n }\n\n function script_data_end_tag_open_state(c) {\n /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */\n switch(c) {\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginEndTagName();\n reconsume(c, script_data_end_tag_name_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n reconsume(c, script_data_state);\n break;\n }\n }\n\n function script_data_end_tag_name_state(c) {\n /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = before_attribute_name_state;\n return;\n }\n break;\n case 0x002F: // SOLIDUS\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = self_closing_start_tag_state;\n return;\n }\n break;\n case 0x003E: // GREATER-THAN SIGN\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = data_state;\n emitTag();\n return;\n }\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n tagnamebuf += String.fromCharCode(c + 0x0020);\n tempbuf.push(c);\n return;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n tagnamebuf += String.fromCharCode(c);\n tempbuf.push(c);\n return;\n default:\n break;\n }\n\n // If we don't return in one of the cases above, then this was not\n // an appropriately matching close tag, so back out by emitting all\n // the characters as text\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n pushAll(textrun,tempbuf);\n reconsume(c, script_data_state);\n }\n\n function script_data_escape_start_state(c) {\n if (c === 0x002D) { // HYPHEN-MINUS\n tokenizer = script_data_escape_start_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n }\n else {\n reconsume(c, script_data_state);\n }\n }\n\n function script_data_escape_start_dash_state(c) {\n if (c === 0x002D) { // HYPHEN-MINUS\n tokenizer = script_data_escaped_dash_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n }\n else {\n reconsume(c, script_data_state);\n }\n }\n\n function script_data_escaped_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = script_data_escaped_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_escaped_less_than_sign_state;\n break;\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n textrun.push(c);\n break;\n }\n }\n\n function script_data_escaped_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = script_data_escaped_dash_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_escaped_less_than_sign_state;\n break;\n case 0x0000: // NULL\n tokenizer = script_data_escaped_state;\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n tokenizer = script_data_escaped_state;\n textrun.push(c);\n break;\n }\n }\n\n function script_data_escaped_dash_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_escaped_less_than_sign_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = script_data_state;\n textrun.push(0x003E); // GREATER-THAN SIGN\n break;\n case 0x0000: // NULL\n tokenizer = script_data_escaped_state;\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n tokenizer = script_data_escaped_state;\n textrun.push(c);\n break;\n }\n }\n\n function script_data_escaped_less_than_sign_state(c) {\n switch(c) {\n case 0x002F: // SOLIDUS\n beginTempBuf();\n tokenizer = script_data_escaped_end_tag_open_state;\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginTempBuf();\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, script_data_double_escape_start_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n reconsume(c, script_data_escaped_state);\n break;\n }\n }\n\n function script_data_escaped_end_tag_open_state(c) {\n switch(c) {\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n beginEndTagName();\n reconsume(c, script_data_escaped_end_tag_name_state);\n break;\n default:\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n reconsume(c, script_data_escaped_state);\n break;\n }\n }\n\n function script_data_escaped_end_tag_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = before_attribute_name_state;\n return;\n }\n break;\n case 0x002F: // SOLIDUS\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = self_closing_start_tag_state;\n return;\n }\n break;\n case 0x003E: // GREATER-THAN SIGN\n if (appropriateEndTag(tagnamebuf)) {\n tokenizer = data_state;\n emitTag();\n return;\n }\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n tagnamebuf += String.fromCharCode(c + 0x0020);\n tempbuf.push(c);\n return;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n tagnamebuf += String.fromCharCode(c);\n tempbuf.push(c);\n return;\n default:\n break;\n }\n\n // We get here in the default case, and if the closing tagname\n // is not an appropriate tagname.\n textrun.push(0x003C); // LESS-THAN SIGN\n textrun.push(0x002F); // SOLIDUS\n pushAll(textrun,tempbuf);\n reconsume(c, script_data_escaped_state);\n }\n\n function script_data_double_escape_start_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n case 0x002F: // SOLIDUS\n case 0x003E: // GREATER-THAN SIGN\n if (buf2str(tempbuf) === \"script\") {\n tokenizer = script_data_double_escaped_state;\n }\n else {\n tokenizer = script_data_escaped_state;\n }\n textrun.push(c);\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n tempbuf.push(c + 0x0020);\n textrun.push(c);\n break;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n tempbuf.push(c);\n textrun.push(c);\n break;\n default:\n reconsume(c, script_data_escaped_state);\n break;\n }\n }\n\n function script_data_double_escaped_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = script_data_double_escaped_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_double_escaped_less_than_sign_state;\n textrun.push(0x003C); // LESS-THAN SIGN\n break;\n case 0x0000: // NULL\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n textrun.push(c);\n break;\n }\n }\n\n function script_data_double_escaped_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = script_data_double_escaped_dash_dash_state;\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_double_escaped_less_than_sign_state;\n textrun.push(0x003C); // LESS-THAN SIGN\n break;\n case 0x0000: // NULL\n tokenizer = script_data_double_escaped_state;\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n tokenizer = script_data_double_escaped_state;\n textrun.push(c);\n break;\n }\n }\n\n function script_data_double_escaped_dash_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n textrun.push(0x002D); // HYPHEN-MINUS\n break;\n case 0x003C: // LESS-THAN SIGN\n tokenizer = script_data_double_escaped_less_than_sign_state;\n textrun.push(0x003C); // LESS-THAN SIGN\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = script_data_state;\n textrun.push(0x003E); // GREATER-THAN SIGN\n break;\n case 0x0000: // NULL\n tokenizer = script_data_double_escaped_state;\n textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n tokenizer = script_data_double_escaped_state;\n textrun.push(c);\n break;\n }\n }\n\n function script_data_double_escaped_less_than_sign_state(c) {\n if (c === 0x002F) { // SOLIDUS\n beginTempBuf();\n tokenizer = script_data_double_escape_end_state;\n textrun.push(0x002F); // SOLIDUS\n }\n else {\n reconsume(c, script_data_double_escaped_state);\n }\n }\n\n function script_data_double_escape_end_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n case 0x002F: // SOLIDUS\n case 0x003E: // GREATER-THAN SIGN\n if (buf2str(tempbuf) === \"script\") {\n tokenizer = script_data_escaped_state;\n }\n else {\n tokenizer = script_data_double_escaped_state;\n }\n textrun.push(c);\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n tempbuf.push(c + 0x0020);\n textrun.push(c);\n break;\n case 0x0061: // [a-z]\n case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n tempbuf.push(c);\n textrun.push(c);\n break;\n default:\n reconsume(c, script_data_double_escaped_state);\n break;\n }\n }\n\n function before_attribute_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says \"reconsume in\n // the after attribute name state\", but in our implementation that\n // state always has an active attribute in attrnamebuf. Just clone\n // the rules here, without the addAttribute business.\n case 0x002F: // SOLIDUS\n tokenizer = self_closing_start_tag_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitTag();\n break;\n case -1: // EOF\n emitEOF();\n break;\n case 0x003D: // EQUALS SIGN\n beginAttrName();\n attrnamebuf += String.fromCharCode(c);\n tokenizer = attribute_name_state;\n break;\n default:\n if (handleSimpleAttribute()) break;\n beginAttrName();\n reconsume(c, attribute_name_state);\n break;\n }\n }\n\n // beginAttrName() must have been called before this point\n // There is an active attribute in attrnamebuf (but not attrvaluebuf)\n function attribute_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n case 0x002F: // SOLIDUS\n case 0x003E: // GREATER-THAN SIGN\n case -1: // EOF\n reconsume(c, after_attribute_name_state);\n break;\n case 0x003D: // EQUALS SIGN\n tokenizer = before_attribute_value_state;\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n attrnamebuf += String.fromCharCode(c + 0x0020);\n break;\n case 0x0000: // NULL\n attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case 0x0022: // QUOTATION MARK\n case 0x0027: // APOSTROPHE\n case 0x003C: // LESS-THAN SIGN\n /* falls through */\n default:\n attrnamebuf += getMatchingChars(ATTRNAME);\n break;\n }\n }\n\n // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf.\n function after_attribute_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n case 0x002F: // SOLIDUS\n // Keep in sync with before_attribute_name_state.\n addAttribute(attrnamebuf);\n tokenizer = self_closing_start_tag_state;\n break;\n case 0x003D: // EQUALS SIGN\n tokenizer = before_attribute_value_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n // Keep in sync with before_attribute_name_state.\n tokenizer = data_state;\n addAttribute(attrnamebuf);\n emitTag();\n break;\n case -1: // EOF\n // Keep in sync with before_attribute_name_state.\n addAttribute(attrnamebuf);\n emitEOF();\n break;\n default:\n addAttribute(attrnamebuf);\n beginAttrName();\n reconsume(c, attribute_name_state);\n break;\n }\n }\n\n function before_attribute_value_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n case 0x0022: // QUOTATION MARK\n beginAttrValue();\n tokenizer = attribute_value_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginAttrValue();\n tokenizer = attribute_value_single_quoted_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n /* falls through */\n default:\n beginAttrValue();\n reconsume(c, attribute_value_unquoted_state);\n break;\n }\n }\n\n function attribute_value_double_quoted_state(c) {\n switch(c) {\n case 0x0022: // QUOTATION MARK\n addAttribute(attrnamebuf, attrvaluebuf);\n tokenizer = after_attribute_value_quoted_state;\n break;\n case 0x0026: // AMPERSAND\n return_state = attribute_value_double_quoted_state;\n tokenizer = character_reference_state;\n break;\n case 0x0000: // NULL\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n emitEOF();\n break;\n case 0x000A: // LF\n // this could be a converted \\r, so don't use getMatchingChars\n attrvaluebuf += String.fromCharCode(c);\n break;\n default:\n attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL);\n break;\n }\n }\n\n function attribute_value_single_quoted_state(c) {\n switch(c) {\n case 0x0027: // APOSTROPHE\n addAttribute(attrnamebuf, attrvaluebuf);\n tokenizer = after_attribute_value_quoted_state;\n break;\n case 0x0026: // AMPERSAND\n return_state = attribute_value_single_quoted_state;\n tokenizer = character_reference_state;\n break;\n case 0x0000: // NULL\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n emitEOF();\n break;\n case 0x000A: // LF\n // this could be a converted \\r, so don't use getMatchingChars\n attrvaluebuf += String.fromCharCode(c);\n break;\n default:\n attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL);\n break;\n }\n }\n\n function attribute_value_unquoted_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n addAttribute(attrnamebuf, attrvaluebuf);\n tokenizer = before_attribute_name_state;\n break;\n case 0x0026: // AMPERSAND\n return_state = attribute_value_unquoted_state;\n tokenizer = character_reference_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n addAttribute(attrnamebuf, attrvaluebuf);\n tokenizer = data_state;\n emitTag();\n break;\n case 0x0000: // NULL\n attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n nextchar--; // pushback\n tokenizer = data_state;\n break;\n case 0x0022: // QUOTATION MARK\n case 0x0027: // APOSTROPHE\n case 0x003C: // LESS-THAN SIGN\n case 0x003D: // EQUALS SIGN\n case 0x0060: // GRAVE ACCENT\n /* falls through */\n default:\n attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL);\n break;\n }\n }\n\n function after_attribute_value_quoted_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = before_attribute_name_state;\n break;\n case 0x002F: // SOLIDUS\n tokenizer = self_closing_start_tag_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitTag();\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n reconsume(c, before_attribute_name_state);\n break;\n }\n }\n\n function self_closing_start_tag_state(c) {\n switch(c) {\n case 0x003E: // GREATER-THAN SIGN\n // Set the self-closing flag of the current tag token.\n tokenizer = data_state;\n emitSelfClosingTag(true);\n break;\n case -1: // EOF\n emitEOF();\n break;\n default:\n reconsume(c, before_attribute_name_state);\n break;\n }\n }\n\n function bogus_comment_state(c, lookahead, eof) {\n var len = lookahead.length;\n\n if (eof) {\n nextchar += len-1; // don't consume the eof\n }\n else {\n nextchar += len;\n }\n\n var comment = lookahead.substring(0, len-1);\n\n comment = comment.replace(/\\u0000/g,\"\\uFFFD\");\n comment = comment.replace(/\\u000D\\u000A/g,\"\\u000A\");\n comment = comment.replace(/\\u000D/g,\"\\u000A\");\n\n insertToken(COMMENT, comment);\n tokenizer = data_state;\n }\n bogus_comment_state.lookahead = \">\";\n\n function markup_declaration_open_state(c, lookahead, eof) {\n if (lookahead[0] === \"-\" && lookahead[1] === \"-\") {\n nextchar += 2;\n beginComment();\n tokenizer = comment_start_state;\n return;\n }\n\n if (lookahead.toUpperCase() === \"DOCTYPE\") {\n nextchar += 7;\n tokenizer = doctype_state;\n }\n else if (lookahead === \"[CDATA[\" && cdataAllowed()) {\n nextchar += 7;\n tokenizer = cdata_section_state;\n }\n else {\n tokenizer = bogus_comment_state;\n }\n }\n markup_declaration_open_state.lookahead = 7;\n\n function comment_start_state(c) {\n beginComment();\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_start_dash_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n insertToken(COMMENT, buf2str(commentbuf));\n break; /* see comment in comment end state */\n default:\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_start_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_end_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n insertToken(COMMENT, buf2str(commentbuf));\n break;\n case -1: // EOF\n insertToken(COMMENT, buf2str(commentbuf));\n emitEOF();\n break; /* see comment in comment end state */\n default:\n commentbuf.push(0x002D /* HYPHEN-MINUS */);\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_state(c) {\n switch(c) {\n case 0x003C: // LESS-THAN SIGN\n commentbuf.push(c);\n tokenizer = comment_less_than_sign_state;\n break;\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_end_dash_state;\n break;\n case 0x0000: // NULL\n commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n insertToken(COMMENT, buf2str(commentbuf));\n emitEOF();\n break; /* see comment in comment end state */\n default:\n commentbuf.push(c);\n break;\n }\n }\n\n function comment_less_than_sign_state(c) {\n switch(c) {\n case 0x0021: // EXCLAMATION MARK\n commentbuf.push(c);\n tokenizer = comment_less_than_sign_bang_state;\n break;\n case 0x003C: // LESS-THAN SIGN\n commentbuf.push(c);\n break;\n default:\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_less_than_sign_bang_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_less_than_sign_bang_dash_state;\n break;\n default:\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_less_than_sign_bang_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_less_than_sign_bang_dash_dash_state;\n break;\n default:\n reconsume(c, comment_end_dash_state);\n break;\n }\n }\n\n function comment_less_than_sign_bang_dash_dash_state(c) {\n switch(c) {\n case 0x003E: // GREATER-THAN SIGN\n case -1: // EOF\n reconsume(c, comment_end_state);\n break;\n default:\n // parse error\n reconsume(c, comment_end_state);\n break;\n }\n }\n\n function comment_end_dash_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n tokenizer = comment_end_state;\n break;\n case -1: // EOF\n insertToken(COMMENT, buf2str(commentbuf));\n emitEOF();\n break; /* see comment in comment end state */\n default:\n commentbuf.push(0x002D /* HYPHEN-MINUS */);\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_end_state(c) {\n switch(c) {\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n insertToken(COMMENT, buf2str(commentbuf));\n break;\n case 0x0021: // EXCLAMATION MARK\n tokenizer = comment_end_bang_state;\n break;\n case 0x002D: // HYPHEN-MINUS\n commentbuf.push(0x002D);\n break;\n case -1: // EOF\n insertToken(COMMENT, buf2str(commentbuf));\n emitEOF();\n break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */\n default:\n commentbuf.push(0x002D);\n commentbuf.push(0x002D);\n reconsume(c, comment_state);\n break;\n }\n }\n\n function comment_end_bang_state(c) {\n switch(c) {\n case 0x002D: // HYPHEN-MINUS\n commentbuf.push(0x002D);\n commentbuf.push(0x002D);\n commentbuf.push(0x0021);\n tokenizer = comment_end_dash_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n insertToken(COMMENT, buf2str(commentbuf));\n break;\n case -1: // EOF\n insertToken(COMMENT, buf2str(commentbuf));\n emitEOF();\n break; /* see comment in comment end state */\n default:\n commentbuf.push(0x002D);\n commentbuf.push(0x002D);\n commentbuf.push(0x0021);\n reconsume(c, comment_state);\n break;\n }\n }\n\n function doctype_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = before_doctype_name_state;\n break;\n case -1: // EOF\n beginDoctype();\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n reconsume(c, before_doctype_name_state);\n break;\n }\n }\n\n function before_doctype_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n beginDoctype();\n doctypenamebuf.push(c + 0x0020);\n tokenizer = doctype_name_state;\n break;\n case 0x0000: // NULL\n beginDoctype();\n doctypenamebuf.push(0xFFFD);\n tokenizer = doctype_name_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n beginDoctype();\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n beginDoctype();\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n beginDoctype();\n doctypenamebuf.push(c);\n tokenizer = doctype_name_state;\n break;\n }\n }\n\n function doctype_name_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = after_doctype_name_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitDoctype();\n break;\n case 0x0041: // [A-Z]\n case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n doctypenamebuf.push(c + 0x0020);\n break;\n case 0x0000: // NULL\n doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n doctypenamebuf.push(c);\n break;\n }\n }\n\n function after_doctype_name_state(c, lookahead, eof) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n nextchar += 1;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n nextchar += 1;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n lookahead = lookahead.toUpperCase();\n if (lookahead === \"PUBLIC\") {\n nextchar += 6;\n tokenizer = after_doctype_public_keyword_state;\n }\n else if (lookahead === \"SYSTEM\") {\n nextchar += 6;\n tokenizer = after_doctype_system_keyword_state;\n }\n else {\n forcequirks();\n tokenizer = bogus_doctype_state;\n }\n break;\n }\n }\n after_doctype_name_state.lookahead = 6;\n\n function after_doctype_public_keyword_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = before_doctype_public_identifier_state;\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypePublicId();\n tokenizer = doctype_public_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypePublicId();\n tokenizer = doctype_public_identifier_single_quoted_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function before_doctype_public_identifier_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypePublicId();\n tokenizer = doctype_public_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypePublicId();\n tokenizer = doctype_public_identifier_single_quoted_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function doctype_public_identifier_double_quoted_state(c) {\n switch(c) {\n case 0x0022: // QUOTATION MARK\n tokenizer = after_doctype_public_identifier_state;\n break;\n case 0x0000: // NULL\n doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n doctypepublicbuf.push(c);\n break;\n }\n }\n\n function doctype_public_identifier_single_quoted_state(c) {\n switch(c) {\n case 0x0027: // APOSTROPHE\n tokenizer = after_doctype_public_identifier_state;\n break;\n case 0x0000: // NULL\n doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n doctypepublicbuf.push(c);\n break;\n }\n }\n\n function after_doctype_public_identifier_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = between_doctype_public_and_system_identifiers_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitDoctype();\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_single_quoted_state;\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function between_doctype_public_and_system_identifiers_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE Ignore the character.\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitDoctype();\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_single_quoted_state;\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function after_doctype_system_keyword_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n tokenizer = before_doctype_system_identifier_state;\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_single_quoted_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function before_doctype_system_identifier_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE Ignore the character.\n break;\n case 0x0022: // QUOTATION MARK\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_double_quoted_state;\n break;\n case 0x0027: // APOSTROPHE\n beginDoctypeSystemId();\n tokenizer = doctype_system_identifier_single_quoted_state;\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n forcequirks();\n tokenizer = bogus_doctype_state;\n break;\n }\n }\n\n function doctype_system_identifier_double_quoted_state(c) {\n switch(c) {\n case 0x0022: // QUOTATION MARK\n tokenizer = after_doctype_system_identifier_state;\n break;\n case 0x0000: // NULL\n doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n doctypesystembuf.push(c);\n break;\n }\n }\n\n function doctype_system_identifier_single_quoted_state(c) {\n switch(c) {\n case 0x0027: // APOSTROPHE\n tokenizer = after_doctype_system_identifier_state;\n break;\n case 0x0000: // NULL\n doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n break;\n case 0x003E: // GREATER-THAN SIGN\n forcequirks();\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n doctypesystembuf.push(c);\n break;\n }\n }\n\n function after_doctype_system_identifier_state(c) {\n switch(c) {\n case 0x0009: // CHARACTER TABULATION (tab)\n case 0x000A: // LINE FEED (LF)\n case 0x000C: // FORM FEED (FF)\n case 0x0020: // SPACE\n /* Ignore the character. */\n break;\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n forcequirks();\n emitDoctype();\n emitEOF();\n break;\n default:\n tokenizer = bogus_doctype_state;\n /* This does *not* set the DOCTYPE token's force-quirks flag. */\n break;\n }\n }\n\n function bogus_doctype_state(c) {\n switch(c) {\n case 0x003E: // GREATER-THAN SIGN\n tokenizer = data_state;\n emitDoctype();\n break;\n case -1: // EOF\n emitDoctype();\n emitEOF();\n break;\n default:\n /* Ignore the character. */\n break;\n }\n }\n\n function cdata_section_state(c) {\n switch(c) {\n case 0x005D: // RIGHT SQUARE BRACKET\n tokenizer = cdata_section_bracket_state;\n break;\n case -1: // EOF\n emitEOF();\n break;\n case 0x0000: // NULL\n textIncludesNUL = true;\n /* fall through */\n default:\n // Instead of just pushing a single character and then\n // coming back to the very same place, lookahead and\n // emit everything we can at once.\n /*jshint -W030 */\n emitCharsWhile(CDATATEXT) || textrun.push(c);\n break;\n }\n }\n\n function cdata_section_bracket_state(c) {\n switch(c) {\n case 0x005D: // RIGHT SQUARE BRACKET\n tokenizer = cdata_section_end_state;\n break;\n default:\n textrun.push(0x005D);\n reconsume(c, cdata_section_state);\n break;\n }\n }\n\n function cdata_section_end_state(c) {\n switch(c) {\n case 0x005D: // RIGHT SQUARE BRACKET\n textrun.push(0x005D);\n break;\n case 0x003E: // GREATER-THAN SIGN\n flushText();\n tokenizer = data_state;\n break;\n default:\n textrun.push(0x005D);\n textrun.push(0x005D);\n reconsume(c, cdata_section_state);\n break;\n }\n }\n\n function character_reference_state(c) {\n beginTempBuf();\n tempbuf.push(0x0026);\n switch(c) {\n case 0x0009: // TAB\n case 0x000A: // LINE FEED\n case 0x000C: // FORM FEED\n case 0x0020: // SPACE\n case 0x003C: // LESS-THAN SIGN\n case 0x0026: // AMPERSAND\n case -1: // EOF\n reconsume(c, character_reference_end_state);\n break;\n case 0x0023: // NUMBER SIGN\n tempbuf.push(c);\n tokenizer = numeric_character_reference_state;\n break;\n default:\n reconsume(c, named_character_reference_state);\n break;\n }\n }\n\n function named_character_reference_state(c) {\n NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed\n var matched = NAMEDCHARREF.exec(chars);\n if (!matched) throw new Error(\"should never happen\");\n var name = matched[1];\n if (!name) {\n // If no match can be made, switch to the character reference end state\n tokenizer = character_reference_end_state;\n return;\n }\n\n // Consume the matched characters and append them to temporary buffer\n nextchar += name.length;\n pushAll(tempbuf, str2buf(name));\n\n switch(return_state) {\n case attribute_value_double_quoted_state:\n case attribute_value_single_quoted_state:\n case attribute_value_unquoted_state:\n // If the character reference was consumed as part of an attribute...\n if (name[name.length-1] !== ';') { // ...and the last char is not ;\n if (/[=A-Za-z0-9]/.test(chars[nextchar])) {\n tokenizer = character_reference_end_state;\n return;\n }\n }\n break;\n default:\n break;\n }\n\n beginTempBuf();\n var rv = namedCharRefs[name];\n if (typeof rv === 'number') {\n tempbuf.push(rv);\n } else {\n pushAll(tempbuf, rv);\n }\n tokenizer = character_reference_end_state;\n }\n // We might need to pause tokenization until we have enough characters\n // in the buffer for longest possible character reference.\n named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN;\n\n function numeric_character_reference_state(c) {\n character_reference_code = 0;\n switch(c) {\n case 0x0078: // x\n case 0x0058: // X\n tempbuf.push(c);\n tokenizer = hexadecimal_character_reference_start_state;\n break;\n default:\n reconsume(c, decimal_character_reference_start_state);\n break;\n }\n }\n\n function hexadecimal_character_reference_start_state(c) {\n switch(c) {\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n case 0x0046: // [A-F]\n case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n case 0x0066: // [a-f]\n reconsume(c, hexadecimal_character_reference_state);\n break;\n default:\n reconsume(c, character_reference_end_state);\n break;\n }\n }\n\n function decimal_character_reference_start_state(c) {\n switch(c) {\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n reconsume(c, decimal_character_reference_state);\n break;\n default:\n reconsume(c, character_reference_end_state);\n break;\n }\n }\n\n function hexadecimal_character_reference_state(c) {\n switch(c) {\n case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n case 0x0046: // [A-F]\n character_reference_code *= 16;\n character_reference_code += (c - 0x0037);\n break;\n case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n case 0x0066: // [a-f]\n character_reference_code *= 16;\n character_reference_code += (c - 0x0057);\n break;\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n character_reference_code *= 16;\n character_reference_code += (c - 0x0030);\n break;\n case 0x003B: // SEMICOLON\n tokenizer = numeric_character_reference_end_state;\n break;\n default:\n reconsume(c, numeric_character_reference_end_state);\n break;\n }\n }\n\n function decimal_character_reference_state(c) {\n switch(c) {\n case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n character_reference_code *= 10;\n character_reference_code += (c - 0x0030);\n break;\n case 0x003B: // SEMICOLON\n tokenizer = numeric_character_reference_end_state;\n break;\n default:\n reconsume(c, numeric_character_reference_end_state);\n break;\n }\n }\n\n function numeric_character_reference_end_state(c) {\n if (character_reference_code in numericCharRefReplacements) {\n character_reference_code = numericCharRefReplacements[character_reference_code];\n } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) {\n character_reference_code = 0xFFFD;\n }\n\n beginTempBuf();\n if (character_reference_code <= 0xFFFF) {\n tempbuf.push(character_reference_code);\n } else {\n character_reference_code = character_reference_code - 0x10000;\n /* jshint bitwise: false */\n tempbuf.push(0xD800 + (character_reference_code >> 10));\n tempbuf.push(0xDC00 + (character_reference_code & 0x03FF));\n }\n reconsume(c, character_reference_end_state);\n }\n\n function character_reference_end_state(c) {\n switch(return_state) {\n case attribute_value_double_quoted_state:\n case attribute_value_single_quoted_state:\n case attribute_value_unquoted_state:\n // append each character to the current attribute's value\n attrvaluebuf += buf2str(tempbuf);\n break;\n default:\n pushAll(textrun, tempbuf);\n break;\n }\n reconsume(c, return_state);\n }\n\n /***\n * The tree builder insertion modes\n */\n\n // 11.2.5.4.1 The \"initial\" insertion mode\n function initial_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n if (value.length === 0) return; // Are we done?\n break; // Handle anything non-space text below\n case 4: // COMMENT\n doc._appendChild(doc.createComment(value));\n return;\n case 5: // DOCTYPE\n var name = value;\n var publicid = arg3;\n var systemid = arg4;\n // Use the constructor directly instead of\n // implementation.createDocumentType because the create\n // function throws errors on invalid characters, and\n // we don't want the parser to throw them.\n doc.appendChild(new DocumentType(doc, name, publicid, systemid));\n\n // Note that there is no public API for setting quirks mode We can\n // do this here because we have access to implementation details\n if (force_quirks ||\n name.toLowerCase() !== \"html\" ||\n quirkyPublicIds.test(publicid) ||\n (systemid && systemid.toLowerCase() === quirkySystemId) ||\n (systemid === undefined &&\n conditionallyQuirkyPublicIds.test(publicid)))\n doc._quirks = true;\n else if (limitedQuirkyPublicIds.test(publicid) ||\n (systemid !== undefined &&\n conditionallyQuirkyPublicIds.test(publicid)))\n doc._limitedQuirks = true;\n parser = before_html_mode;\n return;\n }\n\n // tags or non-whitespace text\n doc._quirks = true;\n parser = before_html_mode;\n parser(t,value,arg3,arg4);\n }\n\n // 11.2.5.4.2 The \"before html\" insertion mode\n function before_html_mode(t,value,arg3,arg4) {\n var elt;\n switch(t) {\n case 1: // TEXT\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n if (value.length === 0) return; // Are we done?\n break; // Handle anything non-space text below\n case 5: // DOCTYPE\n /* ignore the token */\n return;\n case 4: // COMMENT\n doc._appendChild(doc.createComment(value));\n return;\n case 2: // TAG\n if (value === \"html\") {\n elt = createHTMLElt(doc, value, arg3);\n stack.push(elt);\n doc.appendChild(elt);\n // XXX: handle application cache here\n parser = before_head_mode;\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"html\":\n case \"head\":\n case \"body\":\n case \"br\":\n break; // fall through on these\n default:\n return; // ignore most end tags\n }\n }\n\n // Anything that didn't get handled above is handled like this:\n elt = createHTMLElt(doc, \"html\", null);\n stack.push(elt);\n doc.appendChild(elt);\n // XXX: handle application cache here\n parser = before_head_mode;\n parser(t,value,arg3,arg4);\n }\n\n // 11.2.5.4.3 The \"before head\" insertion mode\n function before_head_mode(t,value,arg3,arg4) {\n switch(t) {\n case 1: // TEXT\n value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n if (value.length === 0) return; // Are we done?\n break; // Handle anything non-space text below\n case 5: // DOCTYPE\n /* ignore the token */\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t,value,arg3,arg4);\n return;\n case \"head\":\n var elt = insertHTMLElement(value, arg3);\n head_element_pointer = elt;\n parser = in_head_mode;\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"html\":\n case \"head\":\n case \"body\":\n case \"br\":\n break;\n default:\n return; // ignore most end tags\n }\n }\n\n // If not handled explicitly above\n before_head_mode(TAG, \"head\", null); // create a head tag\n parser(t, value, arg3, arg4); // then try again with this token\n }\n\n function in_head_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n var ws = value.match(LEADINGWS);\n if (ws) {\n insertText(ws[0]);\n value = value.substring(ws[0].length);\n }\n if (value.length === 0) return;\n break; // Handle non-whitespace below\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"meta\":\n // XXX:\n // May need to change the encoding based on this tag\n /* falls through */\n case \"base\":\n case \"basefont\":\n case \"bgsound\":\n case \"link\":\n insertHTMLElement(value, arg3);\n stack.pop();\n return;\n case \"title\":\n parseRCDATA(value, arg3);\n return;\n case \"noscript\":\n if (!scripting_enabled) {\n insertHTMLElement(value, arg3);\n parser = in_head_noscript_mode;\n return;\n }\n // Otherwise, if scripting is enabled...\n /* falls through */\n case \"noframes\":\n case \"style\":\n parseRawText(value,arg3);\n return;\n case \"script\":\n insertElement(function(doc) {\n var elt = createHTMLElt(doc, value, arg3);\n elt._parser_inserted = true;\n elt._force_async = false;\n if (fragment) elt._already_started = true;\n flushText();\n return elt;\n });\n tokenizer = script_data_state;\n originalInsertionMode = parser;\n parser = text_mode;\n return;\n case \"template\":\n insertHTMLElement(value, arg3);\n afe.insertMarker();\n frameset_ok = false;\n parser = in_template_mode;\n templateInsertionModes.push(parser);\n return;\n case \"head\":\n return; // ignore it\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"head\":\n stack.pop();\n parser = after_head_mode;\n return;\n case \"body\":\n case \"html\":\n case \"br\":\n break; // handle these at the bottom of the function\n case \"template\":\n if (!stack.contains(\"template\")) {\n return;\n }\n stack.generateImpliedEndTags(null, \"thorough\");\n stack.popTag(\"template\");\n afe.clearToMarker();\n templateInsertionModes.pop();\n resetInsertionMode();\n return;\n default:\n // ignore any other end tag\n return;\n }\n break;\n }\n\n // If not handled above\n in_head_mode(ENDTAG, \"head\", null); // synthetic \n parser(t, value, arg3, arg4); // Then redo this one\n }\n\n // 13.2.5.4.5 The \"in head noscript\" insertion mode\n function in_head_noscript_mode(t, value, arg3, arg4) {\n switch(t) {\n case 5: // DOCTYPE\n return;\n case 4: // COMMENT\n in_head_mode(t, value);\n return;\n case 1: // TEXT\n var ws = value.match(LEADINGWS);\n if (ws) {\n in_head_mode(t, ws[0]);\n value = value.substring(ws[0].length);\n }\n if (value.length === 0) return; // no more text\n break; // Handle non-whitespace below\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"basefont\":\n case \"bgsound\":\n case \"link\":\n case \"meta\":\n case \"noframes\":\n case \"style\":\n in_head_mode(t, value, arg3);\n return;\n case \"head\":\n case \"noscript\":\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"noscript\":\n stack.pop();\n parser = in_head_mode;\n return;\n case \"br\":\n break; // goes to the outer default\n default:\n return; // ignore other end tags\n }\n break;\n }\n\n // If not handled above\n in_head_noscript_mode(ENDTAG, \"noscript\", null);\n parser(t, value, arg3, arg4);\n }\n\n function after_head_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n var ws = value.match(LEADINGWS);\n if (ws) {\n insertText(ws[0]);\n value = value.substring(ws[0].length);\n }\n if (value.length === 0) return;\n break; // Handle non-whitespace below\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"body\":\n insertHTMLElement(value, arg3);\n frameset_ok = false;\n parser = in_body_mode;\n return;\n case \"frameset\":\n insertHTMLElement(value, arg3);\n parser = in_frameset_mode;\n return;\n case \"base\":\n case \"basefont\":\n case \"bgsound\":\n case \"link\":\n case \"meta\":\n case \"noframes\":\n case \"script\":\n case \"style\":\n case \"template\":\n case \"title\":\n stack.push(head_element_pointer);\n in_head_mode(TAG, value, arg3);\n stack.removeElement(head_element_pointer);\n return;\n case \"head\":\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"template\":\n return in_head_mode(t, value, arg3, arg4);\n case \"body\":\n case \"html\":\n case \"br\":\n break;\n default:\n return; // ignore any other end tag\n }\n break;\n }\n\n after_head_mode(TAG, \"body\", null);\n frameset_ok = true;\n parser(t, value, arg3, arg4);\n }\n\n // 13.2.5.4.7 The \"in body\" insertion mode\n function in_body_mode(t,value,arg3,arg4) {\n var body, i, node, elt;\n switch(t) {\n case 1: // TEXT\n if (textIncludesNUL) {\n value = value.replace(NULCHARS, \"\");\n if (value.length === 0) return;\n }\n // If any non-space characters\n if (frameset_ok && NONWS.test(value))\n frameset_ok = false;\n afereconstruct();\n insertText(value);\n return;\n case 5: // DOCTYPE\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case -1: // EOF\n if (templateInsertionModes.length) {\n return in_template_mode(t);\n }\n stopParsing();\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n if (stack.contains(\"template\")) {\n return;\n }\n transferAttributes(arg3, stack.elements[0]);\n return;\n case \"base\":\n case \"basefont\":\n case \"bgsound\":\n case \"link\":\n case \"meta\":\n case \"noframes\":\n case \"script\":\n case \"style\":\n case \"template\":\n case \"title\":\n in_head_mode(TAG, value, arg3);\n return;\n case \"body\":\n body = stack.elements[1];\n if (!body || !(body instanceof impl.HTMLBodyElement) ||\n stack.contains(\"template\"))\n return;\n frameset_ok = false;\n transferAttributes(arg3, body);\n return;\n case \"frameset\":\n if (!frameset_ok) return;\n body = stack.elements[1];\n if (!body || !(body instanceof impl.HTMLBodyElement))\n return;\n if (body.parentNode) body.parentNode.removeChild(body);\n while(!(stack.top instanceof impl.HTMLHtmlElement))\n stack.pop();\n insertHTMLElement(value, arg3);\n parser = in_frameset_mode;\n return;\n\n case \"address\":\n case \"article\":\n case \"aside\":\n case \"blockquote\":\n case \"center\":\n case \"details\":\n case \"dialog\":\n case \"dir\":\n case \"div\":\n case \"dl\":\n case \"fieldset\":\n case \"figcaption\":\n case \"figure\":\n case \"footer\":\n case \"header\":\n case \"hgroup\":\n case \"main\":\n case \"nav\":\n case \"ol\":\n case \"p\":\n case \"section\":\n case \"summary\":\n case \"ul\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n insertHTMLElement(value, arg3);\n return;\n\n case \"menu\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n if (isA(stack.top, 'menuitem')) {\n stack.pop();\n }\n insertHTMLElement(value, arg3);\n return;\n\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n if (stack.top instanceof impl.HTMLHeadingElement)\n stack.pop();\n insertHTMLElement(value, arg3);\n return;\n\n case \"pre\":\n case \"listing\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n insertHTMLElement(value, arg3);\n ignore_linefeed = true;\n frameset_ok = false;\n return;\n\n case \"form\":\n if (form_element_pointer && !stack.contains(\"template\")) return;\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n elt = insertHTMLElement(value, arg3);\n if (!stack.contains(\"template\"))\n form_element_pointer = elt;\n return;\n\n case \"li\":\n frameset_ok = false;\n for(i = stack.elements.length-1; i >= 0; i--) {\n node = stack.elements[i];\n if (node instanceof impl.HTMLLIElement) {\n in_body_mode(ENDTAG, \"li\");\n break;\n }\n if (isA(node, specialSet) && !isA(node, addressdivpSet))\n break;\n }\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n insertHTMLElement(value, arg3);\n return;\n\n case \"dd\":\n case \"dt\":\n frameset_ok = false;\n for(i = stack.elements.length-1; i >= 0; i--) {\n node = stack.elements[i];\n if (isA(node, dddtSet)) {\n in_body_mode(ENDTAG, node.localName);\n break;\n }\n if (isA(node, specialSet) && !isA(node, addressdivpSet))\n break;\n }\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n insertHTMLElement(value, arg3);\n return;\n\n case \"plaintext\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n insertHTMLElement(value, arg3);\n tokenizer = plaintext_state;\n return;\n\n case \"button\":\n if (stack.inScope(\"button\")) {\n in_body_mode(ENDTAG, \"button\");\n parser(t, value, arg3, arg4);\n }\n else {\n afereconstruct();\n insertHTMLElement(value, arg3);\n frameset_ok = false;\n }\n return;\n\n case \"a\":\n var activeElement = afe.findElementByTag(\"a\");\n if (activeElement) {\n in_body_mode(ENDTAG, value);\n afe.remove(activeElement);\n stack.removeElement(activeElement);\n }\n /* falls through */\n case \"b\":\n case \"big\":\n case \"code\":\n case \"em\":\n case \"font\":\n case \"i\":\n case \"s\":\n case \"small\":\n case \"strike\":\n case \"strong\":\n case \"tt\":\n case \"u\":\n afereconstruct();\n afe.push(insertHTMLElement(value,arg3), arg3);\n return;\n\n case \"nobr\":\n afereconstruct();\n\n if (stack.inScope(value)) {\n in_body_mode(ENDTAG, value);\n afereconstruct();\n }\n afe.push(insertHTMLElement(value,arg3), arg3);\n return;\n\n case \"applet\":\n case \"marquee\":\n case \"object\":\n afereconstruct();\n insertHTMLElement(value,arg3);\n afe.insertMarker();\n frameset_ok = false;\n return;\n\n case \"table\":\n if (!doc._quirks && stack.inButtonScope(\"p\")) {\n in_body_mode(ENDTAG, \"p\");\n }\n insertHTMLElement(value,arg3);\n frameset_ok = false;\n parser = in_table_mode;\n return;\n\n case \"area\":\n case \"br\":\n case \"embed\":\n case \"img\":\n case \"keygen\":\n case \"wbr\":\n afereconstruct();\n insertHTMLElement(value,arg3);\n stack.pop();\n frameset_ok = false;\n return;\n\n case \"input\":\n afereconstruct();\n elt = insertHTMLElement(value,arg3);\n stack.pop();\n var type = elt.getAttribute(\"type\");\n if (!type || type.toLowerCase() !== \"hidden\")\n frameset_ok = false;\n return;\n\n case \"param\":\n case \"source\":\n case \"track\":\n insertHTMLElement(value,arg3);\n stack.pop();\n return;\n\n case \"hr\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n if (isA(stack.top, 'menuitem')) {\n stack.pop();\n }\n insertHTMLElement(value,arg3);\n stack.pop();\n frameset_ok = false;\n return;\n\n case \"image\":\n in_body_mode(TAG, \"img\", arg3, arg4);\n return;\n\n case \"textarea\":\n insertHTMLElement(value,arg3);\n ignore_linefeed = true;\n frameset_ok = false;\n tokenizer = rcdata_state;\n originalInsertionMode = parser;\n parser = text_mode;\n return;\n\n case \"xmp\":\n if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n afereconstruct();\n frameset_ok = false;\n parseRawText(value, arg3);\n return;\n\n case \"iframe\":\n frameset_ok = false;\n parseRawText(value, arg3);\n return;\n\n case \"noembed\":\n parseRawText(value,arg3);\n return;\n\n case \"select\":\n afereconstruct();\n insertHTMLElement(value,arg3);\n frameset_ok = false;\n if (parser === in_table_mode ||\n parser === in_caption_mode ||\n parser === in_table_body_mode ||\n parser === in_row_mode ||\n parser === in_cell_mode)\n parser = in_select_in_table_mode;\n else\n parser = in_select_mode;\n return;\n\n case \"optgroup\":\n case \"option\":\n if (stack.top instanceof impl.HTMLOptionElement) {\n in_body_mode(ENDTAG, \"option\");\n }\n afereconstruct();\n insertHTMLElement(value,arg3);\n return;\n\n case \"menuitem\":\n if (isA(stack.top, 'menuitem')) {\n stack.pop();\n }\n afereconstruct();\n insertHTMLElement(value, arg3);\n return;\n\n case \"rb\":\n case \"rtc\":\n if (stack.inScope(\"ruby\")) {\n stack.generateImpliedEndTags();\n }\n insertHTMLElement(value,arg3);\n return;\n\n case \"rp\":\n case \"rt\":\n if (stack.inScope(\"ruby\")) {\n stack.generateImpliedEndTags(\"rtc\");\n }\n insertHTMLElement(value,arg3);\n return;\n\n case \"math\":\n afereconstruct();\n adjustMathMLAttributes(arg3);\n adjustForeignAttributes(arg3);\n insertForeignElement(value, arg3, NAMESPACE.MATHML);\n if (arg4) // self-closing flag\n stack.pop();\n return;\n\n case \"svg\":\n afereconstruct();\n adjustSVGAttributes(arg3);\n adjustForeignAttributes(arg3);\n insertForeignElement(value, arg3, NAMESPACE.SVG);\n if (arg4) // self-closing flag\n stack.pop();\n return;\n\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"frame\":\n case \"head\":\n case \"tbody\":\n case \"td\":\n case \"tfoot\":\n case \"th\":\n case \"thead\":\n case \"tr\":\n // Ignore table tags if we're not in_table mode\n return;\n }\n\n // Handle any other start tag here\n // (and also noscript tags when scripting is disabled)\n afereconstruct();\n insertHTMLElement(value,arg3);\n return;\n\n case 3: // ENDTAG\n switch(value) {\n case \"template\":\n in_head_mode(ENDTAG, value, arg3);\n return;\n case \"body\":\n if (!stack.inScope(\"body\")) return;\n parser = after_body_mode;\n return;\n case \"html\":\n if (!stack.inScope(\"body\")) return;\n parser = after_body_mode;\n parser(t, value, arg3);\n return;\n\n case \"address\":\n case \"article\":\n case \"aside\":\n case \"blockquote\":\n case \"button\":\n case \"center\":\n case \"details\":\n case \"dialog\":\n case \"dir\":\n case \"div\":\n case \"dl\":\n case \"fieldset\":\n case \"figcaption\":\n case \"figure\":\n case \"footer\":\n case \"header\":\n case \"hgroup\":\n case \"listing\":\n case \"main\":\n case \"menu\":\n case \"nav\":\n case \"ol\":\n case \"pre\":\n case \"section\":\n case \"summary\":\n case \"ul\":\n // Ignore if there is not a matching open tag\n if (!stack.inScope(value)) return;\n stack.generateImpliedEndTags();\n stack.popTag(value);\n return;\n\n case \"form\":\n if (!stack.contains(\"template\")) {\n var openform = form_element_pointer;\n form_element_pointer = null;\n if (!openform || !stack.elementInScope(openform)) return;\n stack.generateImpliedEndTags();\n stack.removeElement(openform);\n } else {\n if (!stack.inScope(\"form\")) return;\n stack.generateImpliedEndTags();\n stack.popTag(\"form\");\n }\n return;\n\n case \"p\":\n if (!stack.inButtonScope(value)) {\n in_body_mode(TAG, value, null);\n parser(t, value, arg3, arg4);\n }\n else {\n stack.generateImpliedEndTags(value);\n stack.popTag(value);\n }\n return;\n\n case \"li\":\n if (!stack.inListItemScope(value)) return;\n stack.generateImpliedEndTags(value);\n stack.popTag(value);\n return;\n\n case \"dd\":\n case \"dt\":\n if (!stack.inScope(value)) return;\n stack.generateImpliedEndTags(value);\n stack.popTag(value);\n return;\n\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return;\n stack.generateImpliedEndTags();\n stack.popElementType(impl.HTMLHeadingElement);\n return;\n\n case \"sarcasm\":\n // Take a deep breath, and then:\n break;\n\n case \"a\":\n case \"b\":\n case \"big\":\n case \"code\":\n case \"em\":\n case \"font\":\n case \"i\":\n case \"nobr\":\n case \"s\":\n case \"small\":\n case \"strike\":\n case \"strong\":\n case \"tt\":\n case \"u\":\n var result = adoptionAgency(value);\n if (result) return; // If we did something we're done\n break; // Go to the \"any other end tag\" case\n\n case \"applet\":\n case \"marquee\":\n case \"object\":\n if (!stack.inScope(value)) return;\n stack.generateImpliedEndTags();\n stack.popTag(value);\n afe.clearToMarker();\n return;\n\n case \"br\":\n in_body_mode(TAG, value, null); // Turn
    into
    \n return;\n }\n\n // Any other end tag goes here\n for(i = stack.elements.length-1; i >= 0; i--) {\n node = stack.elements[i];\n if (isA(node, value)) {\n stack.generateImpliedEndTags(value);\n stack.popElement(node);\n break;\n }\n else if (isA(node, specialSet)) {\n return;\n }\n }\n\n return;\n }\n }\n\n function text_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n insertText(value);\n return;\n case -1: // EOF\n if (stack.top instanceof impl.HTMLScriptElement)\n stack.top._already_started = true;\n stack.pop();\n parser = originalInsertionMode;\n parser(t);\n return;\n case 3: // ENDTAG\n if (value === \"script\") {\n handleScriptEnd();\n }\n else {\n stack.pop();\n parser = originalInsertionMode;\n }\n return;\n default:\n // We should never get any other token types\n return;\n }\n }\n\n function in_table_mode(t, value, arg3, arg4) {\n function getTypeAttr(attrs) {\n for(var i = 0, n = attrs.length; i < n; i++) {\n if (attrs[i][0] === \"type\")\n return attrs[i][1].toLowerCase();\n }\n return null;\n }\n\n switch(t) {\n case 1: // TEXT\n // XXX the text_integration_mode stuff is\n // just a hack I made up\n if (text_integration_mode) {\n in_body_mode(t, value, arg3, arg4);\n return;\n }\n else if (isA(stack.top, tablesectionrowSet)) {\n pending_table_text = [];\n originalInsertionMode = parser;\n parser = in_table_text_mode;\n parser(t, value, arg3, arg4);\n return;\n }\n break;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case 2: // TAG\n switch(value) {\n case \"caption\":\n stack.clearToContext(tableContextSet);\n afe.insertMarker();\n insertHTMLElement(value,arg3);\n parser = in_caption_mode;\n return;\n case \"colgroup\":\n stack.clearToContext(tableContextSet);\n insertHTMLElement(value,arg3);\n parser = in_column_group_mode;\n return;\n case \"col\":\n in_table_mode(TAG, \"colgroup\", null);\n parser(t, value, arg3, arg4);\n return;\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n stack.clearToContext(tableContextSet);\n insertHTMLElement(value,arg3);\n parser = in_table_body_mode;\n return;\n case \"td\":\n case \"th\":\n case \"tr\":\n in_table_mode(TAG, \"tbody\", null);\n parser(t, value, arg3, arg4);\n return;\n\n case \"table\":\n if (!stack.inTableScope(value)) {\n return; // Ignore the token\n }\n in_table_mode(ENDTAG, value);\n parser(t, value, arg3, arg4);\n return;\n\n case \"style\":\n case \"script\":\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n\n case \"input\":\n var type = getTypeAttr(arg3);\n if (type !== \"hidden\") break; // to the anything else case\n insertHTMLElement(value,arg3);\n stack.pop();\n return;\n\n case \"form\":\n if (form_element_pointer || stack.contains(\"template\")) return;\n form_element_pointer = insertHTMLElement(value, arg3);\n stack.popElement(form_element_pointer);\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"table\":\n if (!stack.inTableScope(value)) return;\n stack.popTag(value);\n resetInsertionMode();\n return;\n case \"body\":\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"html\":\n case \"tbody\":\n case \"td\":\n case \"tfoot\":\n case \"th\":\n case \"thead\":\n case \"tr\":\n return;\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n\n break;\n case -1: // EOF\n in_body_mode(t, value, arg3, arg4);\n return;\n }\n\n // This is the anything else case\n foster_parent_mode = true;\n in_body_mode(t, value, arg3, arg4);\n foster_parent_mode = false;\n }\n\n function in_table_text_mode(t, value, arg3, arg4) {\n if (t === TEXT) {\n if (textIncludesNUL) {\n value = value.replace(NULCHARS, \"\");\n if (value.length === 0) return;\n }\n pending_table_text.push(value);\n }\n else {\n var s = pending_table_text.join(\"\");\n pending_table_text.length = 0;\n if (NONWS.test(s)) { // If any non-whitespace characters\n // This must be the same code as the \"anything else\"\n // case of the in_table mode above.\n foster_parent_mode = true;\n in_body_mode(TEXT, s);\n foster_parent_mode = false;\n }\n else {\n insertText(s);\n }\n parser = originalInsertionMode;\n parser(t, value, arg3, arg4);\n }\n }\n\n\n function in_caption_mode(t, value, arg3, arg4) {\n function end_caption() {\n if (!stack.inTableScope(\"caption\")) return false;\n stack.generateImpliedEndTags();\n stack.popTag(\"caption\");\n afe.clearToMarker();\n parser = in_table_mode;\n return true;\n }\n\n switch(t) {\n case 2: // TAG\n switch(value) {\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"tbody\":\n case \"td\":\n case \"tfoot\":\n case \"th\":\n case \"thead\":\n case \"tr\":\n if (end_caption()) parser(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"caption\":\n end_caption();\n return;\n case \"table\":\n if (end_caption()) parser(t, value, arg3, arg4);\n return;\n case \"body\":\n case \"col\":\n case \"colgroup\":\n case \"html\":\n case \"tbody\":\n case \"td\":\n case \"tfoot\":\n case \"th\":\n case \"thead\":\n case \"tr\":\n return;\n }\n break;\n }\n\n // The Anything Else case\n in_body_mode(t, value, arg3, arg4);\n }\n\n function in_column_group_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n var ws = value.match(LEADINGWS);\n if (ws) {\n insertText(ws[0]);\n value = value.substring(ws[0].length);\n }\n if (value.length === 0) return;\n break; // Handle non-whitespace below\n\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"col\":\n insertHTMLElement(value, arg3);\n stack.pop();\n return;\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"colgroup\":\n if (!isA(stack.top, 'colgroup')) {\n return; // Ignore the token.\n }\n stack.pop();\n parser = in_table_mode;\n return;\n case \"col\":\n return;\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n case -1: // EOF\n in_body_mode(t, value, arg3, arg4);\n return;\n }\n\n // Anything else\n if (!isA(stack.top, 'colgroup')) {\n return; // Ignore the token.\n }\n in_column_group_mode(ENDTAG, \"colgroup\");\n parser(t, value, arg3, arg4);\n }\n\n function in_table_body_mode(t, value, arg3, arg4) {\n function endsect() {\n if (!stack.inTableScope(\"tbody\") &&\n !stack.inTableScope(\"thead\") &&\n !stack.inTableScope(\"tfoot\"))\n return;\n stack.clearToContext(tableBodyContextSet);\n in_table_body_mode(ENDTAG, stack.top.localName, null);\n parser(t, value, arg3, arg4);\n }\n\n switch(t) {\n case 2: // TAG\n switch(value) {\n case \"tr\":\n stack.clearToContext(tableBodyContextSet);\n insertHTMLElement(value, arg3);\n parser = in_row_mode;\n return;\n case \"th\":\n case \"td\":\n in_table_body_mode(TAG, \"tr\", null);\n parser(t, value, arg3, arg4);\n return;\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n endsect();\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"table\":\n endsect();\n return;\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n if (stack.inTableScope(value)) {\n stack.clearToContext(tableBodyContextSet);\n stack.pop();\n parser = in_table_mode;\n }\n return;\n case \"body\":\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"html\":\n case \"td\":\n case \"th\":\n case \"tr\":\n return;\n }\n break;\n }\n\n // Anything else:\n in_table_mode(t, value, arg3, arg4);\n }\n\n function in_row_mode(t, value, arg3, arg4) {\n function endrow() {\n if (!stack.inTableScope(\"tr\")) return false;\n stack.clearToContext(tableRowContextSet);\n stack.pop();\n parser = in_table_body_mode;\n return true;\n }\n\n switch(t) {\n case 2: // TAG\n switch(value) {\n case \"th\":\n case \"td\":\n stack.clearToContext(tableRowContextSet);\n insertHTMLElement(value, arg3);\n parser = in_cell_mode;\n afe.insertMarker();\n return;\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n case \"tr\":\n if (endrow()) parser(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"tr\":\n endrow();\n return;\n case \"table\":\n if (endrow()) parser(t, value, arg3, arg4);\n return;\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n if (stack.inTableScope(value)) {\n if (endrow()) parser(t, value, arg3, arg4);\n }\n return;\n case \"body\":\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"html\":\n case \"td\":\n case \"th\":\n return;\n }\n break;\n }\n\n // anything else\n in_table_mode(t, value, arg3, arg4);\n }\n\n function in_cell_mode(t, value, arg3, arg4) {\n switch(t) {\n case 2: // TAG\n switch(value) {\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"tbody\":\n case \"td\":\n case \"tfoot\":\n case \"th\":\n case \"thead\":\n case \"tr\":\n if (stack.inTableScope(\"td\")) {\n in_cell_mode(ENDTAG, \"td\");\n parser(t, value, arg3, arg4);\n }\n else if (stack.inTableScope(\"th\")) {\n in_cell_mode(ENDTAG, \"th\");\n parser(t, value, arg3, arg4);\n }\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"td\":\n case \"th\":\n if (!stack.inTableScope(value)) return;\n stack.generateImpliedEndTags();\n stack.popTag(value);\n afe.clearToMarker();\n parser = in_row_mode;\n return;\n\n case \"body\":\n case \"caption\":\n case \"col\":\n case \"colgroup\":\n case \"html\":\n return;\n\n case \"table\":\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n case \"tr\":\n if (!stack.inTableScope(value)) return;\n in_cell_mode(ENDTAG, stack.inTableScope(\"td\") ? \"td\" : \"th\");\n parser(t, value, arg3, arg4);\n return;\n }\n break;\n }\n\n // anything else\n in_body_mode(t, value, arg3, arg4);\n }\n\n function in_select_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n if (textIncludesNUL) {\n value = value.replace(NULCHARS, \"\");\n if (value.length === 0) return;\n }\n insertText(value);\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case -1: // EOF\n in_body_mode(t, value, arg3, arg4);\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"option\":\n if (stack.top instanceof impl.HTMLOptionElement)\n in_select_mode(ENDTAG, value);\n insertHTMLElement(value, arg3);\n return;\n case \"optgroup\":\n if (stack.top instanceof impl.HTMLOptionElement)\n in_select_mode(ENDTAG, \"option\");\n if (stack.top instanceof impl.HTMLOptGroupElement)\n in_select_mode(ENDTAG, value);\n insertHTMLElement(value, arg3);\n return;\n case \"select\":\n in_select_mode(ENDTAG, value); // treat it as a close tag\n return;\n\n case \"input\":\n case \"keygen\":\n case \"textarea\":\n if (!stack.inSelectScope(\"select\")) return;\n in_select_mode(ENDTAG, \"select\");\n parser(t, value, arg3, arg4);\n return;\n\n case \"script\":\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n switch(value) {\n case \"optgroup\":\n if (stack.top instanceof impl.HTMLOptionElement &&\n stack.elements[stack.elements.length-2] instanceof\n impl.HTMLOptGroupElement) {\n in_select_mode(ENDTAG, \"option\");\n }\n if (stack.top instanceof impl.HTMLOptGroupElement)\n stack.pop();\n\n return;\n\n case \"option\":\n if (stack.top instanceof impl.HTMLOptionElement)\n stack.pop();\n return;\n\n case \"select\":\n if (!stack.inSelectScope(value)) return;\n stack.popTag(value);\n resetInsertionMode();\n return;\n\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n\n break;\n }\n\n // anything else: just ignore the token\n }\n\n function in_select_in_table_mode(t, value, arg3, arg4) {\n switch(value) {\n case \"caption\":\n case \"table\":\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n case \"tr\":\n case \"td\":\n case \"th\":\n switch(t) {\n case 2: // TAG\n in_select_in_table_mode(ENDTAG, \"select\");\n parser(t, value, arg3, arg4);\n return;\n case 3: // ENDTAG\n if (stack.inTableScope(value)) {\n in_select_in_table_mode(ENDTAG, \"select\");\n parser(t, value, arg3, arg4);\n }\n return;\n }\n }\n\n // anything else\n in_select_mode(t, value, arg3, arg4);\n }\n\n function in_template_mode(t, value, arg3, arg4) {\n function switchModeAndReprocess(mode) {\n parser = mode;\n templateInsertionModes[templateInsertionModes.length-1] = parser;\n parser(t, value, arg3, arg4);\n }\n switch(t) {\n case 1: // TEXT\n case 4: // COMMENT\n case 5: // DOCTYPE\n in_body_mode(t, value, arg3, arg4);\n return;\n case -1: // EOF\n if (!stack.contains(\"template\")) {\n stopParsing();\n } else {\n stack.popTag(\"template\");\n afe.clearToMarker();\n templateInsertionModes.pop();\n resetInsertionMode();\n parser(t, value, arg3, arg4);\n }\n return;\n case 2: // TAG\n switch(value) {\n case \"base\":\n case \"basefont\":\n case \"bgsound\":\n case \"link\":\n case \"meta\":\n case \"noframes\":\n case \"script\":\n case \"style\":\n case \"template\":\n case \"title\":\n in_head_mode(t, value, arg3, arg4);\n return;\n case \"caption\":\n case \"colgroup\":\n case \"tbody\":\n case \"tfoot\":\n case \"thead\":\n switchModeAndReprocess(in_table_mode);\n return;\n case \"col\":\n switchModeAndReprocess(in_column_group_mode);\n return;\n case \"tr\":\n switchModeAndReprocess(in_table_body_mode);\n return;\n case \"td\":\n case \"th\":\n switchModeAndReprocess(in_row_mode);\n return;\n }\n switchModeAndReprocess(in_body_mode);\n return;\n case 3: // ENDTAG\n switch(value) {\n case \"template\":\n in_head_mode(t, value, arg3, arg4);\n return;\n default:\n return;\n }\n }\n }\n\n function after_body_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n // If any non-space chars, handle below\n if (NONWS.test(value)) break;\n in_body_mode(t, value);\n return;\n case 4: // COMMENT\n // Append it to the element\n stack.elements[0]._appendChild(doc.createComment(value));\n return;\n case 5: // DOCTYPE\n return;\n case -1: // EOF\n stopParsing();\n return;\n case 2: // TAG\n if (value === \"html\") {\n in_body_mode(t, value, arg3, arg4);\n return;\n }\n break; // for any other tags\n case 3: // ENDTAG\n if (value === \"html\") {\n if (fragment) return;\n parser = after_after_body_mode;\n return;\n }\n break; // for any other tags\n }\n\n // anything else\n parser = in_body_mode;\n parser(t, value, arg3, arg4);\n }\n\n function in_frameset_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n // Ignore any non-space characters\n value = value.replace(ALLNONWS, \"\");\n if (value.length > 0) insertText(value);\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case -1: // EOF\n stopParsing();\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"frameset\":\n insertHTMLElement(value, arg3);\n return;\n case \"frame\":\n insertHTMLElement(value, arg3);\n stack.pop();\n return;\n case \"noframes\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n if (value === \"frameset\") {\n if (fragment && stack.top instanceof impl.HTMLHtmlElement)\n return;\n stack.pop();\n if (!fragment &&\n !(stack.top instanceof impl.HTMLFrameSetElement))\n parser = after_frameset_mode;\n return;\n }\n break;\n }\n\n // ignore anything else\n }\n\n function after_frameset_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n // Ignore any non-space characters\n value = value.replace(ALLNONWS, \"\");\n if (value.length > 0) insertText(value);\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n return;\n case -1: // EOF\n stopParsing();\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"noframes\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n case 3: // ENDTAG\n if (value === \"html\") {\n parser = after_after_frameset_mode;\n return;\n }\n break;\n }\n\n // ignore anything else\n }\n\n function after_after_body_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n // If any non-space chars, handle below\n if (NONWS.test(value)) break;\n in_body_mode(t, value, arg3, arg4);\n return;\n case 4: // COMMENT\n doc._appendChild(doc.createComment(value));\n return;\n case 5: // DOCTYPE\n in_body_mode(t, value, arg3, arg4);\n return;\n case -1: // EOF\n stopParsing();\n return;\n case 2: // TAG\n if (value === \"html\") {\n in_body_mode(t, value, arg3, arg4);\n return;\n }\n break;\n }\n\n // anything else\n parser = in_body_mode;\n parser(t, value, arg3, arg4);\n }\n\n function after_after_frameset_mode(t, value, arg3, arg4) {\n switch(t) {\n case 1: // TEXT\n // Ignore any non-space characters\n value = value.replace(ALLNONWS, \"\");\n if (value.length > 0)\n in_body_mode(t, value, arg3, arg4);\n return;\n case 4: // COMMENT\n doc._appendChild(doc.createComment(value));\n return;\n case 5: // DOCTYPE\n in_body_mode(t, value, arg3, arg4);\n return;\n case -1: // EOF\n stopParsing();\n return;\n case 2: // TAG\n switch(value) {\n case \"html\":\n in_body_mode(t, value, arg3, arg4);\n return;\n case \"noframes\":\n in_head_mode(t, value, arg3, arg4);\n return;\n }\n break;\n }\n\n // ignore anything else\n }\n\n\n // 13.2.5.5 The rules for parsing tokens in foreign content\n //\n // This is like one of the insertion modes above, but is\n // invoked somewhat differently when the current token is not HTML.\n // See the insertToken() function.\n function insertForeignToken(t, value, arg3, arg4) {\n // A tag is an HTML font tag if it has a color, font, or size\n // attribute. Otherwise we assume it is foreign content\n function isHTMLFont(attrs) {\n for(var i = 0, n = attrs.length; i < n; i++) {\n switch(attrs[i][0]) {\n case \"color\":\n case \"face\":\n case \"size\":\n return true;\n }\n }\n return false;\n }\n\n var current;\n\n switch(t) {\n case 1: // TEXT\n // If any non-space, non-nul characters\n if (frameset_ok && NONWSNONNUL.test(value))\n frameset_ok = false;\n if (textIncludesNUL) {\n value = value.replace(NULCHARS, \"\\uFFFD\");\n }\n insertText(value);\n return;\n case 4: // COMMENT\n insertComment(value);\n return;\n case 5: // DOCTYPE\n // ignore it\n return;\n case 2: // TAG\n switch(value) {\n case \"font\":\n if (!isHTMLFont(arg3)) break;\n /* falls through */\n case \"b\":\n case \"big\":\n case \"blockquote\":\n case \"body\":\n case \"br\":\n case \"center\":\n case \"code\":\n case \"dd\":\n case \"div\":\n case \"dl\":\n case \"dt\":\n case \"em\":\n case \"embed\":\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n case \"head\":\n case \"hr\":\n case \"i\":\n case \"img\":\n case \"li\":\n case \"listing\":\n case \"menu\":\n case \"meta\":\n case \"nobr\":\n case \"ol\":\n case \"p\":\n case \"pre\":\n case \"ruby\":\n case \"s\":\n case \"small\":\n case \"span\":\n case \"strong\":\n case \"strike\":\n case \"sub\":\n case \"sup\":\n case \"table\":\n case \"tt\":\n case \"u\":\n case \"ul\":\n case \"var\":\n if (fragment) {\n break;\n }\n do {\n stack.pop();\n current = stack.top;\n } while(current.namespaceURI !== NAMESPACE.HTML &&\n !isMathmlTextIntegrationPoint(current) &&\n !isHTMLIntegrationPoint(current));\n\n insertToken(t, value, arg3, arg4); // reprocess\n return;\n }\n\n // Any other start tag case goes here\n current = (stack.elements.length===1 && fragment) ? fragmentContext :\n stack.top;\n if (current.namespaceURI === NAMESPACE.MATHML) {\n adjustMathMLAttributes(arg3);\n }\n else if (current.namespaceURI === NAMESPACE.SVG) {\n value = adjustSVGTagName(value);\n adjustSVGAttributes(arg3);\n }\n adjustForeignAttributes(arg3);\n\n insertForeignElement(value, arg3, current.namespaceURI);\n if (arg4) { // the self-closing flag\n if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) {\n // XXX deal with SVG scripts here\n }\n stack.pop();\n }\n return;\n\n case 3: // ENDTAG\n current = stack.top;\n if (value === \"script\" &&\n current.namespaceURI === NAMESPACE.SVG &&\n current.localName === \"script\") {\n\n stack.pop();\n\n // XXX\n // Deal with SVG scripts here\n }\n else {\n // The any other end tag case\n var i = stack.elements.length-1;\n var node = stack.elements[i];\n for(;;) {\n if (node.localName.toLowerCase() === value) {\n stack.popElement(node);\n break;\n }\n node = stack.elements[--i];\n // If non-html, keep looping\n if (node.namespaceURI !== NAMESPACE.HTML)\n continue;\n // Otherwise process the end tag as html\n parser(t, value, arg3, arg4);\n break;\n }\n }\n return;\n }\n }\n\n /***\n * Finally, this is the end of the HTMLParser() factory function.\n * It returns the htmlparser object with the append() and end() methods.\n */\n\n // Sneak another method into the htmlparser object to allow us to run\n // tokenizer tests. This can be commented out in production code.\n // This is a hook for testing the tokenizer. It has to be here\n // because the tokenizer details are all hidden away within the closure.\n // It should return an array of tokens generated while parsing the\n // input string.\n htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) {\n var tokens = [];\n\n switch(initialState) {\n case \"PCDATA state\":\n tokenizer = data_state;\n break;\n case \"RCDATA state\":\n tokenizer = rcdata_state;\n break;\n case \"RAWTEXT state\":\n tokenizer = rawtext_state;\n break;\n case \"PLAINTEXT state\":\n tokenizer = plaintext_state;\n break;\n }\n\n if (lastStartTag) {\n lasttagname = lastStartTag;\n }\n\n insertToken = function(t, value, arg3, arg4) {\n flushText();\n switch(t) {\n case 1: // TEXT\n if (tokens.length > 0 &&\n tokens[tokens.length-1][0] === \"Character\") {\n tokens[tokens.length-1][1] += value;\n }\n else tokens.push([\"Character\", value]);\n break;\n case 4: // COMMENT\n tokens.push([\"Comment\", value]);\n break;\n case 5: // DOCTYPE\n tokens.push([\"DOCTYPE\", value,\n arg3 === undefined ? null : arg3,\n arg4 === undefined ? null : arg4,\n !force_quirks]);\n break;\n case 2: // TAG\n var attrs = Object.create(null);\n for(var i = 0; i < arg3.length; i++) {\n // XXX: does attribute order matter?\n var a = arg3[i];\n if (a.length === 1) {\n attrs[a[0]] = \"\";\n }\n else {\n attrs[a[0]] = a[1];\n }\n }\n var token = [\"StartTag\", value, attrs];\n if (arg4) token.push(true);\n tokens.push(token);\n break;\n case 3: // ENDTAG\n tokens.push([\"EndTag\", value]);\n break;\n case -1: // EOF\n break;\n }\n };\n\n if (!charbychar) {\n this.parse(input, true);\n }\n else {\n for(var i = 0; i < input.length; i++) {\n this.parse(input[i]);\n }\n this.parse(\"\", true);\n }\n return tokens;\n };\n\n // Return the parser object from the HTMLParser() factory function\n return htmlparser;\n}\n","\"use strict\";\nmodule.exports = DOMImplementation;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar HTMLParser = require('./HTMLParser');\nvar utils = require('./utils');\nvar xml = require('./xmlnames');\n\n// Each document must have its own instance of the domimplementation object\nfunction DOMImplementation(contextObject) {\n this.contextObject = contextObject;\n}\n\n\n// Feature/version pairs that DOMImplementation.hasFeature() returns\n// true for. It returns false for anything else.\nvar supportedFeatures = {\n 'xml': { '': true, '1.0': true, '2.0': true }, // DOM Core\n 'core': { '': true, '2.0': true }, // DOM Core\n 'html': { '': true, '1.0': true, '2.0': true} , // HTML\n 'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML\n};\n\nDOMImplementation.prototype = {\n hasFeature: function hasFeature(feature, version) {\n var f = supportedFeatures[(feature || '').toLowerCase()];\n return (f && f[version || '']) || false;\n },\n\n createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {\n if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();\n\n return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);\n },\n\n createDocument: function createDocument(namespace, qualifiedName, doctype) {\n //\n // Note that the current DOMCore spec makes it impossible to\n // create an HTML document with this function, even if the\n // namespace and doctype are propertly set. See this thread:\n // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html\n //\n var d = new Document(false, null);\n var e;\n\n if (qualifiedName)\n e = d.createElementNS(namespace, qualifiedName);\n else\n e = null;\n\n if (doctype) {\n d.appendChild(doctype);\n }\n\n if (e) d.appendChild(e);\n if (namespace === utils.NAMESPACE.HTML) {\n d._contentType = 'application/xhtml+xml';\n } else if (namespace === utils.NAMESPACE.SVG) {\n d._contentType = 'image/svg+xml';\n } else {\n d._contentType = 'application/xml';\n }\n\n return d;\n },\n\n createHTMLDocument: function createHTMLDocument(titleText) {\n var d = new Document(true, null);\n d.appendChild(new DocumentType(d, 'html'));\n var html = d.createElement('html');\n d.appendChild(html);\n var head = d.createElement('head');\n html.appendChild(head);\n if (titleText !== undefined) {\n var title = d.createElement('title');\n head.appendChild(title);\n title.appendChild(d.createTextNode(titleText));\n }\n html.appendChild(d.createElement('body'));\n d.modclock = 1; // Start tracking modifications\n return d;\n },\n\n mozSetOutputMutationHandler: function(doc, handler) {\n doc.mutationHandler = handler;\n },\n\n mozGetInputMutationHandler: function(doc) {\n utils.nyi();\n },\n\n mozHTMLParser: HTMLParser,\n};\n","\"use strict\";\nvar URL = require('./URL');\nvar URLUtils = require('./URLUtils');\n\nmodule.exports = Location;\n\nfunction Location(window, href) {\n this._window = window;\n this._href = href;\n}\n\nLocation.prototype = Object.create(URLUtils.prototype, {\n constructor: { value: Location },\n\n // Special behavior when href is set\n href: {\n get: function() { return this._href; },\n set: function(v) { this.assign(v); }\n },\n\n assign: { value: function(url) {\n // Resolve the new url against the current one\n // XXX:\n // This is not actually correct. It should be resolved against\n // the URL of the document of the script. For now, though, I only\n // support a single window and there is only one base url.\n // So this is good enough for now.\n var current = new URL(this._href);\n var newurl = current.resolve(url);\n\n // Save the new url\n this._href = newurl;\n\n // Start loading the new document!\n // XXX\n // This is just something hacked together.\n // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate\n }},\n\n replace: { value: function(url) {\n // XXX\n // Since we aren't tracking history yet, replace is the same as assign\n this.assign(url);\n }},\n\n reload: { value: function() {\n // XXX:\n // Actually, the spec is a lot more complicated than this\n this.assign(this.href);\n }},\n\n toString: { value: function() {\n return this.href;\n }}\n\n});\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid\nvar NavigatorID = Object.create(null, {\n appCodeName: { value: \"Mozilla\" },\n appName: { value: \"Netscape\" },\n appVersion: { value: \"4.0\" },\n platform: { value: \"\" },\n product: { value: \"Gecko\" },\n productSub: { value: \"20100101\" },\n userAgent: { value: \"\" },\n vendor: { value: \"\" },\n vendorSub: { value: \"\" },\n taintEnabled: { value: function() { return false; } }\n});\n\nmodule.exports = NavigatorID;\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers\nvar WindowTimers = {\n setTimeout: setTimeout,\n clearTimeout: clearTimeout,\n setInterval: setInterval,\n clearInterval: clearInterval\n};\n\nmodule.exports = WindowTimers;\n","\"use strict\";\nvar utils = require('./utils');\n\nexports = module.exports = {\n CSSStyleDeclaration: require('./CSSStyleDeclaration'),\n CharacterData: require('./CharacterData'),\n Comment: require('./Comment'),\n DOMException: require('./DOMException'),\n DOMImplementation: require('./DOMImplementation'),\n DOMTokenList: require('./DOMTokenList'),\n Document: require('./Document'),\n DocumentFragment: require('./DocumentFragment'),\n DocumentType: require('./DocumentType'),\n Element: require('./Element'),\n HTMLParser: require('./HTMLParser'),\n NamedNodeMap: require('./NamedNodeMap'),\n Node: require('./Node'),\n NodeList: require('./NodeList'),\n NodeFilter: require('./NodeFilter'),\n ProcessingInstruction: require('./ProcessingInstruction'),\n Text: require('./Text'),\n Window: require('./Window')\n};\n\nutils.merge(exports, require('./events'));\nutils.merge(exports, require('./htmlelts').elements);\nutils.merge(exports, require('./svg').elements);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar EventTarget = require('./EventTarget');\nvar Location = require('./Location');\nvar utils = require('./utils');\n\nmodule.exports = Window;\n\nfunction Window(document) {\n this.document = document || new DOMImplementation(null).createHTMLDocument(\"\");\n this.document._scripting_enabled = true;\n this.document.defaultView = this;\n this.location = new Location(this, this.document._address || 'about:blank');\n}\n\nWindow.prototype = Object.create(EventTarget.prototype, {\n console: { value: console },\n history: { value: {\n back: utils.nyi,\n forward: utils.nyi,\n go: utils.nyi\n }},\n navigator: { value: require(\"./NavigatorID\") },\n\n // Self-referential properties\n window: { get: function() { return this; }},\n self: { get: function() { return this; }},\n frames: { get: function() { return this; }},\n\n // Self-referential properties for a top-level window\n parent: { get: function() { return this; }},\n top: { get: function() { return this; }},\n\n // We don't support any other windows for now\n length: { value: 0 }, // no frames\n frameElement: { value: null }, // not part of a frame\n opener: { value: null }, // not opened by another window\n\n // The onload event handler.\n // XXX: need to support a bunch of other event types, too,\n // and have them interoperate with document.body.\n\n onload: {\n get: function() {\n return this._getEventHandler(\"load\");\n },\n set: function(v) {\n this._setEventHandler(\"load\", v);\n }\n },\n\n // XXX This is a completely broken implementation\n getComputedStyle: { value: function getComputedStyle(elt) {\n return elt.style;\n }}\n\n});\n\nutils.expose(require('./WindowTimers'), Window);\nutils.expose(require('./impl'), Window);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar HTMLParser = require('./HTMLParser');\nvar Window = require('./Window');\nvar impl = require('./impl');\n\nexports.createDOMImplementation = function() {\n return new DOMImplementation(null);\n};\n\nexports.createDocument = function(html, force) {\n // Previous API couldn't let you pass '' as a document, and that\n // yields a slightly different document than createHTMLDocument('')\n // does. The new `force` parameter lets you pass '' if you want to.\n if (html || force) {\n var parser = new HTMLParser();\n parser.parse(html || '', true);\n return parser.document();\n }\n return new DOMImplementation(null).createHTMLDocument(\"\");\n};\n\nexports.createIncrementalHTMLParser = function() {\n var parser = new HTMLParser();\n /** API for incremental parser. */\n return {\n /** Provide an additional chunk of text to be parsed. */\n write: function(s) {\n if (s.length > 0) {\n parser.parse(s, false, function() { return true; });\n }\n },\n /**\n * Signal that we are done providing input text, optionally\n * providing one last chunk as a parameter.\n */\n end: function(s) {\n parser.parse(s || '', true, function() { return true; });\n },\n /**\n * Performs a chunk of parsing work, returning at the end of\n * the next token as soon as shouldPauseFunc() returns true.\n * Returns true iff there is more work to do.\n *\n * For example:\n * ```\n * var incrParser = domino.createIncrementalHTMLParser();\n * incrParser.end('...long html document...');\n * while (true) {\n * // Pause every 10ms\n * var start = Date.now();\n * var pauseIn10 = function() { return (Date.now() - start) >= 10; };\n * if (!incrParser.process(pauseIn10)) {\n * break;\n * }\n * ...yield to other tasks, do other housekeeping, etc...\n * }\n * ```\n */\n process: function(shouldPauseFunc) {\n return parser.parse('', false, shouldPauseFunc);\n },\n /**\n * Returns the result of the incremental parse. Valid after\n * `this.end()` has been called and `this.process()` has returned\n * false.\n */\n document: function() {\n return parser.document();\n },\n }; \n};\n\nexports.createWindow = function(html, address) {\n var document = exports.createDocument(html);\n if (address !== undefined) { document._address = address; }\n return new impl.Window(document);\n};\n\nexports.impl = impl;","/**\n * @license\n * Copyright Google LLC 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\nimport domino from './bundled-domino';\n\n/**\n * Apply the necessary shims to make DOM globals (such as `Element`, `HTMLElement`, etc.) available\n * on the environment.\n */\nexport function applyShims(): void {\n // Make all Domino types available in the global env.\n // NB: Any changes here should also be done in `packages/platform-server/src/domino_adapter.ts`.\n Object.assign(globalThis, domino.impl);\n (globalThis as any)['KeyboardEvent'] = domino.impl.Event;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all initialization APIs of the platform-server package.\n */\n\nimport {applyShims} from './shims';\n\napplyShims();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/init';\n","/**\n * @license\n * Copyright Google LLC 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 file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verifcation. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["event","i","n","find","el","value","HTMLElement","HTMLUnknownElement","HTMLFormElement","SVGElement","root","URL","insertToken","doc"],"mappings":"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"}