static/karma.js
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
module.exports = {
VERSION: '%KARMA_VERSION%',
KARMA_URL_ROOT: '%KARMA_URL_ROOT%',
KARMA_PROXY_PATH: '%KARMA_PROXY_PATH%',
BROWSER_SOCKET_TIMEOUT: '%BROWSER_SOCKET_TIMEOUT%',
CONTEXT_URL: 'context.html'
}
},{}],2:[function(require,module,exports){
var stringify = require('../common/stringify')
var constant = require('./constants')
var util = require('../common/util')
function Karma (updater, socket, iframe, opener, navigator, location, document) {
this.updater = updater
var startEmitted = false
var self = this
var queryParams = util.parseQueryParams(location.search)
var browserId = queryParams.id || util.generateId('manual-')
var displayName = queryParams.displayName
var returnUrl = queryParams['return_url' + ''] || null
var resultsBufferLimit = 50
var resultsBuffer = []
// This is a no-op if not running with a Trusted Types CSP policy, and
// lets tests declare that they trust the way that karma creates and handles
// URLs.
//
// More info about the proposed Trusted Types standard at
// https://github.com/WICG/trusted-types
var policy = {
createURL: function (s) {
return s
},
createScriptURL: function (s) {
return s
}
}
var trustedTypes = window.trustedTypes || window.TrustedTypes
if (trustedTypes) {
policy = trustedTypes.createPolicy('karma', policy)
if (!policy.createURL) {
// Install createURL for newer browsers. Only browsers that implement an
// old version of the spec require createURL.
// Should be safe to delete all reference to createURL by
// February 2020.
// https://github.com/WICG/trusted-types/pull/204
policy.createURL = function (s) { return s }
}
}
// To start we will signal the server that we are not reconnecting. If the socket loses
// connection and was able to reconnect to the Karma server we will get a
// second 'connect' event. There we will pass 'true' and that will be passed to the
// Karma server then, so that Karma can differentiate between a socket client
// econnect and a full browser reconnect.
var socketReconnect = false
this.VERSION = constant.VERSION
this.config = {}
// Expose for testing purposes as there is no global socket.io
// registry anymore.
this.socket = socket
// Set up postMessage bindings for current window
// DEV: These are to allow windows in separate processes execute local tasks
// Electron is one of these environments
if (window.addEventListener) {
window.addEventListener('message', function handleMessage (evt) {
// Resolve the origin of our message
var origin = evt.origin || evt.originalEvent.origin
// If the message isn't from our host, then reject it
if (origin !== window.location.origin) {
return
}
// Take action based on the message type
var method = evt.data.__karmaMethod
if (method) {
if (!self[method]) {
self.error('Received `postMessage` for "' + method + '" but the method doesn\'t exist')
return
}
self[method].apply(self, evt.data.__karmaArguments)
}
}, false)
}
var childWindow = null
function navigateContextTo (url) {
if (self.config.useIframe === false) {
// run in new window
if (self.config.runInParent === false) {
// If there is a window already open, then close it
// DEV: In some environments (e.g. Electron), we don't have setter access for location
if (childWindow !== null && childWindow.closed !== true) {
// The onbeforeunload listener was added by context to catch
// unexpected navigations while running tests.
childWindow.onbeforeunload = undefined
childWindow.close()
}
childWindow = opener(url)
if (childWindow === null) {
self.error('Opening a new tab/window failed, probably because pop-ups are blocked.')
}
// run context on parent element (client_with_context)
// using window.__karma__.scriptUrls to get the html element strings and load them dynamically
} else if (url !== 'about:blank') {
var loadScript = function (idx) {
if (idx < window.__karma__.scriptUrls.length) {
var parser = new DOMParser()
// Revert escaped characters with special roles in HTML before parsing
var string = window.__karma__.scriptUrls[idx]
.replace(/\\x3C/g, '<')
.replace(/\\x3E/g, '>')
var doc = parser.parseFromString(string, 'text/html')
var ele = doc.head.firstChild || doc.body.firstChild
// script elements created by DomParser are marked as unexecutable,
// create a new script element manually and copy necessary properties
// so it is executable
if (ele.tagName && ele.tagName.toLowerCase() === 'script') {
var tmp = ele
ele = document.createElement('script')
ele.src = policy.createScriptURL(tmp.src)
ele.crossOrigin = tmp.crossOrigin
}
ele.onload = function () {
loadScript(idx + 1)
}
document.body.appendChild(ele)
} else {
window.__karma__.loaded()
}
}
loadScript(0)
}
// run in iframe
} else {
// The onbeforeunload listener was added by the context to catch
// unexpected navigations while running tests.
iframe.contentWindow.onbeforeunload = undefined
iframe.src = policy.createURL(url)
}
}
this.log = function (type, args) {
var values = []
for (var i = 0; i < args.length; i++) {
values.push(this.stringify(args[i], 3))
}
this.info({ log: values.join(', '), type: type })
}
this.stringify = stringify
function getLocation (url, lineno, colno) {
var location = ''
if (url !== undefined) {
location += url
}
if (lineno !== undefined) {
location += ':' + lineno
}
if (colno !== undefined) {
location += ':' + colno
}
return location
}
// error during js file loading (most likely syntax error)
// we are not going to execute at all. `window.onerror` callback.
this.error = function (messageOrEvent, source, lineno, colno, error) {
var message
if (typeof messageOrEvent === 'string') {
message = messageOrEvent
var location = getLocation(source, lineno, colno)
if (location !== '') {
message += '\nat ' + location
}
if (error && error.stack) {
message += '\n\n' + error.stack
}
} else {
// create an object with the string representation of the message to
// ensure all its content is properly transferred to the console log
message = { message: messageOrEvent, str: messageOrEvent.toString() }
}
socket.emit('karma_error', message)
self.updater.updateTestStatus('karma_error ' + message)
this.complete()
return false
}
this.result = function (originalResult) {
var convertedResult = {}
// Convert all array-like objects to real arrays.
for (var propertyName in originalResult) {
if (Object.prototype.hasOwnProperty.call(originalResult, propertyName)) {
var propertyValue = originalResult[propertyName]
if (Object.prototype.toString.call(propertyValue) === '[object Array]') {
convertedResult[propertyName] = Array.prototype.slice.call(propertyValue)
} else {
convertedResult[propertyName] = propertyValue
}
}
}
if (!startEmitted) {
socket.emit('start', { total: null })
self.updater.updateTestStatus('start')
startEmitted = true
}
if (resultsBufferLimit === 1) {
self.updater.updateTestStatus('result')
return socket.emit('result', convertedResult)
}
resultsBuffer.push(convertedResult)
if (resultsBuffer.length === resultsBufferLimit) {
socket.emit('result', resultsBuffer)
self.updater.updateTestStatus('result')
resultsBuffer = []
}
}
this.complete = function (result) {
if (resultsBuffer.length) {
socket.emit('result', resultsBuffer)
resultsBuffer = []
}
socket.emit('complete', result || {})
if (this.config.clearContext) {
navigateContextTo('about:blank')
} else {
self.updater.updateTestStatus('complete')
}
if (returnUrl) {
var isReturnUrlAllowed = false
for (var i = 0; i < this.config.allowedReturnUrlPatterns.length; i++) {
var allowedReturnUrlPattern = new RegExp(this.config.allowedReturnUrlPatterns[i])
if (allowedReturnUrlPattern.test(returnUrl)) {
isReturnUrlAllowed = true
break
}
}
if (!isReturnUrlAllowed) {
throw new Error(
'Security: Navigation to '.concat(
returnUrl,
' was blocked to prevent malicious exploits.'
)
)
}
location.href = returnUrl
}
}
this.info = function (info) {
// TODO(vojta): introduce special API for this
if (!startEmitted && util.isDefined(info.total)) {
socket.emit('start', info)
startEmitted = true
} else {
socket.emit('info', info)
}
}
socket.on('execute', function (cfg) {
self.updater.updateTestStatus('execute')
// reset startEmitted and reload the iframe
startEmitted = false
self.config = cfg
navigateContextTo(constant.CONTEXT_URL)
if (self.config.clientDisplayNone) {
[].forEach.call(document.querySelectorAll('#banner, #browsers'), function (el) {
el.style.display = 'none'
})
}
// clear the console before run
// works only on FF (Safari, Chrome do not allow to clear console from js source)
if (window.console && window.console.clear) {
window.console.clear()
}
})
socket.on('stop', function () {
this.complete()
}.bind(this))
// Report the browser name and Id. Note that this event can also fire if the connection has
// been temporarily lost, but the socket reconnected automatically. Read more in the docs:
// https://socket.io/docs/client-api/#Event-%E2%80%98connect%E2%80%99
socket.on('connect', function () {
socket.io.engine.on('upgrade', function () {
resultsBufferLimit = 1
// Flush any results which were buffered before the upgrade to WebSocket protocol.
if (resultsBuffer.length > 0) {
socket.emit('result', resultsBuffer)
resultsBuffer = []
}
})
var info = {
name: navigator.userAgent,
id: browserId,
isSocketReconnect: socketReconnect
}
if (displayName) {
info.displayName = displayName
}
socket.emit('register', info)
socketReconnect = true
})
}
module.exports = Karma
},{"../common/stringify":5,"../common/util":6,"./constants":1}],3:[function(require,module,exports){
/* global io */
/* eslint-disable no-new */
var Karma = require('./karma')
var StatusUpdater = require('./updater')
var util = require('../common/util')
var constants = require('./constants')
var KARMA_URL_ROOT = constants.KARMA_URL_ROOT
var KARMA_PROXY_PATH = constants.KARMA_PROXY_PATH
var BROWSER_SOCKET_TIMEOUT = constants.BROWSER_SOCKET_TIMEOUT
// Connect to the server using socket.io https://socket.io/
var socket = io(location.host, {
reconnectionDelay: 500,
reconnectionDelayMax: Infinity,
timeout: BROWSER_SOCKET_TIMEOUT,
path: KARMA_PROXY_PATH + KARMA_URL_ROOT.slice(1) + 'socket.io',
'sync disconnect on unload': true,
useNativeTimers: true
})
// instantiate the updater of the view
var updater = new StatusUpdater(socket, util.elm('title'), util.elm('banner'), util.elm('browsers'))
window.karma = new Karma(updater, socket, util.elm('context'), window.open,
window.navigator, window.location, window.document)
},{"../common/util":6,"./constants":1,"./karma":2,"./updater":4}],4:[function(require,module,exports){
var VERSION = require('./constants').VERSION
function StatusUpdater (socket, titleElement, bannerElement, browsersElement) {
function updateBrowsersInfo (browsers) {
if (!browsersElement) {
return
}
var status
// clear browsersElement
while (browsersElement.firstChild) {
browsersElement.removeChild(browsersElement.firstChild)
}
for (var i = 0; i < browsers.length; i++) {
status = browsers[i].isConnected ? 'idle' : 'executing'
var li = document.createElement('li')
li.setAttribute('class', status)
li.textContent = browsers[i].name + ' is ' + status
browsersElement.appendChild(li)
}
}
var connectionText = 'never-connected'
var testText = 'loading'
var pingText = ''
function updateBanner () {
if (!titleElement || !bannerElement) {
return
}
titleElement.textContent = 'Karma v ' + VERSION + ' - ' + connectionText + '; test: ' + testText + '; ' + pingText
bannerElement.className = connectionText === 'connected' ? 'online' : 'offline'
}
function updateConnectionStatus (connectionStatus) {
connectionText = connectionStatus || connectionText
updateBanner()
}
function updateTestStatus (testStatus) {
testText = testStatus || testText
updateBanner()
}
function updatePingStatus (pingStatus) {
pingText = pingStatus || pingText
updateBanner()
}
socket.on('connect', function () {
updateConnectionStatus('connected')
})
socket.on('disconnect', function () {
updateConnectionStatus('disconnected')
})
socket.on('reconnecting', function (sec) {
updateConnectionStatus('reconnecting in ' + sec + ' seconds')
})
socket.on('reconnect', function () {
updateConnectionStatus('reconnected')
})
socket.on('reconnect_failed', function () {
updateConnectionStatus('reconnect_failed')
})
socket.on('info', updateBrowsersInfo)
socket.on('disconnect', function () {
updateBrowsersInfo([])
})
socket.on('ping', function () {
updatePingStatus('ping...')
})
socket.on('pong', function (latency) {
updatePingStatus('ping ' + latency + 'ms')
})
return { updateTestStatus: updateTestStatus }
}
module.exports = StatusUpdater
},{"./constants":1}],5:[function(require,module,exports){
var serialize = null
try {
serialize = require('dom-serialize')
} catch (e) {
// Ignore failure on IE8
}
var instanceOf = require('./util').instanceOf
function isNode (obj) {
return (obj.tagName || obj.nodeName) && obj.nodeType
}
function stringify (obj, depth) {
if (depth === 0) {
return '...'
}
if (obj === null) {
return 'null'
}
switch (typeof obj) {
case 'symbol':
return obj.toString()
case 'string':
return "'" + obj + "'"
case 'undefined':
return 'undefined'
case 'function':
try {
// function abc(a, b, c) { /* code goes here */ }
// -> function abc(a, b, c) { ... }
return obj.toString().replace(/\{[\s\S]*\}/, '{ ... }')
} catch (err) {
if (err instanceof TypeError) {
// Support older browsers
return 'function ' + (obj.name || '') + '() { ... }'
} else {
throw err
}
}
case 'boolean':
return obj ? 'true' : 'false'
case 'object':
var strs = []
if (instanceOf(obj, 'Array')) {
strs.push('[')
for (var i = 0, ii = obj.length; i < ii; i++) {
if (i) {
strs.push(', ')
}
strs.push(stringify(obj[i], depth - 1))
}
strs.push(']')
} else if (instanceOf(obj, 'Date')) {
return obj.toString()
} else if (instanceOf(obj, 'Text')) {
return obj.nodeValue
} else if (instanceOf(obj, 'Comment')) {
return '<!--' + obj.nodeValue + '-->'
} else if (obj.outerHTML) {
return obj.outerHTML
} else if (isNode(obj)) {
if (serialize) {
return serialize(obj)
} else {
return 'Skipping stringify, no support for dom-serialize'
}
} else if (instanceOf(obj, 'Error')) {
return obj.toString() + '\n' + obj.stack
} else {
var constructor = 'Object'
if (obj.constructor && typeof obj.constructor === 'function') {
constructor = obj.constructor.name
}
strs.push(constructor)
strs.push('{')
var first = true
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (first) {
first = false
} else {
strs.push(', ')
}
strs.push(key + ': ' + stringify(obj[key], depth - 1))
}
}
strs.push('}')
}
return strs.join('')
default:
return obj
}
}
module.exports = stringify
},{"./util":6,"dom-serialize":8}],6:[function(require,module,exports){
exports.instanceOf = function (value, constructorName) {
return Object.prototype.toString.apply(value) === '[object ' + constructorName + ']'
}
exports.elm = function (id) {
return document.getElementById(id)
}
exports.generateId = function (prefix) {
return prefix + Math.floor(Math.random() * 10000)
}
exports.isUndefined = function (value) {
return typeof value === 'undefined'
}
exports.isDefined = function (value) {
return !exports.isUndefined(value)
}
exports.parseQueryParams = function (locationSearch) {
var params = {}
var pairs = locationSearch.slice(1).split('&')
var keyValue
for (var i = 0; i < pairs.length; i++) {
keyValue = pairs[i].split('=')
params[decodeURIComponent(keyValue[0])] = decodeURIComponent(keyValue[1])
}
return params
}
},{}],7:[function(require,module,exports){
(function (global){
var NativeCustomEvent = global.CustomEvent;
function useNative () {
try {
var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });
return 'cat' === p.type && 'bar' === p.detail.foo;
} catch (e) {
}
return false;
}
/**
* Cross-browser `CustomEvent` constructor.
*
* https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent
*
* @public
*/
module.exports = useNative() ? NativeCustomEvent :
// IE >= 9
'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {
var e = document.createEvent('CustomEvent');
if (params) {
e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);
} else {
e.initCustomEvent(type, false, false, void 0);
}
return e;
} :
// IE <= 8
function CustomEvent (type, params) {
var e = document.createEventObject();
e.type = type;
if (params) {
e.bubbles = Boolean(params.bubbles);
e.cancelable = Boolean(params.cancelable);
e.detail = params.detail;
} else {
e.bubbles = false;
e.cancelable = false;
e.detail = void 0;
}
return e;
}
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],8:[function(require,module,exports){
/**
* Module dependencies.
*/
var extend = require('extend');
var encode = require('ent/encode');
var CustomEvent = require('custom-event');
var voidElements = require('void-elements');
/**
* Module exports.
*/
exports = module.exports = serialize;
exports.serializeElement = serializeElement;
exports.serializeAttribute = serializeAttribute;
exports.serializeText = serializeText;
exports.serializeComment = serializeComment;
exports.serializeDocument = serializeDocument;
exports.serializeDoctype = serializeDoctype;
exports.serializeDocumentFragment = serializeDocumentFragment;
exports.serializeNodeList = serializeNodeList;
/**
* Serializes any DOM node. Returns a string.
*
* @param {Node} node - DOM Node to serialize
* @param {String} [context] - optional arbitrary "context" string to use (useful for event listeners)
* @param {Function} [fn] - optional callback function to use in the "serialize" event for this call
* @param {EventTarget} [eventTarget] - optional EventTarget instance to emit the "serialize" event on (defaults to `node`)
* return {String}
* @public
*/
function serialize (node, context, fn, eventTarget) {
if (!node) return '';
if ('function' === typeof context) {
fn = context;
context = null;
}
if (!context) context = null;
var rtn;
var nodeType = node.nodeType;
if (!nodeType && 'number' === typeof node.length) {
// assume it's a NodeList or Array of Nodes
rtn = exports.serializeNodeList(node, context, fn);
} else {
if ('function' === typeof fn) {
// one-time "serialize" event listener
node.addEventListener('serialize', fn, false);
}
// emit a custom "serialize" event on `node`, in case there
// are event listeners for custom serialization of this node
var e = new CustomEvent('serialize', {
bubbles: true,
cancelable: true,
detail: {
serialize: null,
context: context
}
});
e.serializeTarget = node;
var target = eventTarget || node;
var cancelled = !target.dispatchEvent(e);
// `e.detail.serialize` can be set to a:
// String - returned directly
// Node - goes through serializer logic instead of `node`
// Anything else - get Stringified first, and then returned directly
var s = e.detail.serialize;
if (s != null) {
if ('string' === typeof s) {
rtn = s;
} else if ('number' === typeof s.nodeType) {
// make it go through the serialization logic
rtn = serialize(s, context, null, target);
} else {
rtn = String(s);
}
} else if (!cancelled) {
// default serialization logic
switch (nodeType) {
case 1 /* element */:
rtn = exports.serializeElement(node, context, eventTarget);
break;
case 2 /* attribute */:
rtn = exports.serializeAttribute(node);
break;
case 3 /* text */:
rtn = exports.serializeText(node);
break;
case 8 /* comment */:
rtn = exports.serializeComment(node);
break;
case 9 /* document */:
rtn = exports.serializeDocument(node, context, eventTarget);
break;
case 10 /* doctype */:
rtn = exports.serializeDoctype(node);
break;
case 11 /* document fragment */:
rtn = exports.serializeDocumentFragment(node, context, eventTarget);
break;
}
}
if ('function' === typeof fn) {
node.removeEventListener('serialize', fn, false);
}
}
return rtn || '';
}
/**
* Serialize an Attribute node.
*/
function serializeAttribute (node, opts) {
return node.name + '="' + encode(node.value, extend({
named: true
}, opts)) + '"';
}
/**
* Serialize a DOM element.
*/
function serializeElement (node, context, eventTarget) {
var c, i, l;
var name = node.nodeName.toLowerCase();
// opening tag
var r = '<' + name;
// attributes
for (i = 0, c = node.attributes, l = c.length; i < l; i++) {
r += ' ' + exports.serializeAttribute(c[i]);
}
r += '>';
// child nodes
r += exports.serializeNodeList(node.childNodes, context, null, eventTarget);
// closing tag, only for non-void elements
if (!voidElements[name]) {
r += '</' + name + '>';
}
return r;
}
/**
* Serialize a text node.
*/
function serializeText (node, opts) {
return encode(node.nodeValue, extend({
named: true,
special: { '<': true, '>': true, '&': true }
}, opts));
}
/**
* Serialize a comment node.
*/
function serializeComment (node) {
return '<!--' + node.nodeValue + '-->';
}
/**
* Serialize a Document node.
*/
function serializeDocument (node, context, eventTarget) {
return exports.serializeNodeList(node.childNodes, context, null, eventTarget);
}
/**
* Serialize a DOCTYPE node.
* See: http://stackoverflow.com/a/10162353
*/
function serializeDoctype (node) {
var r = '<!DOCTYPE ' + node.name;
if (node.publicId) {
r += ' PUBLIC "' + node.publicId + '"';
}
if (!node.publicId && node.systemId) {
r += ' SYSTEM';
}
if (node.systemId) {
r += ' "' + node.systemId + '"';
}
r += '>';
return r;
}
/**
* Serialize a DocumentFragment instance.
*/
function serializeDocumentFragment (node, context, eventTarget) {
return exports.serializeNodeList(node.childNodes, context, null, eventTarget);
}
/**
* Serialize a NodeList/Array of nodes.
*/
function serializeNodeList (list, context, fn, eventTarget) {
var r = '';
for (var i = 0, l = list.length; i < l; i++) {
r += serialize(list[i], context, fn, eventTarget);
}
return r;
}
},{"custom-event":7,"ent/encode":9,"extend":11,"void-elements":13}],9:[function(require,module,exports){
var punycode = require('punycode');
var revEntities = require('./reversed.json');
module.exports = encode;
function encode (str, opts) {
if (typeof str !== 'string') {
throw new TypeError('Expected a String');
}
if (!opts) opts = {};
var numeric = true;
if (opts.named) numeric = false;
if (opts.numeric !== undefined) numeric = opts.numeric;
var special = opts.special || {
'"': true, "'": true,
'<': true, '>': true,
'&': true
};
var codePoints = punycode.ucs2.decode(str);
var chars = [];
for (var i = 0; i < codePoints.length; i++) {
var cc = codePoints[i];
var c = punycode.ucs2.encode([ cc ]);
var e = revEntities[cc];
if (e && (cc >= 127 || special[c]) && !numeric) {
chars.push('&' + (/;$/.test(e) ? e : e + ';'));
}
else if (cc < 32 || cc >= 127 || special[c]) {
chars.push('&#' + cc + ';');
}
else {
chars.push(c);
}
}
return chars.join('');
}
},{"./reversed.json":10,"punycode":12}],10:[function(require,module,exports){
module.exports={
"9": "Tab;",
"10": "NewLine;",
"33": "excl;",
"34": "quot;",
"35": "num;",
"36": "dollar;",
"37": "percnt;",
"38": "amp;",
"39": "apos;",
"40": "lpar;",
"41": "rpar;",
"42": "midast;",
"43": "plus;",
"44": "comma;",
"46": "period;",
"47": "sol;",
"58": "colon;",
"59": "semi;",
"60": "lt;",
"61": "equals;",
"62": "gt;",
"63": "quest;",
"64": "commat;",
"91": "lsqb;",
"92": "bsol;",
"93": "rsqb;",
"94": "Hat;",
"95": "UnderBar;",
"96": "grave;",
"123": "lcub;",
"124": "VerticalLine;",
"125": "rcub;",
"160": "NonBreakingSpace;",
"161": "iexcl;",
"162": "cent;",
"163": "pound;",
"164": "curren;",
"165": "yen;",
"166": "brvbar;",
"167": "sect;",
"168": "uml;",
"169": "copy;",
"170": "ordf;",
"171": "laquo;",
"172": "not;",
"173": "shy;",
"174": "reg;",
"175": "strns;",
"176": "deg;",
"177": "pm;",
"178": "sup2;",
"179": "sup3;",
"180": "DiacriticalAcute;",
"181": "micro;",
"182": "para;",
"183": "middot;",
"184": "Cedilla;",
"185": "sup1;",
"186": "ordm;",
"187": "raquo;",
"188": "frac14;",
"189": "half;",
"190": "frac34;",
"191": "iquest;",
"192": "Agrave;",
"193": "Aacute;",
"194": "Acirc;",
"195": "Atilde;",
"196": "Auml;",
"197": "Aring;",
"198": "AElig;",
"199": "Ccedil;",
"200": "Egrave;",
"201": "Eacute;",
"202": "Ecirc;",
"203": "Euml;",
"204": "Igrave;",
"205": "Iacute;",
"206": "Icirc;",
"207": "Iuml;",
"208": "ETH;",
"209": "Ntilde;",
"210": "Ograve;",
"211": "Oacute;",
"212": "Ocirc;",
"213": "Otilde;",
"214": "Ouml;",
"215": "times;",
"216": "Oslash;",
"217": "Ugrave;",
"218": "Uacute;",
"219": "Ucirc;",
"220": "Uuml;",
"221": "Yacute;",
"222": "THORN;",
"223": "szlig;",
"224": "agrave;",
"225": "aacute;",
"226": "acirc;",
"227": "atilde;",
"228": "auml;",
"229": "aring;",
"230": "aelig;",
"231": "ccedil;",
"232": "egrave;",
"233": "eacute;",
"234": "ecirc;",
"235": "euml;",
"236": "igrave;",
"237": "iacute;",
"238": "icirc;",
"239": "iuml;",
"240": "eth;",
"241": "ntilde;",
"242": "ograve;",
"243": "oacute;",
"244": "ocirc;",
"245": "otilde;",
"246": "ouml;",
"247": "divide;",
"248": "oslash;",
"249": "ugrave;",
"250": "uacute;",
"251": "ucirc;",
"252": "uuml;",
"253": "yacute;",
"254": "thorn;",
"255": "yuml;",
"256": "Amacr;",
"257": "amacr;",
"258": "Abreve;",
"259": "abreve;",
"260": "Aogon;",
"261": "aogon;",
"262": "Cacute;",
"263": "cacute;",
"264": "Ccirc;",
"265": "ccirc;",
"266": "Cdot;",
"267": "cdot;",
"268": "Ccaron;",
"269": "ccaron;",
"270": "Dcaron;",
"271": "dcaron;",
"272": "Dstrok;",
"273": "dstrok;",
"274": "Emacr;",
"275": "emacr;",
"278": "Edot;",
"279": "edot;",
"280": "Eogon;",
"281": "eogon;",
"282": "Ecaron;",
"283": "ecaron;",
"284": "Gcirc;",
"285": "gcirc;",
"286": "Gbreve;",
"287": "gbreve;",
"288": "Gdot;",
"289": "gdot;",
"290": "Gcedil;",
"292": "Hcirc;",
"293": "hcirc;",
"294": "Hstrok;",
"295": "hstrok;",
"296": "Itilde;",
"297": "itilde;",
"298": "Imacr;",
"299": "imacr;",
"302": "Iogon;",
"303": "iogon;",
"304": "Idot;",
"305": "inodot;",
"306": "IJlig;",
"307": "ijlig;",
"308": "Jcirc;",
"309": "jcirc;",
"310": "Kcedil;",
"311": "kcedil;",
"312": "kgreen;",
"313": "Lacute;",
"314": "lacute;",
"315": "Lcedil;",
"316": "lcedil;",
"317": "Lcaron;",
"318": "lcaron;",
"319": "Lmidot;",
"320": "lmidot;",
"321": "Lstrok;",
"322": "lstrok;",
"323": "Nacute;",
"324": "nacute;",
"325": "Ncedil;",
"326": "ncedil;",
"327": "Ncaron;",
"328": "ncaron;",
"329": "napos;",
"330": "ENG;",
"331": "eng;",
"332": "Omacr;",
"333": "omacr;",
"336": "Odblac;",
"337": "odblac;",
"338": "OElig;",
"339": "oelig;",
"340": "Racute;",
"341": "racute;",
"342": "Rcedil;",
"343": "rcedil;",
"344": "Rcaron;",
"345": "rcaron;",
"346": "Sacute;",
"347": "sacute;",
"348": "Scirc;",
"349": "scirc;",
"350": "Scedil;",
"351": "scedil;",
"352": "Scaron;",
"353": "scaron;",
"354": "Tcedil;",
"355": "tcedil;",
"356": "Tcaron;",
"357": "tcaron;",
"358": "Tstrok;",
"359": "tstrok;",
"360": "Utilde;",
"361": "utilde;",
"362": "Umacr;",
"363": "umacr;",
"364": "Ubreve;",
"365": "ubreve;",
"366": "Uring;",
"367": "uring;",
"368": "Udblac;",
"369": "udblac;",
"370": "Uogon;",
"371": "uogon;",
"372": "Wcirc;",
"373": "wcirc;",
"374": "Ycirc;",
"375": "ycirc;",
"376": "Yuml;",
"377": "Zacute;",
"378": "zacute;",
"379": "Zdot;",
"380": "zdot;",
"381": "Zcaron;",
"382": "zcaron;",
"402": "fnof;",
"437": "imped;",
"501": "gacute;",
"567": "jmath;",
"710": "circ;",
"711": "Hacek;",
"728": "breve;",
"729": "dot;",
"730": "ring;",
"731": "ogon;",
"732": "tilde;",
"733": "DiacriticalDoubleAcute;",
"785": "DownBreve;",
"913": "Alpha;",
"914": "Beta;",
"915": "Gamma;",
"916": "Delta;",
"917": "Epsilon;",
"918": "Zeta;",
"919": "Eta;",
"920": "Theta;",
"921": "Iota;",
"922": "Kappa;",
"923": "Lambda;",
"924": "Mu;",
"925": "Nu;",
"926": "Xi;",
"927": "Omicron;",
"928": "Pi;",
"929": "Rho;",
"931": "Sigma;",
"932": "Tau;",
"933": "Upsilon;",
"934": "Phi;",
"935": "Chi;",
"936": "Psi;",
"937": "Omega;",
"945": "alpha;",
"946": "beta;",
"947": "gamma;",
"948": "delta;",
"949": "epsilon;",
"950": "zeta;",
"951": "eta;",
"952": "theta;",
"953": "iota;",
"954": "kappa;",
"955": "lambda;",
"956": "mu;",
"957": "nu;",
"958": "xi;",
"959": "omicron;",
"960": "pi;",
"961": "rho;",
"962": "varsigma;",
"963": "sigma;",
"964": "tau;",
"965": "upsilon;",
"966": "phi;",
"967": "chi;",
"968": "psi;",
"969": "omega;",
"977": "vartheta;",
"978": "upsih;",
"981": "varphi;",
"982": "varpi;",
"988": "Gammad;",
"989": "gammad;",
"1008": "varkappa;",
"1009": "varrho;",
"1013": "varepsilon;",
"1014": "bepsi;",
"1025": "IOcy;",
"1026": "DJcy;",
"1027": "GJcy;",
"1028": "Jukcy;",
"1029": "DScy;",
"1030": "Iukcy;",
"1031": "YIcy;",
"1032": "Jsercy;",
"1033": "LJcy;",
"1034": "NJcy;",
"1035": "TSHcy;",
"1036": "KJcy;",
"1038": "Ubrcy;",
"1039": "DZcy;",
"1040": "Acy;",
"1041": "Bcy;",
"1042": "Vcy;",
"1043": "Gcy;",
"1044": "Dcy;",
"1045": "IEcy;",
"1046": "ZHcy;",
"1047": "Zcy;",
"1048": "Icy;",
"1049": "Jcy;",
"1050": "Kcy;",
"1051": "Lcy;",
"1052": "Mcy;",
"1053": "Ncy;",
"1054": "Ocy;",
"1055": "Pcy;",
"1056": "Rcy;",
"1057": "Scy;",
"1058": "Tcy;",
"1059": "Ucy;",
"1060": "Fcy;",
"1061": "KHcy;",
"1062": "TScy;",
"1063": "CHcy;",
"1064": "SHcy;",
"1065": "SHCHcy;",
"1066": "HARDcy;",
"1067": "Ycy;",
"1068": "SOFTcy;",
"1069": "Ecy;",
"1070": "YUcy;",
"1071": "YAcy;",
"1072": "acy;",
"1073": "bcy;",
"1074": "vcy;",
"1075": "gcy;",
"1076": "dcy;",
"1077": "iecy;",
"1078": "zhcy;",
"1079": "zcy;",
"1080": "icy;",
"1081": "jcy;",
"1082": "kcy;",
"1083": "lcy;",
"1084": "mcy;",
"1085": "ncy;",
"1086": "ocy;",
"1087": "pcy;",
"1088": "rcy;",
"1089": "scy;",
"1090": "tcy;",
"1091": "ucy;",
"1092": "fcy;",
"1093": "khcy;",
"1094": "tscy;",
"1095": "chcy;",
"1096": "shcy;",
"1097": "shchcy;",
"1098": "hardcy;",
"1099": "ycy;",
"1100": "softcy;",
"1101": "ecy;",
"1102": "yucy;",
"1103": "yacy;",
"1105": "iocy;",
"1106": "djcy;",
"1107": "gjcy;",
"1108": "jukcy;",
"1109": "dscy;",
"1110": "iukcy;",
"1111": "yicy;",
"1112": "jsercy;",
"1113": "ljcy;",
"1114": "njcy;",
"1115": "tshcy;",
"1116": "kjcy;",
"1118": "ubrcy;",
"1119": "dzcy;",
"8194": "ensp;",
"8195": "emsp;",
"8196": "emsp13;",
"8197": "emsp14;",
"8199": "numsp;",
"8200": "puncsp;",
"8201": "ThinSpace;",
"8202": "VeryThinSpace;",
"8203": "ZeroWidthSpace;",
"8204": "zwnj;",
"8205": "zwj;",
"8206": "lrm;",
"8207": "rlm;",
"8208": "hyphen;",
"8211": "ndash;",
"8212": "mdash;",
"8213": "horbar;",
"8214": "Vert;",
"8216": "OpenCurlyQuote;",
"8217": "rsquor;",
"8218": "sbquo;",
"8220": "OpenCurlyDoubleQuote;",
"8221": "rdquor;",
"8222": "ldquor;",
"8224": "dagger;",
"8225": "ddagger;",
"8226": "bullet;",
"8229": "nldr;",
"8230": "mldr;",
"8240": "permil;",
"8241": "pertenk;",
"8242": "prime;",
"8243": "Prime;",
"8244": "tprime;",
"8245": "bprime;",
"8249": "lsaquo;",
"8250": "rsaquo;",
"8254": "OverBar;",
"8257": "caret;",
"8259": "hybull;",
"8260": "frasl;",
"8271": "bsemi;",
"8279": "qprime;",
"8287": "MediumSpace;",
"8288": "NoBreak;",
"8289": "ApplyFunction;",
"8290": "it;",
"8291": "InvisibleComma;",
"8364": "euro;",
"8411": "TripleDot;",
"8412": "DotDot;",
"8450": "Copf;",
"8453": "incare;",
"8458": "gscr;",
"8459": "Hscr;",
"8460": "Poincareplane;",
"8461": "quaternions;",
"8462": "planckh;",
"8463": "plankv;",
"8464": "Iscr;",
"8465": "imagpart;",
"8466": "Lscr;",
"8467": "ell;",
"8469": "Nopf;",
"8470": "numero;",
"8471": "copysr;",
"8472": "wp;",
"8473": "primes;",
"8474": "rationals;",
"8475": "Rscr;",
"8476": "Rfr;",
"8477": "Ropf;",
"8478": "rx;",
"8482": "trade;",
"8484": "Zopf;",
"8487": "mho;",
"8488": "Zfr;",
"8489": "iiota;",
"8492": "Bscr;",
"8493": "Cfr;",
"8495": "escr;",
"8496": "expectation;",
"8497": "Fscr;",
"8499": "phmmat;",
"8500": "oscr;",
"8501": "aleph;",
"8502": "beth;",
"8503": "gimel;",
"8504": "daleth;",
"8517": "DD;",
"8518": "DifferentialD;",
"8519": "exponentiale;",
"8520": "ImaginaryI;",
"8531": "frac13;",
"8532": "frac23;",
"8533": "frac15;",
"8534": "frac25;",
"8535": "frac35;",
"8536": "frac45;",
"8537": "frac16;",
"8538": "frac56;",
"8539": "frac18;",
"8540": "frac38;",
"8541": "frac58;",
"8542": "frac78;",
"8592": "slarr;",
"8593": "uparrow;",
"8594": "srarr;",
"8595": "ShortDownArrow;",
"8596": "leftrightarrow;",
"8597": "varr;",
"8598": "UpperLeftArrow;",
"8599": "UpperRightArrow;",
"8600": "searrow;",
"8601": "swarrow;",
"8602": "nleftarrow;",
"8603": "nrightarrow;",
"8605": "rightsquigarrow;",
"8606": "twoheadleftarrow;",
"8607": "Uarr;",
"8608": "twoheadrightarrow;",
"8609": "Darr;",
"8610": "leftarrowtail;",
"8611": "rightarrowtail;",
"8612": "mapstoleft;",
"8613": "UpTeeArrow;",
"8614": "RightTeeArrow;",
"8615": "mapstodown;",
"8617": "larrhk;",
"8618": "rarrhk;",
"8619": "looparrowleft;",
"8620": "rarrlp;",
"8621": "leftrightsquigarrow;",
"8622": "nleftrightarrow;",
"8624": "lsh;",
"8625": "rsh;",
"8626": "ldsh;",
"8627": "rdsh;",
"8629": "crarr;",
"8630": "curvearrowleft;",
"8631": "curvearrowright;",
"8634": "olarr;",
"8635": "orarr;",
"8636": "lharu;",
"8637": "lhard;",
"8638": "upharpoonright;",
"8639": "upharpoonleft;",
"8640": "RightVector;",
"8641": "rightharpoondown;",
"8642": "RightDownVector;",
"8643": "LeftDownVector;",
"8644": "rlarr;",
"8645": "UpArrowDownArrow;",
"8646": "lrarr;",
"8647": "llarr;",
"8648": "uuarr;",
"8649": "rrarr;",
"8650": "downdownarrows;",
"8651": "ReverseEquilibrium;",
"8652": "rlhar;",
"8653": "nLeftarrow;",
"8654": "nLeftrightarrow;",
"8655": "nRightarrow;",
"8656": "Leftarrow;",
"8657": "Uparrow;",
"8658": "Rightarrow;",
"8659": "Downarrow;",
"8660": "Leftrightarrow;",
"8661": "vArr;",
"8662": "nwArr;",
"8663": "neArr;",
"8664": "seArr;",
"8665": "swArr;",
"8666": "Lleftarrow;",
"8667": "Rrightarrow;",
"8669": "zigrarr;",
"8676": "LeftArrowBar;",
"8677": "RightArrowBar;",
"8693": "duarr;",
"8701": "loarr;",
"8702": "roarr;",
"8703": "hoarr;",
"8704": "forall;",
"8705": "complement;",
"8706": "PartialD;",
"8707": "Exists;",
"8708": "NotExists;",
"8709": "varnothing;",
"8711": "nabla;",
"8712": "isinv;",
"8713": "notinva;",
"8715": "SuchThat;",
"8716": "NotReverseElement;",
"8719": "Product;",
"8720": "Coproduct;",
"8721": "sum;",
"8722": "minus;",
"8723": "mp;",
"8724": "plusdo;",
"8726": "ssetmn;",
"8727": "lowast;",
"8728": "SmallCircle;",
"8730": "Sqrt;",
"8733": "vprop;",
"8734": "infin;",
"8735": "angrt;",
"8736": "angle;",
"8737": "measuredangle;",
"8738": "angsph;",
"8739": "VerticalBar;",
"8740": "nsmid;",
"8741": "spar;",
"8742": "nspar;",
"8743": "wedge;",
"8744": "vee;",
"8745": "cap;",
"8746": "cup;",
"8747": "Integral;",
"8748": "Int;",
"8749": "tint;",
"8750": "oint;",
"8751": "DoubleContourIntegral;",
"8752": "Cconint;",
"8753": "cwint;",
"8754": "cwconint;",
"8755": "CounterClockwiseContourIntegral;",
"8756": "therefore;",
"8757": "because;",
"8758": "ratio;",
"8759": "Proportion;",
"8760": "minusd;",
"8762": "mDDot;",
"8763": "homtht;",
"8764": "Tilde;",
"8765": "bsim;",
"8766": "mstpos;",
"8767": "acd;",
"8768": "wreath;",
"8769": "nsim;",
"8770": "esim;",
"8771": "TildeEqual;",
"8772": "nsimeq;",
"8773": "TildeFullEqual;",
"8774": "simne;",
"8775": "NotTildeFullEqual;",
"8776": "TildeTilde;",
"8777": "NotTildeTilde;",
"8778": "approxeq;",
"8779": "apid;",
"8780": "bcong;",
"8781": "CupCap;",
"8782": "HumpDownHump;",
"8783": "HumpEqual;",
"8784": "esdot;",
"8785": "eDot;",
"8786": "fallingdotseq;",
"8787": "risingdotseq;",
"8788": "coloneq;",
"8789": "eqcolon;",
"8790": "eqcirc;",
"8791": "cire;",
"8793": "wedgeq;",
"8794": "veeeq;",
"8796": "trie;",
"8799": "questeq;",
"8800": "NotEqual;",
"8801": "equiv;",
"8802": "NotCongruent;",
"8804": "leq;",
"8805": "GreaterEqual;",
"8806": "LessFullEqual;",
"8807": "GreaterFullEqual;",
"8808": "lneqq;",
"8809": "gneqq;",
"8810": "NestedLessLess;",
"8811": "NestedGreaterGreater;",
"8812": "twixt;",
"8813": "NotCupCap;",
"8814": "NotLess;",
"8815": "NotGreater;",
"8816": "NotLessEqual;",
"8817": "NotGreaterEqual;",
"8818": "lsim;",
"8819": "gtrsim;",
"8820": "NotLessTilde;",
"8821": "NotGreaterTilde;",
"8822": "lg;",
"8823": "gtrless;",
"8824": "ntlg;",
"8825": "ntgl;",
"8826": "Precedes;",
"8827": "Succeeds;",
"8828": "PrecedesSlantEqual;",
"8829": "SucceedsSlantEqual;",
"8830": "prsim;",
"8831": "succsim;",
"8832": "nprec;",
"8833": "nsucc;",
"8834": "subset;",
"8835": "supset;",
"8836": "nsub;",
"8837": "nsup;",
"8838": "SubsetEqual;",
"8839": "supseteq;",
"8840": "nsubseteq;",
"8841": "nsupseteq;",
"8842": "subsetneq;",
"8843": "supsetneq;",
"8845": "cupdot;",
"8846": "uplus;",
"8847": "SquareSubset;",
"8848": "SquareSuperset;",
"8849": "SquareSubsetEqual;",
"8850": "SquareSupersetEqual;",
"8851": "SquareIntersection;",
"8852": "SquareUnion;",
"8853": "oplus;",
"8854": "ominus;",
"8855": "otimes;",
"8856": "osol;",
"8857": "odot;",
"8858": "ocir;",
"8859": "oast;",
"8861": "odash;",
"8862": "plusb;",
"8863": "minusb;",
"8864": "timesb;",
"8865": "sdotb;",
"8866": "vdash;",
"8867": "LeftTee;",
"8868": "top;",
"8869": "UpTee;",
"8871": "models;",
"8872": "vDash;",
"8873": "Vdash;",
"8874": "Vvdash;",
"8875": "VDash;",
"8876": "nvdash;",
"8877": "nvDash;",
"8878": "nVdash;",
"8879": "nVDash;",
"8880": "prurel;",
"8882": "vltri;",
"8883": "vrtri;",
"8884": "trianglelefteq;",
"8885": "trianglerighteq;",
"8886": "origof;",
"8887": "imof;",
"8888": "mumap;",
"8889": "hercon;",
"8890": "intercal;",
"8891": "veebar;",
"8893": "barvee;",
"8894": "angrtvb;",
"8895": "lrtri;",
"8896": "xwedge;",
"8897": "xvee;",
"8898": "xcap;",
"8899": "xcup;",
"8900": "diamond;",
"8901": "sdot;",
"8902": "Star;",
"8903": "divonx;",
"8904": "bowtie;",
"8905": "ltimes;",
"8906": "rtimes;",
"8907": "lthree;",
"8908": "rthree;",
"8909": "bsime;",
"8910": "cuvee;",
"8911": "cuwed;",
"8912": "Subset;",
"8913": "Supset;",
"8914": "Cap;",
"8915": "Cup;",
"8916": "pitchfork;",
"8917": "epar;",
"8918": "ltdot;",
"8919": "gtrdot;",
"8920": "Ll;",
"8921": "ggg;",
"8922": "LessEqualGreater;",
"8923": "gtreqless;",
"8926": "curlyeqprec;",
"8927": "curlyeqsucc;",
"8928": "nprcue;",
"8929": "nsccue;",
"8930": "nsqsube;",
"8931": "nsqsupe;",
"8934": "lnsim;",
"8935": "gnsim;",
"8936": "prnsim;",
"8937": "succnsim;",
"8938": "ntriangleleft;",
"8939": "ntriangleright;",
"8940": "ntrianglelefteq;",
"8941": "ntrianglerighteq;",
"8942": "vellip;",
"8943": "ctdot;",
"8944": "utdot;",
"8945": "dtdot;",
"8946": "disin;",
"8947": "isinsv;",
"8948": "isins;",
"8949": "isindot;",
"8950": "notinvc;",
"8951": "notinvb;",
"8953": "isinE;",
"8954": "nisd;",
"8955": "xnis;",
"8956": "nis;",
"8957": "notnivc;",
"8958": "notnivb;",
"8965": "barwedge;",
"8966": "doublebarwedge;",
"8968": "LeftCeiling;",
"8969": "RightCeiling;",
"8970": "lfloor;",
"8971": "RightFloor;",
"8972": "drcrop;",
"8973": "dlcrop;",
"8974": "urcrop;",
"8975": "ulcrop;",
"8976": "bnot;",
"8978": "profline;",
"8979": "profsurf;",
"8981": "telrec;",
"8982": "target;",
"8988": "ulcorner;",
"8989": "urcorner;",
"8990": "llcorner;",
"8991": "lrcorner;",
"8994": "sfrown;",
"8995": "ssmile;",
"9005": "cylcty;",
"9006": "profalar;",
"9014": "topbot;",
"9021": "ovbar;",
"9023": "solbar;",
"9084": "angzarr;",
"9136": "lmoustache;",
"9137": "rmoustache;",
"9140": "tbrk;",
"9141": "UnderBracket;",
"9142": "bbrktbrk;",
"9180": "OverParenthesis;",
"9181": "UnderParenthesis;",
"9182": "OverBrace;",
"9183": "UnderBrace;",
"9186": "trpezium;",
"9191": "elinters;",
"9251": "blank;",
"9416": "oS;",
"9472": "HorizontalLine;",
"9474": "boxv;",
"9484": "boxdr;",
"9488": "boxdl;",
"9492": "boxur;",
"9496": "boxul;",
"9500": "boxvr;",
"9508": "boxvl;",
"9516": "boxhd;",
"9524": "boxhu;",
"9532": "boxvh;",
"9552": "boxH;",
"9553": "boxV;",
"9554": "boxdR;",
"9555": "boxDr;",
"9556": "boxDR;",
"9557": "boxdL;",
"9558": "boxDl;",
"9559": "boxDL;",
"9560": "boxuR;",
"9561": "boxUr;",
"9562": "boxUR;",
"9563": "boxuL;",
"9564": "boxUl;",
"9565": "boxUL;",
"9566": "boxvR;",
"9567": "boxVr;",
"9568": "boxVR;",
"9569": "boxvL;",
"9570": "boxVl;",
"9571": "boxVL;",
"9572": "boxHd;",
"9573": "boxhD;",
"9574": "boxHD;",
"9575": "boxHu;",
"9576": "boxhU;",
"9577": "boxHU;",
"9578": "boxvH;",
"9579": "boxVh;",
"9580": "boxVH;",
"9600": "uhblk;",
"9604": "lhblk;",
"9608": "block;",
"9617": "blk14;",
"9618": "blk12;",
"9619": "blk34;",
"9633": "square;",
"9642": "squf;",
"9643": "EmptyVerySmallSquare;",
"9645": "rect;",
"9646": "marker;",
"9649": "fltns;",
"9651": "xutri;",
"9652": "utrif;",
"9653": "utri;",
"9656": "rtrif;",
"9657": "triangleright;",
"9661": "xdtri;",
"9662": "dtrif;",
"9663": "triangledown;",
"9666": "ltrif;",
"9667": "triangleleft;",
"9674": "lozenge;",
"9675": "cir;",
"9708": "tridot;",
"9711": "xcirc;",
"9720": "ultri;",
"9721": "urtri;",
"9722": "lltri;",
"9723": "EmptySmallSquare;",
"9724": "FilledSmallSquare;",
"9733": "starf;",
"9734": "star;",
"9742": "phone;",
"9792": "female;",
"9794": "male;",
"9824": "spadesuit;",
"9827": "clubsuit;",
"9829": "heartsuit;",
"9830": "diams;",
"9834": "sung;",
"9837": "flat;",
"9838": "natural;",
"9839": "sharp;",
"10003": "checkmark;",
"10007": "cross;",
"10016": "maltese;",
"10038": "sext;",
"10072": "VerticalSeparator;",
"10098": "lbbrk;",
"10099": "rbbrk;",
"10184": "bsolhsub;",
"10185": "suphsol;",
"10214": "lobrk;",
"10215": "robrk;",
"10216": "LeftAngleBracket;",
"10217": "RightAngleBracket;",
"10218": "Lang;",
"10219": "Rang;",
"10220": "loang;",
"10221": "roang;",
"10229": "xlarr;",
"10230": "xrarr;",
"10231": "xharr;",
"10232": "xlArr;",
"10233": "xrArr;",
"10234": "xhArr;",
"10236": "xmap;",
"10239": "dzigrarr;",
"10498": "nvlArr;",
"10499": "nvrArr;",
"10500": "nvHarr;",
"10501": "Map;",
"10508": "lbarr;",
"10509": "rbarr;",
"10510": "lBarr;",
"10511": "rBarr;",
"10512": "RBarr;",
"10513": "DDotrahd;",
"10514": "UpArrowBar;",
"10515": "DownArrowBar;",
"10518": "Rarrtl;",
"10521": "latail;",
"10522": "ratail;",
"10523": "lAtail;",
"10524": "rAtail;",
"10525": "larrfs;",
"10526": "rarrfs;",
"10527": "larrbfs;",
"10528": "rarrbfs;",
"10531": "nwarhk;",
"10532": "nearhk;",
"10533": "searhk;",
"10534": "swarhk;",
"10535": "nwnear;",
"10536": "toea;",
"10537": "tosa;",
"10538": "swnwar;",
"10547": "rarrc;",
"10549": "cudarrr;",
"10550": "ldca;",
"10551": "rdca;",
"10552": "cudarrl;",
"10553": "larrpl;",
"10556": "curarrm;",
"10557": "cularrp;",
"10565": "rarrpl;",
"10568": "harrcir;",
"10569": "Uarrocir;",
"10570": "lurdshar;",
"10571": "ldrushar;",
"10574": "LeftRightVector;",
"10575": "RightUpDownVector;",
"10576": "DownLeftRightVector;",
"10577": "LeftUpDownVector;",
"10578": "LeftVectorBar;",
"10579": "RightVectorBar;",
"10580": "RightUpVectorBar;",
"10581": "RightDownVectorBar;",
"10582": "DownLeftVectorBar;",
"10583": "DownRightVectorBar;",
"10584": "LeftUpVectorBar;",
"10585": "LeftDownVectorBar;",
"10586": "LeftTeeVector;",
"10587": "RightTeeVector;",
"10588": "RightUpTeeVector;",
"10589": "RightDownTeeVector;",
"10590": "DownLeftTeeVector;",
"10591": "DownRightTeeVector;",
"10592": "LeftUpTeeVector;",
"10593": "LeftDownTeeVector;",
"10594": "lHar;",
"10595": "uHar;",
"10596": "rHar;",
"10597": "dHar;",
"10598": "luruhar;",
"10599": "ldrdhar;",
"10600": "ruluhar;",
"10601": "rdldhar;",
"10602": "lharul;",
"10603": "llhard;",
"10604": "rharul;",
"10605": "lrhard;",
"10606": "UpEquilibrium;",
"10607": "ReverseUpEquilibrium;",
"10608": "RoundImplies;",
"10609": "erarr;",
"10610": "simrarr;",
"10611": "larrsim;",
"10612": "rarrsim;",
"10613": "rarrap;",
"10614": "ltlarr;",
"10616": "gtrarr;",
"10617": "subrarr;",
"10619": "suplarr;",
"10620": "lfisht;",
"10621": "rfisht;",
"10622": "ufisht;",
"10623": "dfisht;",
"10629": "lopar;",
"10630": "ropar;",
"10635": "lbrke;",
"10636": "rbrke;",
"10637": "lbrkslu;",
"10638": "rbrksld;",
"10639": "lbrksld;",
"10640": "rbrkslu;",
"10641": "langd;",
"10642": "rangd;",
"10643": "lparlt;",
"10644": "rpargt;",
"10645": "gtlPar;",
"10646": "ltrPar;",
"10650": "vzigzag;",
"10652": "vangrt;",
"10653": "angrtvbd;",
"10660": "ange;",
"10661": "range;",
"10662": "dwangle;",
"10663": "uwangle;",
"10664": "angmsdaa;",
"10665": "angmsdab;",
"10666": "angmsdac;",
"10667": "angmsdad;",
"10668": "angmsdae;",
"10669": "angmsdaf;",
"10670": "angmsdag;",
"10671": "angmsdah;",
"10672": "bemptyv;",
"10673": "demptyv;",
"10674": "cemptyv;",
"10675": "raemptyv;",
"10676": "laemptyv;",
"10677": "ohbar;",
"10678": "omid;",
"10679": "opar;",
"10681": "operp;",
"10683": "olcross;",
"10684": "odsold;",
"10686": "olcir;",
"10687": "ofcir;",
"10688": "olt;",
"10689": "ogt;",
"10690": "cirscir;",
"10691": "cirE;",
"10692": "solb;",
"10693": "bsolb;",
"10697": "boxbox;",
"10701": "trisb;",
"10702": "rtriltri;",
"10703": "LeftTriangleBar;",
"10704": "RightTriangleBar;",
"10716": "iinfin;",
"10717": "infintie;",
"10718": "nvinfin;",
"10723": "eparsl;",
"10724": "smeparsl;",
"10725": "eqvparsl;",
"10731": "lozf;",
"10740": "RuleDelayed;",
"10742": "dsol;",
"10752": "xodot;",
"10753": "xoplus;",
"10754": "xotime;",
"10756": "xuplus;",
"10758": "xsqcup;",
"10764": "qint;",
"10765": "fpartint;",
"10768": "cirfnint;",
"10769": "awint;",
"10770": "rppolint;",
"10771": "scpolint;",
"10772": "npolint;",
"10773": "pointint;",
"10774": "quatint;",
"10775": "intlarhk;",
"10786": "pluscir;",
"10787": "plusacir;",
"10788": "simplus;",
"10789": "plusdu;",
"10790": "plussim;",
"10791": "plustwo;",
"10793": "mcomma;",
"10794": "minusdu;",
"10797": "loplus;",
"10798": "roplus;",
"10799": "Cross;",
"10800": "timesd;",
"10801": "timesbar;",
"10803": "smashp;",
"10804": "lotimes;",
"10805": "rotimes;",
"10806": "otimesas;",
"10807": "Otimes;",
"10808": "odiv;",
"10809": "triplus;",
"10810": "triminus;",
"10811": "tritime;",
"10812": "iprod;",
"10815": "amalg;",
"10816": "capdot;",
"10818": "ncup;",
"10819": "ncap;",
"10820": "capand;",
"10821": "cupor;",
"10822": "cupcap;",
"10823": "capcup;",
"10824": "cupbrcap;",
"10825": "capbrcup;",
"10826": "cupcup;",
"10827": "capcap;",
"10828": "ccups;",
"10829": "ccaps;",
"10832": "ccupssm;",
"10835": "And;",
"10836": "Or;",
"10837": "andand;",
"10838": "oror;",
"10839": "orslope;",
"10840": "andslope;",
"10842": "andv;",
"10843": "orv;",
"10844": "andd;",
"10845": "ord;",
"10847": "wedbar;",
"10854": "sdote;",
"10858": "simdot;",
"10861": "congdot;",
"10862": "easter;",
"10863": "apacir;",
"10864": "apE;",
"10865": "eplus;",
"10866": "pluse;",
"10867": "Esim;",
"10868": "Colone;",
"10869": "Equal;",
"10871": "eDDot;",
"10872": "equivDD;",
"10873": "ltcir;",
"10874": "gtcir;",
"10875": "ltquest;",
"10876": "gtquest;",
"10877": "LessSlantEqual;",
"10878": "GreaterSlantEqual;",
"10879": "lesdot;",
"10880": "gesdot;",
"10881": "lesdoto;",
"10882": "gesdoto;",
"10883": "lesdotor;",
"10884": "gesdotol;",
"10885": "lessapprox;",
"10886": "gtrapprox;",
"10887": "lneq;",
"10888": "gneq;",
"10889": "lnapprox;",
"10890": "gnapprox;",
"10891": "lesseqqgtr;",
"10892": "gtreqqless;",
"10893": "lsime;",
"10894": "gsime;",
"10895": "lsimg;",
"10896": "gsiml;",
"10897": "lgE;",
"10898": "glE;",
"10899": "lesges;",
"10900": "gesles;",
"10901": "eqslantless;",
"10902": "eqslantgtr;",
"10903": "elsdot;",
"10904": "egsdot;",
"10905": "el;",
"10906": "eg;",
"10909": "siml;",
"10910": "simg;",
"10911": "simlE;",
"10912": "simgE;",
"10913": "LessLess;",
"10914": "GreaterGreater;",
"10916": "glj;",
"10917": "gla;",
"10918": "ltcc;",
"10919": "gtcc;",
"10920": "lescc;",
"10921": "gescc;",
"10922": "smt;",
"10923": "lat;",
"10924": "smte;",
"10925": "late;",
"10926": "bumpE;",
"10927": "preceq;",
"10928": "succeq;",
"10931": "prE;",
"10932": "scE;",
"10933": "prnE;",
"10934": "succneqq;",
"10935": "precapprox;",
"10936": "succapprox;",
"10937": "prnap;",
"10938": "succnapprox;",
"10939": "Pr;",
"10940": "Sc;",
"10941": "subdot;",
"10942": "supdot;",
"10943": "subplus;",
"10944": "supplus;",
"10945": "submult;",
"10946": "supmult;",
"10947": "subedot;",
"10948": "supedot;",
"10949": "subseteqq;",
"10950": "supseteqq;",
"10951": "subsim;",
"10952": "supsim;",
"10955": "subsetneqq;",
"10956": "supsetneqq;",
"10959": "csub;",
"10960": "csup;",
"10961": "csube;",
"10962": "csupe;",
"10963": "subsup;",
"10964": "supsub;",
"10965": "subsub;",
"10966": "supsup;",
"10967": "suphsub;",
"10968": "supdsub;",
"10969": "forkv;",
"10970": "topfork;",
"10971": "mlcp;",
"10980": "DoubleLeftTee;",
"10982": "Vdashl;",
"10983": "Barv;",
"10984": "vBar;",
"10985": "vBarv;",
"10987": "Vbar;",
"10988": "Not;",
"10989": "bNot;",
"10990": "rnmid;",
"10991": "cirmid;",
"10992": "midcir;",
"10993": "topcir;",
"10994": "nhpar;",
"10995": "parsim;",
"11005": "parsl;",
"64256": "fflig;",
"64257": "filig;",
"64258": "fllig;",
"64259": "ffilig;",
"64260": "ffllig;"
}
},{}],11:[function(require,module,exports){
'use strict';
var hasOwn = Object.prototype.hasOwnProperty;
var toStr = Object.prototype.toString;
var defineProperty = Object.defineProperty;
var gOPD = Object.getOwnPropertyDescriptor;
var isArray = function isArray(arr) {
if (typeof Array.isArray === 'function') {
return Array.isArray(arr);
}
return toStr.call(arr) === '[object Array]';
};
var isPlainObject = function isPlainObject(obj) {
if (!obj || toStr.call(obj) !== '[object Object]') {
return false;
}
var hasOwnConstructor = hasOwn.call(obj, 'constructor');
var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
// Not own constructor property must be Object
if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
return false;
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
var key;
for (key in obj) { /**/ }
return typeof key === 'undefined' || hasOwn.call(obj, key);
};
// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target
var setProperty = function setProperty(target, options) {
if (defineProperty && options.name === '__proto__') {
defineProperty(target, options.name, {
enumerable: true,
configurable: true,
value: options.newValue,
writable: true
});
} else {
target[options.name] = options.newValue;
}
};
// Return undefined instead of __proto__ if '__proto__' is not an own property
var getProperty = function getProperty(obj, name) {
if (name === '__proto__') {
if (!hasOwn.call(obj, name)) {
return void 0;
} else if (gOPD) {
// In early versions of node, obj['__proto__'] is buggy when obj has
// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.
return gOPD(obj, name).value;
}
}
return obj[name];
};
module.exports = function extend() {
var options, name, src, copy, copyIsArray, clone;
var target = arguments[0];
var i = 1;
var length = arguments.length;
var deep = false;
// Handle a deep copy situation
if (typeof target === 'boolean') {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
if (target == null || (typeof target !== 'object' && typeof target !== 'function')) {
target = {};
}
for (; i < length; ++i) {
options = arguments[i];
// Only deal with non-null/undefined values
if (options != null) {
// Extend the base object
for (name in options) {
src = getProperty(target, name);
copy = getProperty(options, name);
// Prevent never-ending loop
if (target !== copy) {
// Recurse if we're merging plain objects or arrays
if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && isArray(src) ? src : [];
} else {
clone = src && isPlainObject(src) ? src : {};
}
// Never move original objects, clone them
setProperty(target, { name: name, newValue: extend(deep, clone, copy) });
// Don't bring in undefined values
} else if (typeof copy !== 'undefined') {
setProperty(target, { name: name, newValue: copy });
}
}
}
}
}
// Return the modified object
return target;
};
},{}],12:[function(require,module,exports){
(function (global){
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = typeof exports == 'object' && exports &&
!exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define.amd == 'object' &&
define.amd
) {
define('punycode', function() {
return punycode;
});
} else if (freeExports && freeModule) {
if (module.exports == freeExports) {
// in Node.js, io.js, or RingoJS v0.8.0+
freeModule.exports = punycode;
} else {
// in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
}
}
} else {
// in Rhino or a web browser
root.punycode = punycode;
}
}(this));
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],13:[function(require,module,exports){
/**
* This file automatically generated from `pre-publish.js`.
* Do not manually edit.
*/
module.exports = {
"area": true,
"base": true,
"br": true,
"col": true,
"embed": true,
"hr": true,
"img": true,
"input": true,
"keygen": true,
"link": true,
"menuitem": true,
"meta": true,
"param": true,
"source": true,
"track": true,
"wbr": true
};
},{}]},{},[3]);