1 line
517 KiB
Plaintext
1 line
517 KiB
Plaintext
{"version":3,"sources":["webpack://RSSParser/webpack/universalModuleDefinition","webpack://RSSParser/webpack/bootstrap","webpack://RSSParser/(webpack)/buildin/global.js","webpack://RSSParser/./node_modules/inherits/inherits_browser.js","webpack://RSSParser/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://RSSParser/./node_modules/buffer/index.js","webpack://RSSParser/./node_modules/process/browser.js","webpack://RSSParser/./node_modules/readable-stream/readable-browser.js","webpack://RSSParser/./node_modules/core-util-is/lib/util.js","webpack://RSSParser/./node_modules/process-nextick-args/index.js","webpack://RSSParser/./node_modules/events/events.js","webpack://RSSParser/./node_modules/safe-buffer/index.js","webpack://RSSParser/./node_modules/readable-stream/lib/_stream_writable.js","webpack://RSSParser/./node_modules/string_decoder/lib/string_decoder.js","webpack://RSSParser/./node_modules/url/url.js","webpack://RSSParser/./node_modules/xml2js/lib/defaults.js","webpack://RSSParser/./node_modules/stream-http/index.js","webpack://RSSParser/./node_modules/isarray/index.js","webpack://RSSParser/./node_modules/stream-http/lib/capability.js","webpack://RSSParser/./node_modules/stream-http/lib/response.js","webpack://RSSParser/./node_modules/readable-stream/lib/_stream_readable.js","webpack://RSSParser/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://RSSParser/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://RSSParser/./node_modules/timers-browserify/main.js","webpack://RSSParser/./node_modules/readable-stream/lib/_stream_transform.js","webpack://RSSParser/(webpack)/buildin/amd-options.js","webpack://RSSParser/./node_modules/xml2js/lib/xml2js.js","webpack://RSSParser/./node_modules/xml2js/lib/processors.js","webpack://RSSParser/./node_modules/entities/lib/decode.js","webpack://RSSParser/./node_modules/entities/lib/encode.js","webpack://RSSParser/./index.js","webpack://RSSParser/./lib/parser.js","webpack://RSSParser/./node_modules/stream-http/lib/request.js","webpack://RSSParser/./node_modules/base64-js/index.js","webpack://RSSParser/./node_modules/ieee754/index.js","webpack://RSSParser/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://RSSParser/./node_modules/setimmediate/setImmediate.js","webpack://RSSParser/./node_modules/util-deprecate/browser.js","webpack://RSSParser/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://RSSParser/./node_modules/to-arraybuffer/index.js","webpack://RSSParser/./node_modules/xtend/immutable.js","webpack://RSSParser/./node_modules/builtin-status-codes/browser.js","webpack://RSSParser/./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack://RSSParser/(webpack)/buildin/module.js","webpack://RSSParser/./node_modules/url/util.js","webpack://RSSParser/./node_modules/querystring-es3/index.js","webpack://RSSParser/./node_modules/querystring-es3/decode.js","webpack://RSSParser/./node_modules/querystring-es3/encode.js","webpack://RSSParser/./node_modules/https-browserify/index.js","webpack://RSSParser/./node_modules/xml2js/lib/builder.js","webpack://RSSParser/external \"xmlbuilder\"","webpack://RSSParser/./node_modules/xml2js/lib/parser.js","webpack://RSSParser/./node_modules/sax/lib/sax.js","webpack://RSSParser/./node_modules/stream-browserify/index.js","webpack://RSSParser/./node_modules/readable-stream/writable-browser.js","webpack://RSSParser/./node_modules/readable-stream/duplex-browser.js","webpack://RSSParser/./node_modules/readable-stream/transform.js","webpack://RSSParser/./node_modules/readable-stream/passthrough.js","webpack://RSSParser/./node_modules/xml2js/lib/bom.js","webpack://RSSParser/./lib/fields.js","webpack://RSSParser/./lib/utils.js","webpack://RSSParser/./node_modules/entities/lib/index.js","webpack://RSSParser/./node_modules/entities/lib/decode_codepoint.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__52__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","Function","e","window","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","pna","objectKeys","keys","obj","push","Duplex","util","inherits","Readable","Writable","v","length","method","options","readable","allowHalfOpen","once","onend","_writableState","ended","nextTick","onEndNT","self","end","highWaterMark","undefined","_readableState","destroyed","set","_destroy","err","cb","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","Error","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","args","title","browser","env","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","Stream","Transform","PassThrough","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","isError","isFunction","isPrimitive","fn","arg1","arg2","arg3","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","_addListener","listener","prepend","events","existing","warning","newListener","unshift","warned","w","emitter","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","handler","position","originalListener","shift","index","pop","spliceOne","rawListeners","eventNames","copyProps","SafeBuffer","CorkedRequest","_this","next","entry","finish","corkReq","callback","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","stream","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","final","_final","doWrite","chunk","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","current","_","hasInstance","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","punycode","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","parse","urlParse","resolve","source","relative","resolveObject","format","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","url","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","split","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","part","newpart","k","validParts","notHost","bit","toASCII","h","ae","esc","encodeURIComponent","escape","qm","stringify","charAt","rel","result","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","splice","isAbsolute","defaults","explicitCharkey","normalize","normalizeTags","attrkey","charkey","explicitArray","ignoreAttrs","mergeAttrs","explicitRoot","validator","xmlns","explicitChildren","childkey","charsAsChildren","includeWhiteChars","async","strict","attrNameProcessors","attrValueProcessors","tagNameProcessors","valueProcessors","emptyTag","preserveChildrenOrder","rootName","xmldec","doctype","renderOpts","headless","chunkSize","cdata","ClientRequest","response","extend","statusCodes","http","request","opts","defaultProtocol","location","toUpperCase","headers","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","blobConstructor","Blob","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","fetchTimer","_mode","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","status","statusMessage","statusText","forEach","header","Promise","reject","_destroyed","_resumeFetch","close","abort","body","pipeTo","catch","reader","getReader","then","done","_xhr","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","_onXHRProgress","readyState","responseBody","toArray","responseText","newData","MSStreamReader","onprogress","onload","readAsArrayBuffer","ReadableState","EElistenerCount","debugUtil","debug","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","howMuchToRead","head","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","clear","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","event","resume","dests","ev","wrap","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","scope","Timeout","id","clearFn","_id","_clearFn","setInterval","clearInterval","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","_transform","flush","_flush","_this2","err2","__webpack_amd_options__","builder","parser","processors","hasProp","ValidationError","superClass","child","parent","__super__","Builder","Parser","parseString","prefixMatch","RegExp","firstCharLowerCase","stripPrefix","parseNumbers","parseFloat","parseBooleans","test","__importDefault","mod","decodeHTML","decodeHTMLStrict","decodeXML","entities_json_1","legacy_json_1","xml_json_1","decode_codepoint_1","getStrictDecoder","map","getReplacer","default","sorter","secondChar","legacy","sort","replacer","encodeHTML","encodeXML","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getInverse","inverseHTML","htmlReplacer","reduce","inverse","single","multiple","_i","_a","reNonASCII","singleCharReplacer","codePointAt","reXmlChars","https","xml2js","fields","utils","DEFAULT_HEADERS","customFields","feed","requestOptions","maxRedirects","xmlParser","xml","prom","buildAtomFeed","rss","$","buildRSS2","buildRSS1","buildRSS0_9","defaultRSS","maybePromisify","feedUrl","redirectCount","urlParts","assign","requestOpts","newLocation","parseURL","getEncodingFromContentType","xmlObj","items","copyFromXML","link","getLink","updated","lastBuildDate","parseItemAtom","published","pubDate","Date","toISOString","author","content","getContent","contentSnippet","getSnippet","setISODate","channel","buildRSS","decorateItunes","feedFields","itemFields","image","width","height","xmlItem","parseItemRss","enclosure","description","guid","category","categories","itunes","owner","email","categoriesWithSubs","subs","subcategory","keywords","keyword","podcastFeed","podcastItem","date","isoDate","toArrayBuffer","preferBinary","_opts","_body","_headers","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","credentials","withCredentials","_connect","reason","ontimeout","setRequestHeader","_response","onreadystatechange","send","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","instance","Constructor","_classCallCheck","custom","registerImmediate","html","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","createElement","documentElement","script","removeChild","appendChild","random","addEventListener","attachEvent","task","config","localStorage","msg","trace","arrayCopy","freeExports","nodeType","freeModule","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","basic","oldi","baseMinusT","inputLength","bias","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","webpackPolyfill","paths","children","prop","qs","sep","eq","regexp","maxKeys","kstr","vstr","idx","stringifyPrimitive","ks","f","validateParams","params","escapeCDATA","requiresCDATA","wrapCDATA","buildObject","rootObj","render","rootElement","element","attr","raw","txt","ele","att","allowSurrogateChars","bom","isEmpty","processItem","sax","me","thing","reset","assignOrPush","processAsync","xmlnskey","saxParser","error1","errThrown","newValue","ontext","stack","resultObject","EXPLICIT_CHARKEY","onopentag","node","processedKey","attributes","uri","local","onclosetag","emptyStr","nodeName","objClone","old","xpath","results","charChild","oncdata","stripBOM","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","buffers","clearBuffers","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","tag","noscript","S","BEGIN","strictEntities","ENTITIES","XML_ENTITIES","attribList","rootNS","trackPosition","line","column","EVENTS","F","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","textNode","substring","isWhitespace","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","CLOSE_TAG","SGML_DECL","sgmlDecl","isMatch","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","emitNode","CDATA","COMMENT","comment","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_DTD","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","parseEntity","entity","entityBody","entityStart","maxAllowed","maxActual","closeText","checkBufferLength","ex","streamWraps","filter","_parser","_decoder","SD","XML_NAMESPACE","regex","fromCodePoint","STATE","COMMENT_STARTING","qname","attribute","qualName","prefix","qn","selfClosing","JSON","nv","isSelfClosing","closeTo","entityLC","numStr","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","EE","_isStdio","didOnEnd","cleanup","includeSnippet","mapItunesField","entities","stripHtml","links","fallbackIdx","pretty","to","keepArray","promise","ENCODING_REGEX","SUPPORTED_ENCODINGS","ENCODING_ALIASES","contentType","decodeStrict","decode_1","encode_1","level","encode_2","decode_2","decode_json_1"],"mappings":"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","file":"dist/rss-parser.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"xmlbuilder\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"xmlbuilder\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"RSSParser\"] = factory(require(\"xmlbuilder\"));\n\telse\n\t\troot[\"RSSParser\"] = factory(root[\"xmlbuilder\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__52__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 30);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// Generated by CoffeeScript 1.12.7\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nfunction singleCharReplacer(c) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return \"&#x\" + c.codePointAt(0).toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","'use strict';\n\nmodule.exports = require('./lib/parser');\n\n","\"use strict\";\nconst http = require('http');\nconst https = require('https');\nconst xml2js = require('xml2js');\nconst url = require('url');\n\nconst fields = require('./fields');\nconst utils = require('./utils');\n\nconst DEFAULT_HEADERS = {\n 'User-Agent': 'rss-parser',\n 'Accept': 'application/rss+xml',\n}\nconst DEFAULT_MAX_REDIRECTS = 5;\nconst DEFAULT_TIMEOUT = 60000;\n\nclass Parser {\n constructor(options={}) {\n options.headers = options.headers || {};\n options.xml2js = options.xml2js || {};\n options.customFields = options.customFields || {};\n options.customFields.item = options.customFields.item || [];\n options.customFields.feed = options.customFields.feed || [];\n options.requestOptions = options.requestOptions || {};\n if (!options.maxRedirects) options.maxRedirects = DEFAULT_MAX_REDIRECTS;\n if (!options.timeout) options.timeout = DEFAULT_TIMEOUT;\n this.options = options;\n this.xmlParser = new xml2js.Parser(this.options.xml2js);\n }\n\n parseString(xml, callback) {\n let prom = new Promise((resolve, reject) => {\n this.xmlParser.parseString(xml, (err, result) => {\n if (err) return reject(err);\n if (!result) {\n return reject(new Error('Unable to parse XML.'));\n }\n let feed = null;\n if (result.feed) {\n feed = this.buildAtomFeed(result);\n } else if (result.rss && result.rss.$ && result.rss.$.version && result.rss.$.version.match(/^2/)) {\n feed = this.buildRSS2(result);\n } else if (result['rdf:RDF']) {\n feed = this.buildRSS1(result);\n } else if (result.rss && result.rss.$ && result.rss.$.version && result.rss.$.version.match(/0\\.9/)) {\n feed = this.buildRSS0_9(result);\n } else if (result.rss && this.options.defaultRSS) {\n switch(this.options.defaultRSS) {\n case 0.9:\n feed = this.buildRSS0_9(result);\n break;\n case 1:\n feed = this.buildRSS1(result);\n break;\n case 2:\n feed = this.buildRSS2(result);\n break;\n default:\n return reject(new Error(\"default RSS version not recognized.\"))\n }\n } else {\n return reject(new Error(\"Feed not recognized as RSS 1 or 2.\"))\n }\n resolve(feed);\n });\n });\n prom = utils.maybePromisify(callback, prom);\n return prom;\n }\n\n parseURL(feedUrl, callback, redirectCount=0) {\n let xml = '';\n let get = feedUrl.indexOf('https') === 0 ? https.get : http.get;\n let urlParts = url.parse(feedUrl);\n let headers = Object.assign({}, DEFAULT_HEADERS, this.options.headers);\n let timeout = null;\n let prom = new Promise((resolve, reject) => {\n const requestOpts = Object.assign({headers}, urlParts, this.options.requestOptions);\n let req = get(requestOpts, (res) => {\n if (this.options.maxRedirects && res.statusCode >= 300 && res.statusCode < 400 && res.headers['location']) {\n if (redirectCount === this.options.maxRedirects) {\n return reject(new Error(\"Too many redirects\"));\n } else {\n const newLocation = url.resolve(feedUrl, res.headers['location']);\n return this.parseURL(newLocation, null, redirectCount + 1).then(resolve, reject);\n }\n } else if (res.statusCode >= 300) {\n return reject(new Error(\"Status code \" + res.statusCode))\n }\n let encoding = utils.getEncodingFromContentType(res.headers['content-type']);\n res.setEncoding(encoding);\n res.on('data', (chunk) => {\n xml += chunk;\n });\n res.on('end', () => {\n return this.parseString(xml).then(resolve, reject);\n });\n })\n req.on('error', reject);\n timeout = setTimeout(() => {\n return reject(new Error(\"Request timed out after \" + this.options.timeout + \"ms\"));\n }, this.options.timeout);\n }).then(data => {\n clearTimeout(timeout);\n return Promise.resolve(data);\n }, e => {\n clearTimeout(timeout);\n return Promise.reject(e);\n });\n prom = utils.maybePromisify(callback, prom);\n return prom;\n }\n\n buildAtomFeed(xmlObj) {\n let feed = {items: []};\n utils.copyFromXML(xmlObj.feed, feed, this.options.customFields.feed);\n if (xmlObj.feed.link) {\n feed.link = utils.getLink(xmlObj.feed.link, 'alternate', 0);\n feed.feedUrl = utils.getLink(xmlObj.feed.link, 'self', 1);\n }\n if (xmlObj.feed.title) {\n let title = xmlObj.feed.title[0] || '';\n if (title._) title = title._\n if (title) feed.title = title;\n }\n if (xmlObj.feed.updated) {\n feed.lastBuildDate = xmlObj.feed.updated[0];\n }\n feed.items = (xmlObj.feed.entry || []).map(entry => this.parseItemAtom(entry));\n return feed;\n }\n\n parseItemAtom(entry) {\n let item = {};\n utils.copyFromXML(entry, item, this.options.customFields.item);\n if (entry.title) {\n let title = entry.title[0] || '';\n if (title._) title = title._;\n if (title) item.title = title;\n }\n if (entry.link && entry.link.length) {\n item.link = utils.getLink(entry.link, 'alternate', 0);\n }\n if (entry.published && entry.published.length && entry.published[0].length) item.pubDate = new Date(entry.published[0]).toISOString();\n if (!item.pubDate && entry.updated && entry.updated.length && entry.updated[0].length) item.pubDate = new Date(entry.updated[0]).toISOString();\n if (entry.author && entry.author.length && entry.author[0].name && entry.author[0].name.length) item.author = entry.author[0].name[0];\n if (entry.content && entry.content.length) {\n item.content = utils.getContent(entry.content[0]);\n item.contentSnippet = utils.getSnippet(item.content)\n }\n if (entry.id) {\n item.id = entry.id[0];\n }\n this.setISODate(item);\n return item;\n }\n\n buildRSS0_9(xmlObj) {\n var channel = xmlObj.rss.channel[0];\n var items = channel.item;\n return this.buildRSS(channel, items);\n }\n\n buildRSS1(xmlObj) {\n xmlObj = xmlObj['rdf:RDF'];\n let channel = xmlObj.channel[0];\n let items = xmlObj.item;\n return this.buildRSS(channel, items);\n }\n\n buildRSS2(xmlObj) {\n let channel = xmlObj.rss.channel[0];\n let items = channel.item;\n let feed = this.buildRSS(channel, items);\n if (xmlObj.rss.$ && xmlObj.rss.$['xmlns:itunes']) {\n this.decorateItunes(feed, channel);\n }\n return feed;\n }\n\n buildRSS(channel, items) {\n items = items || [];\n let feed = {items: []};\n let feedFields = fields.feed.concat(this.options.customFields.feed);\n let itemFields = fields.item.concat(this.options.customFields.item);\n if (channel['atom:link'] && channel['atom:link'][0] && channel['atom:link'][0].$) {\n feed.feedUrl = channel['atom:link'][0].$.href;\n }\n if (channel.image && channel.image[0] && channel.image[0].url) {\n feed.image = {};\n let image = channel.image[0];\n if (image.link) feed.image.link = image.link[0];\n if (image.url) feed.image.url = image.url[0];\n if (image.title) feed.image.title = image.title[0];\n if (image.width) feed.image.width = image.width[0];\n if (image.height) feed.image.height = image.height[0];\n }\n utils.copyFromXML(channel, feed, feedFields);\n feed.items = items.map(xmlItem => this.parseItemRss(xmlItem, itemFields));\n return feed;\n }\n\n parseItemRss(xmlItem, itemFields) {\n let item = {};\n utils.copyFromXML(xmlItem, item, itemFields);\n if (xmlItem.enclosure) {\n item.enclosure = xmlItem.enclosure[0].$;\n }\n if (xmlItem.description) {\n item.content = utils.getContent(xmlItem.description[0]);\n item.contentSnippet = utils.getSnippet(item.content);\n }\n if (xmlItem.guid) {\n item.guid = xmlItem.guid[0];\n if (item.guid._) item.guid = item.guid._;\n }\n if (xmlItem.category) item.categories = xmlItem.category;\n this.setISODate(item);\n return item;\n }\n\n /**\n * Add iTunes specific fields from XML to extracted JSON\n *\n * @access public\n * @param {object} feed extracted\n * @param {object} channel parsed XML\n */\n decorateItunes(feed, channel) {\n let items = channel.item || [];\n let categories = [];\n feed.itunes = {}\n\n if (channel['itunes:owner']) {\n let owner = {};\n\n if(channel['itunes:owner'][0]['itunes:name']) {\n owner.name = channel['itunes:owner'][0]['itunes:name'][0];\n }\n if(channel['itunes:owner'][0]['itunes:email']) {\n owner.email = channel['itunes:owner'][0]['itunes:email'][0];\n }\n feed.itunes.owner = owner;\n }\n\n if (channel['itunes:image']) {\n let image;\n let hasImageHref = (channel['itunes:image'][0] &&\n channel['itunes:image'][0].$ &&\n channel['itunes:image'][0].$.href);\n image = hasImageHref ? channel['itunes:image'][0].$.href : null;\n if (image) {\n feed.itunes.image = image;\n }\n }\n\n if (channel['itunes:category']) {\n const categoriesWithSubs = channel['itunes:category'].map((category) => {\n return {\n name: category.$.text,\n subs: category['itunes:category'] ?\n category['itunes:category']\n .map((subcategory) => ({ name: subcategory.$.text })) : null,\n };\n });\n\n feed.itunes.categories = categoriesWithSubs.map((category) => category.name);\n feed.itunes.categoriesWithSubs = categoriesWithSubs;\n }\n\n if (channel['itunes:keywords']) {\n if (channel['itunes:keywords'].length > 1) {\n feed.itunes.keywords = channel['itunes:keywords'].map(\n keyword => keyword.$.text\n );\n } else {\n let keywords = channel['itunes:keywords'][0];\n if (keywords && typeof keywords._ === 'string') {\n keywords = keywords._;\n }\n\n if (keywords && keywords.$ && keywords.$.text) {\n feed.itunes.keywords = keywords.$.text.split(',')\n } else if (typeof keywords === \"string\") {\n feed.itunes.keywords = keywords.split(',');\n }\n }\n }\n\n utils.copyFromXML(channel, feed.itunes, fields.podcastFeed);\n items.forEach((item, index) => {\n let entry = feed.items[index];\n entry.itunes = {};\n utils.copyFromXML(item, entry.itunes, fields.podcastItem);\n let image = item['itunes:image'];\n if (image && image[0] && image[0].$ && image[0].$.href) {\n entry.itunes.image = image[0].$.href;\n }\n });\n }\n\n setISODate(item) {\n let date = item.pubDate || item.date;\n if (date) {\n try {\n item.isoDate = new Date(date.trim()).toISOString();\n } catch (e) {\n // Ignore bad date format\n }\n }\n }\n}\n\nmodule.exports = Parser;\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else if (Array.isArray(obj)) {\n for (index in obj) {\n if (!hasProp.call(obj, index)) continue;\n child = obj[index];\n for (key in child) {\n entry = child[key];\n element = render(element.ele(key), entry).up();\n }\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__52__;","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var bom, defaults, events, isEmpty, processItem, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processItem = function(processors, item, key) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n item = process(item, key);\n }\n return item;\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return obj[key] = newValue;\n } else {\n return obj[key] = [newValue];\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n obj[key] = [obj[key]];\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n obj[attrkey][processedKey] = newValue;\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n (function() {\n var err;\n try {\n return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n return _this.emit(\"error\", err);\n }\n })();\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n objClone[key] = obj[key];\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n obj[nodeName] = old;\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n return Parser;\n\n })(events.EventEmitter);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n}).call(this);\n",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n parser.doctype += c\n if (c === ']') {\n parser.state = S.DOCTYPE\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n strictFail(parser, 'Unquoted attribute value')\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n parser[buffer] += parseEntity(parser)\n parser.entity = ''\n parser.state = returnState\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default:\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","const fields = module.exports = {};\n\nfields.feed = [\n ['author', 'creator'],\n ['dc:publisher', 'publisher'],\n ['dc:creator', 'creator'],\n ['dc:source', 'source'],\n ['dc:title', 'title'],\n ['dc:type', 'type'],\n 'title',\n 'description',\n 'author',\n 'pubDate',\n 'webMaster',\n 'managingEditor',\n 'generator',\n 'link',\n 'language',\n 'copyright',\n 'lastBuildDate',\n 'docs',\n 'generator',\n 'ttl',\n 'rating',\n 'skipHours',\n 'skipDays',\n];\n\nfields.item = [\n ['author', 'creator'],\n ['dc:creator', 'creator'],\n ['dc:date', 'date'],\n ['dc:language', 'language'],\n ['dc:rights', 'rights'],\n ['dc:source', 'source'],\n ['dc:title', 'title'],\n 'title',\n 'link',\n 'pubDate',\n 'author',\n ['content:encoded', 'content:encoded', {includeSnippet: true}],\n 'enclosure',\n 'dc:creator',\n 'dc:date',\n 'comments',\n];\n\nvar mapItunesField = function(f) {\n return ['itunes:' + f, f];\n}\n\nfields.podcastFeed = ([\n 'author',\n 'subtitle',\n 'summary',\n 'explicit'\n]).map(mapItunesField);\n\nfields.podcastItem = ([\n 'author',\n 'subtitle',\n 'summary',\n 'explicit',\n 'duration',\n 'image',\n 'episode',\n 'image',\n 'season',\n 'keywords',\n]).map(mapItunesField);\n\n","const utils = module.exports = {};\nconst entities = require('entities');\nconst xml2js = require('xml2js');\n\nutils.stripHtml = function(str) {\n str = str.replace(/([^\\n])<\\/?(h|br|p|ul|ol|li|blockquote|section|table|tr|div)(?:.|\\n)*?>([^\\n])/gm, '$1\\n$3')\n str = str.replace(/<(?:.|\\n)*?>/gm, '');\n return str;\n}\n\nutils.getSnippet = function(str) {\n return entities.decodeHTML(utils.stripHtml(str)).trim();\n}\n\nutils.getLink = function(links, rel, fallbackIdx) {\n if (!links) return;\n for (let i = 0; i < links.length; ++i) {\n if (links[i].$.rel === rel) return links[i].$.href;\n }\n if (links[fallbackIdx]) return links[fallbackIdx].$.href;\n}\n\nutils.getContent = function(content) {\n if (typeof content._ === 'string') {\n return content._;\n } else if (typeof content === 'object') {\n let builder = new xml2js.Builder({headless: true, explicitRoot: true, rootName: 'div', renderOpts: {pretty: false}});\n return builder.buildObject(content);\n } else {\n return content;\n }\n}\n\nutils.copyFromXML = function(xml, dest, fields) {\n fields.forEach(function(f) {\n let from = f;\n let to = f;\n let options = {};\n if (Array.isArray(f)) {\n from = f[0];\n to = f[1];\n if (f.length > 2) {\n options = f[2];\n }\n }\n const { keepArray, includeSnippet } = options;\n if (xml[from] !== undefined){\n dest[to] = keepArray ? xml[from] : xml[from][0];\n }\n if (dest[to] && typeof dest[to]._ === 'string') {\n dest[to]=dest[to]._;\n }\n if (includeSnippet && dest[to] && typeof dest[to] === 'string') {\n dest[to + 'Snippet'] = utils.getSnippet(dest[to]);\n }\n })\n}\n\nutils.maybePromisify = function(callback, promise) {\n if (!callback) return promise;\n return promise.then(\n data => setTimeout(() => callback(null, data)),\n err => setTimeout(() => callback(err))\n );\n}\n\nconst DEFAULT_ENCODING = 'utf8';\nconst ENCODING_REGEX = /(encoding|charset)\\s*=\\s*(\\S+)/;\nconst SUPPORTED_ENCODINGS = ['ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary', 'hex'];\nconst ENCODING_ALIASES = {\n 'utf-8': 'utf8',\n 'iso-8859-1': 'latin1',\n}\n\nutils.getEncodingFromContentType = function(contentType) {\n contentType = contentType || '';\n let match = contentType.match(ENCODING_REGEX);\n let encoding = (match || [])[2] || '';\n encoding = encoding.toLowerCase();\n encoding = ENCODING_ALIASES[encoding] || encoding;\n if (!encoding || SUPPORTED_ENCODINGS.indexOf(encoding) === -1) {\n encoding = DEFAULT_ENCODING;\n }\n return encoding;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\n// Legacy aliases\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n}\nexports.default = decodeCodePoint;\n"],"sourceRoot":""} |