UNPKG

@fmidev/smartmet-alert-client

Version:

Web application for viewing weather and flood alerts

1,628 lines 779 kB
import { isRef as Ea, computed as j, defineComponent as Ye, toRef as be, createElementBlock as X, openBlock as Z, createElementVNode as O, normalizeClass as we, unref as ye, toDisplayString as Ee, ref as Fe, onMounted as p2, onUnmounted as un, resolveComponent as ba, createCommentVNode as Pe, Fragment as Se, renderList as Te, withKeys as Ht, normalizeStyle as wa, createBlock as jt, createVNode as yt, createTextVNode as L2, pushScopeId as h2, popScopeId as f2, watch as F2, getCurrentInstance as sn, onBeforeUnmount as xi, onUpdated as Ca, Transition as xa, withCtx as ki, renderSlot as ka, onServerPrefetch as Sa, withDirectives as Ta, vShow as La } from "vue"; function g2(e) { return e != null && "type" in e && typeof e.type == "string"; } const G2 = { END: 35, HOME: 36, LEFT: 37, RIGHT: 39 }; function Fa() { return { KEY_CODE_END: G2.END, KEY_CODE_HOME: G2.HOME, KEY_CODE_LEFT: G2.LEFT, KEY_CODE_RIGHT: G2.RIGHT }; } var ur = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; function br(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; } var It = {}, Mt = {}; function Ba(e, t, n) { if (n === void 0 && (n = Array.prototype), e && typeof n.find == "function") return n.find.call(e, t); for (var a = 0; a < e.length; a++) if (Object.prototype.hasOwnProperty.call(e, a)) { var o = e[a]; if (t.call(void 0, o, a, e)) return o; } } function ln(e, t) { return t === void 0 && (t = Object), t && typeof t.freeze == "function" ? t.freeze(e) : e; } function Na(e, t) { if (e === null || typeof e != "object") throw new TypeError("target is not an object"); for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); return e; } var Si = ln({ /** * `text/html`, the only mime type that triggers treating an XML document as HTML. * * @see DOMParser.SupportedType.isHTML * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration * @see https://en.wikipedia.org/wiki/HTML Wikipedia * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec */ HTML: "text/html", /** * Helper method to check a mime type if it indicates an HTML document * * @param {string} [value] * @returns {boolean} * * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration * @see https://en.wikipedia.org/wiki/HTML Wikipedia * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring */ isHTML: function(e) { return e === Si.HTML; }, /** * `application/xml`, the standard mime type for XML documents. * * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303 * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia */ XML_APPLICATION: "application/xml", /** * `text/html`, an alias for `application/xml`. * * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303 * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia */ XML_TEXT: "text/xml", /** * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace, * but is parsed as an XML document. * * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec * @see https://en.wikipedia.org/wiki/XHTML Wikipedia */ XML_XHTML_APPLICATION: "application/xhtml+xml", /** * `image/svg+xml`, * * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1 * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia */ XML_SVG_IMAGE: "image/svg+xml" }), Ti = ln({ /** * The XHTML namespace. * * @see http://www.w3.org/1999/xhtml */ HTML: "http://www.w3.org/1999/xhtml", /** * Checks if `uri` equals `NAMESPACE.HTML`. * * @param {string} [uri] * * @see NAMESPACE.HTML */ isHTML: function(e) { return e === Ti.HTML; }, /** * The SVG namespace. * * @see http://www.w3.org/2000/svg */ SVG: "http://www.w3.org/2000/svg", /** * The `xml:` namespace. * * @see http://www.w3.org/XML/1998/namespace */ XML: "http://www.w3.org/XML/1998/namespace", /** * The `xmlns:` namespace * * @see https://www.w3.org/2000/xmlns/ */ XMLNS: "http://www.w3.org/2000/xmlns/" }); Mt.assign = Na; Mt.find = Ba; Mt.freeze = ln; Mt.MIME_TYPE = Si; Mt.NAMESPACE = Ti; var Li = Mt, Ft = Li.find, B2 = Li.NAMESPACE; function _a(e) { return e !== ""; } function Ra(e) { return e ? e.split(/[\t\n\f\r ]+/).filter(_a) : []; } function Oa(e, t) { return e.hasOwnProperty(t) || (e[t] = !0), e; } function Fn(e) { if (!e) return []; var t = Ra(e); return Object.keys(t.reduce(Oa, {})); } function Ia(e) { return function(t) { return e && e.indexOf(t) !== -1; }; } function M2(e, t) { for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); } function lt(e, t) { var n = e.prototype; if (!(n instanceof t)) { let a = function() { }; a.prototype = t.prototype, a = new a(), M2(n, a), e.prototype = n = a; } n.constructor != e && (typeof e != "function" && console.error("unknown Class:" + e), n.constructor = e); } var ct = {}, Dt = ct.ELEMENT_NODE = 1, u2 = ct.ATTRIBUTE_NODE = 2, fr = ct.TEXT_NODE = 3, Fi = ct.CDATA_SECTION_NODE = 4, Bi = ct.ENTITY_REFERENCE_NODE = 5, Ma = ct.ENTITY_NODE = 6, cn = ct.PROCESSING_INSTRUCTION_NODE = 7, pn = ct.COMMENT_NODE = 8, Ni = ct.DOCUMENT_NODE = 9, _i = ct.DOCUMENT_TYPE_NODE = 10, _t = ct.DOCUMENT_FRAGMENT_NODE = 11, Pa = ct.NOTATION_NODE = 12, Ke = {}, Ge = {}; Ke.INDEX_SIZE_ERR = (Ge[1] = "Index size error", 1); Ke.DOMSTRING_SIZE_ERR = (Ge[2] = "DOMString size error", 2); var ut = Ke.HIERARCHY_REQUEST_ERR = (Ge[3] = "Hierarchy request error", 3); Ke.WRONG_DOCUMENT_ERR = (Ge[4] = "Wrong document", 4); var $a = Ke.INVALID_CHARACTER_ERR = (Ge[5] = "Invalid character", 5); Ke.NO_DATA_ALLOWED_ERR = (Ge[6] = "No data allowed", 6); Ke.NO_MODIFICATION_ALLOWED_ERR = (Ge[7] = "No modification allowed", 7); var Ri = Ke.NOT_FOUND_ERR = (Ge[8] = "Not found", 8); Ke.NOT_SUPPORTED_ERR = (Ge[9] = "Not supported", 9); var Bn = Ke.INUSE_ATTRIBUTE_ERR = (Ge[10] = "Attribute in use", 10), Xt = Ke.INVALID_STATE_ERR = (Ge[11] = "Invalid state", 11); Ke.SYNTAX_ERR = (Ge[12] = "Syntax error", 12); Ke.INVALID_MODIFICATION_ERR = (Ge[13] = "Invalid modification", 13); Ke.NAMESPACE_ERR = (Ge[14] = "Invalid namespace", 14); Ke.INVALID_ACCESS_ERR = (Ge[15] = "Invalid access", 15); function _e(e, t) { if (t instanceof Error) var n = t; else n = this, Error.call(this, Ge[e]), this.message = Ge[e], Error.captureStackTrace && Error.captureStackTrace(this, _e); return n.code = e, t && (this.message = this.message + ": " + t), n; } _e.prototype = Error.prototype; M2(Ke, _e); function Rt() { } Rt.prototype = { /** * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. * @standard level1 */ length: 0, /** * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. * @standard level1 * @param index unsigned long * Index into the collection. * @return Node * The node at the indexth position in the NodeList, or null if that is not a valid index. */ item: function(e) { return e >= 0 && e < this.length ? this[e] : null; }, toString: function(e, t, n) { for (var a = !!n && !!n.requireWellFormed, o = [], s = 0; s < this.length; s++) En(this[s], o, e, t, null, a); return o.join(""); }, /** * @private * @param {function (Node):boolean} predicate * @returns {Node[]} */ filter: function(e) { return Array.prototype.filter.call(this, e); }, /** * @private * @param {Node} item * @returns {number} */ indexOf: function(e) { return Array.prototype.indexOf.call(this, e); } }; function s2(e, t) { this._node = e, this._refresh = t, hn(this); } function hn(e) { var t = e._node._inc || e._node.ownerDocument._inc; if (e._inc !== t) { var n = e._refresh(e._node); if (Gi(e, "length", n.length), !e.$$length || n.length < e.$$length) for (var a = n.length; a in e; a++) Object.prototype.hasOwnProperty.call(e, a) && delete e[a]; M2(n, e), e._inc = t; } } s2.prototype.item = function(e) { return hn(this), this[e] || null; }; lt(s2, Rt); function dr() { } function Oi(e, t) { for (var n = e.length; n--; ) if (e[n] === t) return n; } function Nn(e, t, n, a) { if (a ? t[Oi(t, a)] = n : t[t.length++] = n, e) { n.ownerElement = e; var o = e.ownerDocument; o && (a && Pi(o, e, a), qa(o, e, n)); } } function _n(e, t, n) { var a = Oi(t, n); if (a >= 0) { for (var o = t.length - 1; a < o; ) t[a] = t[++a]; if (t.length = o, e) { var s = e.ownerDocument; s && (Pi(s, e, n), n.ownerElement = null); } } else throw new _e(Ri, new Error(e.tagName + "@" + n)); } dr.prototype = { length: 0, item: Rt.prototype.item, getNamedItem: function(e) { for (var t = this.length; t--; ) { var n = this[t]; if (n.nodeName == e) return n; } }, setNamedItem: function(e) { var t = e.ownerElement; if (t && t != this._ownerElement) throw new _e(Bn); var n = this.getNamedItem(e.nodeName); return Nn(this._ownerElement, this, e, n), n; }, /* returns Node */ setNamedItemNS: function(e) { var t = e.ownerElement, n; if (t && t != this._ownerElement) throw new _e(Bn); return n = this.getNamedItemNS(e.namespaceURI, e.localName), Nn(this._ownerElement, this, e, n), n; }, /* returns Node */ removeNamedItem: function(e) { var t = this.getNamedItem(e); return _n(this._ownerElement, this, t), t; }, // raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR //for level2 removeNamedItemNS: function(e, t) { var n = this.getNamedItemNS(e, t); return _n(this._ownerElement, this, n), n; }, getNamedItemNS: function(e, t) { for (var n = this.length; n--; ) { var a = this[n]; if (a.localName == t && a.namespaceURI == e) return a; } return null; } }; function Ii() { } Ii.prototype = { /** * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported. * The different implementations fairly diverged in what kind of features were reported. * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use. * * @deprecated It is deprecated and modern browsers return true in all cases. * * @param {string} feature * @param {string} [version] * @returns {boolean} always true * * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard */ hasFeature: function(e, t) { return !0; }, /** * Creates an XML Document object of the specified type with its document element. * * __It behaves slightly different from the description in the living standard__: * - There is no interface/class `XMLDocument`, it returns a `Document` instance. * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared. * - this implementation is not validating names or qualified names * (when parsing XML strings, the SAX parser takes care of that) * * @param {string|null} namespaceURI * @param {string} qualifiedName * @param {DocumentType=null} doctype * @returns {Document} * * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial) * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core * * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names */ createDocument: function(e, t, n) { var a = new P2(); if (a.implementation = this, a.childNodes = new Rt(), a.doctype = n || null, n && a.appendChild(n), t) { var o = a.createElementNS(e, t); a.appendChild(o); } return a; }, /** * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`. * * __This implementation differs from the specification:__ * - this implementation is not validating names or qualified names * (when parsing XML strings, the SAX parser takes care of that) * * Note: `internalSubset` can only be introduced via a direct property write to `node.internalSubset` after creation. * Creation-time validation of `publicId`, `systemId` is not enforced. * The serializer-level check covers all mutation vectors, including direct property writes. * `internalSubset` is only serialized as `[ ... ]` when both `publicId` and `systemId` are * absent (empty or `'.'`) — if either external identifier is present, `internalSubset` is * silently omitted from the serialized output. * * @param {string} qualifiedName * @param {string} [publicId] * The external subset public identifier. Stored verbatim including surrounding quotes. * When serialized with `requireWellFormed: true` (via the 4th-parameter options object), * throws `DOMException` with code `INVALID_STATE_ERR` if the value is non-empty and does * not match the XML `PubidLiteral` production (W3C DOM Parsing §3.2.1.3; XML 1.0 [12]). * @param {string} [systemId] * The external subset system identifier. Stored verbatim including surrounding quotes. * When serialized with `requireWellFormed: true`, throws `DOMException` with code * `INVALID_STATE_ERR` if the value is non-empty and does not match the XML `SystemLiteral` * production (W3C DOM Parsing §3.2.1.3; XML 1.0 [11]). * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation * or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()` * * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard * * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names */ createDocumentType: function(e, t, n) { var a = new wr(); return a.name = e, a.nodeName = e, a.publicId = t || "", a.systemId = n || "", a; } }; function Be() { } Be.prototype = { firstChild: null, lastChild: null, previousSibling: null, nextSibling: null, attributes: null, parentNode: null, childNodes: null, ownerDocument: null, nodeValue: null, namespaceURI: null, prefix: null, localName: null, // Modified in DOM Level 2: insertBefore: function(e, t) { return mr(this, e, t); }, replaceChild: function(e, t) { mr(this, e, t, qi), t && this.removeChild(t); }, removeChild: function(e) { return $i(this, e); }, appendChild: function(e) { return this.insertBefore(e, null); }, hasChildNodes: function() { return this.firstChild != null; }, cloneNode: function(e) { return ji(this.ownerDocument || this, this, e); }, // Modified in DOM Level 2: /** * Puts the specified node and all of its subtree into a "normalized" form. In a normalized * subtree, no text nodes in the subtree are empty and there are no adjacent text nodes. * * Specifically, this method merges any adjacent text nodes (i.e., nodes for which `nodeType` * is `TEXT_NODE`) into a single node with the combined data. It also removes any empty text * nodes. * * This method iteratively traverses all child nodes to normalize all descendant nodes within * the subtree. * * @throws {DOMException} * May throw a DOMException if operations within removeChild or appendData (which are * potentially invoked in this method) do not meet their specific constraints. * @see {@link Node.removeChild} * @see {@link CharacterData.appendData} * @see ../docs/walk-dom.md. */ normalize: function() { je(this, null, { enter: function(e) { for (var t = e.firstChild; t; ) { var n = t.nextSibling; n !== null && n.nodeType === fr && t.nodeType === fr ? (e.removeChild(n), t.appendData(n.data)) : t = n; } return !0; } }); }, // Introduced in DOM Level 2: isSupported: function(e, t) { return this.ownerDocument.implementation.hasFeature(e, t); }, // Introduced in DOM Level 2: hasAttributes: function() { return this.attributes.length > 0; }, /** * Look up the prefix associated to the given namespace URI, starting from this node. * **The default namespace declarations are ignored by this method.** * See Namespace Prefix Lookup for details on the algorithm used by this method. * * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._ * * @param {string | null} namespaceURI * @returns {string | null} * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix * @see https://github.com/xmldom/xmldom/issues/322 */ lookupPrefix: function(e) { for (var t = this; t; ) { var n = t._nsMap; if (n) { for (var a in n) if (Object.prototype.hasOwnProperty.call(n, a) && n[a] === e) return a; } t = t.nodeType == u2 ? t.ownerDocument : t.parentNode; } return null; }, // Introduced in DOM Level 3: lookupNamespaceURI: function(e) { for (var t = this; t; ) { var n = t._nsMap; if (n && Object.prototype.hasOwnProperty.call(n, e)) return n[e]; t = t.nodeType == u2 ? t.ownerDocument : t.parentNode; } return null; }, // Introduced in DOM Level 3: isDefaultNamespace: function(e) { var t = this.lookupPrefix(e); return t == null; } }; function Mi(e) { return e == "<" && "&lt;" || e == ">" && "&gt;" || e == "&" && "&amp;" || e == '"' && "&quot;" || "&#" + e.charCodeAt() + ";"; } M2(ct, Be); M2(ct, Be.prototype); function gr(e, t) { return je(e, null, { enter: function(n) { return t(n) ? je.STOP : !0; } }) === je.STOP; } function je(e, t, n) { for (var a = [{ node: e, context: t, phase: je.ENTER }]; a.length > 0; ) { var o = a.pop(); if (o.phase === je.ENTER) { var s = n.enter(o.node, o.context); if (s === je.STOP) return je.STOP; if (a.push({ node: o.node, context: s, phase: je.EXIT }), s == null) continue; for (var u = o.node.lastChild; u; ) a.push({ node: u, context: s, phase: je.ENTER }), u = u.previousSibling; } else n.exit && n.exit(o.node, o.context); } } je.STOP = Symbol("walkDOM.STOP"); je.ENTER = 0; je.EXIT = 1; function P2() { this.ownerDocument = this; } function qa(e, t, n) { e && e._inc++; var a = n.namespaceURI; a === B2.XMLNS && (t._nsMap[n.prefix ? n.localName : ""] = n.value); } function Pi(e, t, n, a) { e && e._inc++; var o = n.namespaceURI; o === B2.XMLNS && delete t._nsMap[n.prefix ? n.localName : ""]; } function dn(e, t, n) { if (e && e._inc) { e._inc++; var a = t.childNodes; if (n) a[a.length++] = n; else { for (var o = t.firstChild, s = 0; o; ) a[s++] = o, o = o.nextSibling; a.length = s, delete a[a.length]; } } } function $i(e, t) { var n = t.previousSibling, a = t.nextSibling; return n ? n.nextSibling = a : e.firstChild = a, a ? a.previousSibling = n : e.lastChild = n, t.parentNode = null, t.previousSibling = null, t.nextSibling = null, dn(e.ownerDocument, e), t; } function Wa(e) { return e && (e.nodeType === Be.DOCUMENT_NODE || e.nodeType === Be.DOCUMENT_FRAGMENT_NODE || e.nodeType === Be.ELEMENT_NODE); } function Ua(e) { return e && (Bt(e) || gn(e) || Ot(e) || e.nodeType === Be.DOCUMENT_FRAGMENT_NODE || e.nodeType === Be.COMMENT_NODE || e.nodeType === Be.PROCESSING_INSTRUCTION_NODE); } function Ot(e) { return e && e.nodeType === Be.DOCUMENT_TYPE_NODE; } function Bt(e) { return e && e.nodeType === Be.ELEMENT_NODE; } function gn(e) { return e && e.nodeType === Be.TEXT_NODE; } function Rn(e, t) { var n = e.childNodes || []; if (Ft(n, Bt) || Ot(t)) return !1; var a = Ft(n, Ot); return !(t && a && n.indexOf(a) > n.indexOf(t)); } function On(e, t) { var n = e.childNodes || []; function a(s) { return Bt(s) && s !== t; } if (Ft(n, a)) return !1; var o = Ft(n, Ot); return !(t && o && n.indexOf(o) > n.indexOf(t)); } function Va(e, t, n) { if (!Wa(e)) throw new _e(ut, "Unexpected parent node type " + e.nodeType); if (n && n.parentNode !== e) throw new _e(Ri, "child not in parent"); if ( // 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a "HierarchyRequestError" DOMException. !Ua(t) || // 5. If either `node` is a Text node and `parent` is a document, // the sax parser currently adds top level text nodes, this will be fixed in 0.9.0 // || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE) // or `node` is a doctype and `parent` is not a document, then throw a "HierarchyRequestError" DOMException. Ot(t) && e.nodeType !== Be.DOCUMENT_NODE ) throw new _e( ut, "Unexpected node type " + t.nodeType + " for parent node type " + e.nodeType ); } function Ha(e, t, n) { var a = e.childNodes || [], o = t.childNodes || []; if (t.nodeType === Be.DOCUMENT_FRAGMENT_NODE) { var s = o.filter(Bt); if (s.length > 1 || Ft(o, gn)) throw new _e(ut, "More than one element or text in fragment"); if (s.length === 1 && !Rn(e, n)) throw new _e(ut, "Element in fragment can not be inserted before doctype"); } if (Bt(t) && !Rn(e, n)) throw new _e(ut, "Only one element can be added and only after doctype"); if (Ot(t)) { if (Ft(a, Ot)) throw new _e(ut, "Only one doctype is allowed"); var u = Ft(a, Bt); if (n && a.indexOf(u) < a.indexOf(n)) throw new _e(ut, "Doctype can only be inserted before an element"); if (!n && u) throw new _e(ut, "Doctype can not be appended since element is present"); } } function qi(e, t, n) { var a = e.childNodes || [], o = t.childNodes || []; if (t.nodeType === Be.DOCUMENT_FRAGMENT_NODE) { var s = o.filter(Bt); if (s.length > 1 || Ft(o, gn)) throw new _e(ut, "More than one element or text in fragment"); if (s.length === 1 && !On(e, n)) throw new _e(ut, "Element in fragment can not be inserted before doctype"); } if (Bt(t) && !On(e, n)) throw new _e(ut, "Only one element can be added and only after doctype"); if (Ot(t)) { if (Ft(a, function(p) { return Ot(p) && p !== n; })) throw new _e(ut, "Only one doctype is allowed"); var u = Ft(a, Bt); if (n && a.indexOf(u) < a.indexOf(n)) throw new _e(ut, "Doctype can only be inserted before an element"); } } function mr(e, t, n, a) { Va(e, t, n), e.nodeType === Be.DOCUMENT_NODE && (a || Ha)(e, t, n); var o = t.parentNode; if (o && o.removeChild(t), t.nodeType === _t) { var s = t.firstChild; if (s == null) return t; var u = t.lastChild; } else s = u = t; var l = n ? n.previousSibling : e.lastChild; s.previousSibling = l, u.nextSibling = n, l ? l.nextSibling = s : e.firstChild = s, n == null ? e.lastChild = u : n.previousSibling = u; do { s.parentNode = e; var p = e.ownerDocument || e; N2(s, p); } while (s !== u && (s = s.nextSibling)); return dn(e.ownerDocument || e, e), t.nodeType == _t && (t.firstChild = t.lastChild = null), t; } function N2(e, t) { if (e.ownerDocument !== t) { if (e.ownerDocument = t, e.nodeType === Dt && e.attributes) for (var n = 0; n < e.attributes.length; n++) { var a = e.attributes.item(n); a && (a.ownerDocument = t); } for (var o = e.firstChild; o; ) N2(o, t), o = o.nextSibling; } } function ja(e, t) { t.parentNode && t.parentNode.removeChild(t), t.parentNode = e, t.previousSibling = e.lastChild, t.nextSibling = null, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, e.lastChild = t, dn(e.ownerDocument, e, t); var n = e.ownerDocument || e; return N2(t, n), t; } P2.prototype = { //implementation : null, nodeName: "#document", nodeType: Ni, /** * The DocumentType node of the document. * * @readonly * @type DocumentType */ doctype: null, documentElement: null, _inc: 1, insertBefore: function(e, t) { if (e.nodeType == _t) { for (var n = e.firstChild; n; ) { var a = n.nextSibling; this.insertBefore(n, t), n = a; } return e; } return mr(this, e, t), N2(e, this), this.documentElement === null && e.nodeType === Dt && (this.documentElement = e), e; }, removeChild: function(e) { return this.documentElement == e && (this.documentElement = null), $i(this, e); }, replaceChild: function(e, t) { mr(this, e, t, qi), N2(e, this), t && this.removeChild(t), Bt(e) && (this.documentElement = e); }, // Introduced in DOM Level 2: importNode: function(e, t) { return Ga(this, e, t); }, // Introduced in DOM Level 2: getElementById: function(e) { var t = null; return gr(this.documentElement, function(n) { if (n.nodeType == Dt && n.getAttribute("id") == e) return t = n, !0; }), t; }, /** * The `getElementsByClassName` method of `Document` interface returns an array-like object * of all child elements which have **all** of the given class name(s). * * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters. * * * Warning: This is a live LiveNodeList. * Changes in the DOM will reflect in the array as the changes occur. * If an element selected by this array no longer qualifies for the selector, * it will automatically be removed. Be aware of this for iteration purposes. * * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace * * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname */ getElementsByClassName: function(e) { var t = Fn(e); return new s2(this, function(n) { var a = []; return t.length > 0 && gr(n.documentElement, function(o) { if (o !== n && o.nodeType === Dt) { var s = o.getAttribute("class"); if (s) { var u = e === s; if (!u) { var l = Fn(s); u = t.every(Ia(l)); } u && a.push(o); } } }), a; }); }, //document factory method: createElement: function(e) { var t = new Yt(); t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.localName = e, t.childNodes = new Rt(); var n = t.attributes = new dr(); return n._ownerElement = t, t; }, createDocumentFragment: function() { var e = new Cr(); return e.ownerDocument = this, e.childNodes = new Rt(), e; }, createTextNode: function(e) { var t = new mn(); return t.ownerDocument = this, t.appendData(e), t; }, createComment: function(e) { var t = new vn(); return t.ownerDocument = this, t.appendData(e), t; }, /** * Returns a new CDATASection node whose data is `data`. * * __This implementation differs from the specification:__ * - calling this method on an HTML document does not throw `NotSupportedError`. * * @param {string} data * @returns {CDATASection} * @throws DOMException with code `INVALID_CHARACTER_ERR` if `data` contains `"]]>"`. * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/createCDATASection * @see https://dom.spec.whatwg.org/#dom-document-createcdatasection */ createCDATASection: function(e) { if (e.indexOf("]]>") !== -1) throw new _e($a, 'data contains "]]>"'); var t = new yn(); return t.ownerDocument = this, t.appendData(e), t; }, /** * Returns a ProcessingInstruction node whose target is target and data is data. * * __This implementation differs from the specification:__ * - it does not do any input validation on the arguments and doesn't throw "InvalidCharacterError". * * Note: When the resulting document is serialized with `requireWellFormed: true`, the * serializer throws with code `INVALID_STATE_ERR` if `.data` contains `?>` (W3C DOM Parsing * §3.2.1.7). Without that option the data is emitted verbatim. * * @param {string} target * @param {string} data * @returns {ProcessingInstruction} * @see https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction * @see https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction * @see https://www.w3.org/TR/DOM-Parsing/#dfn-concept-serialize-xml §3.2.1.7 */ createProcessingInstruction: function(e, t) { var n = new An(); return n.ownerDocument = this, n.tagName = n.nodeName = n.target = e, n.nodeValue = n.data = t, n; }, createAttribute: function(e) { var t = new vr(); return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t; }, createEntityReference: function(e) { var t = new Dn(); return t.ownerDocument = this, t.nodeName = e, t; }, // Introduced in DOM Level 2: createElementNS: function(e, t) { var n = new Yt(), a = t.split(":"), o = n.attributes = new dr(); return n.childNodes = new Rt(), n.ownerDocument = this, n.nodeName = t, n.tagName = t, n.namespaceURI = e, a.length == 2 ? (n.prefix = a[0], n.localName = a[1]) : n.localName = t, o._ownerElement = n, n; }, // Introduced in DOM Level 2: createAttributeNS: function(e, t) { var n = new vr(), a = t.split(":"); return n.ownerDocument = this, n.nodeName = t, n.name = t, n.namespaceURI = e, n.specified = !0, a.length == 2 ? (n.prefix = a[0], n.localName = a[1]) : n.localName = t, n; } }; lt(P2, Be); function Yt() { this._nsMap = {}; } Yt.prototype = { nodeType: Dt, hasAttribute: function(e) { return this.getAttributeNode(e) != null; }, getAttribute: function(e) { var t = this.getAttributeNode(e); return t && t.value || ""; }, getAttributeNode: function(e) { return this.attributes.getNamedItem(e); }, setAttribute: function(e, t) { var n = this.ownerDocument.createAttribute(e); n.value = n.nodeValue = "" + t, this.setAttributeNode(n); }, removeAttribute: function(e) { var t = this.getAttributeNode(e); t && this.removeAttributeNode(t); }, //four real opeartion method appendChild: function(e) { return e.nodeType === _t ? this.insertBefore(e, null) : ja(this, e); }, setAttributeNode: function(e) { return this.attributes.setNamedItem(e); }, setAttributeNodeNS: function(e) { return this.attributes.setNamedItemNS(e); }, removeAttributeNode: function(e) { return this.attributes.removeNamedItem(e.nodeName); }, //get real attribute name,and remove it by removeAttributeNode removeAttributeNS: function(e, t) { var n = this.getAttributeNodeNS(e, t); n && this.removeAttributeNode(n); }, hasAttributeNS: function(e, t) { return this.getAttributeNodeNS(e, t) != null; }, getAttributeNS: function(e, t) { var n = this.getAttributeNodeNS(e, t); return n && n.value || ""; }, setAttributeNS: function(e, t, n) { var a = this.ownerDocument.createAttributeNS(e, t); a.value = a.nodeValue = "" + n, this.setAttributeNode(a); }, getAttributeNodeNS: function(e, t) { return this.attributes.getNamedItemNS(e, t); }, getElementsByTagName: function(e) { return new s2(this, function(t) { var n = []; return gr(t, function(a) { a !== t && a.nodeType == Dt && (e === "*" || a.tagName == e) && n.push(a); }), n; }); }, getElementsByTagNameNS: function(e, t) { return new s2(this, function(n) { var a = []; return gr(n, function(o) { o !== n && o.nodeType === Dt && (e === "*" || o.namespaceURI === e) && (t === "*" || o.localName == t) && a.push(o); }), a; }); } }; P2.prototype.getElementsByTagName = Yt.prototype.getElementsByTagName; P2.prototype.getElementsByTagNameNS = Yt.prototype.getElementsByTagNameNS; lt(Yt, Be); function vr() { } vr.prototype.nodeType = u2; lt(vr, Be); function $2() { } $2.prototype = { data: "", substringData: function(e, t) { return this.data.substring(e, e + t); }, appendData: function(e) { e = this.data + e, this.nodeValue = this.data = e, this.length = e.length; }, insertData: function(e, t) { this.replaceData(e, 0, t); }, appendChild: function(e) { throw new Error(Ge[ut]); }, deleteData: function(e, t) { this.replaceData(e, t, ""); }, replaceData: function(e, t, n) { var a = this.data.substring(0, e), o = this.data.substring(e + t); n = a + n + o, this.nodeValue = this.data = n, this.length = n.length; } }; lt($2, Be); function mn() { } mn.prototype = { nodeName: "#text", nodeType: fr, splitText: function(e) { var t = this.data, n = t.substring(e); t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length; var a = this.ownerDocument.createTextNode(n); return this.parentNode && this.parentNode.insertBefore(a, this.nextSibling), a; } }; lt(mn, $2); function vn() { } vn.prototype = { nodeName: "#comment", nodeType: pn }; lt(vn, $2); function yn() { } yn.prototype = { nodeName: "#cdata-section", nodeType: Fi }; lt(yn, $2); function wr() { } wr.prototype.nodeType = _i; lt(wr, Be); function Wi() { } Wi.prototype.nodeType = Pa; lt(Wi, Be); function Ui() { } Ui.prototype.nodeType = Ma; lt(Ui, Be); function Dn() { } Dn.prototype.nodeType = Bi; lt(Dn, Be); function Cr() { } Cr.prototype.nodeName = "#document-fragment"; Cr.prototype.nodeType = _t; lt(Cr, Be); function An() { } An.prototype.nodeType = cn; lt(An, Be); function Vi() { } Vi.prototype.serializeToString = function(e, t, n, a) { return Hi.call(e, t, n, a); }; Be.prototype.toString = Hi; function Hi(e, t, n) { var a = !!n && !!n.requireWellFormed, o = [], s = this.nodeType == 9 && this.documentElement || this, u = s.prefix, l = s.namespaceURI; if (l && u == null) { var u = s.lookupPrefix(l); if (u == null) var p = [ { namespace: l, prefix: null } //{namespace:uri,prefix:''} ]; } return En(this, o, e, t, p, a), o.join(""); } function In(e, t, n) { var a = e.prefix || "", o = e.namespaceURI; if (!o || a === "xml" && o === B2.XML || o === B2.XMLNS) return !1; for (var s = n.length; s--; ) { var u = n[s]; if (u.prefix === a) return u.namespace !== o; } return !0; } function z2(e, t, n) { e.push(" ", t, '="', n.replace(/[<>&"\t\n\r]/g, Mi), '"'); } function En(e, t, n, a, o, s) { o || (o = []), je(e, { ns: o, isHTML: n }, { enter: function(u, l) { var p = l.ns, f = l.isHTML; if (a) if (u = a(u), u) { if (typeof u == "string") return t.push(u), null; } else return null; switch (u.nodeType) { case Dt: var d = u.attributes, D = d.length, C = u.tagName; f = B2.isHTML(u.namespaceURI) || f; var F = C; if (!f && !u.prefix && u.namespaceURI) { for (var x, w = 0; w < d.length; w++) if (d.item(w).name === "xmlns") { x = d.item(w).value; break; } if (!x) for (var L = p.length - 1; L >= 0; L--) { var $ = p[L]; if ($.prefix === "" && $.namespace === u.namespaceURI) { x = $.namespace; break; } } if (x !== u.namespaceURI) for (var L = p.length - 1; L >= 0; L--) { var $ = p[L]; if ($.namespace === u.namespaceURI) { $.prefix && (F = $.prefix + ":" + C); break; } } } t.push("<", F); for (var R = p.slice(), m = 0; m < D; m++) { var A = d.item(m); A.prefix == "xmlns" ? R.push({ prefix: A.localName, namespace: A.value }) : A.nodeName == "xmlns" && R.push({ prefix: "", namespace: A.value }); } for (var m = 0; m < D; m++) { var A = d.item(m); if (In(A, f, R)) { var b = A.prefix || "", v = A.namespaceURI; z2(t, b ? "xmlns:" + b : "xmlns", v), R.push({ prefix: b, namespace: v }); } var h = a ? a(A) : A; h && (typeof h == "string" ? t.push(h) : z2(t, h.name, h.value)); } if (C === F && In(u, f, R)) { var k = u.prefix || "", v = u.namespaceURI; z2(t, k ? "xmlns:" + k : "xmlns", v), R.push({ prefix: k, namespace: v }); } var _ = u.firstChild; if (_ || f && !/^(?:meta|link|img|br|hr|input)$/i.test(C)) { if (t.push(">"), f && /^script$/i.test(C)) { for (; _; ) _.data ? t.push(_.data) : En(_, t, f, a, R.slice(), s), _ = _.nextSibling; return t.push("</", C, ">"), null; } return { ns: R, isHTML: f, tag: F }; } else return t.push("/>"), null; case Ni: case _t: return { ns: p.slice(), isHTML: f, tag: null }; case u2: return z2(t, u.name, u.value), null; case fr: return t.push(u.data.replace(/[<&>]/g, Mi)), null; case Fi: if (s && u.data.indexOf("]]>") !== -1) throw new _e(Xt, 'The CDATASection data contains "]]>"'); return t.push("<![CDATA[", u.data.replace(/]]>/g, "]]]]><![CDATA[>"), "]]>"), null; case pn: if (s && u.data.indexOf("-->") !== -1) throw new _e(Xt, 'The comment node data contains "-->"'); return t.push("<!--", u.data, "-->"), null; case _i: if (s) { if (u.publicId && !/^("[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%']*"|'[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%'"]*')$/.test(u.publicId)) throw new _e(Xt, "DocumentType publicId is not a valid PubidLiteral"); if (u.systemId && !/^("[^"]*"|'[^']*')$/.test(u.systemId)) throw new _e(Xt, "DocumentType systemId is not a valid SystemLiteral"); if (u.internalSubset && u.internalSubset.indexOf("]>") !== -1) throw new _e(Xt, 'DocumentType internalSubset contains "]>"'); } var I = u.publicId, M = u.systemId; if (t.push("<!DOCTYPE ", u.name), I) t.push(" PUBLIC ", I), M && M != "." && t.push(" ", M), t.push(">"); else if (M && M != ".") t.push(" SYSTEM ", M, ">"); else { var J = u.internalSubset; J && t.push(" [", J, "]"), t.push(">"); } return null; case cn: if (s && u.data.indexOf("?>") !== -1) throw new _e(Xt, 'The ProcessingInstruction data contains "?>"'); return t.push("<?", u.target, " ", u.data, "?>"), null; case Bi: return t.push("&", u.nodeName, ";"), null; default: return t.push("??", u.nodeName), null; } }, exit: function(u, l) { l && l.tag && t.push("</", l.tag, ">"); } }); } function Ga(e, t, n) { var a; return je(t, null, { enter: function(o, s) { var u = o.cloneNode(!1); u.ownerDocument = e, u.parentNode = null, s === null ? a = u : s.appendChild(u); var l = o.nodeType === u2 || n; return l ? u : null; } }), a; } function ji(e, t, n) { var a; return je(t, null, { enter: function(o, s) { var u = new o.constructor(); for (var l in o) if (Object.prototype.hasOwnProperty.call(o, l)) { var p = o[l]; typeof p != "object" && p != u[l] && (u[l] = p); } o.childNodes && (u.childNodes = new Rt()), u.ownerDocument = e; var f = n; switch (u.nodeType) { case Dt: var d = o.attributes, D = u.attributes = new dr(), C = d.length; D._ownerElement = u; for (var F = 0; F < C; F++) u.setAttributeNode(ji(e, d.item(F), !0)); break; case u2: f = !0; } return s !== null ? s.appendChild(u) : a = u, f ? u : null; } }), a; } function Gi(e, t, n) { e[t] = n; } try { Object.defineProperty && (Object.defineProperty(s2.prototype, "length", { get: function() { return hn(this), this.$$length; } }), Object.defineProperty(Be.prototype, "textContent", { get: function() { if (this.nodeType === Dt || this.nodeType === _t) { var e = []; return je(this, null, { enter: function(t) { if (t.nodeType === Dt || t.nodeType === _t) return !0; if (t.nodeType === cn || t.nodeType === pn) return null; e.push(t.nodeValue); } }), e.join(""); } return this.nodeValue; }, set: function(e) { switch (this.nodeType) { case Dt: case _t: for (; this.firstChild; ) this.removeChild(this.firstChild); (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e)); break; default: this.data = e, this.value = e, this.nodeValue = e; } } }), Gi = function(e, t, n) { e["$$" + t] = n; }); } catch { } It.DocumentType = wr; It.DOMException = _e; It.DOMImplementation = Ii; It.Element = Yt; It.Node = Be; It.NodeList = Rt; It.walkDOM = je; It.XMLSerializer = Vi; var xr = {}, zi = {}; (function(e) { var t = Mt.freeze; e.XML_ENTITIES = t({ amp: "&", apos: "'", gt: ">", lt: "<", quot: '"' }), e.HTML_ENTITIES = t({ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾̳", Acirc: "Â", acirc: "â", acute: "´", Acy: "А", acy: "а", AElig: "Æ", aelig: "æ", af: "⁡", Afr: "𝔄", afr: "𝔞", Agrave: "À", agrave: "à", alefsym: "ℵ", aleph: "ℵ", Alpha: "Α", alpha: "α", Amacr: "Ā", amacr: "ā", amalg: "⨿", AMP: "&", amp: "&", And: "⩓", and: "∧", andand: "⩕", andd: "⩜", andslope: "⩘", andv: "⩚", ang: "∠", ange: "⦤", angle: "∠", angmsd: "∡", angmsdaa: "⦨", angmsdab: "⦩", angmsdac: "⦪", angmsdad: "⦫", angmsdae: "⦬", angmsdaf: "⦭", angmsdag: "⦮", angmsdah: "⦯", angrt: "∟", angrtvb: "⊾", angrtvbd: "⦝", angsph: "∢", angst: "Å", angzarr: "⍼", Aogon: "Ą", aogon: "ą", Aopf: "𝔸", aopf: "𝕒", ap: "≈", apacir: "⩯", apE: "⩰", ape: "≊", apid: "≋", apos: "'", ApplyFunction: "⁡", approx: "≈", approxeq: "≊", Aring: "Å", aring: "å", Ascr: "𝒜", ascr: "𝒶", Assign: "≔", ast: "*", asymp: "≈", asympeq: "≍", Atilde: "Ã", atilde: "ã", Auml: "Ä", auml: "ä", awconint: "∳", awint: "⨑", backcong: "≌", backepsilon: "϶", backprime: "‵", backsim: "∽", backsimeq: "⋍", Backslash: "∖", Barv: "⫧", barvee: "⊽", Barwed: "⌆", barwed: "⌅", barwedge: "⌅", bbrk: "⎵", bbrktbrk: "⎶", bcong: "≌", Bcy: "Б", bcy: "б", bdquo: "„", becaus: "∵", Because: "∵", because: "∵", bemptyv: "⦰", bepsi: "϶", bernou: "ℬ", Bernoullis: "ℬ", Beta: "Β", beta: "β", beth: "ℶ", between: "≬", Bfr: "𝔅", bfr: "𝔟", bigcap: "⋂", bigcirc: "◯", bigcup: "⋃", bigodot: "⨀", bigoplus: "⨁", bigotimes: "⨂", bigsqcup: "⨆", bigstar: "★", bigtriangledown: "▽", bigtriangleup: "△", biguplus: "⨄", bigvee: "⋁", bigwedge: "⋀", bkarow: "⤍", blacklozenge: "⧫", blacksquare: "▪", blacktriangle: "▴", blacktriangledown: "▾", blacktriangleleft: "◂", blacktriangleright: "▸", blank: "␣", blk12: "▒", blk14: "░", blk34: "▓", block: "█", bne: "=⃥", bnequiv: "≡⃥", bNot: "⫭", bnot: "⌐", Bopf: "𝔹", bopf: "𝕓", bot: "⊥", bottom: "⊥", bowtie: "⋈", boxbox: "⧉", boxDL: "╗", boxDl: "╖", boxdL: "╕", boxdl: "┐", boxDR: "╔", boxDr: "╓", boxdR: "╒", boxdr: "┌", boxH: "═", boxh: "─", boxHD: "╦", boxHd: "╤", boxhD: "╥", boxhd: "┬", boxHU: "╩", boxHu: "╧", boxhU: "╨", boxhu: "┴", boxminus: "⊟", boxplus: "⊞", boxtimes: "⊠", boxUL: "╝", boxUl: "╜", boxuL: "╛", boxul: "┘", boxUR: "╚", boxUr: "╙", boxuR: "╘", boxur: "└", boxV: "║", boxv: "│", boxVH: "╬", boxVh: "╫", boxvH: "╪", boxvh: "┼", boxVL: "╣", boxVl: "╢", boxvL: "╡", boxvl: "┤", boxVR: "╠", boxVr: "╟", boxvR: "╞", boxvr: "├", bprime: "‵", Breve: "˘", breve: "˘", brvbar: "¦", Bscr: "ℬ", bscr: "𝒷", bsemi: "⁏", bsim: "∽", bsime: "⋍", bsol: "\\", bsolb: "⧅", bsolhsub: "⟈", bull: "•", bullet: "•", bump: "≎", bumpE: "⪮", bumpe: "≏", Bumpeq: "≎", bumpeq: "≏", Cacute: "Ć", cacute: "ć", Cap: "⋒", cap: "∩", capand: "⩄", capbrcup: "⩉", capcap: "⩋", capcup: "⩇", capdot: "⩀", CapitalDifferentialD: "ⅅ", caps: "∩︀", caret: "⁁", caron: "ˇ", Cayleys: "ℭ", ccaps: "⩍", Ccaron: "Č", ccaron: "č", Ccedil: "Ç", ccedil: "ç", Ccirc: "Ĉ", ccirc: "ĉ", Cconint: "∰", ccups: "⩌", ccupssm: "⩐", Cdot: "Ċ", cdot: "ċ", cedil: "¸", Cedilla: "¸", cemptyv: "⦲", cent: "¢", CenterDot: "·", centerdot: "·", Cfr: "ℭ", cfr: "𝔠", CHcy: "Ч", chcy: "ч", check: "✓", checkmark: "✓", Chi: "Χ", chi: "χ", cir: "○", circ: "ˆ", circeq: "≗", circlearrowleft: "↺", circlearrowright: "↻", circledast: "⊛", circledcirc: "⊚", circleddash: "⊝", CircleDot: "⊙", circledR: "®", circledS: "Ⓢ", CircleMinus: "⊖", CirclePlus: "⊕", CircleTimes: "⊗", cirE: "⧃", cire: "≗", cirfnint: "⨐", cirmid: "⫯", cirscir: "⧂", ClockwiseContourIntegral: "∲", CloseCurlyDoubleQuote: "”", CloseCurlyQuote: "’", clubs: "♣", clubsuit: "♣", Colon: "∷", colon: ":", Colone: "⩴", colone: "≔", coloneq: "≔", comma: ",", commat: "@", comp: "∁", compfn: "∘", complement: "∁", complexes: "ℂ", cong: "≅", congdot: "⩭", Congruent: "≡", Conint: "∯", conint: "∮", ContourIntegral: "∮", Copf: "ℂ", copf: "𝕔", coprod: "∐", Coproduct: "∐", COPY: "©", copy: "©", copysr: "℗", CounterClockwiseContourIntegral: "∳", crarr: "↵", Cross: "⨯", cross: "✗", Cscr: "𝒞", cscr: "𝒸", csub: "⫏", csube: "⫑", csup: "⫐", csupe: "⫒", ctdot: "⋯", cudarrl: "⤸", cudarrr: "⤵", cuepr: "⋞", cuesc: "⋟", cularr: "↶", cularrp: "⤽", Cup: "⋓", cup: "∪", cupbrcap: "⩈", CupCap: "≍", cupcap: "⩆", cupcup: "⩊", cupdot: "⊍", cupor: "⩅", cups: "∪︀", curarr: "↷", curarrm: "⤼", curlyeqprec: "⋞", curlyeqsucc: "⋟", curlyvee: "⋎", curlywedge: "⋏", curren: "¤", curvearrowleft: "↶", curvearrowright: "↷", cuvee: "⋎", cuwed: "⋏", cwconint: "∲", cwint: "∱", cylcty: "⌭", Dagger: "‡", dagger: "†", daleth: "ℸ", Darr: "↡", dArr: "⇓", darr: "↓", dash: "‐", Dashv: "⫤", dashv: "⊣", dbkarow: "⤏", dblac: "˝", Dcaron: "Ď", dcaron: "ď", Dcy: "Д", dcy: "д", DD: "ⅅ", dd: "ⅆ", ddagger: "‡", ddarr: "⇊", DDotrahd: "⤑", ddotseq: "⩷", deg: "°", De