{"version":3,"file":"js/6550-896a965fa8722b1f80a2.js","mappings":"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","sources":["webpack:///./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/path-to-regexp/node_modules/isarray/index.js","webpack:///./node_modules/react-router/esm/react-router.js","webpack:///./node_modules/tiny-invariant/dist/esm/tiny-invariant.js"],"sourcesContent":["function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== \"undefined\" // 'global proper'\n? // eslint-disable-next-line no-undef\nglobalThis : typeof window !== \"undefined\" ? window // Browser\n: typeof global !== \"undefined\" ? global // node.js\n: {};\n\nfunction getUniqueId() {\n  var key = \"__global_unique_id__\";\n  return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n} // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  var Provider = /*#__PURE__*/function (_React$Component) {\n    _inheritsLoose(Provider, _React$Component);\n\n    function Provider() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n      _this.emitter = createEventEmitter(_this.props.value);\n      return _this;\n    }\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === \"function\" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (process.env.NODE_ENV !== \"production\") {\n            process.env.NODE_ENV !== \"production\" ? warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, \"calculateChangedBits: Expected the return value to be a \" + \"31-bit integer. Instead received: \" + changedBits) : void 0;\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    _proto.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(React.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n  var Consumer = /*#__PURE__*/function (_React$Component2) {\n    _inheritsLoose(Consumer, _React$Component2);\n\n    function Consumer() {\n      var _this2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      _this2 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;\n      _this2.observedBits = void 0;\n      _this2.state = {\n        value: _this2.getValue()\n      };\n\n      _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      };\n\n      return _this2;\n    }\n\n    var _proto2 = Consumer.prototype;\n\n    _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    _proto2.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    _proto2.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    _proto2.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    _proto2.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(React.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\n// MIT License\nvar createContext = React.createContext || createReactContext;\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n  var context = createContext();\n  context.displayName = name;\n  return context;\n};\n\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Router, _React$Component);\n\n  Router.computeRootMatch = function computeRootMatch(pathname) {\n    return {\n      path: \"/\",\n      url: \"/\",\n      params: {},\n      isExact: pathname === \"/\"\n    };\n  };\n\n  function Router(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n    _this.state = {\n      location: props.history.location\n    }; // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n\n    _this._isMounted = false;\n    _this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      _this.unlisten = props.history.listen(function (location) {\n        _this._pendingLocation = location;\n      });\n    }\n\n    return _this;\n  }\n\n  var _proto = Router.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(function (location) {\n        if (_this2._isMounted) {\n          _this2.setState({\n            location: location\n          });\n        }\n      });\n    }\n\n    if (this._pendingLocation) {\n      this.setState({\n        location: this._pendingLocation\n      });\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  };\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(context.Provider, {\n      value: {\n        history: this.props.history,\n        location: this.state.location,\n        match: Router.computeRootMatch(this.state.location.pathname),\n        staticContext: this.props.staticContext\n      }\n    }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n      children: this.props.children || null,\n      value: this.props.history\n    }));\n  };\n\n  return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change <Router history>\") : void 0;\n  };\n}\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(MemoryRouter, _React$Component);\n\n  function MemoryRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.history = createMemoryHistory(_this.props);\n    return _this;\n  }\n\n  var _proto = MemoryRouter.prototype;\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(Router, {\n      history: this.history,\n      children: this.props.children\n    });\n  };\n\n  return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<MemoryRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n  };\n}\n\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Lifecycle, _React$Component);\n\n  function Lifecycle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Lifecycle.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n  var message = _ref.message,\n      _ref$when = _ref.when,\n      when = _ref$when === void 0 ? true : _ref$when;\n  return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Prompt> outside a <Router>\") : invariant(false) : void 0;\n    if (!when || context.staticContext) return null;\n    var method = context.history.block;\n    return /*#__PURE__*/React.createElement(Lifecycle, {\n      onMount: function onMount(self) {\n        self.release = method(message);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        if (prevProps.message !== message) {\n          self.release();\n          self.release = method(message);\n        }\n      },\n      onUnmount: function onUnmount(self) {\n        self.release();\n      },\n      message: message\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n  var generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n  if (path === void 0) {\n    path = \"/\";\n  }\n\n  if (params === void 0) {\n    params = {};\n  }\n\n  return path === \"/\" ? path : compilePath(path)(params, {\n    pretty: true\n  });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n  var computedMatch = _ref.computedMatch,\n      to = _ref.to,\n      _ref$push = _ref.push,\n      push = _ref$push === void 0 ? false : _ref$push;\n  return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Redirect> outside a <Router>\") : invariant(false) : void 0;\n    var history = context.history,\n        staticContext = context.staticContext;\n    var method = push ? history.push : history.replace;\n    var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n      pathname: generatePath(to.pathname, computedMatch.params)\n    }) : to); // When rendering in a static context,\n    // set the new location immediately.\n\n    if (staticContext) {\n      method(location);\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(Lifecycle, {\n      onMount: function onMount() {\n        method(location);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        var prevLocation = createLocation(prevProps.to);\n\n        if (!locationsAreEqual(prevLocation, _extends({}, location, {\n          key: prevLocation.key\n        }))) {\n          method(location);\n        }\n      },\n      to: to\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n  var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n  var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n  if (pathCache[path]) return pathCache[path];\n  var keys = [];\n  var regexp = pathToRegexp(path, keys, options);\n  var result = {\n    regexp: regexp,\n    keys: keys\n  };\n\n  if (cacheCount$1 < cacheLimit$1) {\n    pathCache[path] = result;\n    cacheCount$1++;\n  }\n\n  return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = {\n      path: options\n    };\n  }\n\n  var _options = options,\n      path = _options.path,\n      _options$exact = _options.exact,\n      exact = _options$exact === void 0 ? false : _options$exact,\n      _options$strict = _options.strict,\n      strict = _options$strict === void 0 ? false : _options$strict,\n      _options$sensitive = _options.sensitive,\n      sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n  var paths = [].concat(path);\n  return paths.reduce(function (matched, path) {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    var _compilePath = compilePath$1(path, {\n      end: exact,\n      strict: strict,\n      sensitive: sensitive\n    }),\n        regexp = _compilePath.regexp,\n        keys = _compilePath.keys;\n\n    var match = regexp.exec(pathname);\n    if (!match) return null;\n    var url = match[0],\n        values = match.slice(1);\n    var isExact = pathname === url;\n    if (exact && !isExact) return null;\n    return {\n      path: path,\n      // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url,\n      // the matched portion of the URL\n      isExact: isExact,\n      // whether or not we matched exactly\n      params: keys.reduce(function (memo, key, index) {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  var value = children(props);\n  process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\"<Route\" + (path ? \" path=\\\"\" + path + \"\\\"\" : \"\") + \">, but you \") + \"should have returned a React element or `null`\") : void 0;\n  return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Route, _React$Component);\n\n  function Route() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Route.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n      !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Route> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context$1.location;\n      var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us\n      : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n      var props = _extends({}, context$1, {\n        location: location,\n        match: match\n      });\n\n      var _this$props = _this.props,\n          children = _this$props.children,\n          component = _this$props.component,\n          render = _this$props.render; // Preact uses an empty array as children by\n      // default, so use null if that's the case.\n\n      if (Array.isArray(children) && isEmptyChildren(children)) {\n        children = null;\n      }\n\n      return /*#__PURE__*/React.createElement(context.Provider, {\n        value: props\n      }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n    });\n  };\n\n  return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: function component(props, propName) {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\") : void 0;\n  };\n\n  Route.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n  return _extends({}, location, {\n    pathname: addLeadingSlash(basename) + location.pathname\n  });\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n  var base = addLeadingSlash(basename);\n  if (location.pathname.indexOf(base) !== 0) return location;\n  return _extends({}, location, {\n    pathname: location.pathname.substr(base.length)\n  });\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return function () {\n     process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with <StaticRouter>\", methodName) : invariant(false) ;\n  };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(StaticRouter, _React$Component);\n\n  function StaticRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handlePush = function (location) {\n      return _this.navigateTo(location, \"PUSH\");\n    };\n\n    _this.handleReplace = function (location) {\n      return _this.navigateTo(location, \"REPLACE\");\n    };\n\n    _this.handleListen = function () {\n      return noop;\n    };\n\n    _this.handleBlock = function () {\n      return noop;\n    };\n\n    return _this;\n  }\n\n  var _proto = StaticRouter.prototype;\n\n  _proto.navigateTo = function navigateTo(location, action) {\n    var _this$props = this.props,\n        _this$props$basename = _this$props.basename,\n        basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n        _this$props$context = _this$props.context,\n        context = _this$props$context === void 0 ? {} : _this$props$context;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        _this$props2$basename = _this$props2.basename,\n        basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n        _this$props2$context = _this$props2.context,\n        context = _this$props2$context === void 0 ? {} : _this$props2$context,\n        _this$props2$location = _this$props2.location,\n        location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n        rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n    var history = {\n      createHref: function createHref(path) {\n        return addLeadingSlash(basename + createURL(path));\n      },\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n    return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n      history: history,\n      staticContext: context\n    }));\n  };\n\n  return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<StaticRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n  };\n}\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Switch, _React$Component);\n\n  function Switch() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Switch.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Switch> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context.location;\n      var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n      // here because toArray adds keys to all child elements and we do not want\n      // to trigger an unmount/remount for two <Route>s that render the same\n      // component at different URLs.\n\n      React.Children.forEach(_this.props.children, function (child) {\n        if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n          element = child;\n          var path = child.props.path || child.props.from;\n          match = path ? matchPath(location.pathname, _extends({}, child.props, {\n            path: path\n          })) : context.match;\n        }\n      });\n      return match ? /*#__PURE__*/React.cloneElement(element, {\n        location: location,\n        computedMatch: match\n      }) : null;\n    });\n  };\n\n  return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n  var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n  var C = function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n    return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a <Router>\") : invariant(false) : void 0;\n      return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n        ref: wrappedComponentRef\n      }));\n    });\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n  }\n\n  return useContext(historyContext);\n}\nfunction useLocation() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n  }\n\n  return useContext(context).location;\n}\nfunction useParams() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n  }\n\n  var match = useContext(context).match;\n  return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n  }\n\n  var location = useLocation();\n  var match = useContext(context).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  if (typeof window !== \"undefined\") {\n    var global$1 = window;\n    var key = \"__react_router_build__\";\n    var buildNames = {\n      cjs: \"CommonJS\",\n      esm: \"ES modules\",\n      umd: \"UMD\"\n    };\n\n    if (global$1[key] && global$1[key] !== \"esm\") {\n      var initialBuildName = buildNames[global$1[key]];\n      var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n      // loading 2 different builds.\n\n      throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n    }\n\n    global$1[key] = \"esm\";\n  }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n"],"names":["isAbsolute","pathname","charAt","spliceOne","list","index","i","k","n","length","pop","to","from","undefined","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","last","up","part","unshift","result","join","substr","addLeadingSlash","path","stripLeadingSlash","stripBasename","prefix","toLowerCase","indexOf","hasBasename","stripTrailingSlash","slice","createPath","location","search","hash","createLocation","state","key","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","e","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","fn","isActive","listener","apply","arguments","push","filter","item","notifyListeners","_len","args","Array","_key","forEach","canUseDOM","window","document","createElement","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","props","ua","globalHistory","canUseHistory","navigator","userAgent","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","toString","transitionManager","setState","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replace","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","a","b","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","splice","canGo","isarray","module","exports","pathToRegexp","parse","compile","str","options","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","defaultDelimiter","delimiter","exec","m","escaped","offset","next","name","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","c","charCodeAt","toUpperCase","matches","flags","obj","opts","data","encode","pretty","encodeURIComponent","token","segment","value","TypeError","JSON","stringify","j","test","attachKeys","re","keys","sensitive","strict","end","route","endsWithDelimiter","groups","source","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","isArray","arr","Object","prototype","call","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","g","createContext","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","Provider","_React$Component","_this","handlers","this","emitter","on","handler","off","h","get","set","newValue","changedBits","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","x","y","render","children","childContextTypes","isRequired","Consumer","_React$Component2","_this2","_len2","_key2","observedBits","getValue","onUpdate","_proto2","componentDidMount","context","componentWillUnmount","contextTypes","createNamedContext","displayName","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","exact","_options$strict","_options$sensitive","reduce","matched","_compilePath","cacheKey","pathCache","regexp","compilePath$1","values","memo","Route","context$1","computedMatch","_this$props","component","count","isEmptyChildren","base","createURL","staticHandler","methodName","noop","Switch","element","child","withRouter","Component","C","wrappedComponentRef","remainingProps","ref","WrappedComponent","useContext","useHistory","useLocation","useParams","useRouteMatch","isProduction","invariant","condition","Error","provided"],"sourceRoot":""}