You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
497 KiB
1 lines
497 KiB
{"ast":null,"code":"/* sockjs-client v1.6.0 | http://sockjs.org | MIT license */\n(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n\n g.SockJS = f();\n }\n})(function () {\n var define, module, exports;\n return function () {\n function r(e, n, t) {\n function o(i, f) {\n if (!n[i]) {\n if (!e[i]) {\n var c = \"function\" == typeof require && require;\n if (!f && c) return c(i, !0);\n if (u) return u(i, !0);\n var a = new Error(\"Cannot find module '\" + i + \"'\");\n throw a.code = \"MODULE_NOT_FOUND\", a;\n }\n\n var p = n[i] = {\n exports: {}\n };\n e[i][0].call(p.exports, function (r) {\n var n = e[i][1][r];\n return o(n || r);\n }, p, p.exports, r, e, n, t);\n }\n\n return n[i].exports;\n }\n\n for (var u = \"function\" == typeof require && require, i = 0; i < t.length; i++) o(t[i]);\n\n return o;\n }\n\n return r;\n }()({\n 1: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var transportList = require('./transport-list');\n\n module.exports = require('./main')(transportList); // TODO can't get rid of this until all servers do\n\n if ('_sockjs_onload' in global) {\n setTimeout(global._sockjs_onload, 1);\n }\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./main\": 14,\n \"./transport-list\": 16\n }],\n 2: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n Event = require('./event');\n\n function CloseEvent() {\n Event.call(this);\n this.initEvent('close', false, false);\n this.wasClean = false;\n this.code = 0;\n this.reason = '';\n }\n\n inherits(CloseEvent, Event);\n module.exports = CloseEvent;\n }, {\n \"./event\": 4,\n \"inherits\": 57\n }],\n 3: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n EventTarget = require('./eventtarget');\n\n function EventEmitter() {\n EventTarget.call(this);\n }\n\n inherits(EventEmitter, EventTarget);\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type) {\n delete this._listeners[type];\n } else {\n this._listeners = {};\n }\n };\n\n EventEmitter.prototype.once = function (type, listener) {\n var self = this,\n fired = false;\n\n function g() {\n self.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n this.on(type, g);\n };\n\n EventEmitter.prototype.emit = function () {\n var type = arguments[0];\n var listeners = this._listeners[type];\n\n if (!listeners) {\n return;\n } // equivalent of Array.prototype.slice.call(arguments, 1);\n\n\n var l = arguments.length;\n var args = new Array(l - 1);\n\n for (var ai = 1; ai < l; ai++) {\n args[ai - 1] = arguments[ai];\n }\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n };\n\n EventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;\n EventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;\n module.exports.EventEmitter = EventEmitter;\n }, {\n \"./eventtarget\": 5,\n \"inherits\": 57\n }],\n 4: [function (require, module, exports) {\n 'use strict';\n\n function Event(eventType) {\n this.type = eventType;\n }\n\n Event.prototype.initEvent = function (eventType, canBubble, cancelable) {\n this.type = eventType;\n this.bubbles = canBubble;\n this.cancelable = cancelable;\n this.timeStamp = +new Date();\n return this;\n };\n\n Event.prototype.stopPropagation = function () {};\n\n Event.prototype.preventDefault = function () {};\n\n Event.CAPTURING_PHASE = 1;\n Event.AT_TARGET = 2;\n Event.BUBBLING_PHASE = 3;\n module.exports = Event;\n }, {}],\n 5: [function (require, module, exports) {\n 'use strict';\n /* Simplified implementation of DOM2 EventTarget.\n * http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget\n */\n\n function EventTarget() {\n this._listeners = {};\n }\n\n EventTarget.prototype.addEventListener = function (eventType, listener) {\n if (!(eventType in this._listeners)) {\n this._listeners[eventType] = [];\n }\n\n var arr = this._listeners[eventType]; // #4\n\n if (arr.indexOf(listener) === -1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n arr = arr.concat([listener]);\n }\n\n this._listeners[eventType] = arr;\n };\n\n EventTarget.prototype.removeEventListener = function (eventType, listener) {\n var arr = this._listeners[eventType];\n\n if (!arr) {\n return;\n }\n\n var idx = arr.indexOf(listener);\n\n if (idx !== -1) {\n if (arr.length > 1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n this._listeners[eventType] = arr.slice(0, idx).concat(arr.slice(idx + 1));\n } else {\n delete this._listeners[eventType];\n }\n\n return;\n }\n };\n\n EventTarget.prototype.dispatchEvent = function () {\n var event = arguments[0];\n var t = event.type; // equivalent of Array.prototype.slice.call(arguments, 0);\n\n var args = arguments.length === 1 ? [event] : Array.apply(null, arguments); // TODO: This doesn't match the real behavior; per spec, onfoo get\n // their place in line from the /first/ time they're set from\n // non-null. Although WebKit bumps it to the end every time it's\n // set.\n\n if (this['on' + t]) {\n this['on' + t].apply(this, args);\n }\n\n if (t in this._listeners) {\n // Grab a reference to the listeners list. removeEventListener may alter the list.\n var listeners = this._listeners[t];\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n }\n };\n\n module.exports = EventTarget;\n }, {}],\n 6: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n Event = require('./event');\n\n function TransportMessageEvent(data) {\n Event.call(this);\n this.initEvent('message', false, false);\n this.data = data;\n }\n\n inherits(TransportMessageEvent, Event);\n module.exports = TransportMessageEvent;\n }, {\n \"./event\": 4,\n \"inherits\": 57\n }],\n 7: [function (require, module, exports) {\n 'use strict';\n\n var iframeUtils = require('./utils/iframe');\n\n function FacadeJS(transport) {\n this._transport = transport;\n transport.on('message', this._transportMessage.bind(this));\n transport.on('close', this._transportClose.bind(this));\n }\n\n FacadeJS.prototype._transportClose = function (code, reason) {\n iframeUtils.postMessage('c', JSON.stringify([code, reason]));\n };\n\n FacadeJS.prototype._transportMessage = function (frame) {\n iframeUtils.postMessage('t', frame);\n };\n\n FacadeJS.prototype._send = function (data) {\n this._transport.send(data);\n };\n\n FacadeJS.prototype._close = function () {\n this._transport.close();\n\n this._transport.removeAllListeners();\n };\n\n module.exports = FacadeJS;\n }, {\n \"./utils/iframe\": 47\n }],\n 8: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var urlUtils = require('./utils/url'),\n eventUtils = require('./utils/event'),\n FacadeJS = require('./facade'),\n InfoIframeReceiver = require('./info-iframe-receiver'),\n iframeUtils = require('./utils/iframe'),\n loc = require('./location');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:iframe-bootstrap');\n }\n\n module.exports = function (SockJS, availableTransports) {\n var transportMap = {};\n availableTransports.forEach(function (at) {\n if (at.facadeTransport) {\n transportMap[at.facadeTransport.transportName] = at.facadeTransport;\n }\n }); // hard-coded for the info iframe\n // TODO see if we can make this more dynamic\n\n transportMap[InfoIframeReceiver.transportName] = InfoIframeReceiver;\n var parentOrigin;\n /* eslint-disable camelcase */\n\n SockJS.bootstrap_iframe = function () {\n /* eslint-enable camelcase */\n var facade;\n iframeUtils.currentWindowId = loc.hash.slice(1);\n\n var onMessage = function (e) {\n if (e.source !== parent) {\n return;\n }\n\n if (typeof parentOrigin === 'undefined') {\n parentOrigin = e.origin;\n }\n\n if (e.origin !== parentOrigin) {\n return;\n }\n\n var iframeMessage;\n\n try {\n iframeMessage = JSON.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== iframeUtils.currentWindowId) {\n return;\n }\n\n switch (iframeMessage.type) {\n case 's':\n var p;\n\n try {\n p = JSON.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n break;\n }\n\n var version = p[0];\n var transport = p[1];\n var transUrl = p[2];\n var baseUrl = p[3];\n debug(version, transport, transUrl, baseUrl); // change this to semver logic\n\n if (version !== SockJS.version) {\n throw new Error('Incompatible SockJS! Main site uses:' + ' \"' + version + '\", the iframe:' + ' \"' + SockJS.version + '\".');\n }\n\n if (!urlUtils.isOriginEqual(transUrl, loc.href) || !urlUtils.isOriginEqual(baseUrl, loc.href)) {\n throw new Error('Can\\'t connect to different domain from within an ' + 'iframe. (' + loc.href + ', ' + transUrl + ', ' + baseUrl + ')');\n }\n\n facade = new FacadeJS(new transportMap[transport](transUrl, baseUrl));\n break;\n\n case 'm':\n facade._send(iframeMessage.data);\n\n break;\n\n case 'c':\n if (facade) {\n facade._close();\n }\n\n facade = null;\n break;\n }\n };\n\n eventUtils.attachEvent('message', onMessage); // Start\n\n iframeUtils.postMessage('s');\n };\n };\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"./facade\": 7,\n \"./info-iframe-receiver\": 10,\n \"./location\": 13,\n \"./utils/event\": 46,\n \"./utils/iframe\": 47,\n \"./utils/url\": 52,\n \"debug\": 55\n }],\n 9: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits'),\n objectUtils = require('./utils/object');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-ajax');\n }\n\n function InfoAjax(url, AjaxObject) {\n EventEmitter.call(this);\n var self = this;\n var t0 = +new Date();\n this.xo = new AjaxObject('GET', url);\n this.xo.once('finish', function (status, text) {\n var info, rtt;\n\n if (status === 200) {\n rtt = +new Date() - t0;\n\n if (text) {\n try {\n info = JSON.parse(text);\n } catch (e) {\n debug('bad json', text);\n }\n }\n\n if (!objectUtils.isObject(info)) {\n info = {};\n }\n }\n\n self.emit('finish', info, rtt);\n self.removeAllListeners();\n });\n }\n\n inherits(InfoAjax, EventEmitter);\n\n InfoAjax.prototype.close = function () {\n this.removeAllListeners();\n this.xo.close();\n };\n\n module.exports = InfoAjax;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"./utils/object\": 49,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 10: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter,\n XHRLocalObject = require('./transport/sender/xhr-local'),\n InfoAjax = require('./info-ajax');\n\n function InfoReceiverIframe(transUrl) {\n var self = this;\n EventEmitter.call(this);\n this.ir = new InfoAjax(transUrl, XHRLocalObject);\n this.ir.once('finish', function (info, rtt) {\n self.ir = null;\n self.emit('message', JSON.stringify([info, rtt]));\n });\n }\n\n inherits(InfoReceiverIframe, EventEmitter);\n InfoReceiverIframe.transportName = 'iframe-info-receiver';\n\n InfoReceiverIframe.prototype.close = function () {\n if (this.ir) {\n this.ir.close();\n this.ir = null;\n }\n\n this.removeAllListeners();\n };\n\n module.exports = InfoReceiverIframe;\n }, {\n \"./info-ajax\": 9,\n \"./transport/sender/xhr-local\": 37,\n \"events\": 3,\n \"inherits\": 57\n }],\n 11: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits'),\n utils = require('./utils/event'),\n IframeTransport = require('./transport/iframe'),\n InfoReceiverIframe = require('./info-iframe-receiver');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-iframe');\n }\n\n function InfoIframe(baseUrl, url) {\n var self = this;\n EventEmitter.call(this);\n\n var go = function () {\n var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl);\n ifr.once('message', function (msg) {\n if (msg) {\n var d;\n\n try {\n d = JSON.parse(msg);\n } catch (e) {\n debug('bad json', msg);\n self.emit('finish');\n self.close();\n return;\n }\n\n var info = d[0],\n rtt = d[1];\n self.emit('finish', info, rtt);\n }\n\n self.close();\n });\n ifr.once('close', function () {\n self.emit('finish');\n self.close();\n });\n }; // TODO this seems the same as the 'needBody' from transports\n\n\n if (!global.document.body) {\n utils.attachEvent('load', go);\n } else {\n go();\n }\n }\n\n inherits(InfoIframe, EventEmitter);\n\n InfoIframe.enabled = function () {\n return IframeTransport.enabled();\n };\n\n InfoIframe.prototype.close = function () {\n if (this.ifr) {\n this.ifr.close();\n }\n\n this.removeAllListeners();\n this.ifr = null;\n };\n\n module.exports = InfoIframe;\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./info-iframe-receiver\": 10,\n \"./transport/iframe\": 22,\n \"./utils/event\": 46,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 12: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits'),\n urlUtils = require('./utils/url'),\n XDR = require('./transport/sender/xdr'),\n XHRCors = require('./transport/sender/xhr-cors'),\n XHRLocal = require('./transport/sender/xhr-local'),\n XHRFake = require('./transport/sender/xhr-fake'),\n InfoIframe = require('./info-iframe'),\n InfoAjax = require('./info-ajax');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-receiver');\n }\n\n function InfoReceiver(baseUrl, urlInfo) {\n debug(baseUrl);\n var self = this;\n EventEmitter.call(this);\n setTimeout(function () {\n self.doXhr(baseUrl, urlInfo);\n }, 0);\n }\n\n inherits(InfoReceiver, EventEmitter); // TODO this is currently ignoring the list of available transports and the whitelist\n\n InfoReceiver._getReceiver = function (baseUrl, url, urlInfo) {\n // determine method of CORS support (if needed)\n if (urlInfo.sameOrigin) {\n return new InfoAjax(url, XHRLocal);\n }\n\n if (XHRCors.enabled) {\n return new InfoAjax(url, XHRCors);\n }\n\n if (XDR.enabled && urlInfo.sameScheme) {\n return new InfoAjax(url, XDR);\n }\n\n if (InfoIframe.enabled()) {\n return new InfoIframe(baseUrl, url);\n }\n\n return new InfoAjax(url, XHRFake);\n };\n\n InfoReceiver.prototype.doXhr = function (baseUrl, urlInfo) {\n var self = this,\n url = urlUtils.addPath(baseUrl, '/info');\n debug('doXhr', url);\n this.xo = InfoReceiver._getReceiver(baseUrl, url, urlInfo);\n this.timeoutRef = setTimeout(function () {\n debug('timeout');\n\n self._cleanup(false);\n\n self.emit('finish');\n }, InfoReceiver.timeout);\n this.xo.once('finish', function (info, rtt) {\n debug('finish', info, rtt);\n\n self._cleanup(true);\n\n self.emit('finish', info, rtt);\n });\n };\n\n InfoReceiver.prototype._cleanup = function (wasClean) {\n debug('_cleanup');\n clearTimeout(this.timeoutRef);\n this.timeoutRef = null;\n\n if (!wasClean && this.xo) {\n this.xo.close();\n }\n\n this.xo = null;\n };\n\n InfoReceiver.prototype.close = function () {\n debug('close');\n this.removeAllListeners();\n\n this._cleanup(false);\n };\n\n InfoReceiver.timeout = 8000;\n module.exports = InfoReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"./info-ajax\": 9,\n \"./info-iframe\": 11,\n \"./transport/sender/xdr\": 34,\n \"./transport/sender/xhr-cors\": 35,\n \"./transport/sender/xhr-fake\": 36,\n \"./transport/sender/xhr-local\": 37,\n \"./utils/url\": 52,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 13: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n module.exports = global.location || {\n origin: 'http://localhost:80',\n protocol: 'http:',\n host: 'localhost',\n port: 80,\n href: 'http://localhost/',\n hash: ''\n };\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 14: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n require('./shims');\n\n var URL = require('url-parse'),\n inherits = require('inherits'),\n random = require('./utils/random'),\n escape = require('./utils/escape'),\n urlUtils = require('./utils/url'),\n eventUtils = require('./utils/event'),\n transport = require('./utils/transport'),\n objectUtils = require('./utils/object'),\n browser = require('./utils/browser'),\n log = require('./utils/log'),\n Event = require('./event/event'),\n EventTarget = require('./event/eventtarget'),\n loc = require('./location'),\n CloseEvent = require('./event/close'),\n TransportMessageEvent = require('./event/trans-message'),\n InfoReceiver = require('./info-receiver');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:main');\n }\n\n var transports; // follow constructor steps defined at http://dev.w3.org/html5/websockets/#the-websocket-interface\n\n function SockJS(url, protocols, options) {\n if (!(this instanceof SockJS)) {\n return new SockJS(url, protocols, options);\n }\n\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'SockJS: 1 argument required, but only 0 present\");\n }\n\n EventTarget.call(this);\n this.readyState = SockJS.CONNECTING;\n this.extensions = '';\n this.protocol = ''; // non-standard extension\n\n options = options || {};\n\n if (options.protocols_whitelist) {\n log.warn(\"'protocols_whitelist' is DEPRECATED. Use 'transports' instead.\");\n }\n\n this._transportsWhitelist = options.transports;\n this._transportOptions = options.transportOptions || {};\n this._timeout = options.timeout || 0;\n var sessionId = options.sessionId || 8;\n\n if (typeof sessionId === 'function') {\n this._generateSessionId = sessionId;\n } else if (typeof sessionId === 'number') {\n this._generateSessionId = function () {\n return random.string(sessionId);\n };\n } else {\n throw new TypeError('If sessionId is used in the options, it needs to be a number or a function.');\n }\n\n this._server = options.server || random.numberString(1000); // Step 1 of WS spec - parse and validate the url. Issue #8\n\n var parsedUrl = new URL(url);\n\n if (!parsedUrl.host || !parsedUrl.protocol) {\n throw new SyntaxError(\"The URL '\" + url + \"' is invalid\");\n } else if (parsedUrl.hash) {\n throw new SyntaxError('The URL must not contain a fragment');\n } else if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new SyntaxError(\"The URL's scheme must be either 'http:' or 'https:'. '\" + parsedUrl.protocol + \"' is not allowed.\");\n }\n\n var secure = parsedUrl.protocol === 'https:'; // Step 2 - don't allow secure origin with an insecure protocol\n\n if (loc.protocol === 'https:' && !secure) {\n // exception is 127.0.0.0/8 and ::1 urls\n if (!urlUtils.isLoopbackAddr(parsedUrl.hostname)) {\n throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS');\n }\n } // Step 3 - check port access - no need here\n // Step 4 - parse protocols argument\n\n\n if (!protocols) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n protocols = [protocols];\n } // Step 5 - check protocols argument\n\n\n var sortedProtocols = protocols.sort();\n sortedProtocols.forEach(function (proto, i) {\n if (!proto) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is invalid.\");\n }\n\n if (i < sortedProtocols.length - 1 && proto === sortedProtocols[i + 1]) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is duplicated.\");\n }\n }); // Step 6 - convert origin\n\n var o = urlUtils.getOrigin(loc.href);\n this._origin = o ? o.toLowerCase() : null; // remove the trailing slash\n\n parsedUrl.set('pathname', parsedUrl.pathname.replace(/\\/+$/, '')); // store the sanitized url\n\n this.url = parsedUrl.href;\n debug('using url', this.url); // Step 7 - start connection in background\n // obtain server info\n // http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-26\n\n this._urlInfo = {\n nullOrigin: !browser.hasDomain(),\n sameOrigin: urlUtils.isOriginEqual(this.url, loc.href),\n sameScheme: urlUtils.isSchemeEqual(this.url, loc.href)\n };\n this._ir = new InfoReceiver(this.url, this._urlInfo);\n\n this._ir.once('finish', this._receiveInfo.bind(this));\n }\n\n inherits(SockJS, EventTarget);\n\n function userSetCode(code) {\n return code === 1000 || code >= 3000 && code <= 4999;\n }\n\n SockJS.prototype.close = function (code, reason) {\n // Step 1\n if (code && !userSetCode(code)) {\n throw new Error('InvalidAccessError: Invalid code');\n } // Step 2.4 states the max is 123 bytes, but we are just checking length\n\n\n if (reason && reason.length > 123) {\n throw new SyntaxError('reason argument has an invalid length');\n } // Step 3.1\n\n\n if (this.readyState === SockJS.CLOSING || this.readyState === SockJS.CLOSED) {\n return;\n } // TODO look at docs to determine how to set this\n\n\n var wasClean = true;\n\n this._close(code || 1000, reason || 'Normal closure', wasClean);\n };\n\n SockJS.prototype.send = function (data) {\n // #13 - convert anything non-string to string\n // TODO this currently turns objects into [object Object]\n if (typeof data !== 'string') {\n data = '' + data;\n }\n\n if (this.readyState === SockJS.CONNECTING) {\n throw new Error('InvalidStateError: The connection has not been established yet');\n }\n\n if (this.readyState !== SockJS.OPEN) {\n return;\n }\n\n this._transport.send(escape.quote(data));\n };\n\n SockJS.version = require('./version');\n SockJS.CONNECTING = 0;\n SockJS.OPEN = 1;\n SockJS.CLOSING = 2;\n SockJS.CLOSED = 3;\n\n SockJS.prototype._receiveInfo = function (info, rtt) {\n debug('_receiveInfo', rtt);\n this._ir = null;\n\n if (!info) {\n this._close(1002, 'Cannot connect to server');\n\n return;\n } // establish a round-trip timeout (RTO) based on the\n // round-trip time (RTT)\n\n\n this._rto = this.countRTO(rtt); // allow server to override url used for the actual transport\n\n this._transUrl = info.base_url ? info.base_url : this.url;\n info = objectUtils.extend(info, this._urlInfo);\n debug('info', info); // determine list of desired and supported transports\n\n var enabledTransports = transports.filterToEnabled(this._transportsWhitelist, info);\n this._transports = enabledTransports.main;\n debug(this._transports.length + ' enabled transports');\n\n this._connect();\n };\n\n SockJS.prototype._connect = function () {\n for (var Transport = this._transports.shift(); Transport; Transport = this._transports.shift()) {\n debug('attempt', Transport.transportName);\n\n if (Transport.needBody) {\n if (!global.document.body || typeof global.document.readyState !== 'undefined' && global.document.readyState !== 'complete' && global.document.readyState !== 'interactive') {\n debug('waiting for body');\n\n this._transports.unshift(Transport);\n\n eventUtils.attachEvent('load', this._connect.bind(this));\n return;\n }\n } // calculate timeout based on RTO and round trips. Default to 5s\n\n\n var timeoutMs = Math.max(this._timeout, this._rto * Transport.roundTrips || 5000);\n this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs);\n debug('using timeout', timeoutMs);\n var transportUrl = urlUtils.addPath(this._transUrl, '/' + this._server + '/' + this._generateSessionId());\n var options = this._transportOptions[Transport.transportName];\n debug('transport url', transportUrl);\n var transportObj = new Transport(transportUrl, this._transUrl, options);\n transportObj.on('message', this._transportMessage.bind(this));\n transportObj.once('close', this._transportClose.bind(this));\n transportObj.transportName = Transport.transportName;\n this._transport = transportObj;\n return;\n }\n\n this._close(2000, 'All transports failed', false);\n };\n\n SockJS.prototype._transportTimeout = function () {\n debug('_transportTimeout');\n\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transport) {\n this._transport.close();\n }\n\n this._transportClose(2007, 'Transport timed out');\n }\n };\n\n SockJS.prototype._transportMessage = function (msg) {\n debug('_transportMessage', msg);\n var self = this,\n type = msg.slice(0, 1),\n content = msg.slice(1),\n payload; // first check for messages that don't need a payload\n\n switch (type) {\n case 'o':\n this._open();\n\n return;\n\n case 'h':\n this.dispatchEvent(new Event('heartbeat'));\n debug('heartbeat', this.transport);\n return;\n }\n\n if (content) {\n try {\n payload = JSON.parse(content);\n } catch (e) {\n debug('bad json', content);\n }\n }\n\n if (typeof payload === 'undefined') {\n debug('empty payload', content);\n return;\n }\n\n switch (type) {\n case 'a':\n if (Array.isArray(payload)) {\n payload.forEach(function (p) {\n debug('message', self.transport, p);\n self.dispatchEvent(new TransportMessageEvent(p));\n });\n }\n\n break;\n\n case 'm':\n debug('message', this.transport, payload);\n this.dispatchEvent(new TransportMessageEvent(payload));\n break;\n\n case 'c':\n if (Array.isArray(payload) && payload.length === 2) {\n this._close(payload[0], payload[1], true);\n }\n\n break;\n }\n };\n\n SockJS.prototype._transportClose = function (code, reason) {\n debug('_transportClose', this.transport, code, reason);\n\n if (this._transport) {\n this._transport.removeAllListeners();\n\n this._transport = null;\n this.transport = null;\n }\n\n if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) {\n this._connect();\n\n return;\n }\n\n this._close(code, reason);\n };\n\n SockJS.prototype._open = function () {\n debug('_open', this._transport && this._transport.transportName, this.readyState);\n\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transportTimeoutId) {\n clearTimeout(this._transportTimeoutId);\n this._transportTimeoutId = null;\n }\n\n this.readyState = SockJS.OPEN;\n this.transport = this._transport.transportName;\n this.dispatchEvent(new Event('open'));\n debug('connected', this.transport);\n } else {\n // The server might have been restarted, and lost track of our\n // connection.\n this._close(1006, 'Server lost session');\n }\n };\n\n SockJS.prototype._close = function (code, reason, wasClean) {\n debug('_close', this.transport, code, reason, wasClean, this.readyState);\n var forceFail = false;\n\n if (this._ir) {\n forceFail = true;\n\n this._ir.close();\n\n this._ir = null;\n }\n\n if (this._transport) {\n this._transport.close();\n\n this._transport = null;\n this.transport = null;\n }\n\n if (this.readyState === SockJS.CLOSED) {\n throw new Error('InvalidStateError: SockJS has already been closed');\n }\n\n this.readyState = SockJS.CLOSING;\n setTimeout(function () {\n this.readyState = SockJS.CLOSED;\n\n if (forceFail) {\n this.dispatchEvent(new Event('error'));\n }\n\n var e = new CloseEvent('close');\n e.wasClean = wasClean || false;\n e.code = code || 1000;\n e.reason = reason;\n this.dispatchEvent(e);\n this.onmessage = this.onclose = this.onerror = null;\n debug('disconnected');\n }.bind(this), 0);\n }; // See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/\n // and RFC 2988.\n\n\n SockJS.prototype.countRTO = function (rtt) {\n // In a local environment, when using IE8/9 and the `jsonp-polling`\n // transport the time needed to establish a connection (the time that pass\n // from the opening of the transport to the call of `_dispatchOpen`) is\n // around 200msec (the lower bound used in the article above) and this\n // causes spurious timeouts. For this reason we calculate a value slightly\n // larger than that used in the article.\n if (rtt > 100) {\n return 4 * rtt; // rto > 400msec\n }\n\n return 300 + rtt; // 300msec < rto <= 400msec\n };\n\n module.exports = function (availableTransports) {\n transports = transport(availableTransports);\n\n require('./iframe-bootstrap')(SockJS, availableTransports);\n\n return SockJS;\n };\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./event/close\": 2,\n \"./event/event\": 4,\n \"./event/eventtarget\": 5,\n \"./event/trans-message\": 6,\n \"./iframe-bootstrap\": 8,\n \"./info-receiver\": 12,\n \"./location\": 13,\n \"./shims\": 15,\n \"./utils/browser\": 44,\n \"./utils/escape\": 45,\n \"./utils/event\": 46,\n \"./utils/log\": 48,\n \"./utils/object\": 49,\n \"./utils/random\": 50,\n \"./utils/transport\": 51,\n \"./utils/url\": 52,\n \"./version\": 53,\n \"debug\": 55,\n \"inherits\": 57,\n \"url-parse\": 60\n }],\n 15: [function (require, module, exports) {\n /* eslint-disable */\n\n /* jscs: disable */\n 'use strict'; // pulled specific shims from https://github.com/es-shims/es5-shim\n\n var ArrayPrototype = Array.prototype;\n var ObjectPrototype = Object.prototype;\n var FunctionPrototype = Function.prototype;\n var StringPrototype = String.prototype;\n var array_slice = ArrayPrototype.slice;\n var _toString = ObjectPrototype.toString;\n\n var isFunction = function (val) {\n return ObjectPrototype.toString.call(val) === '[object Function]';\n };\n\n var isArray = function isArray(obj) {\n return _toString.call(obj) === '[object Array]';\n };\n\n var isString = function isString(obj) {\n return _toString.call(obj) === '[object String]';\n };\n\n var supportsDescriptors = Object.defineProperty && function () {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch (e) {\n /* this is ES3 */\n return false;\n }\n }(); // Define configurable, writable and non-enumerable props\n // if they don't exist.\n\n\n var defineProperty;\n\n if (supportsDescriptors) {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && name in object) {\n return;\n }\n\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: method\n });\n };\n } else {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && name in object) {\n return;\n }\n\n object[name] = method;\n };\n }\n\n var defineProperties = function (object, map, forceAssign) {\n for (var name in map) {\n if (ObjectPrototype.hasOwnProperty.call(map, name)) {\n defineProperty(object, name, map[name], forceAssign);\n }\n }\n };\n\n var toObject = function (o) {\n if (o == null) {\n // this matches both null and undefined\n throw new TypeError(\"can't convert \" + o + ' to object');\n }\n\n return Object(o);\n }; //\n // Util\n // ======\n //\n // ES5 9.4\n // http://es5.github.com/#x9.4\n // http://jsperf.com/to-integer\n\n\n function toInteger(num) {\n var n = +num;\n\n if (n !== n) {\n // isNaN\n n = 0;\n } else if (n !== 0 && n !== 1 / 0 && n !== -(1 / 0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n\n return n;\n }\n\n function ToUint32(x) {\n return x >>> 0;\n } //\n // Function\n // ========\n //\n // ES-5 15.3.4.5\n // http://es5.github.com/#x15.3.4.5\n\n\n function Empty() {}\n\n defineProperties(FunctionPrototype, {\n bind: function bind(that) {\n // .length is 1\n // 1. Let Target be the this value.\n var target = this; // 2. If IsCallable(Target) is false, throw a TypeError exception.\n\n if (!isFunction(target)) {\n throw new TypeError('Function.prototype.bind called on incompatible ' + target);\n } // 3. Let A be a new (possibly empty) internal list of all of the\n // argument values provided after thisArg (arg1, arg2 etc), in order.\n // XXX slicedArgs will stand in for \"A\" if used\n\n\n var args = array_slice.call(arguments, 1); // for normal call\n // 4. Let F be a new native ECMAScript object.\n // 11. Set the [[Prototype]] internal property of F to the standard\n // built-in Function prototype object as specified in 15.3.3.1.\n // 12. Set the [[Call]] internal property of F as described in\n // 15.3.4.5.1.\n // 13. Set the [[Construct]] internal property of F as described in\n // 15.3.4.5.2.\n // 14. Set the [[HasInstance]] internal property of F as described in\n // 15.3.4.5.3.\n\n var binder = function () {\n if (this instanceof bound) {\n // 15.3.4.5.2 [[Construct]]\n // When the [[Construct]] internal method of a function object,\n // F that was created using the bind function is called with a\n // list of arguments ExtraArgs, the following steps are taken:\n // 1. Let target be the value of F's [[TargetFunction]]\n // internal property.\n // 2. If target has no [[Construct]] internal method, a\n // TypeError exception is thrown.\n // 3. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Construct]] internal\n // method of target providing args as the arguments.\n var result = target.apply(this, args.concat(array_slice.call(arguments)));\n\n if (Object(result) === result) {\n return result;\n }\n\n return this;\n } else {\n // 15.3.4.5.1 [[Call]]\n // When the [[Call]] internal method of a function object, F,\n // which was created using the bind function is called with a\n // this value and a list of arguments ExtraArgs, the following\n // steps are taken:\n // 1. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 2. Let boundThis be the value of F's [[BoundThis]] internal\n // property.\n // 3. Let target be the value of F's [[TargetFunction]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Call]] internal method\n // of target providing boundThis as the this value and\n // providing args as the arguments.\n // equiv: target.call(this, ...boundArgs, ...args)\n return target.apply(that, args.concat(array_slice.call(arguments)));\n }\n }; // 15. If the [[Class]] internal property of Target is \"Function\", then\n // a. Let L be the length property of Target minus the length of A.\n // b. Set the length own property of F to either 0 or L, whichever is\n // larger.\n // 16. Else set the length own property of F to 0.\n\n\n var boundLength = Math.max(0, target.length - args.length); // 17. Set the attributes of the length own property of F to the values\n // specified in 15.3.5.1.\n\n var boundArgs = [];\n\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n } // XXX Build a dynamic function with desired amount of arguments is the only\n // way to set the length property of a function.\n // In environments where Content Security Policies enabled (Chrome extensions,\n // for ex.) all use of eval or Function costructor throws an exception.\n // However in all of these environments Function.prototype.bind exists\n // and so this code will never be executed.\n\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder);\n\n if (target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty(); // Clean up dangling references.\n\n Empty.prototype = null;\n } // TODO\n // 18. Set the [[Extensible]] internal property of F to true.\n // TODO\n // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).\n // 20. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"caller\", PropertyDescriptor {[[Get]]: thrower, [[Set]]:\n // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and\n // false.\n // 21. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"arguments\", PropertyDescriptor {[[Get]]: thrower,\n // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},\n // and false.\n // TODO\n // NOTE Function objects created using Function.prototype.bind do not\n // have a prototype property or the [[Code]], [[FormalParameters]], and\n // [[Scope]] internal properties.\n // XXX can't delete prototype in pure-js.\n // 22. Return F.\n\n\n return bound;\n }\n }); //\n // Array\n // =====\n //\n // ES5 15.4.3.2\n // http://es5.github.com/#x15.4.3.2\n // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray\n\n defineProperties(Array, {\n isArray: isArray\n });\n var boxedString = Object('a');\n var splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\n var properlyBoxesContext = function properlyBoxed(method) {\n // Check node 0.6.21 bug where third parameter is not boxed\n var properlyBoxesNonStrict = true;\n var properlyBoxesStrict = true;\n\n if (method) {\n method.call('foo', function (_, __, context) {\n if (typeof context !== 'object') {\n properlyBoxesNonStrict = false;\n }\n });\n method.call([1], function () {\n 'use strict';\n\n properlyBoxesStrict = typeof this === 'string';\n }, 'x');\n }\n\n return !!method && properlyBoxesNonStrict && properlyBoxesStrict;\n };\n\n defineProperties(ArrayPrototype, {\n forEach: function forEach(fun\n /*, thisp*/\n ) {\n var object = toObject(this),\n self = splitString && isString(this) ? this.split('') : object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0; // If no callback function or if callback is not a callable function\n\n if (!isFunction(fun)) {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n // Invoke the callback function with call, passing arguments:\n // context, property value, property key, thisArg object\n // context\n fun.call(thisp, self[i], i, object);\n }\n }\n }\n }, !properlyBoxesContext(ArrayPrototype.forEach)); // ES5 15.4.4.14\n // http://es5.github.com/#x15.4.4.14\n // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf\n\n var hasFirefox2IndexOfBug = Array.prototype.indexOf && [0, 1].indexOf(1, 2) !== -1;\n defineProperties(ArrayPrototype, {\n indexOf: function indexOf(sought\n /*, fromIndex */\n ) {\n var self = splitString && isString(this) ? this.split('') : toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n } // handle negative indices\n\n\n i = i >= 0 ? i : Math.max(0, length + i);\n\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n\n return -1;\n }\n }, hasFirefox2IndexOfBug); //\n // String\n // ======\n //\n // ES5 15.5.4.14\n // http://es5.github.com/#x15.5.4.14\n // [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]\n // Many browsers do not split properly with regular expressions or they\n // do not perform the split correctly under obscure conditions.\n // See http://blog.stevenlevithan.com/archives/cross-browser-split\n // I've tested in many browsers and this seems to cover the deviant ones:\n // 'ab'.split(/(?:ab)*/) should be [\"\", \"\"], not [\"\"]\n // '.'.split(/(.?)(.?)/) should be [\"\", \".\", \"\", \"\"], not [\"\", \"\"]\n // 'tesst'.split(/(s)*/) should be [\"t\", undefined, \"e\", \"s\", \"t\"], not\n // [undefined, \"t\", undefined, \"e\", ...]\n // ''.split(/.?/) should be [], not [\"\"]\n // '.'.split(/()()/) should be [\".\"], not [\"\", \"\", \".\"]\n\n var string_split = StringPrototype.split;\n\n if ('ab'.split(/(?:ab)*/).length !== 2 || '.'.split(/(.?)(.?)/).length !== 4 || 'tesst'.split(/(s)*/)[1] === 't' || 'test'.split(/(?:)/, -1).length !== 4 || ''.split(/.?/).length || '.'.split(/()()/).length > 1) {\n (function () {\n var compliantExecNpcg = /()??/.exec('')[1] === void 0; // NPCG: nonparticipating capturing group\n\n StringPrototype.split = function (separator, limit) {\n var string = this;\n\n if (separator === void 0 && limit === 0) {\n return [];\n } // If `separator` is not a regex, use native split\n\n\n if (_toString.call(separator) !== '[object RegExp]') {\n return string_split.call(this, separator, limit);\n }\n\n var output = [],\n flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.extended ? 'x' : '') + ( // Proposed for ES6\n separator.sticky ? 'y' : ''),\n // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator2,\n match,\n lastIndex,\n lastLength;\n separator = new RegExp(separator.source, flags + 'g');\n string += ''; // Type-convert\n\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp('^' + separator.source + '$(?!\\\\s)', flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n\n\n limit = limit === void 0 ? -1 >>> 0 : // Math.pow(2, 32) - 1\n ToUint32(limit);\n\n while (match = separator.exec(string)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index)); // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === void 0) {\n match[i] = void 0;\n }\n }\n });\n }\n\n if (match.length > 1 && match.index < string.length) {\n ArrayPrototype.push.apply(output, match.slice(1));\n }\n\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n\n if (output.length >= limit) {\n break;\n }\n }\n\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n\n if (lastLastIndex === string.length) {\n if (lastLength || !separator.test('')) {\n output.push('');\n }\n } else {\n output.push(string.slice(lastLastIndex));\n }\n\n return output.length > limit ? output.slice(0, limit) : output;\n };\n })(); // [bugfix, chrome]\n // If separator is undefined, then the result array contains just one String,\n // which is the this value (converted to a String). If limit is not undefined,\n // then the output array is truncated so that it contains no more than limit\n // elements.\n // \"0\".split(undefined, 0) -> []\n\n } else if ('0'.split(void 0, 0).length) {\n StringPrototype.split = function split(separator, limit) {\n if (separator === void 0 && limit === 0) {\n return [];\n }\n\n return string_split.call(this, separator, limit);\n };\n } // ECMA-262, 3rd B.2.3\n // Not an ECMAScript standard, although ECMAScript 3rd Edition has a\n // non-normative section suggesting uniform semantics and it should be\n // normalized across all browsers\n // [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE\n\n\n var string_substr = StringPrototype.substr;\n var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';\n defineProperties(StringPrototype, {\n substr: function substr(start, length) {\n return string_substr.call(this, start < 0 ? (start = this.length + start) < 0 ? 0 : start : start, length);\n }\n }, hasNegativeSubstrBug);\n }, {}],\n 16: [function (require, module, exports) {\n 'use strict';\n\n module.exports = [// streaming transports\n require('./transport/websocket'), require('./transport/xhr-streaming'), require('./transport/xdr-streaming'), require('./transport/eventsource'), require('./transport/lib/iframe-wrap')(require('./transport/eventsource')) // polling transports\n , require('./transport/htmlfile'), require('./transport/lib/iframe-wrap')(require('./transport/htmlfile')), require('./transport/xhr-polling'), require('./transport/xdr-polling'), require('./transport/lib/iframe-wrap')(require('./transport/xhr-polling')), require('./transport/jsonp-polling')];\n }, {\n \"./transport/eventsource\": 20,\n \"./transport/htmlfile\": 21,\n \"./transport/jsonp-polling\": 23,\n \"./transport/lib/iframe-wrap\": 26,\n \"./transport/websocket\": 38,\n \"./transport/xdr-polling\": 39,\n \"./transport/xdr-streaming\": 40,\n \"./transport/xhr-polling\": 41,\n \"./transport/xhr-streaming\": 42\n }],\n 17: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits'),\n utils = require('../../utils/event'),\n urlUtils = require('../../utils/url'),\n XHR = global.XMLHttpRequest;\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:browser:xhr');\n }\n\n function AbstractXHRObject(method, url, payload, opts) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n setTimeout(function () {\n self._start(method, url, payload, opts);\n }, 0);\n }\n\n inherits(AbstractXHRObject, EventEmitter);\n\n AbstractXHRObject.prototype._start = function (method, url, payload, opts) {\n var self = this;\n\n try {\n this.xhr = new XHR();\n } catch (x) {// intentionally empty\n }\n\n if (!this.xhr) {\n debug('no xhr');\n this.emit('finish', 0, 'no xhr support');\n\n this._cleanup();\n\n return;\n } // several browsers cache POSTs\n\n\n url = urlUtils.addQuery(url, 't=' + +new Date()); // Explorer tends to keep connection open, even after the\n // tab gets closed: http://bugs.jquery.com/ticket/5280\n\n this.unloadRef = utils.unloadAdd(function () {\n debug('unload cleanup');\n\n self._cleanup(true);\n });\n\n try {\n this.xhr.open(method, url, true);\n\n if (this.timeout && 'timeout' in this.xhr) {\n this.xhr.timeout = this.timeout;\n\n this.xhr.ontimeout = function () {\n debug('xhr timeout');\n self.emit('finish', 0, '');\n\n self._cleanup(false);\n };\n }\n } catch (e) {\n debug('exception', e); // IE raises an exception on wrong port.\n\n this.emit('finish', 0, '');\n\n this._cleanup(false);\n\n return;\n }\n\n if ((!opts || !opts.noCredentials) && AbstractXHRObject.supportsCORS) {\n debug('withCredentials'); // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest :\n // \"This never affects same-site requests.\"\n\n this.xhr.withCredentials = true;\n }\n\n if (opts && opts.headers) {\n for (var key in opts.headers) {\n this.xhr.setRequestHeader(key, opts.headers[key]);\n }\n }\n\n this.xhr.onreadystatechange = function () {\n if (self.xhr) {\n var x = self.xhr;\n var text, status;\n debug('readyState', x.readyState);\n\n switch (x.readyState) {\n case 3:\n // IE doesn't like peeking into responseText or status\n // on Microsoft.XMLHTTP and readystate=3\n try {\n status = x.status;\n text = x.responseText;\n } catch (e) {// intentionally empty\n }\n\n debug('status', status); // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n\n if (status === 1223) {\n status = 204;\n } // IE does return readystate == 3 for 404 answers.\n\n\n if (status === 200 && text && text.length > 0) {\n debug('chunk');\n self.emit('chunk', status, text);\n }\n\n break;\n\n case 4:\n status = x.status;\n debug('status', status); // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n\n if (status === 1223) {\n status = 204;\n } // IE returns this for a bad port\n // http://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx\n\n\n if (status === 12005 || status === 12029) {\n status = 0;\n }\n\n debug('finish', status, x.responseText);\n self.emit('finish', status, x.responseText);\n\n self._cleanup(false);\n\n break;\n }\n }\n };\n\n try {\n self.xhr.send(payload);\n } catch (e) {\n self.emit('finish', 0, '');\n\n self._cleanup(false);\n }\n };\n\n AbstractXHRObject.prototype._cleanup = function (abort) {\n debug('cleanup');\n\n if (!this.xhr) {\n return;\n }\n\n this.removeAllListeners();\n utils.unloadDel(this.unloadRef); // IE needs this field to be a function\n\n this.xhr.onreadystatechange = function () {};\n\n if (this.xhr.ontimeout) {\n this.xhr.ontimeout = null;\n }\n\n if (abort) {\n try {\n this.xhr.abort();\n } catch (x) {// intentionally empty\n }\n }\n\n this.unloadRef = this.xhr = null;\n };\n\n AbstractXHRObject.prototype.close = function () {\n debug('close');\n\n this._cleanup(true);\n };\n\n AbstractXHRObject.enabled = !!XHR; // override XMLHttpRequest for IE6/7\n // obfuscate to avoid firewalls\n\n var axo = ['Active'].concat('Object').join('X');\n\n if (!AbstractXHRObject.enabled && axo in global) {\n debug('overriding xmlhttprequest');\n\n XHR = function () {\n try {\n return new global[axo]('Microsoft.XMLHTTP');\n } catch (e) {\n return null;\n }\n };\n\n AbstractXHRObject.enabled = !!new XHR();\n }\n\n var cors = false;\n\n try {\n cors = 'withCredentials' in new XHR();\n } catch (ignored) {// intentionally empty\n }\n\n AbstractXHRObject.supportsCORS = cors;\n module.exports = AbstractXHRObject;\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/event\": 46,\n \"../../utils/url\": 52,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 18: [function (require, module, exports) {\n (function (global) {\n (function () {\n module.exports = global.EventSource;\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 19: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var Driver = global.WebSocket || global.MozWebSocket;\n\n if (Driver) {\n module.exports = function WebSocketBrowserDriver(url) {\n return new Driver(url);\n };\n } else {\n module.exports = undefined;\n }\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 20: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n AjaxBasedTransport = require('./lib/ajax-based'),\n EventSourceReceiver = require('./receiver/eventsource'),\n XHRCorsObject = require('./sender/xhr-cors'),\n EventSourceDriver = require('eventsource');\n\n function EventSourceTransport(transUrl) {\n if (!EventSourceTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/eventsource', EventSourceReceiver, XHRCorsObject);\n }\n\n inherits(EventSourceTransport, AjaxBasedTransport);\n\n EventSourceTransport.enabled = function () {\n return !!EventSourceDriver;\n };\n\n EventSourceTransport.transportName = 'eventsource';\n EventSourceTransport.roundTrips = 2;\n module.exports = EventSourceTransport;\n }, {\n \"./lib/ajax-based\": 24,\n \"./receiver/eventsource\": 29,\n \"./sender/xhr-cors\": 35,\n \"eventsource\": 18,\n \"inherits\": 57\n }],\n 21: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n HtmlfileReceiver = require('./receiver/htmlfile'),\n XHRLocalObject = require('./sender/xhr-local'),\n AjaxBasedTransport = require('./lib/ajax-based');\n\n function HtmlFileTransport(transUrl) {\n if (!HtmlfileReceiver.enabled) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/htmlfile', HtmlfileReceiver, XHRLocalObject);\n }\n\n inherits(HtmlFileTransport, AjaxBasedTransport);\n\n HtmlFileTransport.enabled = function (info) {\n return HtmlfileReceiver.enabled && info.sameOrigin;\n };\n\n HtmlFileTransport.transportName = 'htmlfile';\n HtmlFileTransport.roundTrips = 2;\n module.exports = HtmlFileTransport;\n }, {\n \"./lib/ajax-based\": 24,\n \"./receiver/htmlfile\": 30,\n \"./sender/xhr-local\": 37,\n \"inherits\": 57\n }],\n 22: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict'; // Few cool transports do work only for same-origin. In order to make\n // them work cross-domain we shall use iframe, served from the\n // remote domain. New browsers have capabilities to communicate with\n // cross domain iframe using postMessage(). In IE it was implemented\n // from IE 8+, but of course, IE got some details wrong:\n // http://msdn.microsoft.com/en-us/library/cc197015(v=VS.85).aspx\n // http://stevesouders.com/misc/test-postmessage.php\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter,\n version = require('../version'),\n urlUtils = require('../utils/url'),\n iframeUtils = require('../utils/iframe'),\n eventUtils = require('../utils/event'),\n random = require('../utils/random');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:transport:iframe');\n }\n\n function IframeTransport(transport, transUrl, baseUrl) {\n if (!IframeTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n EventEmitter.call(this);\n var self = this;\n this.origin = urlUtils.getOrigin(baseUrl);\n this.baseUrl = baseUrl;\n this.transUrl = transUrl;\n this.transport = transport;\n this.windowId = random.string(8);\n var iframeUrl = urlUtils.addPath(baseUrl, '/iframe.html') + '#' + this.windowId;\n debug(transport, transUrl, iframeUrl);\n this.iframeObj = iframeUtils.createIframe(iframeUrl, function (r) {\n debug('err callback');\n self.emit('close', 1006, 'Unable to load an iframe (' + r + ')');\n self.close();\n });\n this.onmessageCallback = this._message.bind(this);\n eventUtils.attachEvent('message', this.onmessageCallback);\n }\n\n inherits(IframeTransport, EventEmitter);\n\n IframeTransport.prototype.close = function () {\n debug('close');\n this.removeAllListeners();\n\n if (this.iframeObj) {\n eventUtils.detachEvent('message', this.onmessageCallback);\n\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n this.postMessage('c');\n } catch (x) {// intentionally empty\n }\n\n this.iframeObj.cleanup();\n this.iframeObj = null;\n this.onmessageCallback = this.iframeObj = null;\n }\n };\n\n IframeTransport.prototype._message = function (e) {\n debug('message', e.data);\n\n if (!urlUtils.isOriginEqual(e.origin, this.origin)) {\n debug('not same origin', e.origin, this.origin);\n return;\n }\n\n var iframeMessage;\n\n try {\n iframeMessage = JSON.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== this.windowId) {\n debug('mismatched window id', iframeMessage.windowId, this.windowId);\n return;\n }\n\n switch (iframeMessage.type) {\n case 's':\n this.iframeObj.loaded(); // window global dependency\n\n this.postMessage('s', JSON.stringify([version, this.transport, this.transUrl, this.baseUrl]));\n break;\n\n case 't':\n this.emit('message', iframeMessage.data);\n break;\n\n case 'c':\n var cdata;\n\n try {\n cdata = JSON.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n return;\n }\n\n this.emit('close', cdata[0], cdata[1]);\n this.close();\n break;\n }\n };\n\n IframeTransport.prototype.postMessage = function (type, data) {\n debug('postMessage', type, data);\n this.iframeObj.post(JSON.stringify({\n windowId: this.windowId,\n type: type,\n data: data || ''\n }), this.origin);\n };\n\n IframeTransport.prototype.send = function (message) {\n debug('send', message);\n this.postMessage('m', message);\n };\n\n IframeTransport.enabled = function () {\n return iframeUtils.iframeEnabled;\n };\n\n IframeTransport.transportName = 'iframe';\n IframeTransport.roundTrips = 2;\n module.exports = IframeTransport;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"../utils/event\": 46,\n \"../utils/iframe\": 47,\n \"../utils/random\": 50,\n \"../utils/url\": 52,\n \"../version\": 53,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 23: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict'; // The simplest and most robust transport, using the well-know cross\n // domain hack - JSONP. This transport is quite inefficient - one\n // message could use up to one http request. But at least it works almost\n // everywhere.\n // Known limitations:\n // o you will get a spinning cursor\n // o for Konqueror a dumb timer is needed to detect errors\n\n var inherits = require('inherits'),\n SenderReceiver = require('./lib/sender-receiver'),\n JsonpReceiver = require('./receiver/jsonp'),\n jsonpSender = require('./sender/jsonp');\n\n function JsonPTransport(transUrl) {\n if (!JsonPTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n SenderReceiver.call(this, transUrl, '/jsonp', jsonpSender, JsonpReceiver);\n }\n\n inherits(JsonPTransport, SenderReceiver);\n\n JsonPTransport.enabled = function () {\n return !!global.document;\n };\n\n JsonPTransport.transportName = 'jsonp-polling';\n JsonPTransport.roundTrips = 1;\n JsonPTransport.needBody = true;\n module.exports = JsonPTransport;\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./lib/sender-receiver\": 28,\n \"./receiver/jsonp\": 31,\n \"./sender/jsonp\": 33,\n \"inherits\": 57\n }],\n 24: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n urlUtils = require('../../utils/url'),\n SenderReceiver = require('./sender-receiver');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:ajax-based');\n }\n\n function createAjaxSender(AjaxObject) {\n return function (url, payload, callback) {\n debug('create ajax sender', url, payload);\n var opt = {};\n\n if (typeof payload === 'string') {\n opt.headers = {\n 'Content-type': 'text/plain'\n };\n }\n\n var ajaxUrl = urlUtils.addPath(url, '/xhr_send');\n var xo = new AjaxObject('POST', ajaxUrl, payload, opt);\n xo.once('finish', function (status) {\n debug('finish', status);\n xo = null;\n\n if (status !== 200 && status !== 204) {\n return callback(new Error('http status ' + status));\n }\n\n callback();\n });\n return function () {\n debug('abort');\n xo.close();\n xo = null;\n var err = new Error('Aborted');\n err.code = 1000;\n callback(err);\n };\n };\n }\n\n function AjaxBasedTransport(transUrl, urlSuffix, Receiver, AjaxObject) {\n SenderReceiver.call(this, transUrl, urlSuffix, createAjaxSender(AjaxObject), Receiver, AjaxObject);\n }\n\n inherits(AjaxBasedTransport, SenderReceiver);\n module.exports = AjaxBasedTransport;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"../../utils/url\": 52,\n \"./sender-receiver\": 28,\n \"debug\": 55,\n \"inherits\": 57\n }],\n 25: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter;\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:buffered-sender');\n }\n\n function BufferedSender(url, sender) {\n debug(url);\n EventEmitter.call(this);\n this.sendBuffer = [];\n this.sender = sender;\n this.url = url;\n }\n\n inherits(BufferedSender, EventEmitter);\n\n BufferedSender.prototype.send = function (message) {\n debug('send', message);\n this.sendBuffer.push(message);\n\n if (!this.sendStop) {\n this.sendSchedule();\n }\n }; // For polling transports in a situation when in the message callback,\n // new message is being send. If the sending connection was started\n // before receiving one, it is possible to saturate the network and\n // timeout due to the lack of receiving socket. To avoid that we delay\n // sending messages by some small time, in order to let receiving\n // connection be started beforehand. This is only a halfmeasure and\n // does not fix the big problem, but it does make the tests go more\n // stable on slow networks.\n\n\n BufferedSender.prototype.sendScheduleWait = function () {\n debug('sendScheduleWait');\n var self = this;\n var tref;\n\n this.sendStop = function () {\n debug('sendStop');\n self.sendStop = null;\n clearTimeout(tref);\n };\n\n tref = setTimeout(function () {\n debug('timeout');\n self.sendStop = null;\n self.sendSchedule();\n }, 25);\n };\n\n BufferedSender.prototype.sendSchedule = function () {\n debug('sendSchedule', this.sendBuffer.length);\n var self = this;\n\n if (this.sendBuffer.length > 0) {\n var payload = '[' + this.sendBuffer.join(',') + ']';\n this.sendStop = this.sender(this.url, payload, function (err) {\n self.sendStop = null;\n\n if (err) {\n debug('error', err);\n self.emit('close', err.code || 1006, 'Sending error: ' + err);\n self.close();\n } else {\n self.sendScheduleWait();\n }\n });\n this.sendBuffer = [];\n }\n };\n\n BufferedSender.prototype._cleanup = function () {\n debug('_cleanup');\n this.removeAllListeners();\n };\n\n BufferedSender.prototype.close = function () {\n debug('close');\n\n this._cleanup();\n\n if (this.sendStop) {\n this.sendStop();\n this.sendStop = null;\n }\n };\n\n module.exports = BufferedSender;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 26: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n IframeTransport = require('../iframe'),\n objectUtils = require('../../utils/object');\n\n module.exports = function (transport) {\n function IframeWrapTransport(transUrl, baseUrl) {\n IframeTransport.call(this, transport.transportName, transUrl, baseUrl);\n }\n\n inherits(IframeWrapTransport, IframeTransport);\n\n IframeWrapTransport.enabled = function (url, info) {\n if (!global.document) {\n return false;\n }\n\n var iframeInfo = objectUtils.extend({}, info);\n iframeInfo.sameOrigin = true;\n return transport.enabled(iframeInfo) && IframeTransport.enabled();\n };\n\n IframeWrapTransport.transportName = 'iframe-' + transport.transportName;\n IframeWrapTransport.needBody = true;\n IframeWrapTransport.roundTrips = IframeTransport.roundTrips + transport.roundTrips - 1; // html, javascript (2) + transport - no CORS (1)\n\n IframeWrapTransport.facadeTransport = transport;\n return IframeWrapTransport;\n };\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/object\": 49,\n \"../iframe\": 22,\n \"inherits\": 57\n }],\n 27: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter;\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:polling');\n }\n\n function Polling(Receiver, receiveUrl, AjaxObject) {\n debug(receiveUrl);\n EventEmitter.call(this);\n this.Receiver = Receiver;\n this.receiveUrl = receiveUrl;\n this.AjaxObject = AjaxObject;\n\n this._scheduleReceiver();\n }\n\n inherits(Polling, EventEmitter);\n\n Polling.prototype._scheduleReceiver = function () {\n debug('_scheduleReceiver');\n var self = this;\n var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject);\n poll.on('message', function (msg) {\n debug('message', msg);\n self.emit('message', msg);\n });\n poll.once('close', function (code, reason) {\n debug('close', code, reason, self.pollIsClosing);\n self.poll = poll = null;\n\n if (!self.pollIsClosing) {\n if (reason === 'network') {\n self._scheduleReceiver();\n } else {\n self.emit('close', code || 1006, reason);\n self.removeAllListeners();\n }\n }\n });\n };\n\n Polling.prototype.abort = function () {\n debug('abort');\n this.removeAllListeners();\n this.pollIsClosing = true;\n\n if (this.poll) {\n this.poll.abort();\n }\n };\n\n module.exports = Polling;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 28: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n urlUtils = require('../../utils/url'),\n BufferedSender = require('./buffered-sender'),\n Polling = require('./polling');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender-receiver');\n }\n\n function SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) {\n var pollUrl = urlUtils.addPath(transUrl, urlSuffix);\n debug(pollUrl);\n var self = this;\n BufferedSender.call(this, transUrl, senderFunc);\n this.poll = new Polling(Receiver, pollUrl, AjaxObject);\n this.poll.on('message', function (msg) {\n debug('poll message', msg);\n self.emit('message', msg);\n });\n this.poll.once('close', function (code, reason) {\n debug('poll close', code, reason);\n self.poll = null;\n self.emit('close', code, reason);\n self.close();\n });\n }\n\n inherits(SenderReceiver, BufferedSender);\n\n SenderReceiver.prototype.close = function () {\n BufferedSender.prototype.close.call(this);\n debug('close');\n this.removeAllListeners();\n\n if (this.poll) {\n this.poll.abort();\n this.poll = null;\n }\n };\n\n module.exports = SenderReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"../../utils/url\": 52,\n \"./buffered-sender\": 25,\n \"./polling\": 27,\n \"debug\": 55,\n \"inherits\": 57\n }],\n 29: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter,\n EventSourceDriver = require('eventsource');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:eventsource');\n }\n\n function EventSourceReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n var es = this.es = new EventSourceDriver(url);\n\n es.onmessage = function (e) {\n debug('message', e.data);\n self.emit('message', decodeURI(e.data));\n };\n\n es.onerror = function (e) {\n debug('error', es.readyState, e); // ES on reconnection has readyState = 0 or 1.\n // on network error it's CLOSED = 2\n\n var reason = es.readyState !== 2 ? 'network' : 'permanent';\n\n self._cleanup();\n\n self._close(reason);\n };\n }\n\n inherits(EventSourceReceiver, EventEmitter);\n\n EventSourceReceiver.prototype.abort = function () {\n debug('abort');\n\n this._cleanup();\n\n this._close('user');\n };\n\n EventSourceReceiver.prototype._cleanup = function () {\n debug('cleanup');\n var es = this.es;\n\n if (es) {\n es.onmessage = es.onerror = null;\n es.close();\n this.es = null;\n }\n };\n\n EventSourceReceiver.prototype._close = function (reason) {\n debug('close', reason);\n var self = this; // Safari and chrome < 15 crash if we close window before\n // waiting for ES cleanup. See:\n // https://code.google.com/p/chromium/issues/detail?id=89155\n\n setTimeout(function () {\n self.emit('close', null, reason);\n self.removeAllListeners();\n }, 200);\n };\n\n module.exports = EventSourceReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55,\n \"events\": 3,\n \"eventsource\": 18,\n \"inherits\": 57\n }],\n 30: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n iframeUtils = require('../../utils/iframe'),\n urlUtils = require('../../utils/url'),\n EventEmitter = require('events').EventEmitter,\n random = require('../../utils/random');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:htmlfile');\n }\n\n function HtmlfileReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n iframeUtils.polluteGlobalNamespace();\n this.id = 'a' + random.string(6);\n url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));\n debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);\n var constructFunc = HtmlfileReceiver.htmlfileEnabled ? iframeUtils.createHtmlfile : iframeUtils.createIframe;\n global[iframeUtils.WPrefix][this.id] = {\n start: function () {\n debug('start');\n self.iframeObj.loaded();\n },\n message: function (data) {\n debug('message', data);\n self.emit('message', data);\n },\n stop: function () {\n debug('stop');\n\n self._cleanup();\n\n self._close('network');\n }\n };\n this.iframeObj = constructFunc(url, function () {\n debug('callback');\n\n self._cleanup();\n\n self._close('permanent');\n });\n }\n\n inherits(HtmlfileReceiver, EventEmitter);\n\n HtmlfileReceiver.prototype.abort = function () {\n debug('abort');\n\n this._cleanup();\n\n this._close('user');\n };\n\n HtmlfileReceiver.prototype._cleanup = function () {\n debug('_cleanup');\n\n if (this.iframeObj) {\n this.iframeObj.cleanup();\n this.iframeObj = null;\n }\n\n delete global[iframeUtils.WPrefix][this.id];\n };\n\n HtmlfileReceiver.prototype._close = function (reason) {\n debug('_close', reason);\n this.emit('close', null, reason);\n this.removeAllListeners();\n };\n\n HtmlfileReceiver.htmlfileEnabled = false; // obfuscate to avoid firewalls\n\n var axo = ['Active'].concat('Object').join('X');\n\n if (axo in global) {\n try {\n HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');\n } catch (x) {// intentionally empty\n }\n }\n\n HtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;\n module.exports = HtmlfileReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/iframe\": 47,\n \"../../utils/random\": 50,\n \"../../utils/url\": 52,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 31: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var utils = require('../../utils/iframe'),\n random = require('../../utils/random'),\n browser = require('../../utils/browser'),\n urlUtils = require('../../utils/url'),\n inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter;\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:jsonp');\n }\n\n function JsonpReceiver(url) {\n debug(url);\n var self = this;\n EventEmitter.call(this);\n utils.polluteGlobalNamespace();\n this.id = 'a' + random.string(6);\n var urlWithId = urlUtils.addQuery(url, 'c=' + encodeURIComponent(utils.WPrefix + '.' + this.id));\n global[utils.WPrefix][this.id] = this._callback.bind(this);\n\n this._createScript(urlWithId); // Fallback mostly for Konqueror - stupid timer, 35 seconds shall be plenty.\n\n\n this.timeoutId = setTimeout(function () {\n debug('timeout');\n\n self._abort(new Error('JSONP script loaded abnormally (timeout)'));\n }, JsonpReceiver.timeout);\n }\n\n inherits(JsonpReceiver, EventEmitter);\n\n JsonpReceiver.prototype.abort = function () {\n debug('abort');\n\n if (global[utils.WPrefix][this.id]) {\n var err = new Error('JSONP user aborted read');\n err.code = 1000;\n\n this._abort(err);\n }\n };\n\n JsonpReceiver.timeout = 35000;\n JsonpReceiver.scriptErrorTimeout = 1000;\n\n JsonpReceiver.prototype._callback = function (data) {\n debug('_callback', data);\n\n this._cleanup();\n\n if (this.aborting) {\n return;\n }\n\n if (data) {\n debug('message', data);\n this.emit('message', data);\n }\n\n this.emit('close', null, 'network');\n this.removeAllListeners();\n };\n\n JsonpReceiver.prototype._abort = function (err) {\n debug('_abort', err);\n\n this._cleanup();\n\n this.aborting = true;\n this.emit('close', err.code, err.message);\n this.removeAllListeners();\n };\n\n JsonpReceiver.prototype._cleanup = function () {\n debug('_cleanup');\n clearTimeout(this.timeoutId);\n\n if (this.script2) {\n this.script2.parentNode.removeChild(this.script2);\n this.script2 = null;\n }\n\n if (this.script) {\n var script = this.script; // Unfortunately, you can't really abort script loading of\n // the script.\n\n script.parentNode.removeChild(script);\n script.onreadystatechange = script.onerror = script.onload = script.onclick = null;\n this.script = null;\n }\n\n delete global[utils.WPrefix][this.id];\n };\n\n JsonpReceiver.prototype._scriptError = function () {\n debug('_scriptError');\n var self = this;\n\n if (this.errorTimer) {\n return;\n }\n\n this.errorTimer = setTimeout(function () {\n if (!self.loadedOkay) {\n self._abort(new Error('JSONP script loaded abnormally (onerror)'));\n }\n }, JsonpReceiver.scriptErrorTimeout);\n };\n\n JsonpReceiver.prototype._createScript = function (url) {\n debug('_createScript', url);\n var self = this;\n var script = this.script = global.document.createElement('script');\n var script2; // Opera synchronous load trick.\n\n script.id = 'a' + random.string(8);\n script.src = url;\n script.type = 'text/javascript';\n script.charset = 'UTF-8';\n script.onerror = this._scriptError.bind(this);\n\n script.onload = function () {\n debug('onload');\n\n self._abort(new Error('JSONP script loaded abnormally (onload)'));\n }; // IE9 fires 'error' event after onreadystatechange or before, in random order.\n // Use loadedOkay to determine if actually errored\n\n\n script.onreadystatechange = function () {\n debug('onreadystatechange', script.readyState);\n\n if (/loaded|closed/.test(script.readyState)) {\n if (script && script.htmlFor && script.onclick) {\n self.loadedOkay = true;\n\n try {\n // In IE, actually execute the script.\n script.onclick();\n } catch (x) {// intentionally empty\n }\n }\n\n if (script) {\n self._abort(new Error('JSONP script loaded abnormally (onreadystatechange)'));\n }\n }\n }; // IE: event/htmlFor/onclick trick.\n // One can't rely on proper order for onreadystatechange. In order to\n // make sure, set a 'htmlFor' and 'event' properties, so that\n // script code will be installed as 'onclick' handler for the\n // script object. Later, onreadystatechange, manually execute this\n // code. FF and Chrome doesn't work with 'event' and 'htmlFor'\n // set. For reference see:\n // http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html\n // Also, read on that about script ordering:\n // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order\n\n\n if (typeof script.async === 'undefined' && global.document.attachEvent) {\n // According to mozilla docs, in recent browsers script.async defaults\n // to 'true', so we may use it to detect a good browser:\n // https://developer.mozilla.org/en/HTML/Element/script\n if (!browser.isOpera()) {\n // Naively assume we're in IE\n try {\n script.htmlFor = script.id;\n script.event = 'onclick';\n } catch (x) {// intentionally empty\n }\n\n script.async = true;\n } else {\n // Opera, second sync script hack\n script2 = this.script2 = global.document.createElement('script');\n script2.text = \"try{var a = document.getElementById('\" + script.id + \"'); if(a)a.onerror();}catch(x){};\";\n script.async = script2.async = false;\n }\n }\n\n if (typeof script.async !== 'undefined') {\n script.async = true;\n }\n\n var head = global.document.getElementsByTagName('head')[0];\n head.insertBefore(script, head.firstChild);\n\n if (script2) {\n head.insertBefore(script2, head.firstChild);\n }\n };\n\n module.exports = JsonpReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/browser\": 44,\n \"../../utils/iframe\": 47,\n \"../../utils/random\": 50,\n \"../../utils/url\": 52,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 32: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter;\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:xhr');\n }\n\n function XhrReceiver(url, AjaxObject) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n this.bufferPosition = 0;\n this.xo = new AjaxObject('POST', url, null);\n this.xo.on('chunk', this._chunkHandler.bind(this));\n this.xo.once('finish', function (status, text) {\n debug('finish', status, text);\n\n self._chunkHandler(status, text);\n\n self.xo = null;\n var reason = status === 200 ? 'network' : 'permanent';\n debug('close', reason);\n self.emit('close', null, reason);\n\n self._cleanup();\n });\n }\n\n inherits(XhrReceiver, EventEmitter);\n\n XhrReceiver.prototype._chunkHandler = function (status, text) {\n debug('_chunkHandler', status);\n\n if (status !== 200 || !text) {\n return;\n }\n\n for (var idx = -1;; this.bufferPosition += idx + 1) {\n var buf = text.slice(this.bufferPosition);\n idx = buf.indexOf('\\n');\n\n if (idx === -1) {\n break;\n }\n\n var msg = buf.slice(0, idx);\n\n if (msg) {\n debug('message', msg);\n this.emit('message', msg);\n }\n }\n };\n\n XhrReceiver.prototype._cleanup = function () {\n debug('_cleanup');\n this.removeAllListeners();\n };\n\n XhrReceiver.prototype.abort = function () {\n debug('abort');\n\n if (this.xo) {\n this.xo.close();\n debug('close');\n this.emit('close', null, 'user');\n this.xo = null;\n }\n\n this._cleanup();\n };\n\n module.exports = XhrReceiver;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 33: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var random = require('../../utils/random'),\n urlUtils = require('../../utils/url');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender:jsonp');\n }\n\n var form, area;\n\n function createIframe(id) {\n debug('createIframe', id);\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n return global.document.createElement('<iframe name=\"' + id + '\">');\n } catch (x) {\n var iframe = global.document.createElement('iframe');\n iframe.name = id;\n return iframe;\n }\n }\n\n function createForm() {\n debug('createForm');\n form = global.document.createElement('form');\n form.style.display = 'none';\n form.style.position = 'absolute';\n form.method = 'POST';\n form.enctype = 'application/x-www-form-urlencoded';\n form.acceptCharset = 'UTF-8';\n area = global.document.createElement('textarea');\n area.name = 'd';\n form.appendChild(area);\n global.document.body.appendChild(form);\n }\n\n module.exports = function (url, payload, callback) {\n debug(url, payload);\n\n if (!form) {\n createForm();\n }\n\n var id = 'a' + random.string(8);\n form.target = id;\n form.action = urlUtils.addQuery(urlUtils.addPath(url, '/jsonp_send'), 'i=' + id);\n var iframe = createIframe(id);\n iframe.id = id;\n iframe.style.display = 'none';\n form.appendChild(iframe);\n\n try {\n area.value = payload;\n } catch (e) {// seriously broken browsers get here\n }\n\n form.submit();\n\n var completed = function (err) {\n debug('completed', id, err);\n\n if (!iframe.onerror) {\n return;\n }\n\n iframe.onreadystatechange = iframe.onerror = iframe.onload = null; // Opera mini doesn't like if we GC iframe\n // immediately, thus this timeout.\n\n setTimeout(function () {\n debug('cleaning up', id);\n iframe.parentNode.removeChild(iframe);\n iframe = null;\n }, 500);\n area.value = ''; // It is not possible to detect if the iframe succeeded or\n // failed to submit our form.\n\n callback(err);\n };\n\n iframe.onerror = function () {\n debug('onerror', id);\n completed();\n };\n\n iframe.onload = function () {\n debug('onload', id);\n completed();\n };\n\n iframe.onreadystatechange = function (e) {\n debug('onreadystatechange', id, iframe.readyState, e);\n\n if (iframe.readyState === 'complete') {\n completed();\n }\n };\n\n return function () {\n debug('aborted', id);\n completed(new Error('Aborted'));\n };\n };\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/random\": 50,\n \"../../utils/url\": 52,\n \"debug\": 55\n }],\n 34: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits'),\n eventUtils = require('../../utils/event'),\n browser = require('../../utils/browser'),\n urlUtils = require('../../utils/url');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender:xdr');\n } // References:\n // http://ajaxian.com/archives/100-line-ajax-wrapper\n // http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx\n\n\n function XDRObject(method, url, payload) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n setTimeout(function () {\n self._start(method, url, payload);\n }, 0);\n }\n\n inherits(XDRObject, EventEmitter);\n\n XDRObject.prototype._start = function (method, url, payload) {\n debug('_start');\n var self = this;\n var xdr = new global.XDomainRequest(); // IE caches even POSTs\n\n url = urlUtils.addQuery(url, 't=' + +new Date());\n\n xdr.onerror = function () {\n debug('onerror');\n\n self._error();\n };\n\n xdr.ontimeout = function () {\n debug('ontimeout');\n\n self._error();\n };\n\n xdr.onprogress = function () {\n debug('progress', xdr.responseText);\n self.emit('chunk', 200, xdr.responseText);\n };\n\n xdr.onload = function () {\n debug('load');\n self.emit('finish', 200, xdr.responseText);\n\n self._cleanup(false);\n };\n\n this.xdr = xdr;\n this.unloadRef = eventUtils.unloadAdd(function () {\n self._cleanup(true);\n });\n\n try {\n // Fails with AccessDenied if port number is bogus\n this.xdr.open(method, url);\n\n if (this.timeout) {\n this.xdr.timeout = this.timeout;\n }\n\n this.xdr.send(payload);\n } catch (x) {\n this._error();\n }\n };\n\n XDRObject.prototype._error = function () {\n this.emit('finish', 0, '');\n\n this._cleanup(false);\n };\n\n XDRObject.prototype._cleanup = function (abort) {\n debug('cleanup', abort);\n\n if (!this.xdr) {\n return;\n }\n\n this.removeAllListeners();\n eventUtils.unloadDel(this.unloadRef);\n this.xdr.ontimeout = this.xdr.onerror = this.xdr.onprogress = this.xdr.onload = null;\n\n if (abort) {\n try {\n this.xdr.abort();\n } catch (x) {// intentionally empty\n }\n }\n\n this.unloadRef = this.xdr = null;\n };\n\n XDRObject.prototype.close = function () {\n debug('close');\n\n this._cleanup(true);\n }; // IE 8/9 if the request target uses the same scheme - #79\n\n\n XDRObject.enabled = !!(global.XDomainRequest && browser.hasDomain());\n module.exports = XDRObject;\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../../utils/browser\": 44,\n \"../../utils/event\": 46,\n \"../../utils/url\": 52,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 35: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n XhrDriver = require('../driver/xhr');\n\n function XHRCorsObject(method, url, payload, opts) {\n XhrDriver.call(this, method, url, payload, opts);\n }\n\n inherits(XHRCorsObject, XhrDriver);\n XHRCorsObject.enabled = XhrDriver.enabled && XhrDriver.supportsCORS;\n module.exports = XHRCorsObject;\n }, {\n \"../driver/xhr\": 17,\n \"inherits\": 57\n }],\n 36: [function (require, module, exports) {\n 'use strict';\n\n var EventEmitter = require('events').EventEmitter,\n inherits = require('inherits');\n\n function XHRFake() {\n var self = this;\n EventEmitter.call(this);\n this.to = setTimeout(function () {\n self.emit('finish', 200, '{}');\n }, XHRFake.timeout);\n }\n\n inherits(XHRFake, EventEmitter);\n\n XHRFake.prototype.close = function () {\n clearTimeout(this.to);\n };\n\n XHRFake.timeout = 2000;\n module.exports = XHRFake;\n }, {\n \"events\": 3,\n \"inherits\": 57\n }],\n 37: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n XhrDriver = require('../driver/xhr');\n\n function XHRLocalObject(method, url, payload\n /*, opts */\n ) {\n XhrDriver.call(this, method, url, payload, {\n noCredentials: true\n });\n }\n\n inherits(XHRLocalObject, XhrDriver);\n XHRLocalObject.enabled = XhrDriver.enabled;\n module.exports = XHRLocalObject;\n }, {\n \"../driver/xhr\": 17,\n \"inherits\": 57\n }],\n 38: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var utils = require('../utils/event'),\n urlUtils = require('../utils/url'),\n inherits = require('inherits'),\n EventEmitter = require('events').EventEmitter,\n WebsocketDriver = require('./driver/websocket');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:websocket');\n }\n\n function WebSocketTransport(transUrl, ignore, options) {\n if (!WebSocketTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n EventEmitter.call(this);\n debug('constructor', transUrl);\n var self = this;\n var url = urlUtils.addPath(transUrl, '/websocket');\n\n if (url.slice(0, 5) === 'https') {\n url = 'wss' + url.slice(5);\n } else {\n url = 'ws' + url.slice(4);\n }\n\n this.url = url;\n this.ws = new WebsocketDriver(this.url, [], options);\n\n this.ws.onmessage = function (e) {\n debug('message event', e.data);\n self.emit('message', e.data);\n }; // Firefox has an interesting bug. If a websocket connection is\n // created after onunload, it stays alive even when user\n // navigates away from the page. In such situation let's lie -\n // let's not open the ws connection at all. See:\n // https://github.com/sockjs/sockjs-client/issues/28\n // https://bugzilla.mozilla.org/show_bug.cgi?id=696085\n\n\n this.unloadRef = utils.unloadAdd(function () {\n debug('unload');\n self.ws.close();\n });\n\n this.ws.onclose = function (e) {\n debug('close event', e.code, e.reason);\n self.emit('close', e.code, e.reason);\n\n self._cleanup();\n };\n\n this.ws.onerror = function (e) {\n debug('error event', e);\n self.emit('close', 1006, 'WebSocket connection broken');\n\n self._cleanup();\n };\n }\n\n inherits(WebSocketTransport, EventEmitter);\n\n WebSocketTransport.prototype.send = function (data) {\n var msg = '[' + data + ']';\n debug('send', msg);\n this.ws.send(msg);\n };\n\n WebSocketTransport.prototype.close = function () {\n debug('close');\n var ws = this.ws;\n\n this._cleanup();\n\n if (ws) {\n ws.close();\n }\n };\n\n WebSocketTransport.prototype._cleanup = function () {\n debug('_cleanup');\n var ws = this.ws;\n\n if (ws) {\n ws.onmessage = ws.onclose = ws.onerror = null;\n }\n\n utils.unloadDel(this.unloadRef);\n this.unloadRef = this.ws = null;\n this.removeAllListeners();\n };\n\n WebSocketTransport.enabled = function () {\n debug('enabled');\n return !!WebsocketDriver;\n };\n\n WebSocketTransport.transportName = 'websocket'; // In theory, ws should require 1 round trip. But in chrome, this is\n // not very stable over SSL. Most likely a ws connection requires a\n // separate SSL connection, in which case 2 round trips are an\n // absolute minumum.\n\n WebSocketTransport.roundTrips = 2;\n module.exports = WebSocketTransport;\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"../utils/event\": 46,\n \"../utils/url\": 52,\n \"./driver/websocket\": 19,\n \"debug\": 55,\n \"events\": 3,\n \"inherits\": 57\n }],\n 39: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n AjaxBasedTransport = require('./lib/ajax-based'),\n XdrStreamingTransport = require('./xdr-streaming'),\n XhrReceiver = require('./receiver/xhr'),\n XDRObject = require('./sender/xdr');\n\n function XdrPollingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XDRObject);\n }\n\n inherits(XdrPollingTransport, AjaxBasedTransport);\n XdrPollingTransport.enabled = XdrStreamingTransport.enabled;\n XdrPollingTransport.transportName = 'xdr-polling';\n XdrPollingTransport.roundTrips = 2; // preflight, ajax\n\n module.exports = XdrPollingTransport;\n }, {\n \"./lib/ajax-based\": 24,\n \"./receiver/xhr\": 32,\n \"./sender/xdr\": 34,\n \"./xdr-streaming\": 40,\n \"inherits\": 57\n }],\n 40: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n AjaxBasedTransport = require('./lib/ajax-based'),\n XhrReceiver = require('./receiver/xhr'),\n XDRObject = require('./sender/xdr'); // According to:\n // http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests\n // http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n\n\n function XdrStreamingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XDRObject);\n }\n\n inherits(XdrStreamingTransport, AjaxBasedTransport);\n\n XdrStreamingTransport.enabled = function (info) {\n if (info.cookie_needed || info.nullOrigin) {\n return false;\n }\n\n return XDRObject.enabled && info.sameScheme;\n };\n\n XdrStreamingTransport.transportName = 'xdr-streaming';\n XdrStreamingTransport.roundTrips = 2; // preflight, ajax\n\n module.exports = XdrStreamingTransport;\n }, {\n \"./lib/ajax-based\": 24,\n \"./receiver/xhr\": 32,\n \"./sender/xdr\": 34,\n \"inherits\": 57\n }],\n 41: [function (require, module, exports) {\n 'use strict';\n\n var inherits = require('inherits'),\n AjaxBasedTransport = require('./lib/ajax-based'),\n XhrReceiver = require('./receiver/xhr'),\n XHRCorsObject = require('./sender/xhr-cors'),\n XHRLocalObject = require('./sender/xhr-local');\n\n function XhrPollingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XHRCorsObject);\n }\n\n inherits(XhrPollingTransport, AjaxBasedTransport);\n\n XhrPollingTransport.enabled = function (info) {\n if (info.nullOrigin) {\n return false;\n }\n\n if (XHRLocalObject.enabled && info.sameOrigin) {\n return true;\n }\n\n return XHRCorsObject.enabled;\n };\n\n XhrPollingTransport.transportName = 'xhr-polling';\n XhrPollingTransport.roundTrips = 2; // preflight, ajax\n\n module.exports = XhrPollingTransport;\n }, {\n \"./lib/ajax-based\": 24,\n \"./receiver/xhr\": 32,\n \"./sender/xhr-cors\": 35,\n \"./sender/xhr-local\": 37,\n \"inherits\": 57\n }],\n 42: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var inherits = require('inherits'),\n AjaxBasedTransport = require('./lib/ajax-based'),\n XhrReceiver = require('./receiver/xhr'),\n XHRCorsObject = require('./sender/xhr-cors'),\n XHRLocalObject = require('./sender/xhr-local'),\n browser = require('../utils/browser');\n\n function XhrStreamingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject);\n }\n\n inherits(XhrStreamingTransport, AjaxBasedTransport);\n\n XhrStreamingTransport.enabled = function (info) {\n if (info.nullOrigin) {\n return false;\n } // Opera doesn't support xhr-streaming #60\n // But it might be able to #92\n\n\n if (browser.isOpera()) {\n return false;\n }\n\n return XHRCorsObject.enabled;\n };\n\n XhrStreamingTransport.transportName = 'xhr-streaming';\n XhrStreamingTransport.roundTrips = 2; // preflight, ajax\n // Safari gets confused when a streaming ajax request is started\n // before onload. This causes the load indicator to spin indefinetely.\n // Only require body when used in a browser\n\n XhrStreamingTransport.needBody = !!global.document;\n module.exports = XhrStreamingTransport;\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"../utils/browser\": 44,\n \"./lib/ajax-based\": 24,\n \"./receiver/xhr\": 32,\n \"./sender/xhr-cors\": 35,\n \"./sender/xhr-local\": 37,\n \"inherits\": 57\n }],\n 43: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n if (global.crypto && global.crypto.getRandomValues) {\n module.exports.randomBytes = function (length) {\n var bytes = new Uint8Array(length);\n global.crypto.getRandomValues(bytes);\n return bytes;\n };\n } else {\n module.exports.randomBytes = function (length) {\n var bytes = new Array(length);\n\n for (var i = 0; i < length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n\n return bytes;\n };\n }\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 44: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n module.exports = {\n isOpera: function () {\n return global.navigator && /opera/i.test(global.navigator.userAgent);\n },\n isKonqueror: function () {\n return global.navigator && /konqueror/i.test(global.navigator.userAgent);\n } // #187 wrap document.domain in try/catch because of WP8 from file:///\n ,\n hasDomain: function () {\n // non-browser client always has a domain\n if (!global.document) {\n return true;\n }\n\n try {\n return !!global.document.domain;\n } catch (e) {\n return false;\n }\n }\n };\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 45: [function (require, module, exports) {\n 'use strict'; // Some extra characters that Chrome gets wrong, and substitutes with\n // something else on the wire.\n // eslint-disable-next-line no-control-regex, no-misleading-character-class\n\n var extraEscapable = /[\\x00-\\x1f\\ud800-\\udfff\\ufffe\\uffff\\u0300-\\u0333\\u033d-\\u0346\\u034a-\\u034c\\u0350-\\u0352\\u0357-\\u0358\\u035c-\\u0362\\u0374\\u037e\\u0387\\u0591-\\u05af\\u05c4\\u0610-\\u0617\\u0653-\\u0654\\u0657-\\u065b\\u065d-\\u065e\\u06df-\\u06e2\\u06eb-\\u06ec\\u0730\\u0732-\\u0733\\u0735-\\u0736\\u073a\\u073d\\u073f-\\u0741\\u0743\\u0745\\u0747\\u07eb-\\u07f1\\u0951\\u0958-\\u095f\\u09dc-\\u09dd\\u09df\\u0a33\\u0a36\\u0a59-\\u0a5b\\u0a5e\\u0b5c-\\u0b5d\\u0e38-\\u0e39\\u0f43\\u0f4d\\u0f52\\u0f57\\u0f5c\\u0f69\\u0f72-\\u0f76\\u0f78\\u0f80-\\u0f83\\u0f93\\u0f9d\\u0fa2\\u0fa7\\u0fac\\u0fb9\\u1939-\\u193a\\u1a17\\u1b6b\\u1cda-\\u1cdb\\u1dc0-\\u1dcf\\u1dfc\\u1dfe\\u1f71\\u1f73\\u1f75\\u1f77\\u1f79\\u1f7b\\u1f7d\\u1fbb\\u1fbe\\u1fc9\\u1fcb\\u1fd3\\u1fdb\\u1fe3\\u1feb\\u1fee-\\u1fef\\u1ff9\\u1ffb\\u1ffd\\u2000-\\u2001\\u20d0-\\u20d1\\u20d4-\\u20d7\\u20e7-\\u20e9\\u2126\\u212a-\\u212b\\u2329-\\u232a\\u2adc\\u302b-\\u302c\\uaab2-\\uaab3\\uf900-\\ufa0d\\ufa10\\ufa12\\ufa15-\\ufa1e\\ufa20\\ufa22\\ufa25-\\ufa26\\ufa2a-\\ufa2d\\ufa30-\\ufa6d\\ufa70-\\ufad9\\ufb1d\\ufb1f\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4e\\ufff0-\\uffff]/g,\n extraLookup; // This may be quite slow, so let's delay until user actually uses bad\n // characters.\n\n var unrollLookup = function (escapable) {\n var i;\n var unrolled = {};\n var c = [];\n\n for (i = 0; i < 65536; i++) {\n c.push(String.fromCharCode(i));\n }\n\n escapable.lastIndex = 0;\n c.join('').replace(escapable, function (a) {\n unrolled[a] = '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n return '';\n });\n escapable.lastIndex = 0;\n return unrolled;\n }; // Quote string, also taking care of unicode characters that browsers\n // often break. Especially, take care of unicode surrogates:\n // http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates\n\n\n module.exports = {\n quote: function (string) {\n var quoted = JSON.stringify(string); // In most cases this should be very fast and good enough.\n\n extraEscapable.lastIndex = 0;\n\n if (!extraEscapable.test(quoted)) {\n return quoted;\n }\n\n if (!extraLookup) {\n extraLookup = unrollLookup(extraEscapable);\n }\n\n return quoted.replace(extraEscapable, function (a) {\n return extraLookup[a];\n });\n }\n };\n }, {}],\n 46: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var random = require('./random');\n\n var onUnload = {},\n afterUnload = false // detect google chrome packaged apps because they don't allow the 'unload' event\n ,\n isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime;\n module.exports = {\n attachEvent: function (event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.addEventListener(event, listener, false);\n } else if (global.document && global.attachEvent) {\n // IE quirks.\n // According to: http://stevesouders.com/misc/test-postmessage.php\n // the message gets delivered only to 'document', not 'window'.\n global.document.attachEvent('on' + event, listener); // I get 'window' for ie8.\n\n global.attachEvent('on' + event, listener);\n }\n },\n detachEvent: function (event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.removeEventListener(event, listener, false);\n } else if (global.document && global.detachEvent) {\n global.document.detachEvent('on' + event, listener);\n global.detachEvent('on' + event, listener);\n }\n },\n unloadAdd: function (listener) {\n if (isChromePackagedApp) {\n return null;\n }\n\n var ref = random.string(8);\n onUnload[ref] = listener;\n\n if (afterUnload) {\n setTimeout(this.triggerUnloadCallbacks, 0);\n }\n\n return ref;\n },\n unloadDel: function (ref) {\n if (ref in onUnload) {\n delete onUnload[ref];\n }\n },\n triggerUnloadCallbacks: function () {\n for (var ref in onUnload) {\n onUnload[ref]();\n delete onUnload[ref];\n }\n }\n };\n\n var unloadTriggered = function () {\n if (afterUnload) {\n return;\n }\n\n afterUnload = true;\n module.exports.triggerUnloadCallbacks();\n }; // 'unload' alone is not reliable in opera within an iframe, but we\n // can't use `beforeunload` as IE fires it on javascript: links.\n\n\n if (!isChromePackagedApp) {\n module.exports.attachEvent('unload', unloadTriggered);\n }\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./random\": 50\n }],\n 47: [function (require, module, exports) {\n (function (process, global) {\n (function () {\n 'use strict';\n\n var eventUtils = require('./event'),\n browser = require('./browser');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:iframe');\n }\n\n module.exports = {\n WPrefix: '_jp',\n currentWindowId: null,\n polluteGlobalNamespace: function () {\n if (!(module.exports.WPrefix in global)) {\n global[module.exports.WPrefix] = {};\n }\n },\n postMessage: function (type, data) {\n if (global.parent !== global) {\n global.parent.postMessage(JSON.stringify({\n windowId: module.exports.currentWindowId,\n type: type,\n data: data || ''\n }), '*');\n } else {\n debug('Cannot postMessage, no parent window.', type, data);\n }\n },\n createIframe: function (iframeUrl, errorCallback) {\n var iframe = global.document.createElement('iframe');\n var tref, unloadRef;\n\n var unattach = function () {\n debug('unattach');\n clearTimeout(tref); // Explorer had problems with that.\n\n try {\n iframe.onload = null;\n } catch (x) {// intentionally empty\n }\n\n iframe.onerror = null;\n };\n\n var cleanup = function () {\n debug('cleanup');\n\n if (iframe) {\n unattach(); // This timeout makes chrome fire onbeforeunload event\n // within iframe. Without the timeout it goes straight to\n // onunload.\n\n setTimeout(function () {\n if (iframe) {\n iframe.parentNode.removeChild(iframe);\n }\n\n iframe = null;\n }, 0);\n eventUtils.unloadDel(unloadRef);\n }\n };\n\n var onerror = function (err) {\n debug('onerror', err);\n\n if (iframe) {\n cleanup();\n errorCallback(err);\n }\n };\n\n var post = function (msg, origin) {\n debug('post', msg, origin);\n setTimeout(function () {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n } catch (x) {// intentionally empty\n }\n }, 0);\n };\n\n iframe.src = iframeUrl;\n iframe.style.display = 'none';\n iframe.style.position = 'absolute';\n\n iframe.onerror = function () {\n onerror('onerror');\n };\n\n iframe.onload = function () {\n debug('onload'); // `onload` is triggered before scripts on the iframe are\n // executed. Give it few seconds to actually load stuff.\n\n clearTimeout(tref);\n tref = setTimeout(function () {\n onerror('onload timeout');\n }, 2000);\n };\n\n global.document.body.appendChild(iframe);\n tref = setTimeout(function () {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post,\n cleanup: cleanup,\n loaded: unattach\n };\n }\n /* eslint no-undef: \"off\", new-cap: \"off\" */\n ,\n createHtmlfile: function (iframeUrl, errorCallback) {\n var axo = ['Active'].concat('Object').join('X');\n var doc = new global[axo]('htmlfile');\n var tref, unloadRef;\n var iframe;\n\n var unattach = function () {\n clearTimeout(tref);\n iframe.onerror = null;\n };\n\n var cleanup = function () {\n if (doc) {\n unattach();\n eventUtils.unloadDel(unloadRef);\n iframe.parentNode.removeChild(iframe);\n iframe = doc = null;\n CollectGarbage();\n }\n };\n\n var onerror = function (r) {\n debug('onerror', r);\n\n if (doc) {\n cleanup();\n errorCallback(r);\n }\n };\n\n var post = function (msg, origin) {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n setTimeout(function () {\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n }, 0);\n } catch (x) {// intentionally empty\n }\n };\n\n doc.open();\n doc.write('<html><s' + 'cript>' + 'document.domain=\"' + global.document.domain + '\";' + '</s' + 'cript></html>');\n doc.close();\n doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix];\n var c = doc.createElement('div');\n doc.body.appendChild(c);\n iframe = doc.createElement('iframe');\n c.appendChild(iframe);\n iframe.src = iframeUrl;\n\n iframe.onerror = function () {\n onerror('onerror');\n };\n\n tref = setTimeout(function () {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post,\n cleanup: cleanup,\n loaded: unattach\n };\n }\n };\n module.exports.iframeEnabled = false;\n\n if (global.document) {\n // postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with\n // huge delay, or not at all.\n module.exports.iframeEnabled = (typeof global.postMessage === 'function' || typeof global.postMessage === 'object') && !browser.isKonqueror();\n }\n }).call(this);\n }).call(this, {\n env: {}\n }, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"./browser\": 44,\n \"./event\": 46,\n \"debug\": 55\n }],\n 48: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var logObject = {};\n ['log', 'debug', 'warn'].forEach(function (level) {\n var levelExists;\n\n try {\n levelExists = global.console && global.console[level] && global.console[level].apply;\n } catch (e) {// do nothing\n }\n\n logObject[level] = levelExists ? function () {\n return global.console[level].apply(global.console, arguments);\n } : level === 'log' ? function () {} : logObject.log;\n });\n module.exports = logObject;\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {}],\n 49: [function (require, module, exports) {\n 'use strict';\n\n module.exports = {\n isObject: function (obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n },\n extend: function (obj) {\n if (!this.isObject(obj)) {\n return obj;\n }\n\n var source, prop;\n\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n\n for (prop in source) {\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n\n return obj;\n }\n };\n }, {}],\n 50: [function (require, module, exports) {\n 'use strict';\n\n var crypto = require('crypto'); // This string has length 32, a power of 2, so the modulus doesn't introduce a\n // bias.\n\n\n var _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345';\n module.exports = {\n string: function (length) {\n var max = _randomStringChars.length;\n var bytes = crypto.randomBytes(length);\n var ret = [];\n\n for (var i = 0; i < length; i++) {\n ret.push(_randomStringChars.substr(bytes[i] % max, 1));\n }\n\n return ret.join('');\n },\n number: function (max) {\n return Math.floor(Math.random() * max);\n },\n numberString: function (max) {\n var t = ('' + (max - 1)).length;\n var p = new Array(t + 1).join('0');\n return (p + this.number(max)).slice(-t);\n }\n };\n }, {\n \"crypto\": 43\n }],\n 51: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:transport');\n }\n\n module.exports = function (availableTransports) {\n return {\n filterToEnabled: function (transportsWhitelist, info) {\n var transports = {\n main: [],\n facade: []\n };\n\n if (!transportsWhitelist) {\n transportsWhitelist = [];\n } else if (typeof transportsWhitelist === 'string') {\n transportsWhitelist = [transportsWhitelist];\n }\n\n availableTransports.forEach(function (trans) {\n if (!trans) {\n return;\n }\n\n if (trans.transportName === 'websocket' && info.websocket === false) {\n debug('disabled from server', 'websocket');\n return;\n }\n\n if (transportsWhitelist.length && transportsWhitelist.indexOf(trans.transportName) === -1) {\n debug('not in whitelist', trans.transportName);\n return;\n }\n\n if (trans.enabled(info)) {\n debug('enabled', trans.transportName);\n transports.main.push(trans);\n\n if (trans.facadeTransport) {\n transports.facade.push(trans.facadeTransport);\n }\n } else {\n debug('disabled', trans.transportName);\n }\n });\n return transports;\n }\n };\n };\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55\n }],\n 52: [function (require, module, exports) {\n (function (process) {\n (function () {\n 'use strict';\n\n var URL = require('url-parse');\n\n var debug = function () {};\n\n if (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:url');\n }\n\n module.exports = {\n getOrigin: function (url) {\n if (!url) {\n return null;\n }\n\n var p = new URL(url);\n\n if (p.protocol === 'file:') {\n return null;\n }\n\n var port = p.port;\n\n if (!port) {\n port = p.protocol === 'https:' ? '443' : '80';\n }\n\n return p.protocol + '//' + p.hostname + ':' + port;\n },\n isOriginEqual: function (a, b) {\n var res = this.getOrigin(a) === this.getOrigin(b);\n debug('same', a, b, res);\n return res;\n },\n isSchemeEqual: function (a, b) {\n return a.split(':')[0] === b.split(':')[0];\n },\n addPath: function (url, path) {\n var qs = url.split('?');\n return qs[0] + path + (qs[1] ? '?' + qs[1] : '');\n },\n addQuery: function (url, q) {\n return url + (url.indexOf('?') === -1 ? '?' + q : '&' + q);\n },\n isLoopbackAddr: function (addr) {\n return /^127\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/i.test(addr) || /^\\[::1\\]$/.test(addr);\n }\n };\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"debug\": 55,\n \"url-parse\": 60\n }],\n 53: [function (require, module, exports) {\n module.exports = '1.6.0';\n }, {}],\n 54: [function (require, module, exports) {\n /**\n * Helpers.\n */\n var s = 1000;\n var m = s * 60;\n var h = m * 60;\n var d = h * 24;\n var w = d * 7;\n var y = d * 365.25;\n /**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\n module.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n };\n /**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\n function parse(str) {\n str = String(str);\n\n if (str.length > 100) {\n return;\n }\n\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n\n if (!match) {\n return;\n }\n\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n\n default:\n return undefined;\n }\n }\n /**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\n function fmtShort(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n\n return ms + 'ms';\n }\n /**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\n function fmtLong(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n\n return ms + ' ms';\n }\n /**\n * Pluralization helper.\n */\n\n\n function plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n }\n }, {}],\n 55: [function (require, module, exports) {\n (function (process) {\n (function () {\n \"use strict\";\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n /* eslint-env browser */\n\n /**\n * This is the web browser implementation of `debug()`.\n */\n\n\n exports.log = log;\n exports.formatArgs = formatArgs;\n exports.save = save;\n exports.load = load;\n exports.useColors = useColors;\n exports.storage = localstorage();\n /**\n * Colors.\n */\n\n exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n /**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n // eslint-disable-next-line complexity\n\n function useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n }\n /**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\n function formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n }\n /**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\n function log() {\n var _console; // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n\n\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n }\n /**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\n function save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n }\n /**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\n function load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n }\n /**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\n function localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n }\n\n module.exports = require('./common')(exports);\n var formatters = module.exports.formatters;\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\n formatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n };\n }).call(this);\n }).call(this, {\n env: {}\n });\n }, {\n \"./common\": 56\n }],\n 56: [function (require, module, exports) {\n \"use strict\";\n /**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\n function setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n }\n\n module.exports = setup;\n }, {\n \"ms\": 54\n }],\n 57: [function (require, module, exports) {\n if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n } else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function () {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n }\n }, {}],\n 58: [function (require, module, exports) {\n 'use strict';\n\n var has = Object.prototype.hasOwnProperty,\n undef;\n /**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\n\n function decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n }\n /**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\n\n\n function encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n }\n /**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\n\n\n function querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g,\n result = {},\n part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1]),\n value = decode(part[2]); //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n }\n /**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\n\n\n function querystringify(obj, prefix) {\n prefix = prefix || '';\n var pairs = [],\n value,\n key; //\n // Optionally prefix with a '?' if needed\n //\n\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key]; //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value); //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n\n if (key === null || value === null) continue;\n pairs.push(key + '=' + value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n } //\n // Expose the module.\n //\n\n\n exports.stringify = querystringify;\n exports.parse = querystring;\n }, {}],\n 59: [function (require, module, exports) {\n 'use strict';\n /**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\n\n module.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n };\n }, {}],\n 60: [function (require, module, exports) {\n (function (global) {\n (function () {\n 'use strict';\n\n var required = require('requires-port'),\n qs = require('querystringify'),\n controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,\n CRHTLF = /[\\n\\r\\t]/g,\n slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,\n port = /:\\d+$/,\n protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,\n windowsDriveLetter = /^[a-zA-Z]:/;\n /**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\n\n\n function trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n }\n /**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\n\n\n var rules = [['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) {\n // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n }, ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n ];\n /**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\n\n var ignore = {\n hash: 1,\n query: 1\n };\n /**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\n\n function lolcation(loc) {\n var globalVar;\n if (typeof window !== 'undefined') globalVar = window;else if (typeof global !== 'undefined') globalVar = global;else if (typeof self !== 'undefined') globalVar = self;else globalVar = {};\n var location = globalVar.location || {};\n loc = loc || location;\n var finaldestination = {},\n type = typeof loc,\n key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n }\n /**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\n\n\n function isSpecial(scheme) {\n return scheme === 'file:' || scheme === 'ftp:' || scheme === 'http:' || scheme === 'https:' || scheme === 'ws:' || scheme === 'wss:';\n }\n /**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n /**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\n\n\n function extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4];\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n }\n /**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\n\n\n function resolve(relative, base) {\n if (relative === '') return base;\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/')),\n i = path.length,\n last = path[i - 1],\n unshift = false,\n up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n return path.join('/');\n }\n /**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\n\n\n function Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative,\n extracted,\n parse,\n instruction,\n index,\n key,\n instructions = rules.slice(),\n type = typeof location,\n url = this,\n i = 0; //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n location = lolcation(location); //\n // Extract protocol information before running the instructions.\n //\n\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest; //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n\n if (extracted.protocol === 'file:' && (extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) || !extracted.slashes && (extracted.protocol || extracted.slashesCount < 2 || !isSpecial(url.protocol))) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@' ? address.lastIndexOf(parse) : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if (index = parse.exec(address)) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (relative && instruction[3] ? location[key] || '' : ''); //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n\n if (instruction[4]) url[key] = url[key].toLowerCase();\n } //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n\n\n if (parser) url.query = parser(url.query); //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n\n if (relative && location.slashes && url.pathname.charAt(0) !== '/' && (url.pathname !== '' || location.pathname !== '')) {\n url.pathname = resolve(url.pathname, location.pathname);\n } //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n\n\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n } //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n\n\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n } //\n // Parse down the `auth` for the username and password.\n //\n\n\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username + ':' + url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host ? url.protocol + '//' + url.host : 'null'; //\n // The href is just the compiled result.\n //\n\n url.href = url.toString();\n }\n /**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\n\n\n function set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname + ':' + value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n if (url.port) value += ':' + url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username + ':' + url.password : url.username;\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host ? url.protocol + '//' + url.host : 'null';\n url.href = url.toString();\n return url;\n }\n /**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\n\n\n function toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n var query,\n url = this,\n host = url.host,\n protocol = url.protocol;\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n var result = protocol + (url.protocol && url.slashes || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':' + url.password;\n result += '@';\n } else if (url.password) {\n result += ':' + url.password;\n result += '@';\n } else if (url.protocol !== 'file:' && isSpecial(url.protocol) && !host && url.pathname !== '/') {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n } //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n\n\n if (host[host.length - 1] === ':' || port.test(url.hostname) && !url.port) {\n host += ':';\n }\n\n result += host + url.pathname;\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?' + query : query;\n if (url.hash) result += url.hash;\n return result;\n }\n\n Url.prototype = {\n set: set,\n toString: toString\n }; //\n // Expose the URL parser and some additional properties that might be useful for\n // others or testing.\n //\n\n Url.extractProtocol = extractProtocol;\n Url.location = lolcation;\n Url.trimLeft = trimLeft;\n Url.qs = qs;\n module.exports = Url;\n }).call(this);\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n }, {\n \"querystringify\": 58,\n \"requires-port\": 59\n }]\n }, {}, [1])(1);\n});","map":{"version":3,"sources":["/Users/satish.ganga/Desktop/EKAM/ekamv5/ahcdashboardui/node_modules/sockjs-client/dist/sockjs.js"],"names":["f","exports","module","define","amd","g","window","global","self","SockJS","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","transportList","setTimeout","_sockjs_onload","inherits","Event","CloseEvent","initEvent","wasClean","reason","EventTarget","EventEmitter","prototype","removeAllListeners","type","_listeners","once","listener","fired","removeListener","apply","arguments","on","emit","listeners","l","args","Array","ai","addListener","addEventListener","removeEventListener","eventType","canBubble","cancelable","bubbles","timeStamp","Date","stopPropagation","preventDefault","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","arr","indexOf","concat","idx","slice","dispatchEvent","event","TransportMessageEvent","data","iframeUtils","FacadeJS","transport","_transport","_transportMessage","bind","_transportClose","postMessage","JSON","stringify","frame","_send","send","_close","close","process","urlUtils","eventUtils","InfoIframeReceiver","loc","debug","env","NODE_ENV","availableTransports","transportMap","forEach","at","facadeTransport","transportName","parentOrigin","bootstrap_iframe","facade","currentWindowId","hash","onMessage","source","parent","origin","iframeMessage","parse","ignored","windowId","version","transUrl","baseUrl","isOriginEqual","href","attachEvent","objectUtils","InfoAjax","url","AjaxObject","t0","xo","status","text","info","rtt","isObject","XHRLocalObject","InfoReceiverIframe","ir","utils","IframeTransport","InfoIframe","go","ifr","msg","d","document","body","enabled","XDR","XHRCors","XHRLocal","XHRFake","InfoReceiver","urlInfo","doXhr","_getReceiver","sameOrigin","sameScheme","addPath","timeoutRef","_cleanup","timeout","clearTimeout","location","protocol","host","port","URL","random","escape","browser","log","transports","protocols","options","TypeError","readyState","CONNECTING","extensions","protocols_whitelist","warn","_transportsWhitelist","_transportOptions","transportOptions","_timeout","sessionId","_generateSessionId","string","_server","server","numberString","parsedUrl","SyntaxError","secure","isLoopbackAddr","hostname","isArray","sortedProtocols","sort","proto","getOrigin","_origin","toLowerCase","set","pathname","replace","_urlInfo","nullOrigin","hasDomain","isSchemeEqual","_ir","_receiveInfo","userSetCode","CLOSING","CLOSED","OPEN","quote","_rto","countRTO","_transUrl","base_url","extend","enabledTransports","filterToEnabled","_transports","main","_connect","Transport","shift","needBody","unshift","timeoutMs","Math","max","roundTrips","_transportTimeoutId","_transportTimeout","transportUrl","transportObj","content","payload","_open","forceFail","onmessage","onclose","onerror","ArrayPrototype","ObjectPrototype","Object","FunctionPrototype","Function","StringPrototype","String","array_slice","_toString","toString","isFunction","val","obj","isString","supportsDescriptors","defineProperty","object","name","method","forceAssign","configurable","enumerable","writable","value","defineProperties","map","hasOwnProperty","toObject","toInteger","num","floor","abs","ToUint32","x","Empty","that","target","binder","bound","result","boundLength","boundArgs","push","join","boxedString","splitString","properlyBoxesContext","properlyBoxed","properlyBoxesNonStrict","properlyBoxesStrict","_","__","context","fun","split","thisp","hasFirefox2IndexOfBug","sought","string_split","compliantExecNpcg","exec","separator","limit","output","flags","ignoreCase","multiline","extended","sticky","lastLastIndex","separator2","match","lastIndex","lastLength","RegExp","index","test","string_substr","substr","hasNegativeSubstrBug","start","XHR","XMLHttpRequest","AbstractXHRObject","opts","_start","xhr","addQuery","unloadRef","unloadAdd","open","ontimeout","noCredentials","supportsCORS","withCredentials","headers","key","setRequestHeader","onreadystatechange","responseText","abort","unloadDel","axo","cors","EventSource","Driver","WebSocket","MozWebSocket","WebSocketBrowserDriver","undefined","AjaxBasedTransport","EventSourceReceiver","XHRCorsObject","EventSourceDriver","EventSourceTransport","HtmlfileReceiver","HtmlFileTransport","iframeUrl","iframeObj","createIframe","onmessageCallback","_message","detachEvent","cleanup","loaded","cdata","post","message","iframeEnabled","SenderReceiver","JsonpReceiver","jsonpSender","JsonPTransport","createAjaxSender","callback","opt","ajaxUrl","err","urlSuffix","Receiver","BufferedSender","sender","sendBuffer","sendStop","sendSchedule","sendScheduleWait","tref","IframeWrapTransport","iframeInfo","Polling","receiveUrl","_scheduleReceiver","poll","pollIsClosing","senderFunc","pollUrl","es","decodeURI","polluteGlobalNamespace","id","decodeURIComponent","WPrefix","htmlfileEnabled","constructFunc","createHtmlfile","stop","urlWithId","encodeURIComponent","_callback","_createScript","timeoutId","_abort","scriptErrorTimeout","aborting","script2","parentNode","removeChild","script","onload","onclick","_scriptError","errorTimer","loadedOkay","createElement","src","charset","htmlFor","async","isOpera","head","getElementsByTagName","insertBefore","firstChild","XhrReceiver","bufferPosition","_chunkHandler","buf","form","area","iframe","createForm","style","display","position","enctype","acceptCharset","appendChild","action","submit","completed","XDRObject","xdr","XDomainRequest","_error","onprogress","XhrDriver","to","WebsocketDriver","WebSocketTransport","ignore","ws","XdrStreamingTransport","XdrPollingTransport","cookie_needed","XhrPollingTransport","XhrStreamingTransport","crypto","getRandomValues","randomBytes","bytes","Uint8Array","navigator","userAgent","isKonqueror","domain","extraEscapable","extraLookup","unrollLookup","escapable","unrolled","fromCharCode","charCodeAt","quoted","onUnload","afterUnload","isChromePackagedApp","chrome","app","runtime","ref","triggerUnloadCallbacks","unloadTriggered","errorCallback","unattach","contentWindow","doc","CollectGarbage","write","parentWindow","logObject","level","levelExists","console","prop","_randomStringChars","ret","number","transportsWhitelist","trans","websocket","b","res","path","qs","q","addr","s","m","h","w","y","isFinite","long","fmtLong","fmtShort","str","parseFloat","ms","msAbs","round","plural","isPlural","_typeof","Symbol","iterator","constructor","formatArgs","save","load","useColors","storage","localstorage","colors","__nwjs","documentElement","WebkitAppearance","firebug","exception","table","parseInt","$1","namespace","humanize","diff","color","splice","lastC","_console","namespaces","setItem","removeItem","error","getItem","DEBUG","localStorage","formatters","j","v","setup","createDebug","default","coerce","disable","enable","keys","instances","names","skips","selectColor","prevTime","_len","_key","curr","Number","prev","format","formatter","logFn","destroy","init","delimiter","len","instance","stack","create","ctor","superCtor","super_","TempCtor","has","undef","decode","input","encode","querystring","query","parser","part","querystringify","prefix","pairs","isNaN","required","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","sanitize","address","isSpecial","NaN","lolcation","globalVar","finaldestination","Url","unescape","scheme","extractProtocol","forwardSlashes","otherSlashes","slashesCount","rest","resolve","relative","base","last","up","extracted","instruction","instructions","lastIndexOf","charAt","username","password","auth","fn","pop","char","ins"],"mappings":"AAAA;AACA,CAAC,UAASA,CAAT,EAAW;AAAC,MAAG,OAAOC,OAAP,KAAiB,QAAjB,IAA2B,OAAOC,MAAP,KAAgB,WAA9C,EAA0D;AAACA,IAAAA,MAAM,CAACD,OAAP,GAAeD,CAAC,EAAhB;AAAmB,GAA9E,MAAmF,IAAG,OAAOG,MAAP,KAAgB,UAAhB,IAA4BA,MAAM,CAACC,GAAtC,EAA0C;AAACD,IAAAA,MAAM,CAAC,EAAD,EAAIH,CAAJ,CAAN;AAAa,GAAxD,MAA4D;AAAC,QAAIK,CAAJ;;AAAM,QAAG,OAAOC,MAAP,KAAgB,WAAnB,EAA+B;AAACD,MAAAA,CAAC,GAACC,MAAF;AAAS,KAAzC,MAA8C,IAAG,OAAOC,MAAP,KAAgB,WAAnB,EAA+B;AAACF,MAAAA,CAAC,GAACE,MAAF;AAAS,KAAzC,MAA8C,IAAG,OAAOC,IAAP,KAAc,WAAjB,EAA6B;AAACH,MAAAA,CAAC,GAACG,IAAF;AAAO,KAArC,MAAyC;AAACH,MAAAA,CAAC,GAAC,IAAF;AAAO;;AAAAA,IAAAA,CAAC,CAACI,MAAF,GAAWT,CAAC,EAAZ;AAAe;AAAC,CAAhU,EAAkU,YAAU;AAAC,MAAIG,MAAJ,EAAWD,MAAX,EAAkBD,OAAlB;AAA0B,SAAQ,YAAU;AAAC,aAASS,CAAT,CAAWC,CAAX,EAAaC,CAAb,EAAeC,CAAf,EAAiB;AAAC,eAASC,CAAT,CAAWC,CAAX,EAAaf,CAAb,EAAe;AAAC,YAAG,CAACY,CAAC,CAACG,CAAD,CAAL,EAAS;AAAC,cAAG,CAACJ,CAAC,CAACI,CAAD,CAAL,EAAS;AAAC,gBAAIC,CAAC,GAAC,cAAY,OAAOC,OAAnB,IAA4BA,OAAlC;AAA0C,gBAAG,CAACjB,CAAD,IAAIgB,CAAP,EAAS,OAAOA,CAAC,CAACD,CAAD,EAAG,CAAC,CAAJ,CAAR;AAAe,gBAAGG,CAAH,EAAK,OAAOA,CAAC,CAACH,CAAD,EAAG,CAAC,CAAJ,CAAR;AAAe,gBAAII,CAAC,GAAC,IAAIC,KAAJ,CAAU,yBAAuBL,CAAvB,GAAyB,GAAnC,CAAN;AAA8C,kBAAMI,CAAC,CAACE,IAAF,GAAO,kBAAP,EAA0BF,CAAhC;AAAkC;;AAAA,cAAIG,CAAC,GAACV,CAAC,CAACG,CAAD,CAAD,GAAK;AAACd,YAAAA,OAAO,EAAC;AAAT,WAAX;AAAwBU,UAAAA,CAAC,CAACI,CAAD,CAAD,CAAK,CAAL,EAAQQ,IAAR,CAAaD,CAAC,CAACrB,OAAf,EAAuB,UAASS,CAAT,EAAW;AAAC,gBAAIE,CAAC,GAACD,CAAC,CAACI,CAAD,CAAD,CAAK,CAAL,EAAQL,CAAR,CAAN;AAAiB,mBAAOI,CAAC,CAACF,CAAC,IAAEF,CAAJ,CAAR;AAAe,WAAnE,EAAoEY,CAApE,EAAsEA,CAAC,CAACrB,OAAxE,EAAgFS,CAAhF,EAAkFC,CAAlF,EAAoFC,CAApF,EAAsFC,CAAtF;AAAyF;;AAAA,eAAOD,CAAC,CAACG,CAAD,CAAD,CAAKd,OAAZ;AAAoB;;AAAA,WAAI,IAAIiB,CAAC,GAAC,cAAY,OAAOD,OAAnB,IAA4BA,OAAlC,EAA0CF,CAAC,GAAC,CAAhD,EAAkDA,CAAC,GAACF,CAAC,CAACW,MAAtD,EAA6DT,CAAC,EAA9D,EAAiED,CAAC,CAACD,CAAC,CAACE,CAAD,CAAF,CAAD;;AAAQ,aAAOD,CAAP;AAAS;;AAAA,WAAOJ,CAAP;AAAS,GAAxc,GAA4c;AAAC,OAAE,CAAC,UAASO,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC91B,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIkB,aAAa,GAAGR,OAAO,CAAC,kBAAD,CAA3B;;AAEAf,UAAAA,MAAM,CAACD,OAAP,GAAiBgB,OAAO,CAAC,QAAD,CAAP,CAAkBQ,aAAlB,CAAjB,CAL+B,CAO/B;;AACA,cAAI,oBAAoBlB,MAAxB,EAAgC;AAC9BmB,YAAAA,UAAU,CAACnB,MAAM,CAACoB,cAAR,EAAwB,CAAxB,CAAV;AACD;AAEA,SAZkB,EAYhBJ,IAZgB,CAYX,IAZW;AAYL,OAZd,EAYgBA,IAZhB,CAYqB,IAZrB,EAY0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAZjJ;AAcC,KAf4zB,EAe3zB;AAAC,gBAAS,EAAV;AAAa,0BAAmB;AAAhC,KAf2zB,CAAH;AAenxB,OAAE,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1E;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACIY,KAAK,GAAGZ,OAAO,CAAC,SAAD,CADnB;;AAIA,eAASa,UAAT,GAAsB;AACpBD,QAAAA,KAAK,CAACN,IAAN,CAAW,IAAX;AACA,aAAKQ,SAAL,CAAe,OAAf,EAAwB,KAAxB,EAA+B,KAA/B;AACA,aAAKC,QAAL,GAAgB,KAAhB;AACA,aAAKX,IAAL,GAAY,CAAZ;AACA,aAAKY,MAAL,GAAc,EAAd;AACD;;AAEDL,MAAAA,QAAQ,CAACE,UAAD,EAAaD,KAAb,CAAR;AAEA3B,MAAAA,MAAM,CAACD,OAAP,GAAiB6B,UAAjB;AAEC,KAnBwC,EAmBvC;AAAC,iBAAU,CAAX;AAAa,kBAAW;AAAxB,KAnBuC,CAfixB;AAkC3xB,OAAE,CAAC,UAASb,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAClE;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACIiB,WAAW,GAAGjB,OAAO,CAAC,eAAD,CADzB;;AAIA,eAASkB,YAAT,GAAwB;AACtBD,QAAAA,WAAW,CAACX,IAAZ,CAAiB,IAAjB;AACD;;AAEDK,MAAAA,QAAQ,CAACO,YAAD,EAAeD,WAAf,CAAR;;AAEAC,MAAAA,YAAY,CAACC,SAAb,CAAuBC,kBAAvB,GAA4C,UAASC,IAAT,EAAe;AACzD,YAAIA,IAAJ,EAAU;AACR,iBAAO,KAAKC,UAAL,CAAgBD,IAAhB,CAAP;AACD,SAFD,MAEO;AACL,eAAKC,UAAL,GAAkB,EAAlB;AACD;AACF,OAND;;AAQAJ,MAAAA,YAAY,CAACC,SAAb,CAAuBI,IAAvB,GAA8B,UAASF,IAAT,EAAeG,QAAf,EAAyB;AACrD,YAAIjC,IAAI,GAAG,IAAX;AAAA,YACIkC,KAAK,GAAG,KADZ;;AAGA,iBAASrC,CAAT,GAAa;AACXG,UAAAA,IAAI,CAACmC,cAAL,CAAoBL,IAApB,EAA0BjC,CAA1B;;AAEA,cAAI,CAACqC,KAAL,EAAY;AACVA,YAAAA,KAAK,GAAG,IAAR;AACAD,YAAAA,QAAQ,CAACG,KAAT,CAAe,IAAf,EAAqBC,SAArB;AACD;AACF;;AAED,aAAKC,EAAL,CAAQR,IAAR,EAAcjC,CAAd;AACD,OAdD;;AAgBA8B,MAAAA,YAAY,CAACC,SAAb,CAAuBW,IAAvB,GAA8B,YAAW;AACvC,YAAIT,IAAI,GAAGO,SAAS,CAAC,CAAD,CAApB;AACA,YAAIG,SAAS,GAAG,KAAKT,UAAL,CAAgBD,IAAhB,CAAhB;;AACA,YAAI,CAACU,SAAL,EAAgB;AACd;AACD,SALsC,CAMvC;;;AACA,YAAIC,CAAC,GAAGJ,SAAS,CAACrB,MAAlB;AACA,YAAI0B,IAAI,GAAG,IAAIC,KAAJ,CAAUF,CAAC,GAAG,CAAd,CAAX;;AACA,aAAK,IAAIG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGH,CAAtB,EAAyBG,EAAE,EAA3B,EAA+B;AAC7BF,UAAAA,IAAI,CAACE,EAAE,GAAG,CAAN,CAAJ,GAAeP,SAAS,CAACO,EAAD,CAAxB;AACD;;AACD,aAAK,IAAIrC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiC,SAAS,CAACxB,MAA9B,EAAsCT,CAAC,EAAvC,EAA2C;AACzCiC,UAAAA,SAAS,CAACjC,CAAD,CAAT,CAAa6B,KAAb,CAAmB,IAAnB,EAAyBM,IAAzB;AACD;AACF,OAfD;;AAiBAf,MAAAA,YAAY,CAACC,SAAb,CAAuBU,EAAvB,GAA4BX,YAAY,CAACC,SAAb,CAAuBiB,WAAvB,GAAqCnB,WAAW,CAACE,SAAZ,CAAsBkB,gBAAvF;AACAnB,MAAAA,YAAY,CAACC,SAAb,CAAuBO,cAAvB,GAAwCT,WAAW,CAACE,SAAZ,CAAsBmB,mBAA9D;AAEArD,MAAAA,MAAM,CAACD,OAAP,CAAekC,YAAf,GAA8BA,YAA9B;AAEC,KA3DgC,EA2D/B;AAAC,uBAAgB,CAAjB;AAAmB,kBAAW;AAA9B,KA3D+B,CAlCyxB;AA6FrxB,OAAE,CAAC,UAASlB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACxE;;AAEA,eAAS4B,KAAT,CAAe2B,SAAf,EAA0B;AACxB,aAAKlB,IAAL,GAAYkB,SAAZ;AACD;;AAED3B,MAAAA,KAAK,CAACO,SAAN,CAAgBL,SAAhB,GAA4B,UAASyB,SAAT,EAAoBC,SAApB,EAA+BC,UAA/B,EAA2C;AACrE,aAAKpB,IAAL,GAAYkB,SAAZ;AACA,aAAKG,OAAL,GAAeF,SAAf;AACA,aAAKC,UAAL,GAAkBA,UAAlB;AACA,aAAKE,SAAL,GAAiB,CAAC,IAAIC,IAAJ,EAAlB;AACA,eAAO,IAAP;AACD,OAND;;AAQAhC,MAAAA,KAAK,CAACO,SAAN,CAAgB0B,eAAhB,GAAkC,YAAW,CAAE,CAA/C;;AACAjC,MAAAA,KAAK,CAACO,SAAN,CAAgB2B,cAAhB,GAAiC,YAAW,CAAE,CAA9C;;AAEAlC,MAAAA,KAAK,CAACmC,eAAN,GAAwB,CAAxB;AACAnC,MAAAA,KAAK,CAACoC,SAAN,GAAkB,CAAlB;AACApC,MAAAA,KAAK,CAACqC,cAAN,GAAuB,CAAvB;AAEAhE,MAAAA,MAAM,CAACD,OAAP,GAAiB4B,KAAjB;AAEC,KAxBsC,EAwBrC,EAxBqC,CA7FmxB;AAqHpzB,OAAE,CAAC,UAASZ,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACzC;AAEA;AACA;AACA;;AAEA,eAASiC,WAAT,GAAuB;AACrB,aAAKK,UAAL,GAAkB,EAAlB;AACD;;AAEDL,MAAAA,WAAW,CAACE,SAAZ,CAAsBkB,gBAAtB,GAAyC,UAASE,SAAT,EAAoBf,QAApB,EAA8B;AACrE,YAAI,EAAEe,SAAS,IAAI,KAAKjB,UAApB,CAAJ,EAAqC;AACnC,eAAKA,UAAL,CAAgBiB,SAAhB,IAA6B,EAA7B;AACD;;AACD,YAAIW,GAAG,GAAG,KAAK5B,UAAL,CAAgBiB,SAAhB,CAAV,CAJqE,CAKrE;;AACA,YAAIW,GAAG,CAACC,OAAJ,CAAY3B,QAAZ,MAA0B,CAAC,CAA/B,EAAkC;AAChC;AACA0B,UAAAA,GAAG,GAAGA,GAAG,CAACE,MAAJ,CAAW,CAAC5B,QAAD,CAAX,CAAN;AACD;;AACD,aAAKF,UAAL,CAAgBiB,SAAhB,IAA6BW,GAA7B;AACD,OAXD;;AAaAjC,MAAAA,WAAW,CAACE,SAAZ,CAAsBmB,mBAAtB,GAA4C,UAASC,SAAT,EAAoBf,QAApB,EAA8B;AACxE,YAAI0B,GAAG,GAAG,KAAK5B,UAAL,CAAgBiB,SAAhB,CAAV;;AACA,YAAI,CAACW,GAAL,EAAU;AACR;AACD;;AACD,YAAIG,GAAG,GAAGH,GAAG,CAACC,OAAJ,CAAY3B,QAAZ,CAAV;;AACA,YAAI6B,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd,cAAIH,GAAG,CAAC3C,MAAJ,GAAa,CAAjB,EAAoB;AAClB;AACA,iBAAKe,UAAL,CAAgBiB,SAAhB,IAA6BW,GAAG,CAACI,KAAJ,CAAU,CAAV,EAAaD,GAAb,EAAkBD,MAAlB,CAAyBF,GAAG,CAACI,KAAJ,CAAUD,GAAG,GAAG,CAAhB,CAAzB,CAA7B;AACD,WAHD,MAGO;AACL,mBAAO,KAAK/B,UAAL,CAAgBiB,SAAhB,CAAP;AACD;;AACD;AACD;AACF,OAfD;;AAiBAtB,MAAAA,WAAW,CAACE,SAAZ,CAAsBoC,aAAtB,GAAsC,YAAW;AAC/C,YAAIC,KAAK,GAAG5B,SAAS,CAAC,CAAD,CAArB;AACA,YAAIhC,CAAC,GAAG4D,KAAK,CAACnC,IAAd,CAF+C,CAG/C;;AACA,YAAIY,IAAI,GAAGL,SAAS,CAACrB,MAAV,KAAqB,CAArB,GAAyB,CAACiD,KAAD,CAAzB,GAAmCtB,KAAK,CAACP,KAAN,CAAY,IAAZ,EAAkBC,SAAlB,CAA9C,CAJ+C,CAK/C;AACA;AACA;AACA;;AACA,YAAI,KAAK,OAAOhC,CAAZ,CAAJ,EAAoB;AAClB,eAAK,OAAOA,CAAZ,EAAe+B,KAAf,CAAqB,IAArB,EAA2BM,IAA3B;AACD;;AACD,YAAIrC,CAAC,IAAI,KAAK0B,UAAd,EAA0B;AACxB;AACA,cAAIS,SAAS,GAAG,KAAKT,UAAL,CAAgB1B,CAAhB,CAAhB;;AACA,eAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiC,SAAS,CAACxB,MAA9B,EAAsCT,CAAC,EAAvC,EAA2C;AACzCiC,YAAAA,SAAS,CAACjC,CAAD,CAAT,CAAa6B,KAAb,CAAmB,IAAnB,EAAyBM,IAAzB;AACD;AACF;AACF,OAnBD;;AAqBAhD,MAAAA,MAAM,CAACD,OAAP,GAAiBiC,WAAjB;AAEC,KAhEO,EAgEN,EAhEM,CArHkzB;AAqLpzB,OAAE,CAAC,UAASjB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACzC;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACIY,KAAK,GAAGZ,OAAO,CAAC,SAAD,CADnB;;AAIA,eAASyD,qBAAT,CAA+BC,IAA/B,EAAqC;AACnC9C,QAAAA,KAAK,CAACN,IAAN,CAAW,IAAX;AACA,aAAKQ,SAAL,CAAe,SAAf,EAA0B,KAA1B,EAAiC,KAAjC;AACA,aAAK4C,IAAL,GAAYA,IAAZ;AACD;;AAED/C,MAAAA,QAAQ,CAAC8C,qBAAD,EAAwB7C,KAAxB,CAAR;AAEA3B,MAAAA,MAAM,CAACD,OAAP,GAAiByE,qBAAjB;AAEC,KAjBO,EAiBN;AAAC,iBAAU,CAAX;AAAa,kBAAW;AAAxB,KAjBM,CArLkzB;AAsM3xB,OAAE,CAAC,UAASzD,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAClE;;AAEA,UAAI2E,WAAW,GAAG3D,OAAO,CAAC,gBAAD,CAAzB;;AAGA,eAAS4D,QAAT,CAAkBC,SAAlB,EAA6B;AAC3B,aAAKC,UAAL,GAAkBD,SAAlB;AACAA,QAAAA,SAAS,CAAChC,EAAV,CAAa,SAAb,EAAwB,KAAKkC,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAxB;AACAH,QAAAA,SAAS,CAAChC,EAAV,CAAa,OAAb,EAAsB,KAAKoC,eAAL,CAAqBD,IAArB,CAA0B,IAA1B,CAAtB;AACD;;AAEDJ,MAAAA,QAAQ,CAACzC,SAAT,CAAmB8C,eAAnB,GAAqC,UAAS7D,IAAT,EAAeY,MAAf,EAAuB;AAC1D2C,QAAAA,WAAW,CAACO,WAAZ,CAAwB,GAAxB,EAA6BC,IAAI,CAACC,SAAL,CAAe,CAAChE,IAAD,EAAOY,MAAP,CAAf,CAA7B;AACD,OAFD;;AAGA4C,MAAAA,QAAQ,CAACzC,SAAT,CAAmB4C,iBAAnB,GAAuC,UAASM,KAAT,EAAgB;AACrDV,QAAAA,WAAW,CAACO,WAAZ,CAAwB,GAAxB,EAA6BG,KAA7B;AACD,OAFD;;AAGAT,MAAAA,QAAQ,CAACzC,SAAT,CAAmBmD,KAAnB,GAA2B,UAASZ,IAAT,EAAe;AACxC,aAAKI,UAAL,CAAgBS,IAAhB,CAAqBb,IAArB;AACD,OAFD;;AAGAE,MAAAA,QAAQ,CAACzC,SAAT,CAAmBqD,MAAnB,GAA4B,YAAW;AACrC,aAAKV,UAAL,CAAgBW,KAAhB;;AACA,aAAKX,UAAL,CAAgB1C,kBAAhB;AACD,OAHD;;AAKAnC,MAAAA,MAAM,CAACD,OAAP,GAAiB4E,QAAjB;AAEC,KA5BgC,EA4B/B;AAAC,wBAAiB;AAAlB,KA5B+B,CAtMyxB;AAkOjyB,OAAE,CAAC,UAAS5D,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC5D,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAIC,QAAQ,GAAG3E,OAAO,CAAC,aAAD,CAAtB;AAAA,cACI4E,UAAU,GAAG5E,OAAO,CAAC,eAAD,CADxB;AAAA,cAEI4D,QAAQ,GAAG5D,OAAO,CAAC,UAAD,CAFtB;AAAA,cAGI6E,kBAAkB,GAAG7E,OAAO,CAAC,wBAAD,CAHhC;AAAA,cAII2D,WAAW,GAAG3D,OAAO,CAAC,gBAAD,CAJzB;AAAA,cAKI8E,GAAG,GAAG9E,OAAO,CAAC,YAAD,CALjB;;AAQA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,gCAAjB,CAAR;AACD;;AAEDf,UAAAA,MAAM,CAACD,OAAP,GAAiB,UAASQ,MAAT,EAAiB0F,mBAAjB,EAAsC;AACrD,gBAAIC,YAAY,GAAG,EAAnB;AACAD,YAAAA,mBAAmB,CAACE,OAApB,CAA4B,UAASC,EAAT,EAAa;AACvC,kBAAIA,EAAE,CAACC,eAAP,EAAwB;AACtBH,gBAAAA,YAAY,CAACE,EAAE,CAACC,eAAH,CAAmBC,aAApB,CAAZ,GAAiDF,EAAE,CAACC,eAApD;AACD;AACF,aAJD,EAFqD,CAQrD;AACA;;AACAH,YAAAA,YAAY,CAACN,kBAAkB,CAACU,aAApB,CAAZ,GAAiDV,kBAAjD;AACA,gBAAIW,YAAJ;AAEA;;AACAhG,YAAAA,MAAM,CAACiG,gBAAP,GAA0B,YAAW;AACnC;AACA,kBAAIC,MAAJ;AACA/B,cAAAA,WAAW,CAACgC,eAAZ,GAA8Bb,GAAG,CAACc,IAAJ,CAAStC,KAAT,CAAe,CAAf,CAA9B;;AACA,kBAAIuC,SAAS,GAAG,UAASnG,CAAT,EAAY;AAC1B,oBAAIA,CAAC,CAACoG,MAAF,KAAaC,MAAjB,EAAyB;AACvB;AACD;;AACD,oBAAI,OAAOP,YAAP,KAAwB,WAA5B,EAAyC;AACvCA,kBAAAA,YAAY,GAAG9F,CAAC,CAACsG,MAAjB;AACD;;AACD,oBAAItG,CAAC,CAACsG,MAAF,KAAaR,YAAjB,EAA+B;AAC7B;AACD;;AAED,oBAAIS,aAAJ;;AACA,oBAAI;AACFA,kBAAAA,aAAa,GAAG9B,IAAI,CAAC+B,KAAL,CAAWxG,CAAC,CAACgE,IAAb,CAAhB;AACD,iBAFD,CAEE,OAAOyC,OAAP,EAAgB;AAChBpB,kBAAAA,KAAK,CAAC,UAAD,EAAarF,CAAC,CAACgE,IAAf,CAAL;AACA;AACD;;AAED,oBAAIuC,aAAa,CAACG,QAAd,KAA2BzC,WAAW,CAACgC,eAA3C,EAA4D;AAC1D;AACD;;AACD,wBAAQM,aAAa,CAAC5E,IAAtB;AACA,uBAAK,GAAL;AACE,wBAAIhB,CAAJ;;AACA,wBAAI;AACFA,sBAAAA,CAAC,GAAG8D,IAAI,CAAC+B,KAAL,CAAWD,aAAa,CAACvC,IAAzB,CAAJ;AACD,qBAFD,CAEE,OAAOyC,OAAP,EAAgB;AAChBpB,sBAAAA,KAAK,CAAC,UAAD,EAAakB,aAAa,CAACvC,IAA3B,CAAL;AACA;AACD;;AACD,wBAAI2C,OAAO,GAAGhG,CAAC,CAAC,CAAD,CAAf;AACA,wBAAIwD,SAAS,GAAGxD,CAAC,CAAC,CAAD,CAAjB;AACA,wBAAIiG,QAAQ,GAAGjG,CAAC,CAAC,CAAD,CAAhB;AACA,wBAAIkG,OAAO,GAAGlG,CAAC,CAAC,CAAD,CAAf;AACA0E,oBAAAA,KAAK,CAACsB,OAAD,EAAUxC,SAAV,EAAqByC,QAArB,EAA+BC,OAA/B,CAAL,CAZF,CAaE;;AACA,wBAAIF,OAAO,KAAK7G,MAAM,CAAC6G,OAAvB,EAAgC;AAC9B,4BAAM,IAAIlG,KAAJ,CAAU,yCACN,IADM,GACCkG,OADD,GACW,gBADX,GAEN,IAFM,GAEC7G,MAAM,CAAC6G,OAFR,GAEkB,IAF5B,CAAN;AAGD;;AAED,wBAAI,CAAC1B,QAAQ,CAAC6B,aAAT,CAAuBF,QAAvB,EAAiCxB,GAAG,CAAC2B,IAArC,CAAD,IACA,CAAC9B,QAAQ,CAAC6B,aAAT,CAAuBD,OAAvB,EAAgCzB,GAAG,CAAC2B,IAApC,CADL,EACgD;AAC9C,4BAAM,IAAItG,KAAJ,CAAU,uDACN,WADM,GACQ2E,GAAG,CAAC2B,IADZ,GACmB,IADnB,GAC0BH,QAD1B,GACqC,IADrC,GAC4CC,OAD5C,GACsD,GADhE,CAAN;AAED;;AACDb,oBAAAA,MAAM,GAAG,IAAI9B,QAAJ,CAAa,IAAIuB,YAAY,CAACtB,SAAD,CAAhB,CAA4ByC,QAA5B,EAAsCC,OAAtC,CAAb,CAAT;AACA;;AACF,uBAAK,GAAL;AACEb,oBAAAA,MAAM,CAACpB,KAAP,CAAa2B,aAAa,CAACvC,IAA3B;;AACA;;AACF,uBAAK,GAAL;AACE,wBAAIgC,MAAJ,EAAY;AACVA,sBAAAA,MAAM,CAAClB,MAAP;AACD;;AACDkB,oBAAAA,MAAM,GAAG,IAAT;AACA;AApCF;AAsCD,eA5DD;;AA8DAd,cAAAA,UAAU,CAAC8B,WAAX,CAAuB,SAAvB,EAAkCb,SAAlC,EAlEmC,CAoEnC;;AACAlC,cAAAA,WAAW,CAACO,WAAZ,CAAwB,GAAxB;AACD,aAtED;AAuED,WArFD;AAuFC,SAvGmB,EAuGjB5D,IAvGiB,CAuGZ,IAvGY;AAuGN,OAvGd,EAuGgBA,IAvGhB,CAuGqB,IAvGrB,EAuG0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAvG1B;AAyGC,KA1G0B,EA0GzB;AAAC,kBAAW,CAAZ;AAAc,gCAAyB,EAAvC;AAA0C,oBAAa,EAAvD;AAA0D,uBAAgB,EAA1E;AAA6E,wBAAiB,EAA9F;AAAiG,qBAAc,EAA/G;AAAkH,eAAQ;AAA1H,KA1GyB,CAlO+xB;AA4UzrB,OAAE,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACpK,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAIxD,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,cACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEI2G,WAAW,GAAG3G,OAAO,CAAC,gBAAD,CAFzB;;AAKA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,yBAAjB,CAAR;AACD;;AAED,mBAAS4G,QAAT,CAAkBC,GAAlB,EAAuBC,UAAvB,EAAmC;AACjC5F,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEA,gBAAIf,IAAI,GAAG,IAAX;AACA,gBAAIwH,EAAE,GAAG,CAAC,IAAInE,IAAJ,EAAV;AACA,iBAAKoE,EAAL,GAAU,IAAIF,UAAJ,CAAe,KAAf,EAAsBD,GAAtB,CAAV;AAEA,iBAAKG,EAAL,CAAQzF,IAAR,CAAa,QAAb,EAAuB,UAAS0F,MAAT,EAAiBC,IAAjB,EAAuB;AAC5C,kBAAIC,IAAJ,EAAUC,GAAV;;AACA,kBAAIH,MAAM,KAAK,GAAf,EAAoB;AAClBG,gBAAAA,GAAG,GAAI,CAAC,IAAIxE,IAAJ,EAAF,GAAgBmE,EAAtB;;AACA,oBAAIG,IAAJ,EAAU;AACR,sBAAI;AACFC,oBAAAA,IAAI,GAAGhD,IAAI,CAAC+B,KAAL,CAAWgB,IAAX,CAAP;AACD,mBAFD,CAEE,OAAOxH,CAAP,EAAU;AACVqF,oBAAAA,KAAK,CAAC,UAAD,EAAamC,IAAb,CAAL;AACD;AACF;;AAED,oBAAI,CAACP,WAAW,CAACU,QAAZ,CAAqBF,IAArB,CAAL,EAAiC;AAC/BA,kBAAAA,IAAI,GAAG,EAAP;AACD;AACF;;AACD5H,cAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoBqF,IAApB,EAA0BC,GAA1B;AACA7H,cAAAA,IAAI,CAAC6B,kBAAL;AACD,aAlBD;AAmBD;;AAEDT,UAAAA,QAAQ,CAACiG,QAAD,EAAW1F,YAAX,CAAR;;AAEA0F,UAAAA,QAAQ,CAACzF,SAAT,CAAmBsD,KAAnB,GAA2B,YAAW;AACpC,iBAAKrD,kBAAL;AACA,iBAAK4F,EAAL,CAAQvC,KAAR;AACD,WAHD;;AAKAxF,UAAAA,MAAM,CAACD,OAAP,GAAiB4H,QAAjB;AAEC,SAlDmB,EAkDjBtG,IAlDiB,CAkDZ,IAlDY;AAkDN,OAlDd,EAkDgBA,IAlDhB,CAkDqB,IAlDrB,EAkD0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAlD1B;AAoDC,KArDkI,EAqDjI;AAAC,wBAAiB,EAAlB;AAAqB,eAAQ,EAA7B;AAAgC,gBAAS,CAAzC;AAA2C,kBAAW;AAAtD,KArDiI,CA5UurB;AAiY7vB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACjG;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;AAAA,UAEIoG,cAAc,GAAGtH,OAAO,CAAC,8BAAD,CAF5B;AAAA,UAGI4G,QAAQ,GAAG5G,OAAO,CAAC,aAAD,CAHtB;;AAMA,eAASuH,kBAAT,CAA4BjB,QAA5B,EAAsC;AACpC,YAAI/G,IAAI,GAAG,IAAX;AACA2B,QAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEA,aAAKkH,EAAL,GAAU,IAAIZ,QAAJ,CAAaN,QAAb,EAAuBgB,cAAvB,CAAV;AACA,aAAKE,EAAL,CAAQjG,IAAR,CAAa,QAAb,EAAuB,UAAS4F,IAAT,EAAeC,GAAf,EAAoB;AACzC7H,UAAAA,IAAI,CAACiI,EAAL,GAAU,IAAV;AACAjI,UAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqBqC,IAAI,CAACC,SAAL,CAAe,CAAC+C,IAAD,EAAOC,GAAP,CAAf,CAArB;AACD,SAHD;AAID;;AAEDzG,MAAAA,QAAQ,CAAC4G,kBAAD,EAAqBrG,YAArB,CAAR;AAEAqG,MAAAA,kBAAkB,CAAChC,aAAnB,GAAmC,sBAAnC;;AAEAgC,MAAAA,kBAAkB,CAACpG,SAAnB,CAA6BsD,KAA7B,GAAqC,YAAW;AAC9C,YAAI,KAAK+C,EAAT,EAAa;AACX,eAAKA,EAAL,CAAQ/C,KAAR;AACA,eAAK+C,EAAL,GAAU,IAAV;AACD;;AACD,aAAKpG,kBAAL;AACD,OAND;;AAQAnC,MAAAA,MAAM,CAACD,OAAP,GAAiBuI,kBAAjB;AAEC,KAlC+D,EAkC9D;AAAC,qBAAc,CAAf;AAAiB,sCAA+B,EAAhD;AAAmD,gBAAS,CAA5D;AAA8D,kBAAW;AAAzE,KAlC8D,CAjY0vB;AAma1uB,QAAG,CAAC,UAASvH,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACpH,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAI4B,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,cACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEIyH,KAAK,GAAGzH,OAAO,CAAC,eAAD,CAFnB;AAAA,cAGI0H,eAAe,GAAG1H,OAAO,CAAC,oBAAD,CAH7B;AAAA,cAIIuH,kBAAkB,GAAGvH,OAAO,CAAC,wBAAD,CAJhC;;AAOA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,2BAAjB,CAAR;AACD;;AAED,mBAAS2H,UAAT,CAAoBpB,OAApB,EAA6BM,GAA7B,EAAkC;AAChC,gBAAItH,IAAI,GAAG,IAAX;AACA2B,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;;AAEA,gBAAIsH,EAAE,GAAG,YAAW;AAClB,kBAAIC,GAAG,GAAGtI,IAAI,CAACsI,GAAL,GAAW,IAAIH,eAAJ,CAAoBH,kBAAkB,CAAChC,aAAvC,EAAsDsB,GAAtD,EAA2DN,OAA3D,CAArB;AAEAsB,cAAAA,GAAG,CAACtG,IAAJ,CAAS,SAAT,EAAoB,UAASuG,GAAT,EAAc;AAChC,oBAAIA,GAAJ,EAAS;AACP,sBAAIC,CAAJ;;AACA,sBAAI;AACFA,oBAAAA,CAAC,GAAG5D,IAAI,CAAC+B,KAAL,CAAW4B,GAAX,CAAJ;AACD,mBAFD,CAEE,OAAOpI,CAAP,EAAU;AACVqF,oBAAAA,KAAK,CAAC,UAAD,EAAa+C,GAAb,CAAL;AACAvI,oBAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV;AACAvC,oBAAAA,IAAI,CAACkF,KAAL;AACA;AACD;;AAED,sBAAI0C,IAAI,GAAGY,CAAC,CAAC,CAAD,CAAZ;AAAA,sBAAiBX,GAAG,GAAGW,CAAC,CAAC,CAAD,CAAxB;AACAxI,kBAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoBqF,IAApB,EAA0BC,GAA1B;AACD;;AACD7H,gBAAAA,IAAI,CAACkF,KAAL;AACD,eAhBD;AAkBAoD,cAAAA,GAAG,CAACtG,IAAJ,CAAS,OAAT,EAAkB,YAAW;AAC3BhC,gBAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV;AACAvC,gBAAAA,IAAI,CAACkF,KAAL;AACD,eAHD;AAID,aAzBD,CAJgC,CA+BhC;;;AACA,gBAAI,CAACnF,MAAM,CAAC0I,QAAP,CAAgBC,IAArB,EAA2B;AACzBR,cAAAA,KAAK,CAACf,WAAN,CAAkB,MAAlB,EAA0BkB,EAA1B;AACD,aAFD,MAEO;AACLA,cAAAA,EAAE;AACH;AACF;;AAEDjH,UAAAA,QAAQ,CAACgH,UAAD,EAAazG,YAAb,CAAR;;AAEAyG,UAAAA,UAAU,CAACO,OAAX,GAAqB,YAAW;AAC9B,mBAAOR,eAAe,CAACQ,OAAhB,EAAP;AACD,WAFD;;AAIAP,UAAAA,UAAU,CAACxG,SAAX,CAAqBsD,KAArB,GAA6B,YAAW;AACtC,gBAAI,KAAKoD,GAAT,EAAc;AACZ,mBAAKA,GAAL,CAASpD,KAAT;AACD;;AACD,iBAAKrD,kBAAL;AACA,iBAAKyG,GAAL,GAAW,IAAX;AACD,WAND;;AAQA5I,UAAAA,MAAM,CAACD,OAAP,GAAiB2I,UAAjB;AAEC,SAtE0B,EAsExBrH,IAtEwB,CAsEnB,IAtEmB;AAsEb,OAtEd,EAsEgBA,IAtEhB,CAsEqB,IAtErB,EAsE0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAtE1B,EAsEsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAtE7J;AAwEC,KAzEkF,EAyEjF;AAAC,gCAAyB,EAA1B;AAA6B,4BAAqB,EAAlD;AAAqD,uBAAgB,EAArE;AAAwE,eAAQ,EAAhF;AAAmF,gBAAS,CAA5F;AAA8F,kBAAW;AAAzG,KAzEiF,CAnauuB;AA4e1sB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACpJ,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAIxD,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,cACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEI2E,QAAQ,GAAG3E,OAAO,CAAC,aAAD,CAFtB;AAAA,cAGImI,GAAG,GAAGnI,OAAO,CAAC,wBAAD,CAHjB;AAAA,cAIIoI,OAAO,GAAGpI,OAAO,CAAC,6BAAD,CAJrB;AAAA,cAKIqI,QAAQ,GAAGrI,OAAO,CAAC,8BAAD,CALtB;AAAA,cAMIsI,OAAO,GAAGtI,OAAO,CAAC,6BAAD,CANrB;AAAA,cAOI2H,UAAU,GAAG3H,OAAO,CAAC,eAAD,CAPxB;AAAA,cAQI4G,QAAQ,GAAG5G,OAAO,CAAC,aAAD,CARtB;;AAWA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,6BAAjB,CAAR;AACD;;AAED,mBAASuI,YAAT,CAAsBhC,OAAtB,EAA+BiC,OAA/B,EAAwC;AACtCzD,YAAAA,KAAK,CAACwB,OAAD,CAAL;AACA,gBAAIhH,IAAI,GAAG,IAAX;AACA2B,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEAG,YAAAA,UAAU,CAAC,YAAW;AACpBlB,cAAAA,IAAI,CAACkJ,KAAL,CAAWlC,OAAX,EAAoBiC,OAApB;AACD,aAFS,EAEP,CAFO,CAAV;AAGD;;AAED7H,UAAAA,QAAQ,CAAC4H,YAAD,EAAerH,YAAf,CAAR,CA7BgC,CA+BhC;;AAEAqH,UAAAA,YAAY,CAACG,YAAb,GAA4B,UAASnC,OAAT,EAAkBM,GAAlB,EAAuB2B,OAAvB,EAAgC;AAC1D;AACA,gBAAIA,OAAO,CAACG,UAAZ,EAAwB;AACtB,qBAAO,IAAI/B,QAAJ,CAAaC,GAAb,EAAkBwB,QAAlB,CAAP;AACD;;AACD,gBAAID,OAAO,CAACF,OAAZ,EAAqB;AACnB,qBAAO,IAAItB,QAAJ,CAAaC,GAAb,EAAkBuB,OAAlB,CAAP;AACD;;AACD,gBAAID,GAAG,CAACD,OAAJ,IAAeM,OAAO,CAACI,UAA3B,EAAuC;AACrC,qBAAO,IAAIhC,QAAJ,CAAaC,GAAb,EAAkBsB,GAAlB,CAAP;AACD;;AACD,gBAAIR,UAAU,CAACO,OAAX,EAAJ,EAA0B;AACxB,qBAAO,IAAIP,UAAJ,CAAepB,OAAf,EAAwBM,GAAxB,CAAP;AACD;;AACD,mBAAO,IAAID,QAAJ,CAAaC,GAAb,EAAkByB,OAAlB,CAAP;AACD,WAfD;;AAiBAC,UAAAA,YAAY,CAACpH,SAAb,CAAuBsH,KAAvB,GAA+B,UAASlC,OAAT,EAAkBiC,OAAlB,EAA2B;AACxD,gBAAIjJ,IAAI,GAAG,IAAX;AAAA,gBACIsH,GAAG,GAAGlC,QAAQ,CAACkE,OAAT,CAAiBtC,OAAjB,EAA0B,OAA1B,CADV;AAGAxB,YAAAA,KAAK,CAAC,OAAD,EAAU8B,GAAV,CAAL;AAEA,iBAAKG,EAAL,GAAUuB,YAAY,CAACG,YAAb,CAA0BnC,OAA1B,EAAmCM,GAAnC,EAAwC2B,OAAxC,CAAV;AAEA,iBAAKM,UAAL,GAAkBrI,UAAU,CAAC,YAAW;AACtCsE,cAAAA,KAAK,CAAC,SAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACwJ,QAAL,CAAc,KAAd;;AACAxJ,cAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV;AACD,aAJ2B,EAIzByG,YAAY,CAACS,OAJY,CAA5B;AAMA,iBAAKhC,EAAL,CAAQzF,IAAR,CAAa,QAAb,EAAuB,UAAS4F,IAAT,EAAeC,GAAf,EAAoB;AACzCrC,cAAAA,KAAK,CAAC,QAAD,EAAWoC,IAAX,EAAiBC,GAAjB,CAAL;;AACA7H,cAAAA,IAAI,CAACwJ,QAAL,CAAc,IAAd;;AACAxJ,cAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoBqF,IAApB,EAA0BC,GAA1B;AACD,aAJD;AAKD,WAnBD;;AAqBAmB,UAAAA,YAAY,CAACpH,SAAb,CAAuB4H,QAAvB,GAAkC,UAAShI,QAAT,EAAmB;AACnDgE,YAAAA,KAAK,CAAC,UAAD,CAAL;AACAkE,YAAAA,YAAY,CAAC,KAAKH,UAAN,CAAZ;AACA,iBAAKA,UAAL,GAAkB,IAAlB;;AACA,gBAAI,CAAC/H,QAAD,IAAa,KAAKiG,EAAtB,EAA0B;AACxB,mBAAKA,EAAL,CAAQvC,KAAR;AACD;;AACD,iBAAKuC,EAAL,GAAU,IAAV;AACD,WARD;;AAUAuB,UAAAA,YAAY,CAACpH,SAAb,CAAuBsD,KAAvB,GAA+B,YAAW;AACxCM,YAAAA,KAAK,CAAC,OAAD,CAAL;AACA,iBAAK3D,kBAAL;;AACA,iBAAK2H,QAAL,CAAc,KAAd;AACD,WAJD;;AAMAR,UAAAA,YAAY,CAACS,OAAb,GAAuB,IAAvB;AAEA/J,UAAAA,MAAM,CAACD,OAAP,GAAiBuJ,YAAjB;AAEC,SA3FmB,EA2FjBjI,IA3FiB,CA2FZ,IA3FY;AA2FN,OA3Fd,EA2FgBA,IA3FhB,CA2FqB,IA3FrB,EA2F0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OA3F1B;AA6FC,KA9FkH,EA8FjH;AAAC,qBAAc,CAAf;AAAiB,uBAAgB,EAAjC;AAAoC,gCAAyB,EAA7D;AAAgE,qCAA8B,EAA9F;AAAiG,qCAA8B,EAA/H;AAAkI,sCAA+B,EAAjK;AAAoK,qBAAc,EAAlL;AAAqL,eAAQ,EAA7L;AAAgM,gBAAS,CAAzM;AAA2M,kBAAW;AAAtN,KA9FiH,CA5eusB;AA0kB7lB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACjQ,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEAL,UAAAA,MAAM,CAACD,OAAP,GAAiBM,MAAM,CAAC4J,QAAP,IAAmB;AAClClD,YAAAA,MAAM,EAAE,qBAD0B;AAElCmD,YAAAA,QAAQ,EAAE,OAFwB;AAGlCC,YAAAA,IAAI,EAAE,WAH4B;AAIlCC,YAAAA,IAAI,EAAE,EAJ4B;AAKlC5C,YAAAA,IAAI,EAAE,mBAL4B;AAMlCb,YAAAA,IAAI,EAAE;AAN4B,WAApC;AASC,SAZkB,EAYhBtF,IAZgB,CAYX,IAZW;AAYL,OAZd,EAYgBA,IAZhB,CAYqB,IAZrB,EAY0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAZjJ;AAcC,KAf+N,EAe9N,EAf8N,CA1kB0lB;AAylBpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEAU,UAAAA,OAAO,CAAC,SAAD,CAAP;;AAEA,cAAIsJ,GAAG,GAAGtJ,OAAO,CAAC,WAAD,CAAjB;AAAA,cACIW,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEIuJ,MAAM,GAAGvJ,OAAO,CAAC,gBAAD,CAFpB;AAAA,cAGIwJ,MAAM,GAAGxJ,OAAO,CAAC,gBAAD,CAHpB;AAAA,cAII2E,QAAQ,GAAG3E,OAAO,CAAC,aAAD,CAJtB;AAAA,cAKI4E,UAAU,GAAG5E,OAAO,CAAC,eAAD,CALxB;AAAA,cAMI6D,SAAS,GAAG7D,OAAO,CAAC,mBAAD,CANvB;AAAA,cAOI2G,WAAW,GAAG3G,OAAO,CAAC,gBAAD,CAPzB;AAAA,cAQIyJ,OAAO,GAAGzJ,OAAO,CAAC,iBAAD,CARrB;AAAA,cASI0J,GAAG,GAAG1J,OAAO,CAAC,aAAD,CATjB;AAAA,cAUIY,KAAK,GAAGZ,OAAO,CAAC,eAAD,CAVnB;AAAA,cAWIiB,WAAW,GAAGjB,OAAO,CAAC,qBAAD,CAXzB;AAAA,cAYI8E,GAAG,GAAG9E,OAAO,CAAC,YAAD,CAZjB;AAAA,cAaIa,UAAU,GAAGb,OAAO,CAAC,eAAD,CAbxB;AAAA,cAcIyD,qBAAqB,GAAGzD,OAAO,CAAC,uBAAD,CAdnC;AAAA,cAeIuI,YAAY,GAAGvI,OAAO,CAAC,iBAAD,CAf1B;;AAkBA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,oBAAjB,CAAR;AACD;;AAED,cAAI2J,UAAJ,CA5BuC,CA8BvC;;AACA,mBAASnK,MAAT,CAAgBqH,GAAhB,EAAqB+C,SAArB,EAAgCC,OAAhC,EAAyC;AACvC,gBAAI,EAAE,gBAAgBrK,MAAlB,CAAJ,EAA+B;AAC7B,qBAAO,IAAIA,MAAJ,CAAWqH,GAAX,EAAgB+C,SAAhB,EAA2BC,OAA3B,CAAP;AACD;;AACD,gBAAIjI,SAAS,CAACrB,MAAV,GAAmB,CAAvB,EAA0B;AACxB,oBAAM,IAAIuJ,SAAJ,CAAc,sEAAd,CAAN;AACD;;AACD7I,YAAAA,WAAW,CAACX,IAAZ,CAAiB,IAAjB;AAEA,iBAAKyJ,UAAL,GAAkBvK,MAAM,CAACwK,UAAzB;AACA,iBAAKC,UAAL,GAAkB,EAAlB;AACA,iBAAKd,QAAL,GAAgB,EAAhB,CAXuC,CAavC;;AACAU,YAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;;AACA,gBAAIA,OAAO,CAACK,mBAAZ,EAAiC;AAC/BR,cAAAA,GAAG,CAACS,IAAJ,CAAS,gEAAT;AACD;;AACD,iBAAKC,oBAAL,GAA4BP,OAAO,CAACF,UAApC;AACA,iBAAKU,iBAAL,GAAyBR,OAAO,CAACS,gBAAR,IAA4B,EAArD;AACA,iBAAKC,QAAL,GAAgBV,OAAO,CAACb,OAAR,IAAmB,CAAnC;AAEA,gBAAIwB,SAAS,GAAGX,OAAO,CAACW,SAAR,IAAqB,CAArC;;AACA,gBAAI,OAAOA,SAAP,KAAqB,UAAzB,EAAqC;AACnC,mBAAKC,kBAAL,GAA0BD,SAA1B;AACD,aAFD,MAEO,IAAI,OAAOA,SAAP,KAAqB,QAAzB,EAAmC;AACxC,mBAAKC,kBAAL,GAA0B,YAAW;AACnC,uBAAOlB,MAAM,CAACmB,MAAP,CAAcF,SAAd,CAAP;AACD,eAFD;AAGD,aAJM,MAIA;AACL,oBAAM,IAAIV,SAAJ,CAAc,6EAAd,CAAN;AACD;;AAED,iBAAKa,OAAL,GAAed,OAAO,CAACe,MAAR,IAAkBrB,MAAM,CAACsB,YAAP,CAAoB,IAApB,CAAjC,CAjCuC,CAmCvC;;AACA,gBAAIC,SAAS,GAAG,IAAIxB,GAAJ,CAAQzC,GAAR,CAAhB;;AACA,gBAAI,CAACiE,SAAS,CAAC1B,IAAX,IAAmB,CAAC0B,SAAS,CAAC3B,QAAlC,EAA4C;AAC1C,oBAAM,IAAI4B,WAAJ,CAAgB,cAAclE,GAAd,GAAoB,cAApC,CAAN;AACD,aAFD,MAEO,IAAIiE,SAAS,CAAClF,IAAd,EAAoB;AACzB,oBAAM,IAAImF,WAAJ,CAAgB,qCAAhB,CAAN;AACD,aAFM,MAEA,IAAID,SAAS,CAAC3B,QAAV,KAAuB,OAAvB,IAAkC2B,SAAS,CAAC3B,QAAV,KAAuB,QAA7D,EAAuE;AAC5E,oBAAM,IAAI4B,WAAJ,CAAgB,2DAA2DD,SAAS,CAAC3B,QAArE,GAAgF,mBAAhG,CAAN;AACD;;AAED,gBAAI6B,MAAM,GAAGF,SAAS,CAAC3B,QAAV,KAAuB,QAApC,CA7CuC,CA8CvC;;AACA,gBAAIrE,GAAG,CAACqE,QAAJ,KAAiB,QAAjB,IAA6B,CAAC6B,MAAlC,EAA0C;AACxC;AACA,kBAAI,CAACrG,QAAQ,CAACsG,cAAT,CAAwBH,SAAS,CAACI,QAAlC,CAAL,EAAkD;AAChD,sBAAM,IAAI/K,KAAJ,CAAU,iGAAV,CAAN;AACD;AACF,aApDsC,CAsDvC;AACA;;;AACA,gBAAI,CAACyJ,SAAL,EAAgB;AACdA,cAAAA,SAAS,GAAG,EAAZ;AACD,aAFD,MAEO,IAAI,CAAC1H,KAAK,CAACiJ,OAAN,CAAcvB,SAAd,CAAL,EAA+B;AACpCA,cAAAA,SAAS,GAAG,CAACA,SAAD,CAAZ;AACD,aA5DsC,CA8DvC;;;AACA,gBAAIwB,eAAe,GAAGxB,SAAS,CAACyB,IAAV,EAAtB;AACAD,YAAAA,eAAe,CAAChG,OAAhB,CAAwB,UAASkG,KAAT,EAAgBxL,CAAhB,EAAmB;AACzC,kBAAI,CAACwL,KAAL,EAAY;AACV,sBAAM,IAAIP,WAAJ,CAAgB,0BAA0BO,KAA1B,GAAkC,eAAlD,CAAN;AACD;;AACD,kBAAIxL,CAAC,GAAIsL,eAAe,CAAC7K,MAAhB,GAAyB,CAA9B,IAAoC+K,KAAK,KAAKF,eAAe,CAACtL,CAAC,GAAG,CAAL,CAAjE,EAA0E;AACxE,sBAAM,IAAIiL,WAAJ,CAAgB,0BAA0BO,KAA1B,GAAkC,kBAAlD,CAAN;AACD;AACF,aAPD,EAhEuC,CAyEvC;;AACA,gBAAIzL,CAAC,GAAG8E,QAAQ,CAAC4G,SAAT,CAAmBzG,GAAG,CAAC2B,IAAvB,CAAR;AACA,iBAAK+E,OAAL,GAAe3L,CAAC,GAAGA,CAAC,CAAC4L,WAAF,EAAH,GAAqB,IAArC,CA3EuC,CA6EvC;;AACAX,YAAAA,SAAS,CAACY,GAAV,CAAc,UAAd,EAA0BZ,SAAS,CAACa,QAAV,CAAmBC,OAAnB,CAA2B,MAA3B,EAAmC,EAAnC,CAA1B,EA9EuC,CAgFvC;;AACA,iBAAK/E,GAAL,GAAWiE,SAAS,CAACrE,IAArB;AACA1B,YAAAA,KAAK,CAAC,WAAD,EAAc,KAAK8B,GAAnB,CAAL,CAlFuC,CAoFvC;AACA;AACA;;AACA,iBAAKgF,QAAL,GAAgB;AACdC,cAAAA,UAAU,EAAE,CAACrC,OAAO,CAACsC,SAAR,EADC;AAEdpD,cAAAA,UAAU,EAAEhE,QAAQ,CAAC6B,aAAT,CAAuB,KAAKK,GAA5B,EAAiC/B,GAAG,CAAC2B,IAArC,CAFE;AAGdmC,cAAAA,UAAU,EAAEjE,QAAQ,CAACqH,aAAT,CAAuB,KAAKnF,GAA5B,EAAiC/B,GAAG,CAAC2B,IAArC;AAHE,aAAhB;AAMA,iBAAKwF,GAAL,GAAW,IAAI1D,YAAJ,CAAiB,KAAK1B,GAAtB,EAA2B,KAAKgF,QAAhC,CAAX;;AACA,iBAAKI,GAAL,CAAS1K,IAAT,CAAc,QAAd,EAAwB,KAAK2K,YAAL,CAAkBlI,IAAlB,CAAuB,IAAvB,CAAxB;AACD;;AAEDrD,UAAAA,QAAQ,CAACnB,MAAD,EAASyB,WAAT,CAAR;;AAEA,mBAASkL,WAAT,CAAqB/L,IAArB,EAA2B;AACzB,mBAAOA,IAAI,KAAK,IAAT,IAAkBA,IAAI,IAAI,IAAR,IAAgBA,IAAI,IAAI,IAAjD;AACD;;AAEDZ,UAAAA,MAAM,CAAC2B,SAAP,CAAiBsD,KAAjB,GAAyB,UAASrE,IAAT,EAAeY,MAAf,EAAuB;AAC9C;AACA,gBAAIZ,IAAI,IAAI,CAAC+L,WAAW,CAAC/L,IAAD,CAAxB,EAAgC;AAC9B,oBAAM,IAAID,KAAJ,CAAU,kCAAV,CAAN;AACD,aAJ6C,CAK9C;;;AACA,gBAAIa,MAAM,IAAIA,MAAM,CAACT,MAAP,GAAgB,GAA9B,EAAmC;AACjC,oBAAM,IAAIwK,WAAJ,CAAgB,uCAAhB,CAAN;AACD,aAR6C,CAU9C;;;AACA,gBAAI,KAAKhB,UAAL,KAAoBvK,MAAM,CAAC4M,OAA3B,IAAsC,KAAKrC,UAAL,KAAoBvK,MAAM,CAAC6M,MAArE,EAA6E;AAC3E;AACD,aAb6C,CAe9C;;;AACA,gBAAItL,QAAQ,GAAG,IAAf;;AACA,iBAAKyD,MAAL,CAAYpE,IAAI,IAAI,IAApB,EAA0BY,MAAM,IAAI,gBAApC,EAAsDD,QAAtD;AACD,WAlBD;;AAoBAvB,UAAAA,MAAM,CAAC2B,SAAP,CAAiBoD,IAAjB,GAAwB,UAASb,IAAT,EAAe;AACrC;AACA;AACA,gBAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,cAAAA,IAAI,GAAG,KAAKA,IAAZ;AACD;;AACD,gBAAI,KAAKqG,UAAL,KAAoBvK,MAAM,CAACwK,UAA/B,EAA2C;AACzC,oBAAM,IAAI7J,KAAJ,CAAU,gEAAV,CAAN;AACD;;AACD,gBAAI,KAAK4J,UAAL,KAAoBvK,MAAM,CAAC8M,IAA/B,EAAqC;AACnC;AACD;;AACD,iBAAKxI,UAAL,CAAgBS,IAAhB,CAAqBiF,MAAM,CAAC+C,KAAP,CAAa7I,IAAb,CAArB;AACD,WAbD;;AAeAlE,UAAAA,MAAM,CAAC6G,OAAP,GAAiBrG,OAAO,CAAC,WAAD,CAAxB;AAEAR,UAAAA,MAAM,CAACwK,UAAP,GAAoB,CAApB;AACAxK,UAAAA,MAAM,CAAC8M,IAAP,GAAc,CAAd;AACA9M,UAAAA,MAAM,CAAC4M,OAAP,GAAiB,CAAjB;AACA5M,UAAAA,MAAM,CAAC6M,MAAP,GAAgB,CAAhB;;AAEA7M,UAAAA,MAAM,CAAC2B,SAAP,CAAiB+K,YAAjB,GAAgC,UAAS/E,IAAT,EAAeC,GAAf,EAAoB;AAClDrC,YAAAA,KAAK,CAAC,cAAD,EAAiBqC,GAAjB,CAAL;AACA,iBAAK6E,GAAL,GAAW,IAAX;;AACA,gBAAI,CAAC9E,IAAL,EAAW;AACT,mBAAK3C,MAAL,CAAY,IAAZ,EAAkB,0BAAlB;;AACA;AACD,aANiD,CAQlD;AACA;;;AACA,iBAAKgI,IAAL,GAAY,KAAKC,QAAL,CAAcrF,GAAd,CAAZ,CAVkD,CAWlD;;AACA,iBAAKsF,SAAL,GAAiBvF,IAAI,CAACwF,QAAL,GAAgBxF,IAAI,CAACwF,QAArB,GAAgC,KAAK9F,GAAtD;AACAM,YAAAA,IAAI,GAAGR,WAAW,CAACiG,MAAZ,CAAmBzF,IAAnB,EAAyB,KAAK0E,QAA9B,CAAP;AACA9G,YAAAA,KAAK,CAAC,MAAD,EAASoC,IAAT,CAAL,CAdkD,CAelD;;AACA,gBAAI0F,iBAAiB,GAAGlD,UAAU,CAACmD,eAAX,CAA2B,KAAK1C,oBAAhC,EAAsDjD,IAAtD,CAAxB;AACA,iBAAK4F,WAAL,GAAmBF,iBAAiB,CAACG,IAArC;AACAjI,YAAAA,KAAK,CAAC,KAAKgI,WAAL,CAAiBxM,MAAjB,GAA0B,qBAA3B,CAAL;;AAEA,iBAAK0M,QAAL;AACD,WArBD;;AAuBAzN,UAAAA,MAAM,CAAC2B,SAAP,CAAiB8L,QAAjB,GAA4B,YAAW;AACrC,iBAAK,IAAIC,SAAS,GAAG,KAAKH,WAAL,CAAiBI,KAAjB,EAArB,EAA+CD,SAA/C,EAA0DA,SAAS,GAAG,KAAKH,WAAL,CAAiBI,KAAjB,EAAtE,EAAgG;AAC9FpI,cAAAA,KAAK,CAAC,SAAD,EAAYmI,SAAS,CAAC3H,aAAtB,CAAL;;AACA,kBAAI2H,SAAS,CAACE,QAAd,EAAwB;AACtB,oBAAI,CAAC9N,MAAM,CAAC0I,QAAP,CAAgBC,IAAjB,IACC,OAAO3I,MAAM,CAAC0I,QAAP,CAAgB+B,UAAvB,KAAsC,WAAtC,IACCzK,MAAM,CAAC0I,QAAP,CAAgB+B,UAAhB,KAA+B,UADhC,IAECzK,MAAM,CAAC0I,QAAP,CAAgB+B,UAAhB,KAA+B,aAHrC,EAGqD;AACnDhF,kBAAAA,KAAK,CAAC,kBAAD,CAAL;;AACA,uBAAKgI,WAAL,CAAiBM,OAAjB,CAAyBH,SAAzB;;AACAtI,kBAAAA,UAAU,CAAC8B,WAAX,CAAuB,MAAvB,EAA+B,KAAKuG,QAAL,CAAcjJ,IAAd,CAAmB,IAAnB,CAA/B;AACA;AACD;AACF,eAZ6F,CAc9F;;;AACA,kBAAIsJ,SAAS,GAAGC,IAAI,CAACC,GAAL,CAAS,KAAKjD,QAAd,EAAyB,KAAKiC,IAAL,GAAYU,SAAS,CAACO,UAAvB,IAAsC,IAA9D,CAAhB;AACA,mBAAKC,mBAAL,GAA2BjN,UAAU,CAAC,KAAKkN,iBAAL,CAAuB3J,IAAvB,CAA4B,IAA5B,CAAD,EAAoCsJ,SAApC,CAArC;AACAvI,cAAAA,KAAK,CAAC,eAAD,EAAkBuI,SAAlB,CAAL;AAEA,kBAAIM,YAAY,GAAGjJ,QAAQ,CAACkE,OAAT,CAAiB,KAAK6D,SAAtB,EAAiC,MAAM,KAAK/B,OAAX,GAAqB,GAArB,GAA2B,KAAKF,kBAAL,EAA5D,CAAnB;AACA,kBAAIZ,OAAO,GAAG,KAAKQ,iBAAL,CAAuB6C,SAAS,CAAC3H,aAAjC,CAAd;AACAR,cAAAA,KAAK,CAAC,eAAD,EAAkB6I,YAAlB,CAAL;AACA,kBAAIC,YAAY,GAAG,IAAIX,SAAJ,CAAcU,YAAd,EAA4B,KAAKlB,SAAjC,EAA4C7C,OAA5C,CAAnB;AACAgE,cAAAA,YAAY,CAAChM,EAAb,CAAgB,SAAhB,EAA2B,KAAKkC,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAA3B;AACA6J,cAAAA,YAAY,CAACtM,IAAb,CAAkB,OAAlB,EAA2B,KAAK0C,eAAL,CAAqBD,IAArB,CAA0B,IAA1B,CAA3B;AACA6J,cAAAA,YAAY,CAACtI,aAAb,GAA6B2H,SAAS,CAAC3H,aAAvC;AACA,mBAAKzB,UAAL,GAAkB+J,YAAlB;AAEA;AACD;;AACD,iBAAKrJ,MAAL,CAAY,IAAZ,EAAkB,uBAAlB,EAA2C,KAA3C;AACD,WAhCD;;AAkCAhF,UAAAA,MAAM,CAAC2B,SAAP,CAAiBwM,iBAAjB,GAAqC,YAAW;AAC9C5I,YAAAA,KAAK,CAAC,mBAAD,CAAL;;AACA,gBAAI,KAAKgF,UAAL,KAAoBvK,MAAM,CAACwK,UAA/B,EAA2C;AACzC,kBAAI,KAAKlG,UAAT,EAAqB;AACnB,qBAAKA,UAAL,CAAgBW,KAAhB;AACD;;AAED,mBAAKR,eAAL,CAAqB,IAArB,EAA2B,qBAA3B;AACD;AACF,WATD;;AAWAzE,UAAAA,MAAM,CAAC2B,SAAP,CAAiB4C,iBAAjB,GAAqC,UAAS+D,GAAT,EAAc;AACjD/C,YAAAA,KAAK,CAAC,mBAAD,EAAsB+C,GAAtB,CAAL;AACA,gBAAIvI,IAAI,GAAG,IAAX;AAAA,gBACI8B,IAAI,GAAGyG,GAAG,CAACxE,KAAJ,CAAU,CAAV,EAAa,CAAb,CADX;AAAA,gBAEIwK,OAAO,GAAGhG,GAAG,CAACxE,KAAJ,CAAU,CAAV,CAFd;AAAA,gBAGIyK,OAHJ,CAFiD,CAQjD;;AACA,oBAAQ1M,IAAR;AACE,mBAAK,GAAL;AACE,qBAAK2M,KAAL;;AACA;;AACF,mBAAK,GAAL;AACE,qBAAKzK,aAAL,CAAmB,IAAI3C,KAAJ,CAAU,WAAV,CAAnB;AACAmE,gBAAAA,KAAK,CAAC,WAAD,EAAc,KAAKlB,SAAnB,CAAL;AACA;AAPJ;;AAUA,gBAAIiK,OAAJ,EAAa;AACX,kBAAI;AACFC,gBAAAA,OAAO,GAAG5J,IAAI,CAAC+B,KAAL,CAAW4H,OAAX,CAAV;AACD,eAFD,CAEE,OAAOpO,CAAP,EAAU;AACVqF,gBAAAA,KAAK,CAAC,UAAD,EAAa+I,OAAb,CAAL;AACD;AACF;;AAED,gBAAI,OAAOC,OAAP,KAAmB,WAAvB,EAAoC;AAClChJ,cAAAA,KAAK,CAAC,eAAD,EAAkB+I,OAAlB,CAAL;AACA;AACD;;AAED,oBAAQzM,IAAR;AACE,mBAAK,GAAL;AACE,oBAAIa,KAAK,CAACiJ,OAAN,CAAc4C,OAAd,CAAJ,EAA4B;AAC1BA,kBAAAA,OAAO,CAAC3I,OAAR,CAAgB,UAAS/E,CAAT,EAAY;AAC1B0E,oBAAAA,KAAK,CAAC,SAAD,EAAYxF,IAAI,CAACsE,SAAjB,EAA4BxD,CAA5B,CAAL;AACAd,oBAAAA,IAAI,CAACgE,aAAL,CAAmB,IAAIE,qBAAJ,CAA0BpD,CAA1B,CAAnB;AACD,mBAHD;AAID;;AACD;;AACF,mBAAK,GAAL;AACE0E,gBAAAA,KAAK,CAAC,SAAD,EAAY,KAAKlB,SAAjB,EAA4BkK,OAA5B,CAAL;AACA,qBAAKxK,aAAL,CAAmB,IAAIE,qBAAJ,CAA0BsK,OAA1B,CAAnB;AACA;;AACF,mBAAK,GAAL;AACE,oBAAI7L,KAAK,CAACiJ,OAAN,CAAc4C,OAAd,KAA0BA,OAAO,CAACxN,MAAR,KAAmB,CAAjD,EAAoD;AAClD,uBAAKiE,MAAL,CAAYuJ,OAAO,CAAC,CAAD,CAAnB,EAAwBA,OAAO,CAAC,CAAD,CAA/B,EAAoC,IAApC;AACD;;AACD;AAjBJ;AAmBD,WAnDD;;AAqDAvO,UAAAA,MAAM,CAAC2B,SAAP,CAAiB8C,eAAjB,GAAmC,UAAS7D,IAAT,EAAeY,MAAf,EAAuB;AACxD+D,YAAAA,KAAK,CAAC,iBAAD,EAAoB,KAAKlB,SAAzB,EAAoCzD,IAApC,EAA0CY,MAA1C,CAAL;;AACA,gBAAI,KAAK8C,UAAT,EAAqB;AACnB,mBAAKA,UAAL,CAAgB1C,kBAAhB;;AACA,mBAAK0C,UAAL,GAAkB,IAAlB;AACA,mBAAKD,SAAL,GAAiB,IAAjB;AACD;;AAED,gBAAI,CAACsI,WAAW,CAAC/L,IAAD,CAAZ,IAAsBA,IAAI,KAAK,IAA/B,IAAuC,KAAK2J,UAAL,KAAoBvK,MAAM,CAACwK,UAAtE,EAAkF;AAChF,mBAAKiD,QAAL;;AACA;AACD;;AAED,iBAAKzI,MAAL,CAAYpE,IAAZ,EAAkBY,MAAlB;AACD,WAdD;;AAgBAxB,UAAAA,MAAM,CAAC2B,SAAP,CAAiB6M,KAAjB,GAAyB,YAAW;AAClCjJ,YAAAA,KAAK,CAAC,OAAD,EAAU,KAAKjB,UAAL,IAAmB,KAAKA,UAAL,CAAgByB,aAA7C,EAA4D,KAAKwE,UAAjE,CAAL;;AACA,gBAAI,KAAKA,UAAL,KAAoBvK,MAAM,CAACwK,UAA/B,EAA2C;AACzC,kBAAI,KAAK0D,mBAAT,EAA8B;AAC5BzE,gBAAAA,YAAY,CAAC,KAAKyE,mBAAN,CAAZ;AACA,qBAAKA,mBAAL,GAA2B,IAA3B;AACD;;AACD,mBAAK3D,UAAL,GAAkBvK,MAAM,CAAC8M,IAAzB;AACA,mBAAKzI,SAAL,GAAiB,KAAKC,UAAL,CAAgByB,aAAjC;AACA,mBAAKhC,aAAL,CAAmB,IAAI3C,KAAJ,CAAU,MAAV,CAAnB;AACAmE,cAAAA,KAAK,CAAC,WAAD,EAAc,KAAKlB,SAAnB,CAAL;AACD,aATD,MASO;AACL;AACA;AACA,mBAAKW,MAAL,CAAY,IAAZ,EAAkB,qBAAlB;AACD;AACF,WAhBD;;AAkBAhF,UAAAA,MAAM,CAAC2B,SAAP,CAAiBqD,MAAjB,GAA0B,UAASpE,IAAT,EAAeY,MAAf,EAAuBD,QAAvB,EAAiC;AACzDgE,YAAAA,KAAK,CAAC,QAAD,EAAW,KAAKlB,SAAhB,EAA2BzD,IAA3B,EAAiCY,MAAjC,EAAyCD,QAAzC,EAAmD,KAAKgJ,UAAxD,CAAL;AACA,gBAAIkE,SAAS,GAAG,KAAhB;;AAEA,gBAAI,KAAKhC,GAAT,EAAc;AACZgC,cAAAA,SAAS,GAAG,IAAZ;;AACA,mBAAKhC,GAAL,CAASxH,KAAT;;AACA,mBAAKwH,GAAL,GAAW,IAAX;AACD;;AACD,gBAAI,KAAKnI,UAAT,EAAqB;AACnB,mBAAKA,UAAL,CAAgBW,KAAhB;;AACA,mBAAKX,UAAL,GAAkB,IAAlB;AACA,mBAAKD,SAAL,GAAiB,IAAjB;AACD;;AAED,gBAAI,KAAKkG,UAAL,KAAoBvK,MAAM,CAAC6M,MAA/B,EAAuC;AACrC,oBAAM,IAAIlM,KAAJ,CAAU,mDAAV,CAAN;AACD;;AAED,iBAAK4J,UAAL,GAAkBvK,MAAM,CAAC4M,OAAzB;AACA3L,YAAAA,UAAU,CAAC,YAAW;AACpB,mBAAKsJ,UAAL,GAAkBvK,MAAM,CAAC6M,MAAzB;;AAEA,kBAAI4B,SAAJ,EAAe;AACb,qBAAK1K,aAAL,CAAmB,IAAI3C,KAAJ,CAAU,OAAV,CAAnB;AACD;;AAED,kBAAIlB,CAAC,GAAG,IAAImB,UAAJ,CAAe,OAAf,CAAR;AACAnB,cAAAA,CAAC,CAACqB,QAAF,GAAaA,QAAQ,IAAI,KAAzB;AACArB,cAAAA,CAAC,CAACU,IAAF,GAASA,IAAI,IAAI,IAAjB;AACAV,cAAAA,CAAC,CAACsB,MAAF,GAAWA,MAAX;AAEA,mBAAKuC,aAAL,CAAmB7D,CAAnB;AACA,mBAAKwO,SAAL,GAAiB,KAAKC,OAAL,GAAe,KAAKC,OAAL,GAAe,IAA/C;AACArJ,cAAAA,KAAK,CAAC,cAAD,CAAL;AACD,aAfU,CAeTf,IAfS,CAeJ,IAfI,CAAD,EAeI,CAfJ,CAAV;AAgBD,WApCD,CA3UuC,CAiXvC;AACA;;;AACAxE,UAAAA,MAAM,CAAC2B,SAAP,CAAiBsL,QAAjB,GAA4B,UAASrF,GAAT,EAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAIA,GAAG,GAAG,GAAV,EAAe;AACb,qBAAO,IAAIA,GAAX,CADa,CACG;AACjB;;AACD,mBAAO,MAAMA,GAAb,CAVwC,CAUtB;AACnB,WAXD;;AAaAnI,UAAAA,MAAM,CAACD,OAAP,GAAiB,UAASkG,mBAAT,EAA8B;AAC7CyE,YAAAA,UAAU,GAAG9F,SAAS,CAACqB,mBAAD,CAAtB;;AACAlF,YAAAA,OAAO,CAAC,oBAAD,CAAP,CAA8BR,MAA9B,EAAsC0F,mBAAtC;;AACA,mBAAO1F,MAAP;AACD,WAJD;AAMC,SAtY0B,EAsYxBc,IAtYwB,CAsYnB,IAtYmB;AAsYb,OAtYd,EAsYgBA,IAtYhB,CAsYqB,IAtYrB,EAsY0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAtY1B,EAsYsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAtY7J;AAwYC,KAzYQ,EAyYP;AAAC,uBAAgB,CAAjB;AAAmB,uBAAgB,CAAnC;AAAqC,6BAAsB,CAA3D;AAA6D,+BAAwB,CAArF;AAAuF,4BAAqB,CAA5G;AAA8G,yBAAkB,EAAhI;AAAmI,oBAAa,EAAhJ;AAAmJ,iBAAU,EAA7J;AAAgK,yBAAkB,EAAlL;AAAqL,wBAAiB,EAAtM;AAAyM,uBAAgB,EAAzN;AAA4N,qBAAc,EAA1O;AAA6O,wBAAiB,EAA9P;AAAiQ,wBAAiB,EAAlR;AAAqR,2BAAoB,EAAzS;AAA4S,qBAAc,EAA1T;AAA6T,mBAAY,EAAzU;AAA4U,eAAQ,EAApV;AAAuV,kBAAW,EAAlW;AAAqW,mBAAY;AAAjX,KAzYO,CAzlBizB;AAk+Blc,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC5Z;;AACA;AACA,mBAH4Z,CAK5Z;;AAEA,UAAIqP,cAAc,GAAGnM,KAAK,CAACf,SAA3B;AACA,UAAImN,eAAe,GAAGC,MAAM,CAACpN,SAA7B;AACA,UAAIqN,iBAAiB,GAAGC,QAAQ,CAACtN,SAAjC;AACA,UAAIuN,eAAe,GAAGC,MAAM,CAACxN,SAA7B;AACA,UAAIyN,WAAW,GAAGP,cAAc,CAAC/K,KAAjC;AAEA,UAAIuL,SAAS,GAAGP,eAAe,CAACQ,QAAhC;;AACA,UAAIC,UAAU,GAAG,UAAUC,GAAV,EAAe;AAC5B,eAAOV,eAAe,CAACQ,QAAhB,CAAyBxO,IAAzB,CAA8B0O,GAA9B,MAAuC,mBAA9C;AACH,OAFD;;AAGA,UAAI7D,OAAO,GAAG,SAASA,OAAT,CAAiB8D,GAAjB,EAAsB;AAChC,eAAOJ,SAAS,CAACvO,IAAV,CAAe2O,GAAf,MAAwB,gBAA/B;AACH,OAFD;;AAGA,UAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkBD,GAAlB,EAAuB;AAClC,eAAOJ,SAAS,CAACvO,IAAV,CAAe2O,GAAf,MAAwB,iBAA/B;AACH,OAFD;;AAIA,UAAIE,mBAAmB,GAAGZ,MAAM,CAACa,cAAP,IAA0B,YAAY;AAC5D,YAAI;AACAb,UAAAA,MAAM,CAACa,cAAP,CAAsB,EAAtB,EAA0B,GAA1B,EAA+B,EAA/B;AACA,iBAAO,IAAP;AACH,SAHD,CAGE,OAAO1P,CAAP,EAAU;AAAE;AACV,iBAAO,KAAP;AACH;AACJ,OAPmD,EAApD,CAxB4Z,CAiC5Z;AACA;;;AACA,UAAI0P,cAAJ;;AACA,UAAID,mBAAJ,EAAyB;AACrBC,QAAAA,cAAc,GAAG,UAAUC,MAAV,EAAkBC,IAAlB,EAAwBC,MAAxB,EAAgCC,WAAhC,EAA6C;AAC1D,cAAI,CAACA,WAAD,IAAiBF,IAAI,IAAID,MAA7B,EAAsC;AAAE;AAAS;;AACjDd,UAAAA,MAAM,CAACa,cAAP,CAAsBC,MAAtB,EAA8BC,IAA9B,EAAoC;AAChCG,YAAAA,YAAY,EAAE,IADkB;AAEhCC,YAAAA,UAAU,EAAE,KAFoB;AAGhCC,YAAAA,QAAQ,EAAE,IAHsB;AAIhCC,YAAAA,KAAK,EAAEL;AAJyB,WAApC;AAMH,SARD;AASH,OAVD,MAUO;AACHH,QAAAA,cAAc,GAAG,UAAUC,MAAV,EAAkBC,IAAlB,EAAwBC,MAAxB,EAAgCC,WAAhC,EAA6C;AAC1D,cAAI,CAACA,WAAD,IAAiBF,IAAI,IAAID,MAA7B,EAAsC;AAAE;AAAS;;AACjDA,UAAAA,MAAM,CAACC,IAAD,CAAN,GAAeC,MAAf;AACH,SAHD;AAIH;;AACD,UAAIM,gBAAgB,GAAG,UAAUR,MAAV,EAAkBS,GAAlB,EAAuBN,WAAvB,EAAoC;AACvD,aAAK,IAAIF,IAAT,IAAiBQ,GAAjB,EAAsB;AAClB,cAAIxB,eAAe,CAACyB,cAAhB,CAA+BzP,IAA/B,CAAoCwP,GAApC,EAAyCR,IAAzC,CAAJ,EAAoD;AAClDF,YAAAA,cAAc,CAACC,MAAD,EAASC,IAAT,EAAeQ,GAAG,CAACR,IAAD,CAAlB,EAA0BE,WAA1B,CAAd;AACD;AACJ;AACJ,OAND;;AAQA,UAAIQ,QAAQ,GAAG,UAAUnQ,CAAV,EAAa;AACxB,YAAIA,CAAC,IAAI,IAAT,EAAe;AAAE;AACb,gBAAM,IAAIiK,SAAJ,CAAc,mBAAmBjK,CAAnB,GAAuB,YAArC,CAAN;AACH;;AACD,eAAO0O,MAAM,CAAC1O,CAAD,CAAb;AACH,OALD,CA5D4Z,CAmE5Z;AACA;AACA;AACA;AAEA;AACA;AACA;;;AAEA,eAASoQ,SAAT,CAAmBC,GAAnB,EAAwB;AACpB,YAAIvQ,CAAC,GAAG,CAACuQ,GAAT;;AACA,YAAIvQ,CAAC,KAAKA,CAAV,EAAa;AAAE;AACXA,UAAAA,CAAC,GAAG,CAAJ;AACH,SAFD,MAEO,IAAIA,CAAC,KAAK,CAAN,IAAWA,CAAC,KAAM,IAAI,CAAtB,IAA4BA,CAAC,KAAK,EAAE,IAAI,CAAN,CAAtC,EAAgD;AACnDA,UAAAA,CAAC,GAAG,CAACA,CAAC,GAAG,CAAJ,IAAS,CAAC,CAAX,IAAgB4N,IAAI,CAAC4C,KAAL,CAAW5C,IAAI,CAAC6C,GAAL,CAASzQ,CAAT,CAAX,CAApB;AACH;;AACD,eAAOA,CAAP;AACH;;AAED,eAAS0Q,QAAT,CAAkBC,CAAlB,EAAqB;AACjB,eAAOA,CAAC,KAAK,CAAb;AACH,OAxF2Z,CA0F5Z;AACA;AACA;AACA;AAEA;AACA;;;AAEA,eAASC,KAAT,GAAiB,CAAE;;AAEnBV,MAAAA,gBAAgB,CAACrB,iBAAD,EAAoB;AAChCxK,QAAAA,IAAI,EAAE,SAASA,IAAT,CAAcwM,IAAd,EAAoB;AAAE;AACxB;AACA,cAAIC,MAAM,GAAG,IAAb,CAFsB,CAGtB;;AACA,cAAI,CAAC1B,UAAU,CAAC0B,MAAD,CAAf,EAAyB;AACrB,kBAAM,IAAI3G,SAAJ,CAAc,oDAAoD2G,MAAlE,CAAN;AACH,WANqB,CAOtB;AACA;AACA;;;AACA,cAAIxO,IAAI,GAAG2M,WAAW,CAACtO,IAAZ,CAAiBsB,SAAjB,EAA4B,CAA5B,CAAX,CAVsB,CAUqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,cAAI8O,MAAM,GAAG,YAAY;AAErB,gBAAI,gBAAgBC,KAApB,EAA2B;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,kBAAIC,MAAM,GAAGH,MAAM,CAAC9O,KAAP,CACT,IADS,EAETM,IAAI,CAACmB,MAAL,CAAYwL,WAAW,CAACtO,IAAZ,CAAiBsB,SAAjB,CAAZ,CAFS,CAAb;;AAIA,kBAAI2M,MAAM,CAACqC,MAAD,CAAN,KAAmBA,MAAvB,EAA+B;AAC3B,uBAAOA,MAAP;AACH;;AACD,qBAAO,IAAP;AAEH,aA1BD,MA0BO;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,qBAAOH,MAAM,CAAC9O,KAAP,CACH6O,IADG,EAEHvO,IAAI,CAACmB,MAAL,CAAYwL,WAAW,CAACtO,IAAZ,CAAiBsB,SAAjB,CAAZ,CAFG,CAAP;AAKH;AAEJ,WAvDD,CApBsB,CA6EtB;AACA;AACA;AACA;AACA;;;AAEA,cAAIiP,WAAW,GAAGtD,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYiD,MAAM,CAAClQ,MAAP,GAAgB0B,IAAI,CAAC1B,MAAjC,CAAlB,CAnFsB,CAqFtB;AACA;;AACA,cAAIuQ,SAAS,GAAG,EAAhB;;AACA,eAAK,IAAIhR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+Q,WAApB,EAAiC/Q,CAAC,EAAlC,EAAsC;AAClCgR,YAAAA,SAAS,CAACC,IAAV,CAAe,MAAMjR,CAArB;AACH,WA1FqB,CA4FtB;AACA;AACA;AACA;AACA;AACA;;;AACA,cAAI6Q,KAAK,GAAGlC,QAAQ,CAAC,QAAD,EAAW,sBAAsBqC,SAAS,CAACE,IAAV,CAAe,GAAf,CAAtB,GAA4C,4CAAvD,CAAR,CAA6GN,MAA7G,CAAZ;;AAEA,cAAID,MAAM,CAACtP,SAAX,EAAsB;AAClBoP,YAAAA,KAAK,CAACpP,SAAN,GAAkBsP,MAAM,CAACtP,SAAzB;AACAwP,YAAAA,KAAK,CAACxP,SAAN,GAAkB,IAAIoP,KAAJ,EAAlB,CAFkB,CAGlB;;AACAA,YAAAA,KAAK,CAACpP,SAAN,GAAkB,IAAlB;AACH,WAzGqB,CA2GtB;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;AACA,iBAAOwP,KAAP;AACH;AAlI+B,OAApB,CAAhB,CApG4Z,CAyO5Z;AACA;AACA;AACA;AAEA;AACA;AACA;;AACAd,MAAAA,gBAAgB,CAAC3N,KAAD,EAAQ;AAAEiJ,QAAAA,OAAO,EAAEA;AAAX,OAAR,CAAhB;AAGA,UAAI8F,WAAW,GAAG1C,MAAM,CAAC,GAAD,CAAxB;AACA,UAAI2C,WAAW,GAAGD,WAAW,CAAC,CAAD,CAAX,KAAmB,GAAnB,IAA0B,EAAE,KAAKA,WAAP,CAA5C;;AAEA,UAAIE,oBAAoB,GAAG,SAASC,aAAT,CAAuB7B,MAAvB,EAA+B;AACtD;AACA,YAAI8B,sBAAsB,GAAG,IAA7B;AACA,YAAIC,mBAAmB,GAAG,IAA1B;;AACA,YAAI/B,MAAJ,EAAY;AACRA,UAAAA,MAAM,CAACjP,IAAP,CAAY,KAAZ,EAAmB,UAAUiR,CAAV,EAAaC,EAAb,EAAiBC,OAAjB,EAA0B;AACzC,gBAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAAEJ,cAAAA,sBAAsB,GAAG,KAAzB;AAAiC;AACvE,WAFD;AAIA9B,UAAAA,MAAM,CAACjP,IAAP,CAAY,CAAC,CAAD,CAAZ,EAAiB,YAAY;AACzB;;AACAgR,YAAAA,mBAAmB,GAAG,OAAO,IAAP,KAAgB,QAAtC;AACH,WAHD,EAGG,GAHH;AAIH;;AACD,eAAO,CAAC,CAAC/B,MAAF,IAAY8B,sBAAZ,IAAsCC,mBAA7C;AACH,OAfD;;AAiBAzB,MAAAA,gBAAgB,CAACxB,cAAD,EAAiB;AAC7BjJ,QAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBsM;AAAI;AAArB,UAAkC;AACvC,cAAIrC,MAAM,GAAGW,QAAQ,CAAC,IAAD,CAArB;AAAA,cACIzQ,IAAI,GAAG2R,WAAW,IAAIhC,QAAQ,CAAC,IAAD,CAAvB,GAAgC,KAAKyC,KAAL,CAAW,EAAX,CAAhC,GAAiDtC,MAD5D;AAAA,cAEIuC,KAAK,GAAGhQ,SAAS,CAAC,CAAD,CAFrB;AAAA,cAGI9B,CAAC,GAAG,CAAC,CAHT;AAAA,cAIIS,MAAM,GAAGhB,IAAI,CAACgB,MAAL,KAAgB,CAJ7B,CADuC,CAOvC;;AACA,cAAI,CAACwO,UAAU,CAAC2C,GAAD,CAAf,EAAsB;AAClB,kBAAM,IAAI5H,SAAJ,EAAN,CADkB,CACK;AAC1B;;AAED,iBAAO,EAAEhK,CAAF,GAAMS,MAAb,EAAqB;AACjB,gBAAIT,CAAC,IAAIP,IAAT,EAAe;AACX;AACA;AACA;AACAmS,cAAAA,GAAG,CAACpR,IAAJ,CAASsR,KAAT,EAAgBrS,IAAI,CAACO,CAAD,CAApB,EAAyBA,CAAzB,EAA4BuP,MAA5B;AACH;AACJ;AACJ;AArB4B,OAAjB,EAsBb,CAAC8B,oBAAoB,CAAC9C,cAAc,CAACjJ,OAAhB,CAtBR,CAAhB,CAxQ4Z,CAgS5Z;AACA;AACA;;AACA,UAAIyM,qBAAqB,GAAG3P,KAAK,CAACf,SAAN,CAAgBgC,OAAhB,IAA2B,CAAC,CAAD,EAAI,CAAJ,EAAOA,OAAP,CAAe,CAAf,EAAkB,CAAlB,MAAyB,CAAC,CAAjF;AACA0M,MAAAA,gBAAgB,CAACxB,cAAD,EAAiB;AAC7BlL,QAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB2O;AAAO;AAAxB,UAA2C;AAChD,cAAIvS,IAAI,GAAG2R,WAAW,IAAIhC,QAAQ,CAAC,IAAD,CAAvB,GAAgC,KAAKyC,KAAL,CAAW,EAAX,CAAhC,GAAiD3B,QAAQ,CAAC,IAAD,CAApE;AAAA,cACIzP,MAAM,GAAGhB,IAAI,CAACgB,MAAL,KAAgB,CAD7B;;AAGA,cAAI,CAACA,MAAL,EAAa;AACT,mBAAO,CAAC,CAAR;AACH;;AAED,cAAIT,CAAC,GAAG,CAAR;;AACA,cAAI8B,SAAS,CAACrB,MAAV,GAAmB,CAAvB,EAA0B;AACtBT,YAAAA,CAAC,GAAGmQ,SAAS,CAACrO,SAAS,CAAC,CAAD,CAAV,CAAb;AACH,WAX+C,CAahD;;;AACA9B,UAAAA,CAAC,GAAGA,CAAC,IAAI,CAAL,GAASA,CAAT,GAAayN,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYjN,MAAM,GAAGT,CAArB,CAAjB;;AACA,iBAAOA,CAAC,GAAGS,MAAX,EAAmBT,CAAC,EAApB,EAAwB;AACpB,gBAAIA,CAAC,IAAIP,IAAL,IAAaA,IAAI,CAACO,CAAD,CAAJ,KAAYgS,MAA7B,EAAqC;AACjC,qBAAOhS,CAAP;AACH;AACJ;;AACD,iBAAO,CAAC,CAAR;AACH;AAtB4B,OAAjB,EAuBb+R,qBAvBa,CAAhB,CApS4Z,CA6T5Z;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAIE,YAAY,GAAGrD,eAAe,CAACiD,KAAnC;;AACA,UACI,KAAKA,KAAL,CAAW,SAAX,EAAsBpR,MAAtB,KAAiC,CAAjC,IACA,IAAIoR,KAAJ,CAAU,UAAV,EAAsBpR,MAAtB,KAAiC,CADjC,IAEA,QAAQoR,KAAR,CAAc,MAAd,EAAsB,CAAtB,MAA6B,GAF7B,IAGA,OAAOA,KAAP,CAAa,MAAb,EAAqB,CAAC,CAAtB,EAAyBpR,MAAzB,KAAoC,CAHpC,IAIA,GAAGoR,KAAH,CAAS,IAAT,EAAepR,MAJf,IAKA,IAAIoR,KAAJ,CAAU,MAAV,EAAkBpR,MAAlB,GAA2B,CAN/B,EAOE;AACG,qBAAY;AACT,cAAIyR,iBAAiB,GAAG,OAAOC,IAAP,CAAY,EAAZ,EAAgB,CAAhB,MAAuB,KAAK,CAApD,CADS,CAC8C;;AAEvDvD,UAAAA,eAAe,CAACiD,KAAhB,GAAwB,UAAUO,SAAV,EAAqBC,KAArB,EAA4B;AAChD,gBAAIzH,MAAM,GAAG,IAAb;;AACA,gBAAIwH,SAAS,KAAK,KAAK,CAAnB,IAAwBC,KAAK,KAAK,CAAtC,EAAyC;AACrC,qBAAO,EAAP;AACH,aAJ+C,CAMhD;;;AACA,gBAAItD,SAAS,CAACvO,IAAV,CAAe4R,SAAf,MAA8B,iBAAlC,EAAqD;AACjD,qBAAOH,YAAY,CAACzR,IAAb,CAAkB,IAAlB,EAAwB4R,SAAxB,EAAmCC,KAAnC,CAAP;AACH;;AAED,gBAAIC,MAAM,GAAG,EAAb;AAAA,gBACIC,KAAK,GAAG,CAACH,SAAS,CAACI,UAAV,GAAuB,GAAvB,GAA6B,EAA9B,KACCJ,SAAS,CAACK,SAAV,GAAuB,GAAvB,GAA6B,EAD9B,KAECL,SAAS,CAACM,QAAV,GAAuB,GAAvB,GAA6B,EAF9B,MAEoC;AACnCN,YAAAA,SAAS,CAACO,MAAV,GAAuB,GAAvB,GAA6B,EAH9B,CADZ;AAAA,gBAI+C;AAC3CC,YAAAA,aAAa,GAAG,CALpB;AAAA,gBAMI;AACAC,YAAAA,UAPJ;AAAA,gBAOgBC,KAPhB;AAAA,gBAOuBC,SAPvB;AAAA,gBAOkCC,UAPlC;AAQAZ,YAAAA,SAAS,GAAG,IAAIa,MAAJ,CAAWb,SAAS,CAACpM,MAArB,EAA6BuM,KAAK,GAAG,GAArC,CAAZ;AACA3H,YAAAA,MAAM,IAAI,EAAV,CApBgD,CAoBlC;;AACd,gBAAI,CAACsH,iBAAL,EAAwB;AACpB;AACAW,cAAAA,UAAU,GAAG,IAAII,MAAJ,CAAW,MAAMb,SAAS,CAACpM,MAAhB,GAAyB,UAApC,EAAgDuM,KAAhD,CAAb;AACH;AACD;AACZ;AACA;AACA;AACA;AACA;AACA;;;AACYF,YAAAA,KAAK,GAAGA,KAAK,KAAK,KAAK,CAAf,GACJ,CAAC,CAAD,KAAO,CADH,GACO;AACX9B,YAAAA,QAAQ,CAAC8B,KAAD,CAFZ;;AAGA,mBAAOS,KAAK,GAAGV,SAAS,CAACD,IAAV,CAAevH,MAAf,CAAf,EAAuC;AACnC;AACAmI,cAAAA,SAAS,GAAGD,KAAK,CAACI,KAAN,GAAcJ,KAAK,CAAC,CAAD,CAAL,CAASrS,MAAnC;;AACA,kBAAIsS,SAAS,GAAGH,aAAhB,EAA+B;AAC3BN,gBAAAA,MAAM,CAACrB,IAAP,CAAYrG,MAAM,CAACpH,KAAP,CAAaoP,aAAb,EAA4BE,KAAK,CAACI,KAAlC,CAAZ,EAD2B,CAE3B;AACA;;AACA,oBAAI,CAAChB,iBAAD,IAAsBY,KAAK,CAACrS,MAAN,GAAe,CAAzC,EAA4C;AACxCqS,kBAAAA,KAAK,CAAC,CAAD,CAAL,CAAShH,OAAT,CAAiB+G,UAAjB,EAA6B,YAAY;AACrC,yBAAK,IAAI7S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,SAAS,CAACrB,MAAV,GAAmB,CAAvC,EAA0CT,CAAC,EAA3C,EAA+C;AAC3C,0BAAI8B,SAAS,CAAC9B,CAAD,CAAT,KAAiB,KAAK,CAA1B,EAA6B;AACzB8S,wBAAAA,KAAK,CAAC9S,CAAD,CAAL,GAAW,KAAK,CAAhB;AACH;AACJ;AACJ,mBAND;AAOH;;AACD,oBAAI8S,KAAK,CAACrS,MAAN,GAAe,CAAf,IAAoBqS,KAAK,CAACI,KAAN,GAActI,MAAM,CAACnK,MAA7C,EAAqD;AACjD8N,kBAAAA,cAAc,CAAC0C,IAAf,CAAoBpP,KAApB,CAA0ByQ,MAA1B,EAAkCQ,KAAK,CAACtP,KAAN,CAAY,CAAZ,CAAlC;AACH;;AACDwP,gBAAAA,UAAU,GAAGF,KAAK,CAAC,CAAD,CAAL,CAASrS,MAAtB;AACAmS,gBAAAA,aAAa,GAAGG,SAAhB;;AACA,oBAAIT,MAAM,CAAC7R,MAAP,IAAiB4R,KAArB,EAA4B;AACxB;AACH;AACJ;;AACD,kBAAID,SAAS,CAACW,SAAV,KAAwBD,KAAK,CAACI,KAAlC,EAAyC;AACrCd,gBAAAA,SAAS,CAACW,SAAV,GADqC,CACd;AAC1B;AACJ;;AACD,gBAAIH,aAAa,KAAKhI,MAAM,CAACnK,MAA7B,EAAqC;AACjC,kBAAIuS,UAAU,IAAI,CAACZ,SAAS,CAACe,IAAV,CAAe,EAAf,CAAnB,EAAuC;AACnCb,gBAAAA,MAAM,CAACrB,IAAP,CAAY,EAAZ;AACH;AACJ,aAJD,MAIO;AACHqB,cAAAA,MAAM,CAACrB,IAAP,CAAYrG,MAAM,CAACpH,KAAP,CAAaoP,aAAb,CAAZ;AACH;;AACD,mBAAON,MAAM,CAAC7R,MAAP,GAAgB4R,KAAhB,GAAwBC,MAAM,CAAC9O,KAAP,CAAa,CAAb,EAAgB6O,KAAhB,CAAxB,GAAiDC,MAAxD;AACH,WAxED;AAyEH,SA5EA,GAAD,CADF,CA+EF;AACA;AACA;AACA;AACA;AACA;;AACC,OA5FD,MA4FO,IAAI,IAAIT,KAAJ,CAAU,KAAK,CAAf,EAAkB,CAAlB,EAAqBpR,MAAzB,EAAiC;AACpCmO,QAAAA,eAAe,CAACiD,KAAhB,GAAwB,SAASA,KAAT,CAAeO,SAAf,EAA0BC,KAA1B,EAAiC;AACrD,cAAID,SAAS,KAAK,KAAK,CAAnB,IAAwBC,KAAK,KAAK,CAAtC,EAAyC;AAAE,mBAAO,EAAP;AAAY;;AACvD,iBAAOJ,YAAY,CAACzR,IAAb,CAAkB,IAAlB,EAAwB4R,SAAxB,EAAmCC,KAAnC,CAAP;AACH,SAHD;AAIH,OAnb2Z,CAqb5Z;AACA;AACA;AACA;AACA;;;AACA,UAAIe,aAAa,GAAGxE,eAAe,CAACyE,MAApC;AACA,UAAIC,oBAAoB,GAAG,GAAGD,MAAH,IAAa,KAAKA,MAAL,CAAY,CAAC,CAAb,MAAoB,GAA5D;AACAtD,MAAAA,gBAAgB,CAACnB,eAAD,EAAkB;AAC9ByE,QAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBE,KAAhB,EAAuB9S,MAAvB,EAA+B;AACnC,iBAAO2S,aAAa,CAAC5S,IAAd,CACH,IADG,EAEH+S,KAAK,GAAG,CAAR,GAAa,CAACA,KAAK,GAAG,KAAK9S,MAAL,GAAc8S,KAAvB,IAAgC,CAAhC,GAAoC,CAApC,GAAwCA,KAArD,GAA8DA,KAF3D,EAGH9S,MAHG,CAAP;AAKH;AAP6B,OAAlB,EAQb6S,oBARa,CAAhB;AAUC,KAtc0X,EAsczX,EAtcyX,CAl+B+b;AAw6CpzB,QAAG,CAAC,UAASpT,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;;AAEAC,MAAAA,MAAM,CAACD,OAAP,GAAiB,CACf;AACAgB,MAAAA,OAAO,CAAC,uBAAD,CAFQ,EAGfA,OAAO,CAAC,2BAAD,CAHQ,EAIfA,OAAO,CAAC,2BAAD,CAJQ,EAKfA,OAAO,CAAC,yBAAD,CALQ,EAMfA,OAAO,CAAC,6BAAD,CAAP,CAAuCA,OAAO,CAAC,yBAAD,CAA9C,CANe,CAQf;AARe,QASfA,OAAO,CAAC,sBAAD,CATQ,EAUfA,OAAO,CAAC,6BAAD,CAAP,CAAuCA,OAAO,CAAC,sBAAD,CAA9C,CAVe,EAWfA,OAAO,CAAC,yBAAD,CAXQ,EAYfA,OAAO,CAAC,yBAAD,CAZQ,EAafA,OAAO,CAAC,6BAAD,CAAP,CAAuCA,OAAO,CAAC,yBAAD,CAA9C,CAbe,EAcfA,OAAO,CAAC,2BAAD,CAdQ,CAAjB;AAiBC,KApBQ,EAoBP;AAAC,iCAA0B,EAA3B;AAA8B,8BAAuB,EAArD;AAAwD,mCAA4B,EAApF;AAAuF,qCAA8B,EAArH;AAAwH,+BAAwB,EAAhJ;AAAmJ,iCAA0B,EAA7K;AAAgL,mCAA4B,EAA5M;AAA+M,iCAA0B,EAAzO;AAA4O,mCAA4B;AAAxQ,KApBO,CAx6CizB;AA47C3iB,QAAG,CAAC,UAASA,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACnT,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAI4B,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,cACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEIyH,KAAK,GAAGzH,OAAO,CAAC,mBAAD,CAFnB;AAAA,cAGI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CAHtB;AAAA,cAIIsT,GAAG,GAAGhU,MAAM,CAACiU,cAJjB;;AAOA,cAAIxO,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,2BAAjB,CAAR;AACD;;AAED,mBAASwT,iBAAT,CAA2BjE,MAA3B,EAAmC1I,GAAnC,EAAwCkH,OAAxC,EAAiD0F,IAAjD,EAAuD;AACrD1O,YAAAA,KAAK,CAACwK,MAAD,EAAS1I,GAAT,CAAL;AACA,gBAAItH,IAAI,GAAG,IAAX;AACA2B,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEAG,YAAAA,UAAU,CAAC,YAAY;AACrBlB,cAAAA,IAAI,CAACmU,MAAL,CAAYnE,MAAZ,EAAoB1I,GAApB,EAAyBkH,OAAzB,EAAkC0F,IAAlC;AACD,aAFS,EAEP,CAFO,CAAV;AAGD;;AAED9S,UAAAA,QAAQ,CAAC6S,iBAAD,EAAoBtS,YAApB,CAAR;;AAEAsS,UAAAA,iBAAiB,CAACrS,SAAlB,CAA4BuS,MAA5B,GAAqC,UAASnE,MAAT,EAAiB1I,GAAjB,EAAsBkH,OAAtB,EAA+B0F,IAA/B,EAAqC;AACxE,gBAAIlU,IAAI,GAAG,IAAX;;AAEA,gBAAI;AACF,mBAAKoU,GAAL,GAAW,IAAIL,GAAJ,EAAX;AACD,aAFD,CAEE,OAAOhD,CAAP,EAAU,CACV;AACD;;AAED,gBAAI,CAAC,KAAKqD,GAAV,EAAe;AACb5O,cAAAA,KAAK,CAAC,QAAD,CAAL;AACA,mBAAKjD,IAAL,CAAU,QAAV,EAAoB,CAApB,EAAuB,gBAAvB;;AACA,mBAAKiH,QAAL;;AACA;AACD,aAduE,CAgBxE;;;AACAlC,YAAAA,GAAG,GAAGlC,QAAQ,CAACiP,QAAT,CAAkB/M,GAAlB,EAAuB,OAAQ,CAAC,IAAIjE,IAAJ,EAAhC,CAAN,CAjBwE,CAmBxE;AACA;;AACA,iBAAKiR,SAAL,GAAiBpM,KAAK,CAACqM,SAAN,CAAgB,YAAW;AAC1C/O,cAAAA,KAAK,CAAC,gBAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACwJ,QAAL,CAAc,IAAd;AACD,aAHgB,CAAjB;;AAIA,gBAAI;AACF,mBAAK4K,GAAL,CAASI,IAAT,CAAcxE,MAAd,EAAsB1I,GAAtB,EAA2B,IAA3B;;AACA,kBAAI,KAAKmC,OAAL,IAAgB,aAAa,KAAK2K,GAAtC,EAA2C;AACzC,qBAAKA,GAAL,CAAS3K,OAAT,GAAmB,KAAKA,OAAxB;;AACA,qBAAK2K,GAAL,CAASK,SAAT,GAAqB,YAAW;AAC9BjP,kBAAAA,KAAK,CAAC,aAAD,CAAL;AACAxF,kBAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoB,CAApB,EAAuB,EAAvB;;AACAvC,kBAAAA,IAAI,CAACwJ,QAAL,CAAc,KAAd;AACD,iBAJD;AAKD;AACF,aAVD,CAUE,OAAOrJ,CAAP,EAAU;AACVqF,cAAAA,KAAK,CAAC,WAAD,EAAcrF,CAAd,CAAL,CADU,CAEV;;AACA,mBAAKoC,IAAL,CAAU,QAAV,EAAoB,CAApB,EAAuB,EAAvB;;AACA,mBAAKiH,QAAL,CAAc,KAAd;;AACA;AACD;;AAED,gBAAI,CAAC,CAAC0K,IAAD,IAAS,CAACA,IAAI,CAACQ,aAAhB,KAAkCT,iBAAiB,CAACU,YAAxD,EAAsE;AACpEnP,cAAAA,KAAK,CAAC,iBAAD,CAAL,CADoE,CAEpE;AACA;;AAEA,mBAAK4O,GAAL,CAASQ,eAAT,GAA2B,IAA3B;AACD;;AACD,gBAAIV,IAAI,IAAIA,IAAI,CAACW,OAAjB,EAA0B;AACxB,mBAAK,IAAIC,GAAT,IAAgBZ,IAAI,CAACW,OAArB,EAA8B;AAC5B,qBAAKT,GAAL,CAASW,gBAAT,CAA0BD,GAA1B,EAA+BZ,IAAI,CAACW,OAAL,CAAaC,GAAb,CAA/B;AACD;AACF;;AAED,iBAAKV,GAAL,CAASY,kBAAT,GAA8B,YAAW;AACvC,kBAAIhV,IAAI,CAACoU,GAAT,EAAc;AACZ,oBAAIrD,CAAC,GAAG/Q,IAAI,CAACoU,GAAb;AACA,oBAAIzM,IAAJ,EAAUD,MAAV;AACAlC,gBAAAA,KAAK,CAAC,YAAD,EAAeuL,CAAC,CAACvG,UAAjB,CAAL;;AACA,wBAAQuG,CAAC,CAACvG,UAAV;AACA,uBAAK,CAAL;AACE;AACA;AACA,wBAAI;AACF9C,sBAAAA,MAAM,GAAGqJ,CAAC,CAACrJ,MAAX;AACAC,sBAAAA,IAAI,GAAGoJ,CAAC,CAACkE,YAAT;AACD,qBAHD,CAGE,OAAO9U,CAAP,EAAU,CACV;AACD;;AACDqF,oBAAAA,KAAK,CAAC,QAAD,EAAWkC,MAAX,CAAL,CATF,CAUE;;AACA,wBAAIA,MAAM,KAAK,IAAf,EAAqB;AACnBA,sBAAAA,MAAM,GAAG,GAAT;AACD,qBAbH,CAeE;;;AACA,wBAAIA,MAAM,KAAK,GAAX,IAAkBC,IAAlB,IAA0BA,IAAI,CAAC3G,MAAL,GAAc,CAA5C,EAA+C;AAC7CwE,sBAAAA,KAAK,CAAC,OAAD,CAAL;AACAxF,sBAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmBmF,MAAnB,EAA2BC,IAA3B;AACD;;AACD;;AACF,uBAAK,CAAL;AACED,oBAAAA,MAAM,GAAGqJ,CAAC,CAACrJ,MAAX;AACAlC,oBAAAA,KAAK,CAAC,QAAD,EAAWkC,MAAX,CAAL,CAFF,CAGE;;AACA,wBAAIA,MAAM,KAAK,IAAf,EAAqB;AACnBA,sBAAAA,MAAM,GAAG,GAAT;AACD,qBANH,CAOE;AACA;;;AACA,wBAAIA,MAAM,KAAK,KAAX,IAAoBA,MAAM,KAAK,KAAnC,EAA0C;AACxCA,sBAAAA,MAAM,GAAG,CAAT;AACD;;AAEDlC,oBAAAA,KAAK,CAAC,QAAD,EAAWkC,MAAX,EAAmBqJ,CAAC,CAACkE,YAArB,CAAL;AACAjV,oBAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoBmF,MAApB,EAA4BqJ,CAAC,CAACkE,YAA9B;;AACAjV,oBAAAA,IAAI,CAACwJ,QAAL,CAAc,KAAd;;AACA;AAtCF;AAwCD;AACF,aA9CD;;AAgDA,gBAAI;AACFxJ,cAAAA,IAAI,CAACoU,GAAL,CAASpP,IAAT,CAAcwJ,OAAd;AACD,aAFD,CAEE,OAAOrO,CAAP,EAAU;AACVH,cAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoB,CAApB,EAAuB,EAAvB;;AACAvC,cAAAA,IAAI,CAACwJ,QAAL,CAAc,KAAd;AACD;AACF,WA9GD;;AAgHAyK,UAAAA,iBAAiB,CAACrS,SAAlB,CAA4B4H,QAA5B,GAAuC,UAAS0L,KAAT,EAAgB;AACrD1P,YAAAA,KAAK,CAAC,SAAD,CAAL;;AACA,gBAAI,CAAC,KAAK4O,GAAV,EAAe;AACb;AACD;;AACD,iBAAKvS,kBAAL;AACAqG,YAAAA,KAAK,CAACiN,SAAN,CAAgB,KAAKb,SAArB,EANqD,CAQrD;;AACA,iBAAKF,GAAL,CAASY,kBAAT,GAA8B,YAAW,CAAE,CAA3C;;AACA,gBAAI,KAAKZ,GAAL,CAASK,SAAb,EAAwB;AACtB,mBAAKL,GAAL,CAASK,SAAT,GAAqB,IAArB;AACD;;AAED,gBAAIS,KAAJ,EAAW;AACT,kBAAI;AACF,qBAAKd,GAAL,CAASc,KAAT;AACD,eAFD,CAEE,OAAOnE,CAAP,EAAU,CACV;AACD;AACF;;AACD,iBAAKuD,SAAL,GAAiB,KAAKF,GAAL,GAAW,IAA5B;AACD,WAtBD;;AAwBAH,UAAAA,iBAAiB,CAACrS,SAAlB,CAA4BsD,KAA5B,GAAoC,YAAW;AAC7CM,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,iBAAKgE,QAAL,CAAc,IAAd;AACD,WAHD;;AAKAyK,UAAAA,iBAAiB,CAACtL,OAAlB,GAA4B,CAAC,CAACoL,GAA9B,CAxKuC,CAyKvC;AACA;;AACA,cAAIqB,GAAG,GAAG,CAAC,QAAD,EAAWvR,MAAX,CAAkB,QAAlB,EAA4B4N,IAA5B,CAAiC,GAAjC,CAAV;;AACA,cAAI,CAACwC,iBAAiB,CAACtL,OAAnB,IAA+ByM,GAAG,IAAIrV,MAA1C,EAAmD;AACjDyF,YAAAA,KAAK,CAAC,2BAAD,CAAL;;AACAuO,YAAAA,GAAG,GAAG,YAAW;AACf,kBAAI;AACF,uBAAO,IAAIhU,MAAM,CAACqV,GAAD,CAAV,CAAgB,mBAAhB,CAAP;AACD,eAFD,CAEE,OAAOjV,CAAP,EAAU;AACV,uBAAO,IAAP;AACD;AACF,aAND;;AAOA8T,YAAAA,iBAAiB,CAACtL,OAAlB,GAA4B,CAAC,CAAC,IAAIoL,GAAJ,EAA9B;AACD;;AAED,cAAIsB,IAAI,GAAG,KAAX;;AACA,cAAI;AACFA,YAAAA,IAAI,GAAG,qBAAqB,IAAItB,GAAJ,EAA5B;AACD,WAFD,CAEE,OAAOnN,OAAP,EAAgB,CAChB;AACD;;AAEDqN,UAAAA,iBAAiB,CAACU,YAAlB,GAAiCU,IAAjC;AAEA3V,UAAAA,MAAM,CAACD,OAAP,GAAiBwU,iBAAjB;AAEC,SAnM0B,EAmMxBlT,IAnMwB,CAmMnB,IAnMmB;AAmMb,OAnMd,EAmMgBA,IAnMhB,CAmMqB,IAnMrB,EAmM0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAnM1B,EAmMsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAnM7J;AAqMC,KAtMiR,EAsMhR;AAAC,2BAAoB,EAArB;AAAwB,yBAAkB,EAA1C;AAA6C,eAAQ,EAArD;AAAwD,gBAAS,CAAjE;AAAmE,kBAAW;AAA9E,KAtMgR,CA57CwiB;AAkoDruB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACzH,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/BL,UAAAA,MAAM,CAACD,OAAP,GAAiBM,MAAM,CAACuV,WAAxB;AAEC,SAHkB,EAGhBvU,IAHgB,CAGX,IAHW;AAGL,OAHd,EAGgBA,IAHhB,CAGqB,IAHrB,EAG0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAHjJ;AAKC,KANuF,EAMtF,EANsF,CAloDkuB;AAwoDpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIwV,MAAM,GAAGxV,MAAM,CAACyV,SAAP,IAAoBzV,MAAM,CAAC0V,YAAxC;;AACA,cAAIF,MAAJ,EAAY;AACX7V,YAAAA,MAAM,CAACD,OAAP,GAAiB,SAASiW,sBAAT,CAAgCpO,GAAhC,EAAqC;AACrD,qBAAO,IAAIiO,MAAJ,CAAWjO,GAAX,CAAP;AACA,aAFD;AAGA,WAJD,MAIO;AACN5H,YAAAA,MAAM,CAACD,OAAP,GAAiBkW,SAAjB;AACA;AAEA,SAZkB,EAYhB5U,IAZgB,CAYX,IAZW;AAYL,OAZd,EAYgBA,IAZhB,CAYqB,IAZrB,EAY0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAZjJ;AAcC,KAfQ,EAeP,EAfO,CAxoDizB;AAupDpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CADhC;AAAA,UAEIoV,mBAAmB,GAAGpV,OAAO,CAAC,wBAAD,CAFjC;AAAA,UAGIqV,aAAa,GAAGrV,OAAO,CAAC,mBAAD,CAH3B;AAAA,UAIIsV,iBAAiB,GAAGtV,OAAO,CAAC,aAAD,CAJ/B;;AAOA,eAASuV,oBAAT,CAA8BjP,QAA9B,EAAwC;AACtC,YAAI,CAACiP,oBAAoB,CAACrN,OAArB,EAAL,EAAqC;AACnC,gBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AAEDgV,QAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,cAAxC,EAAwD8O,mBAAxD,EAA6EC,aAA7E;AACD;;AAED1U,MAAAA,QAAQ,CAAC4U,oBAAD,EAAuBJ,kBAAvB,CAAR;;AAEAI,MAAAA,oBAAoB,CAACrN,OAArB,GAA+B,YAAW;AACxC,eAAO,CAAC,CAACoN,iBAAT;AACD,OAFD;;AAIAC,MAAAA,oBAAoB,CAAChQ,aAArB,GAAqC,aAArC;AACAgQ,MAAAA,oBAAoB,CAAC9H,UAArB,GAAkC,CAAlC;AAEAxO,MAAAA,MAAM,CAACD,OAAP,GAAiBuW,oBAAjB;AAEC,KA7BQ,EA6BP;AAAC,0BAAmB,EAApB;AAAuB,gCAAyB,EAAhD;AAAmD,2BAAoB,EAAvE;AAA0E,qBAAc,EAAxF;AAA2F,kBAAW;AAAtG,KA7BO,CAvpDizB;AAorD7sB,QAAG,CAAC,UAASvV,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACjJ;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACIwV,gBAAgB,GAAGxV,OAAO,CAAC,qBAAD,CAD9B;AAAA,UAEIsH,cAAc,GAAGtH,OAAO,CAAC,oBAAD,CAF5B;AAAA,UAGImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CAHhC;;AAMA,eAASyV,iBAAT,CAA2BnP,QAA3B,EAAqC;AACnC,YAAI,CAACkP,gBAAgB,CAACtN,OAAtB,EAA+B;AAC7B,gBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDgV,QAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,WAAxC,EAAqDkP,gBAArD,EAAuElO,cAAvE;AACD;;AAED3G,MAAAA,QAAQ,CAAC8U,iBAAD,EAAoBN,kBAApB,CAAR;;AAEAM,MAAAA,iBAAiB,CAACvN,OAAlB,GAA4B,UAASf,IAAT,EAAe;AACzC,eAAOqO,gBAAgB,CAACtN,OAAjB,IAA4Bf,IAAI,CAACwB,UAAxC;AACD,OAFD;;AAIA8M,MAAAA,iBAAiB,CAAClQ,aAAlB,GAAkC,UAAlC;AACAkQ,MAAAA,iBAAiB,CAAChI,UAAlB,GAA+B,CAA/B;AAEAxO,MAAAA,MAAM,CAACD,OAAP,GAAiByW,iBAAjB;AAEC,KA3B+G,EA2B9G;AAAC,0BAAmB,EAApB;AAAuB,6BAAsB,EAA7C;AAAgD,4BAAqB,EAArE;AAAwE,kBAAW;AAAnF,KA3B8G,CAprD0sB;AA+sDhuB,QAAG,CAAC,UAASzV,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC9H,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC,uBADgC,CAGhC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;AAAA,cAEImF,OAAO,GAAGrG,OAAO,CAAC,YAAD,CAFrB;AAAA,cAGI2E,QAAQ,GAAG3E,OAAO,CAAC,cAAD,CAHtB;AAAA,cAII2D,WAAW,GAAG3D,OAAO,CAAC,iBAAD,CAJzB;AAAA,cAKI4E,UAAU,GAAG5E,OAAO,CAAC,gBAAD,CALxB;AAAA,cAMIuJ,MAAM,GAAGvJ,OAAO,CAAC,iBAAD,CANpB;;AASA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,gCAAjB,CAAR;AACD;;AAED,mBAAS0H,eAAT,CAAyB7D,SAAzB,EAAoCyC,QAApC,EAA8CC,OAA9C,EAAuD;AACrD,gBAAI,CAACmB,eAAe,CAACQ,OAAhB,EAAL,EAAgC;AAC9B,oBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDe,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEA,gBAAIf,IAAI,GAAG,IAAX;AACA,iBAAKyG,MAAL,GAAcrB,QAAQ,CAAC4G,SAAT,CAAmBhF,OAAnB,CAAd;AACA,iBAAKA,OAAL,GAAeA,OAAf;AACA,iBAAKD,QAAL,GAAgBA,QAAhB;AACA,iBAAKzC,SAAL,GAAiBA,SAAjB;AACA,iBAAKuC,QAAL,GAAgBmD,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAhB;AAEA,gBAAIgL,SAAS,GAAG/Q,QAAQ,CAACkE,OAAT,CAAiBtC,OAAjB,EAA0B,cAA1B,IAA4C,GAA5C,GAAkD,KAAKH,QAAvE;AACArB,YAAAA,KAAK,CAAClB,SAAD,EAAYyC,QAAZ,EAAsBoP,SAAtB,CAAL;AAEA,iBAAKC,SAAL,GAAiBhS,WAAW,CAACiS,YAAZ,CAAyBF,SAAzB,EAAoC,UAASjW,CAAT,EAAY;AAC/DsF,cAAAA,KAAK,CAAC,cAAD,CAAL;AACAxF,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyB,+BAA+BrC,CAA/B,GAAmC,GAA5D;AACAF,cAAAA,IAAI,CAACkF,KAAL;AACD,aAJgB,CAAjB;AAMA,iBAAKoR,iBAAL,GAAyB,KAAKC,QAAL,CAAc9R,IAAd,CAAmB,IAAnB,CAAzB;AACAY,YAAAA,UAAU,CAAC8B,WAAX,CAAuB,SAAvB,EAAkC,KAAKmP,iBAAvC;AACD;;AAEDlV,UAAAA,QAAQ,CAAC+G,eAAD,EAAkBxG,YAAlB,CAAR;;AAEAwG,UAAAA,eAAe,CAACvG,SAAhB,CAA0BsD,KAA1B,GAAkC,YAAW;AAC3CM,YAAAA,KAAK,CAAC,OAAD,CAAL;AACA,iBAAK3D,kBAAL;;AACA,gBAAI,KAAKuU,SAAT,EAAoB;AAClB/Q,cAAAA,UAAU,CAACmR,WAAX,CAAuB,SAAvB,EAAkC,KAAKF,iBAAvC;;AACA,kBAAI;AACF;AACA;AACA,qBAAK3R,WAAL,CAAiB,GAAjB;AACD,eAJD,CAIE,OAAOoM,CAAP,EAAU,CACV;AACD;;AACD,mBAAKqF,SAAL,CAAeK,OAAf;AACA,mBAAKL,SAAL,GAAiB,IAAjB;AACA,mBAAKE,iBAAL,GAAyB,KAAKF,SAAL,GAAiB,IAA1C;AACD;AACF,WAhBD;;AAkBAjO,UAAAA,eAAe,CAACvG,SAAhB,CAA0B2U,QAA1B,GAAqC,UAASpW,CAAT,EAAY;AAC/CqF,YAAAA,KAAK,CAAC,SAAD,EAAYrF,CAAC,CAACgE,IAAd,CAAL;;AACA,gBAAI,CAACiB,QAAQ,CAAC6B,aAAT,CAAuB9G,CAAC,CAACsG,MAAzB,EAAiC,KAAKA,MAAtC,CAAL,EAAoD;AAClDjB,cAAAA,KAAK,CAAC,iBAAD,EAAoBrF,CAAC,CAACsG,MAAtB,EAA8B,KAAKA,MAAnC,CAAL;AACA;AACD;;AAED,gBAAIC,aAAJ;;AACA,gBAAI;AACFA,cAAAA,aAAa,GAAG9B,IAAI,CAAC+B,KAAL,CAAWxG,CAAC,CAACgE,IAAb,CAAhB;AACD,aAFD,CAEE,OAAOyC,OAAP,EAAgB;AAChBpB,cAAAA,KAAK,CAAC,UAAD,EAAarF,CAAC,CAACgE,IAAf,CAAL;AACA;AACD;;AAED,gBAAIuC,aAAa,CAACG,QAAd,KAA2B,KAAKA,QAApC,EAA8C;AAC5CrB,cAAAA,KAAK,CAAC,sBAAD,EAAyBkB,aAAa,CAACG,QAAvC,EAAiD,KAAKA,QAAtD,CAAL;AACA;AACD;;AAED,oBAAQH,aAAa,CAAC5E,IAAtB;AACA,mBAAK,GAAL;AACE,qBAAKsU,SAAL,CAAeM,MAAf,GADF,CAEE;;AACA,qBAAK/R,WAAL,CAAiB,GAAjB,EAAsBC,IAAI,CAACC,SAAL,CAAe,CACnCiC,OADmC,EAEnC,KAAKxC,SAF8B,EAGnC,KAAKyC,QAH8B,EAInC,KAAKC,OAJ8B,CAAf,CAAtB;AAMA;;AACF,mBAAK,GAAL;AACE,qBAAKzE,IAAL,CAAU,SAAV,EAAqBmE,aAAa,CAACvC,IAAnC;AACA;;AACF,mBAAK,GAAL;AACE,oBAAIwS,KAAJ;;AACA,oBAAI;AACFA,kBAAAA,KAAK,GAAG/R,IAAI,CAAC+B,KAAL,CAAWD,aAAa,CAACvC,IAAzB,CAAR;AACD,iBAFD,CAEE,OAAOyC,OAAP,EAAgB;AAChBpB,kBAAAA,KAAK,CAAC,UAAD,EAAakB,aAAa,CAACvC,IAA3B,CAAL;AACA;AACD;;AACD,qBAAK5B,IAAL,CAAU,OAAV,EAAmBoU,KAAK,CAAC,CAAD,CAAxB,EAA6BA,KAAK,CAAC,CAAD,CAAlC;AACA,qBAAKzR,KAAL;AACA;AAxBF;AA0BD,WA9CD;;AAgDAiD,UAAAA,eAAe,CAACvG,SAAhB,CAA0B+C,WAA1B,GAAwC,UAAS7C,IAAT,EAAeqC,IAAf,EAAqB;AAC3DqB,YAAAA,KAAK,CAAC,aAAD,EAAgB1D,IAAhB,EAAsBqC,IAAtB,CAAL;AACA,iBAAKiS,SAAL,CAAeQ,IAAf,CAAoBhS,IAAI,CAACC,SAAL,CAAe;AACjCgC,cAAAA,QAAQ,EAAE,KAAKA,QADkB;AAEjC/E,cAAAA,IAAI,EAAEA,IAF2B;AAGjCqC,cAAAA,IAAI,EAAEA,IAAI,IAAI;AAHmB,aAAf,CAApB,EAII,KAAKsC,MAJT;AAKD,WAPD;;AASA0B,UAAAA,eAAe,CAACvG,SAAhB,CAA0BoD,IAA1B,GAAiC,UAAS6R,OAAT,EAAkB;AACjDrR,YAAAA,KAAK,CAAC,MAAD,EAASqR,OAAT,CAAL;AACA,iBAAKlS,WAAL,CAAiB,GAAjB,EAAsBkS,OAAtB;AACD,WAHD;;AAKA1O,UAAAA,eAAe,CAACQ,OAAhB,GAA0B,YAAW;AACnC,mBAAOvE,WAAW,CAAC0S,aAAnB;AACD,WAFD;;AAIA3O,UAAAA,eAAe,CAACnC,aAAhB,GAAgC,QAAhC;AACAmC,UAAAA,eAAe,CAAC+F,UAAhB,GAA6B,CAA7B;AAEAxO,UAAAA,MAAM,CAACD,OAAP,GAAiB0I,eAAjB;AAEC,SA9ImB,EA8IjBpH,IA9IiB,CA8IZ,IA9IY;AA8IN,OA9Id,EA8IgBA,IA9IhB,CA8IqB,IA9IrB,EA8I0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OA9I1B;AAgJC,KAjJ4F,EAiJ3F;AAAC,wBAAiB,EAAlB;AAAqB,yBAAkB,EAAvC;AAA0C,yBAAkB,EAA5D;AAA+D,sBAAe,EAA9E;AAAiF,oBAAa,EAA9F;AAAiG,eAAQ,EAAzG;AAA4G,gBAAS,CAArH;AAAuH,kBAAW;AAAlI,KAjJ2F,CA/sD6tB;AAg2DjrB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC7K,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B,uBAD+B,CAG/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAIqB,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIsW,cAAc,GAAGtW,OAAO,CAAC,uBAAD,CAD5B;AAAA,cAEIuW,aAAa,GAAGvW,OAAO,CAAC,kBAAD,CAF3B;AAAA,cAGIwW,WAAW,GAAGxW,OAAO,CAAC,gBAAD,CAHzB;;AAMA,mBAASyW,cAAT,CAAwBnQ,QAAxB,EAAkC;AAChC,gBAAI,CAACmQ,cAAc,CAACvO,OAAf,EAAL,EAA+B;AAC7B,oBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDmW,YAAAA,cAAc,CAAChW,IAAf,CAAoB,IAApB,EAA0BgG,QAA1B,EAAoC,QAApC,EAA8CkQ,WAA9C,EAA2DD,aAA3D;AACD;;AAED5V,UAAAA,QAAQ,CAAC8V,cAAD,EAAiBH,cAAjB,CAAR;;AAEAG,UAAAA,cAAc,CAACvO,OAAf,GAAyB,YAAW;AAClC,mBAAO,CAAC,CAAC5I,MAAM,CAAC0I,QAAhB;AACD,WAFD;;AAIAyO,UAAAA,cAAc,CAAClR,aAAf,GAA+B,eAA/B;AACAkR,UAAAA,cAAc,CAAChJ,UAAf,GAA4B,CAA5B;AACAgJ,UAAAA,cAAc,CAACrJ,QAAf,GAA0B,IAA1B;AAEAnO,UAAAA,MAAM,CAACD,OAAP,GAAiByX,cAAjB;AAEC,SApCkB,EAoChBnW,IApCgB,CAoCX,IApCW;AAoCL,OApCd,EAoCgBA,IApChB,CAoCqB,IApCrB,EAoC0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EApCjJ;AAsCC,KAvC2I,EAuC1I;AAAC,+BAAwB,EAAzB;AAA4B,0BAAmB,EAA/C;AAAkD,wBAAiB,EAAnE;AAAsE,kBAAW;AAAjF,KAvC0I,CAh2D8qB;AAu4DluB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC5H,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CADtB;AAAA,cAEIsW,cAAc,GAAGtW,OAAO,CAAC,mBAAD,CAF5B;;AAKA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,0BAAjB,CAAR;AACD;;AAED,mBAAS0W,gBAAT,CAA0B5P,UAA1B,EAAsC;AACpC,mBAAO,UAASD,GAAT,EAAckH,OAAd,EAAuB4I,QAAvB,EAAiC;AACtC5R,cAAAA,KAAK,CAAC,oBAAD,EAAuB8B,GAAvB,EAA4BkH,OAA5B,CAAL;AACA,kBAAI6I,GAAG,GAAG,EAAV;;AACA,kBAAI,OAAO7I,OAAP,KAAmB,QAAvB,EAAiC;AAC/B6I,gBAAAA,GAAG,CAACxC,OAAJ,GAAc;AAAC,kCAAgB;AAAjB,iBAAd;AACD;;AACD,kBAAIyC,OAAO,GAAGlS,QAAQ,CAACkE,OAAT,CAAiBhC,GAAjB,EAAsB,WAAtB,CAAd;AACA,kBAAIG,EAAE,GAAG,IAAIF,UAAJ,CAAe,MAAf,EAAuB+P,OAAvB,EAAgC9I,OAAhC,EAAyC6I,GAAzC,CAAT;AACA5P,cAAAA,EAAE,CAACzF,IAAH,CAAQ,QAAR,EAAkB,UAAS0F,MAAT,EAAiB;AACjClC,gBAAAA,KAAK,CAAC,QAAD,EAAWkC,MAAX,CAAL;AACAD,gBAAAA,EAAE,GAAG,IAAL;;AAEA,oBAAIC,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,GAAjC,EAAsC;AACpC,yBAAO0P,QAAQ,CAAC,IAAIxW,KAAJ,CAAU,iBAAiB8G,MAA3B,CAAD,CAAf;AACD;;AACD0P,gBAAAA,QAAQ;AACT,eARD;AASA,qBAAO,YAAW;AAChB5R,gBAAAA,KAAK,CAAC,OAAD,CAAL;AACAiC,gBAAAA,EAAE,CAACvC,KAAH;AACAuC,gBAAAA,EAAE,GAAG,IAAL;AAEA,oBAAI8P,GAAG,GAAG,IAAI3W,KAAJ,CAAU,SAAV,CAAV;AACA2W,gBAAAA,GAAG,CAAC1W,IAAJ,GAAW,IAAX;AACAuW,gBAAAA,QAAQ,CAACG,GAAD,CAAR;AACD,eARD;AASD,aA1BD;AA2BD;;AAED,mBAAS3B,kBAAT,CAA4B7O,QAA5B,EAAsCyQ,SAAtC,EAAiDC,QAAjD,EAA2DlQ,UAA3D,EAAuE;AACrEwP,YAAAA,cAAc,CAAChW,IAAf,CAAoB,IAApB,EAA0BgG,QAA1B,EAAoCyQ,SAApC,EAA+CL,gBAAgB,CAAC5P,UAAD,CAA/D,EAA6EkQ,QAA7E,EAAuFlQ,UAAvF;AACD;;AAEDnG,UAAAA,QAAQ,CAACwU,kBAAD,EAAqBmB,cAArB,CAAR;AAEArX,UAAAA,MAAM,CAACD,OAAP,GAAiBmW,kBAAjB;AAEC,SAnDmB,EAmDjB7U,IAnDiB,CAmDZ,IAnDY;AAmDN,OAnDd,EAmDgBA,IAnDhB,CAmDqB,IAnDrB,EAmD0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAnD1B;AAqDC,KAtD0F,EAsDzF;AAAC,yBAAkB,EAAnB;AAAsB,2BAAoB,EAA1C;AAA6C,eAAQ,EAArD;AAAwD,kBAAW;AAAnE,KAtDyF,CAv4D+tB;AA67DhvB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC9G,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;;AAIA,cAAI6D,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,+BAAjB,CAAR;AACD;;AAED,mBAASiX,cAAT,CAAwBpQ,GAAxB,EAA6BqQ,MAA7B,EAAqC;AACnCnS,YAAAA,KAAK,CAAC8B,GAAD,CAAL;AACA3F,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AACA,iBAAK6W,UAAL,GAAkB,EAAlB;AACA,iBAAKD,MAAL,GAAcA,MAAd;AACA,iBAAKrQ,GAAL,GAAWA,GAAX;AACD;;AAEDlG,UAAAA,QAAQ,CAACsW,cAAD,EAAiB/V,YAAjB,CAAR;;AAEA+V,UAAAA,cAAc,CAAC9V,SAAf,CAAyBoD,IAAzB,GAAgC,UAAS6R,OAAT,EAAkB;AAChDrR,YAAAA,KAAK,CAAC,MAAD,EAASqR,OAAT,CAAL;AACA,iBAAKe,UAAL,CAAgBpG,IAAhB,CAAqBqF,OAArB;;AACA,gBAAI,CAAC,KAAKgB,QAAV,EAAoB;AAClB,mBAAKC,YAAL;AACD;AACF,WAND,CAtBgC,CA8BhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAJ,UAAAA,cAAc,CAAC9V,SAAf,CAAyBmW,gBAAzB,GAA4C,YAAW;AACrDvS,YAAAA,KAAK,CAAC,kBAAD,CAAL;AACA,gBAAIxF,IAAI,GAAG,IAAX;AACA,gBAAIgY,IAAJ;;AACA,iBAAKH,QAAL,GAAgB,YAAW;AACzBrS,cAAAA,KAAK,CAAC,UAAD,CAAL;AACAxF,cAAAA,IAAI,CAAC6X,QAAL,GAAgB,IAAhB;AACAnO,cAAAA,YAAY,CAACsO,IAAD,CAAZ;AACD,aAJD;;AAKAA,YAAAA,IAAI,GAAG9W,UAAU,CAAC,YAAW;AAC3BsE,cAAAA,KAAK,CAAC,SAAD,CAAL;AACAxF,cAAAA,IAAI,CAAC6X,QAAL,GAAgB,IAAhB;AACA7X,cAAAA,IAAI,CAAC8X,YAAL;AACD,aAJgB,EAId,EAJc,CAAjB;AAKD,WAdD;;AAgBAJ,UAAAA,cAAc,CAAC9V,SAAf,CAAyBkW,YAAzB,GAAwC,YAAW;AACjDtS,YAAAA,KAAK,CAAC,cAAD,EAAiB,KAAKoS,UAAL,CAAgB5W,MAAjC,CAAL;AACA,gBAAIhB,IAAI,GAAG,IAAX;;AACA,gBAAI,KAAK4X,UAAL,CAAgB5W,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,kBAAIwN,OAAO,GAAG,MAAM,KAAKoJ,UAAL,CAAgBnG,IAAhB,CAAqB,GAArB,CAAN,GAAkC,GAAhD;AACA,mBAAKoG,QAAL,GAAgB,KAAKF,MAAL,CAAY,KAAKrQ,GAAjB,EAAsBkH,OAAtB,EAA+B,UAAS+I,GAAT,EAAc;AAC3DvX,gBAAAA,IAAI,CAAC6X,QAAL,GAAgB,IAAhB;;AACA,oBAAIN,GAAJ,EAAS;AACP/R,kBAAAA,KAAK,CAAC,OAAD,EAAU+R,GAAV,CAAL;AACAvX,kBAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmBgV,GAAG,CAAC1W,IAAJ,IAAY,IAA/B,EAAqC,oBAAoB0W,GAAzD;AACAvX,kBAAAA,IAAI,CAACkF,KAAL;AACD,iBAJD,MAIO;AACLlF,kBAAAA,IAAI,CAAC+X,gBAAL;AACD;AACF,eATe,CAAhB;AAUA,mBAAKH,UAAL,GAAkB,EAAlB;AACD;AACF,WAjBD;;AAmBAF,UAAAA,cAAc,CAAC9V,SAAf,CAAyB4H,QAAzB,GAAoC,YAAW;AAC7ChE,YAAAA,KAAK,CAAC,UAAD,CAAL;AACA,iBAAK3D,kBAAL;AACD,WAHD;;AAKA6V,UAAAA,cAAc,CAAC9V,SAAf,CAAyBsD,KAAzB,GAAiC,YAAW;AAC1CM,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,iBAAKgE,QAAL;;AACA,gBAAI,KAAKqO,QAAT,EAAmB;AACjB,mBAAKA,QAAL;AACA,mBAAKA,QAAL,GAAgB,IAAhB;AACD;AACF,WAPD;;AASAnY,UAAAA,MAAM,CAACD,OAAP,GAAiBiY,cAAjB;AAEC,SAzFmB,EAyFjB3W,IAzFiB,CAyFZ,IAzFY;AAyFN,OAzFd,EAyFgBA,IAzFhB,CAyFqB,IAzFrB,EAyF0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAzF1B;AA2FC,KA5F4E,EA4F3E;AAAC,eAAQ,EAAT;AAAY,gBAAS,CAArB;AAAuB,kBAAW;AAAlC,KA5F2E,CA77D6uB;AAyhEjxB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC7E,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIqB,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACI0H,eAAe,GAAG1H,OAAO,CAAC,WAAD,CAD7B;AAAA,cAEI2G,WAAW,GAAG3G,OAAO,CAAC,oBAAD,CAFzB;;AAKAf,UAAAA,MAAM,CAACD,OAAP,GAAiB,UAAS6E,SAAT,EAAoB;AAEnC,qBAAS2T,mBAAT,CAA6BlR,QAA7B,EAAuCC,OAAvC,EAAgD;AAC9CmB,cAAAA,eAAe,CAACpH,IAAhB,CAAqB,IAArB,EAA2BuD,SAAS,CAAC0B,aAArC,EAAoDe,QAApD,EAA8DC,OAA9D;AACD;;AAED5F,YAAAA,QAAQ,CAAC6W,mBAAD,EAAsB9P,eAAtB,CAAR;;AAEA8P,YAAAA,mBAAmB,CAACtP,OAApB,GAA8B,UAASrB,GAAT,EAAcM,IAAd,EAAoB;AAChD,kBAAI,CAAC7H,MAAM,CAAC0I,QAAZ,EAAsB;AACpB,uBAAO,KAAP;AACD;;AAED,kBAAIyP,UAAU,GAAG9Q,WAAW,CAACiG,MAAZ,CAAmB,EAAnB,EAAuBzF,IAAvB,CAAjB;AACAsQ,cAAAA,UAAU,CAAC9O,UAAX,GAAwB,IAAxB;AACA,qBAAO9E,SAAS,CAACqE,OAAV,CAAkBuP,UAAlB,KAAiC/P,eAAe,CAACQ,OAAhB,EAAxC;AACD,aARD;;AAUAsP,YAAAA,mBAAmB,CAACjS,aAApB,GAAoC,YAAY1B,SAAS,CAAC0B,aAA1D;AACAiS,YAAAA,mBAAmB,CAACpK,QAApB,GAA+B,IAA/B;AACAoK,YAAAA,mBAAmB,CAAC/J,UAApB,GAAiC/F,eAAe,CAAC+F,UAAhB,GAA6B5J,SAAS,CAAC4J,UAAvC,GAAoD,CAArF,CApBmC,CAoBqD;;AAExF+J,YAAAA,mBAAmB,CAAClS,eAApB,GAAsCzB,SAAtC;AAEA,mBAAO2T,mBAAP;AACD,WAzBD;AA2BC,SAnCkB,EAmChBlX,IAnCgB,CAmCX,IAnCW;AAmCL,OAnCd,EAmCgBA,IAnChB,CAmCqB,IAnCrB,EAmC0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAnCjJ;AAqCC,KAtC2C,EAsC1C;AAAC,4BAAqB,EAAtB;AAAyB,mBAAY,EAArC;AAAwC,kBAAW;AAAnD,KAtC0C,CAzhE8wB;AA+jEhwB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC9F,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;;AAIA,cAAI6D,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,uBAAjB,CAAR;AACD;;AAED,mBAAS0X,OAAT,CAAiBV,QAAjB,EAA2BW,UAA3B,EAAuC7Q,UAAvC,EAAmD;AACjD/B,YAAAA,KAAK,CAAC4S,UAAD,CAAL;AACAzW,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AACA,iBAAK0W,QAAL,GAAgBA,QAAhB;AACA,iBAAKW,UAAL,GAAkBA,UAAlB;AACA,iBAAK7Q,UAAL,GAAkBA,UAAlB;;AACA,iBAAK8Q,iBAAL;AACD;;AAEDjX,UAAAA,QAAQ,CAAC+W,OAAD,EAAUxW,YAAV,CAAR;;AAEAwW,UAAAA,OAAO,CAACvW,SAAR,CAAkByW,iBAAlB,GAAsC,YAAW;AAC/C7S,YAAAA,KAAK,CAAC,mBAAD,CAAL;AACA,gBAAIxF,IAAI,GAAG,IAAX;AACA,gBAAIsY,IAAI,GAAG,KAAKA,IAAL,GAAY,IAAI,KAAKb,QAAT,CAAkB,KAAKW,UAAvB,EAAmC,KAAK7Q,UAAxC,CAAvB;AAEA+Q,YAAAA,IAAI,CAAChW,EAAL,CAAQ,SAAR,EAAmB,UAASiG,GAAT,EAAc;AAC/B/C,cAAAA,KAAK,CAAC,SAAD,EAAY+C,GAAZ,CAAL;AACAvI,cAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqBgG,GAArB;AACD,aAHD;AAKA+P,YAAAA,IAAI,CAACtW,IAAL,CAAU,OAAV,EAAmB,UAASnB,IAAT,EAAeY,MAAf,EAAuB;AACxC+D,cAAAA,KAAK,CAAC,OAAD,EAAU3E,IAAV,EAAgBY,MAAhB,EAAwBzB,IAAI,CAACuY,aAA7B,CAAL;AACAvY,cAAAA,IAAI,CAACsY,IAAL,GAAYA,IAAI,GAAG,IAAnB;;AAEA,kBAAI,CAACtY,IAAI,CAACuY,aAAV,EAAyB;AACvB,oBAAI9W,MAAM,KAAK,SAAf,EAA0B;AACxBzB,kBAAAA,IAAI,CAACqY,iBAAL;AACD,iBAFD,MAEO;AACLrY,kBAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB1B,IAAI,IAAI,IAA3B,EAAiCY,MAAjC;AACAzB,kBAAAA,IAAI,CAAC6B,kBAAL;AACD;AACF;AACF,aAZD;AAaD,WAvBD;;AAyBAsW,UAAAA,OAAO,CAACvW,SAAR,CAAkBsT,KAAlB,GAA0B,YAAW;AACnC1P,YAAAA,KAAK,CAAC,OAAD,CAAL;AACA,iBAAK3D,kBAAL;AACA,iBAAK0W,aAAL,GAAqB,IAArB;;AACA,gBAAI,KAAKD,IAAT,EAAe;AACb,mBAAKA,IAAL,CAAUpD,KAAV;AACD;AACF,WAPD;;AASAxV,UAAAA,MAAM,CAACD,OAAP,GAAiB0Y,OAAjB;AAEC,SA3DmB,EA2DjBpX,IA3DiB,CA2DZ,IA3DY;AA2DN,OA3Dd,EA2DgBA,IA3DhB,CA2DqB,IA3DrB,EA2D0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OA3D1B;AA6DC,KA9D4D,EA8D3D;AAAC,eAAQ,EAAT;AAAY,gBAAS,CAArB;AAAuB,kBAAW;AAAlC,KA9D2D,CA/jE6vB;AA6nEjxB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC7E,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CADtB;AAAA,cAEIiX,cAAc,GAAGjX,OAAO,CAAC,mBAAD,CAF5B;AAAA,cAGI0X,OAAO,GAAG1X,OAAO,CAAC,WAAD,CAHrB;;AAMA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,+BAAjB,CAAR;AACD;;AAED,mBAASsW,cAAT,CAAwBhQ,QAAxB,EAAkCyQ,SAAlC,EAA6CgB,UAA7C,EAAyDf,QAAzD,EAAmElQ,UAAnE,EAA+E;AAC7E,gBAAIkR,OAAO,GAAGrT,QAAQ,CAACkE,OAAT,CAAiBvC,QAAjB,EAA2ByQ,SAA3B,CAAd;AACAhS,YAAAA,KAAK,CAACiT,OAAD,CAAL;AACA,gBAAIzY,IAAI,GAAG,IAAX;AACA0X,YAAAA,cAAc,CAAC3W,IAAf,CAAoB,IAApB,EAA0BgG,QAA1B,EAAoCyR,UAApC;AAEA,iBAAKF,IAAL,GAAY,IAAIH,OAAJ,CAAYV,QAAZ,EAAsBgB,OAAtB,EAA+BlR,UAA/B,CAAZ;AACA,iBAAK+Q,IAAL,CAAUhW,EAAV,CAAa,SAAb,EAAwB,UAASiG,GAAT,EAAc;AACpC/C,cAAAA,KAAK,CAAC,cAAD,EAAiB+C,GAAjB,CAAL;AACAvI,cAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqBgG,GAArB;AACD,aAHD;AAIA,iBAAK+P,IAAL,CAAUtW,IAAV,CAAe,OAAf,EAAwB,UAASnB,IAAT,EAAeY,MAAf,EAAuB;AAC7C+D,cAAAA,KAAK,CAAC,YAAD,EAAe3E,IAAf,EAAqBY,MAArB,CAAL;AACAzB,cAAAA,IAAI,CAACsY,IAAL,GAAY,IAAZ;AACAtY,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB1B,IAAnB,EAAyBY,MAAzB;AACAzB,cAAAA,IAAI,CAACkF,KAAL;AACD,aALD;AAMD;;AAED9D,UAAAA,QAAQ,CAAC2V,cAAD,EAAiBW,cAAjB,CAAR;;AAEAX,UAAAA,cAAc,CAACnV,SAAf,CAAyBsD,KAAzB,GAAiC,YAAW;AAC1CwS,YAAAA,cAAc,CAAC9V,SAAf,CAAyBsD,KAAzB,CAA+BnE,IAA/B,CAAoC,IAApC;AACAyE,YAAAA,KAAK,CAAC,OAAD,CAAL;AACA,iBAAK3D,kBAAL;;AACA,gBAAI,KAAKyW,IAAT,EAAe;AACb,mBAAKA,IAAL,CAAUpD,KAAV;AACA,mBAAKoD,IAAL,GAAY,IAAZ;AACD;AACF,WARD;;AAUA5Y,UAAAA,MAAM,CAACD,OAAP,GAAiBsX,cAAjB;AAEC,SA/CmB,EA+CjBhW,IA/CiB,CA+CZ,IA/CY;AA+CN,OA/Cd,EA+CgBA,IA/ChB,CA+CqB,IA/CrB,EA+C0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OA/C1B;AAiDC,KAlD2C,EAkD1C;AAAC,yBAAkB,EAAnB;AAAsB,2BAAoB,EAA1C;AAA6C,mBAAY,EAAzD;AAA4D,eAAQ,EAApE;AAAuE,kBAAW;AAAlF,KAlD0C,CA7nE8wB;AA+qEjuB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC7H,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;AAAA,cAEIoU,iBAAiB,GAAGtV,OAAO,CAAC,aAAD,CAF/B;;AAKA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,oCAAjB,CAAR;AACD;;AAED,mBAASoV,mBAAT,CAA6BvO,GAA7B,EAAkC;AAChC9B,YAAAA,KAAK,CAAC8B,GAAD,CAAL;AACA3F,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEA,gBAAIf,IAAI,GAAG,IAAX;AACA,gBAAI0Y,EAAE,GAAG,KAAKA,EAAL,GAAU,IAAI3C,iBAAJ,CAAsBzO,GAAtB,CAAnB;;AACAoR,YAAAA,EAAE,CAAC/J,SAAH,GAAe,UAASxO,CAAT,EAAY;AACzBqF,cAAAA,KAAK,CAAC,SAAD,EAAYrF,CAAC,CAACgE,IAAd,CAAL;AACAnE,cAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqBoW,SAAS,CAACxY,CAAC,CAACgE,IAAH,CAA9B;AACD,aAHD;;AAIAuU,YAAAA,EAAE,CAAC7J,OAAH,GAAa,UAAS1O,CAAT,EAAY;AACvBqF,cAAAA,KAAK,CAAC,OAAD,EAAUkT,EAAE,CAAClO,UAAb,EAAyBrK,CAAzB,CAAL,CADuB,CAEvB;AACA;;AACA,kBAAIsB,MAAM,GAAIiX,EAAE,CAAClO,UAAH,KAAkB,CAAlB,GAAsB,SAAtB,GAAkC,WAAhD;;AACAxK,cAAAA,IAAI,CAACwJ,QAAL;;AACAxJ,cAAAA,IAAI,CAACiF,MAAL,CAAYxD,MAAZ;AACD,aAPD;AAQD;;AAEDL,UAAAA,QAAQ,CAACyU,mBAAD,EAAsBlU,YAAtB,CAAR;;AAEAkU,UAAAA,mBAAmB,CAACjU,SAApB,CAA8BsT,KAA9B,GAAsC,YAAW;AAC/C1P,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,iBAAKgE,QAAL;;AACA,iBAAKvE,MAAL,CAAY,MAAZ;AACD,WAJD;;AAMA4Q,UAAAA,mBAAmB,CAACjU,SAApB,CAA8B4H,QAA9B,GAAyC,YAAW;AAClDhE,YAAAA,KAAK,CAAC,SAAD,CAAL;AACA,gBAAIkT,EAAE,GAAG,KAAKA,EAAd;;AACA,gBAAIA,EAAJ,EAAQ;AACNA,cAAAA,EAAE,CAAC/J,SAAH,GAAe+J,EAAE,CAAC7J,OAAH,GAAa,IAA5B;AACA6J,cAAAA,EAAE,CAACxT,KAAH;AACA,mBAAKwT,EAAL,GAAU,IAAV;AACD;AACF,WARD;;AAUA7C,UAAAA,mBAAmB,CAACjU,SAApB,CAA8BqD,MAA9B,GAAuC,UAASxD,MAAT,EAAiB;AACtD+D,YAAAA,KAAK,CAAC,OAAD,EAAU/D,MAAV,CAAL;AACA,gBAAIzB,IAAI,GAAG,IAAX,CAFsD,CAGtD;AACA;AACA;;AACAkB,YAAAA,UAAU,CAAC,YAAW;AACpBlB,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyBd,MAAzB;AACAzB,cAAAA,IAAI,CAAC6B,kBAAL;AACD,aAHS,EAGP,GAHO,CAAV;AAID,WAVD;;AAYAnC,UAAAA,MAAM,CAACD,OAAP,GAAiBoW,mBAAjB;AAEC,SAjEmB,EAiEjB9U,IAjEiB,CAiEZ,IAjEY;AAiEN,OAjEd,EAiEgBA,IAjEhB,CAiEqB,IAjErB,EAiE0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAjE1B;AAmEC,KApE2F,EAoE1F;AAAC,eAAQ,EAAT;AAAY,gBAAS,CAArB;AAAuB,qBAAc,EAArC;AAAwC,kBAAW;AAAnD,KApE0F,CA/qE8tB;AAmvEhwB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC9F,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAIqB,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACI2D,WAAW,GAAG3D,OAAO,CAAC,oBAAD,CADzB;AAAA,cAEI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CAFtB;AAAA,cAGIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAHrC;AAAA,cAIIqI,MAAM,GAAGvJ,OAAO,CAAC,oBAAD,CAJpB;;AAOA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,iCAAjB,CAAR;AACD;;AAED,mBAASwV,gBAAT,CAA0B3O,GAA1B,EAA+B;AAC7B9B,YAAAA,KAAK,CAAC8B,GAAD,CAAL;AACA3F,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AACA,gBAAIf,IAAI,GAAG,IAAX;AACAoE,YAAAA,WAAW,CAACwU,sBAAZ;AAEA,iBAAKC,EAAL,GAAU,MAAM7O,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAhB;AACA7D,YAAAA,GAAG,GAAGlC,QAAQ,CAACiP,QAAT,CAAkB/M,GAAlB,EAAuB,OAAOwR,kBAAkB,CAAC1U,WAAW,CAAC2U,OAAZ,GAAsB,GAAtB,GAA4B,KAAKF,EAAlC,CAAhD,CAAN;AAEArT,YAAAA,KAAK,CAAC,gBAAD,EAAmByQ,gBAAgB,CAAC+C,eAApC,CAAL;AACA,gBAAIC,aAAa,GAAGhD,gBAAgB,CAAC+C,eAAjB,GAChB5U,WAAW,CAAC8U,cADI,GACa9U,WAAW,CAACiS,YAD7C;AAGAtW,YAAAA,MAAM,CAACqE,WAAW,CAAC2U,OAAb,CAAN,CAA4B,KAAKF,EAAjC,IAAuC;AACrC/E,cAAAA,KAAK,EAAE,YAAW;AAChBtO,gBAAAA,KAAK,CAAC,OAAD,CAAL;AACAxF,gBAAAA,IAAI,CAACoW,SAAL,CAAeM,MAAf;AACD,eAJoC;AAKrCG,cAAAA,OAAO,EAAE,UAAS1S,IAAT,EAAe;AACtBqB,gBAAAA,KAAK,CAAC,SAAD,EAAYrB,IAAZ,CAAL;AACAnE,gBAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqB4B,IAArB;AACD,eARoC;AASrCgV,cAAAA,IAAI,EAAE,YAAW;AACf3T,gBAAAA,KAAK,CAAC,MAAD,CAAL;;AACAxF,gBAAAA,IAAI,CAACwJ,QAAL;;AACAxJ,gBAAAA,IAAI,CAACiF,MAAL,CAAY,SAAZ;AACD;AAboC,aAAvC;AAeA,iBAAKmR,SAAL,GAAiB6C,aAAa,CAAC3R,GAAD,EAAM,YAAW;AAC7C9B,cAAAA,KAAK,CAAC,UAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACwJ,QAAL;;AACAxJ,cAAAA,IAAI,CAACiF,MAAL,CAAY,WAAZ;AACD,aAJ6B,CAA9B;AAKD;;AAED7D,UAAAA,QAAQ,CAAC6U,gBAAD,EAAmBtU,YAAnB,CAAR;;AAEAsU,UAAAA,gBAAgB,CAACrU,SAAjB,CAA2BsT,KAA3B,GAAmC,YAAW;AAC5C1P,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,iBAAKgE,QAAL;;AACA,iBAAKvE,MAAL,CAAY,MAAZ;AACD,WAJD;;AAMAgR,UAAAA,gBAAgB,CAACrU,SAAjB,CAA2B4H,QAA3B,GAAsC,YAAW;AAC/ChE,YAAAA,KAAK,CAAC,UAAD,CAAL;;AACA,gBAAI,KAAK4Q,SAAT,EAAoB;AAClB,mBAAKA,SAAL,CAAeK,OAAf;AACA,mBAAKL,SAAL,GAAiB,IAAjB;AACD;;AACD,mBAAOrW,MAAM,CAACqE,WAAW,CAAC2U,OAAb,CAAN,CAA4B,KAAKF,EAAjC,CAAP;AACD,WAPD;;AASA5C,UAAAA,gBAAgB,CAACrU,SAAjB,CAA2BqD,MAA3B,GAAoC,UAASxD,MAAT,EAAiB;AACnD+D,YAAAA,KAAK,CAAC,QAAD,EAAW/D,MAAX,CAAL;AACA,iBAAKc,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyBd,MAAzB;AACA,iBAAKI,kBAAL;AACD,WAJD;;AAMAoU,UAAAA,gBAAgB,CAAC+C,eAAjB,GAAmC,KAAnC,CAzEuC,CA2EvC;;AACA,cAAI5D,GAAG,GAAG,CAAC,QAAD,EAAWvR,MAAX,CAAkB,QAAlB,EAA4B4N,IAA5B,CAAiC,GAAjC,CAAV;;AACA,cAAI2D,GAAG,IAAIrV,MAAX,EAAmB;AACjB,gBAAI;AACFkW,cAAAA,gBAAgB,CAAC+C,eAAjB,GAAmC,CAAC,CAAC,IAAIjZ,MAAM,CAACqV,GAAD,CAAV,CAAgB,UAAhB,CAArC;AACD,aAFD,CAEE,OAAOrE,CAAP,EAAU,CACV;AACD;AACF;;AAEDkF,UAAAA,gBAAgB,CAACtN,OAAjB,GAA2BsN,gBAAgB,CAAC+C,eAAjB,IAAoC5U,WAAW,CAAC0S,aAA3E;AAEApX,UAAAA,MAAM,CAACD,OAAP,GAAiBwW,gBAAjB;AAEC,SAzF0B,EAyFxBlV,IAzFwB,CAyFnB,IAzFmB;AAyFb,OAzFd,EAyFgBA,IAzFhB,CAyFqB,IAzFrB,EAyF0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAzF1B,EAyFsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAzF7J;AA2FC,KA5F4D,EA4F3D;AAAC,4BAAqB,EAAtB;AAAyB,4BAAqB,EAA9C;AAAiD,yBAAkB,EAAnE;AAAsE,eAAQ,EAA9E;AAAiF,gBAAS,CAA1F;AAA4F,kBAAW;AAAvG,KA5F2D,CAnvE6vB;AA+0E5sB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAClJ,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAImI,KAAK,GAAGzH,OAAO,CAAC,oBAAD,CAAnB;AAAA,cACIuJ,MAAM,GAAGvJ,OAAO,CAAC,oBAAD,CADpB;AAAA,cAEIyJ,OAAO,GAAGzJ,OAAO,CAAC,qBAAD,CAFrB;AAAA,cAGI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CAHtB;AAAA,cAIIW,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAJtB;AAAA,cAKIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YALrC;;AAQA,cAAI6D,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,8BAAjB,CAAR;AACD;;AAED,mBAASuW,aAAT,CAAuB1P,GAAvB,EAA4B;AAC1B9B,YAAAA,KAAK,CAAC8B,GAAD,CAAL;AACA,gBAAItH,IAAI,GAAG,IAAX;AACA2B,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEAmH,YAAAA,KAAK,CAAC0Q,sBAAN;AAEA,iBAAKC,EAAL,GAAU,MAAM7O,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAhB;AACA,gBAAIiO,SAAS,GAAGhU,QAAQ,CAACiP,QAAT,CAAkB/M,GAAlB,EAAuB,OAAO+R,kBAAkB,CAACnR,KAAK,CAAC6Q,OAAN,GAAgB,GAAhB,GAAsB,KAAKF,EAA5B,CAAhD,CAAhB;AAEA9Y,YAAAA,MAAM,CAACmI,KAAK,CAAC6Q,OAAP,CAAN,CAAsB,KAAKF,EAA3B,IAAiC,KAAKS,SAAL,CAAe7U,IAAf,CAAoB,IAApB,CAAjC;;AACA,iBAAK8U,aAAL,CAAmBH,SAAnB,EAX0B,CAa1B;;;AACA,iBAAKI,SAAL,GAAiBtY,UAAU,CAAC,YAAW;AACrCsE,cAAAA,KAAK,CAAC,SAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACyZ,MAAL,CAAY,IAAI7Y,KAAJ,CAAU,0CAAV,CAAZ;AACD,aAH0B,EAGxBoW,aAAa,CAACvN,OAHU,CAA3B;AAID;;AAEDrI,UAAAA,QAAQ,CAAC4V,aAAD,EAAgBrV,YAAhB,CAAR;;AAEAqV,UAAAA,aAAa,CAACpV,SAAd,CAAwBsT,KAAxB,GAAgC,YAAW;AACzC1P,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,gBAAIzF,MAAM,CAACmI,KAAK,CAAC6Q,OAAP,CAAN,CAAsB,KAAKF,EAA3B,CAAJ,EAAoC;AAClC,kBAAItB,GAAG,GAAG,IAAI3W,KAAJ,CAAU,yBAAV,CAAV;AACA2W,cAAAA,GAAG,CAAC1W,IAAJ,GAAW,IAAX;;AACA,mBAAK4Y,MAAL,CAAYlC,GAAZ;AACD;AACF,WAPD;;AASAP,UAAAA,aAAa,CAACvN,OAAd,GAAwB,KAAxB;AACAuN,UAAAA,aAAa,CAAC0C,kBAAd,GAAmC,IAAnC;;AAEA1C,UAAAA,aAAa,CAACpV,SAAd,CAAwB0X,SAAxB,GAAoC,UAASnV,IAAT,EAAe;AACjDqB,YAAAA,KAAK,CAAC,WAAD,EAAcrB,IAAd,CAAL;;AACA,iBAAKqF,QAAL;;AAEA,gBAAI,KAAKmQ,QAAT,EAAmB;AACjB;AACD;;AAED,gBAAIxV,IAAJ,EAAU;AACRqB,cAAAA,KAAK,CAAC,SAAD,EAAYrB,IAAZ,CAAL;AACA,mBAAK5B,IAAL,CAAU,SAAV,EAAqB4B,IAArB;AACD;;AACD,iBAAK5B,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyB,SAAzB;AACA,iBAAKV,kBAAL;AACD,WAdD;;AAgBAmV,UAAAA,aAAa,CAACpV,SAAd,CAAwB6X,MAAxB,GAAiC,UAASlC,GAAT,EAAc;AAC7C/R,YAAAA,KAAK,CAAC,QAAD,EAAW+R,GAAX,CAAL;;AACA,iBAAK/N,QAAL;;AACA,iBAAKmQ,QAAL,GAAgB,IAAhB;AACA,iBAAKpX,IAAL,CAAU,OAAV,EAAmBgV,GAAG,CAAC1W,IAAvB,EAA6B0W,GAAG,CAACV,OAAjC;AACA,iBAAKhV,kBAAL;AACD,WAND;;AAQAmV,UAAAA,aAAa,CAACpV,SAAd,CAAwB4H,QAAxB,GAAmC,YAAW;AAC5ChE,YAAAA,KAAK,CAAC,UAAD,CAAL;AACAkE,YAAAA,YAAY,CAAC,KAAK8P,SAAN,CAAZ;;AACA,gBAAI,KAAKI,OAAT,EAAkB;AAChB,mBAAKA,OAAL,CAAaC,UAAb,CAAwBC,WAAxB,CAAoC,KAAKF,OAAzC;AACA,mBAAKA,OAAL,GAAe,IAAf;AACD;;AACD,gBAAI,KAAKG,MAAT,EAAiB;AACf,kBAAIA,MAAM,GAAG,KAAKA,MAAlB,CADe,CAEf;AACA;;AACAA,cAAAA,MAAM,CAACF,UAAP,CAAkBC,WAAlB,CAA8BC,MAA9B;AACAA,cAAAA,MAAM,CAAC/E,kBAAP,GAA4B+E,MAAM,CAAClL,OAAP,GACxBkL,MAAM,CAACC,MAAP,GAAgBD,MAAM,CAACE,OAAP,GAAiB,IADrC;AAEA,mBAAKF,MAAL,GAAc,IAAd;AACD;;AACD,mBAAOha,MAAM,CAACmI,KAAK,CAAC6Q,OAAP,CAAN,CAAsB,KAAKF,EAA3B,CAAP;AACD,WAjBD;;AAmBA7B,UAAAA,aAAa,CAACpV,SAAd,CAAwBsY,YAAxB,GAAuC,YAAW;AAChD1U,YAAAA,KAAK,CAAC,cAAD,CAAL;AACA,gBAAIxF,IAAI,GAAG,IAAX;;AACA,gBAAI,KAAKma,UAAT,EAAqB;AACnB;AACD;;AAED,iBAAKA,UAAL,GAAkBjZ,UAAU,CAAC,YAAW;AACtC,kBAAI,CAAClB,IAAI,CAACoa,UAAV,EAAsB;AACpBpa,gBAAAA,IAAI,CAACyZ,MAAL,CAAY,IAAI7Y,KAAJ,CAAU,0CAAV,CAAZ;AACD;AACF,aAJ2B,EAIzBoW,aAAa,CAAC0C,kBAJW,CAA5B;AAKD,WAZD;;AAcA1C,UAAAA,aAAa,CAACpV,SAAd,CAAwB2X,aAAxB,GAAwC,UAASjS,GAAT,EAAc;AACpD9B,YAAAA,KAAK,CAAC,eAAD,EAAkB8B,GAAlB,CAAL;AACA,gBAAItH,IAAI,GAAG,IAAX;AACA,gBAAI+Z,MAAM,GAAG,KAAKA,MAAL,GAAcha,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,QAA9B,CAA3B;AACA,gBAAIT,OAAJ,CAJoD,CAItC;;AAEdG,YAAAA,MAAM,CAAClB,EAAP,GAAY,MAAM7O,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAlB;AACA4O,YAAAA,MAAM,CAACO,GAAP,GAAahT,GAAb;AACAyS,YAAAA,MAAM,CAACjY,IAAP,GAAc,iBAAd;AACAiY,YAAAA,MAAM,CAACQ,OAAP,GAAiB,OAAjB;AACAR,YAAAA,MAAM,CAAClL,OAAP,GAAiB,KAAKqL,YAAL,CAAkBzV,IAAlB,CAAuB,IAAvB,CAAjB;;AACAsV,YAAAA,MAAM,CAACC,MAAP,GAAgB,YAAW;AACzBxU,cAAAA,KAAK,CAAC,QAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACyZ,MAAL,CAAY,IAAI7Y,KAAJ,CAAU,yCAAV,CAAZ;AACD,aAHD,CAXoD,CAgBpD;AACA;;;AACAmZ,YAAAA,MAAM,CAAC/E,kBAAP,GAA4B,YAAW;AACrCxP,cAAAA,KAAK,CAAC,oBAAD,EAAuBuU,MAAM,CAACvP,UAA9B,CAAL;;AACA,kBAAI,gBAAgBkJ,IAAhB,CAAqBqG,MAAM,CAACvP,UAA5B,CAAJ,EAA6C;AAC3C,oBAAIuP,MAAM,IAAIA,MAAM,CAACS,OAAjB,IAA4BT,MAAM,CAACE,OAAvC,EAAgD;AAC9Cja,kBAAAA,IAAI,CAACoa,UAAL,GAAkB,IAAlB;;AACA,sBAAI;AACF;AACAL,oBAAAA,MAAM,CAACE,OAAP;AACD,mBAHD,CAGE,OAAOlJ,CAAP,EAAU,CACV;AACD;AACF;;AACD,oBAAIgJ,MAAJ,EAAY;AACV/Z,kBAAAA,IAAI,CAACyZ,MAAL,CAAY,IAAI7Y,KAAJ,CAAU,qDAAV,CAAZ;AACD;AACF;AACF,aAhBD,CAlBoD,CAmCpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,gBAAI,OAAOmZ,MAAM,CAACU,KAAd,KAAwB,WAAxB,IAAuC1a,MAAM,CAAC0I,QAAP,CAAgBtB,WAA3D,EAAwE;AACtE;AACA;AACA;AACA,kBAAI,CAAC+C,OAAO,CAACwQ,OAAR,EAAL,EAAwB;AACtB;AACA,oBAAI;AACFX,kBAAAA,MAAM,CAACS,OAAP,GAAiBT,MAAM,CAAClB,EAAxB;AACAkB,kBAAAA,MAAM,CAAC9V,KAAP,GAAe,SAAf;AACD,iBAHD,CAGE,OAAO8M,CAAP,EAAU,CACV;AACD;;AACDgJ,gBAAAA,MAAM,CAACU,KAAP,GAAe,IAAf;AACD,eATD,MASO;AACL;AACAb,gBAAAA,OAAO,GAAG,KAAKA,OAAL,GAAe7Z,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,QAA9B,CAAzB;AACAT,gBAAAA,OAAO,CAACjS,IAAR,GAAe,0CAA0CoS,MAAM,CAAClB,EAAjD,GAAsD,mCAArE;AACAkB,gBAAAA,MAAM,CAACU,KAAP,GAAeb,OAAO,CAACa,KAAR,GAAgB,KAA/B;AACD;AACF;;AACD,gBAAI,OAAOV,MAAM,CAACU,KAAd,KAAwB,WAA5B,EAAyC;AACvCV,cAAAA,MAAM,CAACU,KAAP,GAAe,IAAf;AACD;;AAED,gBAAIE,IAAI,GAAG5a,MAAM,CAAC0I,QAAP,CAAgBmS,oBAAhB,CAAqC,MAArC,EAA6C,CAA7C,CAAX;AACAD,YAAAA,IAAI,CAACE,YAAL,CAAkBd,MAAlB,EAA0BY,IAAI,CAACG,UAA/B;;AACA,gBAAIlB,OAAJ,EAAa;AACXe,cAAAA,IAAI,CAACE,YAAL,CAAkBjB,OAAlB,EAA2Be,IAAI,CAACG,UAAhC;AACD;AACF,WA1ED;;AA4EApb,UAAAA,MAAM,CAACD,OAAP,GAAiBuX,aAAjB;AAEC,SAzL0B,EAyLxBjW,IAzLwB,CAyLnB,IAzLmB;AAyLb,OAzLd,EAyLgBA,IAzLhB,CAyLqB,IAzLrB,EAyL0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAzL1B,EAyLsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAzL7J;AA2LC,KA5LgH,EA4L/G;AAAC,6BAAsB,EAAvB;AAA0B,4BAAqB,EAA/C;AAAkD,4BAAqB,EAAvE;AAA0E,yBAAkB,EAA5F;AAA+F,eAAQ,EAAvG;AAA0G,gBAAS,CAAnH;AAAqH,kBAAW;AAAhI,KA5L+G,CA/0EysB;AA2gFnrB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC3K,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI/D,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YADrC;;AAIA,cAAI6D,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,4BAAjB,CAAR;AACD;;AAED,mBAASsa,WAAT,CAAqBzT,GAArB,EAA0BC,UAA1B,EAAsC;AACpC/B,YAAAA,KAAK,CAAC8B,GAAD,CAAL;AACA3F,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AACA,gBAAIf,IAAI,GAAG,IAAX;AAEA,iBAAKgb,cAAL,GAAsB,CAAtB;AAEA,iBAAKvT,EAAL,GAAU,IAAIF,UAAJ,CAAe,MAAf,EAAuBD,GAAvB,EAA4B,IAA5B,CAAV;AACA,iBAAKG,EAAL,CAAQnF,EAAR,CAAW,OAAX,EAAoB,KAAK2Y,aAAL,CAAmBxW,IAAnB,CAAwB,IAAxB,CAApB;AACA,iBAAKgD,EAAL,CAAQzF,IAAR,CAAa,QAAb,EAAuB,UAAS0F,MAAT,EAAiBC,IAAjB,EAAuB;AAC5CnC,cAAAA,KAAK,CAAC,QAAD,EAAWkC,MAAX,EAAmBC,IAAnB,CAAL;;AACA3H,cAAAA,IAAI,CAACib,aAAL,CAAmBvT,MAAnB,EAA2BC,IAA3B;;AACA3H,cAAAA,IAAI,CAACyH,EAAL,GAAU,IAAV;AACA,kBAAIhG,MAAM,GAAGiG,MAAM,KAAK,GAAX,GAAiB,SAAjB,GAA6B,WAA1C;AACAlC,cAAAA,KAAK,CAAC,OAAD,EAAU/D,MAAV,CAAL;AACAzB,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyBd,MAAzB;;AACAzB,cAAAA,IAAI,CAACwJ,QAAL;AACD,aARD;AASD;;AAEDpI,UAAAA,QAAQ,CAAC2Z,WAAD,EAAcpZ,YAAd,CAAR;;AAEAoZ,UAAAA,WAAW,CAACnZ,SAAZ,CAAsBqZ,aAAtB,GAAsC,UAASvT,MAAT,EAAiBC,IAAjB,EAAuB;AAC3DnC,YAAAA,KAAK,CAAC,eAAD,EAAkBkC,MAAlB,CAAL;;AACA,gBAAIA,MAAM,KAAK,GAAX,IAAkB,CAACC,IAAvB,EAA6B;AAC3B;AACD;;AAED,iBAAK,IAAI7D,GAAG,GAAG,CAAC,CAAhB,GAAqB,KAAKkX,cAAL,IAAuBlX,GAAG,GAAG,CAAlD,EAAqD;AACnD,kBAAIoX,GAAG,GAAGvT,IAAI,CAAC5D,KAAL,CAAW,KAAKiX,cAAhB,CAAV;AACAlX,cAAAA,GAAG,GAAGoX,GAAG,CAACtX,OAAJ,CAAY,IAAZ,CAAN;;AACA,kBAAIE,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd;AACD;;AACD,kBAAIyE,GAAG,GAAG2S,GAAG,CAACnX,KAAJ,CAAU,CAAV,EAAaD,GAAb,CAAV;;AACA,kBAAIyE,GAAJ,EAAS;AACP/C,gBAAAA,KAAK,CAAC,SAAD,EAAY+C,GAAZ,CAAL;AACA,qBAAKhG,IAAL,CAAU,SAAV,EAAqBgG,GAArB;AACD;AACF;AACF,WAlBD;;AAoBAwS,UAAAA,WAAW,CAACnZ,SAAZ,CAAsB4H,QAAtB,GAAiC,YAAW;AAC1ChE,YAAAA,KAAK,CAAC,UAAD,CAAL;AACA,iBAAK3D,kBAAL;AACD,WAHD;;AAKAkZ,UAAAA,WAAW,CAACnZ,SAAZ,CAAsBsT,KAAtB,GAA8B,YAAW;AACvC1P,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,gBAAI,KAAKiC,EAAT,EAAa;AACX,mBAAKA,EAAL,CAAQvC,KAAR;AACAM,cAAAA,KAAK,CAAC,OAAD,CAAL;AACA,mBAAKjD,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyB,MAAzB;AACA,mBAAKkF,EAAL,GAAU,IAAV;AACD;;AACD,iBAAK+B,QAAL;AACD,WATD;;AAWA9J,UAAAA,MAAM,CAACD,OAAP,GAAiBsb,WAAjB;AAEC,SAxEmB,EAwEjBha,IAxEiB,CAwEZ,IAxEY;AAwEN,OAxEd,EAwEgBA,IAxEhB,CAwEqB,IAxErB,EAwE0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAxE1B;AA0EC,KA3EyI,EA2ExI;AAAC,eAAQ,EAAT;AAAY,gBAAS,CAArB;AAAuB,kBAAW;AAAlC,KA3EwI,CA3gFgrB;AAslFjxB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC7E,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAIiK,MAAM,GAAGvJ,OAAO,CAAC,oBAAD,CAApB;AAAA,cACI2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CADtB;;AAIA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,4BAAjB,CAAR;AACD;;AAED,cAAI0a,IAAJ,EAAUC,IAAV;;AAEA,mBAAS/E,YAAT,CAAsBwC,EAAtB,EAA0B;AACxBrT,YAAAA,KAAK,CAAC,cAAD,EAAiBqT,EAAjB,CAAL;;AACA,gBAAI;AACF;AACA,qBAAO9Y,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,mBAAmBxB,EAAnB,GAAwB,IAAtD,CAAP;AACD,aAHD,CAGE,OAAO9H,CAAP,EAAU;AACV,kBAAIsK,MAAM,GAAGtb,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,QAA9B,CAAb;AACAgB,cAAAA,MAAM,CAACtL,IAAP,GAAc8I,EAAd;AACA,qBAAOwC,MAAP;AACD;AACF;;AAED,mBAASC,UAAT,GAAsB;AACpB9V,YAAAA,KAAK,CAAC,YAAD,CAAL;AACA2V,YAAAA,IAAI,GAAGpb,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,MAA9B,CAAP;AACAc,YAAAA,IAAI,CAACI,KAAL,CAAWC,OAAX,GAAqB,MAArB;AACAL,YAAAA,IAAI,CAACI,KAAL,CAAWE,QAAX,GAAsB,UAAtB;AACAN,YAAAA,IAAI,CAACnL,MAAL,GAAc,MAAd;AACAmL,YAAAA,IAAI,CAACO,OAAL,GAAe,mCAAf;AACAP,YAAAA,IAAI,CAACQ,aAAL,GAAqB,OAArB;AAEAP,YAAAA,IAAI,GAAGrb,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,UAA9B,CAAP;AACAe,YAAAA,IAAI,CAACrL,IAAL,GAAY,GAAZ;AACAoL,YAAAA,IAAI,CAACS,WAAL,CAAiBR,IAAjB;AAEArb,YAAAA,MAAM,CAAC0I,QAAP,CAAgBC,IAAhB,CAAqBkT,WAArB,CAAiCT,IAAjC;AACD;;AAEDzb,UAAAA,MAAM,CAACD,OAAP,GAAiB,UAAS6H,GAAT,EAAckH,OAAd,EAAuB4I,QAAvB,EAAiC;AAChD5R,YAAAA,KAAK,CAAC8B,GAAD,EAAMkH,OAAN,CAAL;;AACA,gBAAI,CAAC2M,IAAL,EAAW;AACTG,cAAAA,UAAU;AACX;;AACD,gBAAIzC,EAAE,GAAG,MAAM7O,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAf;AACAgQ,YAAAA,IAAI,CAACjK,MAAL,GAAc2H,EAAd;AACAsC,YAAAA,IAAI,CAACU,MAAL,GAAczW,QAAQ,CAACiP,QAAT,CAAkBjP,QAAQ,CAACkE,OAAT,CAAiBhC,GAAjB,EAAsB,aAAtB,CAAlB,EAAwD,OAAOuR,EAA/D,CAAd;AAEA,gBAAIwC,MAAM,GAAGhF,YAAY,CAACwC,EAAD,CAAzB;AACAwC,YAAAA,MAAM,CAACxC,EAAP,GAAYA,EAAZ;AACAwC,YAAAA,MAAM,CAACE,KAAP,CAAaC,OAAb,GAAuB,MAAvB;AACAL,YAAAA,IAAI,CAACS,WAAL,CAAiBP,MAAjB;;AAEA,gBAAI;AACFD,cAAAA,IAAI,CAAC/K,KAAL,GAAa7B,OAAb;AACD,aAFD,CAEE,OAAOrO,CAAP,EAAU,CACV;AACD;;AACDgb,YAAAA,IAAI,CAACW,MAAL;;AAEA,gBAAIC,SAAS,GAAG,UAASxE,GAAT,EAAc;AAC5B/R,cAAAA,KAAK,CAAC,WAAD,EAAcqT,EAAd,EAAkBtB,GAAlB,CAAL;;AACA,kBAAI,CAAC8D,MAAM,CAACxM,OAAZ,EAAqB;AACnB;AACD;;AACDwM,cAAAA,MAAM,CAACrG,kBAAP,GAA4BqG,MAAM,CAACxM,OAAP,GAAiBwM,MAAM,CAACrB,MAAP,GAAgB,IAA7D,CAL4B,CAM5B;AACA;;AACA9Y,cAAAA,UAAU,CAAC,YAAW;AACpBsE,gBAAAA,KAAK,CAAC,aAAD,EAAgBqT,EAAhB,CAAL;AACAwC,gBAAAA,MAAM,CAACxB,UAAP,CAAkBC,WAAlB,CAA8BuB,MAA9B;AACAA,gBAAAA,MAAM,GAAG,IAAT;AACD,eAJS,EAIP,GAJO,CAAV;AAKAD,cAAAA,IAAI,CAAC/K,KAAL,GAAa,EAAb,CAb4B,CAc5B;AACA;;AACA+G,cAAAA,QAAQ,CAACG,GAAD,CAAR;AACD,aAjBD;;AAkBA8D,YAAAA,MAAM,CAACxM,OAAP,GAAiB,YAAW;AAC1BrJ,cAAAA,KAAK,CAAC,SAAD,EAAYqT,EAAZ,CAAL;AACAkD,cAAAA,SAAS;AACV,aAHD;;AAIAV,YAAAA,MAAM,CAACrB,MAAP,GAAgB,YAAW;AACzBxU,cAAAA,KAAK,CAAC,QAAD,EAAWqT,EAAX,CAAL;AACAkD,cAAAA,SAAS;AACV,aAHD;;AAIAV,YAAAA,MAAM,CAACrG,kBAAP,GAA4B,UAAS7U,CAAT,EAAY;AACtCqF,cAAAA,KAAK,CAAC,oBAAD,EAAuBqT,EAAvB,EAA2BwC,MAAM,CAAC7Q,UAAlC,EAA8CrK,CAA9C,CAAL;;AACA,kBAAIkb,MAAM,CAAC7Q,UAAP,KAAsB,UAA1B,EAAsC;AACpCuR,gBAAAA,SAAS;AACV;AACF,aALD;;AAMA,mBAAO,YAAW;AAChBvW,cAAAA,KAAK,CAAC,SAAD,EAAYqT,EAAZ,CAAL;AACAkD,cAAAA,SAAS,CAAC,IAAInb,KAAJ,CAAU,SAAV,CAAD,CAAT;AACD,aAHD;AAID,WAzDD;AA2DC,SArG0B,EAqGxBG,IArGwB,CAqGnB,IArGmB;AAqGb,OArGd,EAqGgBA,IArGhB,CAqGqB,IArGrB,EAqG0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OArG1B,EAqGsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EArG7J;AAuGC,KAxG2C,EAwG1C;AAAC,4BAAqB,EAAtB;AAAyB,yBAAkB,EAA3C;AAA8C,eAAQ;AAAtD,KAxG0C,CAtlF8wB;AA8rF7vB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACjG,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAI4B,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,cACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;AAAA,cAEI4E,UAAU,GAAG5E,OAAO,CAAC,mBAAD,CAFxB;AAAA,cAGIyJ,OAAO,GAAGzJ,OAAO,CAAC,qBAAD,CAHrB;AAAA,cAII2E,QAAQ,GAAG3E,OAAO,CAAC,iBAAD,CAJtB;;AAOA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,0BAAjB,CAAR;AACD,WAbsC,CAevC;AACA;AACA;;;AAEA,mBAASub,SAAT,CAAmBhM,MAAnB,EAA2B1I,GAA3B,EAAgCkH,OAAhC,EAAyC;AACvChJ,YAAAA,KAAK,CAACwK,MAAD,EAAS1I,GAAT,CAAL;AACA,gBAAItH,IAAI,GAAG,IAAX;AACA2B,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEAG,YAAAA,UAAU,CAAC,YAAW;AACpBlB,cAAAA,IAAI,CAACmU,MAAL,CAAYnE,MAAZ,EAAoB1I,GAApB,EAAyBkH,OAAzB;AACD,aAFS,EAEP,CAFO,CAAV;AAGD;;AAEDpN,UAAAA,QAAQ,CAAC4a,SAAD,EAAYra,YAAZ,CAAR;;AAEAqa,UAAAA,SAAS,CAACpa,SAAV,CAAoBuS,MAApB,GAA6B,UAASnE,MAAT,EAAiB1I,GAAjB,EAAsBkH,OAAtB,EAA+B;AAC1DhJ,YAAAA,KAAK,CAAC,QAAD,CAAL;AACA,gBAAIxF,IAAI,GAAG,IAAX;AACA,gBAAIic,GAAG,GAAG,IAAIlc,MAAM,CAACmc,cAAX,EAAV,CAH0D,CAI1D;;AACA5U,YAAAA,GAAG,GAAGlC,QAAQ,CAACiP,QAAT,CAAkB/M,GAAlB,EAAuB,OAAQ,CAAC,IAAIjE,IAAJ,EAAhC,CAAN;;AAEA4Y,YAAAA,GAAG,CAACpN,OAAJ,GAAc,YAAW;AACvBrJ,cAAAA,KAAK,CAAC,SAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACmc,MAAL;AACD,aAHD;;AAIAF,YAAAA,GAAG,CAACxH,SAAJ,GAAgB,YAAW;AACzBjP,cAAAA,KAAK,CAAC,WAAD,CAAL;;AACAxF,cAAAA,IAAI,CAACmc,MAAL;AACD,aAHD;;AAIAF,YAAAA,GAAG,CAACG,UAAJ,GAAiB,YAAW;AAC1B5W,cAAAA,KAAK,CAAC,UAAD,EAAayW,GAAG,CAAChH,YAAjB,CAAL;AACAjV,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB,GAAnB,EAAwB0Z,GAAG,CAAChH,YAA5B;AACD,aAHD;;AAIAgH,YAAAA,GAAG,CAACjC,MAAJ,GAAa,YAAW;AACtBxU,cAAAA,KAAK,CAAC,MAAD,CAAL;AACAxF,cAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoB,GAApB,EAAyB0Z,GAAG,CAAChH,YAA7B;;AACAjV,cAAAA,IAAI,CAACwJ,QAAL,CAAc,KAAd;AACD,aAJD;;AAKA,iBAAKyS,GAAL,GAAWA,GAAX;AACA,iBAAK3H,SAAL,GAAiBjP,UAAU,CAACkP,SAAX,CAAqB,YAAW;AAC/CvU,cAAAA,IAAI,CAACwJ,QAAL,CAAc,IAAd;AACD,aAFgB,CAAjB;;AAGA,gBAAI;AACF;AACA,mBAAKyS,GAAL,CAASzH,IAAT,CAAcxE,MAAd,EAAsB1I,GAAtB;;AACA,kBAAI,KAAKmC,OAAT,EAAkB;AAChB,qBAAKwS,GAAL,CAASxS,OAAT,GAAmB,KAAKA,OAAxB;AACD;;AACD,mBAAKwS,GAAL,CAASjX,IAAT,CAAcwJ,OAAd;AACD,aAPD,CAOE,OAAOuC,CAAP,EAAU;AACV,mBAAKoL,MAAL;AACD;AACF,WAtCD;;AAwCAH,UAAAA,SAAS,CAACpa,SAAV,CAAoBua,MAApB,GAA6B,YAAW;AACtC,iBAAK5Z,IAAL,CAAU,QAAV,EAAoB,CAApB,EAAuB,EAAvB;;AACA,iBAAKiH,QAAL,CAAc,KAAd;AACD,WAHD;;AAKAwS,UAAAA,SAAS,CAACpa,SAAV,CAAoB4H,QAApB,GAA+B,UAAS0L,KAAT,EAAgB;AAC7C1P,YAAAA,KAAK,CAAC,SAAD,EAAY0P,KAAZ,CAAL;;AACA,gBAAI,CAAC,KAAK+G,GAAV,EAAe;AACb;AACD;;AACD,iBAAKpa,kBAAL;AACAwD,YAAAA,UAAU,CAAC8P,SAAX,CAAqB,KAAKb,SAA1B;AAEA,iBAAK2H,GAAL,CAASxH,SAAT,GAAqB,KAAKwH,GAAL,CAASpN,OAAT,GAAmB,KAAKoN,GAAL,CAASG,UAAT,GAAsB,KAAKH,GAAL,CAASjC,MAAT,GAAkB,IAAhF;;AACA,gBAAI9E,KAAJ,EAAW;AACT,kBAAI;AACF,qBAAK+G,GAAL,CAAS/G,KAAT;AACD,eAFD,CAEE,OAAOnE,CAAP,EAAU,CACV;AACD;AACF;;AACD,iBAAKuD,SAAL,GAAiB,KAAK2H,GAAL,GAAW,IAA5B;AACD,WAjBD;;AAmBAD,UAAAA,SAAS,CAACpa,SAAV,CAAoBsD,KAApB,GAA4B,YAAW;AACrCM,YAAAA,KAAK,CAAC,OAAD,CAAL;;AACA,iBAAKgE,QAAL,CAAc,IAAd;AACD,WAHD,CA/FuC,CAoGvC;;;AACAwS,UAAAA,SAAS,CAACrT,OAAV,GAAoB,CAAC,EAAE5I,MAAM,CAACmc,cAAP,IAAyBhS,OAAO,CAACsC,SAAR,EAA3B,CAArB;AAEA9M,UAAAA,MAAM,CAACD,OAAP,GAAiBuc,SAAjB;AAEC,SAzG0B,EAyGxBjb,IAzGwB,CAyGnB,IAzGmB;AAyGb,OAzGd,EAyGgBA,IAzGhB,CAyGqB,IAzGrB,EAyG0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAzG1B,EAyGsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAzG7J;AA2GC,KA5G+D,EA4G9D;AAAC,6BAAsB,EAAvB;AAA0B,2BAAoB,EAA9C;AAAiD,yBAAkB,EAAnE;AAAsE,eAAQ,EAA9E;AAAiF,gBAAS,CAA1F;AAA4F,kBAAW;AAAvG,KA5G8D,CA9rF0vB;AA0yF5sB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAClJ;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACI4b,SAAS,GAAG5b,OAAO,CAAC,eAAD,CADvB;;AAIA,eAASqV,aAAT,CAAuB9F,MAAvB,EAA+B1I,GAA/B,EAAoCkH,OAApC,EAA6C0F,IAA7C,EAAmD;AACjDmI,QAAAA,SAAS,CAACtb,IAAV,CAAe,IAAf,EAAqBiP,MAArB,EAA6B1I,GAA7B,EAAkCkH,OAAlC,EAA2C0F,IAA3C;AACD;;AAED9S,MAAAA,QAAQ,CAAC0U,aAAD,EAAgBuG,SAAhB,CAAR;AAEAvG,MAAAA,aAAa,CAACnN,OAAd,GAAwB0T,SAAS,CAAC1T,OAAV,IAAqB0T,SAAS,CAAC1H,YAAvD;AAEAjV,MAAAA,MAAM,CAACD,OAAP,GAAiBqW,aAAjB;AAEC,KAjBgH,EAiB/G;AAAC,uBAAgB,EAAjB;AAAoB,kBAAW;AAA/B,KAjB+G,CA1yFysB;AA2zFpxB,QAAG,CAAC,UAASrV,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1E;;AAEA,UAAIkC,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAArC;AAAA,UACIP,QAAQ,GAAGX,OAAO,CAAC,UAAD,CADtB;;AAIA,eAASsI,OAAT,GAAmD;AACjD,YAAI/I,IAAI,GAAG,IAAX;AACA2B,QAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AAEA,aAAKub,EAAL,GAAUpb,UAAU,CAAC,YAAW;AAC9BlB,UAAAA,IAAI,CAACuC,IAAL,CAAU,QAAV,EAAoB,GAApB,EAAyB,IAAzB;AACD,SAFmB,EAEjBwG,OAAO,CAACU,OAFS,CAApB;AAGD;;AAEDrI,MAAAA,QAAQ,CAAC2H,OAAD,EAAUpH,YAAV,CAAR;;AAEAoH,MAAAA,OAAO,CAACnH,SAAR,CAAkBsD,KAAlB,GAA0B,YAAW;AACnCwE,QAAAA,YAAY,CAAC,KAAK4S,EAAN,CAAZ;AACD,OAFD;;AAIAvT,MAAAA,OAAO,CAACU,OAAR,GAAkB,IAAlB;AAEA/J,MAAAA,MAAM,CAACD,OAAP,GAAiBsJ,OAAjB;AAEC,KA1BwC,EA0BvC;AAAC,gBAAS,CAAV;AAAY,kBAAW;AAAvB,KA1BuC,CA3zFixB;AAq1F5xB,QAAG,CAAC,UAAStI,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAClE;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACI4b,SAAS,GAAG5b,OAAO,CAAC,eAAD,CADvB;;AAIA,eAASsH,cAAT,CAAwBiI,MAAxB,EAAgC1I,GAAhC,EAAqCkH;AAAQ;AAA7C,QAA0D;AACxD6N,QAAAA,SAAS,CAACtb,IAAV,CAAe,IAAf,EAAqBiP,MAArB,EAA6B1I,GAA7B,EAAkCkH,OAAlC,EAA2C;AACzCkG,UAAAA,aAAa,EAAE;AAD0B,SAA3C;AAGD;;AAEDtT,MAAAA,QAAQ,CAAC2G,cAAD,EAAiBsU,SAAjB,CAAR;AAEAtU,MAAAA,cAAc,CAACY,OAAf,GAAyB0T,SAAS,CAAC1T,OAAnC;AAEAjJ,MAAAA,MAAM,CAACD,OAAP,GAAiBsI,cAAjB;AAEC,KAnBgC,EAmB/B;AAAC,uBAAgB,EAAjB;AAAoB,kBAAW;AAA/B,KAnB+B,CAr1FyxB;AAw2FpxB,QAAG,CAAC,UAAStH,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1E,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI+C,KAAK,GAAGzH,OAAO,CAAC,gBAAD,CAAnB;AAAA,cACI2E,QAAQ,GAAG3E,OAAO,CAAC,cAAD,CADtB;AAAA,cAEIW,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAFtB;AAAA,cAGIkB,YAAY,GAAGlB,OAAO,CAAC,QAAD,CAAP,CAAkBkB,YAHrC;AAAA,cAII4a,eAAe,GAAG9b,OAAO,CAAC,oBAAD,CAJ7B;;AAOA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,yBAAjB,CAAR;AACD;;AAED,mBAAS+b,kBAAT,CAA4BzV,QAA5B,EAAsC0V,MAAtC,EAA8CnS,OAA9C,EAAuD;AACrD,gBAAI,CAACkS,kBAAkB,CAAC7T,OAAnB,EAAL,EAAmC;AACjC,oBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AAEDe,YAAAA,YAAY,CAACZ,IAAb,CAAkB,IAAlB;AACAyE,YAAAA,KAAK,CAAC,aAAD,EAAgBuB,QAAhB,CAAL;AAEA,gBAAI/G,IAAI,GAAG,IAAX;AACA,gBAAIsH,GAAG,GAAGlC,QAAQ,CAACkE,OAAT,CAAiBvC,QAAjB,EAA2B,YAA3B,CAAV;;AACA,gBAAIO,GAAG,CAACvD,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,OAAxB,EAAiC;AAC/BuD,cAAAA,GAAG,GAAG,QAAQA,GAAG,CAACvD,KAAJ,CAAU,CAAV,CAAd;AACD,aAFD,MAEO;AACLuD,cAAAA,GAAG,GAAG,OAAOA,GAAG,CAACvD,KAAJ,CAAU,CAAV,CAAb;AACD;;AACD,iBAAKuD,GAAL,GAAWA,GAAX;AAEA,iBAAKoV,EAAL,GAAU,IAAIH,eAAJ,CAAoB,KAAKjV,GAAzB,EAA8B,EAA9B,EAAkCgD,OAAlC,CAAV;;AACA,iBAAKoS,EAAL,CAAQ/N,SAAR,GAAoB,UAASxO,CAAT,EAAY;AAC9BqF,cAAAA,KAAK,CAAC,eAAD,EAAkBrF,CAAC,CAACgE,IAApB,CAAL;AACAnE,cAAAA,IAAI,CAACuC,IAAL,CAAU,SAAV,EAAqBpC,CAAC,CAACgE,IAAvB;AACD,aAHD,CAlBqD,CAsBrD;AACA;AACA;AACA;AACA;AACA;;;AACA,iBAAKmQ,SAAL,GAAiBpM,KAAK,CAACqM,SAAN,CAAgB,YAAW;AAC1C/O,cAAAA,KAAK,CAAC,QAAD,CAAL;AACAxF,cAAAA,IAAI,CAAC0c,EAAL,CAAQxX,KAAR;AACD,aAHgB,CAAjB;;AAIA,iBAAKwX,EAAL,CAAQ9N,OAAR,GAAkB,UAASzO,CAAT,EAAY;AAC5BqF,cAAAA,KAAK,CAAC,aAAD,EAAgBrF,CAAC,CAACU,IAAlB,EAAwBV,CAAC,CAACsB,MAA1B,CAAL;AACAzB,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmBpC,CAAC,CAACU,IAArB,EAA2BV,CAAC,CAACsB,MAA7B;;AACAzB,cAAAA,IAAI,CAACwJ,QAAL;AACD,aAJD;;AAKA,iBAAKkT,EAAL,CAAQ7N,OAAR,GAAkB,UAAS1O,CAAT,EAAY;AAC5BqF,cAAAA,KAAK,CAAC,aAAD,EAAgBrF,CAAhB,CAAL;AACAH,cAAAA,IAAI,CAACuC,IAAL,CAAU,OAAV,EAAmB,IAAnB,EAAyB,6BAAzB;;AACAvC,cAAAA,IAAI,CAACwJ,QAAL;AACD,aAJD;AAKD;;AAEDpI,UAAAA,QAAQ,CAACob,kBAAD,EAAqB7a,YAArB,CAAR;;AAEA6a,UAAAA,kBAAkB,CAAC5a,SAAnB,CAA6BoD,IAA7B,GAAoC,UAASb,IAAT,EAAe;AACjD,gBAAIoE,GAAG,GAAG,MAAMpE,IAAN,GAAa,GAAvB;AACAqB,YAAAA,KAAK,CAAC,MAAD,EAAS+C,GAAT,CAAL;AACA,iBAAKmU,EAAL,CAAQ1X,IAAR,CAAauD,GAAb;AACD,WAJD;;AAMAiU,UAAAA,kBAAkB,CAAC5a,SAAnB,CAA6BsD,KAA7B,GAAqC,YAAW;AAC9CM,YAAAA,KAAK,CAAC,OAAD,CAAL;AACA,gBAAIkX,EAAE,GAAG,KAAKA,EAAd;;AACA,iBAAKlT,QAAL;;AACA,gBAAIkT,EAAJ,EAAQ;AACNA,cAAAA,EAAE,CAACxX,KAAH;AACD;AACF,WAPD;;AASAsX,UAAAA,kBAAkB,CAAC5a,SAAnB,CAA6B4H,QAA7B,GAAwC,YAAW;AACjDhE,YAAAA,KAAK,CAAC,UAAD,CAAL;AACA,gBAAIkX,EAAE,GAAG,KAAKA,EAAd;;AACA,gBAAIA,EAAJ,EAAQ;AACNA,cAAAA,EAAE,CAAC/N,SAAH,GAAe+N,EAAE,CAAC9N,OAAH,GAAa8N,EAAE,CAAC7N,OAAH,GAAa,IAAzC;AACD;;AACD3G,YAAAA,KAAK,CAACiN,SAAN,CAAgB,KAAKb,SAArB;AACA,iBAAKA,SAAL,GAAiB,KAAKoI,EAAL,GAAU,IAA3B;AACA,iBAAK7a,kBAAL;AACD,WATD;;AAWA2a,UAAAA,kBAAkB,CAAC7T,OAAnB,GAA6B,YAAW;AACtCnD,YAAAA,KAAK,CAAC,SAAD,CAAL;AACA,mBAAO,CAAC,CAAC+W,eAAT;AACD,WAHD;;AAIAC,UAAAA,kBAAkB,CAACxW,aAAnB,GAAmC,WAAnC,CA3FgC,CA6FhC;AACA;AACA;AACA;;AACAwW,UAAAA,kBAAkB,CAACtO,UAAnB,GAAgC,CAAhC;AAEAxO,UAAAA,MAAM,CAACD,OAAP,GAAiB+c,kBAAjB;AAEC,SArGmB,EAqGjBzb,IArGiB,CAqGZ,IArGY;AAqGN,OArGd,EAqGgBA,IArGhB,CAqGqB,IArGrB,EAqG0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OArG1B;AAuGC,KAxGwC,EAwGvC;AAAC,wBAAiB,EAAlB;AAAqB,sBAAe,EAApC;AAAuC,4BAAqB,EAA5D;AAA+D,eAAQ,EAAvE;AAA0E,gBAAS,CAAnF;AAAqF,kBAAW;AAAhG,KAxGuC,CAx2FixB;AAg9FntB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC3I;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CADhC;AAAA,UAEIkc,qBAAqB,GAAGlc,OAAO,CAAC,iBAAD,CAFnC;AAAA,UAGIsa,WAAW,GAAGta,OAAO,CAAC,gBAAD,CAHzB;AAAA,UAIIub,SAAS,GAAGvb,OAAO,CAAC,cAAD,CAJvB;;AAOA,eAASmc,mBAAT,CAA6B7V,QAA7B,EAAuC;AACrC,YAAI,CAACiV,SAAS,CAACrT,OAAf,EAAwB;AACtB,gBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDgV,QAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,MAAxC,EAAgDgU,WAAhD,EAA6DiB,SAA7D;AACD;;AAED5a,MAAAA,QAAQ,CAACwb,mBAAD,EAAsBhH,kBAAtB,CAAR;AAEAgH,MAAAA,mBAAmB,CAACjU,OAApB,GAA8BgU,qBAAqB,CAAChU,OAApD;AACAiU,MAAAA,mBAAmB,CAAC5W,aAApB,GAAoC,aAApC;AACA4W,MAAAA,mBAAmB,CAAC1O,UAApB,GAAiC,CAAjC,CArB2I,CAqBvG;;AAEpCxO,MAAAA,MAAM,CAACD,OAAP,GAAiBmd,mBAAjB;AAEC,KAzByG,EAyBxG;AAAC,0BAAmB,EAApB;AAAuB,wBAAiB,EAAxC;AAA2C,sBAAe,EAA1D;AAA6D,yBAAkB,EAA/E;AAAkF,kBAAW;AAA7F,KAzBwG,CAh9FgtB;AAy+FttB,QAAG,CAAC,UAASnc,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACxI;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CADhC;AAAA,UAEIsa,WAAW,GAAGta,OAAO,CAAC,gBAAD,CAFzB;AAAA,UAGIub,SAAS,GAAGvb,OAAO,CAAC,cAAD,CAHvB,CAHwI,CASxI;AACA;AACA;;;AAEA,eAASkc,qBAAT,CAA+B5V,QAA/B,EAAyC;AACvC,YAAI,CAACiV,SAAS,CAACrT,OAAf,EAAwB;AACtB,gBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDgV,QAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,gBAAxC,EAA0DgU,WAA1D,EAAuEiB,SAAvE;AACD;;AAED5a,MAAAA,QAAQ,CAACub,qBAAD,EAAwB/G,kBAAxB,CAAR;;AAEA+G,MAAAA,qBAAqB,CAAChU,OAAtB,GAAgC,UAASf,IAAT,EAAe;AAC7C,YAAIA,IAAI,CAACiV,aAAL,IAAsBjV,IAAI,CAAC2E,UAA/B,EAA2C;AACzC,iBAAO,KAAP;AACD;;AACD,eAAOyP,SAAS,CAACrT,OAAV,IAAqBf,IAAI,CAACyB,UAAjC;AACD,OALD;;AAOAsT,MAAAA,qBAAqB,CAAC3W,aAAtB,GAAsC,eAAtC;AACA2W,MAAAA,qBAAqB,CAACzO,UAAtB,GAAmC,CAAnC,CA9BwI,CA8BlG;;AAEtCxO,MAAAA,MAAM,CAACD,OAAP,GAAiBkd,qBAAjB;AAEC,KAlCsG,EAkCrG;AAAC,0BAAmB,EAApB;AAAuB,wBAAiB,EAAxC;AAA2C,sBAAe,EAA1D;AAA6D,kBAAW;AAAxE,KAlCqG,CAz+FmtB;AA2gG3uB,QAAG,CAAC,UAASlc,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACnH;;AAEA,UAAI2B,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,UACImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CADhC;AAAA,UAEIsa,WAAW,GAAGta,OAAO,CAAC,gBAAD,CAFzB;AAAA,UAGIqV,aAAa,GAAGrV,OAAO,CAAC,mBAAD,CAH3B;AAAA,UAIIsH,cAAc,GAAGtH,OAAO,CAAC,oBAAD,CAJ5B;;AAOA,eAASqc,mBAAT,CAA6B/V,QAA7B,EAAuC;AACrC,YAAI,CAACgB,cAAc,CAACY,OAAhB,IAA2B,CAACmN,aAAa,CAACnN,OAA9C,EAAuD;AACrD,gBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDgV,QAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,MAAxC,EAAgDgU,WAAhD,EAA6DjF,aAA7D;AACD;;AAED1U,MAAAA,QAAQ,CAAC0b,mBAAD,EAAsBlH,kBAAtB,CAAR;;AAEAkH,MAAAA,mBAAmB,CAACnU,OAApB,GAA8B,UAASf,IAAT,EAAe;AAC3C,YAAIA,IAAI,CAAC2E,UAAT,EAAqB;AACnB,iBAAO,KAAP;AACD;;AAED,YAAIxE,cAAc,CAACY,OAAf,IAA0Bf,IAAI,CAACwB,UAAnC,EAA+C;AAC7C,iBAAO,IAAP;AACD;;AACD,eAAO0M,aAAa,CAACnN,OAArB;AACD,OATD;;AAWAmU,MAAAA,mBAAmB,CAAC9W,aAApB,GAAoC,aAApC;AACA8W,MAAAA,mBAAmB,CAAC5O,UAApB,GAAiC,CAAjC,CA/BmH,CA+B/E;;AAEpCxO,MAAAA,MAAM,CAACD,OAAP,GAAiBqd,mBAAjB;AAEC,KAnCiF,EAmChF;AAAC,0BAAmB,EAApB;AAAuB,wBAAiB,EAAxC;AAA2C,2BAAoB,EAA/D;AAAkE,4BAAqB,EAAvF;AAA0F,kBAAW;AAArG,KAnCgF,CA3gGwuB;AA8iG9sB,QAAG,CAAC,UAASrc,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAChJ,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIqB,QAAQ,GAAGX,OAAO,CAAC,UAAD,CAAtB;AAAA,cACImV,kBAAkB,GAAGnV,OAAO,CAAC,kBAAD,CADhC;AAAA,cAEIsa,WAAW,GAAGta,OAAO,CAAC,gBAAD,CAFzB;AAAA,cAGIqV,aAAa,GAAGrV,OAAO,CAAC,mBAAD,CAH3B;AAAA,cAIIsH,cAAc,GAAGtH,OAAO,CAAC,oBAAD,CAJ5B;AAAA,cAKIyJ,OAAO,GAAGzJ,OAAO,CAAC,kBAAD,CALrB;;AAQA,mBAASsc,qBAAT,CAA+BhW,QAA/B,EAAyC;AACvC,gBAAI,CAACgB,cAAc,CAACY,OAAhB,IAA2B,CAACmN,aAAa,CAACnN,OAA9C,EAAuD;AACrD,oBAAM,IAAI/H,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDgV,YAAAA,kBAAkB,CAAC7U,IAAnB,CAAwB,IAAxB,EAA8BgG,QAA9B,EAAwC,gBAAxC,EAA0DgU,WAA1D,EAAuEjF,aAAvE;AACD;;AAED1U,UAAAA,QAAQ,CAAC2b,qBAAD,EAAwBnH,kBAAxB,CAAR;;AAEAmH,UAAAA,qBAAqB,CAACpU,OAAtB,GAAgC,UAASf,IAAT,EAAe;AAC7C,gBAAIA,IAAI,CAAC2E,UAAT,EAAqB;AACnB,qBAAO,KAAP;AACD,aAH4C,CAI7C;AACA;;;AACA,gBAAIrC,OAAO,CAACwQ,OAAR,EAAJ,EAAuB;AACrB,qBAAO,KAAP;AACD;;AAED,mBAAO5E,aAAa,CAACnN,OAArB;AACD,WAXD;;AAaAoU,UAAAA,qBAAqB,CAAC/W,aAAtB,GAAsC,eAAtC;AACA+W,UAAAA,qBAAqB,CAAC7O,UAAtB,GAAmC,CAAnC,CAlC+B,CAkCO;AAEtC;AACA;AACA;;AACA6O,UAAAA,qBAAqB,CAAClP,QAAtB,GAAiC,CAAC,CAAC9N,MAAM,CAAC0I,QAA1C;AAEA/I,UAAAA,MAAM,CAACD,OAAP,GAAiBsd,qBAAjB;AAEC,SA3CkB,EA2ChBhc,IA3CgB,CA2CX,IA3CW;AA2CL,OA3Cd,EA2CgBA,IA3ChB,CA2CqB,IA3CrB,EA2C0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EA3CjJ;AA6CC,KA9C8G,EA8C7G;AAAC,0BAAmB,EAApB;AAAuB,0BAAmB,EAA1C;AAA6C,wBAAiB,EAA9D;AAAiE,2BAAoB,EAArF;AAAwF,4BAAqB,EAA7G;AAAgH,kBAAW;AAA3H,KA9C6G,CA9iG2sB;AA4lGxrB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACtK,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIA,MAAM,CAACid,MAAP,IAAiBjd,MAAM,CAACid,MAAP,CAAcC,eAAnC,EAAoD;AAClDvd,YAAAA,MAAM,CAACD,OAAP,CAAeyd,WAAf,GAA6B,UAASlc,MAAT,EAAiB;AAC5C,kBAAImc,KAAK,GAAG,IAAIC,UAAJ,CAAepc,MAAf,CAAZ;AACAjB,cAAAA,MAAM,CAACid,MAAP,CAAcC,eAAd,CAA8BE,KAA9B;AACA,qBAAOA,KAAP;AACD,aAJD;AAKD,WAND,MAMO;AACLzd,YAAAA,MAAM,CAACD,OAAP,CAAeyd,WAAf,GAA6B,UAASlc,MAAT,EAAiB;AAC5C,kBAAImc,KAAK,GAAG,IAAIxa,KAAJ,CAAU3B,MAAV,CAAZ;;AACA,mBAAK,IAAIT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,MAApB,EAA4BT,CAAC,EAA7B,EAAiC;AAC/B4c,gBAAAA,KAAK,CAAC5c,CAAD,CAAL,GAAWyN,IAAI,CAAC4C,KAAL,CAAW5C,IAAI,CAAChE,MAAL,KAAgB,GAA3B,CAAX;AACD;;AACD,qBAAOmT,KAAP;AACD,aAND;AAOD;AAEA,SAnBkB,EAmBhBpc,IAnBgB,CAmBX,IAnBW;AAmBL,OAnBd,EAmBgBA,IAnBhB,CAmBqB,IAnBrB,EAmB0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAnBjJ;AAqBC,KAtBoI,EAsBnI,EAtBmI,CA5lGqrB;AAknGpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEAL,UAAAA,MAAM,CAACD,OAAP,GAAiB;AACfib,YAAAA,OAAO,EAAE,YAAW;AAClB,qBAAO3a,MAAM,CAACsd,SAAP,IACL,SAAS3J,IAAT,CAAc3T,MAAM,CAACsd,SAAP,CAAiBC,SAA/B,CADF;AAED,aAJc;AAMfC,YAAAA,WAAW,EAAE,YAAW;AACtB,qBAAOxd,MAAM,CAACsd,SAAP,IACL,aAAa3J,IAAb,CAAkB3T,MAAM,CAACsd,SAAP,CAAiBC,SAAnC,CADF;AAED,aATc,CAWf;AAXe;AAYf9Q,YAAAA,SAAS,EAAE,YAAY;AACrB;AACA,kBAAI,CAACzM,MAAM,CAAC0I,QAAZ,EAAsB;AACpB,uBAAO,IAAP;AACD;;AAED,kBAAI;AACF,uBAAO,CAAC,CAAC1I,MAAM,CAAC0I,QAAP,CAAgB+U,MAAzB;AACD,eAFD,CAEE,OAAOrd,CAAP,EAAU;AACV,uBAAO,KAAP;AACD;AACF;AAvBc,WAAjB;AA0BC,SA7BkB,EA6BhBY,IA7BgB,CA6BX,IA7BW;AA6BL,OA7Bd,EA6BgBA,IA7BhB,CA6BqB,IA7BrB,EA6B0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EA7BjJ;AA+BC,KAhCQ,EAgCP,EAhCO,CAlnGizB;AAkpGpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,mBAD0C,CAG1C;AACA;AACA;;AACA,UAAIge,cAAc,GAAG,y/BAArB;AAAA,UACIC,WADJ,CAN0C,CAS1C;AACA;;AACA,UAAIC,YAAY,GAAG,UAASC,SAAT,EAAoB;AACrC,YAAIrd,CAAJ;AACA,YAAIsd,QAAQ,GAAG,EAAf;AACA,YAAIrd,CAAC,GAAG,EAAR;;AACA,aAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAhB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1BC,UAAAA,CAAC,CAACgR,IAAF,CAAQpC,MAAM,CAAC0O,YAAP,CAAoBvd,CAApB,CAAR;AACD;;AACDqd,QAAAA,SAAS,CAACtK,SAAV,GAAsB,CAAtB;AACA9S,QAAAA,CAAC,CAACiR,IAAF,CAAO,EAAP,EAAWpF,OAAX,CAAmBuR,SAAnB,EAA8B,UAASjd,CAAT,EAAY;AACxCkd,UAAAA,QAAQ,CAAEld,CAAF,CAAR,GAAgB,QAAQ,CAAC,SAASA,CAAC,CAACod,UAAF,CAAa,CAAb,EAAgBxO,QAAhB,CAAyB,EAAzB,CAAV,EAAwCxL,KAAxC,CAA8C,CAAC,CAA/C,CAAxB;AACA,iBAAO,EAAP;AACD,SAHD;AAIA6Z,QAAAA,SAAS,CAACtK,SAAV,GAAsB,CAAtB;AACA,eAAOuK,QAAP;AACD,OAdD,CAX0C,CA2B1C;AACA;AACA;;;AACAne,MAAAA,MAAM,CAACD,OAAP,GAAiB;AACfuN,QAAAA,KAAK,EAAE,UAAS7B,MAAT,EAAiB;AACtB,cAAI6S,MAAM,GAAGpZ,IAAI,CAACC,SAAL,CAAesG,MAAf,CAAb,CADsB,CAGtB;;AACAsS,UAAAA,cAAc,CAACnK,SAAf,GAA2B,CAA3B;;AACA,cAAI,CAACmK,cAAc,CAAC/J,IAAf,CAAoBsK,MAApB,CAAL,EAAkC;AAChC,mBAAOA,MAAP;AACD;;AAED,cAAI,CAACN,WAAL,EAAkB;AAChBA,YAAAA,WAAW,GAAGC,YAAY,CAACF,cAAD,CAA1B;AACD;;AAED,iBAAOO,MAAM,CAAC3R,OAAP,CAAeoR,cAAf,EAA+B,UAAS9c,CAAT,EAAY;AAChD,mBAAO+c,WAAW,CAAC/c,CAAD,CAAlB;AACD,WAFM,CAAP;AAGD;AAjBc,OAAjB;AAoBC,KAlDQ,EAkDP,EAlDO,CAlpGizB;AAosGpzB,QAAG,CAAC,UAASF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIiK,MAAM,GAAGvJ,OAAO,CAAC,UAAD,CAApB;;AAEA,cAAIwd,QAAQ,GAAG,EAAf;AAAA,cACIC,WAAW,GAAG,KADlB,CAEI;AAFJ;AAAA,cAGIC,mBAAmB,GAAGpe,MAAM,CAACqe,MAAP,IAAiBre,MAAM,CAACqe,MAAP,CAAcC,GAA/B,IAAsCte,MAAM,CAACqe,MAAP,CAAcC,GAAd,CAAkBC,OAHlF;AAMA5e,UAAAA,MAAM,CAACD,OAAP,GAAiB;AACf0H,YAAAA,WAAW,EAAE,UAASlD,KAAT,EAAgBhC,QAAhB,EAA0B;AACrC,kBAAI,OAAOlC,MAAM,CAAC+C,gBAAd,KAAmC,WAAvC,EAAoD;AAClD/C,gBAAAA,MAAM,CAAC+C,gBAAP,CAAwBmB,KAAxB,EAA+BhC,QAA/B,EAAyC,KAAzC;AACD,eAFD,MAEO,IAAIlC,MAAM,CAAC0I,QAAP,IAAmB1I,MAAM,CAACoH,WAA9B,EAA2C;AAChD;AACA;AACA;AACApH,gBAAAA,MAAM,CAAC0I,QAAP,CAAgBtB,WAAhB,CAA4B,OAAOlD,KAAnC,EAA0ChC,QAA1C,EAJgD,CAKhD;;AACAlC,gBAAAA,MAAM,CAACoH,WAAP,CAAmB,OAAOlD,KAA1B,EAAiChC,QAAjC;AACD;AACF,aAZc;AAcfuU,YAAAA,WAAW,EAAE,UAASvS,KAAT,EAAgBhC,QAAhB,EAA0B;AACrC,kBAAI,OAAOlC,MAAM,CAAC+C,gBAAd,KAAmC,WAAvC,EAAoD;AAClD/C,gBAAAA,MAAM,CAACgD,mBAAP,CAA2BkB,KAA3B,EAAkChC,QAAlC,EAA4C,KAA5C;AACD,eAFD,MAEO,IAAIlC,MAAM,CAAC0I,QAAP,IAAmB1I,MAAM,CAACyW,WAA9B,EAA2C;AAChDzW,gBAAAA,MAAM,CAAC0I,QAAP,CAAgB+N,WAAhB,CAA4B,OAAOvS,KAAnC,EAA0ChC,QAA1C;AACAlC,gBAAAA,MAAM,CAACyW,WAAP,CAAmB,OAAOvS,KAA1B,EAAiChC,QAAjC;AACD;AACF,aArBc;AAuBfsS,YAAAA,SAAS,EAAE,UAAStS,QAAT,EAAmB;AAC5B,kBAAIkc,mBAAJ,EAAyB;AACvB,uBAAO,IAAP;AACD;;AAED,kBAAII,GAAG,GAAGvU,MAAM,CAACmB,MAAP,CAAc,CAAd,CAAV;AACA8S,cAAAA,QAAQ,CAACM,GAAD,CAAR,GAAgBtc,QAAhB;;AACA,kBAAIic,WAAJ,EAAiB;AACfhd,gBAAAA,UAAU,CAAC,KAAKsd,sBAAN,EAA8B,CAA9B,CAAV;AACD;;AACD,qBAAOD,GAAP;AACD,aAlCc;AAoCfpJ,YAAAA,SAAS,EAAE,UAASoJ,GAAT,EAAc;AACvB,kBAAIA,GAAG,IAAIN,QAAX,EAAqB;AACnB,uBAAOA,QAAQ,CAACM,GAAD,CAAf;AACD;AACF,aAxCc;AA0CfC,YAAAA,sBAAsB,EAAE,YAAW;AACjC,mBAAK,IAAID,GAAT,IAAgBN,QAAhB,EAA0B;AACxBA,gBAAAA,QAAQ,CAACM,GAAD,CAAR;AACA,uBAAON,QAAQ,CAACM,GAAD,CAAf;AACD;AACF;AA/Cc,WAAjB;;AAkDA,cAAIE,eAAe,GAAG,YAAW;AAC/B,gBAAIP,WAAJ,EAAiB;AACf;AACD;;AACDA,YAAAA,WAAW,GAAG,IAAd;AACAxe,YAAAA,MAAM,CAACD,OAAP,CAAe+e,sBAAf;AACD,WAND,CA7D+B,CAqE/B;AACA;;;AACA,cAAI,CAACL,mBAAL,EAA0B;AACxBze,YAAAA,MAAM,CAACD,OAAP,CAAe0H,WAAf,CAA2B,QAA3B,EAAqCsX,eAArC;AACD;AAEA,SA3EkB,EA2EhB1d,IA3EgB,CA2EX,IA3EW;AA2EL,OA3Ed,EA2EgBA,IA3EhB,CA2EqB,IA3ErB,EA2E0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EA3EjJ;AA6EC,KA9EQ,EA8EP;AAAC,kBAAW;AAAZ,KA9EO,CApsGizB;AAkxGvyB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACvD,OAAC,UAAU0F,OAAV,EAAkBpF,MAAlB,EAAyB;AAAC,SAAC,YAAW;AACvC;;AAEA,cAAIsF,UAAU,GAAG5E,OAAO,CAAC,SAAD,CAAxB;AAAA,cACIyJ,OAAO,GAAGzJ,OAAO,CAAC,WAAD,CADrB;;AAIA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,4BAAjB,CAAR;AACD;;AAEDf,UAAAA,MAAM,CAACD,OAAP,GAAiB;AACfsZ,YAAAA,OAAO,EAAE,KADM;AAEf3S,YAAAA,eAAe,EAAE,IAFF;AAIfwS,YAAAA,sBAAsB,EAAE,YAAW;AACjC,kBAAI,EAAElZ,MAAM,CAACD,OAAP,CAAesZ,OAAf,IAA0BhZ,MAA5B,CAAJ,EAAyC;AACvCA,gBAAAA,MAAM,CAACL,MAAM,CAACD,OAAP,CAAesZ,OAAhB,CAAN,GAAiC,EAAjC;AACD;AACF,aARc;AAUfpU,YAAAA,WAAW,EAAE,UAAS7C,IAAT,EAAeqC,IAAf,EAAqB;AAChC,kBAAIpE,MAAM,CAACyG,MAAP,KAAkBzG,MAAtB,EAA8B;AAC5BA,gBAAAA,MAAM,CAACyG,MAAP,CAAc7B,WAAd,CAA0BC,IAAI,CAACC,SAAL,CAAe;AACvCgC,kBAAAA,QAAQ,EAAEnH,MAAM,CAACD,OAAP,CAAe2G,eADc;AAEvCtE,kBAAAA,IAAI,EAAEA,IAFiC;AAGvCqC,kBAAAA,IAAI,EAAEA,IAAI,IAAI;AAHyB,iBAAf,CAA1B,EAII,GAJJ;AAKD,eAND,MAMO;AACLqB,gBAAAA,KAAK,CAAC,uCAAD,EAA0C1D,IAA1C,EAAgDqC,IAAhD,CAAL;AACD;AACF,aApBc;AAsBfkS,YAAAA,YAAY,EAAE,UAASF,SAAT,EAAoBuI,aAApB,EAAmC;AAC/C,kBAAIrD,MAAM,GAAGtb,MAAM,CAAC0I,QAAP,CAAgB4R,aAAhB,CAA8B,QAA9B,CAAb;AACA,kBAAIrC,IAAJ,EAAU1D,SAAV;;AACA,kBAAIqK,QAAQ,GAAG,YAAW;AACxBnZ,gBAAAA,KAAK,CAAC,UAAD,CAAL;AACAkE,gBAAAA,YAAY,CAACsO,IAAD,CAAZ,CAFwB,CAGxB;;AACA,oBAAI;AACFqD,kBAAAA,MAAM,CAACrB,MAAP,GAAgB,IAAhB;AACD,iBAFD,CAEE,OAAOjJ,CAAP,EAAU,CACV;AACD;;AACDsK,gBAAAA,MAAM,CAACxM,OAAP,GAAiB,IAAjB;AACD,eAVD;;AAWA,kBAAI4H,OAAO,GAAG,YAAW;AACvBjR,gBAAAA,KAAK,CAAC,SAAD,CAAL;;AACA,oBAAI6V,MAAJ,EAAY;AACVsD,kBAAAA,QAAQ,GADE,CAEV;AACA;AACA;;AACAzd,kBAAAA,UAAU,CAAC,YAAW;AACpB,wBAAIma,MAAJ,EAAY;AACVA,sBAAAA,MAAM,CAACxB,UAAP,CAAkBC,WAAlB,CAA8BuB,MAA9B;AACD;;AACDA,oBAAAA,MAAM,GAAG,IAAT;AACD,mBALS,EAKP,CALO,CAAV;AAMAhW,kBAAAA,UAAU,CAAC8P,SAAX,CAAqBb,SAArB;AACD;AACF,eAfD;;AAgBA,kBAAIzF,OAAO,GAAG,UAAS0I,GAAT,EAAc;AAC1B/R,gBAAAA,KAAK,CAAC,SAAD,EAAY+R,GAAZ,CAAL;;AACA,oBAAI8D,MAAJ,EAAY;AACV5E,kBAAAA,OAAO;AACPiI,kBAAAA,aAAa,CAACnH,GAAD,CAAb;AACD;AACF,eAND;;AAOA,kBAAIX,IAAI,GAAG,UAASrO,GAAT,EAAc9B,MAAd,EAAsB;AAC/BjB,gBAAAA,KAAK,CAAC,MAAD,EAAS+C,GAAT,EAAc9B,MAAd,CAAL;AACAvF,gBAAAA,UAAU,CAAC,YAAW;AACpB,sBAAI;AACF;AACA;AACA,wBAAIma,MAAM,IAAIA,MAAM,CAACuD,aAArB,EAAoC;AAClCvD,sBAAAA,MAAM,CAACuD,aAAP,CAAqBja,WAArB,CAAiC4D,GAAjC,EAAsC9B,MAAtC;AACD;AACF,mBAND,CAME,OAAOsK,CAAP,EAAU,CACV;AACD;AACF,iBAVS,EAUP,CAVO,CAAV;AAWD,eAbD;;AAeAsK,cAAAA,MAAM,CAACf,GAAP,GAAanE,SAAb;AACAkF,cAAAA,MAAM,CAACE,KAAP,CAAaC,OAAb,GAAuB,MAAvB;AACAH,cAAAA,MAAM,CAACE,KAAP,CAAaE,QAAb,GAAwB,UAAxB;;AACAJ,cAAAA,MAAM,CAACxM,OAAP,GAAiB,YAAW;AAC1BA,gBAAAA,OAAO,CAAC,SAAD,CAAP;AACD,eAFD;;AAGAwM,cAAAA,MAAM,CAACrB,MAAP,GAAgB,YAAW;AACzBxU,gBAAAA,KAAK,CAAC,QAAD,CAAL,CADyB,CAEzB;AACA;;AACAkE,gBAAAA,YAAY,CAACsO,IAAD,CAAZ;AACAA,gBAAAA,IAAI,GAAG9W,UAAU,CAAC,YAAW;AAC3B2N,kBAAAA,OAAO,CAAC,gBAAD,CAAP;AACD,iBAFgB,EAEd,IAFc,CAAjB;AAGD,eARD;;AASA9O,cAAAA,MAAM,CAAC0I,QAAP,CAAgBC,IAAhB,CAAqBkT,WAArB,CAAiCP,MAAjC;AACArD,cAAAA,IAAI,GAAG9W,UAAU,CAAC,YAAW;AAC3B2N,gBAAAA,OAAO,CAAC,SAAD,CAAP;AACD,eAFgB,EAEd,KAFc,CAAjB;AAGAyF,cAAAA,SAAS,GAAGjP,UAAU,CAACkP,SAAX,CAAqBkC,OAArB,CAAZ;AACA,qBAAO;AACLG,gBAAAA,IAAI,EAAEA,IADD;AAELH,gBAAAA,OAAO,EAAEA,OAFJ;AAGLC,gBAAAA,MAAM,EAAEiI;AAHH,eAAP;AAKD;AAEH;AArGiB;AAsGfzF,YAAAA,cAAc,EAAE,UAAS/C,SAAT,EAAoBuI,aAApB,EAAmC;AACjD,kBAAItJ,GAAG,GAAG,CAAC,QAAD,EAAWvR,MAAX,CAAkB,QAAlB,EAA4B4N,IAA5B,CAAiC,GAAjC,CAAV;AACA,kBAAIoN,GAAG,GAAG,IAAI9e,MAAM,CAACqV,GAAD,CAAV,CAAgB,UAAhB,CAAV;AACA,kBAAI4C,IAAJ,EAAU1D,SAAV;AACA,kBAAI+G,MAAJ;;AACA,kBAAIsD,QAAQ,GAAG,YAAW;AACxBjV,gBAAAA,YAAY,CAACsO,IAAD,CAAZ;AACAqD,gBAAAA,MAAM,CAACxM,OAAP,GAAiB,IAAjB;AACD,eAHD;;AAIA,kBAAI4H,OAAO,GAAG,YAAW;AACvB,oBAAIoI,GAAJ,EAAS;AACPF,kBAAAA,QAAQ;AACRtZ,kBAAAA,UAAU,CAAC8P,SAAX,CAAqBb,SAArB;AACA+G,kBAAAA,MAAM,CAACxB,UAAP,CAAkBC,WAAlB,CAA8BuB,MAA9B;AACAA,kBAAAA,MAAM,GAAGwD,GAAG,GAAG,IAAf;AACAC,kBAAAA,cAAc;AACf;AACF,eARD;;AASA,kBAAIjQ,OAAO,GAAG,UAAS3O,CAAT,EAAY;AACxBsF,gBAAAA,KAAK,CAAC,SAAD,EAAYtF,CAAZ,CAAL;;AACA,oBAAI2e,GAAJ,EAAS;AACPpI,kBAAAA,OAAO;AACPiI,kBAAAA,aAAa,CAACxe,CAAD,CAAb;AACD;AACF,eAND;;AAOA,kBAAI0W,IAAI,GAAG,UAASrO,GAAT,EAAc9B,MAAd,EAAsB;AAC/B,oBAAI;AACF;AACA;AACAvF,kBAAAA,UAAU,CAAC,YAAW;AACpB,wBAAIma,MAAM,IAAIA,MAAM,CAACuD,aAArB,EAAoC;AAChCvD,sBAAAA,MAAM,CAACuD,aAAP,CAAqBja,WAArB,CAAiC4D,GAAjC,EAAsC9B,MAAtC;AACH;AACF,mBAJS,EAIP,CAJO,CAAV;AAKD,iBARD,CAQE,OAAOsK,CAAP,EAAU,CACV;AACD;AACF,eAZD;;AAcA8N,cAAAA,GAAG,CAACrK,IAAJ;AACAqK,cAAAA,GAAG,CAACE,KAAJ,CAAU,aAAa,QAAb,GACA,mBADA,GACsBhf,MAAM,CAAC0I,QAAP,CAAgB+U,MADtC,GAC+C,IAD/C,GAEA,KAFA,GAEQ,eAFlB;AAGAqB,cAAAA,GAAG,CAAC3Z,KAAJ;AACA2Z,cAAAA,GAAG,CAACG,YAAJ,CAAiBtf,MAAM,CAACD,OAAP,CAAesZ,OAAhC,IAA2ChZ,MAAM,CAACL,MAAM,CAACD,OAAP,CAAesZ,OAAhB,CAAjD;AACA,kBAAIvY,CAAC,GAAGqe,GAAG,CAACxE,aAAJ,CAAkB,KAAlB,CAAR;AACAwE,cAAAA,GAAG,CAACnW,IAAJ,CAASkT,WAAT,CAAqBpb,CAArB;AACA6a,cAAAA,MAAM,GAAGwD,GAAG,CAACxE,aAAJ,CAAkB,QAAlB,CAAT;AACA7Z,cAAAA,CAAC,CAACob,WAAF,CAAcP,MAAd;AACAA,cAAAA,MAAM,CAACf,GAAP,GAAanE,SAAb;;AACAkF,cAAAA,MAAM,CAACxM,OAAP,GAAiB,YAAW;AAC1BA,gBAAAA,OAAO,CAAC,SAAD,CAAP;AACD,eAFD;;AAGAmJ,cAAAA,IAAI,GAAG9W,UAAU,CAAC,YAAW;AAC3B2N,gBAAAA,OAAO,CAAC,SAAD,CAAP;AACD,eAFgB,EAEd,KAFc,CAAjB;AAGAyF,cAAAA,SAAS,GAAGjP,UAAU,CAACkP,SAAX,CAAqBkC,OAArB,CAAZ;AACA,qBAAO;AACLG,gBAAAA,IAAI,EAAEA,IADD;AAELH,gBAAAA,OAAO,EAAEA,OAFJ;AAGLC,gBAAAA,MAAM,EAAEiI;AAHH,eAAP;AAKD;AApKc,WAAjB;AAuKAjf,UAAAA,MAAM,CAACD,OAAP,CAAeqX,aAAf,GAA+B,KAA/B;;AACA,cAAI/W,MAAM,CAAC0I,QAAX,EAAqB;AACnB;AACA;AACA/I,YAAAA,MAAM,CAACD,OAAP,CAAeqX,aAAf,GAA+B,CAAC,OAAO/W,MAAM,CAAC4E,WAAd,KAA8B,UAA9B,IAC9B,OAAO5E,MAAM,CAAC4E,WAAd,KAA8B,QADD,KACe,CAACuF,OAAO,CAACqT,WAAR,EAD/C;AAED;AAEA,SA3L0B,EA2LxBxc,IA3LwB,CA2LnB,IA3LmB;AA2Lb,OA3Ld,EA2LgBA,IA3LhB,CA2LqB,IA3LrB,EA2L0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OA3L1B,EA2LsC,OAAO1F,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EA3L7J;AA6LC,KA9LqB,EA8LpB;AAAC,mBAAY,EAAb;AAAgB,iBAAU,EAA1B;AAA6B,eAAQ;AAArC,KA9LoB,CAlxGoyB;AAg9G9wB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAChF,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAIkf,SAAS,GAAG,EAAhB;AACA,WAAC,KAAD,EAAQ,OAAR,EAAiB,MAAjB,EAAyBpZ,OAAzB,CAAiC,UAAUqZ,KAAV,EAAiB;AAChD,gBAAIC,WAAJ;;AAEA,gBAAI;AACFA,cAAAA,WAAW,GAAGpf,MAAM,CAACqf,OAAP,IAAkBrf,MAAM,CAACqf,OAAP,CAAeF,KAAf,CAAlB,IAA2Cnf,MAAM,CAACqf,OAAP,CAAeF,KAAf,EAAsB9c,KAA/E;AACD,aAFD,CAEE,OAAMjC,CAAN,EAAS,CACT;AACD;;AAED8e,YAAAA,SAAS,CAACC,KAAD,CAAT,GAAmBC,WAAW,GAAG,YAAY;AAC3C,qBAAOpf,MAAM,CAACqf,OAAP,CAAeF,KAAf,EAAsB9c,KAAtB,CAA4BrC,MAAM,CAACqf,OAAnC,EAA4C/c,SAA5C,CAAP;AACD,aAF6B,GAEzB6c,KAAK,KAAK,KAAV,GAAkB,YAAY,CAAE,CAAhC,GAAmCD,SAAS,CAAC9U,GAFlD;AAGD,WAZD;AAcAzK,UAAAA,MAAM,CAACD,OAAP,GAAiBwf,SAAjB;AAEC,SApBkB,EAoBhBle,IApBgB,CAoBX,IApBW;AAoBL,OApBd,EAoBgBA,IApBhB,CAoBqB,IApBrB,EAoB0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EApBjJ;AAsBC,KAvB8C,EAuB7C,EAvB6C,CAh9G2wB;AAu+GpzB,QAAG,CAAC,UAASW,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;;AAEAC,MAAAA,MAAM,CAACD,OAAP,GAAiB;AACfqI,QAAAA,QAAQ,EAAE,UAAS4H,GAAT,EAAc;AACtB,cAAI5N,IAAI,GAAG,OAAO4N,GAAlB;AACA,iBAAO5N,IAAI,KAAK,UAAT,IAAuBA,IAAI,KAAK,QAAT,IAAqB,CAAC,CAAC4N,GAArD;AACD,SAJc;AAMfrC,QAAAA,MAAM,EAAE,UAASqC,GAAT,EAAc;AACpB,cAAI,CAAC,KAAK5H,QAAL,CAAc4H,GAAd,CAAL,EAAyB;AACvB,mBAAOA,GAAP;AACD;;AACD,cAAInJ,MAAJ,EAAY8Y,IAAZ;;AACA,eAAK,IAAI9e,CAAC,GAAG,CAAR,EAAWS,MAAM,GAAGqB,SAAS,CAACrB,MAAnC,EAA2CT,CAAC,GAAGS,MAA/C,EAAuDT,CAAC,EAAxD,EAA4D;AAC1DgG,YAAAA,MAAM,GAAGlE,SAAS,CAAC9B,CAAD,CAAlB;;AACA,iBAAK8e,IAAL,IAAa9Y,MAAb,EAAqB;AACnB,kBAAIyI,MAAM,CAACpN,SAAP,CAAiB4O,cAAjB,CAAgCzP,IAAhC,CAAqCwF,MAArC,EAA6C8Y,IAA7C,CAAJ,EAAwD;AACtD3P,gBAAAA,GAAG,CAAC2P,IAAD,CAAH,GAAY9Y,MAAM,CAAC8Y,IAAD,CAAlB;AACD;AACF;AACF;;AACD,iBAAO3P,GAAP;AACD;AApBc,OAAjB;AAuBC,KA1BQ,EA0BP,EA1BO,CAv+GizB;AAigHpzB,QAAG,CAAC,UAASjP,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;;AAEA,UAAIud,MAAM,GAAGvc,OAAO,CAAC,QAAD,CAApB,CAH0C,CAK1C;AACA;;;AACA,UAAI6e,kBAAkB,GAAG,kCAAzB;AACA5f,MAAAA,MAAM,CAACD,OAAP,GAAiB;AACf0L,QAAAA,MAAM,EAAE,UAASnK,MAAT,EAAiB;AACvB,cAAIiN,GAAG,GAAGqR,kBAAkB,CAACte,MAA7B;AACA,cAAImc,KAAK,GAAGH,MAAM,CAACE,WAAP,CAAmBlc,MAAnB,CAAZ;AACA,cAAIue,GAAG,GAAG,EAAV;;AACA,eAAK,IAAIhf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,MAApB,EAA4BT,CAAC,EAA7B,EAAiC;AAC/Bgf,YAAAA,GAAG,CAAC/N,IAAJ,CAAS8N,kBAAkB,CAAC1L,MAAnB,CAA0BuJ,KAAK,CAAC5c,CAAD,CAAL,GAAW0N,GAArC,EAA0C,CAA1C,CAAT;AACD;;AACD,iBAAOsR,GAAG,CAAC9N,IAAJ,CAAS,EAAT,CAAP;AACD,SATc;AAWf+N,QAAAA,MAAM,EAAE,UAASvR,GAAT,EAAc;AACpB,iBAAOD,IAAI,CAAC4C,KAAL,CAAW5C,IAAI,CAAChE,MAAL,KAAgBiE,GAA3B,CAAP;AACD,SAbc;AAef3C,QAAAA,YAAY,EAAE,UAAS2C,GAAT,EAAc;AAC1B,cAAI5N,CAAC,GAAG,CAAC,MAAM4N,GAAG,GAAG,CAAZ,CAAD,EAAiBjN,MAAzB;AACA,cAAIF,CAAC,GAAG,IAAI6B,KAAJ,CAAUtC,CAAC,GAAG,CAAd,EAAiBoR,IAAjB,CAAsB,GAAtB,CAAR;AACA,iBAAO,CAAC3Q,CAAC,GAAG,KAAK0e,MAAL,CAAYvR,GAAZ,CAAL,EAAuBlK,KAAvB,CAA6B,CAAC1D,CAA9B,CAAP;AACD;AAnBc,OAAjB;AAsBC,KA9BQ,EA8BP;AAAC,gBAAS;AAAV,KA9BO,CAjgHizB;AA+hHzyB,QAAG,CAAC,UAASI,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACrD,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAIK,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,+BAAjB,CAAR;AACD;;AAEDf,UAAAA,MAAM,CAACD,OAAP,GAAiB,UAASkG,mBAAT,EAA8B;AAC7C,mBAAO;AACL4H,cAAAA,eAAe,EAAE,UAASkS,mBAAT,EAA8B7X,IAA9B,EAAoC;AACnD,oBAAIwC,UAAU,GAAG;AACfqD,kBAAAA,IAAI,EAAE,EADS;AAEftH,kBAAAA,MAAM,EAAE;AAFO,iBAAjB;;AAIA,oBAAI,CAACsZ,mBAAL,EAA0B;AACxBA,kBAAAA,mBAAmB,GAAG,EAAtB;AACD,iBAFD,MAEO,IAAI,OAAOA,mBAAP,KAA+B,QAAnC,EAA6C;AAClDA,kBAAAA,mBAAmB,GAAG,CAACA,mBAAD,CAAtB;AACD;;AAED9Z,gBAAAA,mBAAmB,CAACE,OAApB,CAA4B,UAAS6Z,KAAT,EAAgB;AAC1C,sBAAI,CAACA,KAAL,EAAY;AACV;AACD;;AAED,sBAAIA,KAAK,CAAC1Z,aAAN,KAAwB,WAAxB,IAAuC4B,IAAI,CAAC+X,SAAL,KAAmB,KAA9D,EAAqE;AACnEna,oBAAAA,KAAK,CAAC,sBAAD,EAAyB,WAAzB,CAAL;AACA;AACD;;AAED,sBAAIia,mBAAmB,CAACze,MAApB,IACAye,mBAAmB,CAAC7b,OAApB,CAA4B8b,KAAK,CAAC1Z,aAAlC,MAAqD,CAAC,CAD1D,EAC6D;AAC3DR,oBAAAA,KAAK,CAAC,kBAAD,EAAqBka,KAAK,CAAC1Z,aAA3B,CAAL;AACA;AACD;;AAED,sBAAI0Z,KAAK,CAAC/W,OAAN,CAAcf,IAAd,CAAJ,EAAyB;AACvBpC,oBAAAA,KAAK,CAAC,SAAD,EAAYka,KAAK,CAAC1Z,aAAlB,CAAL;AACAoE,oBAAAA,UAAU,CAACqD,IAAX,CAAgB+D,IAAhB,CAAqBkO,KAArB;;AACA,wBAAIA,KAAK,CAAC3Z,eAAV,EAA2B;AACzBqE,sBAAAA,UAAU,CAACjE,MAAX,CAAkBqL,IAAlB,CAAuBkO,KAAK,CAAC3Z,eAA7B;AACD;AACF,mBAND,MAMO;AACLP,oBAAAA,KAAK,CAAC,UAAD,EAAaka,KAAK,CAAC1Z,aAAnB,CAAL;AACD;AACF,iBAzBD;AA0BA,uBAAOoE,UAAP;AACD;AAvCI,aAAP;AAyCD,WA1CD;AA4CC,SApDmB,EAoDjBrJ,IApDiB,CAoDZ,IApDY;AAoDN,OApDd,EAoDgBA,IApDhB,CAoDqB,IApDrB,EAoD0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OApD1B;AAsDC,KAvDmB,EAuDlB;AAAC,eAAQ;AAAT,KAvDkB,CA/hHsyB;AAslH1yB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACpD,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,cAAI4E,GAAG,GAAGtJ,OAAO,CAAC,WAAD,CAAjB;;AAEA,cAAI+E,KAAK,GAAG,YAAW,CAAE,CAAzB;;AACA,cAAIL,OAAO,CAACM,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCF,YAAAA,KAAK,GAAG/E,OAAO,CAAC,OAAD,CAAP,CAAiB,yBAAjB,CAAR;AACD;;AAEDf,UAAAA,MAAM,CAACD,OAAP,GAAiB;AACfuM,YAAAA,SAAS,EAAE,UAAS1E,GAAT,EAAc;AACvB,kBAAI,CAACA,GAAL,EAAU;AACR,uBAAO,IAAP;AACD;;AAED,kBAAIxG,CAAC,GAAG,IAAIiJ,GAAJ,CAAQzC,GAAR,CAAR;;AACA,kBAAIxG,CAAC,CAAC8I,QAAF,KAAe,OAAnB,EAA4B;AAC1B,uBAAO,IAAP;AACD;;AAED,kBAAIE,IAAI,GAAGhJ,CAAC,CAACgJ,IAAb;;AACA,kBAAI,CAACA,IAAL,EAAW;AACTA,gBAAAA,IAAI,GAAIhJ,CAAC,CAAC8I,QAAF,KAAe,QAAhB,GAA4B,KAA5B,GAAoC,IAA3C;AACD;;AAED,qBAAO9I,CAAC,CAAC8I,QAAF,GAAa,IAAb,GAAoB9I,CAAC,CAAC6K,QAAtB,GAAiC,GAAjC,GAAuC7B,IAA9C;AACD,aAjBc;AAmBf7C,YAAAA,aAAa,EAAE,UAAStG,CAAT,EAAYif,CAAZ,EAAe;AAC5B,kBAAIC,GAAG,GAAG,KAAK7T,SAAL,CAAerL,CAAf,MAAsB,KAAKqL,SAAL,CAAe4T,CAAf,CAAhC;AACApa,cAAAA,KAAK,CAAC,MAAD,EAAS7E,CAAT,EAAYif,CAAZ,EAAeC,GAAf,CAAL;AACA,qBAAOA,GAAP;AACD,aAvBc;AAyBfpT,YAAAA,aAAa,EAAE,UAAS9L,CAAT,EAAYif,CAAZ,EAAe;AAC5B,qBAAQjf,CAAC,CAACyR,KAAF,CAAQ,GAAR,EAAa,CAAb,MAAoBwN,CAAC,CAACxN,KAAF,CAAQ,GAAR,EAAa,CAAb,CAA5B;AACD,aA3Bc;AA6Bf9I,YAAAA,OAAO,EAAE,UAAUhC,GAAV,EAAewY,IAAf,EAAqB;AAC5B,kBAAIC,EAAE,GAAGzY,GAAG,CAAC8K,KAAJ,CAAU,GAAV,CAAT;AACA,qBAAO2N,EAAE,CAAC,CAAD,CAAF,GAAQD,IAAR,IAAgBC,EAAE,CAAC,CAAD,CAAF,GAAQ,MAAMA,EAAE,CAAC,CAAD,CAAhB,GAAsB,EAAtC,CAAP;AACD,aAhCc;AAkCf1L,YAAAA,QAAQ,EAAE,UAAU/M,GAAV,EAAe0Y,CAAf,EAAkB;AAC1B,qBAAO1Y,GAAG,IAAIA,GAAG,CAAC1D,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAtB,GAA2B,MAAMoc,CAAjC,GAAuC,MAAMA,CAAjD,CAAV;AACD,aApCc;AAsCftU,YAAAA,cAAc,EAAE,UAAUuU,IAAV,EAAgB;AAC9B,qBAAO,mDAAmDvM,IAAnD,CAAwDuM,IAAxD,KAAiE,YAAYvM,IAAZ,CAAiBuM,IAAjB,CAAxE;AACD;AAxCc,WAAjB;AA2CC,SArDmB,EAqDjBlf,IArDiB,CAqDZ,IArDY;AAqDN,OArDd,EAqDgBA,IArDhB,CAqDqB,IArDrB,EAqD0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OArD1B;AAuDC,KAxDkB,EAwDjB;AAAC,eAAQ,EAAT;AAAY,mBAAY;AAAxB,KAxDiB,CAtlHuyB;AA8oH3xB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACnEC,MAAAA,MAAM,CAACD,OAAP,GAAiB,OAAjB;AAEC,KAHiC,EAGhC,EAHgC,CA9oHwxB;AAipHpzB,QAAG,CAAC,UAASgB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;AACA;AACA;AAEA,UAAIygB,CAAC,GAAG,IAAR;AACA,UAAIC,CAAC,GAAGD,CAAC,GAAG,EAAZ;AACA,UAAIE,CAAC,GAAGD,CAAC,GAAG,EAAZ;AACA,UAAI3X,CAAC,GAAG4X,CAAC,GAAG,EAAZ;AACA,UAAIC,CAAC,GAAG7X,CAAC,GAAG,CAAZ;AACA,UAAI8X,CAAC,GAAG9X,CAAC,GAAG,MAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA9I,MAAAA,MAAM,CAACD,OAAP,GAAiB,UAASgQ,GAAT,EAAcnF,OAAd,EAAuB;AACtCA,QAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AACA,YAAIxI,IAAI,GAAG,OAAO2N,GAAlB;;AACA,YAAI3N,IAAI,KAAK,QAAT,IAAqB2N,GAAG,CAACzO,MAAJ,GAAa,CAAtC,EAAyC;AACvC,iBAAO2F,KAAK,CAAC8I,GAAD,CAAZ;AACD,SAFD,MAEO,IAAI3N,IAAI,KAAK,QAAT,IAAqBye,QAAQ,CAAC9Q,GAAD,CAAjC,EAAwC;AAC7C,iBAAOnF,OAAO,CAACkW,IAAR,GAAeC,OAAO,CAAChR,GAAD,CAAtB,GAA8BiR,QAAQ,CAACjR,GAAD,CAA7C;AACD;;AACD,cAAM,IAAI7O,KAAJ,CACJ,0DACEgE,IAAI,CAACC,SAAL,CAAe4K,GAAf,CAFE,CAAN;AAID,OAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,eAAS9I,KAAT,CAAega,GAAf,EAAoB;AAClBA,QAAAA,GAAG,GAAGvR,MAAM,CAACuR,GAAD,CAAZ;;AACA,YAAIA,GAAG,CAAC3f,MAAJ,GAAa,GAAjB,EAAsB;AACpB;AACD;;AACD,YAAIqS,KAAK,GAAG,mIAAmIX,IAAnI,CACViO,GADU,CAAZ;;AAGA,YAAI,CAACtN,KAAL,EAAY;AACV;AACD;;AACD,YAAIjT,CAAC,GAAGwgB,UAAU,CAACvN,KAAK,CAAC,CAAD,CAAN,CAAlB;AACA,YAAIvR,IAAI,GAAG,CAACuR,KAAK,CAAC,CAAD,CAAL,IAAY,IAAb,EAAmBnH,WAAnB,EAAX;;AACA,gBAAQpK,IAAR;AACE,eAAK,OAAL;AACA,eAAK,MAAL;AACA,eAAK,KAAL;AACA,eAAK,IAAL;AACA,eAAK,GAAL;AACE,mBAAO1B,CAAC,GAAGkgB,CAAX;;AACF,eAAK,OAAL;AACA,eAAK,MAAL;AACA,eAAK,GAAL;AACE,mBAAOlgB,CAAC,GAAGigB,CAAX;;AACF,eAAK,MAAL;AACA,eAAK,KAAL;AACA,eAAK,GAAL;AACE,mBAAOjgB,CAAC,GAAGoI,CAAX;;AACF,eAAK,OAAL;AACA,eAAK,MAAL;AACA,eAAK,KAAL;AACA,eAAK,IAAL;AACA,eAAK,GAAL;AACE,mBAAOpI,CAAC,GAAGggB,CAAX;;AACF,eAAK,SAAL;AACA,eAAK,QAAL;AACA,eAAK,MAAL;AACA,eAAK,KAAL;AACA,eAAK,GAAL;AACE,mBAAOhgB,CAAC,GAAG+f,CAAX;;AACF,eAAK,SAAL;AACA,eAAK,QAAL;AACA,eAAK,MAAL;AACA,eAAK,KAAL;AACA,eAAK,GAAL;AACE,mBAAO/f,CAAC,GAAG8f,CAAX;;AACF,eAAK,cAAL;AACA,eAAK,aAAL;AACA,eAAK,OAAL;AACA,eAAK,MAAL;AACA,eAAK,IAAL;AACE,mBAAO9f,CAAP;;AACF;AACE,mBAAOuV,SAAP;AAxCJ;AA0CD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,eAAS+K,QAAT,CAAkBG,EAAlB,EAAsB;AACpB,YAAIC,KAAK,GAAG9S,IAAI,CAAC6C,GAAL,CAASgQ,EAAT,CAAZ;;AACA,YAAIC,KAAK,IAAItY,CAAb,EAAgB;AACd,iBAAOwF,IAAI,CAAC+S,KAAL,CAAWF,EAAE,GAAGrY,CAAhB,IAAqB,GAA5B;AACD;;AACD,YAAIsY,KAAK,IAAIV,CAAb,EAAgB;AACd,iBAAOpS,IAAI,CAAC+S,KAAL,CAAWF,EAAE,GAAGT,CAAhB,IAAqB,GAA5B;AACD;;AACD,YAAIU,KAAK,IAAIX,CAAb,EAAgB;AACd,iBAAOnS,IAAI,CAAC+S,KAAL,CAAWF,EAAE,GAAGV,CAAhB,IAAqB,GAA5B;AACD;;AACD,YAAIW,KAAK,IAAIZ,CAAb,EAAgB;AACd,iBAAOlS,IAAI,CAAC+S,KAAL,CAAWF,EAAE,GAAGX,CAAhB,IAAqB,GAA5B;AACD;;AACD,eAAOW,EAAE,GAAG,IAAZ;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,eAASJ,OAAT,CAAiBI,EAAjB,EAAqB;AACnB,YAAIC,KAAK,GAAG9S,IAAI,CAAC6C,GAAL,CAASgQ,EAAT,CAAZ;;AACA,YAAIC,KAAK,IAAItY,CAAb,EAAgB;AACd,iBAAOwY,MAAM,CAACH,EAAD,EAAKC,KAAL,EAAYtY,CAAZ,EAAe,KAAf,CAAb;AACD;;AACD,YAAIsY,KAAK,IAAIV,CAAb,EAAgB;AACd,iBAAOY,MAAM,CAACH,EAAD,EAAKC,KAAL,EAAYV,CAAZ,EAAe,MAAf,CAAb;AACD;;AACD,YAAIU,KAAK,IAAIX,CAAb,EAAgB;AACd,iBAAOa,MAAM,CAACH,EAAD,EAAKC,KAAL,EAAYX,CAAZ,EAAe,QAAf,CAAb;AACD;;AACD,YAAIW,KAAK,IAAIZ,CAAb,EAAgB;AACd,iBAAOc,MAAM,CAACH,EAAD,EAAKC,KAAL,EAAYZ,CAAZ,EAAe,QAAf,CAAb;AACD;;AACD,eAAOW,EAAE,GAAG,KAAZ;AACD;AAED;AACA;AACA;;;AAEA,eAASG,MAAT,CAAgBH,EAAhB,EAAoBC,KAApB,EAA2B1gB,CAA3B,EAA8B2P,IAA9B,EAAoC;AAClC,YAAIkR,QAAQ,GAAGH,KAAK,IAAI1gB,CAAC,GAAG,GAA5B;AACA,eAAO4N,IAAI,CAAC+S,KAAL,CAAWF,EAAE,GAAGzgB,CAAhB,IAAqB,GAArB,GAA2B2P,IAA3B,IAAmCkR,QAAQ,GAAG,GAAH,GAAS,EAApD,CAAP;AACD;AAEA,KApKQ,EAoKP,EApKO,CAjpHizB;AAqzHpzB,QAAG,CAAC,UAASxgB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAU0F,OAAV,EAAkB;AAAC,SAAC,YAAW;AAChC;;AAEA,mBAAS+b,OAAT,CAAiBxR,GAAjB,EAAsB;AAAE,gBAAI,OAAOyR,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACC,QAAd,KAA2B,QAA/D,EAAyE;AAAEF,cAAAA,OAAO,GAAG,SAASA,OAAT,CAAiBxR,GAAjB,EAAsB;AAAE,uBAAO,OAAOA,GAAd;AAAoB,eAAtD;AAAyD,aAApI,MAA0I;AAAEwR,cAAAA,OAAO,GAAG,SAASA,OAAT,CAAiBxR,GAAjB,EAAsB;AAAE,uBAAOA,GAAG,IAAI,OAAOyR,MAAP,KAAkB,UAAzB,IAAuCzR,GAAG,CAAC2R,WAAJ,KAAoBF,MAA3D,IAAqEzR,GAAG,KAAKyR,MAAM,CAACvf,SAApF,GAAgG,QAAhG,GAA2G,OAAO8N,GAAzH;AAA+H,eAAjK;AAAoK;;AAAC,mBAAOwR,OAAO,CAACxR,GAAD,CAAd;AAAsB;AAE/V;;AAEA;AACA;AACA;;;AACAjQ,UAAAA,OAAO,CAAC0K,GAAR,GAAcA,GAAd;AACA1K,UAAAA,OAAO,CAAC6hB,UAAR,GAAqBA,UAArB;AACA7hB,UAAAA,OAAO,CAAC8hB,IAAR,GAAeA,IAAf;AACA9hB,UAAAA,OAAO,CAAC+hB,IAAR,GAAeA,IAAf;AACA/hB,UAAAA,OAAO,CAACgiB,SAAR,GAAoBA,SAApB;AACAhiB,UAAAA,OAAO,CAACiiB,OAAR,GAAkBC,YAAY,EAA9B;AACA;AACA;AACA;;AAEAliB,UAAAA,OAAO,CAACmiB,MAAR,GAAiB,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,EAA0H,SAA1H,EAAqI,SAArI,EAAgJ,SAAhJ,EAA2J,SAA3J,EAAsK,SAAtK,EAAiL,SAAjL,EAA4L,SAA5L,EAAuM,SAAvM,EAAkN,SAAlN,EAA6N,SAA7N,EAAwO,SAAxO,EAAmP,SAAnP,EAA8P,SAA9P,EAAyQ,SAAzQ,EAAoR,SAApR,EAA+R,SAA/R,EAA0S,SAA1S,EAAqT,SAArT,EAAgU,SAAhU,EAA2U,SAA3U,EAAsV,SAAtV,EAAiW,SAAjW,EAA4W,SAA5W,EAAuX,SAAvX,EAAkY,SAAlY,EAA6Y,SAA7Y,EAAwZ,SAAxZ,EAAma,SAAna,EAA8a,SAA9a,EAAyb,SAAzb,EAAoc,SAApc,EAA+c,SAA/c,EAA0d,SAA1d,EAAqe,SAAre,EAAgf,SAAhf,EAA2f,SAA3f,EAAsgB,SAAtgB,EAAihB,SAAjhB,EAA4hB,SAA5hB,EAAuiB,SAAviB,EAAkjB,SAAljB,EAA6jB,SAA7jB,EAAwkB,SAAxkB,EAAmlB,SAAnlB,EAA8lB,SAA9lB,EAAymB,SAAzmB,EAAonB,SAApnB,EAA+nB,SAA/nB,EAA0oB,SAA1oB,EAAqpB,SAArpB,EAAgqB,SAAhqB,EAA2qB,SAA3qB,EAAsrB,SAAtrB,EAAisB,SAAjsB,EAA4sB,SAA5sB,EAAutB,SAAvtB,EAAkuB,SAAluB,EAA6uB,SAA7uB,EAAwvB,SAAxvB,EAAmwB,SAAnwB,EAA8wB,SAA9wB,EAAyxB,SAAzxB,EAAoyB,SAApyB,EAA+yB,SAA/yB,EAA0zB,SAA1zB,CAAjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAASH,SAAT,GAAqB;AACnB;AACA;AACA;AACA,gBAAI,OAAO3hB,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACqF,OAAxC,KAAoDrF,MAAM,CAACqF,OAAP,CAAerD,IAAf,KAAwB,UAAxB,IAAsChC,MAAM,CAACqF,OAAP,CAAe0c,MAAzG,CAAJ,EAAsH;AACpH,qBAAO,IAAP;AACD,aANkB,CAMjB;;;AAGF,gBAAI,OAAOxE,SAAP,KAAqB,WAArB,IAAoCA,SAAS,CAACC,SAA9C,IAA2DD,SAAS,CAACC,SAAV,CAAoBpR,WAApB,GAAkCmH,KAAlC,CAAwC,uBAAxC,CAA/D,EAAiI;AAC/H,qBAAO,KAAP;AACD,aAXkB,CAWjB;AACF;;;AAGA,mBAAO,OAAO5K,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAACqZ,eAA5C,IAA+DrZ,QAAQ,CAACqZ,eAAT,CAAyBvG,KAAxF,IAAiG9S,QAAQ,CAACqZ,eAAT,CAAyBvG,KAAzB,CAA+BwG,gBAAhI,IAAoJ;AAC3J,mBAAOjiB,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACsf,OAAxC,KAAoDtf,MAAM,CAACsf,OAAP,CAAe4C,OAAf,IAA0BliB,MAAM,CAACsf,OAAP,CAAe6C,SAAf,IAA4BniB,MAAM,CAACsf,OAAP,CAAe8C,KAAzH,CADO,IAC4H;AACnI;AACA,mBAAO7E,SAAP,KAAqB,WAArB,IAAoCA,SAAS,CAACC,SAA9C,IAA2DD,SAAS,CAACC,SAAV,CAAoBpR,WAApB,GAAkCmH,KAAlC,CAAwC,gBAAxC,CAA3D,IAAwH8O,QAAQ,CAAC3O,MAAM,CAAC4O,EAAR,EAAY,EAAZ,CAAR,IAA2B,EAH5I,IAGkJ;AACzJ,mBAAO/E,SAAP,KAAqB,WAArB,IAAoCA,SAAS,CAACC,SAA9C,IAA2DD,SAAS,CAACC,SAAV,CAAoBpR,WAApB,GAAkCmH,KAAlC,CAAwC,oBAAxC,CAJ3D;AAKD;AACD;AACA;AACA;AACA;AACA;;;AAGA,mBAASiO,UAAT,CAAoB5e,IAApB,EAA0B;AACxBA,YAAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,CAAC,KAAK+e,SAAL,GAAiB,IAAjB,GAAwB,EAAzB,IAA+B,KAAKY,SAApC,IAAiD,KAAKZ,SAAL,GAAiB,KAAjB,GAAyB,GAA1E,IAAiF/e,IAAI,CAAC,CAAD,CAArF,IAA4F,KAAK+e,SAAL,GAAiB,KAAjB,GAAyB,GAArH,IAA4H,GAA5H,GAAkI/hB,MAAM,CAACD,OAAP,CAAe6iB,QAAf,CAAwB,KAAKC,IAA7B,CAA5I;;AAEA,gBAAI,CAAC,KAAKd,SAAV,EAAqB;AACnB;AACD;;AAED,gBAAIjhB,CAAC,GAAG,YAAY,KAAKgiB,KAAzB;AACA9f,YAAAA,IAAI,CAAC+f,MAAL,CAAY,CAAZ,EAAe,CAAf,EAAkBjiB,CAAlB,EAAqB,gBAArB,EARwB,CAQgB;AACxC;AACA;;AAEA,gBAAIiT,KAAK,GAAG,CAAZ;AACA,gBAAIiP,KAAK,GAAG,CAAZ;AACAhgB,YAAAA,IAAI,CAAC,CAAD,CAAJ,CAAQ2J,OAAR,CAAgB,aAAhB,EAA+B,UAAUgH,KAAV,EAAiB;AAC9C,kBAAIA,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AAEDI,cAAAA,KAAK;;AAEL,kBAAIJ,KAAK,KAAK,IAAd,EAAoB;AAClB;AACA;AACAqP,gBAAAA,KAAK,GAAGjP,KAAR;AACD;AACF,aAZD;AAaA/Q,YAAAA,IAAI,CAAC+f,MAAL,CAAYC,KAAZ,EAAmB,CAAnB,EAAsBliB,CAAtB;AACD;AACD;AACA;AACA;AACA;AACA;AACA;;;AAGA,mBAAS2J,GAAT,GAAe;AACb,gBAAIwY,QAAJ,CADa,CAGb;AACA;;;AACA,mBAAO,CAAC,OAAOvD,OAAP,KAAmB,WAAnB,GAAiC,WAAjC,GAA+C8B,OAAO,CAAC9B,OAAD,CAAvD,MAAsE,QAAtE,IAAkFA,OAAO,CAACjV,GAA1F,IAAiG,CAACwY,QAAQ,GAAGvD,OAAZ,EAAqBjV,GAArB,CAAyB/H,KAAzB,CAA+BugB,QAA/B,EAAyCtgB,SAAzC,CAAxG;AACD;AACD;AACA;AACA;AACA;AACA;AACA;;;AAGA,mBAASkf,IAAT,CAAcqB,UAAd,EAA0B;AACxB,gBAAI;AACF,kBAAIA,UAAJ,EAAgB;AACdnjB,gBAAAA,OAAO,CAACiiB,OAAR,CAAgBmB,OAAhB,CAAwB,OAAxB,EAAiCD,UAAjC;AACD,eAFD,MAEO;AACLnjB,gBAAAA,OAAO,CAACiiB,OAAR,CAAgBoB,UAAhB,CAA2B,OAA3B;AACD;AACF,aAND,CAME,OAAOC,KAAP,EAAc,CAAC;AACf;AACD;AACF;AACD;AACA;AACA;AACA;AACA;AACA;;;AAGA,mBAASvB,IAAT,GAAgB;AACd,gBAAIthB,CAAJ;;AAEA,gBAAI;AACFA,cAAAA,CAAC,GAAGT,OAAO,CAACiiB,OAAR,CAAgBsB,OAAhB,CAAwB,OAAxB,CAAJ;AACD,aAFD,CAEE,OAAOD,KAAP,EAAc,CAAE,CALJ,CAKK;AACnB;AACA;;;AAGA,gBAAI,CAAC7iB,CAAD,IAAM,OAAOiF,OAAP,KAAmB,WAAzB,IAAwC,SAASA,OAArD,EAA8D;AAC5DjF,cAAAA,CAAC,GAAGiF,OAAO,CAACM,GAAR,CAAYwd,KAAhB;AACD;;AAED,mBAAO/iB,CAAP;AACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,mBAASyhB,YAAT,GAAwB;AACtB,gBAAI;AACF;AACA;AACA,qBAAOuB,YAAP;AACD,aAJD,CAIE,OAAOH,KAAP,EAAc,CAAC;AACf;AACD;AACF;;AAEDrjB,UAAAA,MAAM,CAACD,OAAP,GAAiBgB,OAAO,CAAC,UAAD,CAAP,CAAoBhB,OAApB,CAAjB;AACA,cAAI0jB,UAAU,GAAGzjB,MAAM,CAACD,OAAP,CAAe0jB,UAAhC;AACA;AACA;AACA;;AAEAA,UAAAA,UAAU,CAACC,CAAX,GAAe,UAAUC,CAAV,EAAa;AAC1B,gBAAI;AACF,qBAAOze,IAAI,CAACC,SAAL,CAAewe,CAAf,CAAP;AACD,aAFD,CAEE,OAAON,KAAP,EAAc;AACd,qBAAO,iCAAiCA,KAAK,CAAClM,OAA9C;AACD;AACF,WAND;AASC,SAtLmB,EAsLjB9V,IAtLiB,CAsLZ,IAtLY;AAsLN,OAtLd,EAsLgBA,IAtLhB,CAsLqB,IAtLrB,EAsL0B;AAAE0E,QAAAA,GAAG,EAAE;AAAP,OAtL1B;AAwLC,KAzLQ,EAyLP;AAAC,kBAAW;AAAZ,KAzLO,CArzHizB;AA8+HvyB,QAAG,CAAC,UAAShF,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACvD;AAEA;AACA;AACA;AACA;;AACA,eAAS6jB,KAAT,CAAe7d,GAAf,EAAoB;AAClB8d,QAAAA,WAAW,CAAC/d,KAAZ,GAAoB+d,WAApB;AACAA,QAAAA,WAAW,CAACC,OAAZ,GAAsBD,WAAtB;AACAA,QAAAA,WAAW,CAACE,MAAZ,GAAqBA,MAArB;AACAF,QAAAA,WAAW,CAACG,OAAZ,GAAsBA,OAAtB;AACAH,QAAAA,WAAW,CAACI,MAAZ,GAAqBA,MAArB;AACAJ,QAAAA,WAAW,CAAC5a,OAAZ,GAAsBA,OAAtB;AACA4a,QAAAA,WAAW,CAACjB,QAAZ,GAAuB7hB,OAAO,CAAC,IAAD,CAA9B;AACAuO,QAAAA,MAAM,CAAC4U,IAAP,CAAYne,GAAZ,EAAiBI,OAAjB,CAAyB,UAAUiP,GAAV,EAAe;AACtCyO,UAAAA,WAAW,CAACzO,GAAD,CAAX,GAAmBrP,GAAG,CAACqP,GAAD,CAAtB;AACD,SAFD;AAGA;AACF;AACA;;AAEEyO,QAAAA,WAAW,CAACM,SAAZ,GAAwB,EAAxB;AACA;AACF;AACA;;AAEEN,QAAAA,WAAW,CAACO,KAAZ,GAAoB,EAApB;AACAP,QAAAA,WAAW,CAACQ,KAAZ,GAAoB,EAApB;AACA;AACF;AACA;AACA;AACA;;AAEER,QAAAA,WAAW,CAACJ,UAAZ,GAAyB,EAAzB;AACA;AACF;AACA;AACA;AACA;AACA;;AAEE,iBAASa,WAAT,CAAqB3B,SAArB,EAAgC;AAC9B,cAAIhc,IAAI,GAAG,CAAX;;AAEA,eAAK,IAAI9F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8hB,SAAS,CAACrhB,MAA9B,EAAsCT,CAAC,EAAvC,EAA2C;AACzC8F,YAAAA,IAAI,GAAG,CAACA,IAAI,IAAI,CAAT,IAAcA,IAAd,GAAqBgc,SAAS,CAACtE,UAAV,CAAqBxd,CAArB,CAA5B;AACA8F,YAAAA,IAAI,IAAI,CAAR,CAFyC,CAE9B;AACZ;;AAED,iBAAOkd,WAAW,CAAC3B,MAAZ,CAAmB5T,IAAI,CAAC6C,GAAL,CAASxK,IAAT,IAAiBkd,WAAW,CAAC3B,MAAZ,CAAmB5gB,MAAvD,CAAP;AACD;;AAEDuiB,QAAAA,WAAW,CAACS,WAAZ,GAA0BA,WAA1B;AACA;AACF;AACA;AACA;AACA;AACA;AACA;;AAEE,iBAAST,WAAT,CAAqBlB,SAArB,EAAgC;AAC9B,cAAI4B,QAAJ;;AAEA,mBAASze,KAAT,GAAiB;AACf;AACA,gBAAI,CAACA,KAAK,CAACmD,OAAX,EAAoB;AAClB;AACD;;AAED,iBAAK,IAAIub,IAAI,GAAG7hB,SAAS,CAACrB,MAArB,EAA6B0B,IAAI,GAAG,IAAIC,KAAJ,CAAUuhB,IAAV,CAApC,EAAqDC,IAAI,GAAG,CAAjE,EAAoEA,IAAI,GAAGD,IAA3E,EAAiFC,IAAI,EAArF,EAAyF;AACvFzhB,cAAAA,IAAI,CAACyhB,IAAD,CAAJ,GAAa9hB,SAAS,CAAC8hB,IAAD,CAAtB;AACD;;AAED,gBAAInkB,IAAI,GAAGwF,KAAX,CAVe,CAUG;;AAElB,gBAAI4e,IAAI,GAAGC,MAAM,CAAC,IAAIhhB,IAAJ,EAAD,CAAjB;AACA,gBAAIwd,EAAE,GAAGuD,IAAI,IAAIH,QAAQ,IAAIG,IAAhB,CAAb;AACApkB,YAAAA,IAAI,CAACuiB,IAAL,GAAY1B,EAAZ;AACA7gB,YAAAA,IAAI,CAACskB,IAAL,GAAYL,QAAZ;AACAjkB,YAAAA,IAAI,CAACokB,IAAL,GAAYA,IAAZ;AACAH,YAAAA,QAAQ,GAAGG,IAAX;AACA1hB,YAAAA,IAAI,CAAC,CAAD,CAAJ,GAAU6gB,WAAW,CAACE,MAAZ,CAAmB/gB,IAAI,CAAC,CAAD,CAAvB,CAAV;;AAEA,gBAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;AAC/B;AACAA,cAAAA,IAAI,CAACoL,OAAL,CAAa,IAAb;AACD,aAvBc,CAuBb;;;AAGF,gBAAI2F,KAAK,GAAG,CAAZ;AACA/Q,YAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAJ,CAAQ2J,OAAR,CAAgB,eAAhB,EAAiC,UAAUgH,KAAV,EAAiBkR,MAAjB,EAAyB;AAClE;AACA,kBAAIlR,KAAK,KAAK,IAAd,EAAoB;AAClB,uBAAOA,KAAP;AACD;;AAEDI,cAAAA,KAAK;AACL,kBAAI+Q,SAAS,GAAGjB,WAAW,CAACJ,UAAZ,CAAuBoB,MAAvB,CAAhB;;AAEA,kBAAI,OAAOC,SAAP,KAAqB,UAAzB,EAAqC;AACnC,oBAAI/U,GAAG,GAAG/M,IAAI,CAAC+Q,KAAD,CAAd;AACAJ,gBAAAA,KAAK,GAAGmR,SAAS,CAACzjB,IAAV,CAAef,IAAf,EAAqByP,GAArB,CAAR,CAFmC,CAEA;;AAEnC/M,gBAAAA,IAAI,CAAC+f,MAAL,CAAYhP,KAAZ,EAAmB,CAAnB;AACAA,gBAAAA,KAAK;AACN;;AAED,qBAAOJ,KAAP;AACD,aAlBS,CAAV,CA3Be,CA6CX;;AAEJkQ,YAAAA,WAAW,CAACjC,UAAZ,CAAuBvgB,IAAvB,CAA4Bf,IAA5B,EAAkC0C,IAAlC;AACA,gBAAI+hB,KAAK,GAAGzkB,IAAI,CAACmK,GAAL,IAAYoZ,WAAW,CAACpZ,GAApC;AACAsa,YAAAA,KAAK,CAACriB,KAAN,CAAYpC,IAAZ,EAAkB0C,IAAlB;AACD;;AAED8C,UAAAA,KAAK,CAAC6c,SAAN,GAAkBA,SAAlB;AACA7c,UAAAA,KAAK,CAACmD,OAAN,GAAgB4a,WAAW,CAAC5a,OAAZ,CAAoB0Z,SAApB,CAAhB;AACA7c,UAAAA,KAAK,CAACic,SAAN,GAAkB8B,WAAW,CAAC9B,SAAZ,EAAlB;AACAjc,UAAAA,KAAK,CAACgd,KAAN,GAAcwB,WAAW,CAAC3B,SAAD,CAAzB;AACA7c,UAAAA,KAAK,CAACkf,OAAN,GAAgBA,OAAhB;AACAlf,UAAAA,KAAK,CAAC6H,MAAN,GAAeA,MAAf,CA5D8B,CA4DP;AACvB;AACA;;AAEA,cAAI,OAAOkW,WAAW,CAACoB,IAAnB,KAA4B,UAAhC,EAA4C;AAC1CpB,YAAAA,WAAW,CAACoB,IAAZ,CAAiBnf,KAAjB;AACD;;AAED+d,UAAAA,WAAW,CAACM,SAAZ,CAAsBrS,IAAtB,CAA2BhM,KAA3B;AACA,iBAAOA,KAAP;AACD;;AAED,iBAASkf,OAAT,GAAmB;AACjB,cAAIjR,KAAK,GAAG8P,WAAW,CAACM,SAAZ,CAAsBjgB,OAAtB,CAA8B,IAA9B,CAAZ;;AAEA,cAAI6P,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB8P,YAAAA,WAAW,CAACM,SAAZ,CAAsBpB,MAAtB,CAA6BhP,KAA7B,EAAoC,CAApC;AACA,mBAAO,IAAP;AACD;;AAED,iBAAO,KAAP;AACD;;AAED,iBAASpG,MAAT,CAAgBgV,SAAhB,EAA2BuC,SAA3B,EAAsC;AACpC,iBAAOrB,WAAW,CAAC,KAAKlB,SAAL,IAAkB,OAAOuC,SAAP,KAAqB,WAArB,GAAmC,GAAnC,GAAyCA,SAA3D,IAAwEvC,SAAzE,CAAlB;AACD;AACD;AACF;AACA;AACA;AACA;AACA;AACA;;;AAGE,iBAASsB,MAAT,CAAgBf,UAAhB,EAA4B;AAC1BW,UAAAA,WAAW,CAAChC,IAAZ,CAAiBqB,UAAjB;AACAW,UAAAA,WAAW,CAACO,KAAZ,GAAoB,EAApB;AACAP,UAAAA,WAAW,CAACQ,KAAZ,GAAoB,EAApB;AACA,cAAIxjB,CAAJ;AACA,cAAI6R,KAAK,GAAG,CAAC,OAAOwQ,UAAP,KAAsB,QAAtB,GAAiCA,UAAjC,GAA8C,EAA/C,EAAmDxQ,KAAnD,CAAyD,QAAzD,CAAZ;AACA,cAAIyS,GAAG,GAAGzS,KAAK,CAACpR,MAAhB;;AAEA,eAAKT,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGskB,GAAhB,EAAqBtkB,CAAC,EAAtB,EAA0B;AACxB,gBAAI,CAAC6R,KAAK,CAAC7R,CAAD,CAAV,EAAe;AACb;AACA;AACD;;AAEDqiB,YAAAA,UAAU,GAAGxQ,KAAK,CAAC7R,CAAD,CAAL,CAAS8L,OAAT,CAAiB,KAAjB,EAAwB,KAAxB,CAAb;;AAEA,gBAAIuW,UAAU,CAAC,CAAD,CAAV,KAAkB,GAAtB,EAA2B;AACzBW,cAAAA,WAAW,CAACQ,KAAZ,CAAkBvS,IAAlB,CAAuB,IAAIgC,MAAJ,CAAW,MAAMoP,UAAU,CAAChP,MAAX,CAAkB,CAAlB,CAAN,GAA6B,GAAxC,CAAvB;AACD,aAFD,MAEO;AACL2P,cAAAA,WAAW,CAACO,KAAZ,CAAkBtS,IAAlB,CAAuB,IAAIgC,MAAJ,CAAW,MAAMoP,UAAN,GAAmB,GAA9B,CAAvB;AACD;AACF;;AAED,eAAKriB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgjB,WAAW,CAACM,SAAZ,CAAsB7iB,MAAtC,EAA8CT,CAAC,EAA/C,EAAmD;AACjD,gBAAIukB,QAAQ,GAAGvB,WAAW,CAACM,SAAZ,CAAsBtjB,CAAtB,CAAf;AACAukB,YAAAA,QAAQ,CAACnc,OAAT,GAAmB4a,WAAW,CAAC5a,OAAZ,CAAoBmc,QAAQ,CAACzC,SAA7B,CAAnB;AACD;AACF;AACD;AACF;AACA;AACA;AACA;;;AAGE,iBAASqB,OAAT,GAAmB;AACjBH,UAAAA,WAAW,CAACI,MAAZ,CAAmB,EAAnB;AACD;AACD;AACF;AACA;AACA;AACA;AACA;AACA;;;AAGE,iBAAShb,OAAT,CAAiBoH,IAAjB,EAAuB;AACrB,cAAIA,IAAI,CAACA,IAAI,CAAC/O,MAAL,GAAc,CAAf,CAAJ,KAA0B,GAA9B,EAAmC;AACjC,mBAAO,IAAP;AACD;;AAED,cAAIT,CAAJ;AACA,cAAIskB,GAAJ;;AAEA,eAAKtkB,CAAC,GAAG,CAAJ,EAAOskB,GAAG,GAAGtB,WAAW,CAACQ,KAAZ,CAAkB/iB,MAApC,EAA4CT,CAAC,GAAGskB,GAAhD,EAAqDtkB,CAAC,EAAtD,EAA0D;AACxD,gBAAIgjB,WAAW,CAACQ,KAAZ,CAAkBxjB,CAAlB,EAAqBmT,IAArB,CAA0B3D,IAA1B,CAAJ,EAAqC;AACnC,qBAAO,KAAP;AACD;AACF;;AAED,eAAKxP,CAAC,GAAG,CAAJ,EAAOskB,GAAG,GAAGtB,WAAW,CAACO,KAAZ,CAAkB9iB,MAApC,EAA4CT,CAAC,GAAGskB,GAAhD,EAAqDtkB,CAAC,EAAtD,EAA0D;AACxD,gBAAIgjB,WAAW,CAACO,KAAZ,CAAkBvjB,CAAlB,EAAqBmT,IAArB,CAA0B3D,IAA1B,CAAJ,EAAqC;AACnC,qBAAO,IAAP;AACD;AACF;;AAED,iBAAO,KAAP;AACD;AACD;AACF;AACA;AACA;AACA;AACA;AACA;;;AAGE,iBAAS0T,MAAT,CAAgBhU,GAAhB,EAAqB;AACnB,cAAIA,GAAG,YAAY7O,KAAnB,EAA0B;AACxB,mBAAO6O,GAAG,CAACsV,KAAJ,IAAatV,GAAG,CAACoH,OAAxB;AACD;;AAED,iBAAOpH,GAAP;AACD;;AAED8T,QAAAA,WAAW,CAACI,MAAZ,CAAmBJ,WAAW,CAAC/B,IAAZ,EAAnB;AACA,eAAO+B,WAAP;AACD;;AAED7jB,MAAAA,MAAM,CAACD,OAAP,GAAiB6jB,KAAjB;AAGC,KA3PqB,EA2PpB;AAAC,YAAK;AAAN,KA3PoB,CA9+HoyB;AAyuI7yB,QAAG,CAAC,UAAS7iB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AACjD,UAAI,OAAOuP,MAAM,CAACgW,MAAd,KAAyB,UAA7B,EAAyC;AACvC;AACAtlB,QAAAA,MAAM,CAACD,OAAP,GAAiB,SAAS2B,QAAT,CAAkB6jB,IAAlB,EAAwBC,SAAxB,EAAmC;AAClD,cAAIA,SAAJ,EAAe;AACbD,YAAAA,IAAI,CAACE,MAAL,GAAcD,SAAd;AACAD,YAAAA,IAAI,CAACrjB,SAAL,GAAiBoN,MAAM,CAACgW,MAAP,CAAcE,SAAS,CAACtjB,SAAxB,EAAmC;AAClDyf,cAAAA,WAAW,EAAE;AACXhR,gBAAAA,KAAK,EAAE4U,IADI;AAEX9U,gBAAAA,UAAU,EAAE,KAFD;AAGXC,gBAAAA,QAAQ,EAAE,IAHC;AAIXF,gBAAAA,YAAY,EAAE;AAJH;AADqC,aAAnC,CAAjB;AAQD;AACF,SAZD;AAaD,OAfD,MAeO;AACL;AACAxQ,QAAAA,MAAM,CAACD,OAAP,GAAiB,SAAS2B,QAAT,CAAkB6jB,IAAlB,EAAwBC,SAAxB,EAAmC;AAClD,cAAIA,SAAJ,EAAe;AACbD,YAAAA,IAAI,CAACE,MAAL,GAAcD,SAAd;;AACA,gBAAIE,QAAQ,GAAG,YAAY,CAAE,CAA7B;;AACAA,YAAAA,QAAQ,CAACxjB,SAAT,GAAqBsjB,SAAS,CAACtjB,SAA/B;AACAqjB,YAAAA,IAAI,CAACrjB,SAAL,GAAiB,IAAIwjB,QAAJ,EAAjB;AACAH,YAAAA,IAAI,CAACrjB,SAAL,CAAeyf,WAAf,GAA6B4D,IAA7B;AACD;AACF,SARD;AASD;AAEA,KA7Be,EA6Bd,EA7Bc,CAzuI0yB;AAswIpzB,QAAG,CAAC,UAASxkB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;;AAEA,UAAI4lB,GAAG,GAAGrW,MAAM,CAACpN,SAAP,CAAiB4O,cAA3B;AAAA,UACI8U,KADJ;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAASC,MAAT,CAAgBC,KAAhB,EAAuB;AACrB,YAAI;AACF,iBAAO1M,kBAAkB,CAAC0M,KAAK,CAACnZ,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAD,CAAzB;AACD,SAFD,CAEE,OAAOlM,CAAP,EAAU;AACV,iBAAO,IAAP;AACD;AACF;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAASslB,MAAT,CAAgBD,KAAhB,EAAuB;AACrB,YAAI;AACF,iBAAOnM,kBAAkB,CAACmM,KAAD,CAAzB;AACD,SAFD,CAEE,OAAOrlB,CAAP,EAAU;AACV,iBAAO,IAAP;AACD;AACF;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAASulB,WAAT,CAAqBC,KAArB,EAA4B;AAC1B,YAAIC,MAAM,GAAG,qBAAb;AAAA,YACIvU,MAAM,GAAG,EADb;AAAA,YAEIwU,IAFJ;;AAIA,eAAOA,IAAI,GAAGD,MAAM,CAAClT,IAAP,CAAYiT,KAAZ,CAAd,EAAkC;AAChC,cAAI7Q,GAAG,GAAGyQ,MAAM,CAACM,IAAI,CAAC,CAAD,CAAL,CAAhB;AAAA,cACIxV,KAAK,GAAGkV,MAAM,CAACM,IAAI,CAAC,CAAD,CAAL,CADlB,CADgC,CAIhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,cAAI/Q,GAAG,KAAK,IAAR,IAAgBzE,KAAK,KAAK,IAA1B,IAAkCyE,GAAG,IAAIzD,MAA7C,EAAqD;AACrDA,UAAAA,MAAM,CAACyD,GAAD,CAAN,GAAczE,KAAd;AACD;;AAED,eAAOgB,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAASyU,cAAT,CAAwBpW,GAAxB,EAA6BqW,MAA7B,EAAqC;AACnCA,QAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB;AAEA,YAAIC,KAAK,GAAG,EAAZ;AAAA,YACI3V,KADJ;AAAA,YAEIyE,GAFJ,CAHmC,CAOnC;AACA;AACA;;AACA,YAAI,aAAa,OAAOiR,MAAxB,EAAgCA,MAAM,GAAG,GAAT;;AAEhC,aAAKjR,GAAL,IAAYpF,GAAZ,EAAiB;AACf,cAAI2V,GAAG,CAACtkB,IAAJ,CAAS2O,GAAT,EAAcoF,GAAd,CAAJ,EAAwB;AACtBzE,YAAAA,KAAK,GAAGX,GAAG,CAACoF,GAAD,CAAX,CADsB,CAGtB;AACA;AACA;AACA;;AACA,gBAAI,CAACzE,KAAD,KAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKiV,KAA5B,IAAqCW,KAAK,CAAC5V,KAAD,CAArD,CAAJ,EAAmE;AACjEA,cAAAA,KAAK,GAAG,EAAR;AACD;;AAEDyE,YAAAA,GAAG,GAAGuE,kBAAkB,CAACvE,GAAD,CAAxB;AACAzE,YAAAA,KAAK,GAAGgJ,kBAAkB,CAAChJ,KAAD,CAA1B,CAZsB,CActB;AACA;AACA;AACA;;AACA,gBAAIyE,GAAG,KAAK,IAAR,IAAgBzE,KAAK,KAAK,IAA9B,EAAoC;AACpC2V,YAAAA,KAAK,CAACxU,IAAN,CAAWsD,GAAG,GAAE,GAAL,GAAUzE,KAArB;AACD;AACF;;AAED,eAAO2V,KAAK,CAAChlB,MAAN,GAAe+kB,MAAM,GAAGC,KAAK,CAACvU,IAAN,CAAW,GAAX,CAAxB,GAA0C,EAAjD;AACD,OAhHyC,CAkH1C;AACA;AACA;;;AACAhS,MAAAA,OAAO,CAACoF,SAAR,GAAoBihB,cAApB;AACArmB,MAAAA,OAAO,CAACkH,KAAR,GAAgB+e,WAAhB;AAEC,KAxHQ,EAwHP,EAxHO,CAtwIizB;AA83IpzB,QAAG,CAAC,UAASjlB,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAC,MAAAA,MAAM,CAACD,OAAP,GAAiB,SAASymB,QAAT,CAAkBpc,IAAlB,EAAwBF,QAAxB,EAAkC;AACjDA,QAAAA,QAAQ,GAAGA,QAAQ,CAACwI,KAAT,CAAe,GAAf,EAAoB,CAApB,CAAX;AACAtI,QAAAA,IAAI,GAAG,CAACA,IAAR;AAEA,YAAI,CAACA,IAAL,EAAW,OAAO,KAAP;;AAEX,gBAAQF,QAAR;AACE,eAAK,MAAL;AACA,eAAK,IAAL;AACA,mBAAOE,IAAI,KAAK,EAAhB;;AAEA,eAAK,OAAL;AACA,eAAK,KAAL;AACA,mBAAOA,IAAI,KAAK,GAAhB;;AAEA,eAAK,KAAL;AACA,mBAAOA,IAAI,KAAK,EAAhB;;AAEA,eAAK,QAAL;AACA,mBAAOA,IAAI,KAAK,EAAhB;;AAEA,eAAK,MAAL;AACA,mBAAO,KAAP;AAhBF;;AAmBA,eAAOA,IAAI,KAAK,CAAhB;AACD,OA1BD;AA4BC,KAxCQ,EAwCP,EAxCO,CA93IizB;AAs6IpzB,QAAG,CAAC,UAASrJ,OAAT,EAAiBf,MAAjB,EAAwBD,OAAxB,EAAgC;AAC1C,OAAC,UAAUM,MAAV,EAAiB;AAAC,SAAC,YAAW;AAC/B;;AAEA,cAAImmB,QAAQ,GAAGzlB,OAAO,CAAC,eAAD,CAAtB;AAAA,cACIsf,EAAE,GAAGtf,OAAO,CAAC,gBAAD,CADhB;AAAA,cAEI0lB,mBAAmB,GAAG,4EAF1B;AAAA,cAGIC,MAAM,GAAG,WAHb;AAAA,cAIIC,OAAO,GAAG,+BAJd;AAAA,cAKIvc,IAAI,GAAG,OALX;AAAA,cAMIwc,UAAU,GAAG,kDANjB;AAAA,cAOIC,kBAAkB,GAAG,YAPzB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASC,QAAT,CAAkB7F,GAAlB,EAAuB;AACrB,mBAAO,CAACA,GAAG,GAAGA,GAAH,GAAS,EAAb,EAAiBpR,QAAjB,GAA4BlD,OAA5B,CAAoC8Z,mBAApC,EAAyD,EAAzD,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,cAAIM,KAAK,GAAG,CACV,CAAC,GAAD,EAAM,MAAN,CADU,EAC4B;AACtC,WAAC,GAAD,EAAM,OAAN,CAFU,EAE4B;AACtC,mBAASC,QAAT,CAAkBC,OAAlB,EAA2Brf,GAA3B,EAAgC;AAAM;AACpC,mBAAOsf,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAAT,GAA0B+c,OAAO,CAACta,OAAR,CAAgB,KAAhB,EAAuB,GAAvB,CAA1B,GAAwDsa,OAA/D;AACD,WALS,EAMV,CAAC,GAAD,EAAM,UAAN,CANU,EAM4B;AACtC,WAAC,GAAD,EAAM,MAAN,EAAc,CAAd,CAPU,EAO4B;AACtC,WAACE,GAAD,EAAM,MAAN,EAAclR,SAAd,EAAyB,CAAzB,EAA4B,CAA5B,CARU,EAQ4B;AACtC,WAAC,SAAD,EAAY,MAAZ,EAAoBA,SAApB,EAA+B,CAA/B,CATU,EAS4B;AACtC,WAACkR,GAAD,EAAM,UAAN,EAAkBlR,SAAlB,EAA6B,CAA7B,EAAgC,CAAhC,CAVU,CAU4B;AAV5B,WAAZ;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,cAAI8G,MAAM,GAAG;AAAEpW,YAAAA,IAAI,EAAE,CAAR;AAAWsf,YAAAA,KAAK,EAAE;AAAlB,WAAb;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,mBAASmB,SAAT,CAAmBvhB,GAAnB,EAAwB;AACtB,gBAAIwhB,SAAJ;AAEA,gBAAI,OAAOjnB,MAAP,KAAkB,WAAtB,EAAmCinB,SAAS,GAAGjnB,MAAZ,CAAnC,KACK,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmCgnB,SAAS,GAAGhnB,MAAZ,CAAnC,KACA,IAAI,OAAOC,IAAP,KAAgB,WAApB,EAAiC+mB,SAAS,GAAG/mB,IAAZ,CAAjC,KACA+mB,SAAS,GAAG,EAAZ;AAEL,gBAAIpd,QAAQ,GAAGod,SAAS,CAACpd,QAAV,IAAsB,EAArC;AACApE,YAAAA,GAAG,GAAGA,GAAG,IAAIoE,QAAb;AAEA,gBAAIqd,gBAAgB,GAAG,EAAvB;AAAA,gBACIllB,IAAI,GAAG,OAAOyD,GADlB;AAAA,gBAEIuP,GAFJ;;AAIA,gBAAI,YAAYvP,GAAG,CAACqE,QAApB,EAA8B;AAC5Bod,cAAAA,gBAAgB,GAAG,IAAIC,GAAJ,CAAQC,QAAQ,CAAC3hB,GAAG,CAAC6G,QAAL,CAAhB,EAAgC,EAAhC,CAAnB;AACD,aAFD,MAEO,IAAI,aAAatK,IAAjB,EAAuB;AAC5BklB,cAAAA,gBAAgB,GAAG,IAAIC,GAAJ,CAAQ1hB,GAAR,EAAa,EAAb,CAAnB;;AACA,mBAAKuP,GAAL,IAAY2H,MAAZ,EAAoB,OAAOuK,gBAAgB,CAAClS,GAAD,CAAvB;AACrB,aAHM,MAGA,IAAI,aAAahT,IAAjB,EAAuB;AAC5B,mBAAKgT,GAAL,IAAYvP,GAAZ,EAAiB;AACf,oBAAIuP,GAAG,IAAI2H,MAAX,EAAmB;AACnBuK,gBAAAA,gBAAgB,CAAClS,GAAD,CAAhB,GAAwBvP,GAAG,CAACuP,GAAD,CAA3B;AACD;;AAED,kBAAIkS,gBAAgB,CAACX,OAAjB,KAA6B1Q,SAAjC,EAA4C;AAC1CqR,gBAAAA,gBAAgB,CAACX,OAAjB,GAA2BA,OAAO,CAAC3S,IAAR,CAAanO,GAAG,CAAC2B,IAAjB,CAA3B;AACD;AACF;;AAED,mBAAO8f,gBAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASJ,SAAT,CAAmBO,MAAnB,EAA2B;AACzB,mBACEA,MAAM,KAAK,OAAX,IACAA,MAAM,KAAK,MADX,IAEAA,MAAM,KAAK,OAFX,IAGAA,MAAM,KAAK,QAHX,IAIAA,MAAM,KAAK,KAJX,IAKAA,MAAM,KAAK,MANb;AAQD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASC,eAAT,CAAyBT,OAAzB,EAAkChd,QAAlC,EAA4C;AAC1Cgd,YAAAA,OAAO,GAAGH,QAAQ,CAACG,OAAD,CAAlB;AACAA,YAAAA,OAAO,GAAGA,OAAO,CAACta,OAAR,CAAgB+Z,MAAhB,EAAwB,EAAxB,CAAV;AACAzc,YAAAA,QAAQ,GAAGA,QAAQ,IAAI,EAAvB;AAEA,gBAAI0J,KAAK,GAAGiT,UAAU,CAAC5T,IAAX,CAAgBiU,OAAhB,CAAZ;AACA,gBAAI/c,QAAQ,GAAGyJ,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAL,CAASnH,WAAT,EAAX,GAAoC,EAAnD;AACA,gBAAImb,cAAc,GAAG,CAAC,CAAChU,KAAK,CAAC,CAAD,CAA5B;AACA,gBAAIiU,YAAY,GAAG,CAAC,CAACjU,KAAK,CAAC,CAAD,CAA1B;AACA,gBAAIkU,YAAY,GAAG,CAAnB;AACA,gBAAIC,IAAJ;;AAEA,gBAAIH,cAAJ,EAAoB;AAClB,kBAAIC,YAAJ,EAAkB;AAChBE,gBAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAhB,GAAsBA,KAAK,CAAC,CAAD,CAAlC;AACAkU,gBAAAA,YAAY,GAAGlU,KAAK,CAAC,CAAD,CAAL,CAASrS,MAAT,GAAkBqS,KAAK,CAAC,CAAD,CAAL,CAASrS,MAA1C;AACD,eAHD,MAGO;AACLwmB,gBAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAvB;AACAkU,gBAAAA,YAAY,GAAGlU,KAAK,CAAC,CAAD,CAAL,CAASrS,MAAxB;AACD;AACF,aARD,MAQO;AACL,kBAAIsmB,YAAJ,EAAkB;AAChBE,gBAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAvB;AACAkU,gBAAAA,YAAY,GAAGlU,KAAK,CAAC,CAAD,CAAL,CAASrS,MAAxB;AACD,eAHD,MAGO;AACLwmB,gBAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAZ;AACD;AACF;;AAED,gBAAIzJ,QAAQ,KAAK,OAAjB,EAA0B;AACxB,kBAAI2d,YAAY,IAAI,CAApB,EAAuB;AACrBC,gBAAAA,IAAI,GAAGA,IAAI,CAACzjB,KAAL,CAAW,CAAX,CAAP;AACD;AACF,aAJD,MAIO,IAAI6iB,SAAS,CAAChd,QAAD,CAAb,EAAyB;AAC9B4d,cAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAZ;AACD,aAFM,MAEA,IAAIzJ,QAAJ,EAAc;AACnB,kBAAIyd,cAAJ,EAAoB;AAClBG,gBAAAA,IAAI,GAAGA,IAAI,CAACzjB,KAAL,CAAW,CAAX,CAAP;AACD;AACF,aAJM,MAIA,IAAIwjB,YAAY,IAAI,CAAhB,IAAqBX,SAAS,CAACjd,QAAQ,CAACC,QAAV,CAAlC,EAAuD;AAC5D4d,cAAAA,IAAI,GAAGnU,KAAK,CAAC,CAAD,CAAZ;AACD;;AAED,mBAAO;AACLzJ,cAAAA,QAAQ,EAAEA,QADL;AAELyc,cAAAA,OAAO,EAAEgB,cAAc,IAAIT,SAAS,CAAChd,QAAD,CAF/B;AAGL2d,cAAAA,YAAY,EAAEA,YAHT;AAILC,cAAAA,IAAI,EAAEA;AAJD,aAAP;AAMD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASC,OAAT,CAAiBC,QAAjB,EAA2BC,IAA3B,EAAiC;AAC/B,gBAAID,QAAQ,KAAK,EAAjB,EAAqB,OAAOC,IAAP;AAErB,gBAAI7H,IAAI,GAAG,CAAC6H,IAAI,IAAI,GAAT,EAAcvV,KAAd,CAAoB,GAApB,EAAyBrO,KAAzB,CAA+B,CAA/B,EAAkC,CAAC,CAAnC,EAAsCF,MAAtC,CAA6C6jB,QAAQ,CAACtV,KAAT,CAAe,GAAf,CAA7C,CAAX;AAAA,gBACI7R,CAAC,GAAGuf,IAAI,CAAC9e,MADb;AAAA,gBAEI4mB,IAAI,GAAG9H,IAAI,CAACvf,CAAC,GAAG,CAAL,CAFf;AAAA,gBAGIuN,OAAO,GAAG,KAHd;AAAA,gBAII+Z,EAAE,GAAG,CAJT;;AAMA,mBAAOtnB,CAAC,EAAR,EAAY;AACV,kBAAIuf,IAAI,CAACvf,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnBuf,gBAAAA,IAAI,CAAC2C,MAAL,CAAYliB,CAAZ,EAAe,CAAf;AACD,eAFD,MAEO,IAAIuf,IAAI,CAACvf,CAAD,CAAJ,KAAY,IAAhB,EAAsB;AAC3Buf,gBAAAA,IAAI,CAAC2C,MAAL,CAAYliB,CAAZ,EAAe,CAAf;AACAsnB,gBAAAA,EAAE;AACH,eAHM,MAGA,IAAIA,EAAJ,EAAQ;AACb,oBAAItnB,CAAC,KAAK,CAAV,EAAauN,OAAO,GAAG,IAAV;AACbgS,gBAAAA,IAAI,CAAC2C,MAAL,CAAYliB,CAAZ,EAAe,CAAf;AACAsnB,gBAAAA,EAAE;AACH;AACF;;AAED,gBAAI/Z,OAAJ,EAAagS,IAAI,CAAChS,OAAL,CAAa,EAAb;AACb,gBAAI8Z,IAAI,KAAK,GAAT,IAAgBA,IAAI,KAAK,IAA7B,EAAmC9H,IAAI,CAACtO,IAAL,CAAU,EAAV;AAEnC,mBAAOsO,IAAI,CAACrO,IAAL,CAAU,GAAV,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASwV,GAAT,CAAaN,OAAb,EAAsBhd,QAAtB,EAAgCic,MAAhC,EAAwC;AACtCe,YAAAA,OAAO,GAAGH,QAAQ,CAACG,OAAD,CAAlB;AACAA,YAAAA,OAAO,GAAGA,OAAO,CAACta,OAAR,CAAgB+Z,MAAhB,EAAwB,EAAxB,CAAV;;AAEA,gBAAI,EAAE,gBAAgBa,GAAlB,CAAJ,EAA4B;AAC1B,qBAAO,IAAIA,GAAJ,CAAQN,OAAR,EAAiBhd,QAAjB,EAA2Bic,MAA3B,CAAP;AACD;;AAED,gBAAI8B,QAAJ;AAAA,gBAAcI,SAAd;AAAA,gBAAyBnhB,KAAzB;AAAA,gBAAgCohB,WAAhC;AAAA,gBAA6CtU,KAA7C;AAAA,gBAAoDqB,GAApD;AAAA,gBACIkT,YAAY,GAAGvB,KAAK,CAAC1iB,KAAN,EADnB;AAAA,gBAEIjC,IAAI,GAAG,OAAO6H,QAFlB;AAAA,gBAGIrC,GAAG,GAAG,IAHV;AAAA,gBAII/G,CAAC,GAAG,CAJR,CARsC,CActC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,gBAAI,aAAauB,IAAb,IAAqB,aAAaA,IAAtC,EAA4C;AAC1C8jB,cAAAA,MAAM,GAAGjc,QAAT;AACAA,cAAAA,QAAQ,GAAG,IAAX;AACD;;AAED,gBAAIic,MAAM,IAAI,eAAe,OAAOA,MAApC,EAA4CA,MAAM,GAAG7F,EAAE,CAACpZ,KAAZ;AAE5CgD,YAAAA,QAAQ,GAAGmd,SAAS,CAACnd,QAAD,CAApB,CAhCsC,CAkCtC;AACA;AACA;;AACAme,YAAAA,SAAS,GAAGV,eAAe,CAACT,OAAO,IAAI,EAAZ,EAAgBhd,QAAhB,CAA3B;AACA+d,YAAAA,QAAQ,GAAG,CAACI,SAAS,CAACle,QAAX,IAAuB,CAACke,SAAS,CAACzB,OAA7C;AACA/e,YAAAA,GAAG,CAAC+e,OAAJ,GAAcyB,SAAS,CAACzB,OAAV,IAAqBqB,QAAQ,IAAI/d,QAAQ,CAAC0c,OAAxD;AACA/e,YAAAA,GAAG,CAACsC,QAAJ,GAAeke,SAAS,CAACle,QAAV,IAAsBD,QAAQ,CAACC,QAA/B,IAA2C,EAA1D;AACA+c,YAAAA,OAAO,GAAGmB,SAAS,CAACN,IAApB,CAzCsC,CA2CtC;AACA;AACA;AACA;;AACA,gBACEM,SAAS,CAACle,QAAV,KAAuB,OAAvB,KACEke,SAAS,CAACP,YAAV,KAA2B,CAA3B,IAAgChB,kBAAkB,CAAC7S,IAAnB,CAAwBiT,OAAxB,CADlC,KAEC,CAACmB,SAAS,CAACzB,OAAX,KACEyB,SAAS,CAACle,QAAV,IACCke,SAAS,CAACP,YAAV,GAAyB,CAD1B,IAEC,CAACX,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAHb,CAHH,EAOE;AACAoe,cAAAA,YAAY,CAAC,CAAD,CAAZ,GAAkB,CAAC,MAAD,EAAS,UAAT,CAAlB;AACD;;AAED,mBAAOznB,CAAC,GAAGynB,YAAY,CAAChnB,MAAxB,EAAgCT,CAAC,EAAjC,EAAqC;AACnCwnB,cAAAA,WAAW,GAAGC,YAAY,CAACznB,CAAD,CAA1B;;AAEA,kBAAI,OAAOwnB,WAAP,KAAuB,UAA3B,EAAuC;AACrCpB,gBAAAA,OAAO,GAAGoB,WAAW,CAACpB,OAAD,EAAUrf,GAAV,CAArB;AACA;AACD;;AAEDX,cAAAA,KAAK,GAAGohB,WAAW,CAAC,CAAD,CAAnB;AACAjT,cAAAA,GAAG,GAAGiT,WAAW,CAAC,CAAD,CAAjB;;AAEA,kBAAIphB,KAAK,KAAKA,KAAd,EAAqB;AACnBW,gBAAAA,GAAG,CAACwN,GAAD,CAAH,GAAW6R,OAAX;AACD,eAFD,MAEO,IAAI,aAAa,OAAOhgB,KAAxB,EAA+B;AACpC8M,gBAAAA,KAAK,GAAG9M,KAAK,KAAK,GAAV,GACJggB,OAAO,CAACsB,WAAR,CAAoBthB,KAApB,CADI,GAEJggB,OAAO,CAAC/iB,OAAR,CAAgB+C,KAAhB,CAFJ;;AAIA,oBAAI,CAAC8M,KAAL,EAAY;AACV,sBAAI,aAAa,OAAOsU,WAAW,CAAC,CAAD,CAAnC,EAAwC;AACtCzgB,oBAAAA,GAAG,CAACwN,GAAD,CAAH,GAAW6R,OAAO,CAAC5iB,KAAR,CAAc,CAAd,EAAiB0P,KAAjB,CAAX;AACAkT,oBAAAA,OAAO,GAAGA,OAAO,CAAC5iB,KAAR,CAAc0P,KAAK,GAAGsU,WAAW,CAAC,CAAD,CAAjC,CAAV;AACD,mBAHD,MAGO;AACLzgB,oBAAAA,GAAG,CAACwN,GAAD,CAAH,GAAW6R,OAAO,CAAC5iB,KAAR,CAAc0P,KAAd,CAAX;AACAkT,oBAAAA,OAAO,GAAGA,OAAO,CAAC5iB,KAAR,CAAc,CAAd,EAAiB0P,KAAjB,CAAV;AACD;AACF;AACF,eAdM,MAcA,IAAKA,KAAK,GAAG9M,KAAK,CAAC+L,IAAN,CAAWiU,OAAX,CAAb,EAAmC;AACxCrf,gBAAAA,GAAG,CAACwN,GAAD,CAAH,GAAWrB,KAAK,CAAC,CAAD,CAAhB;AACAkT,gBAAAA,OAAO,GAAGA,OAAO,CAAC5iB,KAAR,CAAc,CAAd,EAAiB0P,KAAK,CAACA,KAAvB,CAAV;AACD;;AAEDnM,cAAAA,GAAG,CAACwN,GAAD,CAAH,GAAWxN,GAAG,CAACwN,GAAD,CAAH,KACT4S,QAAQ,IAAIK,WAAW,CAAC,CAAD,CAAvB,GAA6Bpe,QAAQ,CAACmL,GAAD,CAAR,IAAiB,EAA9C,GAAmD,EAD1C,CAAX,CAhCmC,CAoCnC;AACA;AACA;AACA;;AACA,kBAAIiT,WAAW,CAAC,CAAD,CAAf,EAAoBzgB,GAAG,CAACwN,GAAD,CAAH,GAAWxN,GAAG,CAACwN,GAAD,CAAH,CAAS5I,WAAT,EAAX;AACrB,aAnGqC,CAqGtC;AACA;AACA;AACA;AACA;;;AACA,gBAAI0Z,MAAJ,EAAYte,GAAG,CAACqe,KAAJ,GAAYC,MAAM,CAACte,GAAG,CAACqe,KAAL,CAAlB,CA1G0B,CA4GtC;AACA;AACA;;AACA,gBACI+B,QAAQ,IACP/d,QAAQ,CAAC0c,OADV,IAEC/e,GAAG,CAAC8E,QAAJ,CAAa8b,MAAb,CAAoB,CAApB,MAA2B,GAF5B,KAGE5gB,GAAG,CAAC8E,QAAJ,KAAiB,EAAjB,IAAuBzC,QAAQ,CAACyC,QAAT,KAAsB,EAH/C,CADJ,EAKE;AACA9E,cAAAA,GAAG,CAAC8E,QAAJ,GAAeqb,OAAO,CAACngB,GAAG,CAAC8E,QAAL,EAAezC,QAAQ,CAACyC,QAAxB,CAAtB;AACD,aAtHqC,CAwHtC;AACA;AACA;AACA;;;AACA,gBAAI9E,GAAG,CAAC8E,QAAJ,CAAa8b,MAAb,CAAoB,CAApB,MAA2B,GAA3B,IAAkCtB,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAA/C,EAA+D;AAC7DtC,cAAAA,GAAG,CAAC8E,QAAJ,GAAe,MAAM9E,GAAG,CAAC8E,QAAzB;AACD,aA9HqC,CAgItC;AACA;AACA;AACA;AACA;;;AACA,gBAAI,CAAC8Z,QAAQ,CAAC5e,GAAG,CAACwC,IAAL,EAAWxC,GAAG,CAACsC,QAAf,CAAb,EAAuC;AACrCtC,cAAAA,GAAG,CAACuC,IAAJ,GAAWvC,GAAG,CAACqE,QAAf;AACArE,cAAAA,GAAG,CAACwC,IAAJ,GAAW,EAAX;AACD,aAxIqC,CA0ItC;AACA;AACA;;;AACAxC,YAAAA,GAAG,CAAC6gB,QAAJ,GAAe7gB,GAAG,CAAC8gB,QAAJ,GAAe,EAA9B;;AAEA,gBAAI9gB,GAAG,CAAC+gB,IAAR,EAAc;AACZ5U,cAAAA,KAAK,GAAGnM,GAAG,CAAC+gB,IAAJ,CAASzkB,OAAT,CAAiB,GAAjB,CAAR;;AAEA,kBAAI,CAAC6P,KAAL,EAAY;AACVnM,gBAAAA,GAAG,CAAC6gB,QAAJ,GAAe7gB,GAAG,CAAC+gB,IAAJ,CAAStkB,KAAT,CAAe,CAAf,EAAkB0P,KAAlB,CAAf;AACAnM,gBAAAA,GAAG,CAAC6gB,QAAJ,GAAe9O,kBAAkB,CAACP,kBAAkB,CAACxR,GAAG,CAAC6gB,QAAL,CAAnB,CAAjC;AAEA7gB,gBAAAA,GAAG,CAAC8gB,QAAJ,GAAe9gB,GAAG,CAAC+gB,IAAJ,CAAStkB,KAAT,CAAe0P,KAAK,GAAG,CAAvB,CAAf;AACAnM,gBAAAA,GAAG,CAAC8gB,QAAJ,GAAe/O,kBAAkB,CAACP,kBAAkB,CAACxR,GAAG,CAAC8gB,QAAL,CAAnB,CAAjC;AACD,eAND,MAMO;AACL9gB,gBAAAA,GAAG,CAAC6gB,QAAJ,GAAe9O,kBAAkB,CAACP,kBAAkB,CAACxR,GAAG,CAAC+gB,IAAL,CAAnB,CAAjC;AACD;;AAED/gB,cAAAA,GAAG,CAAC+gB,IAAJ,GAAW/gB,GAAG,CAAC8gB,QAAJ,GAAe9gB,GAAG,CAAC6gB,QAAJ,GAAc,GAAd,GAAmB7gB,GAAG,CAAC8gB,QAAtC,GAAiD9gB,GAAG,CAAC6gB,QAAhE;AACD;;AAED7gB,YAAAA,GAAG,CAACb,MAAJ,GAAaa,GAAG,CAACsC,QAAJ,KAAiB,OAAjB,IAA4Bgd,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAArC,IAAuDtC,GAAG,CAACuC,IAA3D,GACTvC,GAAG,CAACsC,QAAJ,GAAc,IAAd,GAAoBtC,GAAG,CAACuC,IADf,GAET,MAFJ,CA/JsC,CAmKtC;AACA;AACA;;AACAvC,YAAAA,GAAG,CAACJ,IAAJ,GAAWI,GAAG,CAACiI,QAAJ,EAAX;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASpD,GAAT,CAAa0Z,IAAb,EAAmBxV,KAAnB,EAA0BiY,EAA1B,EAA8B;AAC5B,gBAAIhhB,GAAG,GAAG,IAAV;;AAEA,oBAAQue,IAAR;AACE,mBAAK,OAAL;AACE,oBAAI,aAAa,OAAOxV,KAApB,IAA6BA,KAAK,CAACrP,MAAvC,EAA+C;AAC7CqP,kBAAAA,KAAK,GAAG,CAACiY,EAAE,IAAIvI,EAAE,CAACpZ,KAAV,EAAiB0J,KAAjB,CAAR;AACD;;AAED/I,gBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAZ;AACA;;AAEF,mBAAK,MAAL;AACE/I,gBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAZ;;AAEA,oBAAI,CAAC6V,QAAQ,CAAC7V,KAAD,EAAQ/I,GAAG,CAACsC,QAAZ,CAAb,EAAoC;AAClCtC,kBAAAA,GAAG,CAACuC,IAAJ,GAAWvC,GAAG,CAACqE,QAAf;AACArE,kBAAAA,GAAG,CAACue,IAAD,CAAH,GAAY,EAAZ;AACD,iBAHD,MAGO,IAAIxV,KAAJ,EAAW;AAChB/I,kBAAAA,GAAG,CAACuC,IAAJ,GAAWvC,GAAG,CAACqE,QAAJ,GAAc,GAAd,GAAmB0E,KAA9B;AACD;;AAED;;AAEF,mBAAK,UAAL;AACE/I,gBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAZ;AAEA,oBAAI/I,GAAG,CAACwC,IAAR,EAAcuG,KAAK,IAAI,MAAK/I,GAAG,CAACwC,IAAlB;AACdxC,gBAAAA,GAAG,CAACuC,IAAJ,GAAWwG,KAAX;AACA;;AAEF,mBAAK,MAAL;AACE/I,gBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAZ;;AAEA,oBAAIvG,IAAI,CAAC4J,IAAL,CAAUrD,KAAV,CAAJ,EAAsB;AACpBA,kBAAAA,KAAK,GAAGA,KAAK,CAAC+B,KAAN,CAAY,GAAZ,CAAR;AACA9K,kBAAAA,GAAG,CAACwC,IAAJ,GAAWuG,KAAK,CAACkY,GAAN,EAAX;AACAjhB,kBAAAA,GAAG,CAACqE,QAAJ,GAAe0E,KAAK,CAACoB,IAAN,CAAW,GAAX,CAAf;AACD,iBAJD,MAIO;AACLnK,kBAAAA,GAAG,CAACqE,QAAJ,GAAe0E,KAAf;AACA/I,kBAAAA,GAAG,CAACwC,IAAJ,GAAW,EAAX;AACD;;AAED;;AAEF,mBAAK,UAAL;AACExC,gBAAAA,GAAG,CAACsC,QAAJ,GAAeyG,KAAK,CAACnE,WAAN,EAAf;AACA5E,gBAAAA,GAAG,CAAC+e,OAAJ,GAAc,CAACiC,EAAf;AACA;;AAEF,mBAAK,UAAL;AACA,mBAAK,MAAL;AACE,oBAAIjY,KAAJ,EAAW;AACT,sBAAImY,IAAI,GAAG3C,IAAI,KAAK,UAAT,GAAsB,GAAtB,GAA4B,GAAvC;AACAve,kBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAK,CAAC6X,MAAN,CAAa,CAAb,MAAoBM,IAApB,GAA2BA,IAAI,GAAGnY,KAAlC,GAA0CA,KAAtD;AACD,iBAHD,MAGO;AACL/I,kBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxV,KAAZ;AACD;;AACD;;AAEF,mBAAK,UAAL;AACA,mBAAK,UAAL;AACE/I,gBAAAA,GAAG,CAACue,IAAD,CAAH,GAAYxM,kBAAkB,CAAChJ,KAAD,CAA9B;AACA;;AAEF,mBAAK,MAAL;AACE,oBAAIoD,KAAK,GAAGpD,KAAK,CAACzM,OAAN,CAAc,GAAd,CAAZ;;AAEA,oBAAI,CAAC6P,KAAL,EAAY;AACVnM,kBAAAA,GAAG,CAAC6gB,QAAJ,GAAe9X,KAAK,CAACtM,KAAN,CAAY,CAAZ,EAAe0P,KAAf,CAAf;AACAnM,kBAAAA,GAAG,CAAC6gB,QAAJ,GAAe9O,kBAAkB,CAACP,kBAAkB,CAACxR,GAAG,CAAC6gB,QAAL,CAAnB,CAAjC;AAEA7gB,kBAAAA,GAAG,CAAC8gB,QAAJ,GAAe/X,KAAK,CAACtM,KAAN,CAAY0P,KAAK,GAAG,CAApB,CAAf;AACAnM,kBAAAA,GAAG,CAAC8gB,QAAJ,GAAe/O,kBAAkB,CAACP,kBAAkB,CAACxR,GAAG,CAAC8gB,QAAL,CAAnB,CAAjC;AACD,iBAND,MAMO;AACL9gB,kBAAAA,GAAG,CAAC6gB,QAAJ,GAAe9O,kBAAkB,CAACP,kBAAkB,CAACzI,KAAD,CAAnB,CAAjC;AACD;;AAzEL;;AA4EA,iBAAK,IAAI9P,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkmB,KAAK,CAACzlB,MAA1B,EAAkCT,CAAC,EAAnC,EAAuC;AACrC,kBAAIkoB,GAAG,GAAGhC,KAAK,CAAClmB,CAAD,CAAf;AAEA,kBAAIkoB,GAAG,CAAC,CAAD,CAAP,EAAYnhB,GAAG,CAACmhB,GAAG,CAAC,CAAD,CAAJ,CAAH,GAAcnhB,GAAG,CAACmhB,GAAG,CAAC,CAAD,CAAJ,CAAH,CAAYvc,WAAZ,EAAd;AACb;;AAED5E,YAAAA,GAAG,CAAC+gB,IAAJ,GAAW/gB,GAAG,CAAC8gB,QAAJ,GAAe9gB,GAAG,CAAC6gB,QAAJ,GAAc,GAAd,GAAmB7gB,GAAG,CAAC8gB,QAAtC,GAAiD9gB,GAAG,CAAC6gB,QAAhE;AAEA7gB,YAAAA,GAAG,CAACb,MAAJ,GAAaa,GAAG,CAACsC,QAAJ,KAAiB,OAAjB,IAA4Bgd,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAArC,IAAuDtC,GAAG,CAACuC,IAA3D,GACTvC,GAAG,CAACsC,QAAJ,GAAc,IAAd,GAAoBtC,GAAG,CAACuC,IADf,GAET,MAFJ;AAIAvC,YAAAA,GAAG,CAACJ,IAAJ,GAAWI,GAAG,CAACiI,QAAJ,EAAX;AAEA,mBAAOjI,GAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,mBAASiI,QAAT,CAAkB1K,SAAlB,EAA6B;AAC3B,gBAAI,CAACA,SAAD,IAAc,eAAe,OAAOA,SAAxC,EAAmDA,SAAS,GAAGkb,EAAE,CAAClb,SAAf;AAEnD,gBAAI8gB,KAAJ;AAAA,gBACIre,GAAG,GAAG,IADV;AAAA,gBAEIuC,IAAI,GAAGvC,GAAG,CAACuC,IAFf;AAAA,gBAGID,QAAQ,GAAGtC,GAAG,CAACsC,QAHnB;AAKA,gBAAIA,QAAQ,IAAIA,QAAQ,CAACse,MAAT,CAAgBte,QAAQ,CAAC5I,MAAT,GAAkB,CAAlC,MAAyC,GAAzD,EAA8D4I,QAAQ,IAAI,GAAZ;AAE9D,gBAAIyH,MAAM,GACRzH,QAAQ,IACNtC,GAAG,CAACsC,QAAJ,IAAgBtC,GAAG,CAAC+e,OAArB,IAAiCO,SAAS,CAACtf,GAAG,CAACsC,QAAL,CAA1C,GAA2D,IAA3D,GAAkE,EAD3D,CADV;;AAIA,gBAAItC,GAAG,CAAC6gB,QAAR,EAAkB;AAChB9W,cAAAA,MAAM,IAAI/J,GAAG,CAAC6gB,QAAd;AACA,kBAAI7gB,GAAG,CAAC8gB,QAAR,EAAkB/W,MAAM,IAAI,MAAK/J,GAAG,CAAC8gB,QAAnB;AAClB/W,cAAAA,MAAM,IAAI,GAAV;AACD,aAJD,MAIO,IAAI/J,GAAG,CAAC8gB,QAAR,EAAkB;AACvB/W,cAAAA,MAAM,IAAI,MAAK/J,GAAG,CAAC8gB,QAAnB;AACA/W,cAAAA,MAAM,IAAI,GAAV;AACD,aAHM,MAGA,IACL/J,GAAG,CAACsC,QAAJ,KAAiB,OAAjB,IACAgd,SAAS,CAACtf,GAAG,CAACsC,QAAL,CADT,IAEA,CAACC,IAFD,IAGAvC,GAAG,CAAC8E,QAAJ,KAAiB,GAJZ,EAKL;AACA;AACA;AACA;AACA;AACAiF,cAAAA,MAAM,IAAI,GAAV;AACD,aAhC0B,CAkC3B;AACA;AACA;AACA;AACA;;;AACA,gBAAIxH,IAAI,CAACA,IAAI,CAAC7I,MAAL,GAAc,CAAf,CAAJ,KAA0B,GAA1B,IAAkC8I,IAAI,CAAC4J,IAAL,CAAUpM,GAAG,CAACqE,QAAd,KAA2B,CAACrE,GAAG,CAACwC,IAAtE,EAA6E;AAC3ED,cAAAA,IAAI,IAAI,GAAR;AACD;;AAEDwH,YAAAA,MAAM,IAAIxH,IAAI,GAAGvC,GAAG,CAAC8E,QAArB;AAEAuZ,YAAAA,KAAK,GAAG,aAAa,OAAOre,GAAG,CAACqe,KAAxB,GAAgC9gB,SAAS,CAACyC,GAAG,CAACqe,KAAL,CAAzC,GAAuDre,GAAG,CAACqe,KAAnE;AACA,gBAAIA,KAAJ,EAAWtU,MAAM,IAAI,QAAQsU,KAAK,CAACuC,MAAN,CAAa,CAAb,CAAR,GAA0B,MAAKvC,KAA/B,GAAuCA,KAAjD;AAEX,gBAAIre,GAAG,CAACjB,IAAR,EAAcgL,MAAM,IAAI/J,GAAG,CAACjB,IAAd;AAEd,mBAAOgL,MAAP;AACD;;AAED4V,UAAAA,GAAG,CAACrlB,SAAJ,GAAgB;AAAEuK,YAAAA,GAAG,EAAEA,GAAP;AAAYoD,YAAAA,QAAQ,EAAEA;AAAtB,WAAhB,CAlkB+B,CAokB/B;AACA;AACA;AACA;;AACA0X,UAAAA,GAAG,CAACG,eAAJ,GAAsBA,eAAtB;AACAH,UAAAA,GAAG,CAACtd,QAAJ,GAAemd,SAAf;AACAG,UAAAA,GAAG,CAACT,QAAJ,GAAeA,QAAf;AACAS,UAAAA,GAAG,CAAClH,EAAJ,GAASA,EAAT;AAEArgB,UAAAA,MAAM,CAACD,OAAP,GAAiBwnB,GAAjB;AAEC,SA/kBkB,EA+kBhBlmB,IA/kBgB,CA+kBX,IA/kBW;AA+kBL,OA/kBd,EA+kBgBA,IA/kBhB,CA+kBqB,IA/kBrB,EA+kB0B,OAAOhB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,GAAqC,OAAOF,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EA/kBjJ;AAilBC,KAllBQ,EAklBP;AAAC,wBAAiB,EAAlB;AAAqB,uBAAgB;AAArC,KAllBO;AAt6IizB,GAA5c,EAw/JjU,EAx/JiU,EAw/J9T,CAAC,CAAD,CAx/J8T,EAw/JzT,CAx/JyT,CAAP;AAy/JtW,CAz/JD","sourcesContent":["/* sockjs-client v1.6.0 | http://sockjs.org | MIT license */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.SockJS = f()}})(function(){var define,module,exports;return (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){\n(function (global){(function (){\n'use strict';\n\nvar transportList = require('./transport-list');\n\nmodule.exports = require('./main')(transportList);\n\n// TODO can't get rid of this until all servers do\nif ('_sockjs_onload' in global) {\n setTimeout(global._sockjs_onload, 1);\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./main\":14,\"./transport-list\":16}],2:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , Event = require('./event')\n ;\n\nfunction CloseEvent() {\n Event.call(this);\n this.initEvent('close', false, false);\n this.wasClean = false;\n this.code = 0;\n this.reason = '';\n}\n\ninherits(CloseEvent, Event);\n\nmodule.exports = CloseEvent;\n\n},{\"./event\":4,\"inherits\":57}],3:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , EventTarget = require('./eventtarget')\n ;\n\nfunction EventEmitter() {\n EventTarget.call(this);\n}\n\ninherits(EventEmitter, EventTarget);\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n if (type) {\n delete this._listeners[type];\n } else {\n this._listeners = {};\n }\n};\n\nEventEmitter.prototype.once = function(type, listener) {\n var self = this\n , fired = false;\n\n function g() {\n self.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n this.on(type, g);\n};\n\nEventEmitter.prototype.emit = function() {\n var type = arguments[0];\n var listeners = this._listeners[type];\n if (!listeners) {\n return;\n }\n // equivalent of Array.prototype.slice.call(arguments, 1);\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var ai = 1; ai < l; ai++) {\n args[ai - 1] = arguments[ai];\n }\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;\nEventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;\n\nmodule.exports.EventEmitter = EventEmitter;\n\n},{\"./eventtarget\":5,\"inherits\":57}],4:[function(require,module,exports){\n'use strict';\n\nfunction Event(eventType) {\n this.type = eventType;\n}\n\nEvent.prototype.initEvent = function(eventType, canBubble, cancelable) {\n this.type = eventType;\n this.bubbles = canBubble;\n this.cancelable = cancelable;\n this.timeStamp = +new Date();\n return this;\n};\n\nEvent.prototype.stopPropagation = function() {};\nEvent.prototype.preventDefault = function() {};\n\nEvent.CAPTURING_PHASE = 1;\nEvent.AT_TARGET = 2;\nEvent.BUBBLING_PHASE = 3;\n\nmodule.exports = Event;\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\n/* Simplified implementation of DOM2 EventTarget.\n * http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget\n */\n\nfunction EventTarget() {\n this._listeners = {};\n}\n\nEventTarget.prototype.addEventListener = function(eventType, listener) {\n if (!(eventType in this._listeners)) {\n this._listeners[eventType] = [];\n }\n var arr = this._listeners[eventType];\n // #4\n if (arr.indexOf(listener) === -1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n arr = arr.concat([listener]);\n }\n this._listeners[eventType] = arr;\n};\n\nEventTarget.prototype.removeEventListener = function(eventType, listener) {\n var arr = this._listeners[eventType];\n if (!arr) {\n return;\n }\n var idx = arr.indexOf(listener);\n if (idx !== -1) {\n if (arr.length > 1) {\n // Make a copy so as not to interfere with a current dispatchEvent.\n this._listeners[eventType] = arr.slice(0, idx).concat(arr.slice(idx + 1));\n } else {\n delete this._listeners[eventType];\n }\n return;\n }\n};\n\nEventTarget.prototype.dispatchEvent = function() {\n var event = arguments[0];\n var t = event.type;\n // equivalent of Array.prototype.slice.call(arguments, 0);\n var args = arguments.length === 1 ? [event] : Array.apply(null, arguments);\n // TODO: This doesn't match the real behavior; per spec, onfoo get\n // their place in line from the /first/ time they're set from\n // non-null. Although WebKit bumps it to the end every time it's\n // set.\n if (this['on' + t]) {\n this['on' + t].apply(this, args);\n }\n if (t in this._listeners) {\n // Grab a reference to the listeners list. removeEventListener may alter the list.\n var listeners = this._listeners[t];\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(this, args);\n }\n }\n};\n\nmodule.exports = EventTarget;\n\n},{}],6:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , Event = require('./event')\n ;\n\nfunction TransportMessageEvent(data) {\n Event.call(this);\n this.initEvent('message', false, false);\n this.data = data;\n}\n\ninherits(TransportMessageEvent, Event);\n\nmodule.exports = TransportMessageEvent;\n\n},{\"./event\":4,\"inherits\":57}],7:[function(require,module,exports){\n'use strict';\n\nvar iframeUtils = require('./utils/iframe')\n ;\n\nfunction FacadeJS(transport) {\n this._transport = transport;\n transport.on('message', this._transportMessage.bind(this));\n transport.on('close', this._transportClose.bind(this));\n}\n\nFacadeJS.prototype._transportClose = function(code, reason) {\n iframeUtils.postMessage('c', JSON.stringify([code, reason]));\n};\nFacadeJS.prototype._transportMessage = function(frame) {\n iframeUtils.postMessage('t', frame);\n};\nFacadeJS.prototype._send = function(data) {\n this._transport.send(data);\n};\nFacadeJS.prototype._close = function() {\n this._transport.close();\n this._transport.removeAllListeners();\n};\n\nmodule.exports = FacadeJS;\n\n},{\"./utils/iframe\":47}],8:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar urlUtils = require('./utils/url')\n , eventUtils = require('./utils/event')\n , FacadeJS = require('./facade')\n , InfoIframeReceiver = require('./info-iframe-receiver')\n , iframeUtils = require('./utils/iframe')\n , loc = require('./location')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:iframe-bootstrap');\n}\n\nmodule.exports = function(SockJS, availableTransports) {\n var transportMap = {};\n availableTransports.forEach(function(at) {\n if (at.facadeTransport) {\n transportMap[at.facadeTransport.transportName] = at.facadeTransport;\n }\n });\n\n // hard-coded for the info iframe\n // TODO see if we can make this more dynamic\n transportMap[InfoIframeReceiver.transportName] = InfoIframeReceiver;\n var parentOrigin;\n\n /* eslint-disable camelcase */\n SockJS.bootstrap_iframe = function() {\n /* eslint-enable camelcase */\n var facade;\n iframeUtils.currentWindowId = loc.hash.slice(1);\n var onMessage = function(e) {\n if (e.source !== parent) {\n return;\n }\n if (typeof parentOrigin === 'undefined') {\n parentOrigin = e.origin;\n }\n if (e.origin !== parentOrigin) {\n return;\n }\n\n var iframeMessage;\n try {\n iframeMessage = JSON.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== iframeUtils.currentWindowId) {\n return;\n }\n switch (iframeMessage.type) {\n case 's':\n var p;\n try {\n p = JSON.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n break;\n }\n var version = p[0];\n var transport = p[1];\n var transUrl = p[2];\n var baseUrl = p[3];\n debug(version, transport, transUrl, baseUrl);\n // change this to semver logic\n if (version !== SockJS.version) {\n throw new Error('Incompatible SockJS! Main site uses:' +\n ' \"' + version + '\", the iframe:' +\n ' \"' + SockJS.version + '\".');\n }\n\n if (!urlUtils.isOriginEqual(transUrl, loc.href) ||\n !urlUtils.isOriginEqual(baseUrl, loc.href)) {\n throw new Error('Can\\'t connect to different domain from within an ' +\n 'iframe. (' + loc.href + ', ' + transUrl + ', ' + baseUrl + ')');\n }\n facade = new FacadeJS(new transportMap[transport](transUrl, baseUrl));\n break;\n case 'm':\n facade._send(iframeMessage.data);\n break;\n case 'c':\n if (facade) {\n facade._close();\n }\n facade = null;\n break;\n }\n };\n\n eventUtils.attachEvent('message', onMessage);\n\n // Start\n iframeUtils.postMessage('s');\n };\n};\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"./facade\":7,\"./info-iframe-receiver\":10,\"./location\":13,\"./utils/event\":46,\"./utils/iframe\":47,\"./utils/url\":52,\"debug\":55}],9:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , objectUtils = require('./utils/object')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-ajax');\n}\n\nfunction InfoAjax(url, AjaxObject) {\n EventEmitter.call(this);\n\n var self = this;\n var t0 = +new Date();\n this.xo = new AjaxObject('GET', url);\n\n this.xo.once('finish', function(status, text) {\n var info, rtt;\n if (status === 200) {\n rtt = (+new Date()) - t0;\n if (text) {\n try {\n info = JSON.parse(text);\n } catch (e) {\n debug('bad json', text);\n }\n }\n\n if (!objectUtils.isObject(info)) {\n info = {};\n }\n }\n self.emit('finish', info, rtt);\n self.removeAllListeners();\n });\n}\n\ninherits(InfoAjax, EventEmitter);\n\nInfoAjax.prototype.close = function() {\n this.removeAllListeners();\n this.xo.close();\n};\n\nmodule.exports = InfoAjax;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"./utils/object\":49,\"debug\":55,\"events\":3,\"inherits\":57}],10:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , XHRLocalObject = require('./transport/sender/xhr-local')\n , InfoAjax = require('./info-ajax')\n ;\n\nfunction InfoReceiverIframe(transUrl) {\n var self = this;\n EventEmitter.call(this);\n\n this.ir = new InfoAjax(transUrl, XHRLocalObject);\n this.ir.once('finish', function(info, rtt) {\n self.ir = null;\n self.emit('message', JSON.stringify([info, rtt]));\n });\n}\n\ninherits(InfoReceiverIframe, EventEmitter);\n\nInfoReceiverIframe.transportName = 'iframe-info-receiver';\n\nInfoReceiverIframe.prototype.close = function() {\n if (this.ir) {\n this.ir.close();\n this.ir = null;\n }\n this.removeAllListeners();\n};\n\nmodule.exports = InfoReceiverIframe;\n\n},{\"./info-ajax\":9,\"./transport/sender/xhr-local\":37,\"events\":3,\"inherits\":57}],11:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , utils = require('./utils/event')\n , IframeTransport = require('./transport/iframe')\n , InfoReceiverIframe = require('./info-iframe-receiver')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-iframe');\n}\n\nfunction InfoIframe(baseUrl, url) {\n var self = this;\n EventEmitter.call(this);\n\n var go = function() {\n var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl);\n\n ifr.once('message', function(msg) {\n if (msg) {\n var d;\n try {\n d = JSON.parse(msg);\n } catch (e) {\n debug('bad json', msg);\n self.emit('finish');\n self.close();\n return;\n }\n\n var info = d[0], rtt = d[1];\n self.emit('finish', info, rtt);\n }\n self.close();\n });\n\n ifr.once('close', function() {\n self.emit('finish');\n self.close();\n });\n };\n\n // TODO this seems the same as the 'needBody' from transports\n if (!global.document.body) {\n utils.attachEvent('load', go);\n } else {\n go();\n }\n}\n\ninherits(InfoIframe, EventEmitter);\n\nInfoIframe.enabled = function() {\n return IframeTransport.enabled();\n};\n\nInfoIframe.prototype.close = function() {\n if (this.ifr) {\n this.ifr.close();\n }\n this.removeAllListeners();\n this.ifr = null;\n};\n\nmodule.exports = InfoIframe;\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./info-iframe-receiver\":10,\"./transport/iframe\":22,\"./utils/event\":46,\"debug\":55,\"events\":3,\"inherits\":57}],12:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , urlUtils = require('./utils/url')\n , XDR = require('./transport/sender/xdr')\n , XHRCors = require('./transport/sender/xhr-cors')\n , XHRLocal = require('./transport/sender/xhr-local')\n , XHRFake = require('./transport/sender/xhr-fake')\n , InfoIframe = require('./info-iframe')\n , InfoAjax = require('./info-ajax')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:info-receiver');\n}\n\nfunction InfoReceiver(baseUrl, urlInfo) {\n debug(baseUrl);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function() {\n self.doXhr(baseUrl, urlInfo);\n }, 0);\n}\n\ninherits(InfoReceiver, EventEmitter);\n\n// TODO this is currently ignoring the list of available transports and the whitelist\n\nInfoReceiver._getReceiver = function(baseUrl, url, urlInfo) {\n // determine method of CORS support (if needed)\n if (urlInfo.sameOrigin) {\n return new InfoAjax(url, XHRLocal);\n }\n if (XHRCors.enabled) {\n return new InfoAjax(url, XHRCors);\n }\n if (XDR.enabled && urlInfo.sameScheme) {\n return new InfoAjax(url, XDR);\n }\n if (InfoIframe.enabled()) {\n return new InfoIframe(baseUrl, url);\n }\n return new InfoAjax(url, XHRFake);\n};\n\nInfoReceiver.prototype.doXhr = function(baseUrl, urlInfo) {\n var self = this\n , url = urlUtils.addPath(baseUrl, '/info')\n ;\n debug('doXhr', url);\n\n this.xo = InfoReceiver._getReceiver(baseUrl, url, urlInfo);\n\n this.timeoutRef = setTimeout(function() {\n debug('timeout');\n self._cleanup(false);\n self.emit('finish');\n }, InfoReceiver.timeout);\n\n this.xo.once('finish', function(info, rtt) {\n debug('finish', info, rtt);\n self._cleanup(true);\n self.emit('finish', info, rtt);\n });\n};\n\nInfoReceiver.prototype._cleanup = function(wasClean) {\n debug('_cleanup');\n clearTimeout(this.timeoutRef);\n this.timeoutRef = null;\n if (!wasClean && this.xo) {\n this.xo.close();\n }\n this.xo = null;\n};\n\nInfoReceiver.prototype.close = function() {\n debug('close');\n this.removeAllListeners();\n this._cleanup(false);\n};\n\nInfoReceiver.timeout = 8000;\n\nmodule.exports = InfoReceiver;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"./info-ajax\":9,\"./info-iframe\":11,\"./transport/sender/xdr\":34,\"./transport/sender/xhr-cors\":35,\"./transport/sender/xhr-fake\":36,\"./transport/sender/xhr-local\":37,\"./utils/url\":52,\"debug\":55,\"events\":3,\"inherits\":57}],13:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nmodule.exports = global.location || {\n origin: 'http://localhost:80'\n, protocol: 'http:'\n, host: 'localhost'\n, port: 80\n, href: 'http://localhost/'\n, hash: ''\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],14:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nrequire('./shims');\n\nvar URL = require('url-parse')\n , inherits = require('inherits')\n , random = require('./utils/random')\n , escape = require('./utils/escape')\n , urlUtils = require('./utils/url')\n , eventUtils = require('./utils/event')\n , transport = require('./utils/transport')\n , objectUtils = require('./utils/object')\n , browser = require('./utils/browser')\n , log = require('./utils/log')\n , Event = require('./event/event')\n , EventTarget = require('./event/eventtarget')\n , loc = require('./location')\n , CloseEvent = require('./event/close')\n , TransportMessageEvent = require('./event/trans-message')\n , InfoReceiver = require('./info-receiver')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:main');\n}\n\nvar transports;\n\n// follow constructor steps defined at http://dev.w3.org/html5/websockets/#the-websocket-interface\nfunction SockJS(url, protocols, options) {\n if (!(this instanceof SockJS)) {\n return new SockJS(url, protocols, options);\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'SockJS: 1 argument required, but only 0 present\");\n }\n EventTarget.call(this);\n\n this.readyState = SockJS.CONNECTING;\n this.extensions = '';\n this.protocol = '';\n\n // non-standard extension\n options = options || {};\n if (options.protocols_whitelist) {\n log.warn(\"'protocols_whitelist' is DEPRECATED. Use 'transports' instead.\");\n }\n this._transportsWhitelist = options.transports;\n this._transportOptions = options.transportOptions || {};\n this._timeout = options.timeout || 0;\n\n var sessionId = options.sessionId || 8;\n if (typeof sessionId === 'function') {\n this._generateSessionId = sessionId;\n } else if (typeof sessionId === 'number') {\n this._generateSessionId = function() {\n return random.string(sessionId);\n };\n } else {\n throw new TypeError('If sessionId is used in the options, it needs to be a number or a function.');\n }\n\n this._server = options.server || random.numberString(1000);\n\n // Step 1 of WS spec - parse and validate the url. Issue #8\n var parsedUrl = new URL(url);\n if (!parsedUrl.host || !parsedUrl.protocol) {\n throw new SyntaxError(\"The URL '\" + url + \"' is invalid\");\n } else if (parsedUrl.hash) {\n throw new SyntaxError('The URL must not contain a fragment');\n } else if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n throw new SyntaxError(\"The URL's scheme must be either 'http:' or 'https:'. '\" + parsedUrl.protocol + \"' is not allowed.\");\n }\n\n var secure = parsedUrl.protocol === 'https:';\n // Step 2 - don't allow secure origin with an insecure protocol\n if (loc.protocol === 'https:' && !secure) {\n // exception is 127.0.0.0/8 and ::1 urls\n if (!urlUtils.isLoopbackAddr(parsedUrl.hostname)) {\n throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS');\n }\n }\n\n // Step 3 - check port access - no need here\n // Step 4 - parse protocols argument\n if (!protocols) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n protocols = [protocols];\n }\n\n // Step 5 - check protocols argument\n var sortedProtocols = protocols.sort();\n sortedProtocols.forEach(function(proto, i) {\n if (!proto) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is invalid.\");\n }\n if (i < (sortedProtocols.length - 1) && proto === sortedProtocols[i + 1]) {\n throw new SyntaxError(\"The protocols entry '\" + proto + \"' is duplicated.\");\n }\n });\n\n // Step 6 - convert origin\n var o = urlUtils.getOrigin(loc.href);\n this._origin = o ? o.toLowerCase() : null;\n\n // remove the trailing slash\n parsedUrl.set('pathname', parsedUrl.pathname.replace(/\\/+$/, ''));\n\n // store the sanitized url\n this.url = parsedUrl.href;\n debug('using url', this.url);\n\n // Step 7 - start connection in background\n // obtain server info\n // http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-26\n this._urlInfo = {\n nullOrigin: !browser.hasDomain()\n , sameOrigin: urlUtils.isOriginEqual(this.url, loc.href)\n , sameScheme: urlUtils.isSchemeEqual(this.url, loc.href)\n };\n\n this._ir = new InfoReceiver(this.url, this._urlInfo);\n this._ir.once('finish', this._receiveInfo.bind(this));\n}\n\ninherits(SockJS, EventTarget);\n\nfunction userSetCode(code) {\n return code === 1000 || (code >= 3000 && code <= 4999);\n}\n\nSockJS.prototype.close = function(code, reason) {\n // Step 1\n if (code && !userSetCode(code)) {\n throw new Error('InvalidAccessError: Invalid code');\n }\n // Step 2.4 states the max is 123 bytes, but we are just checking length\n if (reason && reason.length > 123) {\n throw new SyntaxError('reason argument has an invalid length');\n }\n\n // Step 3.1\n if (this.readyState === SockJS.CLOSING || this.readyState === SockJS.CLOSED) {\n return;\n }\n\n // TODO look at docs to determine how to set this\n var wasClean = true;\n this._close(code || 1000, reason || 'Normal closure', wasClean);\n};\n\nSockJS.prototype.send = function(data) {\n // #13 - convert anything non-string to string\n // TODO this currently turns objects into [object Object]\n if (typeof data !== 'string') {\n data = '' + data;\n }\n if (this.readyState === SockJS.CONNECTING) {\n throw new Error('InvalidStateError: The connection has not been established yet');\n }\n if (this.readyState !== SockJS.OPEN) {\n return;\n }\n this._transport.send(escape.quote(data));\n};\n\nSockJS.version = require('./version');\n\nSockJS.CONNECTING = 0;\nSockJS.OPEN = 1;\nSockJS.CLOSING = 2;\nSockJS.CLOSED = 3;\n\nSockJS.prototype._receiveInfo = function(info, rtt) {\n debug('_receiveInfo', rtt);\n this._ir = null;\n if (!info) {\n this._close(1002, 'Cannot connect to server');\n return;\n }\n\n // establish a round-trip timeout (RTO) based on the\n // round-trip time (RTT)\n this._rto = this.countRTO(rtt);\n // allow server to override url used for the actual transport\n this._transUrl = info.base_url ? info.base_url : this.url;\n info = objectUtils.extend(info, this._urlInfo);\n debug('info', info);\n // determine list of desired and supported transports\n var enabledTransports = transports.filterToEnabled(this._transportsWhitelist, info);\n this._transports = enabledTransports.main;\n debug(this._transports.length + ' enabled transports');\n\n this._connect();\n};\n\nSockJS.prototype._connect = function() {\n for (var Transport = this._transports.shift(); Transport; Transport = this._transports.shift()) {\n debug('attempt', Transport.transportName);\n if (Transport.needBody) {\n if (!global.document.body ||\n (typeof global.document.readyState !== 'undefined' &&\n global.document.readyState !== 'complete' &&\n global.document.readyState !== 'interactive')) {\n debug('waiting for body');\n this._transports.unshift(Transport);\n eventUtils.attachEvent('load', this._connect.bind(this));\n return;\n }\n }\n\n // calculate timeout based on RTO and round trips. Default to 5s\n var timeoutMs = Math.max(this._timeout, (this._rto * Transport.roundTrips) || 5000);\n this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs);\n debug('using timeout', timeoutMs);\n\n var transportUrl = urlUtils.addPath(this._transUrl, '/' + this._server + '/' + this._generateSessionId());\n var options = this._transportOptions[Transport.transportName];\n debug('transport url', transportUrl);\n var transportObj = new Transport(transportUrl, this._transUrl, options);\n transportObj.on('message', this._transportMessage.bind(this));\n transportObj.once('close', this._transportClose.bind(this));\n transportObj.transportName = Transport.transportName;\n this._transport = transportObj;\n\n return;\n }\n this._close(2000, 'All transports failed', false);\n};\n\nSockJS.prototype._transportTimeout = function() {\n debug('_transportTimeout');\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transport) {\n this._transport.close();\n }\n\n this._transportClose(2007, 'Transport timed out');\n }\n};\n\nSockJS.prototype._transportMessage = function(msg) {\n debug('_transportMessage', msg);\n var self = this\n , type = msg.slice(0, 1)\n , content = msg.slice(1)\n , payload\n ;\n\n // first check for messages that don't need a payload\n switch (type) {\n case 'o':\n this._open();\n return;\n case 'h':\n this.dispatchEvent(new Event('heartbeat'));\n debug('heartbeat', this.transport);\n return;\n }\n\n if (content) {\n try {\n payload = JSON.parse(content);\n } catch (e) {\n debug('bad json', content);\n }\n }\n\n if (typeof payload === 'undefined') {\n debug('empty payload', content);\n return;\n }\n\n switch (type) {\n case 'a':\n if (Array.isArray(payload)) {\n payload.forEach(function(p) {\n debug('message', self.transport, p);\n self.dispatchEvent(new TransportMessageEvent(p));\n });\n }\n break;\n case 'm':\n debug('message', this.transport, payload);\n this.dispatchEvent(new TransportMessageEvent(payload));\n break;\n case 'c':\n if (Array.isArray(payload) && payload.length === 2) {\n this._close(payload[0], payload[1], true);\n }\n break;\n }\n};\n\nSockJS.prototype._transportClose = function(code, reason) {\n debug('_transportClose', this.transport, code, reason);\n if (this._transport) {\n this._transport.removeAllListeners();\n this._transport = null;\n this.transport = null;\n }\n\n if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) {\n this._connect();\n return;\n }\n\n this._close(code, reason);\n};\n\nSockJS.prototype._open = function() {\n debug('_open', this._transport && this._transport.transportName, this.readyState);\n if (this.readyState === SockJS.CONNECTING) {\n if (this._transportTimeoutId) {\n clearTimeout(this._transportTimeoutId);\n this._transportTimeoutId = null;\n }\n this.readyState = SockJS.OPEN;\n this.transport = this._transport.transportName;\n this.dispatchEvent(new Event('open'));\n debug('connected', this.transport);\n } else {\n // The server might have been restarted, and lost track of our\n // connection.\n this._close(1006, 'Server lost session');\n }\n};\n\nSockJS.prototype._close = function(code, reason, wasClean) {\n debug('_close', this.transport, code, reason, wasClean, this.readyState);\n var forceFail = false;\n\n if (this._ir) {\n forceFail = true;\n this._ir.close();\n this._ir = null;\n }\n if (this._transport) {\n this._transport.close();\n this._transport = null;\n this.transport = null;\n }\n\n if (this.readyState === SockJS.CLOSED) {\n throw new Error('InvalidStateError: SockJS has already been closed');\n }\n\n this.readyState = SockJS.CLOSING;\n setTimeout(function() {\n this.readyState = SockJS.CLOSED;\n\n if (forceFail) {\n this.dispatchEvent(new Event('error'));\n }\n\n var e = new CloseEvent('close');\n e.wasClean = wasClean || false;\n e.code = code || 1000;\n e.reason = reason;\n\n this.dispatchEvent(e);\n this.onmessage = this.onclose = this.onerror = null;\n debug('disconnected');\n }.bind(this), 0);\n};\n\n// See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/\n// and RFC 2988.\nSockJS.prototype.countRTO = function(rtt) {\n // In a local environment, when using IE8/9 and the `jsonp-polling`\n // transport the time needed to establish a connection (the time that pass\n // from the opening of the transport to the call of `_dispatchOpen`) is\n // around 200msec (the lower bound used in the article above) and this\n // causes spurious timeouts. For this reason we calculate a value slightly\n // larger than that used in the article.\n if (rtt > 100) {\n return 4 * rtt; // rto > 400msec\n }\n return 300 + rtt; // 300msec < rto <= 400msec\n};\n\nmodule.exports = function(availableTransports) {\n transports = transport(availableTransports);\n require('./iframe-bootstrap')(SockJS, availableTransports);\n return SockJS;\n};\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./event/close\":2,\"./event/event\":4,\"./event/eventtarget\":5,\"./event/trans-message\":6,\"./iframe-bootstrap\":8,\"./info-receiver\":12,\"./location\":13,\"./shims\":15,\"./utils/browser\":44,\"./utils/escape\":45,\"./utils/event\":46,\"./utils/log\":48,\"./utils/object\":49,\"./utils/random\":50,\"./utils/transport\":51,\"./utils/url\":52,\"./version\":53,\"debug\":55,\"inherits\":57,\"url-parse\":60}],15:[function(require,module,exports){\n/* eslint-disable */\n/* jscs: disable */\n'use strict';\n\n// pulled specific shims from https://github.com/es-shims/es5-shim\n\nvar ArrayPrototype = Array.prototype;\nvar ObjectPrototype = Object.prototype;\nvar FunctionPrototype = Function.prototype;\nvar StringPrototype = String.prototype;\nvar array_slice = ArrayPrototype.slice;\n\nvar _toString = ObjectPrototype.toString;\nvar isFunction = function (val) {\n return ObjectPrototype.toString.call(val) === '[object Function]';\n};\nvar isArray = function isArray(obj) {\n return _toString.call(obj) === '[object Array]';\n};\nvar isString = function isString(obj) {\n return _toString.call(obj) === '[object String]';\n};\n\nvar supportsDescriptors = Object.defineProperty && (function () {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch (e) { /* this is ES3 */\n return false;\n }\n}());\n\n// Define configurable, writable and non-enumerable props\n// if they don't exist.\nvar defineProperty;\nif (supportsDescriptors) {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && (name in object)) { return; }\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: method\n });\n };\n} else {\n defineProperty = function (object, name, method, forceAssign) {\n if (!forceAssign && (name in object)) { return; }\n object[name] = method;\n };\n}\nvar defineProperties = function (object, map, forceAssign) {\n for (var name in map) {\n if (ObjectPrototype.hasOwnProperty.call(map, name)) {\n defineProperty(object, name, map[name], forceAssign);\n }\n }\n};\n\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError(\"can't convert \" + o + ' to object');\n }\n return Object(o);\n};\n\n//\n// Util\n// ======\n//\n\n// ES5 9.4\n// http://es5.github.com/#x9.4\n// http://jsperf.com/to-integer\n\nfunction toInteger(num) {\n var n = +num;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction ToUint32(x) {\n return x >>> 0;\n}\n\n//\n// Function\n// ========\n//\n\n// ES-5 15.3.4.5\n// http://es5.github.com/#x15.3.4.5\n\nfunction Empty() {}\n\ndefineProperties(FunctionPrototype, {\n bind: function bind(that) { // .length is 1\n // 1. Let Target be the this value.\n var target = this;\n // 2. If IsCallable(Target) is false, throw a TypeError exception.\n if (!isFunction(target)) {\n throw new TypeError('Function.prototype.bind called on incompatible ' + target);\n }\n // 3. Let A be a new (possibly empty) internal list of all of the\n // argument values provided after thisArg (arg1, arg2 etc), in order.\n // XXX slicedArgs will stand in for \"A\" if used\n var args = array_slice.call(arguments, 1); // for normal call\n // 4. Let F be a new native ECMAScript object.\n // 11. Set the [[Prototype]] internal property of F to the standard\n // built-in Function prototype object as specified in 15.3.3.1.\n // 12. Set the [[Call]] internal property of F as described in\n // 15.3.4.5.1.\n // 13. Set the [[Construct]] internal property of F as described in\n // 15.3.4.5.2.\n // 14. Set the [[HasInstance]] internal property of F as described in\n // 15.3.4.5.3.\n var binder = function () {\n\n if (this instanceof bound) {\n // 15.3.4.5.2 [[Construct]]\n // When the [[Construct]] internal method of a function object,\n // F that was created using the bind function is called with a\n // list of arguments ExtraArgs, the following steps are taken:\n // 1. Let target be the value of F's [[TargetFunction]]\n // internal property.\n // 2. If target has no [[Construct]] internal method, a\n // TypeError exception is thrown.\n // 3. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Construct]] internal\n // method of target providing args as the arguments.\n\n var result = target.apply(\n this,\n args.concat(array_slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n // 15.3.4.5.1 [[Call]]\n // When the [[Call]] internal method of a function object, F,\n // which was created using the bind function is called with a\n // this value and a list of arguments ExtraArgs, the following\n // steps are taken:\n // 1. Let boundArgs be the value of F's [[BoundArgs]] internal\n // property.\n // 2. Let boundThis be the value of F's [[BoundThis]] internal\n // property.\n // 3. Let target be the value of F's [[TargetFunction]] internal\n // property.\n // 4. Let args be a new list containing the same values as the\n // list boundArgs in the same order followed by the same\n // values as the list ExtraArgs in the same order.\n // 5. Return the result of calling the [[Call]] internal method\n // of target providing boundThis as the this value and\n // providing args as the arguments.\n\n // equiv: target.call(this, ...boundArgs, ...args)\n return target.apply(\n that,\n args.concat(array_slice.call(arguments))\n );\n\n }\n\n };\n\n // 15. If the [[Class]] internal property of Target is \"Function\", then\n // a. Let L be the length property of Target minus the length of A.\n // b. Set the length own property of F to either 0 or L, whichever is\n // larger.\n // 16. Else set the length own property of F to 0.\n\n var boundLength = Math.max(0, target.length - args.length);\n\n // 17. Set the attributes of the length own property of F to the values\n // specified in 15.3.5.1.\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n // XXX Build a dynamic function with desired amount of arguments is the only\n // way to set the length property of a function.\n // In environments where Content Security Policies enabled (Chrome extensions,\n // for ex.) all use of eval or Function costructor throws an exception.\n // However in all of these environments Function.prototype.bind exists\n // and so this code will never be executed.\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder);\n\n if (target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n // Clean up dangling references.\n Empty.prototype = null;\n }\n\n // TODO\n // 18. Set the [[Extensible]] internal property of F to true.\n\n // TODO\n // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).\n // 20. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"caller\", PropertyDescriptor {[[Get]]: thrower, [[Set]]:\n // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and\n // false.\n // 21. Call the [[DefineOwnProperty]] internal method of F with\n // arguments \"arguments\", PropertyDescriptor {[[Get]]: thrower,\n // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},\n // and false.\n\n // TODO\n // NOTE Function objects created using Function.prototype.bind do not\n // have a prototype property or the [[Code]], [[FormalParameters]], and\n // [[Scope]] internal properties.\n // XXX can't delete prototype in pure-js.\n\n // 22. Return F.\n return bound;\n }\n});\n\n//\n// Array\n// =====\n//\n\n// ES5 15.4.3.2\n// http://es5.github.com/#x15.4.3.2\n// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray\ndefineProperties(Array, { isArray: isArray });\n\n\nvar boxedString = Object('a');\nvar splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\nvar properlyBoxesContext = function properlyBoxed(method) {\n // Check node 0.6.21 bug where third parameter is not boxed\n var properlyBoxesNonStrict = true;\n var properlyBoxesStrict = true;\n if (method) {\n method.call('foo', function (_, __, context) {\n if (typeof context !== 'object') { properlyBoxesNonStrict = false; }\n });\n\n method.call([1], function () {\n 'use strict';\n properlyBoxesStrict = typeof this === 'string';\n }, 'x');\n }\n return !!method && properlyBoxesNonStrict && properlyBoxesStrict;\n};\n\ndefineProperties(ArrayPrototype, {\n forEach: function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && isString(this) ? this.split('') : object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n\n // If no callback function or if callback is not a callable function\n if (!isFunction(fun)) {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n // Invoke the callback function with call, passing arguments:\n // context, property value, property key, thisArg object\n // context\n fun.call(thisp, self[i], i, object);\n }\n }\n }\n}, !properlyBoxesContext(ArrayPrototype.forEach));\n\n// ES5 15.4.4.14\n// http://es5.github.com/#x15.4.4.14\n// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf\nvar hasFirefox2IndexOfBug = Array.prototype.indexOf && [0, 1].indexOf(1, 2) !== -1;\ndefineProperties(ArrayPrototype, {\n indexOf: function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && isString(this) ? this.split('') : toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n\n // handle negative indices\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n }\n}, hasFirefox2IndexOfBug);\n\n//\n// String\n// ======\n//\n\n// ES5 15.5.4.14\n// http://es5.github.com/#x15.5.4.14\n\n// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]\n// Many browsers do not split properly with regular expressions or they\n// do not perform the split correctly under obscure conditions.\n// See http://blog.stevenlevithan.com/archives/cross-browser-split\n// I've tested in many browsers and this seems to cover the deviant ones:\n// 'ab'.split(/(?:ab)*/) should be [\"\", \"\"], not [\"\"]\n// '.'.split(/(.?)(.?)/) should be [\"\", \".\", \"\", \"\"], not [\"\", \"\"]\n// 'tesst'.split(/(s)*/) should be [\"t\", undefined, \"e\", \"s\", \"t\"], not\n// [undefined, \"t\", undefined, \"e\", ...]\n// ''.split(/.?/) should be [], not [\"\"]\n// '.'.split(/()()/) should be [\".\"], not [\"\", \"\", \".\"]\n\nvar string_split = StringPrototype.split;\nif (\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n 'tesst'.split(/(s)*/)[1] === 't' ||\n 'test'.split(/(?:)/, -1).length !== 4 ||\n ''.split(/.?/).length ||\n '.'.split(/()()/).length > 1\n) {\n (function () {\n var compliantExecNpcg = /()??/.exec('')[1] === void 0; // NPCG: nonparticipating capturing group\n\n StringPrototype.split = function (separator, limit) {\n var string = this;\n if (separator === void 0 && limit === 0) {\n return [];\n }\n\n // If `separator` is not a regex, use native split\n if (_toString.call(separator) !== '[object RegExp]') {\n return string_split.call(this, separator, limit);\n }\n\n var output = [],\n flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.extended ? 'x' : '') + // Proposed for ES6\n (separator.sticky ? 'y' : ''), // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator2, match, lastIndex, lastLength;\n separator = new RegExp(separator.source, flags + 'g');\n string += ''; // Type-convert\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp('^' + separator.source + '$(?!\\\\s)', flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n limit = limit === void 0 ?\n -1 >>> 0 : // Math.pow(2, 32) - 1\n ToUint32(limit);\n while (match = separator.exec(string)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === void 0) {\n match[i] = void 0;\n }\n }\n });\n }\n if (match.length > 1 && match.index < string.length) {\n ArrayPrototype.push.apply(output, match.slice(1));\n }\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= limit) {\n break;\n }\n }\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separator.test('')) {\n output.push('');\n }\n } else {\n output.push(string.slice(lastLastIndex));\n }\n return output.length > limit ? output.slice(0, limit) : output;\n };\n }());\n\n// [bugfix, chrome]\n// If separator is undefined, then the result array contains just one String,\n// which is the this value (converted to a String). If limit is not undefined,\n// then the output array is truncated so that it contains no more than limit\n// elements.\n// \"0\".split(undefined, 0) -> []\n} else if ('0'.split(void 0, 0).length) {\n StringPrototype.split = function split(separator, limit) {\n if (separator === void 0 && limit === 0) { return []; }\n return string_split.call(this, separator, limit);\n };\n}\n\n// ECMA-262, 3rd B.2.3\n// Not an ECMAScript standard, although ECMAScript 3rd Edition has a\n// non-normative section suggesting uniform semantics and it should be\n// normalized across all browsers\n// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE\nvar string_substr = StringPrototype.substr;\nvar hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';\ndefineProperties(StringPrototype, {\n substr: function substr(start, length) {\n return string_substr.call(\n this,\n start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start,\n length\n );\n }\n}, hasNegativeSubstrBug);\n\n},{}],16:[function(require,module,exports){\n'use strict';\n\nmodule.exports = [\n // streaming transports\n require('./transport/websocket')\n, require('./transport/xhr-streaming')\n, require('./transport/xdr-streaming')\n, require('./transport/eventsource')\n, require('./transport/lib/iframe-wrap')(require('./transport/eventsource'))\n\n // polling transports\n, require('./transport/htmlfile')\n, require('./transport/lib/iframe-wrap')(require('./transport/htmlfile'))\n, require('./transport/xhr-polling')\n, require('./transport/xdr-polling')\n, require('./transport/lib/iframe-wrap')(require('./transport/xhr-polling'))\n, require('./transport/jsonp-polling')\n];\n\n},{\"./transport/eventsource\":20,\"./transport/htmlfile\":21,\"./transport/jsonp-polling\":23,\"./transport/lib/iframe-wrap\":26,\"./transport/websocket\":38,\"./transport/xdr-polling\":39,\"./transport/xdr-streaming\":40,\"./transport/xhr-polling\":41,\"./transport/xhr-streaming\":42}],17:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , utils = require('../../utils/event')\n , urlUtils = require('../../utils/url')\n , XHR = global.XMLHttpRequest\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:browser:xhr');\n}\n\nfunction AbstractXHRObject(method, url, payload, opts) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function () {\n self._start(method, url, payload, opts);\n }, 0);\n}\n\ninherits(AbstractXHRObject, EventEmitter);\n\nAbstractXHRObject.prototype._start = function(method, url, payload, opts) {\n var self = this;\n\n try {\n this.xhr = new XHR();\n } catch (x) {\n // intentionally empty\n }\n\n if (!this.xhr) {\n debug('no xhr');\n this.emit('finish', 0, 'no xhr support');\n this._cleanup();\n return;\n }\n\n // several browsers cache POSTs\n url = urlUtils.addQuery(url, 't=' + (+new Date()));\n\n // Explorer tends to keep connection open, even after the\n // tab gets closed: http://bugs.jquery.com/ticket/5280\n this.unloadRef = utils.unloadAdd(function() {\n debug('unload cleanup');\n self._cleanup(true);\n });\n try {\n this.xhr.open(method, url, true);\n if (this.timeout && 'timeout' in this.xhr) {\n this.xhr.timeout = this.timeout;\n this.xhr.ontimeout = function() {\n debug('xhr timeout');\n self.emit('finish', 0, '');\n self._cleanup(false);\n };\n }\n } catch (e) {\n debug('exception', e);\n // IE raises an exception on wrong port.\n this.emit('finish', 0, '');\n this._cleanup(false);\n return;\n }\n\n if ((!opts || !opts.noCredentials) && AbstractXHRObject.supportsCORS) {\n debug('withCredentials');\n // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest :\n // \"This never affects same-site requests.\"\n\n this.xhr.withCredentials = true;\n }\n if (opts && opts.headers) {\n for (var key in opts.headers) {\n this.xhr.setRequestHeader(key, opts.headers[key]);\n }\n }\n\n this.xhr.onreadystatechange = function() {\n if (self.xhr) {\n var x = self.xhr;\n var text, status;\n debug('readyState', x.readyState);\n switch (x.readyState) {\n case 3:\n // IE doesn't like peeking into responseText or status\n // on Microsoft.XMLHTTP and readystate=3\n try {\n status = x.status;\n text = x.responseText;\n } catch (e) {\n // intentionally empty\n }\n debug('status', status);\n // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n if (status === 1223) {\n status = 204;\n }\n\n // IE does return readystate == 3 for 404 answers.\n if (status === 200 && text && text.length > 0) {\n debug('chunk');\n self.emit('chunk', status, text);\n }\n break;\n case 4:\n status = x.status;\n debug('status', status);\n // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450\n if (status === 1223) {\n status = 204;\n }\n // IE returns this for a bad port\n // http://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx\n if (status === 12005 || status === 12029) {\n status = 0;\n }\n\n debug('finish', status, x.responseText);\n self.emit('finish', status, x.responseText);\n self._cleanup(false);\n break;\n }\n }\n };\n\n try {\n self.xhr.send(payload);\n } catch (e) {\n self.emit('finish', 0, '');\n self._cleanup(false);\n }\n};\n\nAbstractXHRObject.prototype._cleanup = function(abort) {\n debug('cleanup');\n if (!this.xhr) {\n return;\n }\n this.removeAllListeners();\n utils.unloadDel(this.unloadRef);\n\n // IE needs this field to be a function\n this.xhr.onreadystatechange = function() {};\n if (this.xhr.ontimeout) {\n this.xhr.ontimeout = null;\n }\n\n if (abort) {\n try {\n this.xhr.abort();\n } catch (x) {\n // intentionally empty\n }\n }\n this.unloadRef = this.xhr = null;\n};\n\nAbstractXHRObject.prototype.close = function() {\n debug('close');\n this._cleanup(true);\n};\n\nAbstractXHRObject.enabled = !!XHR;\n// override XMLHttpRequest for IE6/7\n// obfuscate to avoid firewalls\nvar axo = ['Active'].concat('Object').join('X');\nif (!AbstractXHRObject.enabled && (axo in global)) {\n debug('overriding xmlhttprequest');\n XHR = function() {\n try {\n return new global[axo]('Microsoft.XMLHTTP');\n } catch (e) {\n return null;\n }\n };\n AbstractXHRObject.enabled = !!new XHR();\n}\n\nvar cors = false;\ntry {\n cors = 'withCredentials' in new XHR();\n} catch (ignored) {\n // intentionally empty\n}\n\nAbstractXHRObject.supportsCORS = cors;\n\nmodule.exports = AbstractXHRObject;\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/event\":46,\"../../utils/url\":52,\"debug\":55,\"events\":3,\"inherits\":57}],18:[function(require,module,exports){\n(function (global){(function (){\nmodule.exports = global.EventSource;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],19:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar Driver = global.WebSocket || global.MozWebSocket;\nif (Driver) {\n\tmodule.exports = function WebSocketBrowserDriver(url) {\n\t\treturn new Driver(url);\n\t};\n} else {\n\tmodule.exports = undefined;\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],20:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , EventSourceReceiver = require('./receiver/eventsource')\n , XHRCorsObject = require('./sender/xhr-cors')\n , EventSourceDriver = require('eventsource')\n ;\n\nfunction EventSourceTransport(transUrl) {\n if (!EventSourceTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n AjaxBasedTransport.call(this, transUrl, '/eventsource', EventSourceReceiver, XHRCorsObject);\n}\n\ninherits(EventSourceTransport, AjaxBasedTransport);\n\nEventSourceTransport.enabled = function() {\n return !!EventSourceDriver;\n};\n\nEventSourceTransport.transportName = 'eventsource';\nEventSourceTransport.roundTrips = 2;\n\nmodule.exports = EventSourceTransport;\n\n},{\"./lib/ajax-based\":24,\"./receiver/eventsource\":29,\"./sender/xhr-cors\":35,\"eventsource\":18,\"inherits\":57}],21:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , HtmlfileReceiver = require('./receiver/htmlfile')\n , XHRLocalObject = require('./sender/xhr-local')\n , AjaxBasedTransport = require('./lib/ajax-based')\n ;\n\nfunction HtmlFileTransport(transUrl) {\n if (!HtmlfileReceiver.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/htmlfile', HtmlfileReceiver, XHRLocalObject);\n}\n\ninherits(HtmlFileTransport, AjaxBasedTransport);\n\nHtmlFileTransport.enabled = function(info) {\n return HtmlfileReceiver.enabled && info.sameOrigin;\n};\n\nHtmlFileTransport.transportName = 'htmlfile';\nHtmlFileTransport.roundTrips = 2;\n\nmodule.exports = HtmlFileTransport;\n\n},{\"./lib/ajax-based\":24,\"./receiver/htmlfile\":30,\"./sender/xhr-local\":37,\"inherits\":57}],22:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\n// Few cool transports do work only for same-origin. In order to make\n// them work cross-domain we shall use iframe, served from the\n// remote domain. New browsers have capabilities to communicate with\n// cross domain iframe using postMessage(). In IE it was implemented\n// from IE 8+, but of course, IE got some details wrong:\n// http://msdn.microsoft.com/en-us/library/cc197015(v=VS.85).aspx\n// http://stevesouders.com/misc/test-postmessage.php\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , version = require('../version')\n , urlUtils = require('../utils/url')\n , iframeUtils = require('../utils/iframe')\n , eventUtils = require('../utils/event')\n , random = require('../utils/random')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:transport:iframe');\n}\n\nfunction IframeTransport(transport, transUrl, baseUrl) {\n if (!IframeTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n EventEmitter.call(this);\n\n var self = this;\n this.origin = urlUtils.getOrigin(baseUrl);\n this.baseUrl = baseUrl;\n this.transUrl = transUrl;\n this.transport = transport;\n this.windowId = random.string(8);\n\n var iframeUrl = urlUtils.addPath(baseUrl, '/iframe.html') + '#' + this.windowId;\n debug(transport, transUrl, iframeUrl);\n\n this.iframeObj = iframeUtils.createIframe(iframeUrl, function(r) {\n debug('err callback');\n self.emit('close', 1006, 'Unable to load an iframe (' + r + ')');\n self.close();\n });\n\n this.onmessageCallback = this._message.bind(this);\n eventUtils.attachEvent('message', this.onmessageCallback);\n}\n\ninherits(IframeTransport, EventEmitter);\n\nIframeTransport.prototype.close = function() {\n debug('close');\n this.removeAllListeners();\n if (this.iframeObj) {\n eventUtils.detachEvent('message', this.onmessageCallback);\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n this.postMessage('c');\n } catch (x) {\n // intentionally empty\n }\n this.iframeObj.cleanup();\n this.iframeObj = null;\n this.onmessageCallback = this.iframeObj = null;\n }\n};\n\nIframeTransport.prototype._message = function(e) {\n debug('message', e.data);\n if (!urlUtils.isOriginEqual(e.origin, this.origin)) {\n debug('not same origin', e.origin, this.origin);\n return;\n }\n\n var iframeMessage;\n try {\n iframeMessage = JSON.parse(e.data);\n } catch (ignored) {\n debug('bad json', e.data);\n return;\n }\n\n if (iframeMessage.windowId !== this.windowId) {\n debug('mismatched window id', iframeMessage.windowId, this.windowId);\n return;\n }\n\n switch (iframeMessage.type) {\n case 's':\n this.iframeObj.loaded();\n // window global dependency\n this.postMessage('s', JSON.stringify([\n version\n , this.transport\n , this.transUrl\n , this.baseUrl\n ]));\n break;\n case 't':\n this.emit('message', iframeMessage.data);\n break;\n case 'c':\n var cdata;\n try {\n cdata = JSON.parse(iframeMessage.data);\n } catch (ignored) {\n debug('bad json', iframeMessage.data);\n return;\n }\n this.emit('close', cdata[0], cdata[1]);\n this.close();\n break;\n }\n};\n\nIframeTransport.prototype.postMessage = function(type, data) {\n debug('postMessage', type, data);\n this.iframeObj.post(JSON.stringify({\n windowId: this.windowId\n , type: type\n , data: data || ''\n }), this.origin);\n};\n\nIframeTransport.prototype.send = function(message) {\n debug('send', message);\n this.postMessage('m', message);\n};\n\nIframeTransport.enabled = function() {\n return iframeUtils.iframeEnabled;\n};\n\nIframeTransport.transportName = 'iframe';\nIframeTransport.roundTrips = 2;\n\nmodule.exports = IframeTransport;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"../utils/event\":46,\"../utils/iframe\":47,\"../utils/random\":50,\"../utils/url\":52,\"../version\":53,\"debug\":55,\"events\":3,\"inherits\":57}],23:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\n// The simplest and most robust transport, using the well-know cross\n// domain hack - JSONP. This transport is quite inefficient - one\n// message could use up to one http request. But at least it works almost\n// everywhere.\n// Known limitations:\n// o you will get a spinning cursor\n// o for Konqueror a dumb timer is needed to detect errors\n\nvar inherits = require('inherits')\n , SenderReceiver = require('./lib/sender-receiver')\n , JsonpReceiver = require('./receiver/jsonp')\n , jsonpSender = require('./sender/jsonp')\n ;\n\nfunction JsonPTransport(transUrl) {\n if (!JsonPTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n SenderReceiver.call(this, transUrl, '/jsonp', jsonpSender, JsonpReceiver);\n}\n\ninherits(JsonPTransport, SenderReceiver);\n\nJsonPTransport.enabled = function() {\n return !!global.document;\n};\n\nJsonPTransport.transportName = 'jsonp-polling';\nJsonPTransport.roundTrips = 1;\nJsonPTransport.needBody = true;\n\nmodule.exports = JsonPTransport;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./lib/sender-receiver\":28,\"./receiver/jsonp\":31,\"./sender/jsonp\":33,\"inherits\":57}],24:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , urlUtils = require('../../utils/url')\n , SenderReceiver = require('./sender-receiver')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:ajax-based');\n}\n\nfunction createAjaxSender(AjaxObject) {\n return function(url, payload, callback) {\n debug('create ajax sender', url, payload);\n var opt = {};\n if (typeof payload === 'string') {\n opt.headers = {'Content-type': 'text/plain'};\n }\n var ajaxUrl = urlUtils.addPath(url, '/xhr_send');\n var xo = new AjaxObject('POST', ajaxUrl, payload, opt);\n xo.once('finish', function(status) {\n debug('finish', status);\n xo = null;\n\n if (status !== 200 && status !== 204) {\n return callback(new Error('http status ' + status));\n }\n callback();\n });\n return function() {\n debug('abort');\n xo.close();\n xo = null;\n\n var err = new Error('Aborted');\n err.code = 1000;\n callback(err);\n };\n };\n}\n\nfunction AjaxBasedTransport(transUrl, urlSuffix, Receiver, AjaxObject) {\n SenderReceiver.call(this, transUrl, urlSuffix, createAjaxSender(AjaxObject), Receiver, AjaxObject);\n}\n\ninherits(AjaxBasedTransport, SenderReceiver);\n\nmodule.exports = AjaxBasedTransport;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"../../utils/url\":52,\"./sender-receiver\":28,\"debug\":55,\"inherits\":57}],25:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:buffered-sender');\n}\n\nfunction BufferedSender(url, sender) {\n debug(url);\n EventEmitter.call(this);\n this.sendBuffer = [];\n this.sender = sender;\n this.url = url;\n}\n\ninherits(BufferedSender, EventEmitter);\n\nBufferedSender.prototype.send = function(message) {\n debug('send', message);\n this.sendBuffer.push(message);\n if (!this.sendStop) {\n this.sendSchedule();\n }\n};\n\n// For polling transports in a situation when in the message callback,\n// new message is being send. If the sending connection was started\n// before receiving one, it is possible to saturate the network and\n// timeout due to the lack of receiving socket. To avoid that we delay\n// sending messages by some small time, in order to let receiving\n// connection be started beforehand. This is only a halfmeasure and\n// does not fix the big problem, but it does make the tests go more\n// stable on slow networks.\nBufferedSender.prototype.sendScheduleWait = function() {\n debug('sendScheduleWait');\n var self = this;\n var tref;\n this.sendStop = function() {\n debug('sendStop');\n self.sendStop = null;\n clearTimeout(tref);\n };\n tref = setTimeout(function() {\n debug('timeout');\n self.sendStop = null;\n self.sendSchedule();\n }, 25);\n};\n\nBufferedSender.prototype.sendSchedule = function() {\n debug('sendSchedule', this.sendBuffer.length);\n var self = this;\n if (this.sendBuffer.length > 0) {\n var payload = '[' + this.sendBuffer.join(',') + ']';\n this.sendStop = this.sender(this.url, payload, function(err) {\n self.sendStop = null;\n if (err) {\n debug('error', err);\n self.emit('close', err.code || 1006, 'Sending error: ' + err);\n self.close();\n } else {\n self.sendScheduleWait();\n }\n });\n this.sendBuffer = [];\n }\n};\n\nBufferedSender.prototype._cleanup = function() {\n debug('_cleanup');\n this.removeAllListeners();\n};\n\nBufferedSender.prototype.close = function() {\n debug('close');\n this._cleanup();\n if (this.sendStop) {\n this.sendStop();\n this.sendStop = null;\n }\n};\n\nmodule.exports = BufferedSender;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55,\"events\":3,\"inherits\":57}],26:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , IframeTransport = require('../iframe')\n , objectUtils = require('../../utils/object')\n ;\n\nmodule.exports = function(transport) {\n\n function IframeWrapTransport(transUrl, baseUrl) {\n IframeTransport.call(this, transport.transportName, transUrl, baseUrl);\n }\n\n inherits(IframeWrapTransport, IframeTransport);\n\n IframeWrapTransport.enabled = function(url, info) {\n if (!global.document) {\n return false;\n }\n\n var iframeInfo = objectUtils.extend({}, info);\n iframeInfo.sameOrigin = true;\n return transport.enabled(iframeInfo) && IframeTransport.enabled();\n };\n\n IframeWrapTransport.transportName = 'iframe-' + transport.transportName;\n IframeWrapTransport.needBody = true;\n IframeWrapTransport.roundTrips = IframeTransport.roundTrips + transport.roundTrips - 1; // html, javascript (2) + transport - no CORS (1)\n\n IframeWrapTransport.facadeTransport = transport;\n\n return IframeWrapTransport;\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/object\":49,\"../iframe\":22,\"inherits\":57}],27:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:polling');\n}\n\nfunction Polling(Receiver, receiveUrl, AjaxObject) {\n debug(receiveUrl);\n EventEmitter.call(this);\n this.Receiver = Receiver;\n this.receiveUrl = receiveUrl;\n this.AjaxObject = AjaxObject;\n this._scheduleReceiver();\n}\n\ninherits(Polling, EventEmitter);\n\nPolling.prototype._scheduleReceiver = function() {\n debug('_scheduleReceiver');\n var self = this;\n var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject);\n\n poll.on('message', function(msg) {\n debug('message', msg);\n self.emit('message', msg);\n });\n\n poll.once('close', function(code, reason) {\n debug('close', code, reason, self.pollIsClosing);\n self.poll = poll = null;\n\n if (!self.pollIsClosing) {\n if (reason === 'network') {\n self._scheduleReceiver();\n } else {\n self.emit('close', code || 1006, reason);\n self.removeAllListeners();\n }\n }\n });\n};\n\nPolling.prototype.abort = function() {\n debug('abort');\n this.removeAllListeners();\n this.pollIsClosing = true;\n if (this.poll) {\n this.poll.abort();\n }\n};\n\nmodule.exports = Polling;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55,\"events\":3,\"inherits\":57}],28:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , urlUtils = require('../../utils/url')\n , BufferedSender = require('./buffered-sender')\n , Polling = require('./polling')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender-receiver');\n}\n\nfunction SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) {\n var pollUrl = urlUtils.addPath(transUrl, urlSuffix);\n debug(pollUrl);\n var self = this;\n BufferedSender.call(this, transUrl, senderFunc);\n\n this.poll = new Polling(Receiver, pollUrl, AjaxObject);\n this.poll.on('message', function(msg) {\n debug('poll message', msg);\n self.emit('message', msg);\n });\n this.poll.once('close', function(code, reason) {\n debug('poll close', code, reason);\n self.poll = null;\n self.emit('close', code, reason);\n self.close();\n });\n}\n\ninherits(SenderReceiver, BufferedSender);\n\nSenderReceiver.prototype.close = function() {\n BufferedSender.prototype.close.call(this);\n debug('close');\n this.removeAllListeners();\n if (this.poll) {\n this.poll.abort();\n this.poll = null;\n }\n};\n\nmodule.exports = SenderReceiver;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"../../utils/url\":52,\"./buffered-sender\":25,\"./polling\":27,\"debug\":55,\"inherits\":57}],29:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , EventSourceDriver = require('eventsource')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:eventsource');\n}\n\nfunction EventSourceReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n\n var self = this;\n var es = this.es = new EventSourceDriver(url);\n es.onmessage = function(e) {\n debug('message', e.data);\n self.emit('message', decodeURI(e.data));\n };\n es.onerror = function(e) {\n debug('error', es.readyState, e);\n // ES on reconnection has readyState = 0 or 1.\n // on network error it's CLOSED = 2\n var reason = (es.readyState !== 2 ? 'network' : 'permanent');\n self._cleanup();\n self._close(reason);\n };\n}\n\ninherits(EventSourceReceiver, EventEmitter);\n\nEventSourceReceiver.prototype.abort = function() {\n debug('abort');\n this._cleanup();\n this._close('user');\n};\n\nEventSourceReceiver.prototype._cleanup = function() {\n debug('cleanup');\n var es = this.es;\n if (es) {\n es.onmessage = es.onerror = null;\n es.close();\n this.es = null;\n }\n};\n\nEventSourceReceiver.prototype._close = function(reason) {\n debug('close', reason);\n var self = this;\n // Safari and chrome < 15 crash if we close window before\n // waiting for ES cleanup. See:\n // https://code.google.com/p/chromium/issues/detail?id=89155\n setTimeout(function() {\n self.emit('close', null, reason);\n self.removeAllListeners();\n }, 200);\n};\n\nmodule.exports = EventSourceReceiver;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55,\"events\":3,\"eventsource\":18,\"inherits\":57}],30:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , iframeUtils = require('../../utils/iframe')\n , urlUtils = require('../../utils/url')\n , EventEmitter = require('events').EventEmitter\n , random = require('../../utils/random')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:htmlfile');\n}\n\nfunction HtmlfileReceiver(url) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n iframeUtils.polluteGlobalNamespace();\n\n this.id = 'a' + random.string(6);\n url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));\n\n debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);\n var constructFunc = HtmlfileReceiver.htmlfileEnabled ?\n iframeUtils.createHtmlfile : iframeUtils.createIframe;\n\n global[iframeUtils.WPrefix][this.id] = {\n start: function() {\n debug('start');\n self.iframeObj.loaded();\n }\n , message: function(data) {\n debug('message', data);\n self.emit('message', data);\n }\n , stop: function() {\n debug('stop');\n self._cleanup();\n self._close('network');\n }\n };\n this.iframeObj = constructFunc(url, function() {\n debug('callback');\n self._cleanup();\n self._close('permanent');\n });\n}\n\ninherits(HtmlfileReceiver, EventEmitter);\n\nHtmlfileReceiver.prototype.abort = function() {\n debug('abort');\n this._cleanup();\n this._close('user');\n};\n\nHtmlfileReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n if (this.iframeObj) {\n this.iframeObj.cleanup();\n this.iframeObj = null;\n }\n delete global[iframeUtils.WPrefix][this.id];\n};\n\nHtmlfileReceiver.prototype._close = function(reason) {\n debug('_close', reason);\n this.emit('close', null, reason);\n this.removeAllListeners();\n};\n\nHtmlfileReceiver.htmlfileEnabled = false;\n\n// obfuscate to avoid firewalls\nvar axo = ['Active'].concat('Object').join('X');\nif (axo in global) {\n try {\n HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');\n } catch (x) {\n // intentionally empty\n }\n}\n\nHtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;\n\nmodule.exports = HtmlfileReceiver;\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/iframe\":47,\"../../utils/random\":50,\"../../utils/url\":52,\"debug\":55,\"events\":3,\"inherits\":57}],31:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar utils = require('../../utils/iframe')\n , random = require('../../utils/random')\n , browser = require('../../utils/browser')\n , urlUtils = require('../../utils/url')\n , inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:jsonp');\n}\n\nfunction JsonpReceiver(url) {\n debug(url);\n var self = this;\n EventEmitter.call(this);\n\n utils.polluteGlobalNamespace();\n\n this.id = 'a' + random.string(6);\n var urlWithId = urlUtils.addQuery(url, 'c=' + encodeURIComponent(utils.WPrefix + '.' + this.id));\n\n global[utils.WPrefix][this.id] = this._callback.bind(this);\n this._createScript(urlWithId);\n\n // Fallback mostly for Konqueror - stupid timer, 35 seconds shall be plenty.\n this.timeoutId = setTimeout(function() {\n debug('timeout');\n self._abort(new Error('JSONP script loaded abnormally (timeout)'));\n }, JsonpReceiver.timeout);\n}\n\ninherits(JsonpReceiver, EventEmitter);\n\nJsonpReceiver.prototype.abort = function() {\n debug('abort');\n if (global[utils.WPrefix][this.id]) {\n var err = new Error('JSONP user aborted read');\n err.code = 1000;\n this._abort(err);\n }\n};\n\nJsonpReceiver.timeout = 35000;\nJsonpReceiver.scriptErrorTimeout = 1000;\n\nJsonpReceiver.prototype._callback = function(data) {\n debug('_callback', data);\n this._cleanup();\n\n if (this.aborting) {\n return;\n }\n\n if (data) {\n debug('message', data);\n this.emit('message', data);\n }\n this.emit('close', null, 'network');\n this.removeAllListeners();\n};\n\nJsonpReceiver.prototype._abort = function(err) {\n debug('_abort', err);\n this._cleanup();\n this.aborting = true;\n this.emit('close', err.code, err.message);\n this.removeAllListeners();\n};\n\nJsonpReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n clearTimeout(this.timeoutId);\n if (this.script2) {\n this.script2.parentNode.removeChild(this.script2);\n this.script2 = null;\n }\n if (this.script) {\n var script = this.script;\n // Unfortunately, you can't really abort script loading of\n // the script.\n script.parentNode.removeChild(script);\n script.onreadystatechange = script.onerror =\n script.onload = script.onclick = null;\n this.script = null;\n }\n delete global[utils.WPrefix][this.id];\n};\n\nJsonpReceiver.prototype._scriptError = function() {\n debug('_scriptError');\n var self = this;\n if (this.errorTimer) {\n return;\n }\n\n this.errorTimer = setTimeout(function() {\n if (!self.loadedOkay) {\n self._abort(new Error('JSONP script loaded abnormally (onerror)'));\n }\n }, JsonpReceiver.scriptErrorTimeout);\n};\n\nJsonpReceiver.prototype._createScript = function(url) {\n debug('_createScript', url);\n var self = this;\n var script = this.script = global.document.createElement('script');\n var script2; // Opera synchronous load trick.\n\n script.id = 'a' + random.string(8);\n script.src = url;\n script.type = 'text/javascript';\n script.charset = 'UTF-8';\n script.onerror = this._scriptError.bind(this);\n script.onload = function() {\n debug('onload');\n self._abort(new Error('JSONP script loaded abnormally (onload)'));\n };\n\n // IE9 fires 'error' event after onreadystatechange or before, in random order.\n // Use loadedOkay to determine if actually errored\n script.onreadystatechange = function() {\n debug('onreadystatechange', script.readyState);\n if (/loaded|closed/.test(script.readyState)) {\n if (script && script.htmlFor && script.onclick) {\n self.loadedOkay = true;\n try {\n // In IE, actually execute the script.\n script.onclick();\n } catch (x) {\n // intentionally empty\n }\n }\n if (script) {\n self._abort(new Error('JSONP script loaded abnormally (onreadystatechange)'));\n }\n }\n };\n // IE: event/htmlFor/onclick trick.\n // One can't rely on proper order for onreadystatechange. In order to\n // make sure, set a 'htmlFor' and 'event' properties, so that\n // script code will be installed as 'onclick' handler for the\n // script object. Later, onreadystatechange, manually execute this\n // code. FF and Chrome doesn't work with 'event' and 'htmlFor'\n // set. For reference see:\n // http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html\n // Also, read on that about script ordering:\n // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order\n if (typeof script.async === 'undefined' && global.document.attachEvent) {\n // According to mozilla docs, in recent browsers script.async defaults\n // to 'true', so we may use it to detect a good browser:\n // https://developer.mozilla.org/en/HTML/Element/script\n if (!browser.isOpera()) {\n // Naively assume we're in IE\n try {\n script.htmlFor = script.id;\n script.event = 'onclick';\n } catch (x) {\n // intentionally empty\n }\n script.async = true;\n } else {\n // Opera, second sync script hack\n script2 = this.script2 = global.document.createElement('script');\n script2.text = \"try{var a = document.getElementById('\" + script.id + \"'); if(a)a.onerror();}catch(x){};\";\n script.async = script2.async = false;\n }\n }\n if (typeof script.async !== 'undefined') {\n script.async = true;\n }\n\n var head = global.document.getElementsByTagName('head')[0];\n head.insertBefore(script, head.firstChild);\n if (script2) {\n head.insertBefore(script2, head.firstChild);\n }\n};\n\nmodule.exports = JsonpReceiver;\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/browser\":44,\"../../utils/iframe\":47,\"../../utils/random\":50,\"../../utils/url\":52,\"debug\":55,\"events\":3,\"inherits\":57}],32:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:receiver:xhr');\n}\n\nfunction XhrReceiver(url, AjaxObject) {\n debug(url);\n EventEmitter.call(this);\n var self = this;\n\n this.bufferPosition = 0;\n\n this.xo = new AjaxObject('POST', url, null);\n this.xo.on('chunk', this._chunkHandler.bind(this));\n this.xo.once('finish', function(status, text) {\n debug('finish', status, text);\n self._chunkHandler(status, text);\n self.xo = null;\n var reason = status === 200 ? 'network' : 'permanent';\n debug('close', reason);\n self.emit('close', null, reason);\n self._cleanup();\n });\n}\n\ninherits(XhrReceiver, EventEmitter);\n\nXhrReceiver.prototype._chunkHandler = function(status, text) {\n debug('_chunkHandler', status);\n if (status !== 200 || !text) {\n return;\n }\n\n for (var idx = -1; ; this.bufferPosition += idx + 1) {\n var buf = text.slice(this.bufferPosition);\n idx = buf.indexOf('\\n');\n if (idx === -1) {\n break;\n }\n var msg = buf.slice(0, idx);\n if (msg) {\n debug('message', msg);\n this.emit('message', msg);\n }\n }\n};\n\nXhrReceiver.prototype._cleanup = function() {\n debug('_cleanup');\n this.removeAllListeners();\n};\n\nXhrReceiver.prototype.abort = function() {\n debug('abort');\n if (this.xo) {\n this.xo.close();\n debug('close');\n this.emit('close', null, 'user');\n this.xo = null;\n }\n this._cleanup();\n};\n\nmodule.exports = XhrReceiver;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55,\"events\":3,\"inherits\":57}],33:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar random = require('../../utils/random')\n , urlUtils = require('../../utils/url')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender:jsonp');\n}\n\nvar form, area;\n\nfunction createIframe(id) {\n debug('createIframe', id);\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n return global.document.createElement('<iframe name=\"' + id + '\">');\n } catch (x) {\n var iframe = global.document.createElement('iframe');\n iframe.name = id;\n return iframe;\n }\n}\n\nfunction createForm() {\n debug('createForm');\n form = global.document.createElement('form');\n form.style.display = 'none';\n form.style.position = 'absolute';\n form.method = 'POST';\n form.enctype = 'application/x-www-form-urlencoded';\n form.acceptCharset = 'UTF-8';\n\n area = global.document.createElement('textarea');\n area.name = 'd';\n form.appendChild(area);\n\n global.document.body.appendChild(form);\n}\n\nmodule.exports = function(url, payload, callback) {\n debug(url, payload);\n if (!form) {\n createForm();\n }\n var id = 'a' + random.string(8);\n form.target = id;\n form.action = urlUtils.addQuery(urlUtils.addPath(url, '/jsonp_send'), 'i=' + id);\n\n var iframe = createIframe(id);\n iframe.id = id;\n iframe.style.display = 'none';\n form.appendChild(iframe);\n\n try {\n area.value = payload;\n } catch (e) {\n // seriously broken browsers get here\n }\n form.submit();\n\n var completed = function(err) {\n debug('completed', id, err);\n if (!iframe.onerror) {\n return;\n }\n iframe.onreadystatechange = iframe.onerror = iframe.onload = null;\n // Opera mini doesn't like if we GC iframe\n // immediately, thus this timeout.\n setTimeout(function() {\n debug('cleaning up', id);\n iframe.parentNode.removeChild(iframe);\n iframe = null;\n }, 500);\n area.value = '';\n // It is not possible to detect if the iframe succeeded or\n // failed to submit our form.\n callback(err);\n };\n iframe.onerror = function() {\n debug('onerror', id);\n completed();\n };\n iframe.onload = function() {\n debug('onload', id);\n completed();\n };\n iframe.onreadystatechange = function(e) {\n debug('onreadystatechange', id, iframe.readyState, e);\n if (iframe.readyState === 'complete') {\n completed();\n }\n };\n return function() {\n debug('aborted', id);\n completed(new Error('Aborted'));\n };\n};\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/random\":50,\"../../utils/url\":52,\"debug\":55}],34:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n , eventUtils = require('../../utils/event')\n , browser = require('../../utils/browser')\n , urlUtils = require('../../utils/url')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:sender:xdr');\n}\n\n// References:\n// http://ajaxian.com/archives/100-line-ajax-wrapper\n// http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx\n\nfunction XDRObject(method, url, payload) {\n debug(method, url);\n var self = this;\n EventEmitter.call(this);\n\n setTimeout(function() {\n self._start(method, url, payload);\n }, 0);\n}\n\ninherits(XDRObject, EventEmitter);\n\nXDRObject.prototype._start = function(method, url, payload) {\n debug('_start');\n var self = this;\n var xdr = new global.XDomainRequest();\n // IE caches even POSTs\n url = urlUtils.addQuery(url, 't=' + (+new Date()));\n\n xdr.onerror = function() {\n debug('onerror');\n self._error();\n };\n xdr.ontimeout = function() {\n debug('ontimeout');\n self._error();\n };\n xdr.onprogress = function() {\n debug('progress', xdr.responseText);\n self.emit('chunk', 200, xdr.responseText);\n };\n xdr.onload = function() {\n debug('load');\n self.emit('finish', 200, xdr.responseText);\n self._cleanup(false);\n };\n this.xdr = xdr;\n this.unloadRef = eventUtils.unloadAdd(function() {\n self._cleanup(true);\n });\n try {\n // Fails with AccessDenied if port number is bogus\n this.xdr.open(method, url);\n if (this.timeout) {\n this.xdr.timeout = this.timeout;\n }\n this.xdr.send(payload);\n } catch (x) {\n this._error();\n }\n};\n\nXDRObject.prototype._error = function() {\n this.emit('finish', 0, '');\n this._cleanup(false);\n};\n\nXDRObject.prototype._cleanup = function(abort) {\n debug('cleanup', abort);\n if (!this.xdr) {\n return;\n }\n this.removeAllListeners();\n eventUtils.unloadDel(this.unloadRef);\n\n this.xdr.ontimeout = this.xdr.onerror = this.xdr.onprogress = this.xdr.onload = null;\n if (abort) {\n try {\n this.xdr.abort();\n } catch (x) {\n // intentionally empty\n }\n }\n this.unloadRef = this.xdr = null;\n};\n\nXDRObject.prototype.close = function() {\n debug('close');\n this._cleanup(true);\n};\n\n// IE 8/9 if the request target uses the same scheme - #79\nXDRObject.enabled = !!(global.XDomainRequest && browser.hasDomain());\n\nmodule.exports = XDRObject;\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../../utils/browser\":44,\"../../utils/event\":46,\"../../utils/url\":52,\"debug\":55,\"events\":3,\"inherits\":57}],35:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , XhrDriver = require('../driver/xhr')\n ;\n\nfunction XHRCorsObject(method, url, payload, opts) {\n XhrDriver.call(this, method, url, payload, opts);\n}\n\ninherits(XHRCorsObject, XhrDriver);\n\nXHRCorsObject.enabled = XhrDriver.enabled && XhrDriver.supportsCORS;\n\nmodule.exports = XHRCorsObject;\n\n},{\"../driver/xhr\":17,\"inherits\":57}],36:[function(require,module,exports){\n'use strict';\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('inherits')\n ;\n\nfunction XHRFake(/* method, url, payload, opts */) {\n var self = this;\n EventEmitter.call(this);\n\n this.to = setTimeout(function() {\n self.emit('finish', 200, '{}');\n }, XHRFake.timeout);\n}\n\ninherits(XHRFake, EventEmitter);\n\nXHRFake.prototype.close = function() {\n clearTimeout(this.to);\n};\n\nXHRFake.timeout = 2000;\n\nmodule.exports = XHRFake;\n\n},{\"events\":3,\"inherits\":57}],37:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , XhrDriver = require('../driver/xhr')\n ;\n\nfunction XHRLocalObject(method, url, payload /*, opts */) {\n XhrDriver.call(this, method, url, payload, {\n noCredentials: true\n });\n}\n\ninherits(XHRLocalObject, XhrDriver);\n\nXHRLocalObject.enabled = XhrDriver.enabled;\n\nmodule.exports = XHRLocalObject;\n\n},{\"../driver/xhr\":17,\"inherits\":57}],38:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar utils = require('../utils/event')\n , urlUtils = require('../utils/url')\n , inherits = require('inherits')\n , EventEmitter = require('events').EventEmitter\n , WebsocketDriver = require('./driver/websocket')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:websocket');\n}\n\nfunction WebSocketTransport(transUrl, ignore, options) {\n if (!WebSocketTransport.enabled()) {\n throw new Error('Transport created when disabled');\n }\n\n EventEmitter.call(this);\n debug('constructor', transUrl);\n\n var self = this;\n var url = urlUtils.addPath(transUrl, '/websocket');\n if (url.slice(0, 5) === 'https') {\n url = 'wss' + url.slice(5);\n } else {\n url = 'ws' + url.slice(4);\n }\n this.url = url;\n\n this.ws = new WebsocketDriver(this.url, [], options);\n this.ws.onmessage = function(e) {\n debug('message event', e.data);\n self.emit('message', e.data);\n };\n // Firefox has an interesting bug. If a websocket connection is\n // created after onunload, it stays alive even when user\n // navigates away from the page. In such situation let's lie -\n // let's not open the ws connection at all. See:\n // https://github.com/sockjs/sockjs-client/issues/28\n // https://bugzilla.mozilla.org/show_bug.cgi?id=696085\n this.unloadRef = utils.unloadAdd(function() {\n debug('unload');\n self.ws.close();\n });\n this.ws.onclose = function(e) {\n debug('close event', e.code, e.reason);\n self.emit('close', e.code, e.reason);\n self._cleanup();\n };\n this.ws.onerror = function(e) {\n debug('error event', e);\n self.emit('close', 1006, 'WebSocket connection broken');\n self._cleanup();\n };\n}\n\ninherits(WebSocketTransport, EventEmitter);\n\nWebSocketTransport.prototype.send = function(data) {\n var msg = '[' + data + ']';\n debug('send', msg);\n this.ws.send(msg);\n};\n\nWebSocketTransport.prototype.close = function() {\n debug('close');\n var ws = this.ws;\n this._cleanup();\n if (ws) {\n ws.close();\n }\n};\n\nWebSocketTransport.prototype._cleanup = function() {\n debug('_cleanup');\n var ws = this.ws;\n if (ws) {\n ws.onmessage = ws.onclose = ws.onerror = null;\n }\n utils.unloadDel(this.unloadRef);\n this.unloadRef = this.ws = null;\n this.removeAllListeners();\n};\n\nWebSocketTransport.enabled = function() {\n debug('enabled');\n return !!WebsocketDriver;\n};\nWebSocketTransport.transportName = 'websocket';\n\n// In theory, ws should require 1 round trip. But in chrome, this is\n// not very stable over SSL. Most likely a ws connection requires a\n// separate SSL connection, in which case 2 round trips are an\n// absolute minumum.\nWebSocketTransport.roundTrips = 2;\n\nmodule.exports = WebSocketTransport;\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"../utils/event\":46,\"../utils/url\":52,\"./driver/websocket\":19,\"debug\":55,\"events\":3,\"inherits\":57}],39:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XdrStreamingTransport = require('./xdr-streaming')\n , XhrReceiver = require('./receiver/xhr')\n , XDRObject = require('./sender/xdr')\n ;\n\nfunction XdrPollingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XDRObject);\n}\n\ninherits(XdrPollingTransport, AjaxBasedTransport);\n\nXdrPollingTransport.enabled = XdrStreamingTransport.enabled;\nXdrPollingTransport.transportName = 'xdr-polling';\nXdrPollingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XdrPollingTransport;\n\n},{\"./lib/ajax-based\":24,\"./receiver/xhr\":32,\"./sender/xdr\":34,\"./xdr-streaming\":40,\"inherits\":57}],40:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XDRObject = require('./sender/xdr')\n ;\n\n// According to:\n// http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n\nfunction XdrStreamingTransport(transUrl) {\n if (!XDRObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XDRObject);\n}\n\ninherits(XdrStreamingTransport, AjaxBasedTransport);\n\nXdrStreamingTransport.enabled = function(info) {\n if (info.cookie_needed || info.nullOrigin) {\n return false;\n }\n return XDRObject.enabled && info.sameScheme;\n};\n\nXdrStreamingTransport.transportName = 'xdr-streaming';\nXdrStreamingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XdrStreamingTransport;\n\n},{\"./lib/ajax-based\":24,\"./receiver/xhr\":32,\"./sender/xdr\":34,\"inherits\":57}],41:[function(require,module,exports){\n'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XHRCorsObject = require('./sender/xhr-cors')\n , XHRLocalObject = require('./sender/xhr-local')\n ;\n\nfunction XhrPollingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XHRCorsObject);\n}\n\ninherits(XhrPollingTransport, AjaxBasedTransport);\n\nXhrPollingTransport.enabled = function(info) {\n if (info.nullOrigin) {\n return false;\n }\n\n if (XHRLocalObject.enabled && info.sameOrigin) {\n return true;\n }\n return XHRCorsObject.enabled;\n};\n\nXhrPollingTransport.transportName = 'xhr-polling';\nXhrPollingTransport.roundTrips = 2; // preflight, ajax\n\nmodule.exports = XhrPollingTransport;\n\n},{\"./lib/ajax-based\":24,\"./receiver/xhr\":32,\"./sender/xhr-cors\":35,\"./sender/xhr-local\":37,\"inherits\":57}],42:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar inherits = require('inherits')\n , AjaxBasedTransport = require('./lib/ajax-based')\n , XhrReceiver = require('./receiver/xhr')\n , XHRCorsObject = require('./sender/xhr-cors')\n , XHRLocalObject = require('./sender/xhr-local')\n , browser = require('../utils/browser')\n ;\n\nfunction XhrStreamingTransport(transUrl) {\n if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {\n throw new Error('Transport created when disabled');\n }\n AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject);\n}\n\ninherits(XhrStreamingTransport, AjaxBasedTransport);\n\nXhrStreamingTransport.enabled = function(info) {\n if (info.nullOrigin) {\n return false;\n }\n // Opera doesn't support xhr-streaming #60\n // But it might be able to #92\n if (browser.isOpera()) {\n return false;\n }\n\n return XHRCorsObject.enabled;\n};\n\nXhrStreamingTransport.transportName = 'xhr-streaming';\nXhrStreamingTransport.roundTrips = 2; // preflight, ajax\n\n// Safari gets confused when a streaming ajax request is started\n// before onload. This causes the load indicator to spin indefinetely.\n// Only require body when used in a browser\nXhrStreamingTransport.needBody = !!global.document;\n\nmodule.exports = XhrStreamingTransport;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../utils/browser\":44,\"./lib/ajax-based\":24,\"./receiver/xhr\":32,\"./sender/xhr-cors\":35,\"./sender/xhr-local\":37,\"inherits\":57}],43:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nif (global.crypto && global.crypto.getRandomValues) {\n module.exports.randomBytes = function(length) {\n var bytes = new Uint8Array(length);\n global.crypto.getRandomValues(bytes);\n return bytes;\n };\n} else {\n module.exports.randomBytes = function(length) {\n var bytes = new Array(length);\n for (var i = 0; i < length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n return bytes;\n };\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],44:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nmodule.exports = {\n isOpera: function() {\n return global.navigator &&\n /opera/i.test(global.navigator.userAgent);\n }\n\n, isKonqueror: function() {\n return global.navigator &&\n /konqueror/i.test(global.navigator.userAgent);\n }\n\n // #187 wrap document.domain in try/catch because of WP8 from file:///\n, hasDomain: function () {\n // non-browser client always has a domain\n if (!global.document) {\n return true;\n }\n\n try {\n return !!global.document.domain;\n } catch (e) {\n return false;\n }\n }\n};\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],45:[function(require,module,exports){\n'use strict';\n\n// Some extra characters that Chrome gets wrong, and substitutes with\n// something else on the wire.\n// eslint-disable-next-line no-control-regex, no-misleading-character-class\nvar extraEscapable = /[\\x00-\\x1f\\ud800-\\udfff\\ufffe\\uffff\\u0300-\\u0333\\u033d-\\u0346\\u034a-\\u034c\\u0350-\\u0352\\u0357-\\u0358\\u035c-\\u0362\\u0374\\u037e\\u0387\\u0591-\\u05af\\u05c4\\u0610-\\u0617\\u0653-\\u0654\\u0657-\\u065b\\u065d-\\u065e\\u06df-\\u06e2\\u06eb-\\u06ec\\u0730\\u0732-\\u0733\\u0735-\\u0736\\u073a\\u073d\\u073f-\\u0741\\u0743\\u0745\\u0747\\u07eb-\\u07f1\\u0951\\u0958-\\u095f\\u09dc-\\u09dd\\u09df\\u0a33\\u0a36\\u0a59-\\u0a5b\\u0a5e\\u0b5c-\\u0b5d\\u0e38-\\u0e39\\u0f43\\u0f4d\\u0f52\\u0f57\\u0f5c\\u0f69\\u0f72-\\u0f76\\u0f78\\u0f80-\\u0f83\\u0f93\\u0f9d\\u0fa2\\u0fa7\\u0fac\\u0fb9\\u1939-\\u193a\\u1a17\\u1b6b\\u1cda-\\u1cdb\\u1dc0-\\u1dcf\\u1dfc\\u1dfe\\u1f71\\u1f73\\u1f75\\u1f77\\u1f79\\u1f7b\\u1f7d\\u1fbb\\u1fbe\\u1fc9\\u1fcb\\u1fd3\\u1fdb\\u1fe3\\u1feb\\u1fee-\\u1fef\\u1ff9\\u1ffb\\u1ffd\\u2000-\\u2001\\u20d0-\\u20d1\\u20d4-\\u20d7\\u20e7-\\u20e9\\u2126\\u212a-\\u212b\\u2329-\\u232a\\u2adc\\u302b-\\u302c\\uaab2-\\uaab3\\uf900-\\ufa0d\\ufa10\\ufa12\\ufa15-\\ufa1e\\ufa20\\ufa22\\ufa25-\\ufa26\\ufa2a-\\ufa2d\\ufa30-\\ufa6d\\ufa70-\\ufad9\\ufb1d\\ufb1f\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4e\\ufff0-\\uffff]/g\n , extraLookup;\n\n// This may be quite slow, so let's delay until user actually uses bad\n// characters.\nvar unrollLookup = function(escapable) {\n var i;\n var unrolled = {};\n var c = [];\n for (i = 0; i < 65536; i++) {\n c.push( String.fromCharCode(i) );\n }\n escapable.lastIndex = 0;\n c.join('').replace(escapable, function(a) {\n unrolled[ a ] = '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n return '';\n });\n escapable.lastIndex = 0;\n return unrolled;\n};\n\n// Quote string, also taking care of unicode characters that browsers\n// often break. Especially, take care of unicode surrogates:\n// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates\nmodule.exports = {\n quote: function(string) {\n var quoted = JSON.stringify(string);\n\n // In most cases this should be very fast and good enough.\n extraEscapable.lastIndex = 0;\n if (!extraEscapable.test(quoted)) {\n return quoted;\n }\n\n if (!extraLookup) {\n extraLookup = unrollLookup(extraEscapable);\n }\n\n return quoted.replace(extraEscapable, function(a) {\n return extraLookup[a];\n });\n }\n};\n\n},{}],46:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar random = require('./random');\n\nvar onUnload = {}\n , afterUnload = false\n // detect google chrome packaged apps because they don't allow the 'unload' event\n , isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime\n ;\n\nmodule.exports = {\n attachEvent: function(event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.addEventListener(event, listener, false);\n } else if (global.document && global.attachEvent) {\n // IE quirks.\n // According to: http://stevesouders.com/misc/test-postmessage.php\n // the message gets delivered only to 'document', not 'window'.\n global.document.attachEvent('on' + event, listener);\n // I get 'window' for ie8.\n global.attachEvent('on' + event, listener);\n }\n }\n\n, detachEvent: function(event, listener) {\n if (typeof global.addEventListener !== 'undefined') {\n global.removeEventListener(event, listener, false);\n } else if (global.document && global.detachEvent) {\n global.document.detachEvent('on' + event, listener);\n global.detachEvent('on' + event, listener);\n }\n }\n\n, unloadAdd: function(listener) {\n if (isChromePackagedApp) {\n return null;\n }\n\n var ref = random.string(8);\n onUnload[ref] = listener;\n if (afterUnload) {\n setTimeout(this.triggerUnloadCallbacks, 0);\n }\n return ref;\n }\n\n, unloadDel: function(ref) {\n if (ref in onUnload) {\n delete onUnload[ref];\n }\n }\n\n, triggerUnloadCallbacks: function() {\n for (var ref in onUnload) {\n onUnload[ref]();\n delete onUnload[ref];\n }\n }\n};\n\nvar unloadTriggered = function() {\n if (afterUnload) {\n return;\n }\n afterUnload = true;\n module.exports.triggerUnloadCallbacks();\n};\n\n// 'unload' alone is not reliable in opera within an iframe, but we\n// can't use `beforeunload` as IE fires it on javascript: links.\nif (!isChromePackagedApp) {\n module.exports.attachEvent('unload', unloadTriggered);\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./random\":50}],47:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict';\n\nvar eventUtils = require('./event')\n , browser = require('./browser')\n ;\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:iframe');\n}\n\nmodule.exports = {\n WPrefix: '_jp'\n, currentWindowId: null\n\n, polluteGlobalNamespace: function() {\n if (!(module.exports.WPrefix in global)) {\n global[module.exports.WPrefix] = {};\n }\n }\n\n, postMessage: function(type, data) {\n if (global.parent !== global) {\n global.parent.postMessage(JSON.stringify({\n windowId: module.exports.currentWindowId\n , type: type\n , data: data || ''\n }), '*');\n } else {\n debug('Cannot postMessage, no parent window.', type, data);\n }\n }\n\n, createIframe: function(iframeUrl, errorCallback) {\n var iframe = global.document.createElement('iframe');\n var tref, unloadRef;\n var unattach = function() {\n debug('unattach');\n clearTimeout(tref);\n // Explorer had problems with that.\n try {\n iframe.onload = null;\n } catch (x) {\n // intentionally empty\n }\n iframe.onerror = null;\n };\n var cleanup = function() {\n debug('cleanup');\n if (iframe) {\n unattach();\n // This timeout makes chrome fire onbeforeunload event\n // within iframe. Without the timeout it goes straight to\n // onunload.\n setTimeout(function() {\n if (iframe) {\n iframe.parentNode.removeChild(iframe);\n }\n iframe = null;\n }, 0);\n eventUtils.unloadDel(unloadRef);\n }\n };\n var onerror = function(err) {\n debug('onerror', err);\n if (iframe) {\n cleanup();\n errorCallback(err);\n }\n };\n var post = function(msg, origin) {\n debug('post', msg, origin);\n setTimeout(function() {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n } catch (x) {\n // intentionally empty\n }\n }, 0);\n };\n\n iframe.src = iframeUrl;\n iframe.style.display = 'none';\n iframe.style.position = 'absolute';\n iframe.onerror = function() {\n onerror('onerror');\n };\n iframe.onload = function() {\n debug('onload');\n // `onload` is triggered before scripts on the iframe are\n // executed. Give it few seconds to actually load stuff.\n clearTimeout(tref);\n tref = setTimeout(function() {\n onerror('onload timeout');\n }, 2000);\n };\n global.document.body.appendChild(iframe);\n tref = setTimeout(function() {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post\n , cleanup: cleanup\n , loaded: unattach\n };\n }\n\n/* eslint no-undef: \"off\", new-cap: \"off\" */\n, createHtmlfile: function(iframeUrl, errorCallback) {\n var axo = ['Active'].concat('Object').join('X');\n var doc = new global[axo]('htmlfile');\n var tref, unloadRef;\n var iframe;\n var unattach = function() {\n clearTimeout(tref);\n iframe.onerror = null;\n };\n var cleanup = function() {\n if (doc) {\n unattach();\n eventUtils.unloadDel(unloadRef);\n iframe.parentNode.removeChild(iframe);\n iframe = doc = null;\n CollectGarbage();\n }\n };\n var onerror = function(r) {\n debug('onerror', r);\n if (doc) {\n cleanup();\n errorCallback(r);\n }\n };\n var post = function(msg, origin) {\n try {\n // When the iframe is not loaded, IE raises an exception\n // on 'contentWindow'.\n setTimeout(function() {\n if (iframe && iframe.contentWindow) {\n iframe.contentWindow.postMessage(msg, origin);\n }\n }, 0);\n } catch (x) {\n // intentionally empty\n }\n };\n\n doc.open();\n doc.write('<html><s' + 'cript>' +\n 'document.domain=\"' + global.document.domain + '\";' +\n '</s' + 'cript></html>');\n doc.close();\n doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix];\n var c = doc.createElement('div');\n doc.body.appendChild(c);\n iframe = doc.createElement('iframe');\n c.appendChild(iframe);\n iframe.src = iframeUrl;\n iframe.onerror = function() {\n onerror('onerror');\n };\n tref = setTimeout(function() {\n onerror('timeout');\n }, 15000);\n unloadRef = eventUtils.unloadAdd(cleanup);\n return {\n post: post\n , cleanup: cleanup\n , loaded: unattach\n };\n }\n};\n\nmodule.exports.iframeEnabled = false;\nif (global.document) {\n // postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with\n // huge delay, or not at all.\n module.exports.iframeEnabled = (typeof global.postMessage === 'function' ||\n typeof global.postMessage === 'object') && (!browser.isKonqueror());\n}\n\n}).call(this)}).call(this,{ env: {} },typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"./browser\":44,\"./event\":46,\"debug\":55}],48:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar logObject = {};\n['log', 'debug', 'warn'].forEach(function (level) {\n var levelExists;\n\n try {\n levelExists = global.console && global.console[level] && global.console[level].apply;\n } catch(e) {\n // do nothing\n }\n\n logObject[level] = levelExists ? function () {\n return global.console[level].apply(global.console, arguments);\n } : (level === 'log' ? function () {} : logObject.log);\n});\n\nmodule.exports = logObject;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],49:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n isObject: function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n }\n\n, extend: function(obj) {\n if (!this.isObject(obj)) {\n return obj;\n }\n var source, prop;\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n for (prop in source) {\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n return obj;\n }\n};\n\n},{}],50:[function(require,module,exports){\n'use strict';\n\nvar crypto = require('crypto');\n\n// This string has length 32, a power of 2, so the modulus doesn't introduce a\n// bias.\nvar _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345';\nmodule.exports = {\n string: function(length) {\n var max = _randomStringChars.length;\n var bytes = crypto.randomBytes(length);\n var ret = [];\n for (var i = 0; i < length; i++) {\n ret.push(_randomStringChars.substr(bytes[i] % max, 1));\n }\n return ret.join('');\n }\n\n, number: function(max) {\n return Math.floor(Math.random() * max);\n }\n\n, numberString: function(max) {\n var t = ('' + (max - 1)).length;\n var p = new Array(t + 1).join('0');\n return (p + this.number(max)).slice(-t);\n }\n};\n\n},{\"crypto\":43}],51:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:transport');\n}\n\nmodule.exports = function(availableTransports) {\n return {\n filterToEnabled: function(transportsWhitelist, info) {\n var transports = {\n main: []\n , facade: []\n };\n if (!transportsWhitelist) {\n transportsWhitelist = [];\n } else if (typeof transportsWhitelist === 'string') {\n transportsWhitelist = [transportsWhitelist];\n }\n\n availableTransports.forEach(function(trans) {\n if (!trans) {\n return;\n }\n\n if (trans.transportName === 'websocket' && info.websocket === false) {\n debug('disabled from server', 'websocket');\n return;\n }\n\n if (transportsWhitelist.length &&\n transportsWhitelist.indexOf(trans.transportName) === -1) {\n debug('not in whitelist', trans.transportName);\n return;\n }\n\n if (trans.enabled(info)) {\n debug('enabled', trans.transportName);\n transports.main.push(trans);\n if (trans.facadeTransport) {\n transports.facade.push(trans.facadeTransport);\n }\n } else {\n debug('disabled', trans.transportName);\n }\n });\n return transports;\n }\n };\n};\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55}],52:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar URL = require('url-parse');\n\nvar debug = function() {};\nif (process.env.NODE_ENV !== 'production') {\n debug = require('debug')('sockjs-client:utils:url');\n}\n\nmodule.exports = {\n getOrigin: function(url) {\n if (!url) {\n return null;\n }\n\n var p = new URL(url);\n if (p.protocol === 'file:') {\n return null;\n }\n\n var port = p.port;\n if (!port) {\n port = (p.protocol === 'https:') ? '443' : '80';\n }\n\n return p.protocol + '//' + p.hostname + ':' + port;\n }\n\n, isOriginEqual: function(a, b) {\n var res = this.getOrigin(a) === this.getOrigin(b);\n debug('same', a, b, res);\n return res;\n }\n\n, isSchemeEqual: function(a, b) {\n return (a.split(':')[0] === b.split(':')[0]);\n }\n\n, addPath: function (url, path) {\n var qs = url.split('?');\n return qs[0] + path + (qs[1] ? '?' + qs[1] : '');\n }\n\n, addQuery: function (url, q) {\n return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q));\n }\n\n, isLoopbackAddr: function (addr) {\n return /^127\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$/i.test(addr) || /^\\[::1\\]$/.test(addr);\n }\n};\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"debug\":55,\"url-parse\":60}],53:[function(require,module,exports){\nmodule.exports = '1.6.0';\n\n},{}],54:[function(require,module,exports){\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n},{}],55:[function(require,module,exports){\n(function (process){(function (){\n\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n}).call(this)}).call(this,{ env: {} })\n\n},{\"./common\":56}],56:[function(require,module,exports){\n\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n\n},{\"ms\":54}],57:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],58:[function(require,module,exports){\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n\n},{}],59:[function(require,module,exports){\n'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n\n},{}],60:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"querystringify\":58,\"requires-port\":59}]},{},[1])(1)\n});\n\n\n"]},"metadata":{},"sourceType":"script"}
|