{"version":3,"file":"index.mjs","sources":["../../../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../../../node_modules/rollup-plugin-node-polyfills/polyfills/process-es6.js","../../../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../src/browser-safe-randombytes.ts","../src/StreamBinary.ts","../src/util.ts","../src/crypto.ts"],"sourcesContent":["export default (typeof global !== \"undefined\" ? global :\n  typeof self !== \"undefined\" ? self :\n  typeof window !== \"undefined\" ? window : {});","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n    cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n    cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\nfunction nextTick(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// 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};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n    throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n    throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {};\nvar performanceNow =\n  performance.now        ||\n  performance.mozNow     ||\n  performance.msNow      ||\n  performance.oNow       ||\n  performance.webkitNow  ||\n  function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n  var clocktime = performanceNow.call(performance)*1e-3;\n  var seconds = Math.floor(clocktime);\n  var nanoseconds = Math.floor((clocktime%1)*1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds<0) {\n      seconds--;\n      nanoseconds += 1e9;\n    }\n  }\n  return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1000;\n}\n\nvar browser$1 = {\n  nextTick: nextTick,\n  title: title,\n  browser: browser,\n  env: env,\n  argv: argv,\n  version: version,\n  versions: versions,\n  on: on,\n  addListener: addListener,\n  once: once,\n  off: off,\n  removeListener: removeListener,\n  removeAllListeners: removeAllListeners,\n  emit: emit,\n  binding: binding,\n  cwd: cwd,\n  chdir: chdir,\n  umask: umask,\n  hrtime: hrtime,\n  platform: platform,\n  release: release,\n  config: config,\n  uptime: uptime\n};\n\nexport default browser$1;\nexport { addListener, argv, binding, browser, chdir, config, cwd, emit, env, hrtime, nextTick, off, on, once, platform, release, removeAllListeners, removeListener, title, umask, uptime, version, versions };\n","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n  inited = true;\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\nfunction toByteArray (b64) {\n  if (!inited) {\n    init();\n  }\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  if (!inited) {\n    init();\n  }\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\nfunction read (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\nfunction write (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\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\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\nvar 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  : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\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}\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 (internalIsBuffer(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}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!internalIsBuffer(a) || !internalIsBuffer(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 (!internalIsBuffer(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 (internalIsBuffer(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 (!internalIsBuffer(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 = 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 (!internalIsBuffer(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 (internalIsBuffer(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 fromByteArray(buf)\n  } else {\n    return 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 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 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 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 read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!internalIsBuffer(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);\n  }\n  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);\n  }\n  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 = internalIsBuffer(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\n\nfunction base64ToBytes (str) {\n  return 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\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n  return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (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' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","const isNodeJS = () => typeof process?.versions?.node !== 'undefined';\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nconst MAX_BYTES = 65536;\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nconst MAX_UINT32 = 4294967295;\n\nexport const requireRandomBytes = (size: number) => {\n  if (isNodeJS()) {\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const crypto = require('crypto');\n    return crypto.randomBytes(size);\n  }\n  return browserifiedRandomBytes(size);\n};\n\nconst browserifiedRandomBytes = (size: number): Buffer => {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes');\n\n  const bytes = Buffer.allocUnsafe(size);\n\n  if (size > 0) {\n    // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) {\n      // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (let generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n      }\n    } else {\n      crypto.getRandomValues(bytes);\n    }\n  }\n\n  return bytes;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nclass StreamBinary {\n  private readonly Bases: any;\n\n  public constructor(sequence: Buffer, bits: number = sequence instanceof Buffer ? 8 : 1) {\n    const n = sequence.length;\n\n    let binary: any = '';\n    let b: any;\n    let i: any;\n\n    for (i = 0; i < n; i++) {\n      b = StreamBinary.get(sequence, i).toString(2);\n      while (b.length < bits) b = `0${b}`;\n      binary = String(binary) + String(b);\n    }\n\n    binary = binary.split('').map((bin: string) => parseInt(bin, 2));\n\n    this.Bases = { '2': binary };\n  }\n\n  public generate(radix: number, base = 2, inner = false): number | any {\n    const k: number = Math.ceil(Math.log(radix) / Math.log(base));\n    const powed: number = Math.pow(base, k) - radix;\n\n    let value: any = radix;\n    let chunk: number[];\n\n    while (value >= radix) {\n      chunk = this.shift(base, k);\n      if (!chunk) return inner ? radix : null;\n\n      value = StreamBinary.evaluate(chunk, base);\n\n      if (value >= radix) {\n        if (powed === 1) continue;\n        this.push(powed, value - radix);\n        value = this.generate(radix, powed, true);\n      }\n    }\n\n    return value;\n  }\n\n  private push(base: number, value: number) {\n    this.Bases[base] = this.Bases[base] || [];\n    this.Bases[base].push(value);\n  }\n\n  private shift(base: number, k: number) {\n    const list = this.Bases[base];\n    if (!list || list.length < k) return null;\n\n    return list.splice(0, k);\n  }\n\n  private static get(sequence: Buffer, offset: number) {\n    return sequence.readUInt8 ? sequence.readUInt8(offset) : sequence[offset];\n  }\n\n  private static evaluate(chunk: number[], base: number) {\n    let sum = 0;\n    let i = chunk.length;\n\n    while (i--) sum += chunk[i] * Math.pow(base, chunk.length - (i + 1));\n\n    return sum;\n  }\n}\n\nexport default StreamBinary;\n","/** Possible options to use as the radix */\nexport enum Radix {\n  'Base16' = 16,\n  'Base32' = 32,\n  'Base36' = 36,\n  'Base58' = 58,\n  'Base64' = 64\n}\n\nexport class CryptoError extends Error {\n  public constructor(message: string) {\n    super(message);\n    this.message = message;\n    this.name = 'CryptoError';\n    this.stack = '';\n  }\n}\n\nexport const defaultBits = 36;\nexport const defaultRadix = Radix.Base64;\nexport const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n","import { requireRandomBytes } from './browser-safe-randombytes';\nimport StreamBinary from './StreamBinary';\nimport { characters, CryptoError, defaultBits, defaultRadix, Radix } from './util';\n\n/**\n * Generates a cryptographic string given an amount of bits and a base radix\n *\n * @param bits The amount of bits to generate\n * @param radix The radix to generate for\n * @returns The cryptographic string\n * @example\n * ```ts\n * crypto(160, 64)\n * ```\n */\nexport const crypto = (bits: number = defaultBits, radix: Radix = defaultRadix): string => {\n  try {\n    if (typeof bits !== 'number') throw new Error('bits_not_number');\n    if (typeof radix !== 'number') throw new Error('radix_not_string');\n\n    const entropy = requireRandomBytes(bits);\n    const length = Math.ceil((bits * Math.log(2)) / Math.log(radix));\n    const stream = new StreamBinary(entropy);\n\n    let result = '';\n\n    while (result.length < length) {\n      result += characters[stream.generate(radix)];\n    }\n\n    return result;\n  } catch (err) {\n    if (/(?:bits_not_number)/i.test((err as Error).message)) throw new CryptoError('Your bits value is not of type number');\n    if (/(?:radix_not_string)/i.test((err as Error).message))\n      throw new CryptoError('Your radix is not of type string, please utilize the build in Radix provider');\n\n    throw new CryptoError(`Unhandled Error, please contact the developer of the package. Message: ${(err as Error).message}`);\n  }\n};\n\nexport default crypto;\n"],"names":["global","self","window","defaultSetTimout","Error","defaultClearTimeout","cachedSetTimeout","cachedClearTimeout","runTimeout","fun","setTimeout","e","call","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","prototype","apply","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","performance","performanceNow","now","mozNow","msNow","oNow","webkitNow","Date","getTime","startTime","nextTick","args","Array","arguments","i","push","title","browser","env","argv","version","versions","binding","name","cwd","chdir","dir","umask","hrtime","previousTimestamp","clocktime","seconds","Math","floor","nanoseconds","platform","release","config","uptime","lookup","revLookup","Arr","Uint8Array","inited","init","code","charCodeAt","encodeChunk","uint8","start","end","tmp","num","output","join","fromByteArray","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","pow","write","value","c","rt","abs","isNaN","log","LN2","toString","isArray","arr","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","slice","fromString","obj","internalIsBuffer","checked","copy","val","type","data","fromObject","assertSize","size","b","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","String","buf","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","poolSize","_augment","alloc","fill","allocUnsafeSlow","isBuffer","isFastBuffer","readFloatLE","isSlowBuffer","compare","a","x","y","list","pos","swap16","swap32","swap64","equals","inspect","match","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","leadSurrogate","b64","l","placeHolders","L","toByteArray","trim","replace","stringtrim","base64clean","src","dst","constructor","requireRandomBytes","process","node","require","randomBytes","browserifiedRandomBytes","generated","crypto","getRandomValues","StreamBinary","sequence","bits","Object","binary","get","split","map","bin","Bases","generate","radix","base","inner","k","ceil","powed","chunk","shift","evaluate","splice","sum","Radix","CryptoError","message","super","stack","defaultBits","defaultRadix","Base64","characters","entropy","stream","result","err","test"],"mappings":"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"}