{"version":3,"file":"lessons-CvZE2wKj.js","sources":["../../../client/node_modules/raven-js/vendor/json-stringify-safe/stringify.js","../../../client/node_modules/raven-js/src/utils.js","../../../client/node_modules/raven-js/vendor/TraceKit/tracekit.js","../../../client/node_modules/raven-js/vendor/md5/md5.js","../../../client/node_modules/raven-js/src/configError.js","../../../client/node_modules/raven-js/src/console.js","../../../client/node_modules/raven-js/src/raven.js","../../../client/node_modules/raven-js/src/singleton.js","../../../client/app/bundles/Lessons/constants.js","../../../client/node_modules/parseuri/index.js","../../../client/node_modules/socket.io-client/node_modules/ms/index.js","../../../client/node_modules/socket.io-client/node_modules/debug/src/debug.js","../../../client/node_modules/socket.io-client/node_modules/debug/src/browser.js","../../../client/node_modules/socket.io-client/lib/url.js","../../../client/node_modules/socket.io-parser/node_modules/ms/index.js","../../../client/node_modules/socket.io-parser/node_modules/debug/src/debug.js","../../../client/node_modules/socket.io-parser/node_modules/debug/src/browser.js","../../../client/node_modules/component-emitter/index.js","../../../client/node_modules/socket.io-parser/node_modules/isarray/index.js","../../../client/node_modules/socket.io-parser/is-buffer.js","../../../client/node_modules/socket.io-parser/binary.js","../../../client/node_modules/socket.io-parser/index.js","../../../client/node_modules/has-cors/index.js","../../../client/node_modules/engine.io-client/lib/globalThis.browser.js","../../../client/node_modules/engine.io-client/lib/transports/xmlhttprequest.browser.js","../../../client/node_modules/engine.io-parser/lib/keys.js","../../../client/node_modules/has-binary2/node_modules/isarray/index.js","../../../client/node_modules/has-binary2/index.js","../../../client/node_modules/arraybuffer.slice/index.js","../../../client/node_modules/after/index.js","../../../client/node_modules/engine.io-parser/lib/utf8.js","../../../client/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../../../client/node_modules/blob/index.js","../../../client/node_modules/engine.io-parser/lib/browser.js","../../../client/node_modules/engine.io-client/lib/transport.js","../../../client/node_modules/parseqs/index.js","../../../client/node_modules/component-inherit/index.js","../../../client/node_modules/yeast/index.js","../../../client/node_modules/engine.io-client/node_modules/ms/index.js","../../../client/node_modules/engine.io-client/node_modules/debug/src/debug.js","../../../client/node_modules/engine.io-client/node_modules/debug/src/browser.js","../../../client/node_modules/engine.io-client/lib/transports/polling.js","../../../client/node_modules/engine.io-client/lib/transports/polling-xhr.js","../../../client/node_modules/engine.io-client/lib/transports/polling-jsonp.js","../../../client/node_modules/engine.io-client/lib/transports/websocket.js","../../../client/node_modules/engine.io-client/lib/transports/index.js","../../../client/node_modules/indexof/index.js","../../../client/node_modules/engine.io-client/lib/socket.js","../../../client/node_modules/engine.io-client/lib/index.js","../../../client/node_modules/to-array/index.js","../../../client/node_modules/socket.io-client/lib/on.js","../../../client/node_modules/component-bind/index.js","../../../client/node_modules/socket.io-client/lib/socket.js","../../../client/node_modules/backo2/index.js","../../../client/node_modules/socket.io-client/lib/manager.js","../../../client/node_modules/socket.io-client/lib/index.js","../../../client/app/bundles/Lessons/utils/socketStore.js","../../../client/app/bundles/Lessons/components/renderForQuestions/renderTextEditor.jsx","../../../client/app/bundles/Lessons/components/admin/admin.jsx","../../../client/app/bundles/Lessons/components/customize/slides/slideComponents/multipleTextEditor.jsx","../../../client/app/bundles/Lessons/reducers/classroomLesson.js","../../../client/app/bundles/Lessons/reducers/classroomLessons.js","../../../client/app/bundles/Lessons/reducers/classroomLessonsReviews.js","../../../client/app/bundles/Lessons/reducers/classroomSessions.js","../../../client/app/bundles/Lessons/reducers/concepts.js","../../../client/app/bundles/Lessons/reducers/customize.js","../../../client/app/bundles/Lessons/reducers/display.js","../../../client/app/bundles/Lessons/reducers/filtersReducer.js","../../../client/app/bundles/Lessons/reducers/massEdit.js","../../../client/app/bundles/Lessons/reducers/combined.js","../../../client/app/bundles/Lessons/components/navbar/launchEditionNavbar.jsx","../../../client/app/bundles/Lessons/components/navbar/navbar.jsx","../../../client/app/bundles/Lessons/libs/conceptResults/classroomLessons.js","../../../client/app/bundles/Lessons/components/root.jsx","../../../client/app/bundles/Lessons/components/navbar/studentLessonsNavbar.jsx","../../../client/app/bundles/Lessons/components/navbar/studentNavbar.jsx","../../../client/app/bundles/Lessons/components/studentRoot.jsx","../../../client/app/bundles/Lessons/components/socketProvider.jsx","../../../client/app/bundles/Lessons/utils/backOff.js","../../../client/app/bundles/Lessons/utils/configureStore.js","../../../client/app/bundles/Lessons/clientRegistration.js"],"sourcesContent":["/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n","var stringify = require('../vendor/json-stringify-safe/stringify');\n\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n}\n\nfunction isErrorEvent(value) {\n return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isDOMError(value) {\n return Object.prototype.toString.call(value) === '[object DOMError]';\n}\n\nfunction isDOMException(value) {\n return Object.prototype.toString.call(value) === '[object DOMException]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isPlainObject(what) {\n return Object.prototype.toString.call(what) === '[object Object]';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isArray(what) {\n return Object.prototype.toString.call(what) === '[object Array]';\n}\n\nfunction isEmptyObject(what) {\n if (!isPlainObject(what)) return false;\n\n for (var _ in what) {\n if (what.hasOwnProperty(_)) {\n return false;\n }\n }\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMError() {\n try {\n new DOMError(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMException() {\n try {\n new DOMException(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsFetch() {\n if (!('fetch' in _window)) return false;\n\n try {\n new Headers(); // eslint-disable-line no-new\n new Request(''); // eslint-disable-line no-new\n new Response(); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n// https://caniuse.com/#feat=referrer-policy\n// It doesn't. And it throw exception instead of ignoring this parameter...\n// REF: https://github.com/getsentry/raven-js/issues/1233\nfunction supportsReferrerPolicy() {\n if (!supportsFetch()) return false;\n\n try {\n // eslint-disable-next-line no-new\n new Request('pickleRick', {\n referrerPolicy: 'origin'\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsPromiseRejectionEvent() {\n return typeof PromiseRejectionEvent === 'function';\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n if (typeof max !== 'number') {\n throw new Error('2nd argument to `truncate` function should be a number');\n }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n if (typeof url !== 'string') return {};\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if both parameters are undefined\n */\nfunction isBothUndefined(a, b) {\n return isUndefined(a) && isUndefined(b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n // in case both stacktraces are undefined, we can't decide so default to false\n if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if stacktrace is malformed\n if (frames1 === undefined || frames2 === undefined) return false;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n if (obj == null) return;\n var orig = obj[name];\n obj[name] = replacement(orig);\n obj[name].__raven__ = true;\n obj[name].__orig__ = orig;\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns {string}\n */\nfunction safeJoin(input, delimiter) {\n if (!isArray(input)) return '';\n\n var output = [];\n\n for (var i = 0; i < input.length; i++) {\n try {\n output.push(String(input[i]));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n// Default Node.js REPL depth\nvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3;\n// 50kB, as 100kB is max payload size, so half sounds reasonable\nvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\nvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nfunction serializeValue(value) {\n if (typeof value === 'string') {\n var maxLength = 40;\n return truncate(value, maxLength);\n } else if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined'\n ) {\n return value;\n }\n\n var type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (type === '[object Object]') return '[Object]';\n if (type === '[object Array]') return '[Array]';\n if (type === '[object Function]')\n return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\n return value;\n}\n\nfunction serializeObject(value, depth) {\n if (depth === 0) return serializeValue(value);\n\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(function(acc, key) {\n acc[key] = serializeObject(value[key], depth - 1);\n return acc;\n }, {});\n } else if (Array.isArray(value)) {\n return value.map(function(val) {\n return serializeObject(val, depth - 1);\n });\n }\n\n return serializeValue(value);\n}\n\nfunction serializeException(ex, depth, maxSize) {\n if (!isPlainObject(ex)) return ex;\n\n depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\n var serialized = serializeObject(ex, depth);\n\n if (jsonSize(stringify(serialized)) > maxSize) {\n return serializeException(ex, depth - 1);\n }\n\n return serialized;\n}\n\nfunction serializeKeysForMessage(keys, maxLength) {\n if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n if (!Array.isArray(keys)) return '';\n\n keys = keys.filter(function(key) {\n return typeof key === 'string';\n });\n if (keys.length === 0) return '[object has no keys]';\n\n maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n if (keys[0].length >= maxLength) return keys[0];\n\n for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n var serialized = keys.slice(0, usedKeys).join(', ');\n if (serialized.length > maxLength) continue;\n if (usedKeys === keys.length) return serialized;\n return serialized + '\\u2026';\n }\n\n return '';\n}\n\nfunction sanitize(input, sanitizeKeys) {\n if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0))\n return input;\n\n var sanitizeRegExp = joinRegExp(sanitizeKeys);\n var sanitizeMask = '********';\n var safeInput;\n\n try {\n safeInput = JSON.parse(stringify(input));\n } catch (o_O) {\n return input;\n }\n\n function sanitizeWorker(workerInput) {\n if (isArray(workerInput)) {\n return workerInput.map(function(val) {\n return sanitizeWorker(val);\n });\n }\n\n if (isPlainObject(workerInput)) {\n return Object.keys(workerInput).reduce(function(acc, k) {\n if (sanitizeRegExp.test(k)) {\n acc[k] = sanitizeMask;\n } else {\n acc[k] = sanitizeWorker(workerInput[k]);\n }\n return acc;\n }, {});\n }\n\n return workerInput;\n }\n\n return sanitizeWorker(safeInput);\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isDOMError: isDOMError,\n isDOMException: isDOMException,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isPlainObject: isPlainObject,\n isString: isString,\n isArray: isArray,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n supportsDOMError: supportsDOMError,\n supportsDOMException: supportsDOMException,\n supportsFetch: supportsFetch,\n supportsReferrerPolicy: supportsReferrerPolicy,\n supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill,\n safeJoin: safeJoin,\n serializeException: serializeException,\n serializeKeysForMessage: serializeKeysForMessage,\n sanitize: sanitize\n};\n","var utils = require('../../src/utils');\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\nfunction getLocationOrigin() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n // Oh dear IE10...\n if (!document.location.origin) {\n return (\n document.location.protocol +\n '//' +\n document.location.hostname +\n (document.location.port ? ':' + document.location.port : '')\n );\n }\n\n return document.location.origin;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} msg Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n var stack = null;\n // If 'ex' is ErrorEvent, get real Error from inside\n var exception = utils.isErrorEvent(ex) ? ex.error : ex;\n // If 'msg' is ErrorEvent, get real message from inside\n var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (exception && utils.isError(exception)) {\n // non-string `exception` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(exception);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var groups;\n\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: message,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(\n function() {\n if (lastException === ex) {\n processLastException();\n }\n },\n stack.incomplete ? 2000 : 0\n );\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n // Used to additionally parse URL/line/column from eval frames\n var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n var lines = ex.stack.split('\\n');\n var stack = [];\n var submatch;\n var parts;\n var element;\n var reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n if (element.url && element.url.substr(0, 5) === 'blob:') {\n // Special case for handling JavaScript loaded into a blob.\n // We use a synchronous AJAX request here as a blob is already in\n // memory - it's not making a network request. This will generate a warning\n // in the browser console, but there has already been an error so that's not\n // that much of an issue.\n var xhr = new XMLHttpRequest();\n xhr.open('GET', element.url, false);\n xhr.send(null);\n\n // If we failed to download the source, skip this patch\n if (xhr.status === 200) {\n var source = xhr.responseText || '';\n\n // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n source = source.slice(-300);\n\n // Now we dig out the source map URL\n var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/);\n\n // If we don't find a source map comment or we find more than one, continue on to the next element.\n if (sourceMaps) {\n var sourceMapAddress = sourceMaps[1];\n\n // Now we check to see if it's a relative URL.\n // If it is, convert it to an absolute one.\n if (sourceMapAddress.charAt(0) === '~') {\n sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n }\n\n // Now we strip the '.map' off of the end of the URL and update the\n // element so that Sentry can match the map to the blob.\n element.url = sourceMapAddress.slice(0, -4);\n }\n }\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n* to work around bugs in some JS interpreters.\n*/\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n* Bitwise rotate a 32-bit number to the left.\n*/\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\n/*\n* These functions implement the four basic operations the algorithm uses.\n*/\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n* Calculate the MD5 of an array of little-endian words, and a bit length.\n*/\nfunction binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return [a, b, c, d];\n}\n\n/*\n* Convert an array of little-endian words to a string\n*/\nfunction binl2rstr(input) {\n var i;\n var output = '';\n var length32 = input.length * 32;\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n }\n return output;\n}\n\n/*\n* Convert a raw string to an array of little-endian words\n* Characters >255 have their high-byte silently ignored.\n*/\nfunction rstr2binl(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n var length8 = input.length * 8;\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n }\n return output;\n}\n\n/*\n* Calculate the MD5 of a raw string\n*/\nfunction rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\n/*\n* Calculate the HMAC-MD5, of a key and some data (raw strings)\n*/\nfunction rstrHMACMD5(key, data) {\n var i;\n var bkey = rstr2binl(key);\n var ipad = [];\n var opad = [];\n var hash;\n ipad[15] = opad[15] = undefined;\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\n/*\n* Convert a raw string to a hex string\n*/\nfunction rstr2hex(input) {\n var hexTab = '0123456789abcdef';\n var output = '';\n var x;\n var i;\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i);\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n* Encode a string as utf-8\n*/\nfunction str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input));\n}\n\n/*\n* Take string arguments and return either raw or hex encoded strings\n*/\nfunction rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s));\n}\nfunction hexMD5(s) {\n return rstr2hex(rawMD5(s));\n}\nfunction rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\nfunction hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d));\n}\n\nfunction md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string);\n }\n return rawMD5(string);\n }\n if (!raw) {\n return hexHMACMD5(key, string);\n }\n return rawHMACMD5(key, string);\n}\n\nmodule.exports = md5;\n","function RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n","var utils = require('./utils');\n\nvar wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn' ? 'warning' : level;\n\n console[level] = function() {\n var args = [].slice.call(arguments);\n\n var msg = utils.safeJoin(args, ' ');\n var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n if (level === 'assert') {\n if (args[0] === false) {\n // Default browsers message\n msg =\n 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n data.extra.arguments = args.slice(1);\n callback && callback(msg, data);\n }\n } else {\n callback && callback(msg, data);\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n","/*global XDomainRequest:false */\n\nvar TraceKit = require('../vendor/TraceKit/tracekit');\nvar stringify = require('../vendor/json-stringify-safe/stringify');\nvar md5 = require('../vendor/md5/md5');\nvar RavenConfigError = require('./configError');\n\nvar utils = require('./utils');\nvar isErrorEvent = utils.isErrorEvent;\nvar isDOMError = utils.isDOMError;\nvar isDOMException = utils.isDOMException;\nvar isError = utils.isError;\nvar isObject = utils.isObject;\nvar isPlainObject = utils.isPlainObject;\nvar isUndefined = utils.isUndefined;\nvar isFunction = utils.isFunction;\nvar isString = utils.isString;\nvar isArray = utils.isArray;\nvar isEmptyObject = utils.isEmptyObject;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar objectFrozen = utils.objectFrozen;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar isSameException = utils.isSameException;\nvar isSameStacktrace = utils.isSameStacktrace;\nvar parseUrl = utils.parseUrl;\nvar fill = utils.fill;\nvar supportsFetch = utils.supportsFetch;\nvar supportsReferrerPolicy = utils.supportsReferrerPolicy;\nvar serializeKeysForMessage = utils.serializeKeysForMessage;\nvar serializeException = utils.serializeException;\nvar sanitize = utils.sanitize;\n\nvar wrapConsoleMethod = require('./console').wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _document = _window.document;\nvar _navigator = _window.navigator;\n\nfunction keepOriginalCallback(original, callback) {\n return isFunction(callback)\n ? function(data) {\n return callback(data, original);\n }\n : callback;\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = !isUndefined(_document);\n this._hasNavigator = !isUndefined(_navigator);\n this._lastCapturedException = null;\n this._lastData = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id,\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n headers: null,\n collectWindowErrors: true,\n captureUnhandledRejections: true,\n maxMessageLength: 0,\n // By default, truncates URL values to 250 chars\n maxUrlLength: 250,\n stackTraceLimit: 50,\n autoBreadcrumbs: true,\n instrument: true,\n sampleRate: 1,\n sanitizeKeys: []\n };\n this._fetchDefaults = {\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: supportsReferrerPolicy() ? 'origin' : ''\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = _window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = _window.location;\n this._lastHref = this._location && this._location.href;\n this._resetBackoff();\n\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsole) {\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.27.2',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Set of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (self._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return self;\n }\n if (!dsn) return self;\n\n var globalOptions = self._globalOptions;\n\n // merge in options\n if (options) {\n each(options, function(key, value) {\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra' || key === 'user') {\n self._globalContext[key] = value;\n } else {\n globalOptions[key] = value;\n }\n });\n }\n\n self.setDSN(dsn);\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);\n globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n ? joinRegExp(globalOptions.ignoreUrls)\n : false;\n globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n ? joinRegExp(globalOptions.whitelistUrls)\n : false;\n globalOptions.includePaths = joinRegExp(globalOptions.includePaths);\n globalOptions.maxBreadcrumbs = Math.max(\n 0,\n Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n ); // default and hard limit is 100\n\n var autoBreadcrumbDefaults = {\n xhr: true,\n console: true,\n dom: true,\n location: true,\n sentry: true\n };\n\n var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs);\n } else if (autoBreadcrumbs !== false) {\n autoBreadcrumbs = autoBreadcrumbDefaults;\n }\n globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n var instrumentDefaults = {\n tryCatch: true\n };\n\n var instrument = globalOptions.instrument;\n if ({}.toString.call(instrument) === '[object Object]') {\n instrument = objectMerge(instrumentDefaults, instrument);\n } else if (instrument !== false) {\n instrument = instrumentDefaults;\n }\n globalOptions.instrument = instrument;\n\n TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n // return for chaining\n return self;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (self.isSetup() && !self._isRavenInstalled) {\n TraceKit.report.subscribe(function() {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n\n if (self._globalOptions.captureUnhandledRejections) {\n self._attachPromiseRejectionHandler();\n }\n\n self._patchFunctionToString();\n\n if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n self._instrumentTryCatch();\n }\n\n if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n // Install all of the plugins\n self._drainPlugins();\n\n self._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Set the DSN (can be called multiple time unlike config)\n *\n * @param {string} dsn The public Sentry DSN\n */\n setDSN: function(dsn) {\n var self = this,\n uri = self._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n self._dsn = dsn;\n self._globalKey = uri.user;\n self._globalSecret = uri.pass && uri.pass.substr(1);\n self._globalProject = uri.path.substr(lastSlash + 1);\n\n self._globalServer = self._getGlobalServer(uri);\n\n self._globalEndpoint =\n self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n // Reset backoff state since we may be pointing at a\n // new project/server\n this._resetBackoff();\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = {};\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__) {\n return func.__raven_wrapper__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || (options && options.deep !== false);\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means Raven caught an error invoking your application code. This is\n // expected behavior and NOT indicative of a bug with Raven.js.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n wrapped.__raven__ = true;\n wrapped.__orig__ = func;\n\n return wrapped;\n },\n\n /**\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._detachPromiseRejectionHandler();\n this._unpatchFunctionToString();\n this._restoreBuiltIns();\n this._restoreConsole();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /**\n * Callback used for `unhandledrejection` event\n *\n * @param {PromiseRejectionEvent} event An object containing\n * promise: the Promise that was rejected\n * reason: the value with which the Promise was rejected\n * @return void\n */\n _promiseRejectionHandler: function(event) {\n this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n this.captureException(event.reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n });\n },\n\n /**\n * Installs the global promise rejection handler.\n *\n * @return {raven}\n */\n _attachPromiseRejectionHandler: function() {\n this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n _window.addEventListener &&\n _window.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Uninstalls the global promise rejection handler.\n *\n * @return {raven}\n */\n _detachPromiseRejectionHandler: function() {\n _window.removeEventListener &&\n _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n return this;\n },\n\n /**\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n options = objectMerge({trimHeadFrames: 0}, options ? options : {});\n\n if (isErrorEvent(ex) && ex.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n ex = ex.error;\n } else if (isDOMError(ex) || isDOMException(ex)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException');\n var message = ex.message ? name + ': ' + ex.message : name;\n\n return this.captureMessage(\n message,\n objectMerge(options, {\n // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n // but it's barely any overhead so we may at least try\n stacktrace: true,\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n } else if (isError(ex)) {\n // we have a real Error object\n ex = ex;\n } else if (isPlainObject(ex)) {\n // If it is plain Object, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n ex = new Error(options.message);\n } else {\n // If none of previous checks were valid, then it means that\n // it's not a DOMError/DOMException\n // it's not a plain Object\n // it's not a valid ErrorEvent (one with an error property)\n // it's not an Error\n // So bail out and capture it as a simple message:\n return this.captureMessage(\n ex,\n objectMerge(options, {\n stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace\n trimHeadFrames: options.trimHeadFrames + 1\n })\n );\n }\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch (ex1) {\n if (ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) {\n var exKeys = Object.keys(ex).sort();\n var options = objectMerge(currentOptions, {\n message:\n 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys),\n fingerprint: [md5(exKeys)],\n extra: currentOptions.extra || {}\n });\n options.extra.__serialized__ = serializeException(ex);\n\n return options;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (\n !!this._globalOptions.ignoreErrors.test &&\n this._globalOptions.ignoreErrors.test(msg)\n ) {\n return;\n }\n\n options = options || {};\n msg = msg + ''; // Make sure it's actually a string\n\n var data = objectMerge(\n {\n message: msg\n },\n options\n );\n\n var ex;\n // Generate a \"synthetic\" stack trace from this point.\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n // or if it catches a thrown object without a \"stack\" property.\n try {\n throw new Error(msg);\n } catch (ex1) {\n ex = ex1;\n }\n\n // null exception name so `Error` isn't prefixed to msg\n ex.name = null;\n var stack = TraceKit.computeStackTrace(ex);\n\n // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n var initialCall = isArray(stack.stack) && stack.stack[1];\n\n // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n // initialCall => captureException(string) => captureMessage(string)\n if (initialCall && initialCall.func === 'Raven.captureException') {\n initialCall = stack.stack[2];\n }\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n // Always attempt to get stacktrace if message is empty.\n // It's the only way to provide any helpful information to the user.\n if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\n options = objectMerge(\n {\n trimHeadFrames: 0\n },\n options\n );\n // Since we know this is a synthetic trace, the top frame (this function call)\n // MUST be from Raven.js, so mark it for trimming\n // We add to the trim counter so that callers can choose to trim extra frames, such\n // as utility functions.\n options.trimHeadFrames += 1;\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Make sure that fingerprint is always wrapped in an array\n if (data.fingerprint) {\n data.fingerprint = isArray(data.fingerprint)\n ? data.fingerprint\n : [data.fingerprint];\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = objectMerge(\n {\n eventId: this.lastEventId(),\n dsn: this._dsn,\n user: this._globalContext.user || {}\n },\n options\n );\n\n if (!options.eventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n if (!options.dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var encodedOptions = [];\n\n for (var key in options) {\n if (key === 'user') {\n var user = options.user;\n if (user.name) encodedOptions.push('name=' + encode(user.name));\n if (user.email) encodedOptions.push('email=' + encode(user.email));\n } else {\n encodedOptions.push(encode(key) + '=' + encode(options[key]));\n }\n }\n var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n _patchFunctionToString: function() {\n var self = this;\n self._originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = function() {\n if (typeof this === 'function' && this.__raven__) {\n return self._originalFunctionToString.apply(this.__orig__, arguments);\n }\n return self._originalFunctionToString.apply(this, arguments);\n };\n },\n\n _unpatchFunctionToString: function() {\n if (this._originalFunctionToString) {\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = this._originalFunctionToString;\n }\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: orig.name || ''}\n }\n },\n originalCallback\n );\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'handleEvent',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn.handleEvent\n );\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'addEventListener',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn,\n before\n ),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'requestAnimationFrame',\n handler: (orig && orig.name) || ''\n }\n }\n },\n cb\n )\n );\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: prop, handler: (orig && orig.name) || ''}\n }\n },\n orig\n );\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function() {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'onreadystatechange',\n handler: (orig && orig.name) || ''\n }\n }\n },\n orig,\n onreadystatechangeHandler\n );\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && supportsFetch()) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function() {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n // if Sentry key appears in URL, don't capture, as it's our own request\n if (url.indexOf(self._globalKey) !== -1) {\n return origFetch.apply(this, args);\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n return origFetch\n .apply(this, args)\n .then(function(response) {\n fetchData.status_code = response.status;\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return response;\n })\n ['catch'](function(err) {\n // if there is an error performing the request\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData,\n level: 'error'\n });\n\n throw err;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else if (_document.attachEvent) {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n _window.history.pushState &&\n _window.history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _restoreConsole: function() {\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsoleMethods) {\n this._originalConsole[method] = this._originalConsoleMethods[method];\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function(stackInfo, options) {\n options = options || {};\n options.mechanism = options.mechanism || {\n type: 'onerror',\n handled: false\n };\n\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo(stackInfo, options);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n transaction: fileurl\n },\n options\n );\n\n var ex = data.exception.values[0];\n if (ex.type == null && ex.value === '') {\n ex.value = 'Unrecoverable error caught';\n }\n\n // Move mechanism from options to exception interface\n // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n // too much\n if (!data.exception.mechanism && data.mechanism) {\n data.exception.mechanism = data.mechanism;\n delete data.mechanism;\n }\n\n data.exception.mechanism = objectMerge(\n {\n type: 'generic',\n handled: true\n },\n data.exception.mechanism || {}\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': _navigator.userAgent\n };\n }\n\n // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n if (_window.location && _window.location.href) {\n httpData.url = _window.location.href;\n }\n\n if (this._hasDocument && _document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.transaction !== last.transaction // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n } else if (current.fingerprint || last.fingerprint) {\n return Boolean(current.fingerprint && last.fingerprint) &&\n JSON.stringify(current.fingerprint) === JSON.stringify(last.fingerprint)\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n if (supportsFetch()) {\n retry = request.headers.get('Retry-After');\n } else {\n retry = request.getResponseHeader('Retry-After');\n }\n\n // Retry-After is returned in seconds\n retry = parseInt(retry, 10) * 1000;\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n data = this._sanitizeData(data);\n\n // Cleanup empty properties before sending them to the server\n Object.keys(data).forEach(function(key) {\n if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) {\n delete data[key];\n }\n });\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _sanitizeData: function(data) {\n return sanitize(data, this._globalOptions.sanitizeKeys);\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n\n // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n if (\n this._globalOptions.autoBreadcrumbs &&\n this._globalOptions.autoBreadcrumbs.sentry\n ) {\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n }\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n var url = opts.url + '?' + urlencode(opts.auth);\n\n var evaluatedHeaders = null;\n var evaluatedFetchParameters = {};\n\n if (opts.options.headers) {\n evaluatedHeaders = this._evaluateHash(opts.options.headers);\n }\n\n if (opts.options.fetchParameters) {\n evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n }\n\n if (supportsFetch()) {\n evaluatedFetchParameters.body = stringify(opts.data);\n\n var defaultFetchOptions = objectMerge({}, this._fetchDefaults);\n var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters);\n\n if (evaluatedHeaders) {\n fetchOptions.headers = evaluatedHeaders;\n }\n\n return _window\n .fetch(url, fetchOptions)\n .then(function(response) {\n if (response.ok) {\n opts.onSuccess && opts.onSuccess();\n } else {\n var error = new Error('Sentry error code: ' + response.status);\n // It's called request only to keep compatibility with XHR interface\n // and not add more redundant checks in setBackoffState method\n error.request = response;\n opts.onError && opts.onError(error);\n }\n })\n ['catch'](function() {\n opts.onError &&\n opts.onError(new Error('Sentry error code: network unavailable'));\n });\n }\n\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n request.open('POST', url);\n\n if (evaluatedHeaders) {\n each(evaluatedHeaders, function(key, value) {\n request.setRequestHeader(key, value);\n });\n }\n\n request.send(stringify(opts.data));\n },\n\n _evaluateHash: function(hash) {\n var evaluated = {};\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n var value = hash[key];\n evaluated[key] = typeof value === 'function' ? value() : value;\n }\n }\n\n return evaluated;\n },\n\n _logDebug: function(level) {\n // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n if (\n this._originalConsoleMethods[level] &&\n (this.debug || this._globalOptions.debug)\n ) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n","/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = require('./raven');\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n\n/**\n * DISCLAIMER:\n *\n * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n *\n * It's called `Client' to be in-line with Raven Node implementation.\n *\n * HOWTO:\n *\n * import Raven from 'raven-js';\n *\n * const someAppReporter = new Raven.Client();\n * const someOtherAppReporter = new Raven.Client();\n *\n * someAppReporter.config('__DSN__', {\n * ...config goes here\n * });\n *\n * someOtherAppReporter.config('__OTHER_DSN__', {\n * ...config goes here\n * });\n *\n * someAppReporter.captureMessage(...);\n * someAppReporter.captureException(...);\n * someAppReporter.captureBreadcrumb(...);\n *\n * someOtherAppReporter.captureMessage(...);\n * someOtherAppReporter.captureException(...);\n * someOtherAppReporter.captureBreadcrumb(...);\n *\n * It should \"just work\".\n */\nmodule.exports.Client = RavenConstructor;\n","export default {\n // mISC\n FIREBASE: 'https://quillconnectstaging.firebaseio.com/v2/',\n\n // uI FEEDBACK ACTIONS\n DISPLAY_ERROR: 'DISPLAY_ERROR',\n DISPLAY_MESSAGE: 'DISPLAY_MESSAGE',\n DISMISS_FEEDBACK: 'DISMISS_FEEDBACK',\n CLEAR_DISPLAY_MESSAGE_AND_ERROR: 'CLEAR_DISPLAY_MESSAGE_AND_ERROR',\n\n // aUTH ACTIONS\n ATTEMPTING_LOGIN: 'ATTEMPTING_LOGIN',\n LOGIN_USER: 'LOGIN_USER',\n LOGOUT: 'LOGOUT',\n\n // aUTH STATES\n LOGGED_IN: 'LOGGED_IN',\n ANONYMOUS: 'ANONYMOUS',\n AWAITING_AUTH_RESPONSE: 'AWAITING_AUTH_RESPONSE',\n\n // cONCEPT ACTIONS\n RECEIVE_CONCEPTS_DATA: 'RECEIVE_CONCEPTS_DATA',\n AWAIT_NEW_CONCEPT_RESPONSE: 'AWAIT_NEW_CONCEPT_RESPONSE',\n RECEIVE_NEW_CONCEPT_RESPONSE: 'RECEIVE_NEW_CONCEPT_RESPONSE',\n START_CONCEPT_EDIT: 'START_CONCEPT_EDIT',\n FINISH_CONCEPT_EDIT: 'FINISH_CONCEPT_EDIT',\n SUBMIT_CONCEPT_EDIT: 'SUBMIT_CONCEPT_EDIT',\n TOGGLE_NEW_CONCEPT_MODAL: 'TOGGLE_NEW_CONCEPT_MODAL',\n\n // cONCEPT STATES\n EDITING_CONCEPT: 'EDITING_CONCEPT',\n SUBMITTING_CONCEPT: 'SUBMITTING_CONCEPT',\n\n // lESSON ACTIONS\n RECEIVE_LESSONS_DATA: 'RECEIVE_LESSONS_DATA',\n AWAIT_NEW_LESSON_RESPONSE: 'AWAIT_NEW_LESSON_RESPONSE',\n RECEIVE_NEW_LESSON_RESPONSE: 'RECEIVE_NEW_LESSON_RESPONSE',\n START_LESSON_EDIT: 'START_LESSON_EDIT',\n FINISH_LESSON_EDIT: 'FINISH_LESSON_EDIT',\n SUBMIT_LESSON_EDIT: 'SUBMIT_LESSON_EDIT',\n TOGGLE_NEW_LESSON_MODAL: 'TOGGLE_NEW_LESSON_MODAL',\n\n // CLASSROOM_LESSON ACTIONS\n RECEIVE_CLASSROOM_LESSONS_DATA: 'RECEIVE_CLASSROOM_LESSONS_DATA',\n RECEIVE_CLASSROOM_LESSON_DATA: 'RECEIVE_CLASSROOM_LESSON_DATA',\n RECEIVE_CLASSROOM_LESSONS_REVIEW_DATA: 'RECEIVE_CLASSROOM_LESSONS_REVIEW_DATA',\n NO_LESSON_ID: 'NO_LESSON_ID',\n NO_LESSONS: 'NO_LESSONS',\n SET_LESSON_ID: 'SET_LESSON_ID',\n CLEAR_CLASSROOM_LESSON_DATA: 'CLEAR_CLASSROOM_LESSON_DATA',\n\n // lESSON STATES\n EDITING_LESSON: 'EDITING_LESSON',\n SUBMITTING_LESSON: 'SUBMITTING_LESSON',\n\n // QUESTION ACTIONS\n RECEIVE_QUESTIONS_DATA: 'RECEIVE_QUESTIONS_DATA',\n AWAIT_NEW_QUESTION_RESPONSE: 'AWAIT_NEW_QUESTION_RESPONSE',\n RECEIVE_NEW_QUESTION_RESPONSE: 'RECEIVE_NEW_QUESTION_RESPONSE',\n START_QUESTION_EDIT: 'START_QUESTION_EDIT',\n FINISH_QUESTION_EDIT: 'FINISH_QUESTION_EDIT',\n SUBMIT_QUESTION_EDIT: 'SUBMIT_QUESTION_EDIT',\n TOGGLE_NEW_QUESTION_MODAL: 'TOGGLE_NEW_QUESTION_MODAL',\n SHOULD_RELOAD_RESPONSES: 'SHOULD_RELOAD_RESPONSES',\n CLEAR_QUESTION_STATE: 'CLEAR_QUESTION_STATE',\n UPDATE_SEARCHED_RESPONSES: 'UPDATE_SEARCHED_RESPONSES',\n SET_RESPONSE_PAGE_NUMBER: 'SET_RESPONSE_PAGE_NUMBER',\n SET_RESPONSE_STRING_FILTER: 'SET_RESPONSE_STRING_FILTER',\n INCREMENT_REQUEST_COUNT: 'INCREMENT_REQUEST_COUNT',\n SET_SUGGESTED_SEQUENCES: 'SET_SUGGESTED_SEQUENCES',\n SET_USED_SEQUENCES: 'SET_USED_SEQUENCES',\n SET_COVERED_SEQUENCES: 'SET_COVERED_SEQUENCES',\n\n // QUESTION STATES\n EDITING_QUESTION: 'EDITING_QUESTION',\n SUBMITTING_QUESTION: 'SUBMITTING_QUESTION',\n\n // FILL IN BLANK QUESTION ACTIONS\n RECEIVE_FILL_IN_BLANK_QUESTIONS_DATA: 'RECEIVE_FILL_IN_BLANK_QUESTIONS_DATA',\n AWAIT_NEW_FILL_IN_BLANK_QUESTION_RESPONSE: 'AWAIT_NEW_FILL_IN_BLANK_QUESTION_RESPONSE',\n RECEIVE_NEW_FILL_IN_BLANK_QUESTION_RESPONSE: 'RECEIVE_NEW_FILL_IN_BLANK_QUESTION_RESPONSE',\n START_FILL_IN_BLANK_QUESTION_EDIT: 'START_FILL_IN_BLANK_QUESTION_EDIT',\n FINISH_FILL_IN_BLANK_QUESTION_EDIT: 'FINISH_FILL_IN_BLANK_QUESTION_EDIT',\n SUBMIT_FILL_IN_BLANK_QUESTION_EDIT: 'SUBMIT_FILL_IN_BLANK_QUESTION_EDIT',\n TOGGLE_NEW_FILL_IN_BLANK_QUESTION_MODAL: 'TOGGLE_NEW_FILL_IN_BLANK_QUESTION_MODAL',\n\n // FILL IN BLANK QUESTION STATES\n EDITING_FILL_IN_BLANK_QUESTION: 'EDITING_FILL_IN_BLANK_QUESTION',\n SUBMITTING_FILL_IN_BLANK_QUESTION: 'SUBMITTING_FILL_IN_BLANK_QUESTION',\n\n // QUESTION RESPONSE STATES\n START_RESPONSE_EDIT: 'START_RESPONSE_EDIT',\n CANCEL_RESPONSE_EDIT: 'CANCEL_RESPONSE_EDIT',\n FINISH_RESPONSE_EDIT: 'FINISH_RESPONSE_EDIT',\n SUBMIT_RESPONSE_EDIT: 'SUBMIT_RESPONSE_EDIT',\n SUBMITTING_RESPONSE: 'SUBMITTING_RESPONSE',\n START_CHILD_RESPONSE_VIEW: 'START_CHILD_RESPONSE_VIEW',\n CANCEL_CHILD_RESPONSE_VIEW: 'CANCEL_CHILD_RESPONSE_VIEW',\n START_FROM_RESPONSE_VIEW: 'START_FROM_RESPONSE_VIEW',\n CANCEL_FROM_RESPONSE_VIEW: 'CANCEL_FROM_RESPONSE_VIEW',\n START_TO_RESPONSE_VIEW: 'START_TO_RESPONSE_VIEW',\n CANCEL_TO_RESPONSE_VIEW: 'CANCEL_TO_RESPONSE_VIEW',\n\n // dIAGNOSTIC QUESTION ACTIONS\n RECEIVE_DIAGNOSTIC_QUESTIONS_DATA: 'RECEIVE_DIAGNOSTIC_QUESTIONS_DATA',\n AWAIT_NEW_DIAGNOSTIC_QUESTION_RESPONSE: 'AWAIT_NEW_DIAGNOSTIC_QUESTION_RESPONSE',\n RECEIVE_NEW_DIAGNOSTIC_QUESTION_RESPONSE: 'RECEIVE_NEW_DIAGNOSTIC_QUESTION_RESPONSE',\n START_DIAGNOSTIC_QUESTION_EDIT: 'START_DIAGNOSTIC_QUESTION_EDIT',\n FINISH_DIAGNOSTIC_QUESTION_EDIT: 'FINISH_DIAGNOSTIC_QUESTION_EDIT',\n SUBMIT_DIAGNOSTIC_QUESTION_EDIT: 'SUBMIT_DIAGNOSTIC_QUESTION_EDIT',\n TOGGLE_NEW_DIAGNOSTIC_QUESTION_MODAL: 'TOGGLE_NEW_DIAGNOSTIC_QUESTION_MODAL',\n\n // dIAGNOSTIC_QUESTION STATES\n EDITING_DIAGNOSTIC_QUESTION: 'EDITING_DIAGNOSTIC_QUESTION',\n SUBMITTING_DIAGNOSTIC_QUESTION: 'SUBMITTING_DIAGNOSTIC_QUESTION',\n\n // dIAGNOSTIC QUESTION RESPONSE STATES\n START_DIAGNOSTIC_RESPONSE_EDIT: 'START_DIAGNOSTIC_RESPONSE_EDIT',\n CANCEL_DIAGNOSTIC_RESPONSE_EDIT: 'CANCEL_DIAGNOSTIC_RESPONSE_EDIT',\n FINISH_DIAGNOSTIC_RESPONSE_EDIT: 'FINISH_DIAGNOSTIC_RESPONSE_EDIT',\n SUBMIT_DIAGNOSTIC_RESPONSE_EDIT: 'SUBMIT_DIAGNOSTIC_RESPONSE_EDIT',\n SUBMITTING_DIAGNOSTIC_RESPONSE: 'SUBMITTING_DIAGNOSTIC_RESPONSE',\n START_CHILD_DIAGNOSTIC_RESPONSE_VIEW: 'START_CHILD_DIAGNOSTIC_RESPONSE_VIEW',\n CANCEL_CHILD_DIAGNOSTIC_RESPONSE_VIEW: 'CANCEL_CHILD_DIAGNOSTIC_RESPONSE_VIEW',\n START_FROM_DIAGNOSTIC_RESPONSE_VIEW: 'START_FROM_DIAGNOSTIC_RESPONSE_VIEW',\n CANCEL_FROM_DIAGNOSTIC_RESPONSE_VIEW: 'CANCEL_FROM_DIAGNOSTIC_RESPONSE_VIEW',\n START_TO_DIAGNOSTIC_RESPONSE_VIEW: 'START_TO_DIAGNOSTIC_RESPONSE_VIEW',\n CANCEL_TO_DIAGNOSTIC_RESPONSE_VIEW: 'CANCEL_TO_DIAGNOSTIC_RESPONSE_VIEW',\n\n // rESPONSE ACTIONS:\n TOGGLE_EXPAND_SINGLE_RESPONSE: 'TOGGLE_EXPAND_SINGLE_RESPONSE',\n COLLAPSE_ALL_RESPONSES: 'COLLAPSE_ALL_RESPONSES',\n EXPAND_ALL_RESPONSES: 'EXPAND_ALL_RESPONSES',\n TOGGLE_STATUS_FIELD: 'TOGGLE_STATUS_FIELD',\n TOGGLE_RESPONSE_SORT: 'TOGGLE_RESPONSE_SORT',\n TOGGLE_EXCLUDE_MISSPELLINGS: 'TOGGLE_EXCLUDE_MISSPELLINGS',\n RESET_ALL_FIELDS: 'RESET_ALL_FIELDS',\n TOGGLE_MASS_SELECTION: 'TOGGLE_MASS_SELECTION',\n DESELECT_ALL_FIELDS: 'DESELECT_ALL_FIELDS',\n\n // mASS EDIT RESPONSE ACTIONS\n ADD_RESPONSE_TO_MASS_EDIT_ARRAY: 'ADD_RESPONSE_TO_MASS_EDIT_ARRAY',\n REMOVE_RESPONSE_FROM_MASS_EDIT_ARRAY: 'REMOVE_RESPONSE_FROM_MASS_EDIT_ARRAY',\n CLEAR_RESPONSES_FROM_MASS_EDIT_ARRAY: 'CLEAR_RESPONSES_FROM_MASS_EDIT_ARRAY',\n\n FEEDBACK_STRINGS: {\n punctuationError: 'There may be an error. How could you update the punctuation?',\n punctuationAndCaseError: 'There may be an error. How could you update the punctuation and capitalization?',\n typingError: 'Try again. There may be a spelling mistake.',\n caseError: 'Proofread your work. There may be a capitalization error.',\n minLengthError: 'Revise your work. Do you have all of the information from the prompt?',\n maxLengthError: 'Revise your work. How could your response be shorter and more concise?',\n modifiedWordError: 'Revise your work. You may have mixed up or misspelled a word.',\n additionalWordError: 'Revise your work. You may have added an extra word.',\n missingWordError: 'Revise your work. You may have left out an important word.',\n whitespaceError: 'There may be an error. You may have forgotten a space between two words.',\n flexibleModifiedWordError: 'Revise your work. You may have mixed up a word.',\n flexibleAdditionalWordError: 'Revise your work. You may have added an extra word.',\n flexibleMissingWordError: 'Revise your work. You may have left out an important word.',\n },\n\n NUMBERS_AS_WORDS: [\n 'zero', 'one', 'two', 'three', 'four', 'five',\n 'six', 'seven', 'eight', 'nine', 'ten',\n 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen',\n 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty'\n ],\n\n INSTRUCTIONS: {\n sentenceFragments: 'Add/change as few words as you can to change this fragment into a sentence.',\n },\n\n ERROR_TYPES: [\n 'typingError',\n 'caseError',\n 'punctuationError',\n 'punctuationAndCaseError',\n 'minLengthError',\n 'maxLengthError',\n 'flexibleModifiedWordError',\n 'flexibleAdditionalWordError',\n 'flexibleMissingWordError',\n 'modifiedWordError',\n 'additionalWordError',\n 'missingWordError',\n 'whitespaceError',\n 'requiredWordsError',\n 'tooShortError',\n 'tooLongError'\n ],\n\n ERROR_AUTHORS: [\n 'Focus Point Hint',\n 'Incorrect Sequence Hint',\n 'Capitalization Hint',\n 'Starting Capitalization Hint',\n 'Punctuation Hint',\n 'Punctuation and Case Hint',\n 'Punctuation End Hint',\n 'Modified Word Hint',\n 'Additional Word Hint',\n 'Missing Word Hint',\n 'Flexible Modified Word Hint',\n 'Flexible Additional Word Hint',\n 'Flexible Missing Word Hint',\n 'Whitespace Hint',\n 'Missing Details Hint',\n 'Not Concise Hint',\n 'Required Words Hint',\n 'Too Short Hint',\n 'Too Long Hint',\n 'Parts of Speech',\n 'Spelling Hint',\n ],\n\n // cONCEPTS FEEDBACK ACTIONS\n RECEIVE_CONCEPTS_FEEDBACK_DATA: 'RECEIVE_CONCEPTS_FEEDBACK_DATA',\n AWAIT_NEW_CONCEPTS_FEEDBACK_RESPONSE: 'AWAIT_NEW_CONCEPTS_FEEDBACK_RESPONSE',\n RECEIVE_NEW_CONCEPTS_FEEDBACK_RESPONSE: 'RECEIVE_NEW_CONCEPTS_FEEDBACK_RESPONSE',\n START_CONCEPTS_FEEDBACK_EDIT: 'START_CONCEPTS_FEEDBACK_EDIT',\n FINISH_CONCEPTS_FEEDBACK_EDIT: 'FINISH_CONCEPTS_FEEDBACK_EDIT',\n SUBMIT_CONCEPTS_FEEDBACK_EDIT: 'SUBMIT_CONCEPTS_FEEDBACK_EDIT',\n TOGGLE_NEW_CONCEPTS_FEEDBACK_MODAL: 'TOGGLE_NEW_CONCEPTS_FEEDBACK_MODAL',\n\n // iTEM LEVEL ACTIONS\n RECEIVE_ITEM_LEVELS_DATA: 'RECEIVE_ITEM_LEVELS_DATA',\n AWAIT_NEW_ITEM_LEVEL_RESPONSE: 'AWAIT_NEW_ITEM_LEVEL_RESPONSE',\n RECEIVE_NEW_ITEM_LEVEL_RESPONSE: 'RECEIVE_NEW_ITEM_LEVEL_RESPONSE',\n START_ITEM_LEVEL_EDIT: 'START_ITEM_LEVEL_EDIT',\n FINISH_ITEM_LEVEL_EDIT: 'FINISH_ITEM_LEVEL_EDIT',\n SUBMIT_ITEM_LEVEL_EDIT: 'SUBMIT_ITEM_LEVEL_EDIT',\n TOGGLE_NEW_ITEM_LEVEL_MODAL: 'TOGGLE_NEW_ITEM_LEVEL_MODAL',\n\n // iTEM LEVEL STATES\n EDITING_ITEM_LEVEL: 'EDITING_ITEM_LEVEL',\n SUBMITTING_ITEM_LEVEL: 'SUBMITTING_ITEM_LEVEL',\n\n // sENTENCE_FRAGMENT ACTIONS\n RECEIVE_SENTENCE_FRAGMENTS_DATA: 'RECEIVE_SENTENCE_FRAGMENTS_DATA',\n AWAIT_NEW_SENTENCE_FRAGMENT_RESPONSE: 'AWAIT_NEW_SENTENCE_FRAGMENT_RESPONSE',\n RECEIVE_NEW_SENTENCE_FRAGMENT_RESPONSE: 'RECEIVE_NEW_SENTENCE_FRAGMENT_RESPONSE',\n START_SENTENCE_FRAGMENT_EDIT: 'START_SENTENCE_FRAGMENT_EDIT',\n FINISH_SENTENCE_FRAGMENT_EDIT: 'FINISH_SENTENCE_FRAGMENT_EDIT',\n SUBMIT_SENTENCE_FRAGMENT_EDIT: 'SUBMIT_SENTENCE_FRAGMENT_EDIT',\n TOGGLE_NEW_SENTENCE_FRAGMENT_MODAL: 'TOGGLE_NEW_SENTENCE_FRAGMENT_MODAL',\n\n // sENTENCE_FRAGMENT STATES\n EDITING_SENTENCE_FRAGMENT: 'EDITING_SENTENCE_FRAGMENT',\n SUBMITTING_SENTENCE_FRAGMENT: 'SUBMITTING_SENTENCE_FRAGMENT',\n\n // sESSION ACTIONS\n UPDATE_SESSION_DATA: 'UPDATE_SESSION_DATA',\n DELETE_SESSION_DATA: 'DELETE_SESSION_DATA',\n DELETE_ALL_SESSION_DATA: 'DELETE_ALL_SESSION_DATA',\n\n // rESPONSE ACTIONS\n UPDATE_RESPONSE_STATUS: 'UPDATE_RESPONSE_STATUS',\n UPDATE_RESPONSE_DATA: 'UPDATE_RESPONSE_DATA',\n DELETE_RESPONSE_STATUS: 'DELETE_RESPONSE_STATUS',\n\n // score Analysis ACTIONS\n RECEIVE_SCORE_ANALYSIS_DATA: 'RECEIVE_SCORE_ANALYSIS_DATA',\n\n // CLASSROOM SESSION ACTIONS\n UPDATE_CLASSROOM_SESSION_DATA: 'UPDATE_CLASSROOM_SESSION_DATA',\n UPDATE_SLIDE_IN_STORE: 'UPDATE_SLIDE_IN_STORE',\n TOGGLE_HEADERS: 'TOGGLE_HEADERS',\n NO_CLASSROOM_UNIT: 'NO_CLASSROOM_UNIT',\n NO_STUDENT_ID: 'NO_STUDENT_ID',\n HIDE_SIGNUP_MODAL: 'HIDE_SIGNUP_MODAL',\n SHOW_SIGNUP_MODAL: 'SHOW_SIGNUP_MODAL',\n\n // CUSTOMIZE ACTIONS\n SET_USER_ID: 'SET_USER_ID',\n SET_COTEACHERS: 'SET_COTEACHERS',\n SET_EDITION_METADATA: 'SET_EDITION_METADATA',\n SET_EDITION_QUESTIONS: 'SET_EDITION_QUESTIONS',\n SET_ORIGINAL_EDITION_QUESTIONS: 'SET_ORIGINAL_EDITION_QUESTIONS',\n SET_WORKING_EDITION_QUESTIONS: 'SET_WORKING_EDITION_QUESTIONS',\n SET_WORKING_EDITION_METADATA: 'SET_WORKING_EDITION_METADATA',\n SET_INCOMPLETE_QUESTIONS: 'SET_INCOMPLETE_QUESTIONS',\n};\n","/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\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' && isNaN(val) === false) {\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|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 '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 if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= 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 return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\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\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\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 === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\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\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\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]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\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\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\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\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') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\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 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // 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) ||\n // 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/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // 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 var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\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\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || (typeof location !== 'undefined' && location);\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\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' && isNaN(val) === false) {\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|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 '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 if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= 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 return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\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\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\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 === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\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\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\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]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\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\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\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\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') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\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 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // 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) ||\n // 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/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // 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 var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\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\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\nvar isView = function (obj) {\n return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n};\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n}\n","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' || (typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]');\nvar withNativeFile = typeof File === 'function' || (typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]');\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder === true) {\n var isIndexValid =\n typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else {\n throw new Error(\"illegal attachments\");\n }\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n } else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n var payload = tryStringify(obj.data);\n if (payload !== false) {\n str += payload;\n } else {\n return ERROR_PACKET;\n }\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\nfunction tryStringify(str) {\n try {\n return JSON.stringify(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n } else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n } else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) {\n return error('unknown packet type ' + p.type);\n }\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var start = i + 1;\n while (str.charAt(++i) !== '-' && i != str.length) {}\n var buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n var start = i + 1;\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n if (i === str.length) break;\n }\n p.nsp = str.substring(start, i);\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n var start = i + 1;\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length) break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n\n // look up json data\n if (str.charAt(++i)) {\n var payload = tryParse(str.substr(i));\n var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n if (isPayloadValid) {\n p.data = payload;\n } else {\n return error('invalid payload');\n }\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error(msg) {\n return {\n type: exports.ERROR,\n data: 'parser error: ' + msg\n };\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","module.exports = (function () {\n if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else {\n return Function('return this')(); // eslint-disable-line no-new-func\n }\n})();\n","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\nvar globalThis = require('../globalThis');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new globalThis[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n\nvar stringFromCharCode = String.fromCharCode;\n\n// Taken from https://mths.be/punycode\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\tvar value;\n\tvar extra;\n\twhile (counter < length) {\n\t\tvalue = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// high surrogate, and there is a next character\n\t\t\textra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n// Taken from https://mths.be/punycode\nfunction ucs2encode(array) {\n\tvar length = array.length;\n\tvar index = -1;\n\tvar value;\n\tvar output = '';\n\twhile (++index < length) {\n\t\tvalue = array[index];\n\t\tif (value > 0xFFFF) {\n\t\t\tvalue -= 0x10000;\n\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(value);\n\t}\n\treturn output;\n}\n\nfunction checkScalarValue(codePoint, strict) {\n\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\tif (strict) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n/*--------------------------------------------------------------------------*/\n\nfunction createByte(codePoint, shift) {\n\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n}\n\nfunction encodeCodePoint(codePoint, strict) {\n\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\treturn stringFromCharCode(codePoint);\n\t}\n\tvar symbol = '';\n\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t}\n\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\tcodePoint = 0xFFFD;\n\t\t}\n\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\tsymbol += createByte(codePoint, 12);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\treturn symbol;\n}\n\nfunction utf8encode(string, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tvar codePoints = ucs2decode(string);\n\tvar length = codePoints.length;\n\tvar index = -1;\n\tvar codePoint;\n\tvar byteString = '';\n\twhile (++index < length) {\n\t\tcodePoint = codePoints[index];\n\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t}\n\treturn byteString;\n}\n\n/*--------------------------------------------------------------------------*/\n\nfunction readContinuationByte() {\n\tif (byteIndex >= byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\tif ((continuationByte & 0xC0) == 0x80) {\n\t\treturn continuationByte & 0x3F;\n\t}\n\n\t// If we end up here, it’s not a continuation byte\n\tthrow Error('Invalid continuation byte');\n}\n\nfunction decodeSymbol(strict) {\n\tvar byte1;\n\tvar byte2;\n\tvar byte3;\n\tvar byte4;\n\tvar codePoint;\n\n\tif (byteIndex > byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tif (byteIndex == byteCount) {\n\t\treturn false;\n\t}\n\n\t// Read first byte\n\tbyte1 = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\t// 1-byte sequence (no continuation bytes)\n\tif ((byte1 & 0x80) == 0) {\n\t\treturn byte1;\n\t}\n\n\t// 2-byte sequence\n\tif ((byte1 & 0xE0) == 0xC0) {\n\t\tbyte2 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\tif (codePoint >= 0x80) {\n\t\t\treturn codePoint;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 3-byte sequence (may include unpaired surrogates)\n\tif ((byte1 & 0xF0) == 0xE0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\tif (codePoint >= 0x0800) {\n\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 4-byte sequence\n\tif ((byte1 & 0xF8) == 0xF0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tbyte4 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t(byte3 << 0x06) | byte4;\n\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\treturn codePoint;\n\t\t}\n\t}\n\n\tthrow Error('Invalid UTF-8 detected');\n}\n\nvar byteArray;\nvar byteCount;\nvar byteIndex;\nfunction utf8decode(byteString, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tbyteArray = ucs2decode(byteString);\n\tbyteCount = byteArray.length;\n\tbyteIndex = 0;\n\tvar codePoints = [];\n\tvar tmp;\n\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\tcodePoints.push(tmp);\n\t}\n\treturn ucs2encode(codePoints);\n}\n\nmodule.exports = {\n\tversion: '2.1.2',\n\tencode: utf8encode,\n\tdecode: utf8decode\n};\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(chars){\n \"use strict\";\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = chars.indexOf(base64[i]);\n encoded2 = chars.indexOf(base64[i+1]);\n encoded3 = chars.indexOf(base64[i+2]);\n encoded4 = chars.indexOf(base64[i+3]);\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\");\n","/**\r\n * Create a blob builder even when vendor prefixes exist\r\n */\r\n\r\nvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n false;\r\n\r\n/**\r\n * Check if Blob constructor is supported\r\n */\r\n\r\nvar blobSupported = (function() {\r\n try {\r\n var a = new Blob(['hi']);\r\n return a.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if Blob constructor supports ArrayBufferViews\r\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n */\r\n\r\nvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n try {\r\n var b = new Blob([new Uint8Array([1,2])]);\r\n return b.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if BlobBuilder is supported\r\n */\r\n\r\nvar blobBuilderSupported = BlobBuilder\r\n && BlobBuilder.prototype.append\r\n && BlobBuilder.prototype.getBlob;\r\n\r\n/**\r\n * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n * Used by BlobBuilder constructor and old browsers that didn't\r\n * support it in the Blob constructor.\r\n */\r\n\r\nfunction mapArrayBufferViews(ary) {\r\n return ary.map(function(chunk) {\r\n if (chunk.buffer instanceof ArrayBuffer) {\r\n var buf = chunk.buffer;\r\n\r\n // if this is a subarray, make a copy so we only\r\n // include the subarray region from the underlying buffer\r\n if (chunk.byteLength !== buf.byteLength) {\r\n var copy = new Uint8Array(chunk.byteLength);\r\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n buf = copy.buffer;\r\n }\r\n\r\n return buf;\r\n }\r\n\r\n return chunk;\r\n });\r\n}\r\n\r\nfunction BlobBuilderConstructor(ary, options) {\r\n options = options || {};\r\n\r\n var bb = new BlobBuilder();\r\n mapArrayBufferViews(ary).forEach(function(part) {\r\n bb.append(part);\r\n });\r\n\r\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n};\r\n\r\nfunction BlobConstructor(ary, options) {\r\n return new Blob(mapArrayBufferViews(ary), options || {});\r\n};\r\n\r\nif (typeof Blob !== 'undefined') {\r\n BlobBuilderConstructor.prototype = Blob.prototype;\r\n BlobConstructor.prototype = Blob.prototype;\r\n}\r\n\r\nmodule.exports = (function() {\r\n if (blobSupported) {\r\n return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n } else if (blobBuilderSupported) {\r\n return BlobBuilderConstructor;\r\n } else {\r\n return undefined;\r\n }\r\n})();\r\n","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (typeof ArrayBuffer !== 'undefined') {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * [ ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (typeof Blob !== 'undefined' && packet.data instanceof Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * :data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string>[...]\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n this.withCredentials = opts.withCredentials;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // results of ReactNative environment detection\n this.isReactNative = opts.isReactNative;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\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' && isNaN(val) === false) {\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|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 '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 if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= 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 return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\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\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\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 === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\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\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\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]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\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\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\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\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') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\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 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // 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) ||\n // 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/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // 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 var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\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\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('./xmlhttprequest');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState && packet.type === 'open') {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n","/* global attachEvent */\n\n/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('./xmlhttprequest');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\nvar globalThis = require('../globalThis');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = (typeof location !== 'undefined' && opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n opts.withCredentials = this.withCredentials;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.withCredentials = opts.withCredentials;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = this.withCredentials;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n try {\n var contentType = xhr.getResponseHeader('Content-Type');\n if (self.supportsBinary && contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n xhr.responseType = 'arraybuffer';\n }\n } catch (e) {}\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(typeof xhr.status === 'number' ? xhr.status : 0);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (typeof document !== 'undefined') {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (typeof document !== 'undefined') {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return typeof XDomainRequest !== 'undefined' && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (typeof document !== 'undefined') {\n if (typeof attachEvent === 'function') {\n attachEvent('onunload', unloadHandler);\n } else if (typeof addEventListener === 'function') {\n var terminationEvent = 'onpagehide' in globalThis ? 'pagehide' : 'unload';\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\nvar globalThis = require('../globalThis');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n callbacks = globalThis.___eio = (globalThis.___eio || []);\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (typeof addEventListener === 'function') {\n addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\n\nvar BrowserWebSocket, NodeWebSocket;\n\nif (typeof WebSocket !== 'undefined') {\n BrowserWebSocket = WebSocket;\n} else if (typeof self !== 'undefined') {\n BrowserWebSocket = self.WebSocket || self.MozWebSocket;\n}\n\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = require('ws');\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocketImpl = BrowserWebSocket || NodeWebSocket;\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocketImpl = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n\n var opts = {};\n\n if (!this.isReactNative) {\n opts.agent = this.agent;\n opts.perMessageDeflate = this.perMessageDeflate;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n }\n\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws =\n this.usingBrowserWebSocket && !this.isReactNative\n ? protocols\n ? new WebSocketImpl(uri, protocols)\n : new WebSocketImpl(uri)\n : new WebSocketImpl(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocketImpl && !('__initialize' in WebSocketImpl && this.name === WS.prototype.name);\n};\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('./xmlhttprequest');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (typeof location !== 'undefined' ? location.hostname : 'localhost');\n this.port = opts.port || (typeof location !== 'undefined' && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.withCredentials = false !== opts.withCredentials;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || undefined;\n this.key = opts.key || undefined;\n this.passphrase = opts.passphrase || undefined;\n this.cert = opts.cert || undefined;\n this.ca = opts.ca || undefined;\n this.ciphers = opts.ciphers || undefined;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // detect ReactNative environment\n this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\n // other options for Node.js or ReactNative client\n if (typeof self === 'undefined' || this.isReactNative) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n withCredentials: options.withCredentials || this.withCredentials,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0),\n isReactNative: this.isReactNative\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n","module.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n this.flags = {};\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n if (!this.io.reconnecting) this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = {\n type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n data: args\n };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n this.flags = {};\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n var sameNamespace = packet.nsp === this.nsp;\n var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n if (!sameNamespace && !rootNamespaceError) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags.compress = compress;\n return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n this.flags.binary = binary;\n return this;\n};\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n if (timeout === 0) {\n openSub.destroy(); // prevents a race condition with the 'open' event\n }\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n","import openSocket from 'socket.io-client';\n\nclass SocketStore {\n constructor() {\n this.instance = null;\n this.classroomUnitId = null;\n this.tokenUrl = `${process.env.DEFAULT_URL}/api/v1/lessons_tokens`;\n this.socketsUrl = process.env.LESSONS_WEBSOCKETS_URL;\n this.token = null;\n }\n\n _getAuthTokenAndConnect(callback = null) {\n const formData = new FormData();\n formData.append('classroom_unit_id', this.classroomUnitId);\n\n fetch(this.tokenUrl, {\n method: 'POST',\n mode: 'cors',\n credentials: 'include',\n body: formData,\n }).then((response) => {\n if (!response.ok) {\n throw Error(response.statusText);\n }\n return response.json();\n }).then((data) => {\n if (data && data.token) {\n this.token = data.token;\n this._handleConnection(callback);\n }\n }).catch((error) => {\n // to do, use Sentry to capture error\n });\n }\n\n _handleConnection(callback = null) {\n if (this.instance) {\n this._addAuthtokenToConnection();\n } else {\n this._openNewConnection();\n }\n\n if (callback) {\n return callback();\n }\n }\n\n _addAuthtokenToConnection() {\n this.instance.emit('authentication', { token: this.token, });\n }\n\n _openNewConnection() {\n this.instance = openSocket(this.socketsUrl);\n\n this.instance.on('connect', () => {\n this._addAuthtokenToConnection();\n });\n\n this.instance.on('disconnect', () => {\n });\n }\n\n connect(newClassroomUnitId = null, callback = null) {\n const isNewActivitySession = this.classroomUnitId !== newClassroomUnitId;\n const isSocketMissing = !this.classroomUnitId && !this.instance;\n\n if (isSocketMissing || isNewActivitySession) {\n this.classroomUnitId = newClassroomUnitId;\n this._getAuthTokenAndConnect(callback);\n }\n }\n}\n\nconst instance = new SocketStore();\n\nexport default instance;\n","import React from 'react';\nimport Textarea from 'react-textarea-autosize';\nimport C from '../../constants';\n\nconst noUnderlineErrors = [];\n\nconst feedbackStrings = C.FEEDBACK_STRINGS;\n\nexport default class RenderTextEditor extends React.Component {\n handleTextChange = (e) => {\n const { disabled, handleChange, editorIndex, } = this.props\n if (!disabled) {\n handleChange(e.target.value, editorIndex);\n }\n };\n\n handleKeyDown = (e) => {\n const { disabled, checkAnswer, } = this.props\n if (!disabled) {\n if (e.key === 'Enter') {\n e.preventDefault();\n checkAnswer();\n }\n }\n };\n\n render() {\n const { disabled, placeholder, spellCheck, value, } = this.props\n const disabledClassName = disabled ? 'disabled-editor' : null\n return (\n \n );\n }\n}\n","import * as React from 'react';\nimport { Link, Route, Switch, withRouter } from 'react-router-dom';\nimport AdminClassroomLessonsContainer from '../classroomLessons/admin/container';\n\nconst TabLink = ({ to, children, }) => (\n \n {children}\n \n);\n\nconst AdminContainer = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction select(state) {\n return {\n };\n}\n\nexport default withRouter(AdminContainer);\n","import Editor from '@draft-js-plugins/editor';\nimport { EditorState } from 'draft-js';\nimport React from 'react';\nimport { convertFromHTML, convertToHTML } from 'draft-convert';\n\nimport { richButtonsPlugin, } from '../../../../../Shared/index';\n\nclass MultipleTextEditor extends React.Component {\n constructor(props) {\n super(props);\n\n const rbp = richButtonsPlugin();\n const {\n // inline buttons\n ItalicButton, BoldButton, UnderlineButton, BlockquoteButton\n } = rbp;\n\n const InlineButton = ({className, toggleInlineStyle, isActive, label, inlineStyle, onMouseDown, title}) =>\n (\n {title}\n \n );\n\n const BlockButton = ({className, toggleBlockType, isActive, label, blockType, title}) =>\n (\n {title}\n \n );\n\n this.state = {\n text: EditorState.createWithContent(convertFromHTML(this.props.text || '')),\n components: { ItalicButton, BoldButton, UnderlineButton, BlockquoteButton, InlineButton, BlockButton },\n plugins: [rbp],\n hasFocus: false\n };\n this.handleTextChange = this.handleTextChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.text !== this.props.text) {\n if (nextProps.text === '' || this.props.text === '' || nextProps.reset) {\n if (nextProps.text !== convertToHTML(this.state.text.getCurrentContent())) {\n this.setState({\n text: EditorState.createWithContent(convertFromHTML(nextProps.text || '')),\n });\n }\n }\n }\n }\n\n handleTextChange(e) {\n this.setState({ text: e, }, () => {\n this.props.handleTextChange(convertToHTML(this.state.text.getCurrentContent()).replace(/<\\/p>/g, '').replace(/ /g, ''));\n });\n }\n\n render() {\n const { ItalicButton, BoldButton, UnderlineButton, BlockquoteButton, InlineButton, BlockButton} = this.state.components;\n const textBoxClass = this.state.hasFocus ? 'card-content hasFocus' : 'card-content';\n const errorClass = this.props.incompletePrompt ? 'incomplete-prompt' : ''\n const editorFocusClass = this.state.hasFocus ? 'editor-focused' : ''\n const blockquote = this.props.showBlockquote ? : null\n return (\n \n \n \n \n \n \n {blockquote}\n \n \n \n \n this.setState({ hasFocus: false, })}\n onChange={this.handleTextChange}\n onFocus={() => this.setState({ hasFocus: true, })}\n plugins={this.state.plugins}\n />\n \n \n \n );\n }\n\n}\n\nexport default MultipleTextEditor;\n","import C from '../constants';\n\nconst initialState = {\n lesson: {\n hasreceiveddata: false,\n submittingnew: false,\n states: {}, // this will store per quote id if we're reading, editing or awaiting DB response\n data: {}, // this will contain firebase data\n error: '',\n id: ''\n },\n};\n\nexport default function (currentstate, action) {\n let newstate;\n switch (action.type) {\n case C.RECEIVE_CLASSROOM_LESSON_DATA:\n return Object.assign({}, currentstate, {\n hasreceiveddata: true,\n data: action.data,\n });\n case C.TOGGLE_HEADERS:\n return Object.assign({}, currentstate, {\n onlyShowHeaders: !currentstate.onlyShowHeaders,\n });\n case C.NO_LESSON_ID:\n newstate = Object.assign({}, currentstate, {\n error: `No such lesson. Lesson with id '${action.data}' does not exist.`,\n });\n return newstate;\n case C.SET_LESSON_ID:\n return Object.assign({}, currentstate, {\n id: action.id,\n });\n case C.CLEAR_CLASSROOM_LESSON_DATA:\n return initialState.lesson\n default: return currentstate || initialState.lesson;\n }\n}\n","import C from '../constants';\n\nconst initialState = {\n classroomLessons: {\n hasreceiveddata: false,\n submittingnew: false,\n states: {}, // this will store per quote id if we're reading, editing or awaiting DB response\n data: {}, // this will contain firebase data\n },\n};\n\nexport default function (currentstate, action) {\n\n let newstate;\n switch (action.type) {\n case C.RECEIVE_CLASSROOM_LESSONS_DATA:\n return Object.assign({}, currentstate, {\n hasreceiveddata: true,\n data: action.data,\n });\n default: return currentstate || initialState.classroomLessons;\n }\n}\n","import C from '../constants';\n\nconst initialState = {\n classroomLessonsReviews: {\n hasreceiveddata: false,\n data: {}\n },\n};\n\nexport default function (currentstate, action) {\n\n let newstate;\n switch (action.type) {\n case C.RECEIVE_CLASSROOM_LESSONS_REVIEW_DATA:\n return Object.assign({}, currentstate, {\n hasreceiveddata: true,\n data: action.data,\n });\n default: return currentstate || initialState.classroomLessonsReviews;\n }\n}\n","import C from '../constants';\n\nconst initialState = {\n onlyShowHeaders: false,\n hasreceiveddata: false,\n submittingnew: false,\n states: {}, // this will store per quote id if we're reading, editing or awaiting DB response\n data: { current_slide: 0, }, // this will contain firebase data,\n error: '',\n showSignupModal: false\n};\n\nexport default function (currentState = initialState, action) {\n let newState;\n switch (action.type) {\n case C.UPDATE_CLASSROOM_SESSION_DATA:\n newState = Object.assign({}, currentState, {\n hasreceiveddata: true,\n data: action.data,\n });\n return newState;\n case C.UPDATE_SLIDE_IN_STORE:\n newState = Object.assign({}, JSON.parse(JSON.stringify(currentState)));\n newState.data.current_slide = action.data;\n return newState;\n case C.TOGGLE_HEADERS:\n\n newState = Object.assign({}, currentState, {\n onlyShowHeaders: !currentState.onlyShowHeaders,\n });\n return newState;\n case C.NO_CLASSROOM_UNIT:\n newState = Object.assign({}, currentState, {\n error: 'missing classroom unit'\n });\n return newState;\n case C.NO_STUDENT_ID:\n newState = Object.assign({}, currentState, {\n error: `No such student. Student with id '${action.data}' does not exist.`,\n });\n return newState;\n case C.SHOW_SIGNUP_MODAL:\n newState = Object.assign({}, currentState, {\n showSignupModal: true\n });\n return newState\n case C.HIDE_SIGNUP_MODAL:\n newState = Object.assign({}, currentState, {\n showSignupModal: false\n });\n return newState\n default: return currentState;\n }\n}\n","import _ from 'lodash';\nimport C from '../constants';\n\nconst initialState = {\n concepts: {\n hasreceiveddata: false,\n submittingnew: false,\n states: {}, // this will store per quote id if we're reading, editing or awaiting DB response\n data: {} // this will contain firebase data\n }\n}\n\nexport default function(currentstate,action){\n let newstate;\n switch(action.type){\n case C.RECEIVE_CONCEPTS_DATA:\n return Object.assign({},currentstate,{\n hasreceiveddata: true,\n data: action.data\n });\n case C.AWAIT_NEW_CONCEPT_RESPONSE:\n return Object.assign({},currentstate,{\n submittingnew: true\n });\n case C.RECEIVE_NEW_CONCEPT_RESPONSE:\n return Object.assign({},currentstate,{\n submittingnew: false,\n newConceptModalOpen: false\n });\n case C.START_CONCEPT_EDIT:\n newstate = _.cloneDeep(currentstate);\n newstate.states[action.qid] = C.EDITING_CONCEPT;\n return newstate;\n case C.FINISH_CONCEPT_EDIT:\n newstate = _.cloneDeep(currentstate);\n delete newstate.states[action.qid];\n return newstate;\n case C.SUBMIT_CONCEPT_EDIT:\n newstate = _.cloneDeep(currentstate);\n newstate.states[action.qid] = C.SUBMITTING_CONCEPT;\n return newstate;\n case C.TOGGLE_NEW_CONCEPT_MODAL:\n return Object.assign({},currentstate,{\n newConceptModalOpen: !currentstate.newConceptModalOpen\n });\n default: return currentstate || initialState.concepts;\n }\n};\n","import C from '../constants';\n\nconst initialState = {\n user_id: null,\n editions: {},\n workingEditionMetadata: {},\n workingEditionQuestions: {},\n incompleteQuestions: [],\n coteachers: [],\n editionQuestions: {},\n originalEditionQuestions: {},\n};\n\nexport default function (currentstate, action) {\n switch (action.type) {\n case C.SET_USER_ID:\n return Object.assign({}, currentstate, {\n user_id: action.id,\n });\n case C.SET_COTEACHERS:\n return Object.assign({}, currentstate, {\n coteachers: action.coteachers,\n });\n case C.SET_EDITION_METADATA:\n return Object.assign({}, currentstate, {\n editions: action.editionMetadata,\n });\n case C.SET_EDITION_QUESTIONS:\n return Object.assign({}, currentstate, {\n editionQuestions: action.editionQuestions,\n });\n case C.SET_ORIGINAL_EDITION_QUESTIONS:\n return Object.assign({}, currentstate, {\n originalEditionQuestions: action.originalEditionQuestions,\n });\n case C.SET_WORKING_EDITION_QUESTIONS:\n return Object.assign({}, currentstate, {\n workingEditionQuestions: action.questions,\n });\n case C.SET_WORKING_EDITION_METADATA:\n return Object.assign({}, currentstate, {\n workingEditionMetadata: action.metadata,\n });\n case C.SET_INCOMPLETE_QUESTIONS:\n return Object.assign({}, currentstate, {\n incompleteQuestions: action.incompleteQuestions,\n });\n default: return currentstate || initialState;\n }\n}\n\nexport function getIncompleteQuestions(store) {\n return store.incompleteQuestions;\n}\n\nexport function getEditionMetadata(store) {\n return store.editions;\n}\n\nexport function getEditionQuestions(store) {\n return store.editionQuestions;\n}\n\nexport function getOriginalEditionQuestions(store) {\n return store.originalEditionQuestions;\n}\n\n","import C from '../constants';\n\nconst initialState = {\n message: '',\n error: ''\n}\n\nexport default function(currentState, action) {\n let newState = Object.assign({}, currentState || initialState);\n const message = action.message\n const error = action.error\n switch(action.type) {\n case C.DISPLAY_ERROR:\n newState.error = error\n return newState;\n case C.DISPLAY_MESSAGE:\n newState.message = message\n return newState;\n case C.CLEAR_DISPLAY_MESSAGE_AND_ERROR:\n newState.message = ''\n newState.error = ''\n return newState\n default:\n return newState;\n }\n}\n","import _ from 'lodash';\nimport C from '../constants';\n\nconst visibleStatuses = {\n 'Human Optimal': true,\n 'Human Sub-Optimal': true,\n 'Algorithm Optimal': true,\n 'Algorithm Sub-Optimal': true,\n Unmatched: true,\n\n // \"Focus Point Hint\": true,\n // \"Word Error Hint\": true,\n // \"Punctuation Hint\": true,\n // \"Punctuation and Case Hint\": true,\n // \"Capitalization Hint\": true,\n // \"Missing Details Hint\": true,\n // \"Not Concise Hint\": true,\n // \"Additional Word Hint\": true,\n // \"Missing Word Hint\": true,\n // \"Modified Word Hint\": true,\n // \"Whitespace Hint\": true,\n // \"\"\n 'No Hint': true,\n};\n\nC.ERROR_AUTHORS.forEach(author =>\n visibleStatuses[author] = true\n);\n\nconst initialState = {\n filters: {\n responses: [],\n numberOfPages: 1,\n numberOfResponses: 0,\n sorting: 'count',\n ascending: false,\n excludeMisspellings: false,\n stringFilter: '',\n responsePageNumber: 1,\n requestCount: 0,\n visibleStatuses,\n expanded: {}, // this will contain response keys set to true or false;\n formattedFilterData: {\n sort: {\n column: 'count',\n direction: 'desc'\n },\n filters: {\n author: [],\n status: [],\n },\n excludeMisspellings: false,\n }\n },\n}\n\nfunction getFormattedFilterData(state) {\n return {\n filters: getFilters(state),\n sort: getSort(state),\n excludeMisspellings: state.excludeMisspellings,\n };\n}\n\nfunction mapStatus() {\n return {\n 'Human Optimal': 0,\n 'Human Sub-Optimal': 1,\n 'Algorithm Optimal': 2,\n 'Algorithm Sub-Optimal': 3,\n 'Unmatched': 4,\n }\n}\n\nfunction getFilters(state) {\n const ignoredAuthors = []\n const ignoredStatuses = []\n Object.entries(state.visibleStatuses).forEach(([key, value]) => {\n if (!value) {\n if (mapStatus()[key] !== undefined) {\n ignoredStatuses.push(mapStatus()[key])\n } else {\n ignoredAuthors.push(key)\n }\n }\n });\n return {\n author: ignoredAuthors,\n status: ignoredStatuses\n }\n}\n\nfunction getSort(state) {\n return {\n column: state.sorting,\n direction: state.ascending ? 'asc' : 'desc'\n }\n}\n\nexport default function (currentState, action) {\n let newState;\n switch (action.type) {\n case C.TOGGLE_EXPAND_SINGLE_RESPONSE:\n newState = _.cloneDeep(currentState);\n newState.expanded[action.rkey] = !currentState.expanded[action.rkey];\n return newState;\n case C.COLLAPSE_ALL_RESPONSES:\n newState = _.cloneDeep(currentState);\n newState.expanded = {};\n return newState;\n case C.EXPAND_ALL_RESPONSES:\n newState = _.cloneDeep(currentState);\n newState.expanded = action.expandedResponses;\n return newState;\n case C.TOGGLE_STATUS_FIELD:\n newState = _.cloneDeep(currentState);\n newState.visibleStatuses[action.status] = !currentState.visibleStatuses[action.status];\n newState.formattedFilterData = getFormattedFilterData(newState)\n return newState;\n case C.TOGGLE_RESPONSE_SORT:\n newState = _.cloneDeep(currentState);\n if (currentState.sorting === action.field) {\n newState.ascending = !currentState.ascending;\n } else {\n newState.ascending = false;\n newState.sorting = action.field;\n }\n newState.formattedFilterData = getFormattedFilterData(newState)\n return newState;\n case C.TOGGLE_EXCLUDE_MISSPELLINGS:\n newState = _.cloneDeep(currentState);\n newState.excludeMisspellings = !newState.excludeMisspellings;\n newState.formattedFilterData = getFormattedFilterData(newState);\n return newState;\n case C.RESET_ALL_FIELDS:\n newState = _.cloneDeep(currentState);\n _.forIn(newState.visibleStatuses, (status, key) => {\n newState.visibleStatuses[key] = true;\n });\n newState.formattedFilterData = getFormattedFilterData(newState)\n return newState;\n case C.DESELECT_ALL_FIELDS:\n newState = _.cloneDeep(currentState);\n _.forIn(newState.visibleStatuses, (status, key) => {\n newState.visibleStatuses[key] = false;\n });\n newState.formattedFilterData = getFormattedFilterData(newState)\n return newState;\n case C.UPDATE_SEARCHED_RESPONSES:\n newState = _.cloneDeep(currentState);\n newState.responses = action.data.responses\n newState.numberOfPages = action.data.numberOfPages\n newState.numberOfResponses = action.data.numberOfResponses\n return newState;\n case C.SET_RESPONSE_PAGE_NUMBER:\n newState = _.cloneDeep(currentState);\n newState.responsePageNumber = action.pageNumber\n return newState;\n case C.SET_RESPONSE_STRING_FILTER:\n newState = _.cloneDeep(currentState);\n newState.stringFilter = action.stringFilter\n newState.responsePageNumber = 1\n return newState;\n case C.INCREMENT_REQUEST_COUNT:\n newState = _.cloneDeep(currentState);\n newState.requestCount = currentState.requestCount + 1\n return newState\n default:\n return currentState || initialState.filters;\n }\n}\n","import C from '../constants';\n\nconst initialState = {\n selectedResponses: [],\n numSelectedResponses: 0\n}\n\nexport default function(currentState, action) {\n let newState = Object.assign({}, currentState || initialState);\n let responseKey = action.responseKey;\n switch(action.type) {\n case C.ADD_RESPONSE_TO_MASS_EDIT_ARRAY:\n if(newState.selectedResponses.indexOf(responseKey) < 0) {\n newState.selectedResponses.push(responseKey);\n newState.numSelectedResponses = newState.selectedResponses.length\n }\n return newState;\n case C.REMOVE_RESPONSE_FROM_MASS_EDIT_ARRAY:\n if(newState.selectedResponses.indexOf(responseKey) > -1) {\n newState.selectedResponses.splice(newState.selectedResponses.indexOf(responseKey), 1);\n newState.numSelectedResponses = newState.selectedResponses.length\n }\n return newState;\n case C.CLEAR_RESPONSES_FROM_MASS_EDIT_ARRAY:\n newState.selectedResponses = [];\n newState.numSelectedResponses = 0\n return newState;\n default:\n return newState;\n }\n}\n","import { routerReducer } from 'react-router-redux';\nimport { combineReducers } from 'redux';\nimport classroomLesson from './classroomLesson';\nimport classroomLessons from './classroomLessons'; // this is the admin one\nimport classroomLessonsReviews from './classroomLessonsReviews';\nimport classroomSessions from './classroomSessions';\nimport concepts from './concepts';\nimport customize, * as FromCustomize from './customize';\nimport display from './display';\nimport filters from './filtersReducer';\nimport massEdit from './massEdit';\n\nconst combinedReducers = combineReducers({\n classroomLesson,\n classroomLessons,\n classroomLessonsReviews,\n classroomSessions,\n concepts,\n customize,\n display,\n filters,\n massEdit,\n routing: routerReducer,\n});\n\nexport default combinedReducers;\n\nexport function getIncompleteQuestions(store) {\n return FromCustomize.getIncompleteQuestions(store.customize);\n}\n\nexport function getStoredEditionMetadata(store, props) {\n const editionId = props.match.params.editionID;\n const editions = FromCustomize.getEditionMetadata(store.customize);\n\n return editions[editionId];\n}\n\nexport function getStoredEditionQuestions(store) {\n return FromCustomize.getEditionQuestions(store.customize);\n}\n\nexport function getStoredOriginalEditionQuestions(store) {\n return FromCustomize.getOriginalEditionQuestions(store.customize);\n}\n","import * as React from 'react';\nimport { connect } from 'react-redux';\n\nclass LaunchEditionNavbar extends React.Component {\n constructor(props) {\n super(props);\n }\n\n renderCustomizedEditionsTag() {\n const { editions } = this.props.customize\n const customEdition = Object.keys(editions).find(e => {\n return editions[e].lesson_id === this.props.match.params.lessonID && editions[e].user_id !== 'quill-staff'\n })\n if (customEdition) {\n return Customized\n }\n }\n\n render() {\n return (\n \n Lesson {this.props.classroomLesson.data.lesson}: {this.props.classroomLesson.data.title} {this.renderCustomizedEditionsTag()}\n \n );\n }\n}\n\nfunction select(props) {\n return {\n classroomLesson: props.classroomLesson,\n customize: props.customize\n };\n}\n\nexport default connect(select)(LaunchEditionNavbar);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Link, withRouter } from 'react-router-dom';\nimport { getParameterByName } from '../../libs/getParameterByName';\nimport CreateCustomizedEditionNavbar from './createCustomizedEditionNavbar';\nimport CustomizeNavbar from './customizeNavbar';\nimport LaunchEditionNavbar from './launchEditionNavbar';\nimport TeacherLessonsNavbar from './teacherNavbar';\n\nclass Navbar extends React.Component {\n state = {\n expanded: false\n };\n\n navStyles = () => {\n if (this.state.expanded) {\n return {\n background: '#fff',\n display: 'initial'\n }\n }\n };\n\n toggle = () => {\n this.setState({expanded: !this.state.expanded})\n };\n\n reset = () => {\n this.setState({expanded: false})\n };\n\n inLesson = () => {\n return (window.location.href.indexOf('play/lesson') !== -1);\n };\n\n quillLessons = () => {\n return window.location.href.includes('teach/class-lessons');\n };\n\n customizeRoute = () => {\n return (window.location.href.indexOf('customize') !== -1);\n };\n\n customizeNavbar = () => {\n if (this.props.match.params.editionID) {\n return \n } else if (getParameterByName('classroom_unit_id') || getParameterByName('preview')) {\n return \n } else {\n return \n }\n };\n\n renderLinks = () => {\n if (this.inLesson()) {\n return (\n \n )\n } else {\n return (\n \n FAQ\n Demo\n Results\n Activities\n \n )\n }\n };\n\n render() {\n const { match, } = this.props\n if (this.quillLessons()) {\n return ();\n } else if (this.customizeRoute()) {\n return this.customizeNavbar()\n } else {\n return (\n \n \n \n \n \n \n \n {this.renderLinks()}\n \n \n \n \n \n \n \n )\n }\n }\n}\n\nconst rightNav = (\n \n Admin\n \n \n \n Help\n \n \n \n Button\n \n)\n\nfunction select(state) {\n return {\n routing: state.routing\n }\n}\n\nexport default withRouter(connect(select)(Navbar))\n","import _ from 'underscore';\n\nconst LESSONS_CONCEPT_UID = 'X37oyfiNxSphA34npOb-Ig' // lessons-specific concept that we use for all questions\n\nexport function generate(lessonQuestionData, studentSessionData, modifications) {\n const nestedConceptResults = generateConceptResultsForAllQuestions(lessonQuestionData, studentSessionData);\n const completeConceptResults = embedActivitySessionUIDInConceptResult(nestedConceptResults);\n const flatConceptResults = Object.values(completeConceptResults).map((questionSubs) => Object.values(questionSubs))\n return [].concat.apply([], flatConceptResults); // Flatten array\n}\n\nexport function generateConceptResult(questionData, studentSubmission) {\n const answer = studentSubmission.data instanceof Object ? Object.values(studentSubmission.data).join('; ') : studentSubmission.data\n\n return {\n concept_id: LESSONS_CONCEPT_UID,\n question_type: 'lessons-slide',\n metadata: {\n correct: 1,\n directions: questionData.instructions,\n prompt: questionData.prompt,\n answer: studentSubmission.data,\n attemptNumber: 1,\n question_concept_uid: LESSONS_CONCEPT_UID\n },\n };\n}\n\nexport function generateConceptResultForQuestion(questionData, studentSubmissions) {\n return _.mapObject(studentSubmissions, (submission, studentID) => generateConceptResult(questionData, submission));\n}\n\nexport function generateConceptResultsForAllQuestions(questionsData, studentSubmissionsData) {\n return _.mapObject(studentSubmissionsData, (questionSubmissions, questionID) => {\n return generateConceptResultForQuestion(questionsData[questionID].data.play, questionSubmissions);\n })\n}\n\nexport function embedActivitySessionUIDInConceptResult(nestedConceptResults) {\n const questionNumbers = Object.keys(nestedConceptResults).sort();\n return _.mapObject(nestedConceptResults, (submissions, questionUID) => {\n return _.mapObject(submissions, (submission, activitySessionUID) => {\n submission.activity_session_uid = activitySessionUID;\n submission.metadata.questionNumber = questionNumbers.indexOf(questionUID) + 1;\n return submission\n })\n })\n}\n","import React from 'react';\nimport { Route, Switch, withRouter } from 'react-router-dom';\nimport Teach from './classroomLessons/teach/container.tsx';\nimport MarkingLessonAsCompleted from './classroomLessons/teach/markingLessonAsCompleted.tsx';\n\nconst Root = () => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default withRouter(Root);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nconst quillLogoSrc = `${process.env.CDN_URL}/images/logos/quill-logo-white-2022.svg`\n\nconst handleLogoClick = () => {\n if (window.confirm('Are you sure you want to leave your lesson?')) {\n window.location = process.env.DEFAULT_URL;\n }\n}\n\nexport const Navbar = ({ classroomSessions, customize, }) => {\n const { data } = classroomSessions;\n\n // need to subtract one from the number of questions to account for the lobby slide\n const numberOfQuestions = customize && customize.editionQuestions && customize.editionQuestions.questions ? customize.editionQuestions.questions.length - 1 : null\n const counterText = numberOfQuestions ? `${data.current_slide} of ${numberOfQuestions}` : ''\n\n return (\n \n \n \n \n \n {counterText}\n \n \n );\n}\n\nfunction select(props) {\n return {\n classroomSessions: props.classroomSessions,\n customize: props.customize,\n };\n}\n\nexport default connect(select)(Navbar);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StudentLessonsNavBar from './studentLessonsNavbar.jsx';\n\nclass Navbar extends React.Component {\n render() {\n return ;\n }\n}\n\nfunction select(state) {\n return {\n routing: state.routing,\n playDiagnostic: state.playDiagnostic,\n };\n}\n\nexport default connect(select)(Navbar);\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport Play from './classroomLessons/play/container.tsx';\n\nconst StudentRoot = () => (\n \n \n \n \n)\n\nexport default StudentRoot;\n","import React from 'react';\nimport { getParameterByName } from '../libs/getParameterByName';\nimport socket from '../utils/socketStore';\n\nclass SocketProvider extends React.Component {\n constructor(props) {\n super(props)\n this.state = { socketOpened: false }\n }\n\n componentDidMount() {\n const callback = () => {\n this.setState({ socketOpened: true })\n };\n\n const classroomUnitId = getParameterByName('classroom_unit_id');\n\n socket.connect(classroomUnitId, callback)\n }\n\n render() {\n if (this.state.socketOpened) {\n return this.props.children;\n } else {\n return false;\n }\n }\n}\n\nexport default SocketProvider;\n","export default function () {\n window.addEventListener('keydown',function (e) {\n if (e.keyIdentifier=='U+0008'||e.keyIdentifier=='Backspace'||e.keyCode==8) {\n if(e.target==document.body) {\n e.preventDefault();\n return false;\n }\n }\n },true);\n}\n","import createHashHistory from 'history/lib/createHashHistory';\nimport { routerMiddleware } from 'react-router-redux';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport rootReducer from '../reducers/combined';\n\nconst hashhistory = createHashHistory({ queryKey: false, });\nconst middleware = routerMiddleware(hashhistory);\n\nconst finalCreateStore = compose(\n // middleware you want to use in development:\n applyMiddleware(thunk, middleware),\n // required! Enable Redux DevTools with the monitors you chose\n // devTools.instrument(),\n window.devToolsExtension ? window.devToolsExtension() : f => f\n)(createStore);\n\nfunction getDebugSessionKey() {\n // you can write custom logic here!\n // by default we try to read the key from ?debug_session= in the address bar\n const matches = window.location.href.match(/[?&]debug_session=([^&]+)\\b/);\n return (matches && matches.length > 0) ? matches[1] : null;\n}\n\nexport default function configureStore(initialState) {\n const store = finalCreateStore(rootReducer, initialState);\n\n return store;\n}\n","import ReactOnRails from 'react-on-rails';\nimport App from './App.tsx';\n\nReactOnRails.register({ App, });\n"],"names":["exports","module","stringify","serializer","indexOf","haystack","needle","i","obj","replacer","spaces","cycleReplacer","stringifyError","value","err","stack","keys","key","thisPos","require$$0","_window","global","isObject","what","isError","isErrorEvent","isDOMError","isDOMException","isUndefined","isFunction","isPlainObject","isString","isArray","isEmptyObject","_","supportsErrorEvent","supportsDOMError","supportsDOMException","supportsFetch","supportsReferrerPolicy","supportsPromiseRejectionEvent","wrappedCallback","callback","dataCallback","data","original","normalizedData","each","j","hasKey","objectMerge","obj1","obj2","objectFrozen","truncate","str","max","object","joinRegExp","patterns","sources","len","pattern","urlencode","o","pairs","parseUrl","url","match","query","fragment","uuid4","crypto","arr","pad","num","v","c","htmlTreeAsString","elem","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","nextStr","htmlElementAsString","className","classes","attr","attrWhitelist","isOnlyOneTruthy","a","b","isBothUndefined","isSameException","ex1","ex2","isSameStacktrace","stack1","stack2","frames1","frames2","fill","name","replacement","track","orig","safeJoin","input","delimiter","output","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","MAX_SERIALIZE_KEYS_LENGTH","utf8Length","jsonSize","serializeValue","maxLength","type","serializeObject","depth","acc","val","serializeException","ex","maxSize","serialized","serializeKeysForMessage","usedKeys","sanitize","sanitizeKeys","sanitizeRegExp","sanitizeMask","safeInput","sanitizeWorker","workerInput","k","utils","TraceKit","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","getLocationOrigin","handlers","lastArgs","lastException","lastExceptionStack","subscribe","handler","installGlobalHandler","unsubscribe","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","exception","inner","_oldOnerrorHandler","_onErrorHandlerInstalled","traceKitWindowOnError","msg","lineNo","colNo","message","processLastException","location","groups","_lastExceptionStack","_lastArgs","report","rethrow","args","computeStackTraceFromStackProp","chrome","winjs","gecko","geckoEval","chromeEval","lines","submatch","parts","element","isNative","isEval","xhr","source","sourceMaps","sourceMapAddress","augmentStackTraceWithInitialElement","stackInfo","initial","computeStackTraceByWalkingCallerChain","functionName","funcs","recursion","item","curr","computeStackTrace","result","e","tracekit","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","s","t","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","rstr2binl","length8","rstrMD5","rstrHMACMD5","bkey","ipad","opad","hash","rstr2hex","hexTab","str2rstrUTF8","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","md5","string","raw","md5_1","RavenConfigError","configError","wrapMethod","console","level","originalConsoleLevel","originalConsole","sentryLevel","require$$1","require$$2","require$$3","require$$4","wrapConsoleMethod","require$$5","dsnKeys","dsnPattern","now","_document","_navigator","keepOriginalCallback","Raven","method","dsn","options","self","globalOptions","autoBreadcrumbDefaults","autoBreadcrumbs","instrumentDefaults","instrument","uri","lastSlash","path","func","_before","wrapped","deep","property","event","currentOptions","exKeys","initialCall","fileurl","frames","crumb","plugin","pluginArgs","user","extra","tags","environment","release","transport","RavenConfig","encode","encodedOptions","globalServer","script","eventType","evt","evtName","target","debounceDuration","tagName","timeout","from","to","parsedLoc","parsedTo","parsedFrom","wrappedBuiltIns","wrapTimeFn","fn","originalCallback","wrapEventTarget","proto","capture","secure","before","clickHandler","keypressHandler","cb","eventTargets","wrapProp","prop","xhrproto","origOpen","origSend","onreadystatechangeHandler","props","origFetch","fetchInput","fetchData","response","isChromePackagedApp","hasPushAndReplaceState","oldOnPopState","currentHref","historyReplacementFunction","origHistFunction","consoleMethodCallback","builtin","installer","m","frame","stackInfoUrl","normalized","lineno","prefixedMessage","stacktrace","request","breadcrumbs","urlProps","urlProp","httpData","current","last","status","retry","baseData","auth","error","opts","evaluatedHeaders","evaluatedFetchParameters","defaultFetchOptions","fetchOptions","hasCORS","evaluated","context","raven","RavenConstructor","_Raven","singletonModule","C","re","parseuri","src","pathNames","queryKey","regx","names","$0","$1","$2","h","ms","parse","fmtLong","fmtShort","n","plural","createDebug","coerce","disable","enable","enabled","selectColor","namespace","prevTime","debug","index","format","formatter","logFn","destroy","namespaces","split","instance","log","formatArgs","save","load","useColors","localstorage","lastC","r","define_process_env_default","url_1","loc","ipv6","host","Emitter","mixin","on","callbacks","toString","isarray","isBuffer","isBuf","withNativeBuffer","withNativeArrayBuffer","isView","withNativeBlob","withNativeFile","binary","packet","buffers","packetData","pack","_deconstructPacket","placeholder","newData","_reconstructPacket","isIndexValid","_removeBlobs","curKey","containingObject","pendingBlobs","fileReader","bloblessData","Encoder","Decoder","ERROR_PACKET","encodeAsBinary","encoding","encodeAsString","payload","tryStringify","writeEncoding","deconstruction","decodeString","BinaryReconstructor","p","start","buf","next","tryParse","isPayloadValid","binData","hasCorsModule","globalThis_browser","globalThis","xmlhttprequest_browser","xdomain","xscheme","enablesXDR","has","hasBinary2","hasBinary","l","arraybuffer_slice","arraybuffer","end","bytes","abv","ii","after_1","after","count","err_cb","bail","noop","proxy","stringFromCharCode","ucs2decode","counter","length","ucs2encode","array","checkScalarValue","codePoint","strict","createByte","shift","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","utf8","chars","base64Arraybuffer","base64","bufferLength","encoded1","encoded2","encoded3","encoded4","BlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","mapArrayBufferViews","ary","chunk","copy","BlobBuilderConstructor","bb","part","BlobConstructor","blob","sliceBuffer","base64encoder","isAndroid","isPhantomJS","dontSendBlobs","packets","packetslist","Blob","require$$6","supportsBinary","encodeArrayBuffer","encodeBlob","encodeBase64Object","encoded","contentArray","resultBuffer","encodeBlobAsArrayBuffer","fr","b64","b64data","typed","basic","binaryType","tryDecode","asArray","rest","isBinary","setLengthHeader","encodeOne","doneCallback","map","results","done","eachWithIndex","el","chr","ret","encodedPackets","totalLength","resultArray","bufferIndex","ab","view","lenStr","binaryIdentifier","lengthAry","bufferTail","tailArray","msgLength","total","buffer","parser","Transport","desc","parseqs","qs","qry","pair","componentInherit","alphabet","seed","prev","decode","decoded","yeast","yeast_1","inherit","polling","Polling","hasXHR2","XMLHttpRequest","forceBase64","onPause","pause","close","callbackfn","schema","port","pollingXhrModule","XHR","Request","empty","isSSL","req","contentType","fromError","unloadHandler","terminationEvent","pollingJsonp","JSONPPolling","rNewline","rEscapedNewline","insertAt","isUAgecko","iframe","form","area","id","complete","initIframe","html","BrowserWebSocket","NodeWebSocket","WebSocketImpl","websocket","WS","protocols","ev","JSONP","transports","xd","xs","jsonp","indexof","socket","Socket","require$$7","clone","failed","onTransportOpen","upgradeLosesBinary","cleanup","freezeTransport","onerror","onTransportClose","onclose","onupgrade","waitForUpgrade","cleanupAndClose","reason","upgrades","filteredUpgrades","libModule","toArray_1","toArray","list","on_1","slice","componentBind","bind","hasBin","events","emit","io","nsp","sameNamespace","rootNamespaceError","sent","ack","compress","backo2","Backoff","rand","deviation","min","jitter","eio","require$$8","manager","Manager","_parser","openSub","errorSub","timer","onConnecting","subsLength","sub","delay","attempt","lookup","cache","parsed","newConnection","SocketStore","formData","openSocket","newClassroomUnitId","isNewActivitySession","RenderTextEditor","React","disabled","handleChange","editorIndex","checkAnswer","spellCheck","disabledClassName","Textarea","TabLink","children","React.createElement","Link","AdminContainer","Switch","Route","AdminClassroomLessonsContainer","Admin","withRouter","MultipleTextEditor","rbp","richButtonsPlugin","ItalicButton","BoldButton","UnderlineButton","BlockquoteButton","InlineButton","toggleInlineStyle","isActive","label","inlineStyle","onMouseDown","title","BlockButton","toggleBlockType","blockType","EditorState","convertFromHTML","nextProps","convertToHTML","textBoxClass","errorClass","editorFocusClass","blockquote","Editor","initialState","classroomLesson","currentstate","action","newstate","classroomLessons","classroomLessonsReviews","classroomSessions","currentState","newState","concepts","customize","getIncompleteQuestions","store","getEditionMetadata","getEditionQuestions","getOriginalEditionQuestions","display","visibleStatuses","author","getFormattedFilterData","state","getFilters","getSort","mapStatus","ignoredAuthors","ignoredStatuses","filters","massEdit","responseKey","combinedReducers","combineReducers","routerReducer","FromCustomize.getIncompleteQuestions","getStoredEditionMetadata","editionId","FromCustomize.getEditionMetadata","getStoredEditionQuestions","FromCustomize.getEditionQuestions","getStoredOriginalEditionQuestions","FromCustomize.getOriginalEditionQuestions","LaunchEditionNavbar","React.Component","editions","select","LaunchEditionNavbar$1","connect","Navbar$2","CustomizeNavbar","getParameterByName","CreateCustomizedEditionNavbar","TeacherLessonsNavbar","NavBar$1","Navbar","LESSONS_CONCEPT_UID","generate","lessonQuestionData","studentSessionData","modifications","nestedConceptResults","generateConceptResultsForAllQuestions","completeConceptResults","embedActivitySessionUIDInConceptResult","flatConceptResults","questionSubs","generateConceptResult","questionData","studentSubmission","generateConceptResultForQuestion","studentSubmissions","submission","studentID","questionsData","studentSubmissionsData","questionSubmissions","questionID","questionNumbers","submissions","questionUID","activitySessionUID","Root","Teach","MarkingLessonAsCompleted","TeacherRoot","quillLogoSrc","handleLogoClick","numberOfQuestions","counterText","StudentLessonsNavBar","NavBar","StudentRoot","Play","SocketProvider","classroomUnitId","BackOff","hashhistory","createHashHistory","middleware","routerMiddleware","finalCreateStore","compose","applyMiddleware","thunk","f","createStore","configureStore","rootReducer","ReactOnRails","App"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]}
<\\/p>/g, '').replace(/ /g, ''));\n });\n }\n\n render() {\n const { ItalicButton, BoldButton, UnderlineButton, BlockquoteButton, InlineButton, BlockButton} = this.state.components;\n const textBoxClass = this.state.hasFocus ? 'card-content hasFocus' : 'card-content';\n const errorClass = this.props.incompletePrompt ? 'incomplete-prompt' : ''\n const editorFocusClass = this.state.hasFocus ? 'editor-focused' : ''\n const blockquote = this.props.showBlockquote ? : null\n return (\n
Lesson {this.props.classroomLesson.data.lesson}: {this.props.classroomLesson.data.title}
{counterText}