[
  {
    "path": ".gitignore",
    "content": "src/node_modules\r\nsrc/pathToYourJson.json\r\nsrc/package-lock.json\r\n.env\r\nsrc/.DS_Store\r\nsrc/.env\r\nsrcLogOnly/config.codekit3\r\n.DS_Store\r\n*.json\r\nsrcLogOnly/node_modules\r\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Google Cloud Speech Node with Socket Playground\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn easy-to-set-up playground for cross device real-time Google Speech Recognition with a Node server and socket.io. *Phew.*\n\n![Yo this is a test](example.gif \"example gif\")\n\n## Run Local\n1. get a free test key from [Google](https://cloud.google.com/speech/docs/quickstart )\n2. place it into the src folder and update the path in the `.env` file\n3. open the terminal and go to the `src` folder\n4. run `npm install`\n5. run `node app.js` or with nodemon: `nodemon app`\n6. go to `http://127.0.0.1:1337/`\n\n## Run on Server\nSame as **run local** `1-4`.\n\n5. config the `.env` Port for a port that you've opened on the server. I'm using 1337 here, too.\n6. go to `your server adress`\n\nI recommend using [pm2](http://pm2.keymetrics.io/) or something similar, to keep the process running even when closing the terminal connection.\n\n## Examples\n- Speech Recognition controlled Face Filter: [Christmas Card](https://xmas.humanfoundry.com/)\n- Face Filter / Analyzer with Speech Recognition: [I Love You Trainer](http://iloveyoutrainer.com)\n\n## Config\n\nIt's possible to set a recognition context / add misunderstood words for better recognition results in the app.js `request` params. For more details on the configuration, go [here](https://cloud.google.com/speech-to-text/docs/reference/rest/v1/RecognitionConfig#SpeechContext).\n\nFor other languages than english, look up your [language code](https://cloud.google.com/speech-to-text/docs/languages).\n\n## How Does the Client Process the Stream?\n\nGoogle Cloud sends intermittent responses to the uploaded audio stream. Each response\nfrom Google Cloud contains the current estimation of the full sentence for the streamed audio.\n\nWhen Google Cloud senses that the audio has reached an end of sentence, it will issue a response with an `isFinal` flag set to true. Once this flag is issued, the client will finalize the sentence and write it to the document.\n\nThis process is repeated until the user ends the recording.\n\n## Interim Natural Language Processing\n\nThe client application highlights different parts of speech, such as nouns and verbs, by using\n[this natural language processing library](https://github.com/spencermountain/compromise).\n\n## Socket Connection\n\nThe client communicates with the server using [Socket.io](https://socket.io).\n\n## Troubleshooting\n- If you have delays in calls, check if `IPV6` is disabled on your server\n\n# Super Reduced Version for Devs\n\nThere is now a super reduced log only verison. It show's only two buttons, logs the results to the console and has no nlp. Use this if you want to implement it somewhere else.\n\nMade by [Vinzenz Aubry](https://twitter.com/vinberto)\n"
  },
  {
    "path": "src/app.js",
    "content": "'use strict';\n\n//  Google Cloud Speech Playground with node.js and socket.io\n//  Created by Vinzenz Aubry for sansho 24.01.17\n//  Feel free to improve!\n//\tContact: v@vinzenzaubry.com\n\nconst express = require('express'); // const bodyParser = require('body-parser'); // const path = require('path');\nconst environmentVars = require('dotenv').config();\n\n// Google Cloud\nconst speech = require('@google-cloud/speech');\nconst speechClient = new speech.SpeechClient(); // Creates a client\n\nconst app = express();\nconst port = process.env.PORT || 1337;\nconst server = require('http').createServer(app);\n\nconst io = require('socket.io')(server);\n\napp.use('/assets', express.static(__dirname + '/public'));\napp.use('/session/assets', express.static(__dirname + '/public'));\napp.set('view engine', 'ejs');\n\n// =========================== ROUTERS ================================ //\n\napp.get('/', function (req, res) {\n  res.render('index', {});\n});\n\napp.use('/', function (req, res, next) {\n  next(); // console.log(`Request Url: ${req.url}`);\n});\n\n// =========================== SOCKET.IO ================================ //\n\nio.on('connection', function (client) {\n  console.log('Client Connected to server');\n  let recognizeStream = null;\n\n  client.on('join', function () {\n    client.emit('messages', 'Socket Connected to Server');\n  });\n\n  client.on('messages', function (data) {\n    client.emit('broad', data);\n  });\n\n  client.on('startGoogleCloudStream', function (data) {\n    startRecognitionStream(this, data);\n  });\n\n  client.on('endGoogleCloudStream', function () {\n    stopRecognitionStream();\n  });\n\n  client.on('binaryData', function (data) {\n    // console.log(data); //log binary data\n    if (recognizeStream !== null) {\n      recognizeStream.write(data);\n    }\n  });\n\n  function startRecognitionStream(client) {\n    recognizeStream = speechClient\n      .streamingRecognize(request)\n      .on('error', console.error)\n      .on('data', (data) => {\n        process.stdout.write(\n          data.results[0] && data.results[0].alternatives[0]\n            ? `Transcription: ${data.results[0].alternatives[0].transcript}\\n`\n            : '\\n\\nReached transcription time limit, press Ctrl+C\\n'\n        );\n        client.emit('speechData', data);\n\n        // if end of utterance, let's restart stream\n        // this is a small hack. After 65 seconds of silence, the stream will still throw an error for speech length limit\n        if (data.results[0] && data.results[0].isFinal) {\n          stopRecognitionStream();\n          startRecognitionStream(client);\n          // console.log('restarted stream serverside');\n        }\n      });\n  }\n\n  function stopRecognitionStream() {\n    if (recognizeStream) {\n      recognizeStream.end();\n    }\n    recognizeStream = null;\n  }\n});\n\n// =========================== GOOGLE CLOUD SETTINGS ================================ //\n\n// The encoding of the audio file, e.g. 'LINEAR16'\n// The sample rate of the audio file in hertz, e.g. 16000\n// The BCP-47 language code to use, e.g. 'en-US'\nconst encoding = 'LINEAR16';\nconst sampleRateHertz = 16000;\nconst languageCode = 'en-US'; //en-US\n\nconst request = {\n  config: {\n    encoding: encoding,\n    sampleRateHertz: sampleRateHertz,\n    languageCode: languageCode,\n    profanityFilter: false,\n    enableWordTimeOffsets: true,\n    // speechContexts: [{\n    //     phrases: [\"hoful\",\"shwazil\"]\n    //    }] // add your own speech context for better recognition\n  },\n  interimResults: true, // If you want interim results, set this to true\n};\n\n// =========================== START SERVER ================================ //\n\nserver.listen(port, '127.0.0.1', function () {\n  //http listen, to make socket work\n  // app.address = \"127.0.0.1\";\n  console.log('Server started on port:' + port);\n});\n"
  },
  {
    "path": "src/public/css/main.css",
    "content": "body {\n    font-family: sans-serif;\n    background-color: rgb(189, 189, 189);\n}\n\np {\n    color: black;\n}\n\na {\n    font-weight: bold;\n    text-decoration: none;\n    color: #2a2a2a;\n}\n\na:visited {\n    font-weight: normal;\n}\n\na:hover {\n    text-decoration: underline;\n}\n\naudio {\n    width: 300px;\n    height: auto;\n    backgorund-color: red;\n}\n\n.wrapper {\n    width: 90vw;\n    margin: 0 auto;\n}\n\n.greyText {\n    opacity: 0.4;\n}\n\n@-webkit-keyframes redGlow {\n  from {\n    background-color: #8c190a;\n    -webkit-box-shadow: 0 0 9px #9c291a;\n  }\n  50% {\n    background-color: #9c291a;\n    -webkit-box-shadow: 0 0 18px #bdb5b4;\n  }\n  to {\n    background-color: #8c190a;\n    -webkit-box-shadow: 0 0 9px #9c291a;\n  }\n}\n#recordingStatus {\n  display: inline-block;\n  width: 18px;\n  height: 18px;\n  border-radius: 20px;\n  visibility: hidden;\n  -webkit-animation-name: redGlow;\n  -webkit-animation-duration: 2s;\n  -webkit-animation-iteration-count: infinite;\n}\n\n#ResultText {\n    width: 80vw;\n}\n\n#ResultText span {\n    display: inline-block;\n    margin-top: 10px;\n}\n\n#sessionSpeechData {\n    width: 80vw;\n}\n\n#sessionSpeechData span {\n    display: inline-block;\n    margin-top: 10px;\n}\n\n.nl-Adjective {\n    background-color: #1ada47;\n    padding: 3px;\n    border-radius: 5px;\n}\n\n.nl-Noun {\n    background-color: #151ffa;\n    padding: 3px;\n    border-radius: 5px;\n    color: white;\n}\n\n.nl-Verb {\n    background-color: #ff1616;\n    padding: 3px;\n    border-radius: 5px;\n}\n\n\n.hiddenForms {\n    opacity: 0.2;\n}\n\nh1 {\n    color: black;\n}\n\n\n/* ==========================================================================\n   Media Queries\n   ========================================================================== */\n\n/*==========  Non-Mobile First Method  ==========*/\n\n/*Above */\n\n@media only screen and (min-width: 1201px) {}\n\n/* Large Devices, Wide Screens */\n\n@media only screen and (max-width: 1200px) {}\n\n/* Medium Devices, Desktops */\n\n@media only screen and (max-width: 992px) {}\n\n/* Small Devices, Tablets */\n\n@media only screen and (max-width: 768px) {}\n\n/* Extra Small Devices, Phones */\n\n@media only screen and (max-width: 480px) {}\n\n/* Custom, iPhone Retina */\n\n@media only screen and (max-width: 320px) {}\n\n@media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {}\n\n/* ==========================================================================\n   Helper classes\n   ========================================================================== */\n\n.hidden {\n    display: none !important;\n    visibility: hidden;\n}\n\n.visuallyhidden {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto;\n}\n\n.invisible {\n    visibility: hidden;\n}\n\n.clearfix:before, .clearfix:after {\n    content: \" \";\n    display: table;\n}\n\n.clearfix:after {\n    clear: both;\n}\n\n.clearfix {\n    *zoom: 1;\n}\n\n/* ==========================================================================\n   Print styles\n   ========================================================================== */\n\n@media print {\n    *, *:before, *:after {\n        background: transparent !important;\n        color: #000 !important;\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n    a, a:visited {\n        text-decoration: underline;\n    }\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n    a[href^=\"#\"]:after, a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n    pre, blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n    thead {\n        display: table-header-group;\n    }\n    tr, img {\n        page-break-inside: avoid;\n    }\n    img {\n        max-width: 100% !important;\n    }\n    p, h2, h3 {\n        orphans: 3;\n        widows: 3;\n    }\n    h2, h3 {\n        page-break-after: avoid;\n    }\n}\n"
  },
  {
    "path": "src/public/js/client.js",
    "content": "'use strict';\n\n//  Google Cloud Speech Playground with node.js and socket.io\n//  Created by Vinzenz Aubry for sansho 24.01.17\n//  Feel free to improve!\n//  Contact: v@vinzenzaubry.com\n\n//connection to socket\nconst socket = io.connect();\n\n//================= CONFIG =================\n// Stream Audio\nlet bufferSize = 2048,\n  AudioContext,\n  context,\n  processor,\n  input,\n  globalStream;\n\n//vars\nlet audioElement = document.querySelector('audio'),\n  finalWord = false,\n  resultText = document.getElementById('ResultText'),\n  removeLastSentence = true,\n  streamStreaming = false;\n\n//audioStream constraints\nconst constraints = {\n  audio: true,\n  video: false,\n};\n\n//================= RECORDING =================\n\nasync function initRecording() {\n  socket.emit('startGoogleCloudStream', ''); //init socket Google Speech Connection\n  streamStreaming = true;\n  AudioContext = window.AudioContext || window.webkitAudioContext;\n  context = new AudioContext({\n    // if Non-interactive, use 'playback' or 'balanced' // https://developer.mozilla.org/en-US/docs/Web/API/AudioContextLatencyCategory\n    latencyHint: 'interactive',\n  });\n\n  await context.audioWorklet.addModule('./assets/js/recorderWorkletProcessor.js')\n  context.resume();\n  \n  globalStream = await navigator.mediaDevices.getUserMedia(constraints)\n  input = context.createMediaStreamSource(globalStream)\n  processor = new window.AudioWorkletNode(\n    context,\n    'recorder.worklet'\n  );\n  processor.connect(context.destination);\n  context.resume()\n  input.connect(processor)\n  processor.port.onmessage = (e) => {\n    const audioData = e.data;\n    microphoneProcess(audioData)\n  }\n}\n\nfunction microphoneProcess(buffer) {\n  socket.emit('binaryData', buffer);\n}\n\n//================= INTERFACE =================\nvar startButton = document.getElementById('startRecButton');\nstartButton.addEventListener('click', startRecording);\n\nvar endButton = document.getElementById('stopRecButton');\nendButton.addEventListener('click', stopRecording);\nendButton.disabled = true;\n\nvar recordingStatus = document.getElementById('recordingStatus');\n\nfunction startRecording() {\n  startButton.disabled = true;\n  endButton.disabled = false;\n  recordingStatus.style.visibility = 'visible';\n  initRecording();\n}\n\nfunction stopRecording() {\n  // waited for FinalWord\n  startButton.disabled = false;\n  endButton.disabled = true;\n  recordingStatus.style.visibility = 'hidden';\n  streamStreaming = false;\n  socket.emit('endGoogleCloudStream', '');\n\n  let track = globalStream.getTracks()[0];\n  track.stop();\n\n  input.disconnect(processor);\n  processor.disconnect(context.destination);\n  context.close().then(function () {\n    input = null;\n    processor = null;\n    context = null;\n    AudioContext = null;\n    startButton.disabled = false;\n  });\n\n  // context.close();\n\n  // audiovideostream.stop();\n\n  // microphone_stream.disconnect(script_processor_node);\n  // script_processor_node.disconnect(audioContext.destination);\n  // microphone_stream = null;\n  // script_processor_node = null;\n\n  // audiovideostream.stop();\n  // videoElement.srcObject = null;\n}\n\n//================= SOCKET IO =================\nsocket.on('connect', function (data) {\n  console.log('connected to socket');\n  socket.emit('join', 'Server Connected to Client');\n});\n\nsocket.on('messages', function (data) {\n  console.log(data);\n});\n\nsocket.on('speechData', function (data) {\n  // console.log(data.results[0].alternatives[0].transcript);\n  var dataFinal = undefined || data.results[0].isFinal;\n\n  if (dataFinal === false) {\n    // console.log(resultText.lastElementChild);\n    if (removeLastSentence) {\n      resultText.lastElementChild.remove();\n    }\n    removeLastSentence = true;\n\n    //add empty span\n    let empty = document.createElement('span');\n    resultText.appendChild(empty);\n\n    //add children to empty span\n    let edit = addTimeSettingsInterim(data);\n\n    for (var i = 0; i < edit.length; i++) {\n      resultText.lastElementChild.appendChild(edit[i]);\n      resultText.lastElementChild.appendChild(\n        document.createTextNode('\\u00A0')\n      );\n    }\n  } else if (dataFinal === true) {\n    resultText.lastElementChild.remove();\n\n    //add empty span\n    let empty = document.createElement('span');\n    resultText.appendChild(empty);\n\n    //add children to empty span\n    let edit = addTimeSettingsFinal(data);\n    for (var i = 0; i < edit.length; i++) {\n      if (i === 0) {\n        edit[i].innerText = capitalize(edit[i].innerText);\n      }\n      resultText.lastElementChild.appendChild(edit[i]);\n\n      if (i !== edit.length - 1) {\n        resultText.lastElementChild.appendChild(\n          document.createTextNode('\\u00A0')\n        );\n      }\n    }\n    resultText.lastElementChild.appendChild(\n      document.createTextNode('\\u002E\\u00A0')\n    );\n\n    console.log(\"Google Speech sent 'final' Sentence.\");\n    finalWord = true;\n    endButton.disabled = false;\n\n    removeLastSentence = false;\n  }\n});\n\n//================= Juggling Spans for nlp Coloring =================\nfunction addTimeSettingsInterim(speechData) {\n  let wholeString = speechData.results[0].alternatives[0].transcript;\n  console.log(wholeString);\n\n  let nlpObject = nlp(wholeString).out('terms');\n\n  let words_without_time = [];\n\n  for (let i = 0; i < nlpObject.length; i++) {\n    //data\n    let word = nlpObject[i].text;\n    let tags = [];\n\n    //generate span\n    let newSpan = document.createElement('span');\n    newSpan.innerHTML = word;\n\n    //push all tags\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      tags.push(nlpObject[i].tags[j]);\n    }\n\n    //add all classes\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      let cleanClassName = tags[j];\n      // console.log(tags);\n      let className = `nl-${cleanClassName}`;\n      newSpan.classList.add(className);\n    }\n\n    words_without_time.push(newSpan);\n  }\n\n  finalWord = false;\n  endButton.disabled = true;\n\n  return words_without_time;\n}\n\nfunction addTimeSettingsFinal(speechData) {\n  let wholeString = speechData.results[0].alternatives[0].transcript;\n\n  let nlpObject = nlp(wholeString).out('terms');\n  let words = speechData.results[0].alternatives[0].words;\n\n  let words_n_time = [];\n\n  for (let i = 0; i < words.length; i++) {\n    //data\n    let word = words[i].word;\n    let startTime = `${words[i].startTime.seconds}.${words[i].startTime.nanos}`;\n    let endTime = `${words[i].endTime.seconds}.${words[i].endTime.nanos}`;\n    let tags = [];\n\n    //generate span\n    let newSpan = document.createElement('span');\n    newSpan.innerHTML = word;\n    newSpan.dataset.startTime = startTime;\n\n    //push all tags\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      tags.push(nlpObject[i].tags[j]);\n    }\n\n    //add all classes\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      let cleanClassName = nlpObject[i].tags[j];\n      // console.log(tags);\n      let className = `nl-${cleanClassName}`;\n      newSpan.classList.add(className);\n    }\n\n    words_n_time.push(newSpan);\n  }\n\n  return words_n_time;\n}\n\nwindow.onbeforeunload = function () {\n  if (streamStreaming) {\n    socket.emit('endGoogleCloudStream', '');\n  }\n};\n\n//================= SANTAS HELPERS =================\n\n// sampleRateHertz 16000 //saved sound is awefull\nfunction convertFloat32ToInt16(buffer) {\n  let l = buffer.length;\n  let buf = new Int16Array(l / 3);\n\n  while (l--) {\n    if (l % 3 == 0) {\n      buf[l / 3] = buffer[l] * 0xffff;\n    }\n  }\n  return buf.buffer;\n}\n\nfunction capitalize(s) {\n  if (s.length < 1) {\n    return s;\n  }\n  return s.charAt(0).toUpperCase() + s.slice(1);\n}\n"
  },
  {
    "path": "src/public/js/recorderWorkletProcessor.js",
    "content": "/**\n  An in-place replacement for ScriptProcessorNode using AudioWorklet\n*/\nclass RecorderProcessor extends AudioWorkletProcessor {\n  // 0. Determine the buffer size (this is the same as the 1st argument of ScriptProcessor)\n  bufferSize = 2048\n  // 1. Track the current buffer fill level\n  _bytesWritten = 0\n\n  // 2. Create a buffer of fixed size\n  _buffer = new Float32Array(this.bufferSize)\n  \n  constructor() {\n    super()\n    this.initBuffer()\n  }\n\n  initBuffer() {\n    this._bytesWritten = 0\n  }\n\n  isBufferEmpty() {\n    return this._bytesWritten === 0\n  }\n\n  isBufferFull() {\n    return this._bytesWritten === this.bufferSize\n  }\n  \n    /**\n   * @param {Float32Array[][]} inputs\n   * @returns {boolean}\n   */\n  process(inputs) {\n    // Grabbing the 1st channel similar to ScriptProcessorNode\n    this.append(inputs[0][0])\n\n    return true\n  }\n\n  /**\n   *\n   * @param {Float32Array} channelData\n   */\n  append(channelData) {\n    if (this.isBufferFull()) {\n      this.flush()\n    }\n\n    if (!channelData) return\n\n    for (let i = 0; i < channelData.length; i++) {\n      this._buffer[this._bytesWritten++] = channelData[i]\n    }\n  }\n  \n  flush() {\n    // trim the buffer if ended prematurely\n    const buffer = this._bytesWritten < this.bufferSize\n      ? this._buffer.slice(0, this._bytesWritten)\n      : this._buffer\n    const result = this.downsampleBuffer(buffer, 44100, 16000);\n    this.port.postMessage(result)\n    this.initBuffer()\n  }\n\n  downsampleBuffer (buffer, sampleRate, outSampleRate) {\n    if (outSampleRate == sampleRate) {\n      return buffer;\n    }\n    if (outSampleRate > sampleRate) {\n      throw 'downsampling rate show be smaller than original sample rate';\n    }\n    var sampleRateRatio = sampleRate / outSampleRate;\n    var newLength = Math.round(buffer.length / sampleRateRatio);\n    var result = new Int16Array(newLength);\n    var offsetResult = 0;\n    var offsetBuffer = 0;\n    while (offsetResult < result.length) {\n      var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n      var accum = 0,\n        count = 0;\n      for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n        accum += buffer[i];\n        count++;\n      }\n  \n      result[offsetResult] = Math.min(1, accum / count) * 0x7fff;\n      offsetResult++;\n      offsetBuffer = nextOffsetBuffer;\n    }\n    return result.buffer;\n  };\n\n}\n\nregisterProcessor(\"recorder.worklet\", RecorderProcessor)"
  },
  {
    "path": "src/public/js/socket.io.js",
    "content": "/*!\n * Socket.IO v3.1.1\n * (c) 2014-2021 Guillermo Rauch\n * Released under the MIT License.\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"io\"] = factory();\n\telse\n\t\troot[\"io\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./build/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./build/index.js\":\n/*!************************!*\\\n  !*** ./build/index.js ***!\n  \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = exports.io = exports.Manager = exports.protocol = void 0;\n\nvar url_1 = __webpack_require__(/*! ./url */ \"./build/url.js\");\n\nvar manager_1 = __webpack_require__(/*! ./manager */ \"./build/manager.js\");\n\nvar socket_1 = __webpack_require__(/*! ./socket */ \"./build/socket.js\");\n\nObject.defineProperty(exports, \"Socket\", {\n  enumerable: true,\n  get: function get() {\n    return socket_1.Socket;\n  }\n});\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client\");\n/**\n * Module exports.\n */\n\n\nmodule.exports = exports = lookup;\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\nfunction lookup(uri, opts) {\n  if (_typeof(uri) === \"object\") {\n    opts = uri;\n    uri = undefined;\n  }\n\n  opts = opts || {};\n  var parsed = url_1.url(uri, opts.path);\n  var source = parsed.source;\n  var id = parsed.id;\n  var path = parsed.path;\n  var sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n  var newConnection = opts.forceNew || opts[\"force new connection\"] || false === opts.multiplex || sameNamespace;\n  var io;\n\n  if (newConnection) {\n    debug(\"ignoring socket cache for %s\", source);\n    io = new manager_1.Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      debug(\"new io instance for %s\", source);\n      cache[id] = new manager_1.Manager(source, opts);\n    }\n\n    io = cache[id];\n  }\n\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.queryKey;\n  }\n\n  return io.socket(parsed.path, opts);\n}\n\nexports.io = lookup;\n/**\n * Protocol version.\n *\n * @public\n */\n\nvar socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nObject.defineProperty(exports, \"protocol\", {\n  enumerable: true,\n  get: function get() {\n    return socket_io_parser_1.protocol;\n  }\n});\n/**\n * `connect`.\n *\n * @param {String} uri\n * @public\n */\n\nexports.connect = lookup;\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\n\nvar manager_2 = __webpack_require__(/*! ./manager */ \"./build/manager.js\");\n\nObject.defineProperty(exports, \"Manager\", {\n  enumerable: true,\n  get: function get() {\n    return manager_2.Manager;\n  }\n});\n\n/***/ }),\n\n/***/ \"./build/manager.js\":\n/*!**************************!*\\\n  !*** ./build/manager.js ***!\n  \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Manager = void 0;\n\nvar eio = __webpack_require__(/*! engine.io-client */ \"./node_modules/engine.io-client/lib/index.js\");\n\nvar socket_1 = __webpack_require__(/*! ./socket */ \"./build/socket.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar parser = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nvar on_1 = __webpack_require__(/*! ./on */ \"./build/on.js\");\n\nvar Backoff = __webpack_require__(/*! backo2 */ \"./node_modules/backo2/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:manager\");\n\nvar Manager = /*#__PURE__*/function (_Emitter) {\n  _inherits(Manager, _Emitter);\n\n  var _super = _createSuper(Manager);\n\n  function Manager(uri, opts) {\n    var _this;\n\n    _classCallCheck(this, Manager);\n\n    _this = _super.call(this);\n    _this.nsps = {};\n    _this.subs = [];\n\n    if (uri && \"object\" === _typeof(uri)) {\n      opts = uri;\n      uri = undefined;\n    }\n\n    opts = opts || {};\n    opts.path = opts.path || \"/socket.io\";\n    _this.opts = opts;\n\n    _this.reconnection(opts.reconnection !== false);\n\n    _this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n\n    _this.reconnectionDelay(opts.reconnectionDelay || 1000);\n\n    _this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n\n    _this.randomizationFactor(opts.randomizationFactor || 0.5);\n\n    _this.backoff = new Backoff({\n      min: _this.reconnectionDelay(),\n      max: _this.reconnectionDelayMax(),\n      jitter: _this.randomizationFactor()\n    });\n\n    _this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n\n    _this._readyState = \"closed\";\n    _this.uri = uri;\n\n    var _parser = opts.parser || parser;\n\n    _this.encoder = new _parser.Encoder();\n    _this.decoder = new _parser.Decoder();\n    _this._autoConnect = opts.autoConnect !== false;\n    if (_this._autoConnect) _this.open();\n    return _this;\n  }\n\n  _createClass(Manager, [{\n    key: \"reconnection\",\n    value: function reconnection(v) {\n      if (!arguments.length) return this._reconnection;\n      this._reconnection = !!v;\n      return this;\n    }\n  }, {\n    key: \"reconnectionAttempts\",\n    value: function reconnectionAttempts(v) {\n      if (v === undefined) return this._reconnectionAttempts;\n      this._reconnectionAttempts = v;\n      return this;\n    }\n  }, {\n    key: \"reconnectionDelay\",\n    value: function reconnectionDelay(v) {\n      var _a;\n\n      if (v === undefined) return this._reconnectionDelay;\n      this._reconnectionDelay = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n      return this;\n    }\n  }, {\n    key: \"randomizationFactor\",\n    value: function randomizationFactor(v) {\n      var _a;\n\n      if (v === undefined) return this._randomizationFactor;\n      this._randomizationFactor = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n      return this;\n    }\n  }, {\n    key: \"reconnectionDelayMax\",\n    value: function reconnectionDelayMax(v) {\n      var _a;\n\n      if (v === undefined) return this._reconnectionDelayMax;\n      this._reconnectionDelayMax = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n      return this;\n    }\n  }, {\n    key: \"timeout\",\n    value: function timeout(v) {\n      if (!arguments.length) return this._timeout;\n      this._timeout = v;\n      return this;\n    }\n    /**\n     * Starts trying to reconnect if reconnection is enabled and we have not\n     * started reconnecting yet\n     *\n     * @private\n     */\n\n  }, {\n    key: \"maybeReconnectOnOpen\",\n    value: function maybeReconnectOnOpen() {\n      // Only try to reconnect if it's the first time we're connecting\n      if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n        // keeps reconnection from firing twice for the same reconnection loop\n        this.reconnect();\n      }\n    }\n    /**\n     * Sets the current transport `socket`.\n     *\n     * @param {Function} fn - optional, callback\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"open\",\n    value: function open(fn) {\n      var _this2 = this;\n\n      debug(\"readyState %s\", this._readyState);\n      if (~this._readyState.indexOf(\"open\")) return this;\n      debug(\"opening %s\", this.uri);\n      this.engine = eio(this.uri, this.opts);\n      var socket = this.engine;\n      var self = this;\n      this._readyState = \"opening\";\n      this.skipReconnect = false; // emit `open`\n\n      var openSubDestroy = on_1.on(socket, \"open\", function () {\n        self.onopen();\n        fn && fn();\n      }); // emit `error`\n\n      var errorSub = on_1.on(socket, \"error\", function (err) {\n        debug(\"error\");\n        self.cleanup();\n        self._readyState = \"closed\";\n\n        _get(_getPrototypeOf(Manager.prototype), \"emit\", _this2).call(_this2, \"error\", err);\n\n        if (fn) {\n          fn(err);\n        } else {\n          // Only do this if there is no fn to handle the error\n          self.maybeReconnectOnOpen();\n        }\n      });\n\n      if (false !== this._timeout) {\n        var timeout = this._timeout;\n        debug(\"connect attempt will timeout after %d\", timeout);\n\n        if (timeout === 0) {\n          openSubDestroy(); // prevents a race condition with the 'open' event\n        } // set timer\n\n\n        var timer = setTimeout(function () {\n          debug(\"connect attempt timed out after %d\", timeout);\n          openSubDestroy();\n          socket.close();\n          socket.emit(\"error\", new Error(\"timeout\"));\n        }, timeout);\n        this.subs.push(function subDestroy() {\n          clearTimeout(timer);\n        });\n      }\n\n      this.subs.push(openSubDestroy);\n      this.subs.push(errorSub);\n      return this;\n    }\n    /**\n     * Alias for open()\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"connect\",\n    value: function connect(fn) {\n      return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onopen\",\n    value: function onopen() {\n      debug(\"open\"); // clear old subs\n\n      this.cleanup(); // mark as open\n\n      this._readyState = \"open\";\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"open\"); // add new subs\n\n\n      var socket = this.engine;\n      this.subs.push(on_1.on(socket, \"ping\", this.onping.bind(this)), on_1.on(socket, \"data\", this.ondata.bind(this)), on_1.on(socket, \"error\", this.onerror.bind(this)), on_1.on(socket, \"close\", this.onclose.bind(this)), on_1.on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onping\",\n    value: function onping() {\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondata\",\n    value: function ondata(data) {\n      this.decoder.add(data);\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondecoded\",\n    value: function ondecoded(packet) {\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"packet\", packet);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onerror\",\n    value: function onerror(err) {\n      debug(\"error\", err);\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"error\", err);\n    }\n    /**\n     * Creates a new socket for the given `nsp`.\n     *\n     * @return {Socket}\n     * @public\n     */\n\n  }, {\n    key: \"socket\",\n    value: function socket(nsp, opts) {\n      var socket = this.nsps[nsp];\n\n      if (!socket) {\n        socket = new socket_1.Socket(this, nsp, opts);\n        this.nsps[nsp] = socket;\n      }\n\n      return socket;\n    }\n    /**\n     * Called upon a socket close.\n     *\n     * @param socket\n     * @private\n     */\n\n  }, {\n    key: \"_destroy\",\n    value: function _destroy(socket) {\n      var nsps = Object.keys(this.nsps);\n\n      for (var _i = 0, _nsps = nsps; _i < _nsps.length; _i++) {\n        var nsp = _nsps[_i];\n        var _socket = this.nsps[nsp];\n\n        if (_socket.active) {\n          debug(\"socket %s is still active, skipping close\", nsp);\n          return;\n        }\n      }\n\n      this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"_packet\",\n    value: function _packet(packet) {\n      debug(\"writing packet %j\", packet);\n      var encodedPackets = this.encoder.encode(packet);\n\n      for (var i = 0; i < encodedPackets.length; i++) {\n        this.engine.write(encodedPackets[i], packet.options);\n      }\n    }\n    /**\n     * Clean up transport subscriptions and packet buffer.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"cleanup\",\n    value: function cleanup() {\n      debug(\"cleanup\");\n      this.subs.forEach(function (subDestroy) {\n        return subDestroy();\n      });\n      this.subs.length = 0;\n      this.decoder.destroy();\n    }\n    /**\n     * Close the current socket.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_close\",\n    value: function _close() {\n      debug(\"disconnect\");\n      this.skipReconnect = true;\n      this._reconnecting = false;\n\n      if (\"opening\" === this._readyState) {\n        // `onclose` will not fire because\n        // an open event never happened\n        this.cleanup();\n      }\n\n      this.backoff.reset();\n      this._readyState = \"closed\";\n      if (this.engine) this.engine.close();\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\n     */\n\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      return this._close();\n    }\n    /**\n     * Called upon engine close.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onclose\",\n    value: function onclose(reason) {\n      debug(\"onclose\");\n      this.cleanup();\n      this.backoff.reset();\n      this._readyState = \"closed\";\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"close\", reason);\n\n      if (this._reconnection && !this.skipReconnect) {\n        this.reconnect();\n      }\n    }\n    /**\n     * Attempt a reconnection.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      var _this3 = this;\n\n      if (this._reconnecting || this.skipReconnect) return this;\n      var self = this;\n\n      if (this.backoff.attempts >= this._reconnectionAttempts) {\n        debug(\"reconnect failed\");\n        this.backoff.reset();\n\n        _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"reconnect_failed\");\n\n        this._reconnecting = false;\n      } else {\n        var delay = this.backoff.duration();\n        debug(\"will wait %dms before reconnect attempt\", delay);\n        this._reconnecting = true;\n        var timer = setTimeout(function () {\n          if (self.skipReconnect) return;\n          debug(\"attempting reconnect\");\n\n          _get(_getPrototypeOf(Manager.prototype), \"emit\", _this3).call(_this3, \"reconnect_attempt\", self.backoff.attempts); // check again for the case socket closed in above events\n\n\n          if (self.skipReconnect) return;\n          self.open(function (err) {\n            if (err) {\n              debug(\"reconnect attempt error\");\n              self._reconnecting = false;\n              self.reconnect();\n\n              _get(_getPrototypeOf(Manager.prototype), \"emit\", _this3).call(_this3, \"reconnect_error\", err);\n            } else {\n              debug(\"reconnect success\");\n              self.onreconnect();\n            }\n          });\n        }, delay);\n        this.subs.push(function subDestroy() {\n          clearTimeout(timer);\n        });\n      }\n    }\n    /**\n     * Called upon successful reconnect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onreconnect\",\n    value: function onreconnect() {\n      var attempt = this.backoff.attempts;\n      this._reconnecting = false;\n      this.backoff.reset();\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"reconnect\", attempt);\n    }\n  }]);\n\n  return Manager;\n}(Emitter);\n\nexports.Manager = Manager;\n\n/***/ }),\n\n/***/ \"./build/on.js\":\n/*!*********************!*\\\n  !*** ./build/on.js ***!\n  \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.on = void 0;\n\nfunction on(obj, ev, fn) {\n  obj.on(ev, fn);\n  return function subDestroy() {\n    obj.off(ev, fn);\n  };\n}\n\nexports.on = on;\n\n/***/ }),\n\n/***/ \"./build/socket.js\":\n/*!*************************!*\\\n  !*** ./build/socket.js ***!\n  \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = void 0;\n\nvar socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar on_1 = __webpack_require__(/*! ./on */ \"./build/on.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:socket\");\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\n\n\nvar RESERVED_EVENTS = Object.freeze({\n  connect: 1,\n  connect_error: 1,\n  disconnect: 1,\n  disconnecting: 1,\n  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n  newListener: 1,\n  removeListener: 1\n});\n\nvar Socket = /*#__PURE__*/function (_Emitter) {\n  _inherits(Socket, _Emitter);\n\n  var _super = _createSuper(Socket);\n\n  /**\n   * `Socket` constructor.\n   *\n   * @public\n   */\n  function Socket(io, nsp, opts) {\n    var _this;\n\n    _classCallCheck(this, Socket);\n\n    _this = _super.call(this);\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.ids = 0;\n    _this.acks = {};\n    _this.flags = {};\n    _this.io = io;\n    _this.nsp = nsp;\n    _this.ids = 0;\n    _this.acks = {};\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.connected = false;\n    _this.disconnected = true;\n    _this.flags = {};\n\n    if (opts && opts.auth) {\n      _this.auth = opts.auth;\n    }\n\n    if (_this.io._autoConnect) _this.open();\n    return _this;\n  }\n  /**\n   * Subscribe to open, close and packet events\n   *\n   * @private\n   */\n\n\n  _createClass(Socket, [{\n    key: \"subEvents\",\n    value: function subEvents() {\n      if (this.subs) return;\n      var io = this.io;\n      this.subs = [on_1.on(io, \"open\", this.onopen.bind(this)), on_1.on(io, \"packet\", this.onpacket.bind(this)), on_1.on(io, \"error\", this.onerror.bind(this)), on_1.on(io, \"close\", this.onclose.bind(this))];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects\n     */\n\n  }, {\n    key: \"connect\",\n\n    /**\n     * \"Opens\" the socket.\n     *\n     * @public\n     */\n    value: function connect() {\n      if (this.connected) return this;\n      this.subEvents();\n      if (!this.io[\"_reconnecting\"]) this.io.open(); // ensure open\n\n      if (\"open\" === this.io._readyState) this.onopen();\n      return this;\n    }\n    /**\n     * Alias for connect()\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"send\",\n    value: function send() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      args.unshift(\"message\");\n      this.emit.apply(this, args);\n      return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @param ev - event name\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"emit\",\n    value: function emit(ev) {\n      if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n        throw new Error('\"' + ev + '\" is a reserved event name');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      args.unshift(ev);\n      var packet = {\n        type: socket_io_parser_1.PacketType.EVENT,\n        data: args\n      };\n      packet.options = {};\n      packet.options.compress = this.flags.compress !== false; // event ack callback\n\n      if (\"function\" === typeof args[args.length - 1]) {\n        debug(\"emitting packet with ack id %d\", this.ids);\n        this.acks[this.ids] = args.pop();\n        packet.id = this.ids++;\n      }\n\n      var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;\n      var discardPacket = this.flags[\"volatile\"] && (!isTransportWritable || !this.connected);\n\n      if (discardPacket) {\n        debug(\"discard packet as the transport is not currently writable\");\n      } else if (this.connected) {\n        this.packet(packet);\n      } else {\n        this.sendBuffer.push(packet);\n      }\n\n      this.flags = {};\n      return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"packet\",\n    value: function packet(_packet) {\n      _packet.nsp = this.nsp;\n\n      this.io._packet(_packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onopen\",\n    value: function onopen() {\n      var _this2 = this;\n\n      debug(\"transport is open - connecting\");\n\n      if (typeof this.auth == \"function\") {\n        this.auth(function (data) {\n          _this2.packet({\n            type: socket_io_parser_1.PacketType.CONNECT,\n            data: data\n          });\n        });\n      } else {\n        this.packet({\n          type: socket_io_parser_1.PacketType.CONNECT,\n          data: this.auth\n        });\n      }\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n\n  }, {\n    key: \"onerror\",\n    value: function onerror(err) {\n      if (!this.connected) {\n        _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", err);\n      }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @private\n     */\n\n  }, {\n    key: \"onclose\",\n    value: function onclose(reason) {\n      debug(\"close (%s)\", reason);\n      this.connected = false;\n      this.disconnected = true;\n      delete this.id;\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"disconnect\", reason);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onpacket\",\n    value: function onpacket(packet) {\n      var sameNamespace = packet.nsp === this.nsp;\n      if (!sameNamespace) return;\n\n      switch (packet.type) {\n        case socket_io_parser_1.PacketType.CONNECT:\n          if (packet.data && packet.data.sid) {\n            var id = packet.data.sid;\n            this.onconnect(id);\n          } else {\n            _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n          }\n\n          break;\n\n        case socket_io_parser_1.PacketType.EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.DISCONNECT:\n          this.ondisconnect();\n          break;\n\n        case socket_io_parser_1.PacketType.CONNECT_ERROR:\n          var err = new Error(packet.data.message); // @ts-ignore\n\n          err.data = packet.data.data;\n\n          _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", err);\n\n          break;\n      }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onevent\",\n    value: function onevent(packet) {\n      var args = packet.data || [];\n      debug(\"emitting event %j\", args);\n\n      if (null != packet.id) {\n        debug(\"attaching ack callback to event\");\n        args.push(this.ack(packet.id));\n      }\n\n      if (this.connected) {\n        this.emitEvent(args);\n      } else {\n        this.receiveBuffer.push(Object.freeze(args));\n      }\n    }\n  }, {\n    key: \"emitEvent\",\n    value: function emitEvent(args) {\n      if (this._anyListeners && this._anyListeners.length) {\n        var listeners = this._anyListeners.slice();\n\n        var _iterator = _createForOfIteratorHelper(listeners),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var listener = _step.value;\n            listener.apply(this, args);\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      }\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).apply(this, args);\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ack\",\n    value: function ack(id) {\n      var self = this;\n      var sent = false;\n      return function () {\n        // prevent double callbacks\n        if (sent) return;\n        sent = true;\n\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n          args[_key3] = arguments[_key3];\n        }\n\n        debug(\"sending ack %j\", args);\n        self.packet({\n          type: socket_io_parser_1.PacketType.ACK,\n          id: id,\n          data: args\n        });\n      };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onack\",\n    value: function onack(packet) {\n      var ack = this.acks[packet.id];\n\n      if (\"function\" === typeof ack) {\n        debug(\"calling ack %s with %j\", packet.id, packet.data);\n        ack.apply(this, packet.data);\n        delete this.acks[packet.id];\n      } else {\n        debug(\"bad ack %s\", packet.id);\n      }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onconnect\",\n    value: function onconnect(id) {\n      debug(\"socket connected with id %s\", id);\n      this.id = id;\n      this.connected = true;\n      this.disconnected = false;\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect\");\n\n      this.emitBuffered();\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n\n  }, {\n    key: \"emitBuffered\",\n    value: function emitBuffered() {\n      var _this3 = this;\n\n      this.receiveBuffer.forEach(function (args) {\n        return _this3.emitEvent(args);\n      });\n      this.receiveBuffer = [];\n      this.sendBuffer.forEach(function (packet) {\n        return _this3.packet(packet);\n      });\n      this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondisconnect\",\n    value: function ondisconnect() {\n      debug(\"server disconnect (%s)\", this.nsp);\n      this.destroy();\n      this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      if (this.subs) {\n        // clean subscriptions to avoid reconnections\n        this.subs.forEach(function (subDestroy) {\n          return subDestroy();\n        });\n        this.subs = undefined;\n      }\n\n      this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      if (this.connected) {\n        debug(\"performing disconnect (%s)\", this.nsp);\n        this.packet({\n          type: socket_io_parser_1.PacketType.DISCONNECT\n        });\n      } // remove socket from pool\n\n\n      this.destroy();\n\n      if (this.connected) {\n        // fire events\n        this.onclose(\"io client disconnect\");\n      }\n\n      return this;\n    }\n    /**\n     * Alias for disconnect()\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"compress\",\n    value: function compress(_compress) {\n      this.flags.compress = _compress;\n      return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @returns self\n     * @public\n     */\n\n  }, {\n    key: \"onAny\",\n\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @param listener\n     * @public\n     */\n    value: function onAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.push(listener);\n\n      return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"prependAny\",\n    value: function prependAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.unshift(listener);\n\n      return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"offAny\",\n    value: function offAny(listener) {\n      if (!this._anyListeners) {\n        return this;\n      }\n\n      if (listener) {\n        var listeners = this._anyListeners;\n\n        for (var i = 0; i < listeners.length; i++) {\n          if (listener === listeners[i]) {\n            listeners.splice(i, 1);\n            return this;\n          }\n        }\n      } else {\n        this._anyListeners = [];\n      }\n\n      return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n\n  }, {\n    key: \"listenersAny\",\n    value: function listenersAny() {\n      return this._anyListeners || [];\n    }\n  }, {\n    key: \"active\",\n    get: function get() {\n      return !!this.subs;\n    }\n  }, {\n    key: \"volatile\",\n    get: function get() {\n      this.flags[\"volatile\"] = true;\n      return this;\n    }\n  }]);\n\n  return Socket;\n}(Emitter);\n\nexports.Socket = Socket;\n\n/***/ }),\n\n/***/ \"./build/url.js\":\n/*!**********************!*\\\n  !*** ./build/url.js ***!\n  \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.url = void 0;\n\nvar parseuri = __webpack_require__(/*! parseuri */ \"./node_modules/parseuri/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:url\");\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */\n\n\nfunction url(uri) {\n  var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n  var loc = arguments.length > 2 ? arguments[2] : undefined;\n  var obj = uri; // default to window.location\n\n  loc = loc || typeof location !== \"undefined\" && location;\n  if (null == uri) uri = loc.protocol + \"//\" + loc.host; // relative path support\n\n  if (typeof uri === \"string\") {\n    if (\"/\" === uri.charAt(0)) {\n      if (\"/\" === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      debug(\"protocol-less url %s\", uri);\n\n      if (\"undefined\" !== typeof loc) {\n        uri = loc.protocol + \"//\" + uri;\n      } else {\n        uri = \"https://\" + uri;\n      }\n    } // parse\n\n\n    debug(\"parse %s\", uri);\n    obj = parseuri(uri);\n  } // make sure we treat `localhost:80` and `localhost` equally\n\n\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = \"80\";\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = \"443\";\n    }\n  }\n\n  obj.path = obj.path || \"/\";\n  var ipv6 = obj.host.indexOf(\":\") !== -1;\n  var host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host; // define unique id\n\n  obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path; // define href\n\n  obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n  return obj;\n}\n\nexports.url = url;\n\n/***/ }),\n\n/***/ \"./node_modules/backo2/index.js\":\n/*!**************************************!*\\\n  !*** ./node_modules/backo2/index.js ***!\n  \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Expose `Backoff`.\n */\nmodule.exports = Backoff;\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 10000;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\n\nBackoff.prototype.duration = function () {\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n\n  if (this.jitter) {\n    var rand = Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n  }\n\n  return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\n\nBackoff.prototype.reset = function () {\n  this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\n\nBackoff.prototype.setMin = function (min) {\n  this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\n\nBackoff.prototype.setMax = function (max) {\n  this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\n\n\nBackoff.prototype.setJitter = function (jitter) {\n  this.jitter = jitter;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/component-emitter/index.js\":\n/*!*************************************************!*\\\n  !*** ./node_modules/component-emitter/index.js ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\r\n * Expose `Emitter`.\r\n */\nif (true) {\n  module.exports = Emitter;\n}\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\n\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n}\n\n;\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n\n  return obj;\n}\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) {\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn);\n  return this;\n};\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.once = function (event, fn) {\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) {\n  this._callbacks = this._callbacks || {}; // all\n\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  } // specific event\n\n\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this; // remove all handlers\n\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  } // remove specific handler\n\n\n  var cb;\n\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  } // Remove event specific arrays for event types that no\n  // one is subscribed for to avoid memory leak.\n\n\n  if (callbacks.length === 0) {\n    delete this._callbacks['$' + event];\n  }\n\n  return this;\n};\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\n\n\nEmitter.prototype.emit = function (event) {\n  this._callbacks = this._callbacks || {};\n  var args = new Array(arguments.length - 1),\n      callbacks = this._callbacks['$' + event];\n\n  for (var i = 1; i < arguments.length; i++) {\n    args[i - 1] = arguments[i];\n  }\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\n\n\nEmitter.prototype.listeners = function (event) {\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\n\n\nEmitter.prototype.hasListeners = function (event) {\n  return !!this.listeners(event).length;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/debug/src/browser.js\":\n/*!*******************************************!*\\\n  !*** ./node_modules/debug/src/browser.js ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\nexports.destroy = function () {\n  var warned = false;\n  return function () {\n    if (!warned) {\n      warned = true;\n      console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n    }\n  };\n}();\n/**\n * Colors.\n */\n\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n    return true;\n  } // Internet Explorer and Edge do not support colors.\n\n\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  } // Is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n  if (!this.useColors) {\n    return;\n  }\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function (match) {\n    if (match === '%%') {\n      return;\n    }\n\n    index++;\n\n    if (match === '%c') {\n      // We only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n  args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\n\n\nexports.log = console.debug || console.log || function () {};\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  try {\n    if (namespaces) {\n      exports.storage.setItem('debug', namespaces);\n    } else {\n      exports.storage.removeItem('debug');\n    }\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  var r;\n\n  try {\n    r = exports.storage.getItem('debug');\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n  try {\n    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n    // The Browser also has localStorage in the global context.\n    return localStorage;\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n  try {\n    return JSON.stringify(v);\n  } catch (error) {\n    return '[UnexpectedJSONParseError]: ' + error.message;\n  }\n};\n\n/***/ }),\n\n/***/ \"./node_modules/debug/src/common.js\":\n/*!******************************************!*\\\n  !*** ./node_modules/debug/src/common.js ***!\n  \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n  createDebug.debug = createDebug;\n  createDebug[\"default\"] = createDebug;\n  createDebug.coerce = coerce;\n  createDebug.disable = disable;\n  createDebug.enable = enable;\n  createDebug.enabled = enabled;\n  createDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n  createDebug.destroy = destroy;\n  Object.keys(env).forEach(function (key) {\n    createDebug[key] = env[key];\n  });\n  /**\n  * The currently active debug mode names, and names to skip.\n  */\n\n  createDebug.names = [];\n  createDebug.skips = [];\n  /**\n  * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n  *\n  * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n  */\n\n  createDebug.formatters = {};\n  /**\n  * Selects a color for a debug namespace\n  * @param {String} namespace The namespace string for the for the debug instance to be colored\n  * @return {Number|String} An ANSI color code for the given namespace\n  * @api private\n  */\n\n  function selectColor(namespace) {\n    var hash = 0;\n\n    for (var i = 0; i < namespace.length; i++) {\n      hash = (hash << 5) - hash + namespace.charCodeAt(i);\n      hash |= 0; // Convert to 32bit integer\n    }\n\n    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n  }\n\n  createDebug.selectColor = selectColor;\n  /**\n  * Create a debugger with the given `namespace`.\n  *\n  * @param {String} namespace\n  * @return {Function}\n  * @api public\n  */\n\n  function createDebug(namespace) {\n    var prevTime;\n    var enableOverride = null;\n\n    function debug() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      // Disabled?\n      if (!debug.enabled) {\n        return;\n      }\n\n      var self = debug; // Set `diff` timestamp\n\n      var curr = Number(new Date());\n      var ms = curr - (prevTime || curr);\n      self.diff = ms;\n      self.prev = prevTime;\n      self.curr = curr;\n      prevTime = curr;\n      args[0] = createDebug.coerce(args[0]);\n\n      if (typeof args[0] !== 'string') {\n        // Anything else let's inspect with %O\n        args.unshift('%O');\n      } // Apply any `formatters` transformations\n\n\n      var index = 0;\n      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n        // If we encounter an escaped % then don't increase the array index\n        if (match === '%%') {\n          return '%';\n        }\n\n        index++;\n        var formatter = createDebug.formatters[format];\n\n        if (typeof formatter === 'function') {\n          var val = args[index];\n          match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n          args.splice(index, 1);\n          index--;\n        }\n\n        return match;\n      }); // Apply env-specific formatting (colors, etc.)\n\n      createDebug.formatArgs.call(self, args);\n      var logFn = self.log || createDebug.log;\n      logFn.apply(self, args);\n    }\n\n    debug.namespace = namespace;\n    debug.useColors = createDebug.useColors();\n    debug.color = createDebug.selectColor(namespace);\n    debug.extend = extend;\n    debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n    Object.defineProperty(debug, 'enabled', {\n      enumerable: true,\n      configurable: false,\n      get: function get() {\n        return enableOverride === null ? createDebug.enabled(namespace) : enableOverride;\n      },\n      set: function set(v) {\n        enableOverride = v;\n      }\n    }); // Env-specific initialization logic for debug instances\n\n    if (typeof createDebug.init === 'function') {\n      createDebug.init(debug);\n    }\n\n    return debug;\n  }\n\n  function extend(namespace, delimiter) {\n    var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n    newDebug.log = this.log;\n    return newDebug;\n  }\n  /**\n  * Enables a debug mode by namespaces. This can include modes\n  * separated by a colon and wildcards.\n  *\n  * @param {String} namespaces\n  * @api public\n  */\n\n\n  function enable(namespaces) {\n    createDebug.save(namespaces);\n    createDebug.names = [];\n    createDebug.skips = [];\n    var i;\n    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n    var len = split.length;\n\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue;\n      }\n\n      namespaces = split[i].replace(/\\*/g, '.*?');\n\n      if (namespaces[0] === '-') {\n        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n      } else {\n        createDebug.names.push(new RegExp('^' + namespaces + '$'));\n      }\n    }\n  }\n  /**\n  * Disable debug output.\n  *\n  * @return {String} namespaces\n  * @api public\n  */\n\n\n  function disable() {\n    var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {\n      return '-' + namespace;\n    }))).join(',');\n    createDebug.enable('');\n    return namespaces;\n  }\n  /**\n  * Returns true if the given mode name is enabled, false otherwise.\n  *\n  * @param {String} name\n  * @return {Boolean}\n  * @api public\n  */\n\n\n  function enabled(name) {\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    var i;\n    var len;\n\n    for (i = 0, len = createDebug.skips.length; i < len; i++) {\n      if (createDebug.skips[i].test(name)) {\n        return false;\n      }\n    }\n\n    for (i = 0, len = createDebug.names.length; i < len; i++) {\n      if (createDebug.names[i].test(name)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /**\n  * Convert regexp to namespace\n  *\n  * @param {RegExp} regxep\n  * @return {String} namespace\n  * @api private\n  */\n\n\n  function toNamespace(regexp) {\n    return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\\.\\*\\?$/, '*');\n  }\n  /**\n  * Coerce `val`.\n  *\n  * @param {Mixed} val\n  * @return {Mixed}\n  * @api private\n  */\n\n\n  function coerce(val) {\n    if (val instanceof Error) {\n      return val.stack || val.message;\n    }\n\n    return val;\n  }\n  /**\n  * XXX DO NOT USE. This is a temporary stub function.\n  * XXX It WILL be removed in the next major release.\n  */\n\n\n  function destroy() {\n    console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n  }\n\n  createDebug.enable(createDebug.load());\n  return createDebug;\n}\n\nmodule.exports = setup;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/globalThis.browser.js\":\n/*!*****************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/globalThis.browser.js ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function () {\n  if (typeof self !== \"undefined\") {\n    return self;\n  } else if (typeof window !== \"undefined\") {\n    return window;\n  } else {\n    return Function(\"return this\")();\n  }\n}();\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/index.js\":\n/*!****************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/index.js ***!\n  \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Socket = __webpack_require__(/*! ./socket */ \"./node_modules/engine.io-client/lib/socket.js\");\n\nmodule.exports = function (uri, opts) {\n  return new Socket(uri, opts);\n};\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\n\nmodule.exports.Socket = Socket;\nmodule.exports.protocol = Socket.protocol; // this is an int\n\nmodule.exports.Transport = __webpack_require__(/*! ./transport */ \"./node_modules/engine.io-client/lib/transport.js\");\nmodule.exports.transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\nmodule.exports.parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/socket.js\":\n/*!*****************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/socket.js ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:socket\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar parseuri = __webpack_require__(/*! parseuri */ \"./node_modules/parseuri/index.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar Socket = /*#__PURE__*/function (_Emitter) {\n  _inherits(Socket, _Emitter);\n\n  var _super = _createSuper(Socket);\n\n  /**\n   * Socket constructor.\n   *\n   * @param {String|Object} uri or options\n   * @param {Object} options\n   * @api public\n   */\n  function Socket(uri) {\n    var _this;\n\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Socket);\n\n    _this = _super.call(this);\n\n    if (uri && \"object\" === _typeof(uri)) {\n      opts = uri;\n      uri = null;\n    }\n\n    if (uri) {\n      uri = parseuri(uri);\n      opts.hostname = uri.host;\n      opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n      opts.port = uri.port;\n      if (uri.query) opts.query = uri.query;\n    } else if (opts.host) {\n      opts.hostname = parseuri(opts.host).host;\n    }\n\n    _this.secure = null != opts.secure ? opts.secure : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n\n    if (opts.hostname && !opts.port) {\n      // if no port is specified manually, use the protocol default\n      opts.port = _this.secure ? \"443\" : \"80\";\n    }\n\n    _this.hostname = opts.hostname || (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n    _this.port = opts.port || (typeof location !== \"undefined\" && location.port ? location.port : _this.secure ? 443 : 80);\n    _this.transports = opts.transports || [\"polling\", \"websocket\"];\n    _this.readyState = \"\";\n    _this.writeBuffer = [];\n    _this.prevBufferLen = 0;\n    _this.opts = _extends({\n      path: \"/engine.io\",\n      agent: false,\n      withCredentials: false,\n      upgrade: true,\n      jsonp: true,\n      timestampParam: \"t\",\n      rememberUpgrade: false,\n      rejectUnauthorized: true,\n      perMessageDeflate: {\n        threshold: 1024\n      },\n      transportOptions: {}\n    }, opts);\n    _this.opts.path = _this.opts.path.replace(/\\/$/, \"\") + \"/\";\n\n    if (typeof _this.opts.query === \"string\") {\n      _this.opts.query = parseqs.decode(_this.opts.query);\n    } // set on handshake\n\n\n    _this.id = null;\n    _this.upgrades = null;\n    _this.pingInterval = null;\n    _this.pingTimeout = null; // set on heartbeat\n\n    _this.pingTimeoutTimer = null;\n\n    _this.open();\n\n    return _this;\n  }\n  /**\n   * Creates transport of the given type.\n   *\n   * @param {String} transport name\n   * @return {Transport}\n   * @api private\n   */\n\n\n  _createClass(Socket, [{\n    key: \"createTransport\",\n    value: function createTransport(name) {\n      debug('creating transport \"%s\"', name);\n      var query = clone(this.opts.query); // append engine.io protocol identifier\n\n      query.EIO = parser.protocol; // transport name\n\n      query.transport = name; // session id if we already have one\n\n      if (this.id) query.sid = this.id;\n\n      var opts = _extends({}, this.opts.transportOptions[name], this.opts, {\n        query: query,\n        socket: this,\n        hostname: this.hostname,\n        secure: this.secure,\n        port: this.port\n      });\n\n      debug(\"options: %j\", opts);\n      return new transports[name](opts);\n    }\n    /**\n     * Initializes transport to use and starts probe.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      var transport;\n\n      if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf(\"websocket\") !== -1) {\n        transport = \"websocket\";\n      } else if (0 === this.transports.length) {\n        // Emit error on next tick so it can be listened to\n        var self = this;\n        setTimeout(function () {\n          self.emit(\"error\", \"No transports available\");\n        }, 0);\n        return;\n      } else {\n        transport = this.transports[0];\n      }\n\n      this.readyState = \"opening\"; // Retry with the next transport if the transport is disabled (jsonp: false)\n\n      try {\n        transport = this.createTransport(transport);\n      } catch (e) {\n        debug(\"error while creating transport: %s\", e);\n        this.transports.shift();\n        this.open();\n        return;\n      }\n\n      transport.open();\n      this.setTransport(transport);\n    }\n    /**\n     * Sets the current transport. Disables the existing one (if any).\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"setTransport\",\n    value: function setTransport(transport) {\n      debug(\"setting transport %s\", transport.name);\n      var self = this;\n\n      if (this.transport) {\n        debug(\"clearing existing transport %s\", this.transport.name);\n        this.transport.removeAllListeners();\n      } // set up transport\n\n\n      this.transport = transport; // set up transport listeners\n\n      transport.on(\"drain\", function () {\n        self.onDrain();\n      }).on(\"packet\", function (packet) {\n        self.onPacket(packet);\n      }).on(\"error\", function (e) {\n        self.onError(e);\n      }).on(\"close\", function () {\n        self.onClose(\"transport close\");\n      });\n    }\n    /**\n     * Probes a transport.\n     *\n     * @param {String} transport name\n     * @api private\n     */\n\n  }, {\n    key: \"probe\",\n    value: function probe(name) {\n      debug('probing transport \"%s\"', name);\n      var transport = this.createTransport(name, {\n        probe: 1\n      });\n      var failed = false;\n      var self = this;\n      Socket.priorWebsocketSuccess = false;\n\n      function onTransportOpen() {\n        if (self.onlyBinaryUpgrades) {\n          var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n          failed = failed || upgradeLosesBinary;\n        }\n\n        if (failed) return;\n        debug('probe transport \"%s\" opened', name);\n        transport.send([{\n          type: \"ping\",\n          data: \"probe\"\n        }]);\n        transport.once(\"packet\", function (msg) {\n          if (failed) return;\n\n          if (\"pong\" === msg.type && \"probe\" === msg.data) {\n            debug('probe transport \"%s\" pong', name);\n            self.upgrading = true;\n            self.emit(\"upgrading\", transport);\n            if (!transport) return;\n            Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n            debug('pausing current transport \"%s\"', self.transport.name);\n            self.transport.pause(function () {\n              if (failed) return;\n              if (\"closed\" === self.readyState) return;\n              debug(\"changing transport and sending upgrade packet\");\n              cleanup();\n              self.setTransport(transport);\n              transport.send([{\n                type: \"upgrade\"\n              }]);\n              self.emit(\"upgrade\", transport);\n              transport = null;\n              self.upgrading = false;\n              self.flush();\n            });\n          } else {\n            debug('probe transport \"%s\" failed', name);\n            var err = new Error(\"probe error\");\n            err.transport = transport.name;\n            self.emit(\"upgradeError\", err);\n          }\n        });\n      }\n\n      function freezeTransport() {\n        if (failed) return; // Any callback called by transport should be ignored since now\n\n        failed = true;\n        cleanup();\n        transport.close();\n        transport = null;\n      } // Handle any error that happens while probing\n\n\n      function onerror(err) {\n        var error = new Error(\"probe error: \" + err);\n        error.transport = transport.name;\n        freezeTransport();\n        debug('probe transport \"%s\" failed because of error: %s', name, err);\n        self.emit(\"upgradeError\", error);\n      }\n\n      function onTransportClose() {\n        onerror(\"transport closed\");\n      } // When the socket is closed while we're probing\n\n\n      function onclose() {\n        onerror(\"socket closed\");\n      } // When the socket is upgraded while we're probing\n\n\n      function onupgrade(to) {\n        if (transport && to.name !== transport.name) {\n          debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n          freezeTransport();\n        }\n      } // Remove all listeners on the transport and on self\n\n\n      function cleanup() {\n        transport.removeListener(\"open\", onTransportOpen);\n        transport.removeListener(\"error\", onerror);\n        transport.removeListener(\"close\", onTransportClose);\n        self.removeListener(\"close\", onclose);\n        self.removeListener(\"upgrading\", onupgrade);\n      }\n\n      transport.once(\"open\", onTransportOpen);\n      transport.once(\"error\", onerror);\n      transport.once(\"close\", onTransportClose);\n      this.once(\"close\", onclose);\n      this.once(\"upgrading\", onupgrade);\n      transport.open();\n    }\n    /**\n     * Called when connection is deemed open.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"onOpen\",\n    value: function onOpen() {\n      debug(\"socket open\");\n      this.readyState = \"open\";\n      Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n      this.emit(\"open\");\n      this.flush(); // we check for `readyState` in case an `open`\n      // listener already closed the socket\n\n      if (\"open\" === this.readyState && this.opts.upgrade && this.transport.pause) {\n        debug(\"starting upgrade probes\");\n        var i = 0;\n        var l = this.upgrades.length;\n\n        for (; i < l; i++) {\n          this.probe(this.upgrades[i]);\n        }\n      }\n    }\n    /**\n     * Handles a packet.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onPacket\",\n    value: function onPacket(packet) {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n        debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n        this.emit(\"packet\", packet); // Socket is live - any packet counts\n\n        this.emit(\"heartbeat\");\n\n        switch (packet.type) {\n          case \"open\":\n            this.onHandshake(JSON.parse(packet.data));\n            break;\n\n          case \"ping\":\n            this.resetPingTimeout();\n            this.sendPacket(\"pong\");\n            this.emit(\"pong\");\n            break;\n\n          case \"error\":\n            var err = new Error(\"server error\");\n            err.code = packet.data;\n            this.onError(err);\n            break;\n\n          case \"message\":\n            this.emit(\"data\", packet.data);\n            this.emit(\"message\", packet.data);\n            break;\n        }\n      } else {\n        debug('packet received with socket readyState \"%s\"', this.readyState);\n      }\n    }\n    /**\n     * Called upon handshake completion.\n     *\n     * @param {Object} handshake obj\n     * @api private\n     */\n\n  }, {\n    key: \"onHandshake\",\n    value: function onHandshake(data) {\n      this.emit(\"handshake\", data);\n      this.id = data.sid;\n      this.transport.query.sid = data.sid;\n      this.upgrades = this.filterUpgrades(data.upgrades);\n      this.pingInterval = data.pingInterval;\n      this.pingTimeout = data.pingTimeout;\n      this.onOpen(); // In case open handler closes socket\n\n      if (\"closed\" === this.readyState) return;\n      this.resetPingTimeout();\n    }\n    /**\n     * Sets and resets ping timeout timer based on server pings.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"resetPingTimeout\",\n    value: function resetPingTimeout() {\n      var _this2 = this;\n\n      clearTimeout(this.pingTimeoutTimer);\n      this.pingTimeoutTimer = setTimeout(function () {\n        _this2.onClose(\"ping timeout\");\n      }, this.pingInterval + this.pingTimeout);\n    }\n    /**\n     * Called on `drain` event\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onDrain\",\n    value: function onDrain() {\n      this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important\n      // for example, when upgrading, upgrade packet is sent over,\n      // and a nonzero prevBufferLen could cause problems on `drain`\n\n      this.prevBufferLen = 0;\n\n      if (0 === this.writeBuffer.length) {\n        this.emit(\"drain\");\n      } else {\n        this.flush();\n      }\n    }\n    /**\n     * Flush write buffers.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"flush\",\n    value: function flush() {\n      if (\"closed\" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n        debug(\"flushing %d packets in socket\", this.writeBuffer.length);\n        this.transport.send(this.writeBuffer); // keep track of current length of writeBuffer\n        // splice writeBuffer and callbackBuffer on `drain`\n\n        this.prevBufferLen = this.writeBuffer.length;\n        this.emit(\"flush\");\n      }\n    }\n    /**\n     * Sends a message.\n     *\n     * @param {String} message.\n     * @param {Function} callback function.\n     * @param {Object} options.\n     * @return {Socket} for chaining.\n     * @api public\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(msg, options, fn) {\n      this.sendPacket(\"message\", msg, options, fn);\n      return this;\n    }\n  }, {\n    key: \"send\",\n    value: function send(msg, options, fn) {\n      this.sendPacket(\"message\", msg, options, fn);\n      return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param {String} packet type.\n     * @param {String} data.\n     * @param {Object} options.\n     * @param {Function} callback function.\n     * @api private\n     */\n\n  }, {\n    key: \"sendPacket\",\n    value: function sendPacket(type, data, options, fn) {\n      if (\"function\" === typeof data) {\n        fn = data;\n        data = undefined;\n      }\n\n      if (\"function\" === typeof options) {\n        fn = options;\n        options = null;\n      }\n\n      if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n        return;\n      }\n\n      options = options || {};\n      options.compress = false !== options.compress;\n      var packet = {\n        type: type,\n        data: data,\n        options: options\n      };\n      this.emit(\"packetCreate\", packet);\n      this.writeBuffer.push(packet);\n      if (fn) this.once(\"flush\", fn);\n      this.flush();\n    }\n    /**\n     * Closes the connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      var self = this;\n\n      if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n        this.readyState = \"closing\";\n\n        if (this.writeBuffer.length) {\n          this.once(\"drain\", function () {\n            if (this.upgrading) {\n              waitForUpgrade();\n            } else {\n              close();\n            }\n          });\n        } else if (this.upgrading) {\n          waitForUpgrade();\n        } else {\n          close();\n        }\n      }\n\n      function close() {\n        self.onClose(\"forced close\");\n        debug(\"socket closing - telling transport to close\");\n        self.transport.close();\n      }\n\n      function cleanupAndClose() {\n        self.removeListener(\"upgrade\", cleanupAndClose);\n        self.removeListener(\"upgradeError\", cleanupAndClose);\n        close();\n      }\n\n      function waitForUpgrade() {\n        // wait for upgrade to finish since we can't send packets while pausing a transport\n        self.once(\"upgrade\", cleanupAndClose);\n        self.once(\"upgradeError\", cleanupAndClose);\n      }\n\n      return this;\n    }\n    /**\n     * Called upon transport error\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onError\",\n    value: function onError(err) {\n      debug(\"socket error %j\", err);\n      Socket.priorWebsocketSuccess = false;\n      this.emit(\"error\", err);\n      this.onClose(\"transport error\", err);\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose(reason, desc) {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n        debug('socket close with reason: \"%s\"', reason);\n        var self = this; // clear timers\n\n        clearTimeout(this.pingIntervalTimer);\n        clearTimeout(this.pingTimeoutTimer); // stop event from firing again for transport\n\n        this.transport.removeAllListeners(\"close\"); // ensure transport won't stay open\n\n        this.transport.close(); // ignore further transport communication\n\n        this.transport.removeAllListeners(); // set ready state\n\n        this.readyState = \"closed\"; // clear session id\n\n        this.id = null; // emit close event\n\n        this.emit(\"close\", reason, desc); // clean buffers after, so users can still\n        // grab the buffers on `close` event\n\n        self.writeBuffer = [];\n        self.prevBufferLen = 0;\n      }\n    }\n    /**\n     * Filters upgrades, returning only those matching client transports.\n     *\n     * @param {Array} server upgrades\n     * @api private\n     *\n     */\n\n  }, {\n    key: \"filterUpgrades\",\n    value: function filterUpgrades(upgrades) {\n      var filteredUpgrades = [];\n      var i = 0;\n      var j = upgrades.length;\n\n      for (; i < j; i++) {\n        if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]);\n      }\n\n      return filteredUpgrades;\n    }\n  }]);\n\n  return Socket;\n}(Emitter);\n\nSocket.priorWebsocketSuccess = false;\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\nfunction clone(obj) {\n  var o = {};\n\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      o[i] = obj[i];\n    }\n  }\n\n  return o;\n}\n\nmodule.exports = Socket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transport.js\":\n/*!********************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transport.js ***!\n  \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar Transport = /*#__PURE__*/function (_Emitter) {\n  _inherits(Transport, _Emitter);\n\n  var _super = _createSuper(Transport);\n\n  /**\n   * Transport abstract constructor.\n   *\n   * @param {Object} options.\n   * @api private\n   */\n  function Transport(opts) {\n    var _this;\n\n    _classCallCheck(this, Transport);\n\n    _this = _super.call(this);\n    _this.opts = opts;\n    _this.query = opts.query;\n    _this.readyState = \"\";\n    _this.socket = opts.socket;\n    return _this;\n  }\n  /**\n   * Emits an error.\n   *\n   * @param {String} str\n   * @return {Transport} for chaining\n   * @api public\n   */\n\n\n  _createClass(Transport, [{\n    key: \"onError\",\n    value: function onError(msg, desc) {\n      var err = new Error(msg);\n      err.type = \"TransportError\";\n      err.description = desc;\n      this.emit(\"error\", err);\n      return this;\n    }\n    /**\n     * Opens the transport.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      if (\"closed\" === this.readyState || \"\" === this.readyState) {\n        this.readyState = \"opening\";\n        this.doOpen();\n      }\n\n      return this;\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n        this.doClose();\n        this.onClose();\n      }\n\n      return this;\n    }\n    /**\n     * Sends multiple packets.\n     *\n     * @param {Array} packets\n     * @api private\n     */\n\n  }, {\n    key: \"send\",\n    value: function send(packets) {\n      if (\"open\" === this.readyState) {\n        this.write(packets);\n      } else {\n        throw new Error(\"Transport not open\");\n      }\n    }\n    /**\n     * Called upon open\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onOpen\",\n    value: function onOpen() {\n      this.readyState = \"open\";\n      this.writable = true;\n      this.emit(\"open\");\n    }\n    /**\n     * Called with data.\n     *\n     * @param {String} data\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      var packet = parser.decodePacket(data, this.socket.binaryType);\n      this.onPacket(packet);\n    }\n    /**\n     * Called with a decoded packet.\n     */\n\n  }, {\n    key: \"onPacket\",\n    value: function onPacket(packet) {\n      this.emit(\"packet\", packet);\n    }\n    /**\n     * Called upon close.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose() {\n      this.readyState = \"closed\";\n      this.emit(\"close\");\n    }\n  }]);\n\n  return Transport;\n}(Emitter);\n\nmodule.exports = Transport;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/index.js\":\n/*!***************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/index.js ***!\n  \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar XMLHttpRequest = __webpack_require__(/*! xmlhttprequest-ssl */ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\");\n\nvar XHR = __webpack_require__(/*! ./polling-xhr */ \"./node_modules/engine.io-client/lib/transports/polling-xhr.js\");\n\nvar JSONP = __webpack_require__(/*! ./polling-jsonp */ \"./node_modules/engine.io-client/lib/transports/polling-jsonp.js\");\n\nvar websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/engine.io-client/lib/transports/websocket.js\");\n\nexports.polling = polling;\nexports.websocket = websocket;\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling(opts) {\n  var xhr;\n  var xd = false;\n  var xs = false;\n  var jsonp = false !== opts.jsonp;\n\n  if (typeof location !== \"undefined\") {\n    var isSSL = \"https:\" === location.protocol;\n    var port = location.port; // some user agents have empty `location.port`\n\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    xd = opts.hostname !== location.hostname || port !== opts.port;\n    xs = opts.secure !== isSSL;\n  }\n\n  opts.xdomain = xd;\n  opts.xscheme = xs;\n  xhr = new XMLHttpRequest(opts);\n\n  if (\"open\" in xhr && !opts.forceJSONP) {\n    return new XHR(opts);\n  } else {\n    if (!jsonp) throw new Error(\"JSONP disabled\");\n    return new JSONP(opts);\n  }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling-jsonp.js\":\n/*!***********************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling-jsonp.js ***!\n  \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Polling = __webpack_require__(/*! ./polling */ \"./node_modules/engine.io-client/lib/transports/polling.js\");\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n/**\n * Noop.\n */\n\nfunction empty() {}\n\nvar JSONPPolling = /*#__PURE__*/function (_Polling) {\n  _inherits(JSONPPolling, _Polling);\n\n  var _super = _createSuper(JSONPPolling);\n\n  /**\n   * JSONP Polling constructor.\n   *\n   * @param {Object} opts.\n   * @api public\n   */\n  function JSONPPolling(opts) {\n    var _this;\n\n    _classCallCheck(this, JSONPPolling);\n\n    _this = _super.call(this, opts);\n    _this.query = _this.query || {}; // define global callbacks array if not present\n    // we do this here (lazily) to avoid unneeded global pollution\n\n    if (!callbacks) {\n      // we need to consider multiple engines in the same page\n      callbacks = globalThis.___eio = globalThis.___eio || [];\n    } // callback identifier\n\n\n    _this.index = callbacks.length; // add callback to jsonp global\n\n    var self = _assertThisInitialized(_this);\n\n    callbacks.push(function (msg) {\n      self.onData(msg);\n    }); // append to query string\n\n    _this.query.j = _this.index; // prevent spurious errors from being emitted when the window is unloaded\n\n    if (typeof addEventListener === \"function\") {\n      addEventListener(\"beforeunload\", function () {\n        if (self.script) self.script.onerror = empty;\n      }, false);\n    }\n\n    return _this;\n  }\n  /**\n   * JSONP only supports binary as base64 encoded strings\n   */\n\n\n  _createClass(JSONPPolling, [{\n    key: \"doClose\",\n\n    /**\n     * Closes the socket.\n     *\n     * @api private\n     */\n    value: function doClose() {\n      if (this.script) {\n        this.script.parentNode.removeChild(this.script);\n        this.script = null;\n      }\n\n      if (this.form) {\n        this.form.parentNode.removeChild(this.form);\n        this.form = null;\n        this.iframe = null;\n      }\n\n      _get(_getPrototypeOf(JSONPPolling.prototype), \"doClose\", this).call(this);\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doPoll\",\n    value: function doPoll() {\n      var self = this;\n      var script = document.createElement(\"script\");\n\n      if (this.script) {\n        this.script.parentNode.removeChild(this.script);\n        this.script = null;\n      }\n\n      script.async = true;\n      script.src = this.uri();\n\n      script.onerror = function (e) {\n        self.onError(\"jsonp poll error\", e);\n      };\n\n      var insertAt = document.getElementsByTagName(\"script\")[0];\n\n      if (insertAt) {\n        insertAt.parentNode.insertBefore(script, insertAt);\n      } else {\n        (document.head || document.body).appendChild(script);\n      }\n\n      this.script = script;\n      var isUAgecko = \"undefined\" !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n      if (isUAgecko) {\n        setTimeout(function () {\n          var iframe = document.createElement(\"iframe\");\n          document.body.appendChild(iframe);\n          document.body.removeChild(iframe);\n        }, 100);\n      }\n    }\n    /**\n     * Writes with a hidden iframe.\n     *\n     * @param {String} data to send\n     * @param {Function} called upon flush.\n     * @api private\n     */\n\n  }, {\n    key: \"doWrite\",\n    value: function doWrite(data, fn) {\n      var self = this;\n      var iframe;\n\n      if (!this.form) {\n        var form = document.createElement(\"form\");\n        var area = document.createElement(\"textarea\");\n        var id = this.iframeId = \"eio_iframe_\" + this.index;\n        form.className = \"socketio\";\n        form.style.position = \"absolute\";\n        form.style.top = \"-1000px\";\n        form.style.left = \"-1000px\";\n        form.target = id;\n        form.method = \"POST\";\n        form.setAttribute(\"accept-charset\", \"utf-8\");\n        area.name = \"d\";\n        form.appendChild(area);\n        document.body.appendChild(form);\n        this.form = form;\n        this.area = area;\n      }\n\n      this.form.action = this.uri();\n\n      function complete() {\n        initIframe();\n        fn();\n      }\n\n      function initIframe() {\n        if (self.iframe) {\n          try {\n            self.form.removeChild(self.iframe);\n          } catch (e) {\n            self.onError(\"jsonp polling iframe removal error\", e);\n          }\n        }\n\n        try {\n          // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n          var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n          iframe = document.createElement(html);\n        } catch (e) {\n          iframe = document.createElement(\"iframe\");\n          iframe.name = self.iframeId;\n          iframe.src = \"javascript:0\";\n        }\n\n        iframe.id = self.iframeId;\n        self.form.appendChild(iframe);\n        self.iframe = iframe;\n      }\n\n      initIframe(); // escape \\n to prevent it from being converted into \\r\\n by some UAs\n      // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n\n      data = data.replace(rEscapedNewline, \"\\\\\\n\");\n      this.area.value = data.replace(rNewline, \"\\\\n\");\n\n      try {\n        this.form.submit();\n      } catch (e) {}\n\n      if (this.iframe.attachEvent) {\n        this.iframe.onreadystatechange = function () {\n          if (self.iframe.readyState === \"complete\") {\n            complete();\n          }\n        };\n      } else {\n        this.iframe.onload = complete;\n      }\n    }\n  }, {\n    key: \"supportsBinary\",\n    get: function get() {\n      return false;\n    }\n  }]);\n\n  return JSONPPolling;\n}(Polling);\n\nmodule.exports = JSONPPolling;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling-xhr.js\":\n/*!*********************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling-xhr.js ***!\n  \\*********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/* global attachEvent */\nvar XMLHttpRequest = __webpack_require__(/*! xmlhttprequest-ssl */ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\");\n\nvar Polling = __webpack_require__(/*! ./polling */ \"./node_modules/engine.io-client/lib/transports/polling.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar _require = __webpack_require__(/*! ../util */ \"./node_modules/engine.io-client/lib/util.js\"),\n    pick = _require.pick;\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:polling-xhr\");\n/**\n * Empty function\n */\n\n\nfunction empty() {}\n\nvar hasXHR2 = function () {\n  var xhr = new XMLHttpRequest({\n    xdomain: false\n  });\n  return null != xhr.responseType;\n}();\n\nvar XHR = /*#__PURE__*/function (_Polling) {\n  _inherits(XHR, _Polling);\n\n  var _super = _createSuper(XHR);\n\n  /**\n   * XHR Polling constructor.\n   *\n   * @param {Object} opts\n   * @api public\n   */\n  function XHR(opts) {\n    var _this;\n\n    _classCallCheck(this, XHR);\n\n    _this = _super.call(this, opts);\n\n    if (typeof location !== \"undefined\") {\n      var isSSL = \"https:\" === location.protocol;\n      var port = location.port; // some user agents have empty `location.port`\n\n      if (!port) {\n        port = isSSL ? 443 : 80;\n      }\n\n      _this.xd = typeof location !== \"undefined\" && opts.hostname !== location.hostname || port !== opts.port;\n      _this.xs = opts.secure !== isSSL;\n    }\n    /**\n     * XHR supports binary\n     */\n\n\n    var forceBase64 = opts && opts.forceBase64;\n    _this.supportsBinary = hasXHR2 && !forceBase64;\n    return _this;\n  }\n  /**\n   * Creates a request.\n   *\n   * @param {String} method\n   * @api private\n   */\n\n\n  _createClass(XHR, [{\n    key: \"request\",\n    value: function request() {\n      var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      _extends(opts, {\n        xd: this.xd,\n        xs: this.xs\n      }, this.opts);\n\n      return new Request(this.uri(), opts);\n    }\n    /**\n     * Sends data.\n     *\n     * @param {String} data to send.\n     * @param {Function} called upon flush.\n     * @api private\n     */\n\n  }, {\n    key: \"doWrite\",\n    value: function doWrite(data, fn) {\n      var req = this.request({\n        method: \"POST\",\n        data: data\n      });\n      var self = this;\n      req.on(\"success\", fn);\n      req.on(\"error\", function (err) {\n        self.onError(\"xhr post error\", err);\n      });\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doPoll\",\n    value: function doPoll() {\n      debug(\"xhr poll\");\n      var req = this.request();\n      var self = this;\n      req.on(\"data\", function (data) {\n        self.onData(data);\n      });\n      req.on(\"error\", function (err) {\n        self.onError(\"xhr poll error\", err);\n      });\n      this.pollXhr = req;\n    }\n  }]);\n\n  return XHR;\n}(Polling);\n\nvar Request = /*#__PURE__*/function (_Emitter) {\n  _inherits(Request, _Emitter);\n\n  var _super2 = _createSuper(Request);\n\n  /**\n   * Request constructor\n   *\n   * @param {Object} options\n   * @api public\n   */\n  function Request(uri, opts) {\n    var _this2;\n\n    _classCallCheck(this, Request);\n\n    _this2 = _super2.call(this);\n    _this2.opts = opts;\n    _this2.method = opts.method || \"GET\";\n    _this2.uri = uri;\n    _this2.async = false !== opts.async;\n    _this2.data = undefined !== opts.data ? opts.data : null;\n\n    _this2.create();\n\n    return _this2;\n  }\n  /**\n   * Creates the XHR object and sends the request.\n   *\n   * @api private\n   */\n\n\n  _createClass(Request, [{\n    key: \"create\",\n    value: function create() {\n      var opts = pick(this.opts, \"agent\", \"enablesXDR\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\");\n      opts.xdomain = !!this.opts.xd;\n      opts.xscheme = !!this.opts.xs;\n      var xhr = this.xhr = new XMLHttpRequest(opts);\n      var self = this;\n\n      try {\n        debug(\"xhr open %s: %s\", this.method, this.uri);\n        xhr.open(this.method, this.uri, this.async);\n\n        try {\n          if (this.opts.extraHeaders) {\n            xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n\n            for (var i in this.opts.extraHeaders) {\n              if (this.opts.extraHeaders.hasOwnProperty(i)) {\n                xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n              }\n            }\n          }\n        } catch (e) {}\n\n        if (\"POST\" === this.method) {\n          try {\n            xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n          } catch (e) {}\n        }\n\n        try {\n          xhr.setRequestHeader(\"Accept\", \"*/*\");\n        } catch (e) {} // ie6 check\n\n\n        if (\"withCredentials\" in xhr) {\n          xhr.withCredentials = this.opts.withCredentials;\n        }\n\n        if (this.opts.requestTimeout) {\n          xhr.timeout = this.opts.requestTimeout;\n        }\n\n        if (this.hasXDR()) {\n          xhr.onload = function () {\n            self.onLoad();\n          };\n\n          xhr.onerror = function () {\n            self.onError(xhr.responseText);\n          };\n        } else {\n          xhr.onreadystatechange = function () {\n            if (4 !== xhr.readyState) return;\n\n            if (200 === xhr.status || 1223 === xhr.status) {\n              self.onLoad();\n            } else {\n              // make sure the `error` event handler that's user-set\n              // does not throw in the same tick and gets caught here\n              setTimeout(function () {\n                self.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n              }, 0);\n            }\n          };\n        }\n\n        debug(\"xhr data %s\", this.data);\n        xhr.send(this.data);\n      } catch (e) {\n        // Need to defer since .create() is called directly from the constructor\n        // and thus the 'error' event can only be only bound *after* this exception\n        // occurs.  Therefore, also, we cannot throw here at all.\n        setTimeout(function () {\n          self.onError(e);\n        }, 0);\n        return;\n      }\n\n      if (typeof document !== \"undefined\") {\n        this.index = Request.requestsCount++;\n        Request.requests[this.index] = this;\n      }\n    }\n    /**\n     * Called upon successful response.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onSuccess\",\n    value: function onSuccess() {\n      this.emit(\"success\");\n      this.cleanup();\n    }\n    /**\n     * Called if we have data.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      this.emit(\"data\", data);\n      this.onSuccess();\n    }\n    /**\n     * Called upon error.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onError\",\n    value: function onError(err) {\n      this.emit(\"error\", err);\n      this.cleanup(true);\n    }\n    /**\n     * Cleans up house.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"cleanup\",\n    value: function cleanup(fromError) {\n      if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n        return;\n      } // xmlhttprequest\n\n\n      if (this.hasXDR()) {\n        this.xhr.onload = this.xhr.onerror = empty;\n      } else {\n        this.xhr.onreadystatechange = empty;\n      }\n\n      if (fromError) {\n        try {\n          this.xhr.abort();\n        } catch (e) {}\n      }\n\n      if (typeof document !== \"undefined\") {\n        delete Request.requests[this.index];\n      }\n\n      this.xhr = null;\n    }\n    /**\n     * Called upon load.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onLoad\",\n    value: function onLoad() {\n      var data = this.xhr.responseText;\n\n      if (data !== null) {\n        this.onData(data);\n      }\n    }\n    /**\n     * Check if it has XDomainRequest.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"hasXDR\",\n    value: function hasXDR() {\n      return typeof XDomainRequest !== \"undefined\" && !this.xs && this.enablesXDR;\n    }\n    /**\n     * Aborts the request.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      this.cleanup();\n    }\n  }]);\n\n  return Request;\n}(Emitter);\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (typeof document !== \"undefined\") {\n  if (typeof attachEvent === \"function\") {\n    attachEvent(\"onunload\", unloadHandler);\n  } else if (typeof addEventListener === \"function\") {\n    var terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n    addEventListener(terminationEvent, unloadHandler, false);\n  }\n}\n\nfunction unloadHandler() {\n  for (var i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling.js\":\n/*!*****************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling.js ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Transport = __webpack_require__(/*! ../transport */ \"./node_modules/engine.io-client/lib/transport.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar yeast = __webpack_require__(/*! yeast */ \"./node_modules/yeast/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:polling\");\n\nvar Polling = /*#__PURE__*/function (_Transport) {\n  _inherits(Polling, _Transport);\n\n  var _super = _createSuper(Polling);\n\n  function Polling() {\n    _classCallCheck(this, Polling);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Polling, [{\n    key: \"doOpen\",\n\n    /**\n     * Opens the socket (triggers polling). We write a PING message to determine\n     * when the transport is open.\n     *\n     * @api private\n     */\n    value: function doOpen() {\n      this.poll();\n    }\n    /**\n     * Pauses polling.\n     *\n     * @param {Function} callback upon buffers are flushed and transport is paused\n     * @api private\n     */\n\n  }, {\n    key: \"pause\",\n    value: function pause(onPause) {\n      var self = this;\n      this.readyState = \"pausing\";\n\n      function pause() {\n        debug(\"paused\");\n        self.readyState = \"paused\";\n        onPause();\n      }\n\n      if (this.polling || !this.writable) {\n        var total = 0;\n\n        if (this.polling) {\n          debug(\"we are currently polling - waiting to pause\");\n          total++;\n          this.once(\"pollComplete\", function () {\n            debug(\"pre-pause polling complete\");\n            --total || pause();\n          });\n        }\n\n        if (!this.writable) {\n          debug(\"we are currently writing - waiting to pause\");\n          total++;\n          this.once(\"drain\", function () {\n            debug(\"pre-pause writing complete\");\n            --total || pause();\n          });\n        }\n      } else {\n        pause();\n      }\n    }\n    /**\n     * Starts polling cycle.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"poll\",\n    value: function poll() {\n      debug(\"polling\");\n      this.polling = true;\n      this.doPoll();\n      this.emit(\"poll\");\n    }\n    /**\n     * Overloads onData to detect payloads.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      var self = this;\n      debug(\"polling got data %s\", data);\n\n      var callback = function callback(packet, index, total) {\n        // if its the first message we consider the transport open\n        if (\"opening\" === self.readyState && packet.type === \"open\") {\n          self.onOpen();\n        } // if its a close packet, we close the ongoing requests\n\n\n        if (\"close\" === packet.type) {\n          self.onClose();\n          return false;\n        } // otherwise bypass onData and handle the message\n\n\n        self.onPacket(packet);\n      }; // decode payload\n\n\n      parser.decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing\n\n      if (\"closed\" !== this.readyState) {\n        // if we got data we're not polling\n        this.polling = false;\n        this.emit(\"pollComplete\");\n\n        if (\"open\" === this.readyState) {\n          this.poll();\n        } else {\n          debug('ignoring poll - transport state \"%s\"', this.readyState);\n        }\n      }\n    }\n    /**\n     * For polling, send a close packet.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doClose\",\n    value: function doClose() {\n      var self = this;\n\n      function close() {\n        debug(\"writing close packet\");\n        self.write([{\n          type: \"close\"\n        }]);\n      }\n\n      if (\"open\" === this.readyState) {\n        debug(\"transport open - closing\");\n        close();\n      } else {\n        // in case we're trying to close while\n        // handshaking is in progress (GH-164)\n        debug(\"transport not open - deferring close\");\n        this.once(\"open\", close);\n      }\n    }\n    /**\n     * Writes a packets payload.\n     *\n     * @param {Array} data packets\n     * @param {Function} drain callback\n     * @api private\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(packets) {\n      var _this = this;\n\n      this.writable = false;\n      parser.encodePayload(packets, function (data) {\n        _this.doWrite(data, function () {\n          _this.writable = true;\n\n          _this.emit(\"drain\");\n        });\n      });\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"uri\",\n    value: function uri() {\n      var query = this.query || {};\n      var schema = this.opts.secure ? \"https\" : \"http\";\n      var port = \"\"; // cache busting is forced\n\n      if (false !== this.opts.timestampRequests) {\n        query[this.opts.timestampParam] = yeast();\n      }\n\n      if (!this.supportsBinary && !query.sid) {\n        query.b64 = 1;\n      }\n\n      query = parseqs.encode(query); // avoid port if default for schema\n\n      if (this.opts.port && (\"https\" === schema && Number(this.opts.port) !== 443 || \"http\" === schema && Number(this.opts.port) !== 80)) {\n        port = \":\" + this.opts.port;\n      } // prepend ? to query\n\n\n      if (query.length) {\n        query = \"?\" + query;\n      }\n\n      var ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n      return schema + \"://\" + (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) + port + this.opts.path + query;\n    }\n  }, {\n    key: \"name\",\n\n    /**\n     * Transport name.\n     */\n    get: function get() {\n      return \"polling\";\n    }\n  }]);\n\n  return Polling;\n}(Transport);\n\nmodule.exports = Polling;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js\":\n/*!***************************************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js ***!\n  \\***************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nmodule.exports = {\n  WebSocket: globalThis.WebSocket || globalThis.MozWebSocket,\n  usingBrowserWebSocket: true,\n  defaultBinaryType: \"arraybuffer\"\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/websocket.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/websocket.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Transport = __webpack_require__(/*! ../transport */ \"./node_modules/engine.io-client/lib/transport.js\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar yeast = __webpack_require__(/*! yeast */ \"./node_modules/yeast/index.js\");\n\nvar _require = __webpack_require__(/*! ../util */ \"./node_modules/engine.io-client/lib/util.js\"),\n    pick = _require.pick;\n\nvar _require2 = __webpack_require__(/*! ./websocket-constructor */ \"./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js\"),\n    WebSocket = _require2.WebSocket,\n    usingBrowserWebSocket = _require2.usingBrowserWebSocket,\n    defaultBinaryType = _require2.defaultBinaryType;\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:websocket\"); // detect ReactNative environment\n\n\nvar isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\n\nvar WS = /*#__PURE__*/function (_Transport) {\n  _inherits(WS, _Transport);\n\n  var _super = _createSuper(WS);\n\n  /**\n   * WebSocket transport constructor.\n   *\n   * @api {Object} connection options\n   * @api public\n   */\n  function WS(opts) {\n    var _this;\n\n    _classCallCheck(this, WS);\n\n    _this = _super.call(this, opts);\n    _this.supportsBinary = !opts.forceBase64;\n    return _this;\n  }\n  /**\n   * Transport name.\n   *\n   * @api public\n   */\n\n\n  _createClass(WS, [{\n    key: \"doOpen\",\n\n    /**\n     * Opens socket.\n     *\n     * @api private\n     */\n    value: function doOpen() {\n      if (!this.check()) {\n        // let probe timeout\n        return;\n      }\n\n      var uri = this.uri();\n      var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n\n      var opts = isReactNative ? {} : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n\n      if (this.opts.extraHeaders) {\n        opts.headers = this.opts.extraHeaders;\n      }\n\n      try {\n        this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts);\n      } catch (err) {\n        return this.emit(\"error\", err);\n      }\n\n      this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n      this.addEventListeners();\n    }\n    /**\n     * Adds event listeners to the socket\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners() {\n      var self = this;\n\n      this.ws.onopen = function () {\n        self.onOpen();\n      };\n\n      this.ws.onclose = function () {\n        self.onClose();\n      };\n\n      this.ws.onmessage = function (ev) {\n        self.onData(ev.data);\n      };\n\n      this.ws.onerror = function (e) {\n        self.onError(\"websocket error\", e);\n      };\n    }\n    /**\n     * Writes data to socket.\n     *\n     * @param {Array} array of packets.\n     * @api private\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(packets) {\n      var self = this;\n      this.writable = false; // encodePacket efficient as it uses WS framing\n      // no need for encodePayload\n\n      var total = packets.length;\n      var i = 0;\n      var l = total;\n\n      for (; i < l; i++) {\n        (function (packet) {\n          parser.encodePacket(packet, self.supportsBinary, function (data) {\n            // always create a new object (GH-437)\n            var opts = {};\n\n            if (!usingBrowserWebSocket) {\n              if (packet.options) {\n                opts.compress = packet.options.compress;\n              }\n\n              if (self.opts.perMessageDeflate) {\n                var len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n\n                if (len < self.opts.perMessageDeflate.threshold) {\n                  opts.compress = false;\n                }\n              }\n            } // Sometimes the websocket has already been closed but the browser didn't\n            // have a chance of informing us about it yet, in that case send will\n            // throw an error\n\n\n            try {\n              if (usingBrowserWebSocket) {\n                // TypeError is thrown when passing the second argument on Safari\n                self.ws.send(data);\n              } else {\n                self.ws.send(data, opts);\n              }\n            } catch (e) {\n              debug(\"websocket closed before onclose event\");\n            }\n\n            --total || done();\n          });\n        })(packets[i]);\n      }\n\n      function done() {\n        self.emit(\"flush\"); // fake drain\n        // defer to next tick to allow Socket to clear writeBuffer\n\n        setTimeout(function () {\n          self.writable = true;\n          self.emit(\"drain\");\n        }, 0);\n      }\n    }\n    /**\n     * Called upon close\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose() {\n      Transport.prototype.onClose.call(this);\n    }\n    /**\n     * Closes socket.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doClose\",\n    value: function doClose() {\n      if (typeof this.ws !== \"undefined\") {\n        this.ws.close();\n      }\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"uri\",\n    value: function uri() {\n      var query = this.query || {};\n      var schema = this.opts.secure ? \"wss\" : \"ws\";\n      var port = \"\"; // avoid port if default for schema\n\n      if (this.opts.port && (\"wss\" === schema && Number(this.opts.port) !== 443 || \"ws\" === schema && Number(this.opts.port) !== 80)) {\n        port = \":\" + this.opts.port;\n      } // append timestamp to URI\n\n\n      if (this.opts.timestampRequests) {\n        query[this.opts.timestampParam] = yeast();\n      } // communicate binary support capabilities\n\n\n      if (!this.supportsBinary) {\n        query.b64 = 1;\n      }\n\n      query = parseqs.encode(query); // prepend ? to query\n\n      if (query.length) {\n        query = \"?\" + query;\n      }\n\n      var ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n      return schema + \"://\" + (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) + port + this.opts.path + query;\n    }\n    /**\n     * Feature detection for WebSocket.\n     *\n     * @return {Boolean} whether this transport is available.\n     * @api public\n     */\n\n  }, {\n    key: \"check\",\n    value: function check() {\n      return !!WebSocket && !(\"__initialize\" in WebSocket && this.name === WS.prototype.name);\n    }\n  }, {\n    key: \"name\",\n    get: function get() {\n      return \"websocket\";\n    }\n  }]);\n\n  return WS;\n}(Transport);\n\nmodule.exports = WS;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/util.js\":\n/*!***************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/util.js ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports.pick = function (obj) {\n  for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    attr[_key - 1] = arguments[_key];\n  }\n\n  return attr.reduce(function (acc, k) {\n    if (obj.hasOwnProperty(k)) {\n      acc[k] = obj[k];\n    }\n\n    return acc;\n  }, {});\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\":\n/*!*************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/xmlhttprequest.js ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// browser shim for xmlhttprequest module\nvar hasCORS = __webpack_require__(/*! has-cors */ \"./node_modules/has-cors/index.js\");\n\nvar globalThis = __webpack_require__(/*! ./globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nmodule.exports = function (opts) {\n  var xdomain = opts.xdomain; // scheme must be same when usign XDomainRequest\n  // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n  var xscheme = opts.xscheme; // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n  // https://github.com/Automattic/engine.io-client/pull/217\n\n  var enablesXDR = opts.enablesXDR; // XMLHttpRequest can be disabled on IE\n\n  try {\n    if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) {} // Use XDomainRequest for IE8 if enablesXDR is true\n  // because loading bar keeps flashing when using jsonp-polling\n  // https://github.com/yujiosaka/socke.io-ie8-loading-example\n\n\n  try {\n    if (\"undefined\" !== typeof XDomainRequest && !xscheme && enablesXDR) {\n      return new XDomainRequest();\n    }\n  } catch (e) {}\n\n  if (!xdomain) {\n    try {\n      return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n    } catch (e) {}\n  }\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/commons.js\":\n/*!******************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/commons.js ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar PACKET_TYPES = Object.create(null); // no Map = no polyfill\n\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nvar PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(function (key) {\n  PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nvar ERROR_PACKET = {\n  type: \"error\",\n  data: \"parser error\"\n};\nmodule.exports = {\n  PACKET_TYPES: PACKET_TYPES,\n  PACKET_TYPES_REVERSE: PACKET_TYPES_REVERSE,\n  ERROR_PACKET: ERROR_PACKET\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/decodePacket.browser.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/decodePacket.browser.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(/*! ./commons */ \"./node_modules/engine.io-parser/lib/commons.js\"),\n    PACKET_TYPES_REVERSE = _require.PACKET_TYPES_REVERSE,\n    ERROR_PACKET = _require.ERROR_PACKET;\n\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nvar base64decoder;\n\nif (withNativeArrayBuffer) {\n  base64decoder = __webpack_require__(/*! base64-arraybuffer */ \"./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\");\n}\n\nvar decodePacket = function decodePacket(encodedPacket, binaryType) {\n  if (typeof encodedPacket !== \"string\") {\n    return {\n      type: \"message\",\n      data: mapBinary(encodedPacket, binaryType)\n    };\n  }\n\n  var type = encodedPacket.charAt(0);\n\n  if (type === \"b\") {\n    return {\n      type: \"message\",\n      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n    };\n  }\n\n  var packetType = PACKET_TYPES_REVERSE[type];\n\n  if (!packetType) {\n    return ERROR_PACKET;\n  }\n\n  return encodedPacket.length > 1 ? {\n    type: PACKET_TYPES_REVERSE[type],\n    data: encodedPacket.substring(1)\n  } : {\n    type: PACKET_TYPES_REVERSE[type]\n  };\n};\n\nvar decodeBase64Packet = function decodeBase64Packet(data, binaryType) {\n  if (base64decoder) {\n    var decoded = base64decoder.decode(data);\n    return mapBinary(decoded, binaryType);\n  } else {\n    return {\n      base64: true,\n      data: data\n    }; // fallback for old browsers\n  }\n};\n\nvar mapBinary = function mapBinary(data, binaryType) {\n  switch (binaryType) {\n    case \"blob\":\n      return data instanceof ArrayBuffer ? new Blob([data]) : data;\n\n    case \"arraybuffer\":\n    default:\n      return data;\n    // assuming the data is already an ArrayBuffer\n  }\n};\n\nmodule.exports = decodePacket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/encodePacket.browser.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/encodePacket.browser.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(/*! ./commons */ \"./node_modules/engine.io-parser/lib/commons.js\"),\n    PACKET_TYPES = _require.PACKET_TYPES;\n\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\"; // ArrayBuffer.isView method is not defined in IE10\n\nvar isView = function isView(obj) {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\n\nvar encodePacket = function encodePacket(_ref, supportsBinary, callback) {\n  var type = _ref.type,\n      data = _ref.data;\n\n  if (withNativeBlob && data instanceof Blob) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(data, callback);\n    }\n  } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {\n    if (supportsBinary) {\n      return callback(data instanceof ArrayBuffer ? data : data.buffer);\n    } else {\n      return encodeBlobAsBase64(new Blob([data]), callback);\n    }\n  } // plain string\n\n\n  return callback(PACKET_TYPES[type] + (data || \"\"));\n};\n\nvar encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) {\n  var fileReader = new FileReader();\n\n  fileReader.onload = function () {\n    var content = fileReader.result.split(\",\")[1];\n    callback(\"b\" + content);\n  };\n\n  return fileReader.readAsDataURL(data);\n};\n\nmodule.exports = encodePacket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/index.js\":\n/*!****************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/index.js ***!\n  \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar encodePacket = __webpack_require__(/*! ./encodePacket */ \"./node_modules/engine.io-parser/lib/encodePacket.browser.js\");\n\nvar decodePacket = __webpack_require__(/*! ./decodePacket */ \"./node_modules/engine.io-parser/lib/decodePacket.browser.js\");\n\nvar SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\n\nvar encodePayload = function encodePayload(packets, callback) {\n  // some packets may be added to the array while encoding, so the initial length must be saved\n  var length = packets.length;\n  var encodedPackets = new Array(length);\n  var count = 0;\n  packets.forEach(function (packet, i) {\n    // force base64 encoding for binary packets\n    encodePacket(packet, false, function (encodedPacket) {\n      encodedPackets[i] = encodedPacket;\n\n      if (++count === length) {\n        callback(encodedPackets.join(SEPARATOR));\n      }\n    });\n  });\n};\n\nvar decodePayload = function decodePayload(encodedPayload, binaryType) {\n  var encodedPackets = encodedPayload.split(SEPARATOR);\n  var packets = [];\n\n  for (var i = 0; i < encodedPackets.length; i++) {\n    var decodedPacket = decodePacket(encodedPackets[i], binaryType);\n    packets.push(decodedPacket);\n\n    if (decodedPacket.type === \"error\") {\n      break;\n    }\n  }\n\n  return packets;\n};\n\nmodule.exports = {\n  protocol: 4,\n  encodePacket: encodePacket,\n  encodePayload: encodePayload,\n  decodePacket: decodePacket,\n  decodePayload: decodePayload\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\":\n/*!*************************************************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js ***!\n  \\*************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function (chars) {\n  \"use strict\";\n\n  exports.encode = function (arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = \"\";\n\n    for (i = 0; i < len; i += 3) {\n      base64 += chars[bytes[i] >> 2];\n      base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n      base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n      base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n\n    return base64;\n  };\n\n  exports.decode = function (base64) {\n    var bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === \"=\") {\n      bufferLength--;\n\n      if (base64[base64.length - 2] === \"=\") {\n        bufferLength--;\n      }\n    }\n\n    var arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n      encoded1 = chars.indexOf(base64[i]);\n      encoded2 = chars.indexOf(base64[i + 1]);\n      encoded3 = chars.indexOf(base64[i + 2]);\n      encoded4 = chars.indexOf(base64[i + 3]);\n      bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n\n    return arraybuffer;\n  };\n})(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-cors/index.js\":\n/*!****************************************!*\\\n  !*** ./node_modules/has-cors/index.js ***!\n  \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n *   - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\ntry {\n  module.exports = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n  // if XMLHttp support is disabled in IE then it will throw\n  // when trying to create\n  module.exports = false;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/ms/index.js\":\n/*!**********************************!*\\\n  !*** ./node_modules/ms/index.js ***!\n  \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n\n  var type = _typeof(val);\n\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options[\"long\"] ? fmtLong(val) : fmtShort(val);\n  }\n\n  throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n  str = String(str);\n\n  if (str.length > 100) {\n    return;\n  }\n\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n\n  if (!match) {\n    return;\n  }\n\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n\n    default:\n      return undefined;\n  }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n\n  return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n\n  return ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n/***/ }),\n\n/***/ \"./node_modules/parseqs/index.js\":\n/*!***************************************!*\\\n  !*** ./node_modules/parseqs/index.js ***!\n  \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexports.encode = function (obj) {\n  var str = '';\n\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      if (str.length) str += '&';\n      str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n    }\n  }\n\n  return str;\n};\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\n\nexports.decode = function (qs) {\n  var qry = {};\n  var pairs = qs.split('&');\n\n  for (var i = 0, l = pairs.length; i < l; i++) {\n    var pair = pairs[i].split('=');\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n  }\n\n  return qry;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/parseuri/index.js\":\n/*!****************************************!*\\\n  !*** ./node_modules/parseuri/index.js ***!\n  \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Parses an URI\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nvar parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'];\n\nmodule.exports = function parseuri(str) {\n  var src = str,\n      b = str.indexOf('['),\n      e = str.indexOf(']');\n\n  if (b != -1 && e != -1) {\n    str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n  }\n\n  var m = re.exec(str || ''),\n      uri = {},\n      i = 14;\n\n  while (i--) {\n    uri[parts[i]] = m[i] || '';\n  }\n\n  if (b != -1 && e != -1) {\n    uri.source = src;\n    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n    uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n    uri.ipv6uri = true;\n  }\n\n  uri.pathNames = pathNames(uri, uri['path']);\n  uri.queryKey = queryKey(uri, uri['query']);\n  return uri;\n};\n\nfunction pathNames(obj, path) {\n  var regx = /\\/{2,9}/g,\n      names = path.replace(regx, \"/\").split(\"/\");\n\n  if (path.substr(0, 1) == '/' || path.length === 0) {\n    names.splice(0, 1);\n  }\n\n  if (path.substr(path.length - 1, 1) == '/') {\n    names.splice(names.length - 1, 1);\n  }\n\n  return names;\n}\n\nfunction queryKey(uri, query) {\n  var data = {};\n  query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n    if ($1) {\n      data[$1] = $2;\n    }\n  });\n  return data;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/binary.js\":\n/*!******************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/binary.js ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.reconstructPacket = exports.deconstructPacket = void 0;\n\nvar is_binary_1 = __webpack_require__(/*! ./is-binary */ \"./node_modules/socket.io-parser/dist/is-binary.js\");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\n\n\nfunction deconstructPacket(packet) {\n  var buffers = [];\n  var packetData = packet.data;\n  var pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length; // number of binary 'attachments'\n\n  return {\n    packet: pack,\n    buffers: buffers\n  };\n}\n\nexports.deconstructPacket = deconstructPacket;\n\nfunction _deconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (is_binary_1.isBinary(data)) {\n    var placeholder = {\n      _placeholder: true,\n      num: buffers.length\n    };\n    buffers.push(data);\n    return placeholder;\n  } else if (Array.isArray(data)) {\n    var newData = new Array(data.length);\n\n    for (var i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n\n    return newData;\n  } else if (_typeof(data) === \"object\" && !(data instanceof Date)) {\n    var _newData = {};\n\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        _newData[key] = _deconstructPacket(data[key], buffers);\n      }\n    }\n\n    return _newData;\n  }\n\n  return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\n\n\nfunction reconstructPacket(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  packet.attachments = undefined; // no longer useful\n\n  return packet;\n}\n\nexports.reconstructPacket = reconstructPacket;\n\nfunction _reconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (data && data._placeholder) {\n    return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n  } else if (Array.isArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (_typeof(data) === \"object\") {\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        data[key] = _reconstructPacket(data[key], buffers);\n      }\n    }\n  }\n\n  return data;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/index.js\":\n/*!*****************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/index.js ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar binary_1 = __webpack_require__(/*! ./binary */ \"./node_modules/socket.io-parser/dist/binary.js\");\n\nvar is_binary_1 = __webpack_require__(/*! ./is-binary */ \"./node_modules/socket.io-parser/dist/is-binary.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-parser\");\n/**\n * Protocol version.\n *\n * @public\n */\n\n\nexports.protocol = 5;\nvar PacketType;\n\n(function (PacketType) {\n  PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n  PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n  PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n  PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n  PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n  PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n  PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType = exports.PacketType || (exports.PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\n\n\nvar Encoder = /*#__PURE__*/function () {\n  function Encoder() {\n    _classCallCheck(this, Encoder);\n  }\n\n  _createClass(Encoder, [{\n    key: \"encode\",\n\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    value: function encode(obj) {\n      debug(\"encoding packet %j\", obj);\n\n      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n        if (is_binary_1.hasBinary(obj)) {\n          obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK;\n          return this.encodeAsBinary(obj);\n        }\n      }\n\n      return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n\n  }, {\n    key: \"encodeAsString\",\n    value: function encodeAsString(obj) {\n      // first is type\n      var str = \"\" + obj.type; // attachments if we have them\n\n      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n        str += obj.attachments + \"-\";\n      } // if we have a namespace other than `/`\n      // we append it followed by a comma `,`\n\n\n      if (obj.nsp && \"/\" !== obj.nsp) {\n        str += obj.nsp + \",\";\n      } // immediately followed by the id\n\n\n      if (null != obj.id) {\n        str += obj.id;\n      } // json data\n\n\n      if (null != obj.data) {\n        str += JSON.stringify(obj.data);\n      }\n\n      debug(\"encoded %j as %s\", obj, str);\n      return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n\n  }, {\n    key: \"encodeAsBinary\",\n    value: function encodeAsBinary(obj) {\n      var deconstruction = binary_1.deconstructPacket(obj);\n      var pack = this.encodeAsString(deconstruction.packet);\n      var buffers = deconstruction.buffers;\n      buffers.unshift(pack); // add packet info to beginning of data list\n\n      return buffers; // write all the buffers\n    }\n  }]);\n\n  return Encoder;\n}();\n\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\n\nvar Decoder = /*#__PURE__*/function (_Emitter) {\n  _inherits(Decoder, _Emitter);\n\n  var _super = _createSuper(Decoder);\n\n  function Decoder() {\n    _classCallCheck(this, Decoder);\n\n    return _super.call(this);\n  }\n  /**\n   * Decodes an encoded packet string into packet JSON.\n   *\n   * @param {String} obj - encoded packet\n   */\n\n\n  _createClass(Decoder, [{\n    key: \"add\",\n    value: function add(obj) {\n      var packet;\n\n      if (typeof obj === \"string\") {\n        packet = this.decodeString(obj);\n\n        if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) {\n          // binary packet's json\n          this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow\n\n          if (packet.attachments === 0) {\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        } else {\n          // non-binary full packet\n          _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n        }\n      } else if (is_binary_1.isBinary(obj) || obj.base64) {\n        // raw binary data\n        if (!this.reconstructor) {\n          throw new Error(\"got binary data when not reconstructing a packet\");\n        } else {\n          packet = this.reconstructor.takeBinaryData(obj);\n\n          if (packet) {\n            // received final buffer\n            this.reconstructor = null;\n\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        }\n      } else {\n        throw new Error(\"Unknown type: \" + obj);\n      }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n\n  }, {\n    key: \"decodeString\",\n    value: function decodeString(str) {\n      var i = 0; // look up type\n\n      var p = {\n        type: Number(str.charAt(0))\n      };\n\n      if (PacketType[p.type] === undefined) {\n        throw new Error(\"unknown packet type \" + p.type);\n      } // look up attachments if type binary\n\n\n      if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n        var start = i + 1;\n\n        while (str.charAt(++i) !== \"-\" && i != str.length) {}\n\n        var buf = str.substring(start, i);\n\n        if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n          throw new Error(\"Illegal attachments\");\n        }\n\n        p.attachments = Number(buf);\n      } // look up namespace (if any)\n\n\n      if (\"/\" === str.charAt(i + 1)) {\n        var _start = i + 1;\n\n        while (++i) {\n          var c = str.charAt(i);\n          if (\",\" === c) break;\n          if (i === str.length) break;\n        }\n\n        p.nsp = str.substring(_start, i);\n      } else {\n        p.nsp = \"/\";\n      } // look up id\n\n\n      var next = str.charAt(i + 1);\n\n      if (\"\" !== next && Number(next) == next) {\n        var _start2 = i + 1;\n\n        while (++i) {\n          var _c = str.charAt(i);\n\n          if (null == _c || Number(_c) != _c) {\n            --i;\n            break;\n          }\n\n          if (i === str.length) break;\n        }\n\n        p.id = Number(str.substring(_start2, i + 1));\n      } // look up json data\n\n\n      if (str.charAt(++i)) {\n        var payload = tryParse(str.substr(i));\n\n        if (Decoder.isPayloadValid(p.type, payload)) {\n          p.data = payload;\n        } else {\n          throw new Error(\"invalid payload\");\n        }\n      }\n\n      debug(\"decoded %s as %j\", str, p);\n      return p;\n    }\n  }, {\n    key: \"destroy\",\n\n    /**\n     * Deallocates a parser's resources\n     */\n    value: function destroy() {\n      if (this.reconstructor) {\n        this.reconstructor.finishedReconstruction();\n      }\n    }\n  }], [{\n    key: \"isPayloadValid\",\n    value: function isPayloadValid(type, payload) {\n      switch (type) {\n        case PacketType.CONNECT:\n          return _typeof(payload) === \"object\";\n\n        case PacketType.DISCONNECT:\n          return payload === undefined;\n\n        case PacketType.CONNECT_ERROR:\n          return typeof payload === \"string\" || _typeof(payload) === \"object\";\n\n        case PacketType.EVENT:\n        case PacketType.BINARY_EVENT:\n          return Array.isArray(payload) && payload.length > 0;\n\n        case PacketType.ACK:\n        case PacketType.BINARY_ACK:\n          return Array.isArray(payload);\n      }\n    }\n  }]);\n\n  return Decoder;\n}(Emitter);\n\nexports.Decoder = Decoder;\n\nfunction tryParse(str) {\n  try {\n    return JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\n\n\nvar BinaryReconstructor = /*#__PURE__*/function () {\n  function BinaryReconstructor(packet) {\n    _classCallCheck(this, BinaryReconstructor);\n\n    this.packet = packet;\n    this.buffers = [];\n    this.reconPack = packet;\n  }\n  /**\n   * Method to be called when binary data received from connection\n   * after a BINARY_EVENT packet.\n   *\n   * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n   * @return {null | Object} returns null if more binary data is expected or\n   *   a reconstructed packet object if all buffers have been received.\n   */\n\n\n  _createClass(BinaryReconstructor, [{\n    key: \"takeBinaryData\",\n    value: function takeBinaryData(binData) {\n      this.buffers.push(binData);\n\n      if (this.buffers.length === this.reconPack.attachments) {\n        // done with buffer list\n        var packet = binary_1.reconstructPacket(this.reconPack, this.buffers);\n        this.finishedReconstruction();\n        return packet;\n      }\n\n      return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n\n  }, {\n    key: \"finishedReconstruction\",\n    value: function finishedReconstruction() {\n      this.reconPack = null;\n      this.buffers = [];\n    }\n  }]);\n\n  return BinaryReconstructor;\n}();\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/is-binary.js\":\n/*!*********************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/is-binary.js ***!\n  \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hasBinary = exports.isBinary = void 0;\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n\nvar isView = function isView(obj) {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\n\nfunction isBinary(obj) {\n  return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File;\n}\n\nexports.isBinary = isBinary;\n\nfunction hasBinary(obj, toJSON) {\n  if (!obj || _typeof(obj) !== \"object\") {\n    return false;\n  }\n\n  if (Array.isArray(obj)) {\n    for (var i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  if (isBinary(obj)) {\n    return true;\n  }\n\n  if (obj.toJSON && typeof obj.toJSON === \"function\" && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexports.hasBinary = hasBinary;\n\n/***/ }),\n\n/***/ \"./node_modules/yeast/index.js\":\n/*!*************************************!*\\\n  !*** ./node_modules/yeast/index.js ***!\n  \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''),\n    length = 64,\n    map = {},\n    seed = 0,\n    i = 0,\n    prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\n\nfunction encode(num) {\n  var encoded = '';\n\n  do {\n    encoded = alphabet[num % length] + encoded;\n    num = Math.floor(num / length);\n  } while (num > 0);\n\n  return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\n\n\nfunction decode(str) {\n  var decoded = 0;\n\n  for (i = 0; i < str.length; i++) {\n    decoded = decoded * length + map[str.charAt(i)];\n  }\n\n  return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\n\n\nfunction yeast() {\n  var now = encode(+new Date());\n  if (now !== prev) return seed = 0, prev = now;\n  return now + '.' + encode(seed++);\n} //\n// Map each character to its index.\n//\n\n\nfor (; i < length; i++) {\n  map[alphabet[i]] = i;\n} //\n// Expose the `yeast`, `encode` and `decode` functions.\n//\n\n\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=socket.io.js.map"
  },
  {
    "path": "src/views/index.ejs",
    "content": "<!doctype html>\n<html class=\"no-js\" lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n    <title>GCloud Speech Recognition Node + Socket.io</title>\n    <meta name=\"description\" content=\"Google Cloud Speech Recognition with Node and Socket.io\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    <link rel=\"stylesheet\" href=\"assets/css/main.css\">\n</head>\n\n<body>\n    <div class=\"wrapper\">\n        <h1>Google Cloud Speech Node with Socket.io Playground</h1>\n\n        <audio></audio>\n\n        <br>\n        <button id=\"startRecButton\" type=\"button\"> Start recording</button>\n        <button id=\"stopRecButton\" type=\"button\"> Stop recording</button>\n        <div id=\"recordingStatus\">&nbsp;</div>\n        <br>\n\n        <div>\n            <p id=\"ResultText\">\n                <span class=\"greyText\">No Speech to Text yet\n                    <span>\n            </p>\n        </div>\n\n        <br>\n        <br>\n    </div>\n\n    <!-- Nlp -->\n    <script src=\"https://unpkg.com/compromise@11.14.3/builds/compromise.min.js\"></script>\n\n    <!-- Socket -->\n    <script src=\"assets/js/socket.io.js\"></script>\n\n    <!-- Client -->\n    <script src=\"assets/js/client.js\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "srcLogOnly/app.js",
    "content": "'use strict'\n\n//  Google Cloud Speech Playground with node.js and socket.io\n//  Created by Vinzenz Aubry for sansho 24.01.17\n//  Feel free to improve!\n//\tContact: v@vinzenzaubry.com\n\nconst express = require('express'); // const bodyParser = require('body-parser'); // const path = require('path');\nconst fs = require('fs');\nconst environmentVars = require('dotenv').config();\n\n// Google Cloud\nconst speech = require('@google-cloud/speech');\nconst speechClient = new speech.SpeechClient(); // Creates a client\n\n\nconst app = express();\nconst port = process.env.PORT || 1337;\nconst server = require('http').createServer(app);\n\nconst io = require('socket.io')(server);\n\napp.use('/assets', express.static(__dirname + '/public'));\napp.use('/session/assets', express.static(__dirname + '/public'));\napp.set('view engine', 'ejs');\n\n\n// =========================== ROUTERS ================================ //\n\napp.get('/', function (req, res) {\n    res.render('index', {});\n});\n\napp.use('/', function (req, res, next) {\n    next(); // console.log(`Request Url: ${req.url}`);\n});\n\n\n// =========================== SOCKET.IO ================================ //\n\nio.on('connection', function (client) {\n    console.log('Client Connected to server');\n    let recognizeStream = null;\n\n    client.on('join', function (data) {\n        client.emit('messages', 'Socket Connected to Server');\n    });\n\n    client.on('messages', function (data) {\n        client.emit('broad', data);\n    });\n\n    client.on('startGoogleCloudStream', function (data) {\n        startRecognitionStream(this, data);\n    });\n\n    client.on('endGoogleCloudStream', function (data) {\n        stopRecognitionStream();\n    });\n\n    client.on('binaryData', function (data) {\n        // console.log(data); //log binary data\n        if (recognizeStream !== null) {\n            recognizeStream.write(data);\n        }\n    });\n\n    function startRecognitionStream(client, data) {\n        recognizeStream = speechClient.streamingRecognize(request)\n            .on('error', console.error)\n            .on('data', (data) => {\n                process.stdout.write(\n                    (data.results[0] && data.results[0].alternatives[0])\n                        ? `Transcription: ${data.results[0].alternatives[0].transcript}\\n`\n                        : `\\n\\nReached transcription time limit, press Ctrl+C\\n`);\n                client.emit('speechData', data);\n\n                // if end of utterance, let's restart stream\n                // this is a small hack. After 65 seconds of silence, the stream will still throw an error for speech length limit\n                if (data.results[0] && data.results[0].isFinal) {\n                    stopRecognitionStream();\n                    startRecognitionStream(client);\n                    // console.log('restarted stream serverside');\n                }\n            });\n    }\n\n    function stopRecognitionStream() {\n        if (recognizeStream) {\n            recognizeStream.end();\n        }\n        recognizeStream = null;\n    }\n});\n\n\n// =========================== GOOGLE CLOUD SETTINGS ================================ //\n\n// The encoding of the audio file, e.g. 'LINEAR16'\n// The sample rate of the audio file in hertz, e.g. 16000\n// The BCP-47 language code to use, e.g. 'en-US'\nconst encoding = 'LINEAR16';\nconst sampleRateHertz = 16000;\nconst languageCode = 'en-US'; //en-US\n\nconst request = {\n    config: {\n        encoding: encoding,\n        sampleRateHertz: sampleRateHertz,\n        languageCode: languageCode,\n        profanityFilter: false,\n        enableWordTimeOffsets: true,\n        // speechContexts: [{\n        //     phrases: [\"hoful\",\"shwazil\"]\n        //    }] // add your own speech context for better recognition\n    },\n    interimResults: true // If you want interim results, set this to true\n};\n\n\n// =========================== START SERVER ================================ //\n\nserver.listen(port, \"127.0.0.1\", function () { //http listen, to make socket work\n    // app.address = \"127.0.0.1\";\n    console.log('Server started on port:' + port)\n});\n"
  },
  {
    "path": "srcLogOnly/public/css/main-min.css",
    "content": "body{font-family:sans-serif;background-color:white}.wrapper{width:90vw;margin:0 auto;margin-top:25px}\n"
  },
  {
    "path": "srcLogOnly/public/css/main.css",
    "content": "body {\n    font-family: sans-serif;\n    background-color: white;\n}\n\n.wrapper {\n    width: 90vw;\n    margin: 0 auto;\n    margin-top: 25px;\n}"
  },
  {
    "path": "srcLogOnly/public/js/client.js",
    "content": "'use strict';\n\n//  Google Cloud Speech Playground with node.js and socket.io\n//  Created by Vinzenz Aubry for sansho 24.01.17\n//  Feel free to improve!\n//  Contact: v@vinzenzaubry.com\n\n//connection to socket\nconst socket = io.connect();\n\n//================= CONFIG =================\n// Stream Audio\nlet bufferSize = 2048,\n  AudioContext,\n  context,\n  processor,\n  input,\n  globalStream;\n\n//vars\nlet audioElement = document.querySelector('audio'),\n  finalWord = false,\n  resultText = document.getElementById('ResultText'),\n  removeLastSentence = true,\n  streamStreaming = false;\n\n//audioStream constraints\nconst constraints = {\n  audio: true,\n  video: false,\n};\n\n//================= RECORDING =================\n\nfunction initRecording() {\n  socket.emit('startGoogleCloudStream', ''); //init socket Google Speech Connection\n  streamStreaming = true;\n  AudioContext = window.AudioContext || window.webkitAudioContext;\n  context = new AudioContext({\n    // if Non-interactive, use 'playback' or 'balanced' // https://developer.mozilla.org/en-US/docs/Web/API/AudioContextLatencyCategory\n    latencyHint: 'interactive',\n  });\n  processor = context.createScriptProcessor(bufferSize, 1, 1);\n  processor.connect(context.destination);\n  context.resume();\n\n  var handleSuccess = function (stream) {\n    globalStream = stream;\n    input = context.createMediaStreamSource(stream);\n    input.connect(processor);\n\n    processor.onaudioprocess = function (e) {\n      microphoneProcess(e);\n    };\n  };\n\n  navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess);\n}\n\nfunction microphoneProcess(e) {\n  var left = e.inputBuffer.getChannelData(0);\n  // var left16 = convertFloat32ToInt16(left); // old 32 to 16 function\n  var left16 = downsampleBuffer(left, 44100, 16000);\n  socket.emit('binaryData', left16);\n}\n\n//================= INTERFACE =================\nvar startButton = document.getElementById('startRecButton');\nstartButton.addEventListener('click', startRecording);\n\nvar endButton = document.getElementById('stopRecButton');\nendButton.addEventListener('click', stopRecording);\nendButton.disabled = true;\n\nvar recordingStatus = document.getElementById('recordingStatus');\n\nfunction startRecording() {\n  startButton.disabled = true;\n  endButton.disabled = false;\n  recordingStatus.style.visibility = 'visible';\n  initRecording();\n}\n\nfunction stopRecording() {\n  // waited for FinalWord\n  startButton.disabled = false;\n  endButton.disabled = true;\n  recordingStatus.style.visibility = 'hidden';\n  streamStreaming = false;\n  socket.emit('endGoogleCloudStream', '');\n\n  let track = globalStream.getTracks()[0];\n  track.stop();\n\n  input.disconnect(processor);\n  processor.disconnect(context.destination);\n  context.close().then(function () {\n    input = null;\n    processor = null;\n    context = null;\n    AudioContext = null;\n    startButton.disabled = false;\n  });\n\n  // context.close();\n\n  // audiovideostream.stop();\n\n  // microphone_stream.disconnect(script_processor_node);\n  // script_processor_node.disconnect(audioContext.destination);\n  // microphone_stream = null;\n  // script_processor_node = null;\n\n  // audiovideostream.stop();\n  // videoElement.srcObject = null;\n}\n\n//================= SOCKET IO =================\nsocket.on('connect', function (data) {\n  console.log('connected to socket');\n  socket.emit('join', 'Server Connected to Client');\n});\n\nsocket.on('messages', function (data) {\n  console.log(data);\n});\n\nsocket.on('speechData', function (data) {\n  // console.log(data.results[0].alternatives[0].transcript);\n  var dataFinal = undefined || data.results[0].isFinal;\n\n  if (dataFinal === false) {\n    // console.log(resultText.lastElementChild);\n    if (removeLastSentence) {\n      resultText.lastElementChild.remove();\n    }\n    removeLastSentence = true;\n\n    //add empty span\n    let empty = document.createElement('span');\n    resultText.appendChild(empty);\n\n    //add children to empty span\n    let edit = addTimeSettingsInterim(data);\n\n    for (var i = 0; i < edit.length; i++) {\n      resultText.lastElementChild.appendChild(edit[i]);\n      resultText.lastElementChild.appendChild(\n        document.createTextNode('\\u00A0')\n      );\n    }\n  } else if (dataFinal === true) {\n    resultText.lastElementChild.remove();\n\n    //add empty span\n    let empty = document.createElement('span');\n    resultText.appendChild(empty);\n\n    //add children to empty span\n    let edit = addTimeSettingsFinal(data);\n    for (var i = 0; i < edit.length; i++) {\n      if (i === 0) {\n        edit[i].innerText = capitalize(edit[i].innerText);\n      }\n      resultText.lastElementChild.appendChild(edit[i]);\n\n      if (i !== edit.length - 1) {\n        resultText.lastElementChild.appendChild(\n          document.createTextNode('\\u00A0')\n        );\n      }\n    }\n    resultText.lastElementChild.appendChild(\n      document.createTextNode('\\u002E\\u00A0')\n    );\n\n    console.log(\"Google Speech sent 'final' Sentence.\");\n    finalWord = true;\n    endButton.disabled = false;\n\n    removeLastSentence = false;\n  }\n});\n\n//================= Juggling Spans for nlp Coloring =================\nfunction addTimeSettingsInterim(speechData) {\n  let wholeString = speechData.results[0].alternatives[0].transcript;\n  console.log(wholeString);\n\n  let nlpObject = nlp(wholeString).out('terms');\n\n  let words_without_time = [];\n\n  for (let i = 0; i < nlpObject.length; i++) {\n    //data\n    let word = nlpObject[i].text;\n    let tags = [];\n\n    //generate span\n    let newSpan = document.createElement('span');\n    newSpan.innerHTML = word;\n\n    //push all tags\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      tags.push(nlpObject[i].tags[j]);\n    }\n\n    //add all classes\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      let cleanClassName = tags[j];\n      // console.log(tags);\n      let className = `nl-${cleanClassName}`;\n      newSpan.classList.add(className);\n    }\n\n    words_without_time.push(newSpan);\n  }\n\n  finalWord = false;\n  endButton.disabled = true;\n\n  return words_without_time;\n}\n\nfunction addTimeSettingsFinal(speechData) {\n  let wholeString = speechData.results[0].alternatives[0].transcript;\n\n  let nlpObject = nlp(wholeString).out('terms');\n  let words = speechData.results[0].alternatives[0].words;\n\n  let words_n_time = [];\n\n  for (let i = 0; i < words.length; i++) {\n    //data\n    let word = words[i].word;\n    let startTime = `${words[i].startTime.seconds}.${words[i].startTime.nanos}`;\n    let endTime = `${words[i].endTime.seconds}.${words[i].endTime.nanos}`;\n    let tags = [];\n\n    //generate span\n    let newSpan = document.createElement('span');\n    newSpan.innerHTML = word;\n    newSpan.dataset.startTime = startTime;\n\n    //push all tags\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      tags.push(nlpObject[i].tags[j]);\n    }\n\n    //add all classes\n    for (let j = 0; j < nlpObject[i].tags.length; j++) {\n      let cleanClassName = nlpObject[i].tags[j];\n      // console.log(tags);\n      let className = `nl-${cleanClassName}`;\n      newSpan.classList.add(className);\n    }\n\n    words_n_time.push(newSpan);\n  }\n\n  return words_n_time;\n}\n\nwindow.onbeforeunload = function () {\n  if (streamStreaming) {\n    socket.emit('endGoogleCloudStream', '');\n  }\n};\n\n//================= SANTAS HELPERS =================\n\n// sampleRateHertz 16000 //saved sound is awefull\nfunction convertFloat32ToInt16(buffer) {\n  let l = buffer.length;\n  let buf = new Int16Array(l / 3);\n\n  while (l--) {\n    if (l % 3 == 0) {\n      buf[l / 3] = buffer[l] * 0xffff;\n    }\n  }\n  return buf.buffer;\n}\n\nvar downsampleBuffer = function (buffer, sampleRate, outSampleRate) {\n  if (outSampleRate == sampleRate) {\n    return buffer;\n  }\n  if (outSampleRate > sampleRate) {\n    throw 'downsampling rate show be smaller than original sample rate';\n  }\n  var sampleRateRatio = sampleRate / outSampleRate;\n  var newLength = Math.round(buffer.length / sampleRateRatio);\n  var result = new Int16Array(newLength);\n  var offsetResult = 0;\n  var offsetBuffer = 0;\n  while (offsetResult < result.length) {\n    var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n    var accum = 0,\n      count = 0;\n    for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n      accum += buffer[i];\n      count++;\n    }\n\n    result[offsetResult] = Math.min(1, accum / count) * 0x7fff;\n    offsetResult++;\n    offsetBuffer = nextOffsetBuffer;\n  }\n  return result.buffer;\n};\n\nfunction capitalize(s) {\n  if (s.length < 1) {\n    return s;\n  }\n  return s.charAt(0).toUpperCase() + s.slice(1);\n}\n"
  },
  {
    "path": "srcLogOnly/public/js/socket.io.js",
    "content": "/*!\n * Socket.IO v3.1.1\n * (c) 2014-2021 Guillermo Rauch\n * Released under the MIT License.\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"io\"] = factory();\n\telse\n\t\troot[\"io\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./build/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./build/index.js\":\n/*!************************!*\\\n  !*** ./build/index.js ***!\n  \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = exports.io = exports.Manager = exports.protocol = void 0;\n\nvar url_1 = __webpack_require__(/*! ./url */ \"./build/url.js\");\n\nvar manager_1 = __webpack_require__(/*! ./manager */ \"./build/manager.js\");\n\nvar socket_1 = __webpack_require__(/*! ./socket */ \"./build/socket.js\");\n\nObject.defineProperty(exports, \"Socket\", {\n  enumerable: true,\n  get: function get() {\n    return socket_1.Socket;\n  }\n});\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client\");\n/**\n * Module exports.\n */\n\n\nmodule.exports = exports = lookup;\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\nfunction lookup(uri, opts) {\n  if (_typeof(uri) === \"object\") {\n    opts = uri;\n    uri = undefined;\n  }\n\n  opts = opts || {};\n  var parsed = url_1.url(uri, opts.path);\n  var source = parsed.source;\n  var id = parsed.id;\n  var path = parsed.path;\n  var sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n  var newConnection = opts.forceNew || opts[\"force new connection\"] || false === opts.multiplex || sameNamespace;\n  var io;\n\n  if (newConnection) {\n    debug(\"ignoring socket cache for %s\", source);\n    io = new manager_1.Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      debug(\"new io instance for %s\", source);\n      cache[id] = new manager_1.Manager(source, opts);\n    }\n\n    io = cache[id];\n  }\n\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.queryKey;\n  }\n\n  return io.socket(parsed.path, opts);\n}\n\nexports.io = lookup;\n/**\n * Protocol version.\n *\n * @public\n */\n\nvar socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nObject.defineProperty(exports, \"protocol\", {\n  enumerable: true,\n  get: function get() {\n    return socket_io_parser_1.protocol;\n  }\n});\n/**\n * `connect`.\n *\n * @param {String} uri\n * @public\n */\n\nexports.connect = lookup;\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\n\nvar manager_2 = __webpack_require__(/*! ./manager */ \"./build/manager.js\");\n\nObject.defineProperty(exports, \"Manager\", {\n  enumerable: true,\n  get: function get() {\n    return manager_2.Manager;\n  }\n});\n\n/***/ }),\n\n/***/ \"./build/manager.js\":\n/*!**************************!*\\\n  !*** ./build/manager.js ***!\n  \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Manager = void 0;\n\nvar eio = __webpack_require__(/*! engine.io-client */ \"./node_modules/engine.io-client/lib/index.js\");\n\nvar socket_1 = __webpack_require__(/*! ./socket */ \"./build/socket.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar parser = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nvar on_1 = __webpack_require__(/*! ./on */ \"./build/on.js\");\n\nvar Backoff = __webpack_require__(/*! backo2 */ \"./node_modules/backo2/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:manager\");\n\nvar Manager = /*#__PURE__*/function (_Emitter) {\n  _inherits(Manager, _Emitter);\n\n  var _super = _createSuper(Manager);\n\n  function Manager(uri, opts) {\n    var _this;\n\n    _classCallCheck(this, Manager);\n\n    _this = _super.call(this);\n    _this.nsps = {};\n    _this.subs = [];\n\n    if (uri && \"object\" === _typeof(uri)) {\n      opts = uri;\n      uri = undefined;\n    }\n\n    opts = opts || {};\n    opts.path = opts.path || \"/socket.io\";\n    _this.opts = opts;\n\n    _this.reconnection(opts.reconnection !== false);\n\n    _this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n\n    _this.reconnectionDelay(opts.reconnectionDelay || 1000);\n\n    _this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n\n    _this.randomizationFactor(opts.randomizationFactor || 0.5);\n\n    _this.backoff = new Backoff({\n      min: _this.reconnectionDelay(),\n      max: _this.reconnectionDelayMax(),\n      jitter: _this.randomizationFactor()\n    });\n\n    _this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n\n    _this._readyState = \"closed\";\n    _this.uri = uri;\n\n    var _parser = opts.parser || parser;\n\n    _this.encoder = new _parser.Encoder();\n    _this.decoder = new _parser.Decoder();\n    _this._autoConnect = opts.autoConnect !== false;\n    if (_this._autoConnect) _this.open();\n    return _this;\n  }\n\n  _createClass(Manager, [{\n    key: \"reconnection\",\n    value: function reconnection(v) {\n      if (!arguments.length) return this._reconnection;\n      this._reconnection = !!v;\n      return this;\n    }\n  }, {\n    key: \"reconnectionAttempts\",\n    value: function reconnectionAttempts(v) {\n      if (v === undefined) return this._reconnectionAttempts;\n      this._reconnectionAttempts = v;\n      return this;\n    }\n  }, {\n    key: \"reconnectionDelay\",\n    value: function reconnectionDelay(v) {\n      var _a;\n\n      if (v === undefined) return this._reconnectionDelay;\n      this._reconnectionDelay = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n      return this;\n    }\n  }, {\n    key: \"randomizationFactor\",\n    value: function randomizationFactor(v) {\n      var _a;\n\n      if (v === undefined) return this._randomizationFactor;\n      this._randomizationFactor = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n      return this;\n    }\n  }, {\n    key: \"reconnectionDelayMax\",\n    value: function reconnectionDelayMax(v) {\n      var _a;\n\n      if (v === undefined) return this._reconnectionDelayMax;\n      this._reconnectionDelayMax = v;\n      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n      return this;\n    }\n  }, {\n    key: \"timeout\",\n    value: function timeout(v) {\n      if (!arguments.length) return this._timeout;\n      this._timeout = v;\n      return this;\n    }\n    /**\n     * Starts trying to reconnect if reconnection is enabled and we have not\n     * started reconnecting yet\n     *\n     * @private\n     */\n\n  }, {\n    key: \"maybeReconnectOnOpen\",\n    value: function maybeReconnectOnOpen() {\n      // Only try to reconnect if it's the first time we're connecting\n      if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n        // keeps reconnection from firing twice for the same reconnection loop\n        this.reconnect();\n      }\n    }\n    /**\n     * Sets the current transport `socket`.\n     *\n     * @param {Function} fn - optional, callback\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"open\",\n    value: function open(fn) {\n      var _this2 = this;\n\n      debug(\"readyState %s\", this._readyState);\n      if (~this._readyState.indexOf(\"open\")) return this;\n      debug(\"opening %s\", this.uri);\n      this.engine = eio(this.uri, this.opts);\n      var socket = this.engine;\n      var self = this;\n      this._readyState = \"opening\";\n      this.skipReconnect = false; // emit `open`\n\n      var openSubDestroy = on_1.on(socket, \"open\", function () {\n        self.onopen();\n        fn && fn();\n      }); // emit `error`\n\n      var errorSub = on_1.on(socket, \"error\", function (err) {\n        debug(\"error\");\n        self.cleanup();\n        self._readyState = \"closed\";\n\n        _get(_getPrototypeOf(Manager.prototype), \"emit\", _this2).call(_this2, \"error\", err);\n\n        if (fn) {\n          fn(err);\n        } else {\n          // Only do this if there is no fn to handle the error\n          self.maybeReconnectOnOpen();\n        }\n      });\n\n      if (false !== this._timeout) {\n        var timeout = this._timeout;\n        debug(\"connect attempt will timeout after %d\", timeout);\n\n        if (timeout === 0) {\n          openSubDestroy(); // prevents a race condition with the 'open' event\n        } // set timer\n\n\n        var timer = setTimeout(function () {\n          debug(\"connect attempt timed out after %d\", timeout);\n          openSubDestroy();\n          socket.close();\n          socket.emit(\"error\", new Error(\"timeout\"));\n        }, timeout);\n        this.subs.push(function subDestroy() {\n          clearTimeout(timer);\n        });\n      }\n\n      this.subs.push(openSubDestroy);\n      this.subs.push(errorSub);\n      return this;\n    }\n    /**\n     * Alias for open()\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"connect\",\n    value: function connect(fn) {\n      return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onopen\",\n    value: function onopen() {\n      debug(\"open\"); // clear old subs\n\n      this.cleanup(); // mark as open\n\n      this._readyState = \"open\";\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"open\"); // add new subs\n\n\n      var socket = this.engine;\n      this.subs.push(on_1.on(socket, \"ping\", this.onping.bind(this)), on_1.on(socket, \"data\", this.ondata.bind(this)), on_1.on(socket, \"error\", this.onerror.bind(this)), on_1.on(socket, \"close\", this.onclose.bind(this)), on_1.on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onping\",\n    value: function onping() {\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondata\",\n    value: function ondata(data) {\n      this.decoder.add(data);\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondecoded\",\n    value: function ondecoded(packet) {\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"packet\", packet);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onerror\",\n    value: function onerror(err) {\n      debug(\"error\", err);\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"error\", err);\n    }\n    /**\n     * Creates a new socket for the given `nsp`.\n     *\n     * @return {Socket}\n     * @public\n     */\n\n  }, {\n    key: \"socket\",\n    value: function socket(nsp, opts) {\n      var socket = this.nsps[nsp];\n\n      if (!socket) {\n        socket = new socket_1.Socket(this, nsp, opts);\n        this.nsps[nsp] = socket;\n      }\n\n      return socket;\n    }\n    /**\n     * Called upon a socket close.\n     *\n     * @param socket\n     * @private\n     */\n\n  }, {\n    key: \"_destroy\",\n    value: function _destroy(socket) {\n      var nsps = Object.keys(this.nsps);\n\n      for (var _i = 0, _nsps = nsps; _i < _nsps.length; _i++) {\n        var nsp = _nsps[_i];\n        var _socket = this.nsps[nsp];\n\n        if (_socket.active) {\n          debug(\"socket %s is still active, skipping close\", nsp);\n          return;\n        }\n      }\n\n      this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"_packet\",\n    value: function _packet(packet) {\n      debug(\"writing packet %j\", packet);\n      var encodedPackets = this.encoder.encode(packet);\n\n      for (var i = 0; i < encodedPackets.length; i++) {\n        this.engine.write(encodedPackets[i], packet.options);\n      }\n    }\n    /**\n     * Clean up transport subscriptions and packet buffer.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"cleanup\",\n    value: function cleanup() {\n      debug(\"cleanup\");\n      this.subs.forEach(function (subDestroy) {\n        return subDestroy();\n      });\n      this.subs.length = 0;\n      this.decoder.destroy();\n    }\n    /**\n     * Close the current socket.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"_close\",\n    value: function _close() {\n      debug(\"disconnect\");\n      this.skipReconnect = true;\n      this._reconnecting = false;\n\n      if (\"opening\" === this._readyState) {\n        // `onclose` will not fire because\n        // an open event never happened\n        this.cleanup();\n      }\n\n      this.backoff.reset();\n      this._readyState = \"closed\";\n      if (this.engine) this.engine.close();\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\n     */\n\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      return this._close();\n    }\n    /**\n     * Called upon engine close.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onclose\",\n    value: function onclose(reason) {\n      debug(\"onclose\");\n      this.cleanup();\n      this.backoff.reset();\n      this._readyState = \"closed\";\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"close\", reason);\n\n      if (this._reconnection && !this.skipReconnect) {\n        this.reconnect();\n      }\n    }\n    /**\n     * Attempt a reconnection.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      var _this3 = this;\n\n      if (this._reconnecting || this.skipReconnect) return this;\n      var self = this;\n\n      if (this.backoff.attempts >= this._reconnectionAttempts) {\n        debug(\"reconnect failed\");\n        this.backoff.reset();\n\n        _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"reconnect_failed\");\n\n        this._reconnecting = false;\n      } else {\n        var delay = this.backoff.duration();\n        debug(\"will wait %dms before reconnect attempt\", delay);\n        this._reconnecting = true;\n        var timer = setTimeout(function () {\n          if (self.skipReconnect) return;\n          debug(\"attempting reconnect\");\n\n          _get(_getPrototypeOf(Manager.prototype), \"emit\", _this3).call(_this3, \"reconnect_attempt\", self.backoff.attempts); // check again for the case socket closed in above events\n\n\n          if (self.skipReconnect) return;\n          self.open(function (err) {\n            if (err) {\n              debug(\"reconnect attempt error\");\n              self._reconnecting = false;\n              self.reconnect();\n\n              _get(_getPrototypeOf(Manager.prototype), \"emit\", _this3).call(_this3, \"reconnect_error\", err);\n            } else {\n              debug(\"reconnect success\");\n              self.onreconnect();\n            }\n          });\n        }, delay);\n        this.subs.push(function subDestroy() {\n          clearTimeout(timer);\n        });\n      }\n    }\n    /**\n     * Called upon successful reconnect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onreconnect\",\n    value: function onreconnect() {\n      var attempt = this.backoff.attempts;\n      this._reconnecting = false;\n      this.backoff.reset();\n\n      _get(_getPrototypeOf(Manager.prototype), \"emit\", this).call(this, \"reconnect\", attempt);\n    }\n  }]);\n\n  return Manager;\n}(Emitter);\n\nexports.Manager = Manager;\n\n/***/ }),\n\n/***/ \"./build/on.js\":\n/*!*********************!*\\\n  !*** ./build/on.js ***!\n  \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.on = void 0;\n\nfunction on(obj, ev, fn) {\n  obj.on(ev, fn);\n  return function subDestroy() {\n    obj.off(ev, fn);\n  };\n}\n\nexports.on = on;\n\n/***/ }),\n\n/***/ \"./build/socket.js\":\n/*!*************************!*\\\n  !*** ./build/socket.js ***!\n  \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = void 0;\n\nvar socket_io_parser_1 = __webpack_require__(/*! socket.io-parser */ \"./node_modules/socket.io-parser/dist/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar on_1 = __webpack_require__(/*! ./on */ \"./build/on.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:socket\");\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\n\n\nvar RESERVED_EVENTS = Object.freeze({\n  connect: 1,\n  connect_error: 1,\n  disconnect: 1,\n  disconnecting: 1,\n  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n  newListener: 1,\n  removeListener: 1\n});\n\nvar Socket = /*#__PURE__*/function (_Emitter) {\n  _inherits(Socket, _Emitter);\n\n  var _super = _createSuper(Socket);\n\n  /**\n   * `Socket` constructor.\n   *\n   * @public\n   */\n  function Socket(io, nsp, opts) {\n    var _this;\n\n    _classCallCheck(this, Socket);\n\n    _this = _super.call(this);\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.ids = 0;\n    _this.acks = {};\n    _this.flags = {};\n    _this.io = io;\n    _this.nsp = nsp;\n    _this.ids = 0;\n    _this.acks = {};\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.connected = false;\n    _this.disconnected = true;\n    _this.flags = {};\n\n    if (opts && opts.auth) {\n      _this.auth = opts.auth;\n    }\n\n    if (_this.io._autoConnect) _this.open();\n    return _this;\n  }\n  /**\n   * Subscribe to open, close and packet events\n   *\n   * @private\n   */\n\n\n  _createClass(Socket, [{\n    key: \"subEvents\",\n    value: function subEvents() {\n      if (this.subs) return;\n      var io = this.io;\n      this.subs = [on_1.on(io, \"open\", this.onopen.bind(this)), on_1.on(io, \"packet\", this.onpacket.bind(this)), on_1.on(io, \"error\", this.onerror.bind(this)), on_1.on(io, \"close\", this.onclose.bind(this))];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects\n     */\n\n  }, {\n    key: \"connect\",\n\n    /**\n     * \"Opens\" the socket.\n     *\n     * @public\n     */\n    value: function connect() {\n      if (this.connected) return this;\n      this.subEvents();\n      if (!this.io[\"_reconnecting\"]) this.io.open(); // ensure open\n\n      if (\"open\" === this.io._readyState) this.onopen();\n      return this;\n    }\n    /**\n     * Alias for connect()\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"send\",\n    value: function send() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      args.unshift(\"message\");\n      this.emit.apply(this, args);\n      return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @param ev - event name\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"emit\",\n    value: function emit(ev) {\n      if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n        throw new Error('\"' + ev + '\" is a reserved event name');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      args.unshift(ev);\n      var packet = {\n        type: socket_io_parser_1.PacketType.EVENT,\n        data: args\n      };\n      packet.options = {};\n      packet.options.compress = this.flags.compress !== false; // event ack callback\n\n      if (\"function\" === typeof args[args.length - 1]) {\n        debug(\"emitting packet with ack id %d\", this.ids);\n        this.acks[this.ids] = args.pop();\n        packet.id = this.ids++;\n      }\n\n      var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;\n      var discardPacket = this.flags[\"volatile\"] && (!isTransportWritable || !this.connected);\n\n      if (discardPacket) {\n        debug(\"discard packet as the transport is not currently writable\");\n      } else if (this.connected) {\n        this.packet(packet);\n      } else {\n        this.sendBuffer.push(packet);\n      }\n\n      this.flags = {};\n      return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"packet\",\n    value: function packet(_packet) {\n      _packet.nsp = this.nsp;\n\n      this.io._packet(_packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onopen\",\n    value: function onopen() {\n      var _this2 = this;\n\n      debug(\"transport is open - connecting\");\n\n      if (typeof this.auth == \"function\") {\n        this.auth(function (data) {\n          _this2.packet({\n            type: socket_io_parser_1.PacketType.CONNECT,\n            data: data\n          });\n        });\n      } else {\n        this.packet({\n          type: socket_io_parser_1.PacketType.CONNECT,\n          data: this.auth\n        });\n      }\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n\n  }, {\n    key: \"onerror\",\n    value: function onerror(err) {\n      if (!this.connected) {\n        _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", err);\n      }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @private\n     */\n\n  }, {\n    key: \"onclose\",\n    value: function onclose(reason) {\n      debug(\"close (%s)\", reason);\n      this.connected = false;\n      this.disconnected = true;\n      delete this.id;\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"disconnect\", reason);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onpacket\",\n    value: function onpacket(packet) {\n      var sameNamespace = packet.nsp === this.nsp;\n      if (!sameNamespace) return;\n\n      switch (packet.type) {\n        case socket_io_parser_1.PacketType.CONNECT:\n          if (packet.data && packet.data.sid) {\n            var id = packet.data.sid;\n            this.onconnect(id);\n          } else {\n            _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n          }\n\n          break;\n\n        case socket_io_parser_1.PacketType.EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.DISCONNECT:\n          this.ondisconnect();\n          break;\n\n        case socket_io_parser_1.PacketType.CONNECT_ERROR:\n          var err = new Error(packet.data.message); // @ts-ignore\n\n          err.data = packet.data.data;\n\n          _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect_error\", err);\n\n          break;\n      }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onevent\",\n    value: function onevent(packet) {\n      var args = packet.data || [];\n      debug(\"emitting event %j\", args);\n\n      if (null != packet.id) {\n        debug(\"attaching ack callback to event\");\n        args.push(this.ack(packet.id));\n      }\n\n      if (this.connected) {\n        this.emitEvent(args);\n      } else {\n        this.receiveBuffer.push(Object.freeze(args));\n      }\n    }\n  }, {\n    key: \"emitEvent\",\n    value: function emitEvent(args) {\n      if (this._anyListeners && this._anyListeners.length) {\n        var listeners = this._anyListeners.slice();\n\n        var _iterator = _createForOfIteratorHelper(listeners),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var listener = _step.value;\n            listener.apply(this, args);\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      }\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).apply(this, args);\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ack\",\n    value: function ack(id) {\n      var self = this;\n      var sent = false;\n      return function () {\n        // prevent double callbacks\n        if (sent) return;\n        sent = true;\n\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n          args[_key3] = arguments[_key3];\n        }\n\n        debug(\"sending ack %j\", args);\n        self.packet({\n          type: socket_io_parser_1.PacketType.ACK,\n          id: id,\n          data: args\n        });\n      };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onack\",\n    value: function onack(packet) {\n      var ack = this.acks[packet.id];\n\n      if (\"function\" === typeof ack) {\n        debug(\"calling ack %s with %j\", packet.id, packet.data);\n        ack.apply(this, packet.data);\n        delete this.acks[packet.id];\n      } else {\n        debug(\"bad ack %s\", packet.id);\n      }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onconnect\",\n    value: function onconnect(id) {\n      debug(\"socket connected with id %s\", id);\n      this.id = id;\n      this.connected = true;\n      this.disconnected = false;\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).call(this, \"connect\");\n\n      this.emitBuffered();\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n\n  }, {\n    key: \"emitBuffered\",\n    value: function emitBuffered() {\n      var _this3 = this;\n\n      this.receiveBuffer.forEach(function (args) {\n        return _this3.emitEvent(args);\n      });\n      this.receiveBuffer = [];\n      this.sendBuffer.forEach(function (packet) {\n        return _this3.packet(packet);\n      });\n      this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondisconnect\",\n    value: function ondisconnect() {\n      debug(\"server disconnect (%s)\", this.nsp);\n      this.destroy();\n      this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      if (this.subs) {\n        // clean subscriptions to avoid reconnections\n        this.subs.forEach(function (subDestroy) {\n          return subDestroy();\n        });\n        this.subs = undefined;\n      }\n\n      this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      if (this.connected) {\n        debug(\"performing disconnect (%s)\", this.nsp);\n        this.packet({\n          type: socket_io_parser_1.PacketType.DISCONNECT\n        });\n      } // remove socket from pool\n\n\n      this.destroy();\n\n      if (this.connected) {\n        // fire events\n        this.onclose(\"io client disconnect\");\n      }\n\n      return this;\n    }\n    /**\n     * Alias for disconnect()\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"compress\",\n    value: function compress(_compress) {\n      this.flags.compress = _compress;\n      return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @returns self\n     * @public\n     */\n\n  }, {\n    key: \"onAny\",\n\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @param listener\n     * @public\n     */\n    value: function onAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.push(listener);\n\n      return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"prependAny\",\n    value: function prependAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.unshift(listener);\n\n      return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"offAny\",\n    value: function offAny(listener) {\n      if (!this._anyListeners) {\n        return this;\n      }\n\n      if (listener) {\n        var listeners = this._anyListeners;\n\n        for (var i = 0; i < listeners.length; i++) {\n          if (listener === listeners[i]) {\n            listeners.splice(i, 1);\n            return this;\n          }\n        }\n      } else {\n        this._anyListeners = [];\n      }\n\n      return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n\n  }, {\n    key: \"listenersAny\",\n    value: function listenersAny() {\n      return this._anyListeners || [];\n    }\n  }, {\n    key: \"active\",\n    get: function get() {\n      return !!this.subs;\n    }\n  }, {\n    key: \"volatile\",\n    get: function get() {\n      this.flags[\"volatile\"] = true;\n      return this;\n    }\n  }]);\n\n  return Socket;\n}(Emitter);\n\nexports.Socket = Socket;\n\n/***/ }),\n\n/***/ \"./build/url.js\":\n/*!**********************!*\\\n  !*** ./build/url.js ***!\n  \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.url = void 0;\n\nvar parseuri = __webpack_require__(/*! parseuri */ \"./node_modules/parseuri/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-client:url\");\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */\n\n\nfunction url(uri) {\n  var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n  var loc = arguments.length > 2 ? arguments[2] : undefined;\n  var obj = uri; // default to window.location\n\n  loc = loc || typeof location !== \"undefined\" && location;\n  if (null == uri) uri = loc.protocol + \"//\" + loc.host; // relative path support\n\n  if (typeof uri === \"string\") {\n    if (\"/\" === uri.charAt(0)) {\n      if (\"/\" === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      debug(\"protocol-less url %s\", uri);\n\n      if (\"undefined\" !== typeof loc) {\n        uri = loc.protocol + \"//\" + uri;\n      } else {\n        uri = \"https://\" + uri;\n      }\n    } // parse\n\n\n    debug(\"parse %s\", uri);\n    obj = parseuri(uri);\n  } // make sure we treat `localhost:80` and `localhost` equally\n\n\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = \"80\";\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = \"443\";\n    }\n  }\n\n  obj.path = obj.path || \"/\";\n  var ipv6 = obj.host.indexOf(\":\") !== -1;\n  var host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host; // define unique id\n\n  obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path; // define href\n\n  obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n  return obj;\n}\n\nexports.url = url;\n\n/***/ }),\n\n/***/ \"./node_modules/backo2/index.js\":\n/*!**************************************!*\\\n  !*** ./node_modules/backo2/index.js ***!\n  \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Expose `Backoff`.\n */\nmodule.exports = Backoff;\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 10000;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\n\nBackoff.prototype.duration = function () {\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n\n  if (this.jitter) {\n    var rand = Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n  }\n\n  return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\n\nBackoff.prototype.reset = function () {\n  this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\n\nBackoff.prototype.setMin = function (min) {\n  this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\n\nBackoff.prototype.setMax = function (max) {\n  this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\n\n\nBackoff.prototype.setJitter = function (jitter) {\n  this.jitter = jitter;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/component-emitter/index.js\":\n/*!*************************************************!*\\\n  !*** ./node_modules/component-emitter/index.js ***!\n  \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\r\n * Expose `Emitter`.\r\n */\nif (true) {\n  module.exports = Emitter;\n}\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\n\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n}\n\n;\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n\n  return obj;\n}\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) {\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn);\n  return this;\n};\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.once = function (event, fn) {\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\n\n\nEmitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) {\n  this._callbacks = this._callbacks || {}; // all\n\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  } // specific event\n\n\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this; // remove all handlers\n\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  } // remove specific handler\n\n\n  var cb;\n\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  } // Remove event specific arrays for event types that no\n  // one is subscribed for to avoid memory leak.\n\n\n  if (callbacks.length === 0) {\n    delete this._callbacks['$' + event];\n  }\n\n  return this;\n};\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\n\n\nEmitter.prototype.emit = function (event) {\n  this._callbacks = this._callbacks || {};\n  var args = new Array(arguments.length - 1),\n      callbacks = this._callbacks['$' + event];\n\n  for (var i = 1; i < arguments.length; i++) {\n    args[i - 1] = arguments[i];\n  }\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\n\n\nEmitter.prototype.listeners = function (event) {\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\n\n\nEmitter.prototype.hasListeners = function (event) {\n  return !!this.listeners(event).length;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/debug/src/browser.js\":\n/*!*******************************************!*\\\n  !*** ./node_modules/debug/src/browser.js ***!\n  \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\nexports.destroy = function () {\n  var warned = false;\n  return function () {\n    if (!warned) {\n      warned = true;\n      console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n    }\n  };\n}();\n/**\n * Colors.\n */\n\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n    return true;\n  } // Internet Explorer and Edge do not support colors.\n\n\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  } // Is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n  if (!this.useColors) {\n    return;\n  }\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function (match) {\n    if (match === '%%') {\n      return;\n    }\n\n    index++;\n\n    if (match === '%c') {\n      // We only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n  args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\n\n\nexports.log = console.debug || console.log || function () {};\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n  try {\n    if (namespaces) {\n      exports.storage.setItem('debug', namespaces);\n    } else {\n      exports.storage.removeItem('debug');\n    }\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n  var r;\n\n  try {\n    r = exports.storage.getItem('debug');\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n  try {\n    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n    // The Browser also has localStorage in the global context.\n    return localStorage;\n  } catch (error) {// Swallow\n    // XXX (@Qix-) should we be logging these?\n  }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n  try {\n    return JSON.stringify(v);\n  } catch (error) {\n    return '[UnexpectedJSONParseError]: ' + error.message;\n  }\n};\n\n/***/ }),\n\n/***/ \"./node_modules/debug/src/common.js\":\n/*!******************************************!*\\\n  !*** ./node_modules/debug/src/common.js ***!\n  \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n  createDebug.debug = createDebug;\n  createDebug[\"default\"] = createDebug;\n  createDebug.coerce = coerce;\n  createDebug.disable = disable;\n  createDebug.enable = enable;\n  createDebug.enabled = enabled;\n  createDebug.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n  createDebug.destroy = destroy;\n  Object.keys(env).forEach(function (key) {\n    createDebug[key] = env[key];\n  });\n  /**\n  * The currently active debug mode names, and names to skip.\n  */\n\n  createDebug.names = [];\n  createDebug.skips = [];\n  /**\n  * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n  *\n  * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n  */\n\n  createDebug.formatters = {};\n  /**\n  * Selects a color for a debug namespace\n  * @param {String} namespace The namespace string for the for the debug instance to be colored\n  * @return {Number|String} An ANSI color code for the given namespace\n  * @api private\n  */\n\n  function selectColor(namespace) {\n    var hash = 0;\n\n    for (var i = 0; i < namespace.length; i++) {\n      hash = (hash << 5) - hash + namespace.charCodeAt(i);\n      hash |= 0; // Convert to 32bit integer\n    }\n\n    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n  }\n\n  createDebug.selectColor = selectColor;\n  /**\n  * Create a debugger with the given `namespace`.\n  *\n  * @param {String} namespace\n  * @return {Function}\n  * @api public\n  */\n\n  function createDebug(namespace) {\n    var prevTime;\n    var enableOverride = null;\n\n    function debug() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      // Disabled?\n      if (!debug.enabled) {\n        return;\n      }\n\n      var self = debug; // Set `diff` timestamp\n\n      var curr = Number(new Date());\n      var ms = curr - (prevTime || curr);\n      self.diff = ms;\n      self.prev = prevTime;\n      self.curr = curr;\n      prevTime = curr;\n      args[0] = createDebug.coerce(args[0]);\n\n      if (typeof args[0] !== 'string') {\n        // Anything else let's inspect with %O\n        args.unshift('%O');\n      } // Apply any `formatters` transformations\n\n\n      var index = 0;\n      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n        // If we encounter an escaped % then don't increase the array index\n        if (match === '%%') {\n          return '%';\n        }\n\n        index++;\n        var formatter = createDebug.formatters[format];\n\n        if (typeof formatter === 'function') {\n          var val = args[index];\n          match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n          args.splice(index, 1);\n          index--;\n        }\n\n        return match;\n      }); // Apply env-specific formatting (colors, etc.)\n\n      createDebug.formatArgs.call(self, args);\n      var logFn = self.log || createDebug.log;\n      logFn.apply(self, args);\n    }\n\n    debug.namespace = namespace;\n    debug.useColors = createDebug.useColors();\n    debug.color = createDebug.selectColor(namespace);\n    debug.extend = extend;\n    debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n    Object.defineProperty(debug, 'enabled', {\n      enumerable: true,\n      configurable: false,\n      get: function get() {\n        return enableOverride === null ? createDebug.enabled(namespace) : enableOverride;\n      },\n      set: function set(v) {\n        enableOverride = v;\n      }\n    }); // Env-specific initialization logic for debug instances\n\n    if (typeof createDebug.init === 'function') {\n      createDebug.init(debug);\n    }\n\n    return debug;\n  }\n\n  function extend(namespace, delimiter) {\n    var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n    newDebug.log = this.log;\n    return newDebug;\n  }\n  /**\n  * Enables a debug mode by namespaces. This can include modes\n  * separated by a colon and wildcards.\n  *\n  * @param {String} namespaces\n  * @api public\n  */\n\n\n  function enable(namespaces) {\n    createDebug.save(namespaces);\n    createDebug.names = [];\n    createDebug.skips = [];\n    var i;\n    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n    var len = split.length;\n\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue;\n      }\n\n      namespaces = split[i].replace(/\\*/g, '.*?');\n\n      if (namespaces[0] === '-') {\n        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n      } else {\n        createDebug.names.push(new RegExp('^' + namespaces + '$'));\n      }\n    }\n  }\n  /**\n  * Disable debug output.\n  *\n  * @return {String} namespaces\n  * @api public\n  */\n\n\n  function disable() {\n    var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {\n      return '-' + namespace;\n    }))).join(',');\n    createDebug.enable('');\n    return namespaces;\n  }\n  /**\n  * Returns true if the given mode name is enabled, false otherwise.\n  *\n  * @param {String} name\n  * @return {Boolean}\n  * @api public\n  */\n\n\n  function enabled(name) {\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    var i;\n    var len;\n\n    for (i = 0, len = createDebug.skips.length; i < len; i++) {\n      if (createDebug.skips[i].test(name)) {\n        return false;\n      }\n    }\n\n    for (i = 0, len = createDebug.names.length; i < len; i++) {\n      if (createDebug.names[i].test(name)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n  /**\n  * Convert regexp to namespace\n  *\n  * @param {RegExp} regxep\n  * @return {String} namespace\n  * @api private\n  */\n\n\n  function toNamespace(regexp) {\n    return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\\.\\*\\?$/, '*');\n  }\n  /**\n  * Coerce `val`.\n  *\n  * @param {Mixed} val\n  * @return {Mixed}\n  * @api private\n  */\n\n\n  function coerce(val) {\n    if (val instanceof Error) {\n      return val.stack || val.message;\n    }\n\n    return val;\n  }\n  /**\n  * XXX DO NOT USE. This is a temporary stub function.\n  * XXX It WILL be removed in the next major release.\n  */\n\n\n  function destroy() {\n    console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n  }\n\n  createDebug.enable(createDebug.load());\n  return createDebug;\n}\n\nmodule.exports = setup;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/globalThis.browser.js\":\n/*!*****************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/globalThis.browser.js ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function () {\n  if (typeof self !== \"undefined\") {\n    return self;\n  } else if (typeof window !== \"undefined\") {\n    return window;\n  } else {\n    return Function(\"return this\")();\n  }\n}();\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/index.js\":\n/*!****************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/index.js ***!\n  \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Socket = __webpack_require__(/*! ./socket */ \"./node_modules/engine.io-client/lib/socket.js\");\n\nmodule.exports = function (uri, opts) {\n  return new Socket(uri, opts);\n};\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\n\nmodule.exports.Socket = Socket;\nmodule.exports.protocol = Socket.protocol; // this is an int\n\nmodule.exports.Transport = __webpack_require__(/*! ./transport */ \"./node_modules/engine.io-client/lib/transport.js\");\nmodule.exports.transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\nmodule.exports.parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/socket.js\":\n/*!*****************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/socket.js ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:socket\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar parseuri = __webpack_require__(/*! parseuri */ \"./node_modules/parseuri/index.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar Socket = /*#__PURE__*/function (_Emitter) {\n  _inherits(Socket, _Emitter);\n\n  var _super = _createSuper(Socket);\n\n  /**\n   * Socket constructor.\n   *\n   * @param {String|Object} uri or options\n   * @param {Object} options\n   * @api public\n   */\n  function Socket(uri) {\n    var _this;\n\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Socket);\n\n    _this = _super.call(this);\n\n    if (uri && \"object\" === _typeof(uri)) {\n      opts = uri;\n      uri = null;\n    }\n\n    if (uri) {\n      uri = parseuri(uri);\n      opts.hostname = uri.host;\n      opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n      opts.port = uri.port;\n      if (uri.query) opts.query = uri.query;\n    } else if (opts.host) {\n      opts.hostname = parseuri(opts.host).host;\n    }\n\n    _this.secure = null != opts.secure ? opts.secure : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n\n    if (opts.hostname && !opts.port) {\n      // if no port is specified manually, use the protocol default\n      opts.port = _this.secure ? \"443\" : \"80\";\n    }\n\n    _this.hostname = opts.hostname || (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n    _this.port = opts.port || (typeof location !== \"undefined\" && location.port ? location.port : _this.secure ? 443 : 80);\n    _this.transports = opts.transports || [\"polling\", \"websocket\"];\n    _this.readyState = \"\";\n    _this.writeBuffer = [];\n    _this.prevBufferLen = 0;\n    _this.opts = _extends({\n      path: \"/engine.io\",\n      agent: false,\n      withCredentials: false,\n      upgrade: true,\n      jsonp: true,\n      timestampParam: \"t\",\n      rememberUpgrade: false,\n      rejectUnauthorized: true,\n      perMessageDeflate: {\n        threshold: 1024\n      },\n      transportOptions: {}\n    }, opts);\n    _this.opts.path = _this.opts.path.replace(/\\/$/, \"\") + \"/\";\n\n    if (typeof _this.opts.query === \"string\") {\n      _this.opts.query = parseqs.decode(_this.opts.query);\n    } // set on handshake\n\n\n    _this.id = null;\n    _this.upgrades = null;\n    _this.pingInterval = null;\n    _this.pingTimeout = null; // set on heartbeat\n\n    _this.pingTimeoutTimer = null;\n\n    _this.open();\n\n    return _this;\n  }\n  /**\n   * Creates transport of the given type.\n   *\n   * @param {String} transport name\n   * @return {Transport}\n   * @api private\n   */\n\n\n  _createClass(Socket, [{\n    key: \"createTransport\",\n    value: function createTransport(name) {\n      debug('creating transport \"%s\"', name);\n      var query = clone(this.opts.query); // append engine.io protocol identifier\n\n      query.EIO = parser.protocol; // transport name\n\n      query.transport = name; // session id if we already have one\n\n      if (this.id) query.sid = this.id;\n\n      var opts = _extends({}, this.opts.transportOptions[name], this.opts, {\n        query: query,\n        socket: this,\n        hostname: this.hostname,\n        secure: this.secure,\n        port: this.port\n      });\n\n      debug(\"options: %j\", opts);\n      return new transports[name](opts);\n    }\n    /**\n     * Initializes transport to use and starts probe.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      var transport;\n\n      if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf(\"websocket\") !== -1) {\n        transport = \"websocket\";\n      } else if (0 === this.transports.length) {\n        // Emit error on next tick so it can be listened to\n        var self = this;\n        setTimeout(function () {\n          self.emit(\"error\", \"No transports available\");\n        }, 0);\n        return;\n      } else {\n        transport = this.transports[0];\n      }\n\n      this.readyState = \"opening\"; // Retry with the next transport if the transport is disabled (jsonp: false)\n\n      try {\n        transport = this.createTransport(transport);\n      } catch (e) {\n        debug(\"error while creating transport: %s\", e);\n        this.transports.shift();\n        this.open();\n        return;\n      }\n\n      transport.open();\n      this.setTransport(transport);\n    }\n    /**\n     * Sets the current transport. Disables the existing one (if any).\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"setTransport\",\n    value: function setTransport(transport) {\n      debug(\"setting transport %s\", transport.name);\n      var self = this;\n\n      if (this.transport) {\n        debug(\"clearing existing transport %s\", this.transport.name);\n        this.transport.removeAllListeners();\n      } // set up transport\n\n\n      this.transport = transport; // set up transport listeners\n\n      transport.on(\"drain\", function () {\n        self.onDrain();\n      }).on(\"packet\", function (packet) {\n        self.onPacket(packet);\n      }).on(\"error\", function (e) {\n        self.onError(e);\n      }).on(\"close\", function () {\n        self.onClose(\"transport close\");\n      });\n    }\n    /**\n     * Probes a transport.\n     *\n     * @param {String} transport name\n     * @api private\n     */\n\n  }, {\n    key: \"probe\",\n    value: function probe(name) {\n      debug('probing transport \"%s\"', name);\n      var transport = this.createTransport(name, {\n        probe: 1\n      });\n      var failed = false;\n      var self = this;\n      Socket.priorWebsocketSuccess = false;\n\n      function onTransportOpen() {\n        if (self.onlyBinaryUpgrades) {\n          var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n          failed = failed || upgradeLosesBinary;\n        }\n\n        if (failed) return;\n        debug('probe transport \"%s\" opened', name);\n        transport.send([{\n          type: \"ping\",\n          data: \"probe\"\n        }]);\n        transport.once(\"packet\", function (msg) {\n          if (failed) return;\n\n          if (\"pong\" === msg.type && \"probe\" === msg.data) {\n            debug('probe transport \"%s\" pong', name);\n            self.upgrading = true;\n            self.emit(\"upgrading\", transport);\n            if (!transport) return;\n            Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n            debug('pausing current transport \"%s\"', self.transport.name);\n            self.transport.pause(function () {\n              if (failed) return;\n              if (\"closed\" === self.readyState) return;\n              debug(\"changing transport and sending upgrade packet\");\n              cleanup();\n              self.setTransport(transport);\n              transport.send([{\n                type: \"upgrade\"\n              }]);\n              self.emit(\"upgrade\", transport);\n              transport = null;\n              self.upgrading = false;\n              self.flush();\n            });\n          } else {\n            debug('probe transport \"%s\" failed', name);\n            var err = new Error(\"probe error\");\n            err.transport = transport.name;\n            self.emit(\"upgradeError\", err);\n          }\n        });\n      }\n\n      function freezeTransport() {\n        if (failed) return; // Any callback called by transport should be ignored since now\n\n        failed = true;\n        cleanup();\n        transport.close();\n        transport = null;\n      } // Handle any error that happens while probing\n\n\n      function onerror(err) {\n        var error = new Error(\"probe error: \" + err);\n        error.transport = transport.name;\n        freezeTransport();\n        debug('probe transport \"%s\" failed because of error: %s', name, err);\n        self.emit(\"upgradeError\", error);\n      }\n\n      function onTransportClose() {\n        onerror(\"transport closed\");\n      } // When the socket is closed while we're probing\n\n\n      function onclose() {\n        onerror(\"socket closed\");\n      } // When the socket is upgraded while we're probing\n\n\n      function onupgrade(to) {\n        if (transport && to.name !== transport.name) {\n          debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n          freezeTransport();\n        }\n      } // Remove all listeners on the transport and on self\n\n\n      function cleanup() {\n        transport.removeListener(\"open\", onTransportOpen);\n        transport.removeListener(\"error\", onerror);\n        transport.removeListener(\"close\", onTransportClose);\n        self.removeListener(\"close\", onclose);\n        self.removeListener(\"upgrading\", onupgrade);\n      }\n\n      transport.once(\"open\", onTransportOpen);\n      transport.once(\"error\", onerror);\n      transport.once(\"close\", onTransportClose);\n      this.once(\"close\", onclose);\n      this.once(\"upgrading\", onupgrade);\n      transport.open();\n    }\n    /**\n     * Called when connection is deemed open.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"onOpen\",\n    value: function onOpen() {\n      debug(\"socket open\");\n      this.readyState = \"open\";\n      Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n      this.emit(\"open\");\n      this.flush(); // we check for `readyState` in case an `open`\n      // listener already closed the socket\n\n      if (\"open\" === this.readyState && this.opts.upgrade && this.transport.pause) {\n        debug(\"starting upgrade probes\");\n        var i = 0;\n        var l = this.upgrades.length;\n\n        for (; i < l; i++) {\n          this.probe(this.upgrades[i]);\n        }\n      }\n    }\n    /**\n     * Handles a packet.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onPacket\",\n    value: function onPacket(packet) {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n        debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n        this.emit(\"packet\", packet); // Socket is live - any packet counts\n\n        this.emit(\"heartbeat\");\n\n        switch (packet.type) {\n          case \"open\":\n            this.onHandshake(JSON.parse(packet.data));\n            break;\n\n          case \"ping\":\n            this.resetPingTimeout();\n            this.sendPacket(\"pong\");\n            this.emit(\"pong\");\n            break;\n\n          case \"error\":\n            var err = new Error(\"server error\");\n            err.code = packet.data;\n            this.onError(err);\n            break;\n\n          case \"message\":\n            this.emit(\"data\", packet.data);\n            this.emit(\"message\", packet.data);\n            break;\n        }\n      } else {\n        debug('packet received with socket readyState \"%s\"', this.readyState);\n      }\n    }\n    /**\n     * Called upon handshake completion.\n     *\n     * @param {Object} handshake obj\n     * @api private\n     */\n\n  }, {\n    key: \"onHandshake\",\n    value: function onHandshake(data) {\n      this.emit(\"handshake\", data);\n      this.id = data.sid;\n      this.transport.query.sid = data.sid;\n      this.upgrades = this.filterUpgrades(data.upgrades);\n      this.pingInterval = data.pingInterval;\n      this.pingTimeout = data.pingTimeout;\n      this.onOpen(); // In case open handler closes socket\n\n      if (\"closed\" === this.readyState) return;\n      this.resetPingTimeout();\n    }\n    /**\n     * Sets and resets ping timeout timer based on server pings.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"resetPingTimeout\",\n    value: function resetPingTimeout() {\n      var _this2 = this;\n\n      clearTimeout(this.pingTimeoutTimer);\n      this.pingTimeoutTimer = setTimeout(function () {\n        _this2.onClose(\"ping timeout\");\n      }, this.pingInterval + this.pingTimeout);\n    }\n    /**\n     * Called on `drain` event\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onDrain\",\n    value: function onDrain() {\n      this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important\n      // for example, when upgrading, upgrade packet is sent over,\n      // and a nonzero prevBufferLen could cause problems on `drain`\n\n      this.prevBufferLen = 0;\n\n      if (0 === this.writeBuffer.length) {\n        this.emit(\"drain\");\n      } else {\n        this.flush();\n      }\n    }\n    /**\n     * Flush write buffers.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"flush\",\n    value: function flush() {\n      if (\"closed\" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n        debug(\"flushing %d packets in socket\", this.writeBuffer.length);\n        this.transport.send(this.writeBuffer); // keep track of current length of writeBuffer\n        // splice writeBuffer and callbackBuffer on `drain`\n\n        this.prevBufferLen = this.writeBuffer.length;\n        this.emit(\"flush\");\n      }\n    }\n    /**\n     * Sends a message.\n     *\n     * @param {String} message.\n     * @param {Function} callback function.\n     * @param {Object} options.\n     * @return {Socket} for chaining.\n     * @api public\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(msg, options, fn) {\n      this.sendPacket(\"message\", msg, options, fn);\n      return this;\n    }\n  }, {\n    key: \"send\",\n    value: function send(msg, options, fn) {\n      this.sendPacket(\"message\", msg, options, fn);\n      return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param {String} packet type.\n     * @param {String} data.\n     * @param {Object} options.\n     * @param {Function} callback function.\n     * @api private\n     */\n\n  }, {\n    key: \"sendPacket\",\n    value: function sendPacket(type, data, options, fn) {\n      if (\"function\" === typeof data) {\n        fn = data;\n        data = undefined;\n      }\n\n      if (\"function\" === typeof options) {\n        fn = options;\n        options = null;\n      }\n\n      if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n        return;\n      }\n\n      options = options || {};\n      options.compress = false !== options.compress;\n      var packet = {\n        type: type,\n        data: data,\n        options: options\n      };\n      this.emit(\"packetCreate\", packet);\n      this.writeBuffer.push(packet);\n      if (fn) this.once(\"flush\", fn);\n      this.flush();\n    }\n    /**\n     * Closes the connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      var self = this;\n\n      if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n        this.readyState = \"closing\";\n\n        if (this.writeBuffer.length) {\n          this.once(\"drain\", function () {\n            if (this.upgrading) {\n              waitForUpgrade();\n            } else {\n              close();\n            }\n          });\n        } else if (this.upgrading) {\n          waitForUpgrade();\n        } else {\n          close();\n        }\n      }\n\n      function close() {\n        self.onClose(\"forced close\");\n        debug(\"socket closing - telling transport to close\");\n        self.transport.close();\n      }\n\n      function cleanupAndClose() {\n        self.removeListener(\"upgrade\", cleanupAndClose);\n        self.removeListener(\"upgradeError\", cleanupAndClose);\n        close();\n      }\n\n      function waitForUpgrade() {\n        // wait for upgrade to finish since we can't send packets while pausing a transport\n        self.once(\"upgrade\", cleanupAndClose);\n        self.once(\"upgradeError\", cleanupAndClose);\n      }\n\n      return this;\n    }\n    /**\n     * Called upon transport error\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onError\",\n    value: function onError(err) {\n      debug(\"socket error %j\", err);\n      Socket.priorWebsocketSuccess = false;\n      this.emit(\"error\", err);\n      this.onClose(\"transport error\", err);\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose(reason, desc) {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n        debug('socket close with reason: \"%s\"', reason);\n        var self = this; // clear timers\n\n        clearTimeout(this.pingIntervalTimer);\n        clearTimeout(this.pingTimeoutTimer); // stop event from firing again for transport\n\n        this.transport.removeAllListeners(\"close\"); // ensure transport won't stay open\n\n        this.transport.close(); // ignore further transport communication\n\n        this.transport.removeAllListeners(); // set ready state\n\n        this.readyState = \"closed\"; // clear session id\n\n        this.id = null; // emit close event\n\n        this.emit(\"close\", reason, desc); // clean buffers after, so users can still\n        // grab the buffers on `close` event\n\n        self.writeBuffer = [];\n        self.prevBufferLen = 0;\n      }\n    }\n    /**\n     * Filters upgrades, returning only those matching client transports.\n     *\n     * @param {Array} server upgrades\n     * @api private\n     *\n     */\n\n  }, {\n    key: \"filterUpgrades\",\n    value: function filterUpgrades(upgrades) {\n      var filteredUpgrades = [];\n      var i = 0;\n      var j = upgrades.length;\n\n      for (; i < j; i++) {\n        if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]);\n      }\n\n      return filteredUpgrades;\n    }\n  }]);\n\n  return Socket;\n}(Emitter);\n\nSocket.priorWebsocketSuccess = false;\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\nfunction clone(obj) {\n  var o = {};\n\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      o[i] = obj[i];\n    }\n  }\n\n  return o;\n}\n\nmodule.exports = Socket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transport.js\":\n/*!********************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transport.js ***!\n  \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar Transport = /*#__PURE__*/function (_Emitter) {\n  _inherits(Transport, _Emitter);\n\n  var _super = _createSuper(Transport);\n\n  /**\n   * Transport abstract constructor.\n   *\n   * @param {Object} options.\n   * @api private\n   */\n  function Transport(opts) {\n    var _this;\n\n    _classCallCheck(this, Transport);\n\n    _this = _super.call(this);\n    _this.opts = opts;\n    _this.query = opts.query;\n    _this.readyState = \"\";\n    _this.socket = opts.socket;\n    return _this;\n  }\n  /**\n   * Emits an error.\n   *\n   * @param {String} str\n   * @return {Transport} for chaining\n   * @api public\n   */\n\n\n  _createClass(Transport, [{\n    key: \"onError\",\n    value: function onError(msg, desc) {\n      var err = new Error(msg);\n      err.type = \"TransportError\";\n      err.description = desc;\n      this.emit(\"error\", err);\n      return this;\n    }\n    /**\n     * Opens the transport.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      if (\"closed\" === this.readyState || \"\" === this.readyState) {\n        this.readyState = \"opening\";\n        this.doOpen();\n      }\n\n      return this;\n    }\n    /**\n     * Closes the transport.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n        this.doClose();\n        this.onClose();\n      }\n\n      return this;\n    }\n    /**\n     * Sends multiple packets.\n     *\n     * @param {Array} packets\n     * @api private\n     */\n\n  }, {\n    key: \"send\",\n    value: function send(packets) {\n      if (\"open\" === this.readyState) {\n        this.write(packets);\n      } else {\n        throw new Error(\"Transport not open\");\n      }\n    }\n    /**\n     * Called upon open\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onOpen\",\n    value: function onOpen() {\n      this.readyState = \"open\";\n      this.writable = true;\n      this.emit(\"open\");\n    }\n    /**\n     * Called with data.\n     *\n     * @param {String} data\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      var packet = parser.decodePacket(data, this.socket.binaryType);\n      this.onPacket(packet);\n    }\n    /**\n     * Called with a decoded packet.\n     */\n\n  }, {\n    key: \"onPacket\",\n    value: function onPacket(packet) {\n      this.emit(\"packet\", packet);\n    }\n    /**\n     * Called upon close.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose() {\n      this.readyState = \"closed\";\n      this.emit(\"close\");\n    }\n  }]);\n\n  return Transport;\n}(Emitter);\n\nmodule.exports = Transport;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/index.js\":\n/*!***************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/index.js ***!\n  \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar XMLHttpRequest = __webpack_require__(/*! xmlhttprequest-ssl */ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\");\n\nvar XHR = __webpack_require__(/*! ./polling-xhr */ \"./node_modules/engine.io-client/lib/transports/polling-xhr.js\");\n\nvar JSONP = __webpack_require__(/*! ./polling-jsonp */ \"./node_modules/engine.io-client/lib/transports/polling-jsonp.js\");\n\nvar websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/engine.io-client/lib/transports/websocket.js\");\n\nexports.polling = polling;\nexports.websocket = websocket;\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling(opts) {\n  var xhr;\n  var xd = false;\n  var xs = false;\n  var jsonp = false !== opts.jsonp;\n\n  if (typeof location !== \"undefined\") {\n    var isSSL = \"https:\" === location.protocol;\n    var port = location.port; // some user agents have empty `location.port`\n\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    xd = opts.hostname !== location.hostname || port !== opts.port;\n    xs = opts.secure !== isSSL;\n  }\n\n  opts.xdomain = xd;\n  opts.xscheme = xs;\n  xhr = new XMLHttpRequest(opts);\n\n  if (\"open\" in xhr && !opts.forceJSONP) {\n    return new XHR(opts);\n  } else {\n    if (!jsonp) throw new Error(\"JSONP disabled\");\n    return new JSONP(opts);\n  }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling-jsonp.js\":\n/*!***********************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling-jsonp.js ***!\n  \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Polling = __webpack_require__(/*! ./polling */ \"./node_modules/engine.io-client/lib/transports/polling.js\");\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n/**\n * Noop.\n */\n\nfunction empty() {}\n\nvar JSONPPolling = /*#__PURE__*/function (_Polling) {\n  _inherits(JSONPPolling, _Polling);\n\n  var _super = _createSuper(JSONPPolling);\n\n  /**\n   * JSONP Polling constructor.\n   *\n   * @param {Object} opts.\n   * @api public\n   */\n  function JSONPPolling(opts) {\n    var _this;\n\n    _classCallCheck(this, JSONPPolling);\n\n    _this = _super.call(this, opts);\n    _this.query = _this.query || {}; // define global callbacks array if not present\n    // we do this here (lazily) to avoid unneeded global pollution\n\n    if (!callbacks) {\n      // we need to consider multiple engines in the same page\n      callbacks = globalThis.___eio = globalThis.___eio || [];\n    } // callback identifier\n\n\n    _this.index = callbacks.length; // add callback to jsonp global\n\n    var self = _assertThisInitialized(_this);\n\n    callbacks.push(function (msg) {\n      self.onData(msg);\n    }); // append to query string\n\n    _this.query.j = _this.index; // prevent spurious errors from being emitted when the window is unloaded\n\n    if (typeof addEventListener === \"function\") {\n      addEventListener(\"beforeunload\", function () {\n        if (self.script) self.script.onerror = empty;\n      }, false);\n    }\n\n    return _this;\n  }\n  /**\n   * JSONP only supports binary as base64 encoded strings\n   */\n\n\n  _createClass(JSONPPolling, [{\n    key: \"doClose\",\n\n    /**\n     * Closes the socket.\n     *\n     * @api private\n     */\n    value: function doClose() {\n      if (this.script) {\n        this.script.parentNode.removeChild(this.script);\n        this.script = null;\n      }\n\n      if (this.form) {\n        this.form.parentNode.removeChild(this.form);\n        this.form = null;\n        this.iframe = null;\n      }\n\n      _get(_getPrototypeOf(JSONPPolling.prototype), \"doClose\", this).call(this);\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doPoll\",\n    value: function doPoll() {\n      var self = this;\n      var script = document.createElement(\"script\");\n\n      if (this.script) {\n        this.script.parentNode.removeChild(this.script);\n        this.script = null;\n      }\n\n      script.async = true;\n      script.src = this.uri();\n\n      script.onerror = function (e) {\n        self.onError(\"jsonp poll error\", e);\n      };\n\n      var insertAt = document.getElementsByTagName(\"script\")[0];\n\n      if (insertAt) {\n        insertAt.parentNode.insertBefore(script, insertAt);\n      } else {\n        (document.head || document.body).appendChild(script);\n      }\n\n      this.script = script;\n      var isUAgecko = \"undefined\" !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n      if (isUAgecko) {\n        setTimeout(function () {\n          var iframe = document.createElement(\"iframe\");\n          document.body.appendChild(iframe);\n          document.body.removeChild(iframe);\n        }, 100);\n      }\n    }\n    /**\n     * Writes with a hidden iframe.\n     *\n     * @param {String} data to send\n     * @param {Function} called upon flush.\n     * @api private\n     */\n\n  }, {\n    key: \"doWrite\",\n    value: function doWrite(data, fn) {\n      var self = this;\n      var iframe;\n\n      if (!this.form) {\n        var form = document.createElement(\"form\");\n        var area = document.createElement(\"textarea\");\n        var id = this.iframeId = \"eio_iframe_\" + this.index;\n        form.className = \"socketio\";\n        form.style.position = \"absolute\";\n        form.style.top = \"-1000px\";\n        form.style.left = \"-1000px\";\n        form.target = id;\n        form.method = \"POST\";\n        form.setAttribute(\"accept-charset\", \"utf-8\");\n        area.name = \"d\";\n        form.appendChild(area);\n        document.body.appendChild(form);\n        this.form = form;\n        this.area = area;\n      }\n\n      this.form.action = this.uri();\n\n      function complete() {\n        initIframe();\n        fn();\n      }\n\n      function initIframe() {\n        if (self.iframe) {\n          try {\n            self.form.removeChild(self.iframe);\n          } catch (e) {\n            self.onError(\"jsonp polling iframe removal error\", e);\n          }\n        }\n\n        try {\n          // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n          var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n          iframe = document.createElement(html);\n        } catch (e) {\n          iframe = document.createElement(\"iframe\");\n          iframe.name = self.iframeId;\n          iframe.src = \"javascript:0\";\n        }\n\n        iframe.id = self.iframeId;\n        self.form.appendChild(iframe);\n        self.iframe = iframe;\n      }\n\n      initIframe(); // escape \\n to prevent it from being converted into \\r\\n by some UAs\n      // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n\n      data = data.replace(rEscapedNewline, \"\\\\\\n\");\n      this.area.value = data.replace(rNewline, \"\\\\n\");\n\n      try {\n        this.form.submit();\n      } catch (e) {}\n\n      if (this.iframe.attachEvent) {\n        this.iframe.onreadystatechange = function () {\n          if (self.iframe.readyState === \"complete\") {\n            complete();\n          }\n        };\n      } else {\n        this.iframe.onload = complete;\n      }\n    }\n  }, {\n    key: \"supportsBinary\",\n    get: function get() {\n      return false;\n    }\n  }]);\n\n  return JSONPPolling;\n}(Polling);\n\nmodule.exports = JSONPPolling;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling-xhr.js\":\n/*!*********************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling-xhr.js ***!\n  \\*********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/* global attachEvent */\nvar XMLHttpRequest = __webpack_require__(/*! xmlhttprequest-ssl */ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\");\n\nvar Polling = __webpack_require__(/*! ./polling */ \"./node_modules/engine.io-client/lib/transports/polling.js\");\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar _require = __webpack_require__(/*! ../util */ \"./node_modules/engine.io-client/lib/util.js\"),\n    pick = _require.pick;\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:polling-xhr\");\n/**\n * Empty function\n */\n\n\nfunction empty() {}\n\nvar hasXHR2 = function () {\n  var xhr = new XMLHttpRequest({\n    xdomain: false\n  });\n  return null != xhr.responseType;\n}();\n\nvar XHR = /*#__PURE__*/function (_Polling) {\n  _inherits(XHR, _Polling);\n\n  var _super = _createSuper(XHR);\n\n  /**\n   * XHR Polling constructor.\n   *\n   * @param {Object} opts\n   * @api public\n   */\n  function XHR(opts) {\n    var _this;\n\n    _classCallCheck(this, XHR);\n\n    _this = _super.call(this, opts);\n\n    if (typeof location !== \"undefined\") {\n      var isSSL = \"https:\" === location.protocol;\n      var port = location.port; // some user agents have empty `location.port`\n\n      if (!port) {\n        port = isSSL ? 443 : 80;\n      }\n\n      _this.xd = typeof location !== \"undefined\" && opts.hostname !== location.hostname || port !== opts.port;\n      _this.xs = opts.secure !== isSSL;\n    }\n    /**\n     * XHR supports binary\n     */\n\n\n    var forceBase64 = opts && opts.forceBase64;\n    _this.supportsBinary = hasXHR2 && !forceBase64;\n    return _this;\n  }\n  /**\n   * Creates a request.\n   *\n   * @param {String} method\n   * @api private\n   */\n\n\n  _createClass(XHR, [{\n    key: \"request\",\n    value: function request() {\n      var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      _extends(opts, {\n        xd: this.xd,\n        xs: this.xs\n      }, this.opts);\n\n      return new Request(this.uri(), opts);\n    }\n    /**\n     * Sends data.\n     *\n     * @param {String} data to send.\n     * @param {Function} called upon flush.\n     * @api private\n     */\n\n  }, {\n    key: \"doWrite\",\n    value: function doWrite(data, fn) {\n      var req = this.request({\n        method: \"POST\",\n        data: data\n      });\n      var self = this;\n      req.on(\"success\", fn);\n      req.on(\"error\", function (err) {\n        self.onError(\"xhr post error\", err);\n      });\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doPoll\",\n    value: function doPoll() {\n      debug(\"xhr poll\");\n      var req = this.request();\n      var self = this;\n      req.on(\"data\", function (data) {\n        self.onData(data);\n      });\n      req.on(\"error\", function (err) {\n        self.onError(\"xhr poll error\", err);\n      });\n      this.pollXhr = req;\n    }\n  }]);\n\n  return XHR;\n}(Polling);\n\nvar Request = /*#__PURE__*/function (_Emitter) {\n  _inherits(Request, _Emitter);\n\n  var _super2 = _createSuper(Request);\n\n  /**\n   * Request constructor\n   *\n   * @param {Object} options\n   * @api public\n   */\n  function Request(uri, opts) {\n    var _this2;\n\n    _classCallCheck(this, Request);\n\n    _this2 = _super2.call(this);\n    _this2.opts = opts;\n    _this2.method = opts.method || \"GET\";\n    _this2.uri = uri;\n    _this2.async = false !== opts.async;\n    _this2.data = undefined !== opts.data ? opts.data : null;\n\n    _this2.create();\n\n    return _this2;\n  }\n  /**\n   * Creates the XHR object and sends the request.\n   *\n   * @api private\n   */\n\n\n  _createClass(Request, [{\n    key: \"create\",\n    value: function create() {\n      var opts = pick(this.opts, \"agent\", \"enablesXDR\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\");\n      opts.xdomain = !!this.opts.xd;\n      opts.xscheme = !!this.opts.xs;\n      var xhr = this.xhr = new XMLHttpRequest(opts);\n      var self = this;\n\n      try {\n        debug(\"xhr open %s: %s\", this.method, this.uri);\n        xhr.open(this.method, this.uri, this.async);\n\n        try {\n          if (this.opts.extraHeaders) {\n            xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n\n            for (var i in this.opts.extraHeaders) {\n              if (this.opts.extraHeaders.hasOwnProperty(i)) {\n                xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n              }\n            }\n          }\n        } catch (e) {}\n\n        if (\"POST\" === this.method) {\n          try {\n            xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n          } catch (e) {}\n        }\n\n        try {\n          xhr.setRequestHeader(\"Accept\", \"*/*\");\n        } catch (e) {} // ie6 check\n\n\n        if (\"withCredentials\" in xhr) {\n          xhr.withCredentials = this.opts.withCredentials;\n        }\n\n        if (this.opts.requestTimeout) {\n          xhr.timeout = this.opts.requestTimeout;\n        }\n\n        if (this.hasXDR()) {\n          xhr.onload = function () {\n            self.onLoad();\n          };\n\n          xhr.onerror = function () {\n            self.onError(xhr.responseText);\n          };\n        } else {\n          xhr.onreadystatechange = function () {\n            if (4 !== xhr.readyState) return;\n\n            if (200 === xhr.status || 1223 === xhr.status) {\n              self.onLoad();\n            } else {\n              // make sure the `error` event handler that's user-set\n              // does not throw in the same tick and gets caught here\n              setTimeout(function () {\n                self.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n              }, 0);\n            }\n          };\n        }\n\n        debug(\"xhr data %s\", this.data);\n        xhr.send(this.data);\n      } catch (e) {\n        // Need to defer since .create() is called directly from the constructor\n        // and thus the 'error' event can only be only bound *after* this exception\n        // occurs.  Therefore, also, we cannot throw here at all.\n        setTimeout(function () {\n          self.onError(e);\n        }, 0);\n        return;\n      }\n\n      if (typeof document !== \"undefined\") {\n        this.index = Request.requestsCount++;\n        Request.requests[this.index] = this;\n      }\n    }\n    /**\n     * Called upon successful response.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onSuccess\",\n    value: function onSuccess() {\n      this.emit(\"success\");\n      this.cleanup();\n    }\n    /**\n     * Called if we have data.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      this.emit(\"data\", data);\n      this.onSuccess();\n    }\n    /**\n     * Called upon error.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onError\",\n    value: function onError(err) {\n      this.emit(\"error\", err);\n      this.cleanup(true);\n    }\n    /**\n     * Cleans up house.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"cleanup\",\n    value: function cleanup(fromError) {\n      if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n        return;\n      } // xmlhttprequest\n\n\n      if (this.hasXDR()) {\n        this.xhr.onload = this.xhr.onerror = empty;\n      } else {\n        this.xhr.onreadystatechange = empty;\n      }\n\n      if (fromError) {\n        try {\n          this.xhr.abort();\n        } catch (e) {}\n      }\n\n      if (typeof document !== \"undefined\") {\n        delete Request.requests[this.index];\n      }\n\n      this.xhr = null;\n    }\n    /**\n     * Called upon load.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onLoad\",\n    value: function onLoad() {\n      var data = this.xhr.responseText;\n\n      if (data !== null) {\n        this.onData(data);\n      }\n    }\n    /**\n     * Check if it has XDomainRequest.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"hasXDR\",\n    value: function hasXDR() {\n      return typeof XDomainRequest !== \"undefined\" && !this.xs && this.enablesXDR;\n    }\n    /**\n     * Aborts the request.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      this.cleanup();\n    }\n  }]);\n\n  return Request;\n}(Emitter);\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (typeof document !== \"undefined\") {\n  if (typeof attachEvent === \"function\") {\n    attachEvent(\"onunload\", unloadHandler);\n  } else if (typeof addEventListener === \"function\") {\n    var terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n    addEventListener(terminationEvent, unloadHandler, false);\n  }\n}\n\nfunction unloadHandler() {\n  for (var i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/polling.js\":\n/*!*****************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/polling.js ***!\n  \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Transport = __webpack_require__(/*! ../transport */ \"./node_modules/engine.io-client/lib/transport.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar yeast = __webpack_require__(/*! yeast */ \"./node_modules/yeast/index.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:polling\");\n\nvar Polling = /*#__PURE__*/function (_Transport) {\n  _inherits(Polling, _Transport);\n\n  var _super = _createSuper(Polling);\n\n  function Polling() {\n    _classCallCheck(this, Polling);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Polling, [{\n    key: \"doOpen\",\n\n    /**\n     * Opens the socket (triggers polling). We write a PING message to determine\n     * when the transport is open.\n     *\n     * @api private\n     */\n    value: function doOpen() {\n      this.poll();\n    }\n    /**\n     * Pauses polling.\n     *\n     * @param {Function} callback upon buffers are flushed and transport is paused\n     * @api private\n     */\n\n  }, {\n    key: \"pause\",\n    value: function pause(onPause) {\n      var self = this;\n      this.readyState = \"pausing\";\n\n      function pause() {\n        debug(\"paused\");\n        self.readyState = \"paused\";\n        onPause();\n      }\n\n      if (this.polling || !this.writable) {\n        var total = 0;\n\n        if (this.polling) {\n          debug(\"we are currently polling - waiting to pause\");\n          total++;\n          this.once(\"pollComplete\", function () {\n            debug(\"pre-pause polling complete\");\n            --total || pause();\n          });\n        }\n\n        if (!this.writable) {\n          debug(\"we are currently writing - waiting to pause\");\n          total++;\n          this.once(\"drain\", function () {\n            debug(\"pre-pause writing complete\");\n            --total || pause();\n          });\n        }\n      } else {\n        pause();\n      }\n    }\n    /**\n     * Starts polling cycle.\n     *\n     * @api public\n     */\n\n  }, {\n    key: \"poll\",\n    value: function poll() {\n      debug(\"polling\");\n      this.polling = true;\n      this.doPoll();\n      this.emit(\"poll\");\n    }\n    /**\n     * Overloads onData to detect payloads.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onData\",\n    value: function onData(data) {\n      var self = this;\n      debug(\"polling got data %s\", data);\n\n      var callback = function callback(packet, index, total) {\n        // if its the first message we consider the transport open\n        if (\"opening\" === self.readyState && packet.type === \"open\") {\n          self.onOpen();\n        } // if its a close packet, we close the ongoing requests\n\n\n        if (\"close\" === packet.type) {\n          self.onClose();\n          return false;\n        } // otherwise bypass onData and handle the message\n\n\n        self.onPacket(packet);\n      }; // decode payload\n\n\n      parser.decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing\n\n      if (\"closed\" !== this.readyState) {\n        // if we got data we're not polling\n        this.polling = false;\n        this.emit(\"pollComplete\");\n\n        if (\"open\" === this.readyState) {\n          this.poll();\n        } else {\n          debug('ignoring poll - transport state \"%s\"', this.readyState);\n        }\n      }\n    }\n    /**\n     * For polling, send a close packet.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doClose\",\n    value: function doClose() {\n      var self = this;\n\n      function close() {\n        debug(\"writing close packet\");\n        self.write([{\n          type: \"close\"\n        }]);\n      }\n\n      if (\"open\" === this.readyState) {\n        debug(\"transport open - closing\");\n        close();\n      } else {\n        // in case we're trying to close while\n        // handshaking is in progress (GH-164)\n        debug(\"transport not open - deferring close\");\n        this.once(\"open\", close);\n      }\n    }\n    /**\n     * Writes a packets payload.\n     *\n     * @param {Array} data packets\n     * @param {Function} drain callback\n     * @api private\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(packets) {\n      var _this = this;\n\n      this.writable = false;\n      parser.encodePayload(packets, function (data) {\n        _this.doWrite(data, function () {\n          _this.writable = true;\n\n          _this.emit(\"drain\");\n        });\n      });\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"uri\",\n    value: function uri() {\n      var query = this.query || {};\n      var schema = this.opts.secure ? \"https\" : \"http\";\n      var port = \"\"; // cache busting is forced\n\n      if (false !== this.opts.timestampRequests) {\n        query[this.opts.timestampParam] = yeast();\n      }\n\n      if (!this.supportsBinary && !query.sid) {\n        query.b64 = 1;\n      }\n\n      query = parseqs.encode(query); // avoid port if default for schema\n\n      if (this.opts.port && (\"https\" === schema && Number(this.opts.port) !== 443 || \"http\" === schema && Number(this.opts.port) !== 80)) {\n        port = \":\" + this.opts.port;\n      } // prepend ? to query\n\n\n      if (query.length) {\n        query = \"?\" + query;\n      }\n\n      var ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n      return schema + \"://\" + (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) + port + this.opts.path + query;\n    }\n  }, {\n    key: \"name\",\n\n    /**\n     * Transport name.\n     */\n    get: function get() {\n      return \"polling\";\n    }\n  }]);\n\n  return Polling;\n}(Transport);\n\nmodule.exports = Polling;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js\":\n/*!***************************************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js ***!\n  \\***************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nmodule.exports = {\n  WebSocket: globalThis.WebSocket || globalThis.MozWebSocket,\n  usingBrowserWebSocket: true,\n  defaultBinaryType: \"arraybuffer\"\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/transports/websocket.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/transports/websocket.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Transport = __webpack_require__(/*! ../transport */ \"./node_modules/engine.io-client/lib/transport.js\");\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/index.js\");\n\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\nvar yeast = __webpack_require__(/*! yeast */ \"./node_modules/yeast/index.js\");\n\nvar _require = __webpack_require__(/*! ../util */ \"./node_modules/engine.io-client/lib/util.js\"),\n    pick = _require.pick;\n\nvar _require2 = __webpack_require__(/*! ./websocket-constructor */ \"./node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js\"),\n    WebSocket = _require2.WebSocket,\n    usingBrowserWebSocket = _require2.usingBrowserWebSocket,\n    defaultBinaryType = _require2.defaultBinaryType;\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"engine.io-client:websocket\"); // detect ReactNative environment\n\n\nvar isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\n\nvar WS = /*#__PURE__*/function (_Transport) {\n  _inherits(WS, _Transport);\n\n  var _super = _createSuper(WS);\n\n  /**\n   * WebSocket transport constructor.\n   *\n   * @api {Object} connection options\n   * @api public\n   */\n  function WS(opts) {\n    var _this;\n\n    _classCallCheck(this, WS);\n\n    _this = _super.call(this, opts);\n    _this.supportsBinary = !opts.forceBase64;\n    return _this;\n  }\n  /**\n   * Transport name.\n   *\n   * @api public\n   */\n\n\n  _createClass(WS, [{\n    key: \"doOpen\",\n\n    /**\n     * Opens socket.\n     *\n     * @api private\n     */\n    value: function doOpen() {\n      if (!this.check()) {\n        // let probe timeout\n        return;\n      }\n\n      var uri = this.uri();\n      var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n\n      var opts = isReactNative ? {} : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n\n      if (this.opts.extraHeaders) {\n        opts.headers = this.opts.extraHeaders;\n      }\n\n      try {\n        this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts);\n      } catch (err) {\n        return this.emit(\"error\", err);\n      }\n\n      this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n      this.addEventListeners();\n    }\n    /**\n     * Adds event listeners to the socket\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners() {\n      var self = this;\n\n      this.ws.onopen = function () {\n        self.onOpen();\n      };\n\n      this.ws.onclose = function () {\n        self.onClose();\n      };\n\n      this.ws.onmessage = function (ev) {\n        self.onData(ev.data);\n      };\n\n      this.ws.onerror = function (e) {\n        self.onError(\"websocket error\", e);\n      };\n    }\n    /**\n     * Writes data to socket.\n     *\n     * @param {Array} array of packets.\n     * @api private\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(packets) {\n      var self = this;\n      this.writable = false; // encodePacket efficient as it uses WS framing\n      // no need for encodePayload\n\n      var total = packets.length;\n      var i = 0;\n      var l = total;\n\n      for (; i < l; i++) {\n        (function (packet) {\n          parser.encodePacket(packet, self.supportsBinary, function (data) {\n            // always create a new object (GH-437)\n            var opts = {};\n\n            if (!usingBrowserWebSocket) {\n              if (packet.options) {\n                opts.compress = packet.options.compress;\n              }\n\n              if (self.opts.perMessageDeflate) {\n                var len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n\n                if (len < self.opts.perMessageDeflate.threshold) {\n                  opts.compress = false;\n                }\n              }\n            } // Sometimes the websocket has already been closed but the browser didn't\n            // have a chance of informing us about it yet, in that case send will\n            // throw an error\n\n\n            try {\n              if (usingBrowserWebSocket) {\n                // TypeError is thrown when passing the second argument on Safari\n                self.ws.send(data);\n              } else {\n                self.ws.send(data, opts);\n              }\n            } catch (e) {\n              debug(\"websocket closed before onclose event\");\n            }\n\n            --total || done();\n          });\n        })(packets[i]);\n      }\n\n      function done() {\n        self.emit(\"flush\"); // fake drain\n        // defer to next tick to allow Socket to clear writeBuffer\n\n        setTimeout(function () {\n          self.writable = true;\n          self.emit(\"drain\");\n        }, 0);\n      }\n    }\n    /**\n     * Called upon close\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"onClose\",\n    value: function onClose() {\n      Transport.prototype.onClose.call(this);\n    }\n    /**\n     * Closes socket.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"doClose\",\n    value: function doClose() {\n      if (typeof this.ws !== \"undefined\") {\n        this.ws.close();\n      }\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @api private\n     */\n\n  }, {\n    key: \"uri\",\n    value: function uri() {\n      var query = this.query || {};\n      var schema = this.opts.secure ? \"wss\" : \"ws\";\n      var port = \"\"; // avoid port if default for schema\n\n      if (this.opts.port && (\"wss\" === schema && Number(this.opts.port) !== 443 || \"ws\" === schema && Number(this.opts.port) !== 80)) {\n        port = \":\" + this.opts.port;\n      } // append timestamp to URI\n\n\n      if (this.opts.timestampRequests) {\n        query[this.opts.timestampParam] = yeast();\n      } // communicate binary support capabilities\n\n\n      if (!this.supportsBinary) {\n        query.b64 = 1;\n      }\n\n      query = parseqs.encode(query); // prepend ? to query\n\n      if (query.length) {\n        query = \"?\" + query;\n      }\n\n      var ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n      return schema + \"://\" + (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) + port + this.opts.path + query;\n    }\n    /**\n     * Feature detection for WebSocket.\n     *\n     * @return {Boolean} whether this transport is available.\n     * @api public\n     */\n\n  }, {\n    key: \"check\",\n    value: function check() {\n      return !!WebSocket && !(\"__initialize\" in WebSocket && this.name === WS.prototype.name);\n    }\n  }, {\n    key: \"name\",\n    get: function get() {\n      return \"websocket\";\n    }\n  }]);\n\n  return WS;\n}(Transport);\n\nmodule.exports = WS;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/util.js\":\n/*!***************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/util.js ***!\n  \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports.pick = function (obj) {\n  for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    attr[_key - 1] = arguments[_key];\n  }\n\n  return attr.reduce(function (acc, k) {\n    if (obj.hasOwnProperty(k)) {\n      acc[k] = obj[k];\n    }\n\n    return acc;\n  }, {});\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\":\n/*!*************************************************************!*\\\n  !*** ./node_modules/engine.io-client/lib/xmlhttprequest.js ***!\n  \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// browser shim for xmlhttprequest module\nvar hasCORS = __webpack_require__(/*! has-cors */ \"./node_modules/has-cors/index.js\");\n\nvar globalThis = __webpack_require__(/*! ./globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\nmodule.exports = function (opts) {\n  var xdomain = opts.xdomain; // scheme must be same when usign XDomainRequest\n  // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n  var xscheme = opts.xscheme; // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n  // https://github.com/Automattic/engine.io-client/pull/217\n\n  var enablesXDR = opts.enablesXDR; // XMLHttpRequest can be disabled on IE\n\n  try {\n    if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) {} // Use XDomainRequest for IE8 if enablesXDR is true\n  // because loading bar keeps flashing when using jsonp-polling\n  // https://github.com/yujiosaka/socke.io-ie8-loading-example\n\n\n  try {\n    if (\"undefined\" !== typeof XDomainRequest && !xscheme && enablesXDR) {\n      return new XDomainRequest();\n    }\n  } catch (e) {}\n\n  if (!xdomain) {\n    try {\n      return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n    } catch (e) {}\n  }\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/commons.js\":\n/*!******************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/commons.js ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar PACKET_TYPES = Object.create(null); // no Map = no polyfill\n\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nvar PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(function (key) {\n  PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nvar ERROR_PACKET = {\n  type: \"error\",\n  data: \"parser error\"\n};\nmodule.exports = {\n  PACKET_TYPES: PACKET_TYPES,\n  PACKET_TYPES_REVERSE: PACKET_TYPES_REVERSE,\n  ERROR_PACKET: ERROR_PACKET\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/decodePacket.browser.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/decodePacket.browser.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(/*! ./commons */ \"./node_modules/engine.io-parser/lib/commons.js\"),\n    PACKET_TYPES_REVERSE = _require.PACKET_TYPES_REVERSE,\n    ERROR_PACKET = _require.ERROR_PACKET;\n\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nvar base64decoder;\n\nif (withNativeArrayBuffer) {\n  base64decoder = __webpack_require__(/*! base64-arraybuffer */ \"./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\");\n}\n\nvar decodePacket = function decodePacket(encodedPacket, binaryType) {\n  if (typeof encodedPacket !== \"string\") {\n    return {\n      type: \"message\",\n      data: mapBinary(encodedPacket, binaryType)\n    };\n  }\n\n  var type = encodedPacket.charAt(0);\n\n  if (type === \"b\") {\n    return {\n      type: \"message\",\n      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n    };\n  }\n\n  var packetType = PACKET_TYPES_REVERSE[type];\n\n  if (!packetType) {\n    return ERROR_PACKET;\n  }\n\n  return encodedPacket.length > 1 ? {\n    type: PACKET_TYPES_REVERSE[type],\n    data: encodedPacket.substring(1)\n  } : {\n    type: PACKET_TYPES_REVERSE[type]\n  };\n};\n\nvar decodeBase64Packet = function decodeBase64Packet(data, binaryType) {\n  if (base64decoder) {\n    var decoded = base64decoder.decode(data);\n    return mapBinary(decoded, binaryType);\n  } else {\n    return {\n      base64: true,\n      data: data\n    }; // fallback for old browsers\n  }\n};\n\nvar mapBinary = function mapBinary(data, binaryType) {\n  switch (binaryType) {\n    case \"blob\":\n      return data instanceof ArrayBuffer ? new Blob([data]) : data;\n\n    case \"arraybuffer\":\n    default:\n      return data;\n    // assuming the data is already an ArrayBuffer\n  }\n};\n\nmodule.exports = decodePacket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/encodePacket.browser.js\":\n/*!*******************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/encodePacket.browser.js ***!\n  \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(/*! ./commons */ \"./node_modules/engine.io-parser/lib/commons.js\"),\n    PACKET_TYPES = _require.PACKET_TYPES;\n\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\"; // ArrayBuffer.isView method is not defined in IE10\n\nvar isView = function isView(obj) {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\n\nvar encodePacket = function encodePacket(_ref, supportsBinary, callback) {\n  var type = _ref.type,\n      data = _ref.data;\n\n  if (withNativeBlob && data instanceof Blob) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(data, callback);\n    }\n  } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {\n    if (supportsBinary) {\n      return callback(data instanceof ArrayBuffer ? data : data.buffer);\n    } else {\n      return encodeBlobAsBase64(new Blob([data]), callback);\n    }\n  } // plain string\n\n\n  return callback(PACKET_TYPES[type] + (data || \"\"));\n};\n\nvar encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) {\n  var fileReader = new FileReader();\n\n  fileReader.onload = function () {\n    var content = fileReader.result.split(\",\")[1];\n    callback(\"b\" + content);\n  };\n\n  return fileReader.readAsDataURL(data);\n};\n\nmodule.exports = encodePacket;\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/lib/index.js\":\n/*!****************************************************!*\\\n  !*** ./node_modules/engine.io-parser/lib/index.js ***!\n  \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar encodePacket = __webpack_require__(/*! ./encodePacket */ \"./node_modules/engine.io-parser/lib/encodePacket.browser.js\");\n\nvar decodePacket = __webpack_require__(/*! ./decodePacket */ \"./node_modules/engine.io-parser/lib/decodePacket.browser.js\");\n\nvar SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\n\nvar encodePayload = function encodePayload(packets, callback) {\n  // some packets may be added to the array while encoding, so the initial length must be saved\n  var length = packets.length;\n  var encodedPackets = new Array(length);\n  var count = 0;\n  packets.forEach(function (packet, i) {\n    // force base64 encoding for binary packets\n    encodePacket(packet, false, function (encodedPacket) {\n      encodedPackets[i] = encodedPacket;\n\n      if (++count === length) {\n        callback(encodedPackets.join(SEPARATOR));\n      }\n    });\n  });\n};\n\nvar decodePayload = function decodePayload(encodedPayload, binaryType) {\n  var encodedPackets = encodedPayload.split(SEPARATOR);\n  var packets = [];\n\n  for (var i = 0; i < encodedPackets.length; i++) {\n    var decodedPacket = decodePacket(encodedPackets[i], binaryType);\n    packets.push(decodedPacket);\n\n    if (decodedPacket.type === \"error\") {\n      break;\n    }\n  }\n\n  return packets;\n};\n\nmodule.exports = {\n  protocol: 4,\n  encodePacket: encodePacket,\n  encodePayload: encodePayload,\n  decodePacket: decodePacket,\n  decodePayload: decodePayload\n};\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\":\n/*!*************************************************************************************************!*\\\n  !*** ./node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js ***!\n  \\*************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function (chars) {\n  \"use strict\";\n\n  exports.encode = function (arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = \"\";\n\n    for (i = 0; i < len; i += 3) {\n      base64 += chars[bytes[i] >> 2];\n      base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n      base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n      base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n\n    return base64;\n  };\n\n  exports.decode = function (base64) {\n    var bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === \"=\") {\n      bufferLength--;\n\n      if (base64[base64.length - 2] === \"=\") {\n        bufferLength--;\n      }\n    }\n\n    var arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n      encoded1 = chars.indexOf(base64[i]);\n      encoded2 = chars.indexOf(base64[i + 1]);\n      encoded3 = chars.indexOf(base64[i + 2]);\n      encoded4 = chars.indexOf(base64[i + 3]);\n      bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n\n    return arraybuffer;\n  };\n})(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\");\n\n/***/ }),\n\n/***/ \"./node_modules/has-cors/index.js\":\n/*!****************************************!*\\\n  !*** ./node_modules/has-cors/index.js ***!\n  \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n *   - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\ntry {\n  module.exports = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n  // if XMLHttp support is disabled in IE then it will throw\n  // when trying to create\n  module.exports = false;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/ms/index.js\":\n/*!**********************************!*\\\n  !*** ./node_modules/ms/index.js ***!\n  \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n\n  var type = _typeof(val);\n\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options[\"long\"] ? fmtLong(val) : fmtShort(val);\n  }\n\n  throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n  str = String(str);\n\n  if (str.length > 100) {\n    return;\n  }\n\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n\n  if (!match) {\n    return;\n  }\n\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n\n    default:\n      return undefined;\n  }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n\n  return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n\n  return ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n/***/ }),\n\n/***/ \"./node_modules/parseqs/index.js\":\n/*!***************************************!*\\\n  !*** ./node_modules/parseqs/index.js ***!\n  \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexports.encode = function (obj) {\n  var str = '';\n\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      if (str.length) str += '&';\n      str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n    }\n  }\n\n  return str;\n};\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\n\nexports.decode = function (qs) {\n  var qry = {};\n  var pairs = qs.split('&');\n\n  for (var i = 0, l = pairs.length; i < l; i++) {\n    var pair = pairs[i].split('=');\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n  }\n\n  return qry;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/parseuri/index.js\":\n/*!****************************************!*\\\n  !*** ./node_modules/parseuri/index.js ***!\n  \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/**\n * Parses an URI\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nvar parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'];\n\nmodule.exports = function parseuri(str) {\n  var src = str,\n      b = str.indexOf('['),\n      e = str.indexOf(']');\n\n  if (b != -1 && e != -1) {\n    str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n  }\n\n  var m = re.exec(str || ''),\n      uri = {},\n      i = 14;\n\n  while (i--) {\n    uri[parts[i]] = m[i] || '';\n  }\n\n  if (b != -1 && e != -1) {\n    uri.source = src;\n    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n    uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n    uri.ipv6uri = true;\n  }\n\n  uri.pathNames = pathNames(uri, uri['path']);\n  uri.queryKey = queryKey(uri, uri['query']);\n  return uri;\n};\n\nfunction pathNames(obj, path) {\n  var regx = /\\/{2,9}/g,\n      names = path.replace(regx, \"/\").split(\"/\");\n\n  if (path.substr(0, 1) == '/' || path.length === 0) {\n    names.splice(0, 1);\n  }\n\n  if (path.substr(path.length - 1, 1) == '/') {\n    names.splice(names.length - 1, 1);\n  }\n\n  return names;\n}\n\nfunction queryKey(uri, query) {\n  var data = {};\n  query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n    if ($1) {\n      data[$1] = $2;\n    }\n  });\n  return data;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/binary.js\":\n/*!******************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/binary.js ***!\n  \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.reconstructPacket = exports.deconstructPacket = void 0;\n\nvar is_binary_1 = __webpack_require__(/*! ./is-binary */ \"./node_modules/socket.io-parser/dist/is-binary.js\");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\n\n\nfunction deconstructPacket(packet) {\n  var buffers = [];\n  var packetData = packet.data;\n  var pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length; // number of binary 'attachments'\n\n  return {\n    packet: pack,\n    buffers: buffers\n  };\n}\n\nexports.deconstructPacket = deconstructPacket;\n\nfunction _deconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (is_binary_1.isBinary(data)) {\n    var placeholder = {\n      _placeholder: true,\n      num: buffers.length\n    };\n    buffers.push(data);\n    return placeholder;\n  } else if (Array.isArray(data)) {\n    var newData = new Array(data.length);\n\n    for (var i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n\n    return newData;\n  } else if (_typeof(data) === \"object\" && !(data instanceof Date)) {\n    var _newData = {};\n\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        _newData[key] = _deconstructPacket(data[key], buffers);\n      }\n    }\n\n    return _newData;\n  }\n\n  return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\n\n\nfunction reconstructPacket(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  packet.attachments = undefined; // no longer useful\n\n  return packet;\n}\n\nexports.reconstructPacket = reconstructPacket;\n\nfunction _reconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (data && data._placeholder) {\n    return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n  } else if (Array.isArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (_typeof(data) === \"object\") {\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        data[key] = _reconstructPacket(data[key], buffers);\n      }\n    }\n  }\n\n  return data;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/index.js\":\n/*!*****************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/index.js ***!\n  \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\n\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/component-emitter/index.js\");\n\nvar binary_1 = __webpack_require__(/*! ./binary */ \"./node_modules/socket.io-parser/dist/binary.js\");\n\nvar is_binary_1 = __webpack_require__(/*! ./is-binary */ \"./node_modules/socket.io-parser/dist/is-binary.js\");\n\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"socket.io-parser\");\n/**\n * Protocol version.\n *\n * @public\n */\n\n\nexports.protocol = 5;\nvar PacketType;\n\n(function (PacketType) {\n  PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n  PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n  PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n  PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n  PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n  PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n  PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType = exports.PacketType || (exports.PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\n\n\nvar Encoder = /*#__PURE__*/function () {\n  function Encoder() {\n    _classCallCheck(this, Encoder);\n  }\n\n  _createClass(Encoder, [{\n    key: \"encode\",\n\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    value: function encode(obj) {\n      debug(\"encoding packet %j\", obj);\n\n      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n        if (is_binary_1.hasBinary(obj)) {\n          obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK;\n          return this.encodeAsBinary(obj);\n        }\n      }\n\n      return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n\n  }, {\n    key: \"encodeAsString\",\n    value: function encodeAsString(obj) {\n      // first is type\n      var str = \"\" + obj.type; // attachments if we have them\n\n      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n        str += obj.attachments + \"-\";\n      } // if we have a namespace other than `/`\n      // we append it followed by a comma `,`\n\n\n      if (obj.nsp && \"/\" !== obj.nsp) {\n        str += obj.nsp + \",\";\n      } // immediately followed by the id\n\n\n      if (null != obj.id) {\n        str += obj.id;\n      } // json data\n\n\n      if (null != obj.data) {\n        str += JSON.stringify(obj.data);\n      }\n\n      debug(\"encoded %j as %s\", obj, str);\n      return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n\n  }, {\n    key: \"encodeAsBinary\",\n    value: function encodeAsBinary(obj) {\n      var deconstruction = binary_1.deconstructPacket(obj);\n      var pack = this.encodeAsString(deconstruction.packet);\n      var buffers = deconstruction.buffers;\n      buffers.unshift(pack); // add packet info to beginning of data list\n\n      return buffers; // write all the buffers\n    }\n  }]);\n\n  return Encoder;\n}();\n\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\n\nvar Decoder = /*#__PURE__*/function (_Emitter) {\n  _inherits(Decoder, _Emitter);\n\n  var _super = _createSuper(Decoder);\n\n  function Decoder() {\n    _classCallCheck(this, Decoder);\n\n    return _super.call(this);\n  }\n  /**\n   * Decodes an encoded packet string into packet JSON.\n   *\n   * @param {String} obj - encoded packet\n   */\n\n\n  _createClass(Decoder, [{\n    key: \"add\",\n    value: function add(obj) {\n      var packet;\n\n      if (typeof obj === \"string\") {\n        packet = this.decodeString(obj);\n\n        if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) {\n          // binary packet's json\n          this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow\n\n          if (packet.attachments === 0) {\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        } else {\n          // non-binary full packet\n          _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n        }\n      } else if (is_binary_1.isBinary(obj) || obj.base64) {\n        // raw binary data\n        if (!this.reconstructor) {\n          throw new Error(\"got binary data when not reconstructing a packet\");\n        } else {\n          packet = this.reconstructor.takeBinaryData(obj);\n\n          if (packet) {\n            // received final buffer\n            this.reconstructor = null;\n\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        }\n      } else {\n        throw new Error(\"Unknown type: \" + obj);\n      }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n\n  }, {\n    key: \"decodeString\",\n    value: function decodeString(str) {\n      var i = 0; // look up type\n\n      var p = {\n        type: Number(str.charAt(0))\n      };\n\n      if (PacketType[p.type] === undefined) {\n        throw new Error(\"unknown packet type \" + p.type);\n      } // look up attachments if type binary\n\n\n      if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n        var start = i + 1;\n\n        while (str.charAt(++i) !== \"-\" && i != str.length) {}\n\n        var buf = str.substring(start, i);\n\n        if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n          throw new Error(\"Illegal attachments\");\n        }\n\n        p.attachments = Number(buf);\n      } // look up namespace (if any)\n\n\n      if (\"/\" === str.charAt(i + 1)) {\n        var _start = i + 1;\n\n        while (++i) {\n          var c = str.charAt(i);\n          if (\",\" === c) break;\n          if (i === str.length) break;\n        }\n\n        p.nsp = str.substring(_start, i);\n      } else {\n        p.nsp = \"/\";\n      } // look up id\n\n\n      var next = str.charAt(i + 1);\n\n      if (\"\" !== next && Number(next) == next) {\n        var _start2 = i + 1;\n\n        while (++i) {\n          var _c = str.charAt(i);\n\n          if (null == _c || Number(_c) != _c) {\n            --i;\n            break;\n          }\n\n          if (i === str.length) break;\n        }\n\n        p.id = Number(str.substring(_start2, i + 1));\n      } // look up json data\n\n\n      if (str.charAt(++i)) {\n        var payload = tryParse(str.substr(i));\n\n        if (Decoder.isPayloadValid(p.type, payload)) {\n          p.data = payload;\n        } else {\n          throw new Error(\"invalid payload\");\n        }\n      }\n\n      debug(\"decoded %s as %j\", str, p);\n      return p;\n    }\n  }, {\n    key: \"destroy\",\n\n    /**\n     * Deallocates a parser's resources\n     */\n    value: function destroy() {\n      if (this.reconstructor) {\n        this.reconstructor.finishedReconstruction();\n      }\n    }\n  }], [{\n    key: \"isPayloadValid\",\n    value: function isPayloadValid(type, payload) {\n      switch (type) {\n        case PacketType.CONNECT:\n          return _typeof(payload) === \"object\";\n\n        case PacketType.DISCONNECT:\n          return payload === undefined;\n\n        case PacketType.CONNECT_ERROR:\n          return typeof payload === \"string\" || _typeof(payload) === \"object\";\n\n        case PacketType.EVENT:\n        case PacketType.BINARY_EVENT:\n          return Array.isArray(payload) && payload.length > 0;\n\n        case PacketType.ACK:\n        case PacketType.BINARY_ACK:\n          return Array.isArray(payload);\n      }\n    }\n  }]);\n\n  return Decoder;\n}(Emitter);\n\nexports.Decoder = Decoder;\n\nfunction tryParse(str) {\n  try {\n    return JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\n\n\nvar BinaryReconstructor = /*#__PURE__*/function () {\n  function BinaryReconstructor(packet) {\n    _classCallCheck(this, BinaryReconstructor);\n\n    this.packet = packet;\n    this.buffers = [];\n    this.reconPack = packet;\n  }\n  /**\n   * Method to be called when binary data received from connection\n   * after a BINARY_EVENT packet.\n   *\n   * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n   * @return {null | Object} returns null if more binary data is expected or\n   *   a reconstructed packet object if all buffers have been received.\n   */\n\n\n  _createClass(BinaryReconstructor, [{\n    key: \"takeBinaryData\",\n    value: function takeBinaryData(binData) {\n      this.buffers.push(binData);\n\n      if (this.buffers.length === this.reconPack.attachments) {\n        // done with buffer list\n        var packet = binary_1.reconstructPacket(this.reconPack, this.buffers);\n        this.finishedReconstruction();\n        return packet;\n      }\n\n      return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n\n  }, {\n    key: \"finishedReconstruction\",\n    value: function finishedReconstruction() {\n      this.reconPack = null;\n      this.buffers = [];\n    }\n  }]);\n\n  return BinaryReconstructor;\n}();\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/dist/is-binary.js\":\n/*!*********************************************************!*\\\n  !*** ./node_modules/socket.io-parser/dist/is-binary.js ***!\n  \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hasBinary = exports.isBinary = void 0;\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n\nvar isView = function isView(obj) {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\n\nfunction isBinary(obj) {\n  return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File;\n}\n\nexports.isBinary = isBinary;\n\nfunction hasBinary(obj, toJSON) {\n  if (!obj || _typeof(obj) !== \"object\") {\n    return false;\n  }\n\n  if (Array.isArray(obj)) {\n    for (var i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  if (isBinary(obj)) {\n    return true;\n  }\n\n  if (obj.toJSON && typeof obj.toJSON === \"function\" && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexports.hasBinary = hasBinary;\n\n/***/ }),\n\n/***/ \"./node_modules/yeast/index.js\":\n/*!*************************************!*\\\n  !*** ./node_modules/yeast/index.js ***!\n  \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''),\n    length = 64,\n    map = {},\n    seed = 0,\n    i = 0,\n    prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\n\nfunction encode(num) {\n  var encoded = '';\n\n  do {\n    encoded = alphabet[num % length] + encoded;\n    num = Math.floor(num / length);\n  } while (num > 0);\n\n  return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\n\n\nfunction decode(str) {\n  var decoded = 0;\n\n  for (i = 0; i < str.length; i++) {\n    decoded = decoded * length + map[str.charAt(i)];\n  }\n\n  return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\n\n\nfunction yeast() {\n  var now = encode(+new Date());\n  if (now !== prev) return seed = 0, prev = now;\n  return now + '.' + encode(seed++);\n} //\n// Map each character to its index.\n//\n\n\nfor (; i < length; i++) {\n  map[alphabet[i]] = i;\n} //\n// Expose the `yeast`, `encode` and `decode` functions.\n//\n\n\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=socket.io.js.map"
  },
  {
    "path": "srcLogOnly/views/index.ejs",
    "content": "<!doctype html>\n<html class=\"no-js\" lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n    <title>A Human Foundry Christmas</title>\n    <meta name=\"description\" content=\"Google Cloud Speech Recognition with Node and Socket.io\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    <link rel=\"stylesheet\" href=\"assets/css/main.css\">\n</head>\n\n<body>\n    <audio></audio>\n    <div class=\"wrapper\">\n        <button id=\"startRecButton\" type=\"button\">Start</button>\n        <button id=\"stopRecButton\" type=\"button\"> Stop recording</button>\n    </div>\n\n    <!-- Socket -->\n    <script src=\"assets/js/socket.io.js\"></script>\n\n    <!-- Client -->\n    <script src=\"assets/js/client.js\"></script>\n</body>\n\n</html>"
  }
]