{"version":3,"sources":["jsdelivr-header.js","/npm/usfx@0.1.3/lib/bundle.js"],"names":[],"mappings":"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","file":"/npm/usfx@0.1.3/lib/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/usfx@0.1.3/lib/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\n\nvar _usfx = require('./src/usfx');\n\nvar _usfx2 = _interopRequireDefault(_usfx);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _usfx2.default;\n\n},{\"./src/usfx\":34}],2:[function(require,module,exports){\n'use strict'\n\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nfunction init () {\n  var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i]\n    revLookup[code.charCodeAt(i)] = i\n  }\n\n  revLookup['-'.charCodeAt(0)] = 62\n  revLookup['_'.charCodeAt(0)] = 63\n}\n\ninit()\n\nfunction toByteArray (b64) {\n  var i, j, l, tmp, placeHolders, arr\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  // the number of equal signs (place holders)\n  // if there are two placeholders, than the two characters before it\n  // represent one byte\n  // if there is only one, then the three characters before it represent 2 bytes\n  // this is just a cheap hack to not do indexOf twice\n  placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n  // base64 is 4/3 + up to two characters of the original data\n  arr = new Arr(len * 3 / 4 - placeHolders)\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  l = placeHolders > 0 ? len - 4 : len\n\n  var L = 0\n\n  for (i = 0, j = 0; i < l; i += 4, j += 3) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n    arr[L++] = (tmp >> 16) & 0xFF\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  if (placeHolders === 2) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[L++] = tmp & 0xFF\n  } else if (placeHolders === 1) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + 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 = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\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 output = ''\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(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\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    output += lookup[tmp >> 2]\n    output += lookup[(tmp << 4) & 0x3F]\n    output += '=='\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n    output += lookup[tmp >> 10]\n    output += lookup[(tmp >> 4) & 0x3F]\n    output += lookup[(tmp << 2) & 0x3F]\n    output += '='\n  }\n\n  parts.push(output)\n\n  return parts.join('')\n}\n\n},{}],3:[function(require,module,exports){\n\n},{}],4:[function(require,module,exports){\narguments[4][3][0].apply(exports,arguments)\n},{\"dup\":3}],5:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\nvar SlowBuffer = buffer.SlowBuffer;\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\nexports.alloc = function alloc(size, fill, encoding) {\n  if (typeof Buffer.alloc === 'function') {\n    return Buffer.alloc(size, fill, encoding);\n  }\n  if (typeof encoding === 'number') {\n    throw new TypeError('encoding must not be number');\n  }\n  if (typeof size !== 'number') {\n    throw new TypeError('size must be a number');\n  }\n  if (size > MAX_LEN) {\n    throw new RangeError('size is too large');\n  }\n  var enc = encoding;\n  var _fill = fill;\n  if (_fill === undefined) {\n    enc = undefined;\n    _fill = 0;\n  }\n  var buf = new Buffer(size);\n  if (typeof _fill === 'string') {\n    var fillBuf = new Buffer(_fill, enc);\n    var flen = fillBuf.length;\n    var i = -1;\n    while (++i < size) {\n      buf[i] = fillBuf[i % flen];\n    }\n  } else {\n    buf.fill(_fill);\n  }\n  return buf;\n}\nexports.allocUnsafe = function allocUnsafe(size) {\n  if (typeof Buffer.allocUnsafe === 'function') {\n    return Buffer.allocUnsafe(size);\n  }\n  if (typeof size !== 'number') {\n    throw new TypeError('size must be a number');\n  }\n  if (size > MAX_LEN) {\n    throw new RangeError('size is too large');\n  }\n  return new Buffer(size);\n}\nexports.from = function from(value, encodingOrOffset, length) {\n  if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\n    return Buffer.from(value, encodingOrOffset, length);\n  }\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number');\n  }\n  if (typeof value === 'string') {\n    return new Buffer(value, encodingOrOffset);\n  }\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    var offset = encodingOrOffset;\n    if (arguments.length === 1) {\n      return new Buffer(value);\n    }\n    if (typeof offset === 'undefined') {\n      offset = 0;\n    }\n    var len = length;\n    if (typeof len === 'undefined') {\n      len = value.byteLength - offset;\n    }\n    if (offset >= value.byteLength) {\n      throw new RangeError('\\'offset\\' is out of bounds');\n    }\n    if (len > value.byteLength - offset) {\n      throw new RangeError('\\'length\\' is out of bounds');\n    }\n    return new Buffer(value.slice(offset, offset + len));\n  }\n  if (Buffer.isBuffer(value)) {\n    var out = new Buffer(value.length);\n    value.copy(out, 0, 0, value.length);\n    return out;\n  }\n  if (value) {\n    if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\n      return new Buffer(value);\n    }\n    if (value.type === 'Buffer' && Array.isArray(value.data)) {\n      return new Buffer(value.data);\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\n}\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n  if (typeof Buffer.allocUnsafeSlow === 'function') {\n    return Buffer.allocUnsafeSlow(size);\n  }\n  if (typeof size !== 'number') {\n    throw new TypeError('size must be a number');\n  }\n  if (size >= MAX_LEN) {\n    throw new RangeError('size is too large');\n  }\n  return new SlowBuffer(size);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"buffer\":6}],6:[function(require,module,exports){\n(function (global){\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\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"base64-js\":2,\"ieee754\":10,\"isarray\":7}],7:[function(require,module,exports){\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n},{}],8:[function(require,module,exports){\n(function (Buffer){\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\n}).call(this,{\"isBuffer\":require(\"../../is-buffer/index.js\")})\n},{\"../../is-buffer/index.js\":12}],9:[function(require,module,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\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\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.\nEventEmitter.defaultMaxListeners = 10;\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(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n\n},{}],10:[function(require,module,exports){\nexports.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\n},{}],11:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    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\n},{}],12:[function(require,module,exports){\n/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n},{}],13:[function(require,module,exports){\n(function (process){\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;\n} else {\n  module.exports = process.nextTick;\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}).call(this,require('_process'))\n},{\"_process\":14}],14:[function(require,module,exports){\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\n(function () {\n    try {\n        cachedSetTimeout = setTimeout;\n    } catch (e) {\n        cachedSetTimeout = function () {\n            throw new Error('setTimeout is not defined');\n        }\n    }\n    try {\n        cachedClearTimeout = clearTimeout;\n    } catch (e) {\n        cachedClearTimeout = function () {\n            throw new Error('clearTimeout is not defined');\n        }\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\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    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;\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\n},{}],15:[function(require,module,exports){\n(function (Buffer){\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  // character classes and tokens\n  var whitespace = '\\r\\n\\t '\n\n  // this really needs to be replaced with character classes.\n  // XML allows all manner of ridiculous numbers and digits.\n  var number = '0124356789'\n  var letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n\n  // (Letter | \"_\" | \":\")\n  var quote = '\\'\"'\n  var attribEnd = whitespace + '>'\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  // turn all the string character sets into character class objects.\n  whitespace = charClass(whitespace)\n  number = charClass(number)\n  letter = charClass(letter)\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  quote = charClass(quote)\n  attribEnd = charClass(attribEnd)\n\n  function charClass (str) {\n    return str.split('').reduce(function (s, c) {\n      s[c] = true\n      return s\n    }, {})\n  }\n\n  function isRegExp (c) {\n    return Object.prototype.toString.call(c) === '[object RegExp]'\n  }\n\n  function is (charclass, c) {\n    return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]\n  }\n\n  function not (charclass, c) {\n    return !is(charclass, 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++, // &amp 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=\"&quot;\"\n    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\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 (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 (not(whitespace, 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      if (!c) {\n        break\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      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 (not(whitespace, 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 (is(whitespace, c)) {\n            // wait for it...\n          } else if (is(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 (is(quote, 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 (is(quote, 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 (is(quote, 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 (is(whitespace, 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 && is(whitespace, 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 (is(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 (not(whitespace, 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 (is(whitespace, c)) {\n            continue\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (is(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 (is(whitespace, c)) {\n            parser.state = S.ATTRIB_NAME_SAW_WHITE\n          } else if (is(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 (is(whitespace, 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 (is(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 (is(whitespace, c)) {\n            continue\n          } else if (is(quote, 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 (is(whitespace, 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 (is(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 (not(attribEnd, 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 (is(whitespace, c)) {\n              continue\n            } else if (not(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 (is(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 (not(whitespace, 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 (is(whitespace, 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 (is(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  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      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\n}).call(this,require(\"buffer\").Buffer)\n},{\"buffer\":6,\"stream\":16,\"string_decoder\":29}],16:[function(require,module,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\n},{\"events\":9,\"inherits\":11,\"readable-stream/duplex.js\":18,\"readable-stream/passthrough.js\":25,\"readable-stream/readable.js\":26,\"readable-stream/transform.js\":27,\"readable-stream/writable.js\":28}],17:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],18:[function(require,module,exports){\nmodule.exports = require(\"./lib/_stream_duplex.js\")\n\n},{\"./lib/_stream_duplex.js\":19}],19:[function(require,module,exports){\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 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 processNextTick = require('process-nextick-args');\n/*</replacement>*/\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\nvar keys = objectKeys(Writable.prototype);\nfor (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\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\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  processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nfunction forEach(xs, f) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    f(xs[i], i);\n  }\n}\n},{\"./_stream_readable\":21,\"./_stream_writable\":23,\"core-util-is\":8,\"inherits\":11,\"process-nextick-args\":13}],20:[function(require,module,exports){\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};\n},{\"./_stream_transform\":22,\"core-util-is\":8,\"inherits\":11}],21:[function(require,module,exports){\n(function (process){\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar isArray = require('isarray');\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;\n(function () {\n  try {\n    Stream = require('st' + 'ream');\n  } catch (_) {} finally {\n    if (!Stream) Stream = require('events').EventEmitter;\n  }\n})();\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\n/*<replacement>*/\nvar bufferShim = require('buffer-shims');\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 StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction prependListener(emitter, event, fn) {\n  if (typeof emitter.prependListener === 'function') {\n    return emitter.prependListener(event, fn);\n  } else {\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}\n\nvar Duplex;\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\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 (stream instanceof Duplex) 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 defaultHwm = this.objectMode ? 16 : 16 * 1024;\n  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = ~ ~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 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  // 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  // 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  // when piping, we only care about 'readable' events that happen\n  // after read()ing all the bytes and not getting any pushback.\n  this.ranOut = false;\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\nvar Duplex;\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 && typeof options.read === 'function') this._read = options.read;\n\n  Stream.call(this);\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\n  if (!state.objectMode && typeof chunk === 'string') {\n    encoding = encoding || state.defaultEncoding;\n    if (encoding !== state.encoding) {\n      chunk = bufferShim.from(chunk, encoding);\n      encoding = '';\n    }\n  }\n\n  return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  var state = this._readableState;\n  return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n  var er = chunkInvalid(state, chunk);\n  if (er) {\n    stream.emit('error', er);\n  } else if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else if (state.objectMode || chunk && chunk.length > 0) {\n    if (state.ended && !addToFront) {\n      var e = new Error('stream.push() after EOF');\n      stream.emit('error', e);\n    } else if (state.endEmitted && addToFront) {\n      var _e = new Error('stream.unshift() after end event');\n      stream.emit('error', _e);\n    } else {\n      var skipAdd;\n      if (state.decoder && !addToFront && !encoding) {\n        chunk = state.decoder.write(chunk);\n        skipAdd = !state.objectMode && chunk.length === 0;\n      }\n\n      if (!addToFront) state.reading = false;\n\n      // Don't add to the buffer if we've decoded to an empty string chunk and\n      // we're not in object mode\n      if (!skipAdd) {\n        // if we want the data now, just emit it.\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      }\n\n      maybeReadMore(stream, state);\n    }\n  } else if (!addToFront) {\n    state.reading = false;\n  }\n\n  return needMoreData(state);\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\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 chunkInvalid(state, chunk) {\n  var er = null;\n  if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\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) processNextTick(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    processNextTick(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('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 : cleanup;\n  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable) {\n    debug('onunpipe');\n    if (readable === src) {\n      cleanup();\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', cleanup);\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\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);\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);\n    }return this;\n  }\n\n  // try to find the right one.\n  var i = indexOf(state.pipes, dest);\n  if (i === -1) return this;\n\n  state.pipes.splice(i, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this);\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        processNextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this, state);\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    processNextTick(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 state = this._readableState;\n  var paused = false;\n\n  var self = this;\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) self.push(chunk);\n    }\n\n    self.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 = self.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  var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n  forEach(events, function (ev) {\n    stream.on(ev, self.emit.bind(self, ev));\n  });\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  self._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return self;\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 = bufferShim.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    processNextTick(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 forEach(xs, f) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    f(xs[i], i);\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}\n}).call(this,require('_process'))\n},{\"./_stream_duplex\":19,\"./internal/streams/BufferList\":24,\"_process\":14,\"buffer\":6,\"buffer-shims\":5,\"core-util-is\":8,\"events\":9,\"inherits\":11,\"isarray\":17,\"process-nextick-args\":13,\"string_decoder/\":29,\"util\":3}],22:[function(require,module,exports){\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 TransformState(stream) {\n  this.afterTransform = function (er, data) {\n    return afterTransform(stream, er, data);\n  };\n\n  this.needTransform = false;\n  this.transforming = false;\n  this.writecb = null;\n  this.writechunk = null;\n  this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n  var ts = stream._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data !== null && data !== undefined) stream.push(data);\n\n  cb(er);\n\n  var rs = stream._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    stream._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 = new TransformState(this);\n\n  // when the writable side finishes, then flush out anything remaining.\n  var stream = this;\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  this.once('prefinish', function () {\n    if (typeof this._flush === 'function') this._flush(function (er) {\n      done(stream, er);\n    });else done(stream);\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('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\nfunction done(stream, er) {\n  if (er) return stream.emit('error', er);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  var ws = stream._writableState;\n  var ts = stream._transformState;\n\n  if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}\n},{\"./_stream_duplex\":19,\"core-util-is\":8,\"inherits\":11}],23:[function(require,module,exports){\n(function (process){\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\nmodule.exports = Writable;\n\n/*<replacement>*/\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\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;\n(function () {\n  try {\n    Stream = require('st' + 'ream');\n  } catch (_) {} finally {\n    if (!Stream) Stream = require('events').EventEmitter;\n  }\n})();\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\n/*<replacement>*/\nvar bufferShim = require('buffer-shims');\n/*</replacement>*/\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\nvar Duplex;\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\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 (stream instanceof Duplex) 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 defaultHwm = this.objectMode ? 16 : 16 * 1024;\n  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = ~ ~this.highWaterMark;\n\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  // 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 writableStateGetBuffer() {\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.')\n    });\n  } catch (_) {}\n})();\n\nvar Duplex;\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, though they're not\n  // instanceof Writable, they're instanceof Readable.\n  if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\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\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  processNextTick(cb, er);\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n  // Always throw error if a null is written\n  // if we are not in object mode then throw\n  // if it is not a buffer, string, or undefined.\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (!Buffer.isBuffer(chunk) && 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    processNextTick(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\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (Buffer.isBuffer(chunk)) 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 (validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, 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 = bufferShim.from(chunk, encoding);\n  }\n  return chunk;\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, chunk, encoding, cb) {\n  chunk = decodeChunk(state, chunk, encoding);\n\n  if (Buffer.isBuffer(chunk)) encoding = 'buffer';\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 = new WriteReq(chunk, encoding, cb);\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  if (sync) processNextTick(cb, er);else cb(er);\n\n  stream._writableState.errorEmitted = true;\n  stream.emit('error', er);\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    while (entry) {\n      buffer[count] = entry;\n      entry = entry.next;\n      count += 1;\n    }\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  } 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      // 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.bufferedRequestCount = 0;\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('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}\n\nfunction prefinish(stream, state) {\n  if (!state.prefinished) {\n    state.prefinished = true;\n    stream.emit('prefinish');\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    if (state.pendingcb === 0) {\n      prefinish(stream, state);\n      state.finished = true;\n      stream.emit('finish');\n    } else {\n      prefinish(stream, state);\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) processNextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\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\n  this.finish = function (err) {\n    var entry = _this.entry;\n    _this.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 = _this;\n    } else {\n      state.corkedRequestsFree = _this;\n    }\n  };\n}\n}).call(this,require('_process'))\n},{\"./_stream_duplex\":19,\"_process\":14,\"buffer\":6,\"buffer-shims\":5,\"core-util-is\":8,\"events\":9,\"inherits\":11,\"process-nextick-args\":13,\"util-deprecate\":30}],24:[function(require,module,exports){\n'use strict';\n\nvar Buffer = require('buffer').Buffer;\n/*<replacement>*/\nvar bufferShim = require('buffer-shims');\n/*</replacement>*/\n\nmodule.exports = BufferList;\n\nfunction BufferList() {\n  this.head = null;\n  this.tail = null;\n  this.length = 0;\n}\n\nBufferList.prototype.push = function (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\nBufferList.prototype.unshift = function (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\nBufferList.prototype.shift = function () {\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\nBufferList.prototype.clear = function () {\n  this.head = this.tail = null;\n  this.length = 0;\n};\n\nBufferList.prototype.join = function (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\nBufferList.prototype.concat = function (n) {\n  if (this.length === 0) return bufferShim.alloc(0);\n  if (this.length === 1) return this.head.data;\n  var ret = bufferShim.allocUnsafe(n >>> 0);\n  var p = this.head;\n  var i = 0;\n  while (p) {\n    p.data.copy(ret, i);\n    i += p.data.length;\n    p = p.next;\n  }\n  return ret;\n};\n},{\"buffer\":6,\"buffer-shims\":5}],25:[function(require,module,exports){\nmodule.exports = require(\"./lib/_stream_passthrough.js\")\n\n},{\"./lib/_stream_passthrough.js\":20}],26:[function(require,module,exports){\n(function (process){\nvar Stream = (function (){\n  try {\n    return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify\n  } catch(_){}\n}());\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = 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\nif (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\n  module.exports = Stream;\n}\n\n}).call(this,require('_process'))\n},{\"./lib/_stream_duplex.js\":19,\"./lib/_stream_passthrough.js\":20,\"./lib/_stream_readable.js\":21,\"./lib/_stream_transform.js\":22,\"./lib/_stream_writable.js\":23,\"_process\":14}],27:[function(require,module,exports){\nmodule.exports = require(\"./lib/_stream_transform.js\")\n\n},{\"./lib/_stream_transform.js\":22}],28:[function(require,module,exports){\nmodule.exports = require(\"./lib/_stream_writable.js\")\n\n},{\"./lib/_stream_writable.js\":23}],29:[function(require,module,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\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n  || function(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': return true;\n         default: return false;\n       }\n     }\n\n\nfunction assertEncoding(encoding) {\n  if (encoding && !isBufferEncoding(encoding)) {\n    throw new Error('Unknown encoding: ' + encoding);\n  }\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. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n  assertEncoding(encoding);\n  switch (this.encoding) {\n    case 'utf8':\n      // CESU-8 represents each of Surrogate Pair by 3-bytes\n      this.surrogateSize = 3;\n      break;\n    case 'ucs2':\n    case 'utf16le':\n      // UTF-16 represents each of Surrogate Pair by 2-bytes\n      this.surrogateSize = 2;\n      this.detectIncompleteChar = utf16DetectIncompleteChar;\n      break;\n    case 'base64':\n      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n      this.surrogateSize = 3;\n      this.detectIncompleteChar = base64DetectIncompleteChar;\n      break;\n    default:\n      this.write = passThroughWrite;\n      return;\n  }\n\n  // Enough space to store all bytes of a single character. UTF-8 needs 4\n  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n  this.charBuffer = new Buffer(6);\n  // Number of bytes received for the current incomplete multi-byte character.\n  this.charReceived = 0;\n  // Number of bytes expected for the current incomplete multi-byte character.\n  this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n  var charStr = '';\n  // if our last write ended with an incomplete multibyte character\n  while (this.charLength) {\n    // determine how many remaining bytes this buffer has to offer for this char\n    var available = (buffer.length >= this.charLength - this.charReceived) ?\n        this.charLength - this.charReceived :\n        buffer.length;\n\n    // add the new bytes to the char buffer\n    buffer.copy(this.charBuffer, this.charReceived, 0, available);\n    this.charReceived += available;\n\n    if (this.charReceived < this.charLength) {\n      // still not enough chars in this buffer? wait for more ...\n      return '';\n    }\n\n    // remove bytes belonging to the current character from the buffer\n    buffer = buffer.slice(available, buffer.length);\n\n    // get the character that was split\n    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n    var charCode = charStr.charCodeAt(charStr.length - 1);\n    if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n      this.charLength += this.surrogateSize;\n      charStr = '';\n      continue;\n    }\n    this.charReceived = this.charLength = 0;\n\n    // if there are no more bytes in this buffer, just emit our char\n    if (buffer.length === 0) {\n      return charStr;\n    }\n    break;\n  }\n\n  // determine and set charLength / charReceived\n  this.detectIncompleteChar(buffer);\n\n  var end = buffer.length;\n  if (this.charLength) {\n    // buffer the incomplete character bytes we got\n    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n    end -= this.charReceived;\n  }\n\n  charStr += buffer.toString(this.encoding, 0, end);\n\n  var end = charStr.length - 1;\n  var charCode = charStr.charCodeAt(end);\n  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n  if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n    var size = this.surrogateSize;\n    this.charLength += size;\n    this.charReceived += size;\n    this.charBuffer.copy(this.charBuffer, size, 0, size);\n    buffer.copy(this.charBuffer, 0, 0, size);\n    return charStr.substring(0, end);\n  }\n\n  // or just emit the charStr\n  return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n  // determine how many bytes we have to check at the end of this buffer\n  var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n  // Figure out if one of the last i bytes of our buffer announces an\n  // incomplete char.\n  for (; i > 0; i--) {\n    var c = buffer[buffer.length - i];\n\n    // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n    // 110XXXXX\n    if (i == 1 && c >> 5 == 0x06) {\n      this.charLength = 2;\n      break;\n    }\n\n    // 1110XXXX\n    if (i <= 2 && c >> 4 == 0x0E) {\n      this.charLength = 3;\n      break;\n    }\n\n    // 11110XXX\n    if (i <= 3 && c >> 3 == 0x1E) {\n      this.charLength = 4;\n      break;\n    }\n  }\n  this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n  var res = '';\n  if (buffer && buffer.length)\n    res = this.write(buffer);\n\n  if (this.charReceived) {\n    var cr = this.charReceived;\n    var buf = this.charBuffer;\n    var enc = this.encoding;\n    res += buf.slice(0, cr).toString(enc);\n  }\n\n  return res;\n};\n\nfunction passThroughWrite(buffer) {\n  return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n  this.charReceived = buffer.length % 2;\n  this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n  this.charReceived = buffer.length % 3;\n  this.charLength = this.charReceived ? 3 : 0;\n}\n\n},{\"buffer\":6}],30:[function(require,module,exports){\n(function (global){\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\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],31:[function(require,module,exports){\nmodule.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}\n},{}],32:[function(require,module,exports){\n(function (process,global){\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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  // Allow for deprecating things in the process of starting up.\n  if (isUndefined(global.process)) {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  if (process.noDeprecation === true) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\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()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\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 isObject(re) && 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 isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (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 = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./support/isBuffer\":31,\"_process\":14,\"inherits\":11}],33:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Bible = exports.Bible = function () {\n    function Bible() {\n        _classCallCheck(this, Bible);\n\n        this.books = [];\n    }\n\n    _createClass(Bible, [{\n        key: \"addBook\",\n        value: function addBook(book) {\n            this.books.push(book);\n        }\n    }, {\n        key: \"haveBookName\",\n        value: function haveBookName(bookName) {\n            var filteredBooks = this.books.filter(function (b) {\n                return b._name === bookName;\n            });\n            return filteredBooks.length > 0;\n        }\n    }, {\n        key: \"getBookByName\",\n        value: function getBookByName(bookName) {\n            // TODO: need a way to filter by shortname, longname, etc. too...\n            var filteredBooks = this.books.filter(function (b) {\n                return b._name === bookName;\n            });\n            return filteredBooks.length ? filteredBooks[0] : null;\n        }\n    }, {\n        key: \"toJSON\",\n        value: function toJSON() {\n            return {\n                books: this.books.map(function (b) {\n                    return b.toJSON();\n                })\n            };\n        }\n    }]);\n\n    return Bible;\n}();\n\nvar BibleBook = exports.BibleBook = function () {\n    function BibleBook(name, shortName, longName) {\n        _classCallCheck(this, BibleBook);\n\n        this._name = name;\n        this._shortName = shortName;\n        this._longName = longName;\n        this.chapters = [];\n    }\n\n    _createClass(BibleBook, [{\n        key: \"addChapter\",\n        value: function addChapter(chapter) {\n            this.chapters.push(chapter);\n        }\n    }, {\n        key: \"haveChapterNumber\",\n        value: function haveChapterNumber(chapterNumber) {\n            return getChapterByNumber(chapterNumber) !== null;\n        }\n    }, {\n        key: \"getChapterByNumber\",\n        value: function getChapterByNumber(chapterNumber) {\n            var filteredChapters = this.chapters.filter(function (c) {\n                return c.number === chapterNumber;\n            });\n            return filteredChapters.length ? filteredChapters[0] : null;\n        }\n    }, {\n        key: \"toJSON\",\n        value: function toJSON() {\n            return {\n                name: this._name,\n                shortName: this._shortName,\n                longName: this._longName,\n                chapters: this.chapters.map(function (c) {\n                    return c.toJSON();\n                })\n            };\n        }\n    }, {\n        key: \"shortName\",\n        set: function set(name) {\n            this._shortName = name;\n        }\n    }, {\n        key: \"name\",\n        set: function set(name) {\n            this._name = name;\n        }\n    }, {\n        key: \"longName\",\n        set: function set(name) {\n            this._longName = name;\n        }\n    }]);\n\n    return BibleBook;\n}();\n\nvar BibleChapter = exports.BibleChapter = function () {\n    function BibleChapter(book, chapterNumber) {\n        _classCallCheck(this, BibleChapter);\n\n        this.book = book;\n        this.number = chapterNumber;\n        this.verses = [];\n    }\n\n    _createClass(BibleChapter, [{\n        key: \"addVerse\",\n        value: function addVerse(verse) {\n            this.verses.push(verse);\n        }\n    }, {\n        key: \"haveVerseNumber\",\n        value: function haveVerseNumber(verseNumber) {\n            return this.getVerseByNumber(verseNumber) !== null;\n        }\n    }, {\n        key: \"getVerseByNumber\",\n        value: function getVerseByNumber(verseNumber) {\n            var filteredVerses = this.verses.filter(function (v) {\n                return v.number === verseName;\n            });\n            return filteredVerse.length ? filteredVerses[0] : null;\n        }\n    }, {\n        key: \"toJSON\",\n        value: function toJSON() {\n            return {\n                number: this.number,\n                verses: this.verses.map(function (v) {\n                    return v.toJSON2();\n                })\n            };\n        }\n    }]);\n\n    return BibleChapter;\n}();\n\nvar BibleVerse = exports.BibleVerse = function () {\n\n    /* Need to strive for this format:\n     *\n     * [{\"bookname\":\"John\",\"chapter\":\"3\",\"verse\":\"16\",\"text\":\"For this is the\n     * way God loved the world: He gave his one and only Son, so that everyone\n     * who believes in him will not perish but have eternal life.\"}]\n     *\n     * because that is the format that the NET bible is using here:\n     *\n     * http://labs.bible.org/api/?passage=John%203:16&type=json\n     */\n    function BibleVerse(book, chapter, verseNumber, text) {\n        _classCallCheck(this, BibleVerse);\n\n        this.book = book;\n        this.chapter = chapter;\n        this.number = verseNumber;\n        this.text = text;\n    }\n\n    _createClass(BibleVerse, [{\n        key: \"toJSON\",\n        value: function toJSON() {\n            return {\n                bookname: this.book._shortName,\n                chapter: this.chapter.number,\n                verse: this.number,\n                text: this.text\n            };\n        }\n    }, {\n        key: \"toJSON2\",\n        value: function toJSON2() {\n            return {\n                verse: this.number,\n                text: this.text\n            };\n        }\n    }]);\n\n    return BibleVerse;\n}();\n\n},{}],34:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.parseUSFXFile = parseUSFXFile;\n\nvar _fs = require('fs');\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nvar _util = require('util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _sax = require('sax');\n\nvar _sax2 = _interopRequireDefault(_sax);\n\nvar _bible = require('./bible');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parseUSFXFile(xmlPath) {\n    /* Parses a USFX xml file and returns a Bible object. */\n    var strict = true,\n        parser = _sax2.default.parser(strict);\n\n    var bible = new _bible.Bible();\n    var currentBook = null;\n    var verses = [];\n\n    var setLevel1 = false;\n    var setLevel2 = false;\n\n    parser.onerror = function (e) {\n        console.log(chalk.red('onerror: ' + e));\n    };\n    parser.ontext = function (text) {\n        if (!setLevel1 && !setLevel2) {\n            if (setLevel1) {\n                currentBook.longName = text;\n                setLevel1 = false;\n            } else if (setLevel2) {\n                currentBook.name = text;\n                setLevel2 = false;\n            }\n        } else {\n            var v = verses[verses.length - 1];\n            if (v && !v.text) {\n                v.text = text.trim();\n            }\n        }\n    };\n    parser.onopentag = function (tag) {\n        var name = tag.name;\n        switch (name) {\n            case 'book':\n                currentBook = new _bible.BibleBook(tag.attributes.id);\n                bible.addBook(currentBook);\n                break;\n            case 'toc':\n                switch (tag.attributes.level) {\n                    case '1':\n                        setLevel1 = true;\n                        break;\n                    case '2':\n                        setLevel2 = true;\n                        break;\n                    default:\n                        break;\n                }\n                break;\n            case 'v':\n                if (tag.attributes.bcv) {\n                    var ref = tag.attributes.bcv.split('.');\n                    var _name = ref[0];\n                    var cN = parseInt(ref[1], 10); // chapter number\n                    var vN = parseInt(ref[2], 10); // verse number\n\n                    var book = bible.getBookByName(_name);\n                    if (!book) {\n                        // TODO: need short name, long name, etc.\n                        book = new _bible.BibleBook(_name, _name, _name);\n                        currentBook = book;\n                        bible.addBook(book);\n                    }\n                    var chapter = book.getChapterByNumber(cN);\n                    if (!chapter) {\n                        chapter = new _bible.BibleChapter(book, cN);\n                        currentBook.addChapter(chapter);\n                    }\n                    var v = new _bible.BibleVerse(book, chapter, vN);\n                    chapter.addVerse(v);\n                    verses.push(v); // XXX Need to get away from this.\n                }\n                break;\n            default:\n                // do nothing...\n                // console.log(chalk.red(`${name} unrecognized!`));\n                break;\n        };\n    };\n    var xmldata = _fs2.default.readFileSync(xmlPath);\n    parser.write(xmldata);\n    // fs.writeFile('verses.json', JSON.stringify(bible));\n    return bible;\n}\n\n},{\"./bible\":33,\"fs\":4,\"sax\":15,\"util\":32}]},{},[1]);\n"]}