123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904 |
- (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]);
|