Merge mozilla-central to mozilla-beta. a=same-version-merge l10n=same-version-merge
authorNoemi Erli <nerli@mozilla.com>
Tue, 12 Mar 2019 20:58:11 +0200
changeset 524497 445c24a51727b447ad2789275be2da490b97f7cd
parent 524318 c3fd91b189da6667595dccfb28c13c8bc6eb3f37 (current diff)
parent 524496 4d15e90af575a68815975bac8c2b602f78d76ee8 (diff)
child 524839 abad13547875b07c88c280ec5bb491ce3ca3f48e
push id2032
push userffxbld-merge
push dateMon, 13 May 2019 09:36:57 +0000
treeherdermozilla-release@455c1065dcbe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssame-version-merge
milestone67.0
Merge mozilla-central to mozilla-beta. a=same-version-merge l10n=same-version-merge
build/unix/build-gcc/download-tools.sh
devtools/client/debugger/new/src/components/shared/Svg.css
testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py
testing/marionette/harness/marionette_harness/tests/unit/test_legacy_mouse_action.py
testing/marionette/harness/marionette_harness/tests/unit/test_single_finger_desktop.py
testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-change-event.html.ini
testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html.ini
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -484,21 +484,21 @@ pref("browser.tabs.newanimations", false
 // Pref to control whether we use separate privileged content processes.
 #if defined(NIGHTLY_BUILD) && !defined(MOZ_ASAN)
 pref("browser.tabs.remote.separatePrivilegedContentProcess", true);
 #endif
 
 // Turn on HTTP response process selection.
 pref("browser.tabs.remote.useHTTPResponseProcessSelection", true);
 
-// Unload tabs on low-memory on nightly.
-#ifdef RELEASE_OR_BETA
+// Unload tabs on low-memory on nightly and beta.
+#ifdef EARLY_BETA_OR_EARLIER
+pref("browser.tabs.unloadOnLowMemory", true);
+#else
 pref("browser.tabs.unloadOnLowMemory", false);
-#else
-pref("browser.tabs.unloadOnLowMemory", true);
 #endif
 
 pref("browser.ctrlTab.recentlyUsedOrder", true);
 
 // By default, do not export HTML at shutdown.
 // If true, at shutdown the bookmarks in your menu and toolbar will
 // be exported as HTML to the bookmarks.html file.
 pref("browser.bookmarks.autoExportHTML",          false);
@@ -1834,19 +1834,9 @@ pref("prio.enabled", true);
 pref("browser.discovery.enabled", true);
 pref("browser.discovery.containers.enabled", true);
 pref("browser.discovery.sites", "addons.mozilla.org");
 
 pref("browser.engagement.recent_visited_origins.expiry", 86400); // 24 * 60 * 60 (24 hours in seconds)
 
 pref("browser.aboutConfig.showWarning", true);
 
-#if defined(XP_WIN) && defined(MOZ_LAUNCHER_PROCESS)
-#if defined(NIGHTLY_BUILD)
-// Enable launcher process by default on Nightly
-pref("browser.launcherProcess.enabled", true);
-#else
-// Launcher process is disabled by default, will be selectively enabled via SHIELD
-pref("browser.launcherProcess.enabled", false);
-#endif  // defined(NIGHTLY_BUILD)
-#endif // defined(XP_WIN) && defined(MOZ_LAUNCHER_PROCESS)
-
 pref("browser.toolbars.keyboard_navigation", false);
--- a/browser/base/content/browser-ctrlTab.js
+++ b/browser/base/content/browser-ctrlTab.js
@@ -424,20 +424,18 @@ var ctrlTab = {
     document.removeEventListener("keyup", this, true);
 
     for (let preview of this.previews) {
       this.updatePreview(preview, null);
     }
   },
 
   onKeyDown(event) {
-    if (event.keyCode != event.DOM_VK_TAB ||
-        !event.ctrlKey ||
-        event.altKey ||
-        event.metaKey) {
+    let action = ShortcutUtils.getSystemActionForEvent(event);
+    if (action != ShortcutUtils.CYCLE_TABS) {
       return;
     }
 
     event.preventDefault();
     event.stopPropagation();
 
     if (this.isOpen) {
       this.advanceFocus(!event.shiftKey);
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -738,16 +738,21 @@ var gIdentityHandler = {
     let owner = "";
 
     try {
       host = this.getEffectiveHost();
     } catch (e) {
       // Some URIs might have no hosts.
     }
 
+    let readerStrippedURI = ReaderMode.getOriginalUrlObjectForDisplay(this._uri.displaySpec);
+    if (readerStrippedURI) {
+      host = readerStrippedURI.host;
+    }
+
     if (this._pageExtensionPolicy) {
       host = this._pageExtensionPolicy.name;
     }
 
     // Fallback for special protocols.
     if (!host) {
       host = this._uri.specIgnoringRef;
     }
--- a/browser/base/content/browser-sync.js
+++ b/browser/base/content/browser-sync.js
@@ -640,17 +640,17 @@ var gSync = {
     }
     const state = UIState.get();
     if (state.status == UIState.STATUS_SIGNED_IN) {
       this.updateSyncStatus({ syncing: true });
       Services.tm.dispatchToMainThread(() => {
         // We are pretty confident that push helps us pick up all FxA commands,
         // but some users might have issues with push, so let's unblock them
         // by fetching the missed FxA commands on manual sync.
-        fxAccounts.commands.fetchMissedRemoteCommands().catch(e => {
+        fxAccounts.commands.pollDeviceCommands().catch(e => {
           console.error("Fetching missed remote commands failed.", e);
         });
         Weave.Service.sync();
       });
     }
   },
 
   openPrefs(entryPoint = "syncbutton", origin = undefined) {
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -4222,70 +4222,64 @@ window._gBrowser = {
   },
 
   _handleKeyDownEvent(aEvent) {
     if (!aEvent.isTrusted) {
       // Don't let untrusted events mess with tabs.
       return;
     }
 
-    if (aEvent.altKey)
+    // Skip this only if something has explicitly cancelled it.
+    if (aEvent.defaultCancelled) {
       return;
+    }
 
     // Don't check if the event was already consumed because tab
     // navigation should always work for better user experience.
 
-    if (aEvent.ctrlKey && aEvent.shiftKey && !aEvent.metaKey) {
-      switch (aEvent.keyCode) {
-        case aEvent.DOM_VK_PAGE_UP:
-          this.moveTabBackward();
-          aEvent.preventDefault();
-          return;
-        case aEvent.DOM_VK_PAGE_DOWN:
-          this.moveTabForward();
-          aEvent.preventDefault();
-          return;
-      }
-    }
-
-    if (AppConstants.platform != "macosx") {
-      if (aEvent.ctrlKey && !aEvent.shiftKey && !aEvent.metaKey &&
-          aEvent.keyCode == KeyEvent.DOM_VK_F4) {
+    switch (ShortcutUtils.getSystemActionForEvent(aEvent)) {
+      case ShortcutUtils.MOVE_TAB_BACKWARD:
+        this.moveTabBackward();
+        aEvent.preventDefault();
+        return;
+      case ShortcutUtils.MOVE_TAB_FORWARD:
+        this.moveTabForward();
+        aEvent.preventDefault();
+        return;
+      case ShortcutUtils.CLOSE_TAB:
         if (gBrowser.multiSelectedTabsCount) {
           gBrowser.removeMultiSelectedTabs();
         } else if (!this.selectedTab.pinned) {
           this.removeCurrentTab({ animate: true });
         }
         aEvent.preventDefault();
-      }
     }
   },
 
   _handleKeyPressEventMac(aEvent) {
     if (!aEvent.isTrusted) {
       // Don't let untrusted events mess with tabs.
       return;
     }
 
-    if (aEvent.altKey)
+    // Skip this only if something has explicitly cancelled it.
+    if (aEvent.defaultCancelled) {
       return;
+    }
 
     if (AppConstants.platform == "macosx") {
-      if (!aEvent.metaKey)
-        return;
-
-      var offset = 1;
-      switch (aEvent.charCode) {
-        case "}".charCodeAt(0):
-          offset = -1;
-        case "{".charCodeAt(0):
-          if (!RTL_UI)
-            offset *= -1;
-          this.tabContainer.advanceSelectedTab(offset, true);
+      switch (ShortcutUtils.getSystemActionForEvent(aEvent, {rtl: RTL_UI})) {
+        case ShortcutUtils.NEXT_TAB:
+          this.tabContainer.advanceSelectedTab(1, true);
           aEvent.preventDefault();
+          break;
+        case ShortcutUtils.PREVIOUS_TAB:
+          this.tabContainer.advanceSelectedTab(-1, true);
+          aEvent.preventDefault();
+          break;
       }
     }
   },
 
   createTooltip(event) {
     event.stopPropagation();
     var tab = document.tooltipNode;
     if (!tab || tab.localName != "tab") {
--- a/browser/base/content/test/keyboard/browser_toolbarKeyNav.js
+++ b/browser/base/content/test/keyboard/browser_toolbarKeyNav.js
@@ -6,16 +6,20 @@
 /**
  * Test browser toolbar keyboard navigation.
  * These tests assume the default browser configuration for toolbars unless
  * otherwise specified.
  */
 
 const PERMISSIONS_PAGE = "https://example.com/browser/browser/base/content/test/permissions/permissions.html";
 
+// The DevEdition has the DevTools button in the toolbar by default. Remove it
+// to prevent branch-specific rules what button should be focused.
+CustomizableUI.removeWidgetFromArea("developer-button");
+
 async function expectFocusAfterKey(aKey, aFocus, aAncestorOk = false) {
   let res = aKey.match(/^(Shift\+)?(?:(.)|(.+))$/);
   let shift = Boolean(res[1]);
   let key;
   if (res[2]) {
     key = res[2]; // Character.
   } else {
     key = "KEY_" + res[3]; // Tab, ArrowRight, etc.
@@ -225,8 +229,12 @@ add_task(async function testArrowsOverfl
     // Make sure the button is not reachable once it is invisible again.
     await expectFocusAfterKey("ArrowRight", "PanelUI-menu-button");
     CustomizableUI.reset();
     // Flush layout so its invisibility can be detected.
     document.getElementById("nav-bar-overflow-button").clientWidth;
     await expectFocusAfterKey("ArrowLeft", "sidebar-button");
   });
 });
+
+registerCleanupFunction(async function resetToolbar() {
+  await CustomizableUI.reset();
+});
--- a/browser/base/content/test/siteIdentity/browser_check_identity_state.js
+++ b/browser/base/content/test/siteIdentity/browser_check_identity_state.js
@@ -19,16 +19,23 @@ function getIdentityMode(aWindow = windo
 
 function getConnectionState() {
   // Prevents items that are being lazy loaded causing issues
   document.getElementById("identity-box").click();
   gIdentityHandler.refreshIdentityPopup();
   return document.getElementById("identity-popup").getAttribute("connection");
 }
 
+function getReaderModeURL() {
+  // Gets the reader mode URL from "identity-popup mainView panel header span"
+  document.getElementById("identity-box").click();
+  gIdentityHandler.refreshIdentityPopup();
+  return document.getElementById("identity-popup-mainView-panel-header-span").innerHTML;
+}
+
 // This test is slow on Linux debug e10s
 requestLongerTimeout(2);
 
 async function webpageTest(secureCheck) {
   await SpecialPowers.pushPrefEnv({set: [[INSECURE_ICON_PREF, secureCheck]]});
   let oldTab = gBrowser.selectedTab;
 
   let newTab = await loadNewTab("http://example.com/" + DUMMY);
@@ -344,16 +351,34 @@ async function aboutUriTest(secureCheck)
   await SpecialPowers.popPrefEnv();
 }
 
 add_task(async function test_about_uri() {
   await aboutUriTest(true);
   await aboutUriTest(false);
 });
 
+async function readerUriTest(secureCheck) {
+  await SpecialPowers.pushPrefEnv({set: [[INSECURE_ICON_PREF, secureCheck]]});
+
+  let newTab = await loadNewTab("about:reader?url=http://example.com");
+  gBrowser.selectedTab = newTab;
+  let readerURL = getReaderModeURL();
+  is(readerURL, "Site Information for example.com", "should be the correct URI in reader mode");
+
+  gBrowser.removeTab(newTab);
+
+  await SpecialPowers.popPrefEnv();
+}
+
+add_task(async function test_reader_uri() {
+  await readerUriTest(true);
+  await readerUriTest(false);
+});
+
 async function dataUriTest(secureCheck) {
   let oldTab = gBrowser.selectedTab;
   await SpecialPowers.pushPrefEnv({set: [[INSECURE_ICON_PREF, secureCheck]]});
   let dataURI = "data:text/html,hi";
 
   let newTab = await loadNewTab(dataURI);
   is(getIdentityMode(), "unknownIdentity", "Identity should be unknown");
 
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -1030,23 +1030,19 @@ function openHelpLink(aHelpTopic, aCalle
   var url = getHelpLinkURL(aHelpTopic);
   var where = aWhere;
   if (!aWhere)
     where = aCalledFromModal ? "window" : "tab";
 
   openTrustedLinkIn(url, where);
 }
 
-function openPrefsHelp() {
-  // non-instant apply prefwindows are usually modal, so we can't open in the topmost window,
-  // since its probably behind the window.
-  var instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply");
-
-  var helpTopic = document.documentElement.getAttribute("helpTopic");
-  openHelpLink(helpTopic, !instantApply);
+function openPrefsHelp(aEvent) {
+  let helpTopic = aEvent.target.getAttribute("helpTopic");
+  openHelpLink(helpTopic);
 }
 
 function trimURL(aURL) {
   // This function must not modify the given URL such that calling
   // nsIURIFixup::createFixupURI with the result will produce a different URI.
 
   // remove single trailing slash for http/https/ftp URLs
   let url = aURL.replace(/^((?:http|https|ftp):\/\/[^/]+)\/$/, "$1");
--- a/browser/branding/aurora/pref/firefox-branding.js
+++ b/browser/branding/aurora/pref/firefox-branding.js
@@ -13,17 +13,17 @@ pref("app.update.interval", 28800); // 8
 pref("app.update.promptWaitTime", 691200);
 // URL user can browse to manually if for some reason all update installation
 // attempts fail.
 pref("app.update.url.manual", "https://www.mozilla.org/firefox/aurora/");
 // A default value for the "More information about this update" link
 // supplied in the "An update is available" page of the update wizard.
 pref("app.update.url.details", "https://www.mozilla.org/firefox/aurora/");
 
-pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-browser&utm_campaign=whatsnew");
+pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%beta/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-browser&utm_campaign=whatsnew");
 
 // The number of days a binary is permitted to be old
 // without checking for an update.  This assumes that
 // app.update.checkInstallTime is true.
 pref("app.update.checkInstallTime.days", 2);
 
 // Give the user x seconds to reboot before showing a badge on the hamburger
 // button. default=4 days
--- a/browser/branding/official/pref/firefox-branding.js
+++ b/browser/branding/official/pref/firefox-branding.js
@@ -12,23 +12,23 @@ pref("app.update.promptWaitTime", 691200
 // app.update.url.manual: URL user can browse to manually if for some reason
 // all update installation attempts fail.
 // app.update.url.details: a default value for the "More information about this
 // update" link supplied in the "An update is available" page of the update
 // wizard.
 #if MOZ_UPDATE_CHANNEL == beta
 pref("app.update.url.manual", "https://www.mozilla.org/firefox/beta");
 pref("app.update.url.details", "https://www.mozilla.org/%LOCALE%/firefox/beta/notes");
+pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%beta/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-browser&utm_campaign=whatsnew");
 #else
 pref("app.update.url.manual", "https://www.mozilla.org/firefox/");
 pref("app.update.url.details", "https://www.mozilla.org/%LOCALE%/firefox/notes");
+pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-browser&utm_campaign=whatsnew");
 #endif
 
-pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-browser&utm_campaign=whatsnew");
-
 // The number of days a binary is permitted to be old
 // without checking for an update.  This assumes that
 // app.update.checkInstallTime is true.
 pref("app.update.checkInstallTime.days", 63);
 
 // Give the user x seconds to reboot before showing a badge on the hamburger
 // button. default=4 days
 pref("app.update.badgeWaitTime", 345600);
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -534,16 +534,17 @@ const listeners = {
     "Reader:UpdateReaderButton": ["ReaderParent"],
     // PLEASE KEEP THIS LIST IN SYNC WITH THE MOBILE LISTENERS IN BrowserCLH.js
     "PasswordManager:findLogins": ["LoginManagerParent"],
     "PasswordManager:findRecipes": ["LoginManagerParent"],
     "PasswordManager:onFormSubmit": ["LoginManagerParent"],
     "PasswordManager:autoCompleteLogins": ["LoginManagerParent"],
     "PasswordManager:removeLogin": ["LoginManagerParent"],
     "PasswordManager:insecureLoginFormPresent": ["LoginManagerParent"],
+    "PasswordManager:OpenPreferences": ["LoginManagerParent"],
     // PLEASE KEEP THIS LIST IN SYNC WITH THE MOBILE LISTENERS IN BrowserCLH.js
     "rtcpeer:CancelRequest": ["webrtcUI"],
     "rtcpeer:Request": ["webrtcUI"],
     "webrtc:CancelRequest": ["webrtcUI"],
     "webrtc:Request": ["webrtcUI"],
     "webrtc:StopRecording": ["webrtcUI"],
     "webrtc:UpdateBrowserIndicators": ["webrtcUI"],
   },
@@ -2855,18 +2856,18 @@ BrowserGlue.prototype = {
         }
         tab.setAttribute("attention", true);
         return tab;
       };
 
       const firstTab = await openTab(URIs[0]);
       await Promise.all(URIs.slice(1).map(URI => openTab(URI)));
 
+      const deviceName = URIs[0].sender && URIs[0].sender.name;
       let title, body;
-      const deviceName = URIs[0].sender.name;
       const bundle = Services.strings.createBundle("chrome://browser/locale/accounts.properties");
       if (URIs.length == 1) {
         // Due to bug 1305895, tabs from iOS may not have device information, so
         // we have separate strings to handle those cases. (See Also
         // unnamedTabsArrivingNotificationNoDevice.body below)
         if (deviceName) {
           title = bundle.formatStringFromName("tabArrivingNotificationWithDevice.title", [deviceName], 1);
         } else {
@@ -2880,23 +2881,25 @@ BrowserGlue.prototype = {
         if (win.gURLBar) {
           body = win.gURLBar.trimValue(body);
         }
         if (wasTruncated) {
           body = bundle.formatStringFromName("singleTabArrivingWithTruncatedURL.body", [body], 1);
         }
       } else {
         title = bundle.GetStringFromName("multipleTabsArrivingNotification.title");
-        const allSameDevice = URIs.every(URI => URI.sender.id == URIs[0].sender.id);
-        const unknownDevice = allSameDevice && !deviceName;
+        const allKnownSender = URIs.every(URI => URI.sender != null);
+        const allSameDevice = allKnownSender && URIs.every(URI => URI.sender.id == URIs[0].sender.id);
         let tabArrivingBody;
-        if (unknownDevice) {
-          tabArrivingBody = "unnamedTabsArrivingNotificationNoDevice.body";
-        } else if (allSameDevice) {
-          tabArrivingBody = "unnamedTabsArrivingNotification2.body";
+        if (allSameDevice) {
+          if (deviceName) {
+            tabArrivingBody = "unnamedTabsArrivingNotification2.body";
+          } else {
+            tabArrivingBody = "unnamedTabsArrivingNotificationNoDevice.body";
+          }
         } else {
           tabArrivingBody = "unnamedTabsArrivingNotificationMultiple2.body";
         }
 
         body = bundle.GetStringFromName(tabArrivingBody);
         body = PluralForm.get(URIs.length, body);
         body = body.replace("#1", URIs.length);
         body = body.replace("#2", deviceName);
--- a/browser/components/customizableui/content/panelUI.inc.xul
+++ b/browser/components/customizableui/content/panelUI.inc.xul
@@ -156,18 +156,18 @@
                      buttonaccesskey="&addonPrivateBrowsing.okButton.accesskey;"
                      dropmarkerhidden="true"
                      checkboxhidden="true"
                      buttonhighlight="true"
                      hidden="true">
     <popupnotificationcontent class="addon-installed-notification-content" orient="vertical">
       <description>&addonPostInstallMessage.label;</description>
       <checkbox id="addon-incognito-checkbox"
-                label="&addonPostInstall.incognito.label;"
-                accesskey="&addonPostInstall.incognito.accesskey;"/>
+                label="&addonPostInstall.incognito.checkbox.label;"
+                accesskey="&addonPostInstall.incognito.checkbox.accesskey;"/>
     </popupnotificationcontent>
   </popupnotification>
 
   <popupnotification id="appMenu-addon-private-browsing-notification"
                      popupid="addon-private-browsing"
                      label="&addonPrivateBrowsing.header2.label;"
                      closebuttonhidden="true"
                      secondarybuttonhidden="false"
@@ -411,17 +411,19 @@
     </panelview>
     <panelview id="PanelUI-history" flex="1">
       <vbox class="panel-subview-body">
         <toolbarbutton id="appMenuViewHistorySidebar"
                        label="&appMenuHistory.viewSidebar.label;"
                        type="checkbox"
                        class="subviewbutton subviewbutton-iconic"
                        key="key_gotoHistory"
-                       oncommand="SidebarUI.toggle('viewHistorySidebar');"/>
+                       oncommand="SidebarUI.toggle('viewHistorySidebar');">
+                       <observes element="sidebar-box" attribute="positionend"/>
+        </toolbarbutton>
         <toolbarbutton id="appMenuClearRecentHistory"
                        label="&appMenuHistory.clearRecent.label;"
                        class="subviewbutton subviewbutton-iconic"
                        command="Tools:Sanitize"/>
         <toolbarseparator/>
         <toolbarbutton id="appMenuRecentlyClosedTabs"
                        label="&historyUndoMenu.label;"
                        class="subviewbutton subviewbutton-iconic subviewbutton-nav"
@@ -461,17 +463,19 @@
           <vbox id="PanelUI-remotetabs-buttons">
             <toolbarbutton id="PanelUI-remotetabs-view-sidebar"
                            class="subviewbutton subviewbutton-iconic"
                            label="&appMenuRemoteTabs.sidebar.label;"
                            oncommand="SidebarUI.toggle('viewTabsSidebar');"/>
             <toolbarbutton id="PanelUI-remotetabs-view-managedevices"
                            class="subviewbutton subviewbutton-iconic"
                            label="&appMenuRemoteTabs.managedevices.label;"
-                           oncommand="gSync.openDevicesManagementPage('syncedtabs-menupanel');"/>
+                           oncommand="gSync.openDevicesManagementPage('syncedtabs-menupanel');">
+                           <observes element="sidebar-box" attribute="positionend"/>
+            </toolbarbutton>
             <toolbarbutton id="PanelUI-remotetabs-syncnow"
                            onmouseover="gSync.refreshSyncButtonsTooltip();"
                            class="subviewbutton subviewbutton-iconic"
                            oncommand="gSync.doSync();"
                            closemenu="none"/>
             <menuseparator id="PanelUI-remotetabs-separator"/>
           </vbox>
           <deck id="PanelUI-remotetabs-deck">
@@ -720,17 +724,19 @@
                        label-show="&addBookmarksMenu.label;"
                        label-hide="&removeBookmarksMenu.label;"
                        oncommand="BookmarkingUI.toggleMenuButtonInToolbar(this);"/>
         <toolbarbutton id="panelMenu_viewBookmarksSidebar"
                        class="subviewbutton subviewbutton-iconic"
                        label-show="&viewBookmarksSidebar2.label;"
                        label-hide="&hideBookmarksSidebar.label;"
                        key="viewBookmarksSidebarKb"
-                       oncommand="SidebarUI.toggle('viewBookmarksSidebar', this);"/>
+                       oncommand="SidebarUI.toggle('viewBookmarksSidebar', this);">
+                       <observes element="sidebar-box" attribute="positionend"/>
+        </toolbarbutton>
         <toolbarbutton id="panelMenu_viewBookmarksToolbar"
                        class="subviewbutton subviewbutton-iconic"
                        label-show="&viewBookmarksToolbar.label;"
                        label-hide="&hideBookmarksToolbar.label;"
                        oncommand="BookmarkingUI.toggleBookmarksToolbar();"/>
       </vbox>
     </panelview>
   </panelmultiview>
--- a/browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js
+++ b/browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js
@@ -67,16 +67,37 @@ add_task(async function test_setuninstal
 
   addon.uninstall(true);
   info("uninstalled");
 
   // no need to explicitly check for the absence of a new tab,
   // BrowserTestUtils will eventually complain if one is opened.
 });
 
+// Test the documented behavior of setUninstallURL() that passing an
+// empty string is equivalent to not setting an uninstall URL
+// (i.e., no new tab is opened upon uninstall)
+// here we pass a null value to string and test
+add_task(async function test_setuninstall_null_url() {
+  async function backgroundScript() {
+    await browser.runtime.setUninstallURL(null);
+    browser.tabs.create({url: "http://example.com/addon_loaded"});
+  }
+
+  let addon = await makeAndInstallXPI("test_uinstallurl2@tests.mozilla.org",
+                                      backgroundScript,
+                                      "http://example.com/addon_loaded");
+
+  addon.uninstall(true);
+  info("uninstalled");
+
+  // no need to explicitly check for the absence of a new tab,
+  // BrowserTestUtils will eventually complain if one is opened.
+});
+
 add_task(async function test_setuninstallurl() {
   async function backgroundScript() {
     await browser.runtime.setUninstallURL("http://example.com/addon_uninstalled");
     browser.tabs.create({url: "http://example.com/addon_loaded"});
   }
 
   let addon = await makeAndInstallXPI("test_uinstallurl@tests.mozilla.org",
                                       backgroundScript,
--- a/browser/components/preferences/in-content/findInPage.js
+++ b/browser/components/preferences/in-content/findInPage.js
@@ -366,17 +366,17 @@ var gSearchResultsPane = {
       // Access key are presented
       let complexTextNodesResult = this.highlightMatches(accessKeyTextNodes, nodeSizes, allNodeText.toLowerCase(), searchPhrase);
 
       // Searching some elements, such as xul:button, have a 'label' attribute that contains the user-visible text.
       let labelResult = this.queryMatchesContent(nodeObject.getAttribute("label"), searchPhrase);
 
       // Searching some elements, such as xul:label, store their user-visible text in a "value" attribute.
       // Value will be skipped for menuitem since value in menuitem could represent index number to distinct each item.
-      let valueResult = nodeObject.tagName !== "menuitem" ?
+      let valueResult = nodeObject.tagName !== "menuitem" && nodeObject.tagName !== "radio" ?
         this.queryMatchesContent(nodeObject.getAttribute("value"), searchPhrase) : false;
 
       // Searching some elements, such as xul:button, buttons to open subdialogs
       // using l10n ids.
       let keywordsResult =
         nodeObject.hasAttribute("search-l10n-ids") &&
         await this.matchesSearchL10nIDs(nodeObject, searchPhrase);
 
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -916,19 +916,18 @@ class UrlbarInput {
     } catch (ex) {
       // This load can throw an exception in certain cases, which means
       // we'll want to replace the URL with the loaded URL:
       if (ex.result != Cr.NS_ERROR_LOAD_SHOWED_ERRORPAGE) {
         this.handleRevert();
       }
     }
 
-    // TODO This should probably be handed via input.
     // Ensure the start of the URL is visible for usability reasons.
-    // this.selectionStart = this.selectionEnd = 0;
+    this.selectionStart = this.selectionEnd = 0;
 
     this.closePopup();
   }
 
   /**
    * Determines where a URL/page should be opened.
    *
    * @param {Event} event the event triggering the opening.
--- a/browser/components/urlbar/tests/browser/browser.ini
+++ b/browser/components/urlbar/tests/browser/browser.ini
@@ -45,16 +45,17 @@ support-files =
 [browser_moz_action_link.js]
 [browser_new_tab_urlbar_reset.js]
 [browser_pasteAndGo.js]
 subsuite = clipboard
 [browser_populateAfterPushState.js]
 [browser_privateBrowsingWindowChange.js]
 skip-if = debug # Bug 1532034 - Leaks in debug mode.
 [browser_raceWithTabs.js]
+skip-if = os == "linux" # Bug 1533807
 [browser_redirect_error.js]
 support-files = redirect_error.sjs
 [browser_remotetab.js]
 [browser_removeUnsafeProtocolsFromURLBarPaste.js]
 subsuite = clipboard
 [browser_search_favicon.js]
 skip-if = true # Bug 1526222 - Doesn't currently work with QuantumBar
 [browser_searchTelemetry.js]
--- a/browser/components/urlbar/tests/legacy/browser.ini
+++ b/browser/components/urlbar/tests/legacy/browser.ini
@@ -68,16 +68,17 @@ skip-if = (os == "linux" || os == "mac")
 [../browser/browser_locationBarExternalLoad.js]
 [../browser/browser_moz_action_link.js]
 [../browser/browser_new_tab_urlbar_reset.js]
 [../browser/browser_pasteAndGo.js]
 subsuite = clipboard
 [../browser/browser_populateAfterPushState.js]
 [../browser/browser_privateBrowsingWindowChange.js]
 [../browser/browser_raceWithTabs.js]
+skip-if = os == "linux" # Bug 1533807
 [../browser/browser_redirect_error.js]
 support-files = ../browser/redirect_error.sjs
 [../browser/browser_remotetab.js]
 [../browser/browser_removeUnsafeProtocolsFromURLBarPaste.js]
 subsuite = clipboard
 [../browser/browser_search_favicon.js]
 [../browser/browser_searchTelemetry.js]
 support-files =
--- a/browser/extensions/pdfjs/README.mozilla
+++ b/browser/extensions/pdfjs/README.mozilla
@@ -1,5 +1,5 @@
 This is the PDF.js project output, https://github.com/mozilla/pdf.js
 
-Current extension version is: 2.2.51
+Current extension version is: 2.2.67
 
-Taken from upstream commit: c43396c2
+Taken from upstream commit: d587abbc
--- a/browser/extensions/pdfjs/content/build/pdf.js
+++ b/browser/extensions/pdfjs/content/build/pdf.js
@@ -118,18 +118,18 @@ return /******/ (function(modules) { // 
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
-var pdfjsVersion = '2.2.51';
-var pdfjsBuild = 'c43396c2';
+var pdfjsVersion = '2.2.67';
+var pdfjsBuild = 'd587abbc';
 
 var pdfjsSharedUtil = __w_pdfjs_require__(1);
 
 var pdfjsDisplayAPI = __w_pdfjs_require__(6);
 
 var pdfjsDisplayTextLayer = __w_pdfjs_require__(18);
 
 var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(19);
@@ -188,17 +188,16 @@ exports.apiCompatibilityParams = pdfjsDi
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
 exports.createPromiseCapability = createPromiseCapability;
-exports.deprecated = deprecated;
 exports.getVerbosityLevel = getVerbosityLevel;
 exports.info = info;
 exports.isArrayBuffer = isArrayBuffer;
 exports.isBool = isBool;
 exports.isEmptyObj = isEmptyObj;
 exports.isNum = isNum;
 exports.isString = isString;
 exports.isSpace = isSpace;
@@ -518,20 +517,16 @@ function info(msg) {
 }
 
 function warn(msg) {
   if (verbosity >= VerbosityLevel.WARNINGS) {
     console.log('Warning: ' + msg);
   }
 }
 
-function deprecated(details) {
-  console.log('Deprecated API usage: ' + details);
-}
-
 function unreachable(msg) {
   throw new Error(msg);
 }
 
 function assert(cond, msg) {
   if (!cond) {
     unreachable(msg);
   }
@@ -1290,17 +1285,17 @@ function _fetchDocument(worker, source, 
 
   if (pdfDataRangeTransport) {
     source.length = pdfDataRangeTransport.length;
     source.initialData = pdfDataRangeTransport.initialData;
   }
 
   return worker.messageHandler.sendWithPromise('GetDocRequest', {
     docId,
-    apiVersion: '2.2.51',
+    apiVersion: '2.2.67',
     source: {
       data: source.data,
       url: source.url,
       password: source.password,
       disableAutoFetch: source.disableAutoFetch,
       rangeChunkSize: source.rangeChunkSize,
       length: source.length
     },
@@ -1350,17 +1345,17 @@ const PDFDocumentLoadingTask = function 
           this._worker.destroy();
 
           this._worker = null;
         }
       });
     }
 
     then(onFulfilled, onRejected) {
-      (0, _util.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
+      (0, _display_utils.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
       return this.promise.then.apply(this.promise, arguments);
     }
 
   }
 
   return PDFDocumentLoadingTask;
 }();
 
@@ -2562,21 +2557,21 @@ class WorkerTransport {
         });
       }
     }, this);
     messageHandler.on('PageError', function (data) {
       if (this.destroyed) {
         return;
       }
 
-      const page = this.pageCache[data.pageNum - 1];
+      const page = this.pageCache[data.pageIndex];
       const intentState = page.intentStates[data.intent];
 
       if (intentState.displayReadyCapability) {
-        intentState.displayReadyCapability.reject(data.error);
+        intentState.displayReadyCapability.reject(new Error(data.error));
       } else {
         throw new Error(data.error);
       }
 
       if (intentState.operatorList) {
         intentState.operatorList.lastChunk = true;
 
         for (let i = 0; i < intentState.renderTasks.length; i++) {
@@ -2861,17 +2856,17 @@ class RenderTask {
     return this._internalRenderTask.capability.promise;
   }
 
   cancel() {
     this._internalRenderTask.cancel();
   }
 
   then(onFulfilled, onRejected) {
-    (0, _util.deprecated)('RenderTask.then method, use the `promise` getter instead.');
+    (0, _display_utils.deprecated)('RenderTask.then method, use the `promise` getter instead.');
     return this.promise.then.apply(this.promise, arguments);
   }
 
 }
 
 const InternalRenderTask = function InternalRenderTaskClosure() {
   const canvasInRendering = new WeakSet();
 
@@ -3033,19 +3028,19 @@ const InternalRenderTask = function Inte
       }
     }
 
   }
 
   return InternalRenderTask;
 }();
 
-const version = '2.2.51';
+const version = '2.2.67';
 exports.version = version;
-const build = 'c43396c2';
+const build = 'd587abbc';
 exports.build = build;
 
 /***/ }),
 /* 7 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
@@ -3053,56 +3048,57 @@ exports.build = build;
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.addLinkAttributes = addLinkAttributes;
 exports.getFilenameFromUrl = getFilenameFromUrl;
 exports.isFetchSupported = isFetchSupported;
 exports.isValidFetchUrl = isValidFetchUrl;
 exports.loadScript = loadScript;
+exports.deprecated = deprecated;
 exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
 
 var _util = __w_pdfjs_require__(1);
 
 const DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
 exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
 const SVG_NS = 'http://www.w3.org/2000/svg';
 
 class DOMCanvasFactory {
   create(width, height) {
     if (width <= 0 || height <= 0) {
-      throw new Error('invalid canvas size');
-    }
-
-    let canvas = document.createElement('canvas');
-    let context = canvas.getContext('2d');
+      throw new Error('Invalid canvas size');
+    }
+
+    const canvas = document.createElement('canvas');
+    const context = canvas.getContext('2d');
     canvas.width = width;
     canvas.height = height;
     return {
       canvas,
       context
     };
   }
 
   reset(canvasAndContext, width, height) {
     if (!canvasAndContext.canvas) {
-      throw new Error('canvas is not specified');
+      throw new Error('Canvas is not specified');
     }
 
     if (width <= 0 || height <= 0) {
-      throw new Error('invalid canvas size');
+      throw new Error('Invalid canvas size');
     }
 
     canvasAndContext.canvas.width = width;
     canvasAndContext.canvas.height = height;
   }
 
   destroy(canvasAndContext) {
     if (!canvasAndContext.canvas) {
-      throw new Error('canvas is not specified');
+      throw new Error('Canvas is not specified');
     }
 
     canvasAndContext.canvas.width = 0;
     canvasAndContext.canvas.height = 0;
     canvasAndContext.canvas = null;
     canvasAndContext.context = null;
   }
 
@@ -3156,17 +3152,17 @@ class DOMCMapReaderFactory {
 
 }
 
 exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
 
 class DOMSVGFactory {
   create(width, height) {
     (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
-    let svg = document.createElementNS(SVG_NS, 'svg:svg');
+    const svg = document.createElementNS(SVG_NS, 'svg:svg');
     svg.setAttribute('version', '1.1');
     svg.setAttribute('width', width + 'px');
     svg.setAttribute('height', height + 'px');
     svg.setAttribute('preserveAspectRatio', 'none');
     svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
     return svg;
   }
 
@@ -3188,18 +3184,18 @@ class PageViewport {
     offsetY = 0,
     dontFlip = false
   }) {
     this.viewBox = viewBox;
     this.scale = scale;
     this.rotation = rotation;
     this.offsetX = offsetX;
     this.offsetY = offsetY;
-    let centerX = (viewBox[2] + viewBox[0]) / 2;
-    let centerY = (viewBox[3] + viewBox[1]) / 2;
+    const centerX = (viewBox[2] + viewBox[0]) / 2;
+    const centerY = (viewBox[3] + viewBox[1]) / 2;
     let rotateA, rotateB, rotateC, rotateD;
     rotation = rotation % 360;
     rotation = rotation < 0 ? rotation + 360 : rotation;
 
     switch (rotation) {
       case 180:
         rotateA = -1;
         rotateB = 0;
@@ -3269,32 +3265,32 @@ class PageViewport {
     });
   }
 
   convertToViewportPoint(x, y) {
     return _util.Util.applyTransform([x, y], this.transform);
   }
 
   convertToViewportRectangle(rect) {
-    let tl = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
-
-    let br = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
-
-    return [tl[0], tl[1], br[0], br[1]];
+    const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
+
+    const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
+
+    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
   }
 
   convertToPdfPoint(x, y) {
     return _util.Util.applyInverseTransform([x, y], this.transform);
   }
 
 }
 
 exports.PageViewport = PageViewport;
 
-var RenderingCancelledException = function RenderingCancelledException() {
+const RenderingCancelledException = function RenderingCancelledException() {
   function RenderingCancelledException(msg, type) {
     this.message = msg;
     this.type = type;
   }
 
   RenderingCancelledException.prototype = new Error();
   RenderingCancelledException.prototype.name = 'RenderingCancelledException';
   RenderingCancelledException.constructor = RenderingCancelledException;
@@ -3316,26 +3312,26 @@ function addLinkAttributes(link, {
   url,
   target,
   rel
 } = {}) {
   link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
 
   if (url) {
     const LinkTargetValues = Object.values(LinkTarget);
-    let targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
+    const targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
     link.target = LinkTargetStringMap[targetIndex];
     link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
   }
 }
 
 function getFilenameFromUrl(url) {
-  var anchor = url.indexOf('#');
-  var query = url.indexOf('?');
-  var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
+  const anchor = url.indexOf('#');
+  const query = url.indexOf('?');
+  const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
   return url.substring(url.lastIndexOf('/', end) + 1, end);
 }
 
 class StatTimer {
   constructor(enable = true) {
     this.enabled = !!enable;
     this.started = Object.create(null);
     this.times = [];
@@ -3366,32 +3362,30 @@ class StatTimer {
       'name': name,
       'start': this.started[name],
       'end': Date.now()
     });
     delete this.started[name];
   }
 
   toString() {
-    let times = this.times;
     let out = '',
         longest = 0;
 
-    for (let i = 0, ii = times.length; i < ii; ++i) {
-      let name = times[i]['name'];
+    for (const time of this.times) {
+      const name = time.name;
 
       if (name.length > longest) {
         longest = name.length;
       }
     }
 
-    for (let i = 0, ii = times.length; i < ii; ++i) {
-      let span = times[i];
-      let duration = span.end - span.start;
-      out += `${span['name'].padEnd(longest)} ${duration}ms\n`;
+    for (const time of this.times) {
+      const duration = time.end - time.start;
+      out += `${time.name.padEnd(longest)} ${duration}ms\n`;
     }
 
     return out;
   }
 
 }
 
 exports.StatTimer = StatTimer;
@@ -3425,28 +3419,32 @@ function isValidFetchUrl(url, baseUrl) {
     return protocol === 'http:' || protocol === 'https:';
   } catch (ex) {
     return false;
   }
 }
 
 function loadScript(src) {
   return new Promise((resolve, reject) => {
-    let script = document.createElement('script');
+    const script = document.createElement('script');
     script.src = src;
     script.onload = resolve;
 
     script.onerror = function () {
       reject(new Error(`Cannot load script at: ${script.src}`));
     };
 
     (document.head || document.documentElement).appendChild(script);
   });
 }
 
+function deprecated(details) {
+  console.log('Deprecated API usage: ' + details);
+}
+
 /***/ }),
 /* 8 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
--- a/browser/extensions/pdfjs/content/build/pdf.worker.js
+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
@@ -118,18 +118,18 @@ return /******/ (function(modules) { // 
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
-const pdfjsVersion = '2.2.51';
-const pdfjsBuild = 'c43396c2';
+const pdfjsVersion = '2.2.67';
+const pdfjsBuild = 'd587abbc';
 
 const pdfjsCoreWorker = __w_pdfjs_require__(1);
 
 exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
 
 /***/ }),
 /* 1 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
@@ -141,19 +141,19 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.WorkerMessageHandler = exports.WorkerTask = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _pdf_manager = __w_pdfjs_require__(7);
 
-var _is_node = _interopRequireDefault(__w_pdfjs_require__(46));
-
-var _message_handler = __w_pdfjs_require__(47);
+var _is_node = _interopRequireDefault(__w_pdfjs_require__(47));
+
+var _message_handler = __w_pdfjs_require__(48);
 
 var _primitives = __w_pdfjs_require__(12);
 
 var _core_utils = __w_pdfjs_require__(9);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 var WorkerTask = function WorkerTaskClosure() {
@@ -371,18 +371,19 @@ var WorkerMessageHandler = {
     });
   },
 
   createDocumentHandler(docParams, port) {
     var pdfManager;
     var terminated = false;
     var cancelXHRs = null;
     var WorkerTasks = [];
+    const verbosity = (0, _util.getVerbosityLevel)();
     let apiVersion = docParams.apiVersion;
-    let workerVersion = '2.2.51';
+    let workerVersion = '2.2.67';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
     }
 
     var docId = docParams.docId;
     var docBaseUrl = docParams.docBaseUrl;
     var workerHandlerName = docParams.docId + '_worker';
@@ -681,26 +682,28 @@ var WorkerMessageHandler = {
         return page.getAnnotationsData(intent);
       });
     });
     handler.on('RenderPageRequest', function wphSetupRenderPage(data) {
       var pageIndex = data.pageIndex;
       pdfManager.getPage(pageIndex).then(function (page) {
         var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);
         startWorkerTask(task);
-        var pageNum = pageIndex + 1;
-        var start = Date.now();
+        const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
         page.getOperatorList({
           handler,
           task,
           intent: data.intent,
           renderInteractiveForms: data.renderInteractiveForms
         }).then(function (operatorList) {
           finishWorkerTask(task);
-          (0, _util.info)('page=' + pageNum + ' - getOperatorList: time=' + (Date.now() - start) + 'ms, len=' + operatorList.totalLength);
+
+          if (start) {
+            (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorList.totalLength}`);
+          }
         }, function (e) {
           finishWorkerTask(task);
 
           if (task.terminated) {
             return;
           }
 
           handler.send('UnsupportedFeature', {
@@ -722,44 +725,47 @@ var WorkerMessageHandler = {
           } else {
             wrappedException = {
               message: 'Unknown exception type: ' + typeof e,
               stack: minimumStackMessage
             };
           }
 
           handler.send('PageError', {
-            pageNum,
+            pageIndex,
             error: wrappedException,
             intent: data.intent
           });
         });
       });
     }, this);
     handler.on('GetTextContent', function wphExtractText(data, sink) {
       var pageIndex = data.pageIndex;
 
       sink.onPull = function (desiredSize) {};
 
       sink.onCancel = function (reason) {};
 
       pdfManager.getPage(pageIndex).then(function (page) {
         var task = new WorkerTask('GetTextContent: page ' + pageIndex);
         startWorkerTask(task);
-        var pageNum = pageIndex + 1;
-        var start = Date.now();
+        const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
         page.extractTextContent({
           handler,
           task,
           sink,
           normalizeWhitespace: data.normalizeWhitespace,
           combineTextItems: data.combineTextItems
         }).then(function () {
           finishWorkerTask(task);
-          (0, _util.info)('text indexing: page=' + pageNum + ' - time=' + (Date.now() - start) + 'ms');
+
+          if (start) {
+            (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);
+          }
+
           sink.close();
         }, function (reason) {
           finishWorkerTask(task);
 
           if (task.terminated) {
             return;
           }
 
@@ -830,17 +836,16 @@ if (typeof window === 'undefined' && !(0
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
 exports.createPromiseCapability = createPromiseCapability;
-exports.deprecated = deprecated;
 exports.getVerbosityLevel = getVerbosityLevel;
 exports.info = info;
 exports.isArrayBuffer = isArrayBuffer;
 exports.isBool = isBool;
 exports.isEmptyObj = isEmptyObj;
 exports.isNum = isNum;
 exports.isString = isString;
 exports.isSpace = isSpace;
@@ -1160,20 +1165,16 @@ function info(msg) {
 }
 
 function warn(msg) {
   if (verbosity >= VerbosityLevel.WARNINGS) {
     console.log('Warning: ' + msg);
   }
 }
 
-function deprecated(details) {
-  console.log('Deprecated API usage: ' + details);
-}
-
 function unreachable(msg) {
   throw new Error(msg);
 }
 
 function assert(cond, msg) {
   if (!cond) {
     unreachable(msg);
   }
@@ -5988,41 +5989,52 @@ var Parser = function ParserClosure() {
         (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.');
         stream.skip(-length);
         return this.findDefaultInlineStreamEnd(stream);
       }
 
       this.inlineStreamSkipEI(stream);
       return length;
     },
-    findASCII85DecodeInlineStreamEnd: function Parser_findASCII85DecodeInlineStreamEnd(stream) {
+
+    findASCII85DecodeInlineStreamEnd(stream) {
       var TILDE = 0x7E,
           GT = 0x3E;
       var startPos = stream.pos,
           ch,
           length;
 
       while ((ch = stream.getByte()) !== -1) {
-        if (ch === TILDE && stream.peekByte() === GT) {
-          stream.skip();
-          break;
+        if (ch === TILDE) {
+          ch = stream.peekByte();
+
+          while ((0, _util.isSpace)(ch)) {
+            stream.skip();
+            ch = stream.peekByte();
+          }
+
+          if (ch === GT) {
+            stream.skip();
+            break;
+          }
         }
       }
 
       length = stream.pos - startPos;
 
       if (ch === -1) {
         (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');
         stream.skip(-length);
         return this.findDefaultInlineStreamEnd(stream);
       }
 
       this.inlineStreamSkipEI(stream);
       return length;
     },
+
     findASCIIHexDecodeInlineStreamEnd: function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {
       var GT = 0x3E;
       var startPos = stream.pos,
           ch,
           length;
 
       while ((ch = stream.getByte()) !== -1) {
         if (ch === GT) {
@@ -19534,18 +19546,16 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.PartialEvaluator = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _cmap = __w_pdfjs_require__(29);
 
-var _stream = __w_pdfjs_require__(14);
-
 var _primitives = __w_pdfjs_require__(12);
 
 var _fonts = __w_pdfjs_require__(30);
 
 var _encodings = __w_pdfjs_require__(33);
 
 var _unicode = __w_pdfjs_require__(36);
 
@@ -19554,101 +19564,46 @@ var _standard_fonts = __w_pdfjs_require_
 var _pattern = __w_pdfjs_require__(39);
 
 var _parser = __w_pdfjs_require__(13);
 
 var _bidi = __w_pdfjs_require__(40);
 
 var _colorspace = __w_pdfjs_require__(25);
 
+var _stream = __w_pdfjs_require__(14);
+
 var _glyphlist = __w_pdfjs_require__(34);
 
 var _core_utils = __w_pdfjs_require__(9);
 
 var _metrics = __w_pdfjs_require__(41);
 
 var _function = __w_pdfjs_require__(42);
 
 var _jpeg_stream = __w_pdfjs_require__(20);
 
 var _murmurhash = __w_pdfjs_require__(44);
 
+var _image_utils = __w_pdfjs_require__(45);
+
 var _operator_list = __w_pdfjs_require__(27);
 
-var _image = __w_pdfjs_require__(45);
+var _image = __w_pdfjs_require__(46);
 
 var PartialEvaluator = function PartialEvaluatorClosure() {
   const DefaultPartialEvaluatorOptions = {
     forceDataSchema: false,
     maxImageSize: -1,
     disableFontFace: false,
     nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE,
     ignoreErrors: false,
     isEvalSupported: true
   };
 
-  function NativeImageDecoder({
-    xref,
-    resources,
-    handler,
-    forceDataSchema = false,
-    pdfFunctionFactory
-  }) {
-    this.xref = xref;
-    this.resources = resources;
-    this.handler = handler;
-    this.forceDataSchema = forceDataSchema;
-    this.pdfFunctionFactory = pdfFunctionFactory;
-  }
-
-  NativeImageDecoder.prototype = {
-    canDecode(image) {
-      return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory);
-    },
-
-    decode(image) {
-      var dict = image.dict;
-      var colorSpace = dict.get('ColorSpace', 'CS');
-      colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory);
-      return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function ({
-        data,
-        width,
-        height
-      }) {
-        return new _stream.Stream(data, 0, data.length, image.dict);
-      });
-    }
-
-  };
-
-  NativeImageDecoder.isSupported = function (image, xref, res, pdfFunctionFactory) {
-    var dict = image.dict;
-
-    if (dict.has('DecodeParms') || dict.has('DP')) {
-      return false;
-    }
-
-    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
-
-    return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D'));
-  };
-
-  NativeImageDecoder.isDecodable = function (image, xref, res, pdfFunctionFactory) {
-    var dict = image.dict;
-
-    if (dict.has('DecodeParms') || dict.has('DP')) {
-      return false;
-    }
-
-    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
-
-    const bpc = dict.get('BitsPerComponent', 'BPC') || 1;
-    return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'), bpc);
-  };
-
   function PartialEvaluator({
     pdfManager,
     xref,
     handler,
     pageIndex,
     idFactory,
     fontCache,
     builtInCMapCache,
@@ -19980,17 +19935,17 @@ var PartialEvaluator = function PartialE
         imgData = imageObj.createImageData(true);
         operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
         return Promise.resolve();
       }
 
       const nativeImageDecoderSupport = forceDisableNativeImageDecoder ? _util.NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport;
       var objId = 'img_' + this.idFactory.createObjId();
 
-      if (nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory)) {
+      if (nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && _image_utils.NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory)) {
         return this.handler.sendWithPromise('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]).then(function () {
           operatorList.addDependency(objId);
           args = [objId, w, h];
           operatorList.addOp(_util.OPS.paintJpegXObject, args);
 
           if (cacheKey) {
             imageCache[cacheKey] = {
               fn: _util.OPS.paintJpegXObject,
@@ -20009,17 +19964,17 @@ var PartialEvaluator = function PartialE
             forceDisableNativeImageDecoder: true
           });
         });
       }
 
       var nativeImageDecoder = null;
 
       if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _jpeg_stream.JpegStream || mask instanceof _jpeg_stream.JpegStream || softMask instanceof _jpeg_stream.JpegStream)) {
-        nativeImageDecoder = new NativeImageDecoder({
+        nativeImageDecoder = new _image_utils.NativeImageDecoder({
           xref: this.xref,
           resources,
           handler: this.handler,
           forceDataSchema: this.options.forceDataSchema,
           pdfFunctionFactory: this.pdfFunctionFactory
         });
       }
 
@@ -43455,149 +43410,217 @@ exports.PostScriptLexer = PostScriptLexe
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.MurmurHash3_64 = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var MurmurHash3_64 = function MurmurHash3_64Closure(seed) {
-  var MASK_HIGH = 0xffff0000;
-  var MASK_LOW = 0xffff;
-
-  function MurmurHash3_64(seed) {
-    var SEED = 0xc3d2e1f0;
+const SEED = 0xc3d2e1f0;
+const MASK_HIGH = 0xffff0000;
+const MASK_LOW = 0xffff;
+
+class MurmurHash3_64 {
+  constructor(seed) {
     this.h1 = seed ? seed & 0xffffffff : SEED;
     this.h2 = seed ? seed & 0xffffffff : SEED;
   }
 
-  MurmurHash3_64.prototype = {
-    update: function MurmurHash3_64_update(input) {
-      let data, length;
-
-      if ((0, _util.isString)(input)) {
-        data = new Uint8Array(input.length * 2);
-        length = 0;
-
-        for (let i = 0, ii = input.length; i < ii; i++) {
-          var code = input.charCodeAt(i);
-
-          if (code <= 0xff) {
-            data[length++] = code;
-          } else {
-            data[length++] = code >>> 8;
-            data[length++] = code & 0xff;
-          }
-        }
-      } else if ((0, _util.isArrayBuffer)(input)) {
-        data = input;
-        length = data.byteLength;
-      } else {
-        throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.');
-      }
-
-      var blockCounts = length >> 2;
-      var tailLength = length - blockCounts * 4;
-      var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
-      var k1 = 0;
-      var k2 = 0;
-      var h1 = this.h1;
-      var h2 = this.h2;
-      var C1 = 0xcc9e2d51;
-      var C2 = 0x1b873593;
-      var C1_LOW = C1 & MASK_LOW;
-      var C2_LOW = C2 & MASK_LOW;
-
-      for (let i = 0; i < blockCounts; i++) {
-        if (i & 1) {
-          k1 = dataUint32[i];
-          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
-          k1 = k1 << 15 | k1 >>> 17;
-          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+  update(input) {
+    let data, length;
+
+    if ((0, _util.isString)(input)) {
+      data = new Uint8Array(input.length * 2);
+      length = 0;
+
+      for (let i = 0, ii = input.length; i < ii; i++) {
+        const code = input.charCodeAt(i);
+
+        if (code <= 0xff) {
+          data[length++] = code;
+        } else {
+          data[length++] = code >>> 8;
+          data[length++] = code & 0xff;
+        }
+      }
+    } else if ((0, _util.isArrayBuffer)(input)) {
+      data = input;
+      length = data.byteLength;
+    } else {
+      throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.');
+    }
+
+    const blockCounts = length >> 2;
+    const tailLength = length - blockCounts * 4;
+    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
+    let k1 = 0,
+        k2 = 0;
+    let h1 = this.h1,
+        h2 = this.h2;
+    const C1 = 0xcc9e2d51,
+          C2 = 0x1b873593;
+    const C1_LOW = C1 & MASK_LOW,
+          C2_LOW = C2 & MASK_LOW;
+
+    for (let i = 0; i < blockCounts; i++) {
+      if (i & 1) {
+        k1 = dataUint32[i];
+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+        k1 = k1 << 15 | k1 >>> 17;
+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+        h1 ^= k1;
+        h1 = h1 << 13 | h1 >>> 19;
+        h1 = h1 * 5 + 0xe6546b64;
+      } else {
+        k2 = dataUint32[i];
+        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
+        k2 = k2 << 15 | k2 >>> 17;
+        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
+        h2 ^= k2;
+        h2 = h2 << 13 | h2 >>> 19;
+        h2 = h2 * 5 + 0xe6546b64;
+      }
+    }
+
+    k1 = 0;
+
+    switch (tailLength) {
+      case 3:
+        k1 ^= data[blockCounts * 4 + 2] << 16;
+
+      case 2:
+        k1 ^= data[blockCounts * 4 + 1] << 8;
+
+      case 1:
+        k1 ^= data[blockCounts * 4];
+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+        k1 = k1 << 15 | k1 >>> 17;
+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+
+        if (blockCounts & 1) {
           h1 ^= k1;
-          h1 = h1 << 13 | h1 >>> 19;
-          h1 = h1 * 5 + 0xe6546b64;
-        } else {
-          k2 = dataUint32[i];
-          k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
-          k2 = k2 << 15 | k2 >>> 17;
-          k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
-          h2 ^= k2;
-          h2 = h2 << 13 | h2 >>> 19;
-          h2 = h2 * 5 + 0xe6546b64;
-        }
-      }
-
-      k1 = 0;
-
-      switch (tailLength) {
-        case 3:
-          k1 ^= data[blockCounts * 4 + 2] << 16;
-
-        case 2:
-          k1 ^= data[blockCounts * 4 + 1] << 8;
-
-        case 1:
-          k1 ^= data[blockCounts * 4];
-          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
-          k1 = k1 << 15 | k1 >>> 17;
-          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
-
-          if (blockCounts & 1) {
-            h1 ^= k1;
-          } else {
-            h2 ^= k1;
-          }
-
-      }
-
-      this.h1 = h1;
-      this.h2 = h2;
-      return this;
-    },
-    hexdigest: function MurmurHash3_64_hexdigest() {
-      var h1 = this.h1;
-      var h2 = this.h2;
-      h1 ^= h2 >>> 1;
-      h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
-      h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
-      h1 ^= h2 >>> 1;
-      h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
-      h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
-      h1 ^= h2 >>> 1;
-
-      for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {
-        var hex = (arr[i] >>> 0).toString(16);
-
-        while (hex.length < 8) {
-          hex = '0' + hex;
-        }
-
-        str += hex;
-      }
-
-      return str;
-    }
-  };
-  return MurmurHash3_64;
-}();
+        } else {
+          h2 ^= k1;
+        }
+
+    }
+
+    this.h1 = h1;
+    this.h2 = h2;
+  }
+
+  hexdigest() {
+    let h1 = this.h1,
+        h2 = this.h2;
+    h1 ^= h2 >>> 1;
+    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
+    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
+    h1 ^= h2 >>> 1;
+    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
+    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
+    h1 ^= h2 >>> 1;
+    const hex1 = (h1 >>> 0).toString(16),
+          hex2 = (h2 >>> 0).toString(16);
+    return hex1.padStart(8, '0') + hex2.padStart(8, '0');
+  }
+
+}
 
 exports.MurmurHash3_64 = MurmurHash3_64;
 
 /***/ }),
 /* 45 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
+exports.NativeImageDecoder = void 0;
+
+var _colorspace = __w_pdfjs_require__(25);
+
+var _jpeg_stream = __w_pdfjs_require__(20);
+
+var _stream = __w_pdfjs_require__(14);
+
+class NativeImageDecoder {
+  constructor({
+    xref,
+    resources,
+    handler,
+    forceDataSchema = false,
+    pdfFunctionFactory
+  }) {
+    this.xref = xref;
+    this.resources = resources;
+    this.handler = handler;
+    this.forceDataSchema = forceDataSchema;
+    this.pdfFunctionFactory = pdfFunctionFactory;
+  }
+
+  canDecode(image) {
+    return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory);
+  }
+
+  decode(image) {
+    const dict = image.dict;
+    let colorSpace = dict.get('ColorSpace', 'CS');
+    colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory);
+    return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function ({
+      data,
+      width,
+      height
+    }) {
+      return new _stream.Stream(data, 0, data.length, dict);
+    });
+  }
+
+  static isSupported(image, xref, res, pdfFunctionFactory) {
+    const dict = image.dict;
+
+    if (dict.has('DecodeParms') || dict.has('DP')) {
+      return false;
+    }
+
+    const cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
+
+    return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D'));
+  }
+
+  static isDecodable(image, xref, res, pdfFunctionFactory) {
+    const dict = image.dict;
+
+    if (dict.has('DecodeParms') || dict.has('DP')) {
+      return false;
+    }
+
+    const cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
+
+    const bpc = dict.get('BitsPerComponent', 'BPC') || 1;
+    return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'), bpc);
+  }
+
+}
+
+exports.NativeImageDecoder = NativeImageDecoder;
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
 exports.PDFImage = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(12);
 
 var _colorspace = __w_pdfjs_require__(25);
 
@@ -44239,28 +44262,28 @@ var PDFImage = function PDFImageClosure(
 
   };
   return PDFImage;
 }();
 
 exports.PDFImage = PDFImage;
 
 /***/ }),
-/* 46 */
+/* 47 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
 module.exports = function isNodeJS() {
   return typeof process === 'object' && process + '' === '[object process]' && !process.versions['nw'];
 };
 
 /***/ }),
-/* 47 */
+/* 48 */
 /***/ (function(module, exports, __w_pdfjs_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
--- a/browser/extensions/pdfjs/content/web/viewer.js
+++ b/browser/extensions/pdfjs/content/web/viewer.js
@@ -427,17 +427,19 @@ let PDFViewerApplication = {
     }
 
     try {
       const prefs = await this.preferences.getAll();
 
       for (const name in prefs) {
         _app_options.AppOptions.set(name, prefs[name]);
       }
-    } catch (reason) {}
+    } catch (reason) {
+      console.error(`_readPreferences: "${reason.message}".`);
+    }
   },
 
   async _parseHashParameters() {
     if (!_app_options.AppOptions.get('pdfBugEnabled')) {
       return;
     }
 
     const waitOn = [];
@@ -3296,19 +3298,26 @@ class AppOptions {
     for (const name in defaultOptions) {
       const defaultOption = defaultOptions[name];
 
       if (kind) {
         if ((kind & defaultOption.kind) === 0) {
           continue;
         }
 
-        if ((kind & OptionKind.PREFERENCE) !== 0) {
-          options[name] = defaultOption.value;
-          continue;
+        if (kind === OptionKind.PREFERENCE) {
+          const value = defaultOption.value,
+                valueType = typeof value;
+
+          if (valueType === 'boolean' || valueType === 'string' || valueType === 'number' && Number.isInteger(value)) {
+            options[name] = value;
+            continue;
+          }
+
+          throw new Error(`Invalid type for preference: ${name}`);
         }
       }
 
       const userOption = userOptions[name];
       options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || defaultOption.value;
     }
 
     return options;
--- a/browser/extensions/pdfjs/moz.yaml
+++ b/browser/extensions/pdfjs/moz.yaml
@@ -15,15 +15,15 @@ origin:
   description: Portable Document Format (PDF) viewer that is built with HTML5
 
   # Full URL for the package's homepage/etc
   # Usually different from repository url
   url: https://github.com/mozilla/pdf.js
 
   # Human-readable identifier for this version/release
   # Generally "version NNN", "tag SSS", "bookmark SSS"
-  release: version 2.2.51
+  release: version 2.2.67
 
   # The package's license, where possible using the mnemonic from
   # https://spdx.org/licenses/
   # Multiple licenses can be specified (as a YAML list)
   # A "LICENSE" file must exist containing the full license text
   license: Apache-2.0
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -1128,18 +1128,18 @@ you can use these alternative items. Oth
      used as a textual label for the indicator used by assistive technology
      users. -->
 <!ENTITY accessibilityIndicator.tooltip "Accessibility Features Enabled">
 
 <!-- LOCALIZATION NOTE: (addonPostInstallMessage.label):
      The first <image> tag is replaced with the icon for the add-ons menu.
      The second <image> tag is replaced with the icon for the toolbar menu. -->
 <!ENTITY addonPostInstallMessage.label "Manage your add-ons by clicking <image class='addon-addon-icon'/> in the <image class='addon-toolbar-icon'/> menu.">
-<!ENTITY addonPostInstall.incognito.label "Allow this extension to run in Private Windows.">
-<!ENTITY addonPostInstall.incognito.accesskey "A">
+<!ENTITY addonPostInstall.incognito.checkbox.label "Allow this extension to run in Private Windows">
+<!ENTITY addonPostInstall.incognito.checkbox.accesskey "A">
 
 <!ENTITY addonPrivateBrowsing.header2.label "Change to extensions in Private Windows">
 <!ENTITY addonPrivateBrowsing.body2.label "Any new extensions you add to &brandShorterName; won’t work in Private Windows unless you allow this in the settings.">
 <!ENTITY addonPrivateBrowsing.learnMore.label "Learn how to manage extension settings.">
 <!ENTITY addonPrivateBrowsing.okButton.label "Okay, Got It">
 <!ENTITY addonPrivateBrowsing.okButton.accesskey "O">
 <!ENTITY addonPrivateBrowsing.manageButton.label "Manage Extensions">
 <!ENTITY addonPrivateBrowsing.manageButton.accesskey "M">
--- a/browser/themes/shared/menupanel.inc.css
+++ b/browser/themes/shared/menupanel.inc.css
@@ -92,16 +92,25 @@
 
 #PanelUI-remotetabs-view-managedevices {
   list-style-image: url("chrome://browser/skin/device-phone.svg");
 }
 
 #appMenuViewHistorySidebar,
 #PanelUI-remotetabs-view-sidebar,
 #panelMenu_viewBookmarksSidebar {
+  list-style-image: url("chrome://browser/skin/sidebars-right.svg");
+}
+
+#appMenuViewHistorySidebar:-moz-locale-dir(ltr):not([positionend]),
+#appMenuViewHistorySidebar:-moz-locale-dir(rtl)[positionend],
+#PanelUI-remotetabs-view-sidebar:-moz-locale-dir(ltr):not([positionend]),
+#PanelUI-remotetabs-view-sidebar:-moz-locale-dir(rtl)[positionend],
+#panelMenu_viewBookmarksSidebar:-moz-locale-dir(ltr):not([positionend]),
+#panelMenu_viewBookmarksSidebar:-moz-locale-dir(rtl)[positionend] {
   list-style-image: url("chrome://browser/skin/sidebars.svg");
 }
 
 #panelMenu_bookmarkingTools {
   list-style-image: url("chrome://browser/skin/developer.svg");
 }
 
 #panelMenu_viewBookmarksToolbar {
--- a/build/clang-plugin/CanRunScriptChecker.cpp
+++ b/build/clang-plugin/CanRunScriptChecker.cpp
@@ -83,76 +83,80 @@ void CanRunScriptChecker::registerMatche
 }
 
 void CanRunScriptChecker::onStartOfTranslationUnit() {
   IsFuncSetBuilt = false;
   CanRunScriptFuncs.clear();
 }
 
 namespace {
-/// This class is a callback used internally to match function declarations
-/// with the MOZ_CAN_RUN_SCRIPT annotation, adding these functions and all
-/// the methods they override to the can-run-script function set.
+/// This class is a callback used internally to match function declarations with
+/// the MOZ_CAN_RUN_SCRIPT annotation, adding these functions to the
+/// can-run-script function set and making sure the functions they override (if
+/// any) also have the annotation.
 class FuncSetCallback : public MatchFinder::MatchCallback {
 public:
-  FuncSetCallback(std::unordered_set<const FunctionDecl *> &FuncSet)
-      : CanRunScriptFuncs(FuncSet) {}
+  FuncSetCallback(CanRunScriptChecker& Checker,
+                  std::unordered_set<const FunctionDecl *> &FuncSet)
+      : CanRunScriptFuncs(FuncSet),
+        Checker(Checker) {}
 
   void run(const MatchFinder::MatchResult &Result) override;
 
 private:
-  /// This method recursively adds all the methods overriden by the given
-  /// paremeter.
-  void addAllOverriddenMethodsRecursively(const CXXMethodDecl *Method);
+  /// This method checks the methods overriden by the given parameter.
+  void checkOverriddenMethods(const CXXMethodDecl *Method);
 
   std::unordered_set<const FunctionDecl *> &CanRunScriptFuncs;
+  CanRunScriptChecker &Checker;
 };
 
 void FuncSetCallback::run(const MatchFinder::MatchResult &Result) {
   const FunctionDecl *Func;
   if (auto *Lambda = Result.Nodes.getNodeAs<LambdaExpr>("lambda")) {
     Func = Lambda->getCallOperator();
     if (!Func || !hasCustomAttribute<moz_can_run_script>(Func))
       return;
   } else {
     Func = Result.Nodes.getNodeAs<FunctionDecl>("canRunScriptFunction");
   }
 
   CanRunScriptFuncs.insert(Func);
 
   // If this is a method, we check the methods it overrides.
   if (auto *Method = dyn_cast<CXXMethodDecl>(Func)) {
-    addAllOverriddenMethodsRecursively(Method);
+    checkOverriddenMethods(Method);
   }
 }
 
-void FuncSetCallback::addAllOverriddenMethodsRecursively(
-    const CXXMethodDecl *Method) {
+void FuncSetCallback::checkOverriddenMethods(const CXXMethodDecl *Method) {
   for (auto OverriddenMethod : Method->overridden_methods()) {
-    CanRunScriptFuncs.insert(OverriddenMethod);
+    if (!hasCustomAttribute<moz_can_run_script>(OverriddenMethod)) {
+      const char *ErrorNonCanRunScriptOverridden =
+          "functions marked as MOZ_CAN_RUN_SCRIPT cannot override functions "
+          "that are not marked MOZ_CAN_RUN_SCRIPT";
+      const char* NoteNonCanRunScriptOverridden =
+          "overridden function declared here";
 
-    // If this is not the definition, we also add the definition (if it
-    // exists) to the set.
-    if (!OverriddenMethod->isThisDeclarationADefinition()) {
-      if (auto Def = OverriddenMethod->getDefinition()) {
-        CanRunScriptFuncs.insert(Def);
-      }
+      Checker.diag(Method->getLocation(), ErrorNonCanRunScriptOverridden,
+                   DiagnosticIDs::Error);
+      Checker.diag(OverriddenMethod->getLocation(),
+                   NoteNonCanRunScriptOverridden,
+                   DiagnosticIDs::Note);
     }
-
-    addAllOverriddenMethodsRecursively(OverriddenMethod);
   }
 }
 } // namespace
 
 void CanRunScriptChecker::buildFuncSet(ASTContext *Context) {
   // We create a match finder.
   MatchFinder Finder;
   // We create the callback which will be called when we find a function with
   // a MOZ_CAN_RUN_SCRIPT annotation.
-  FuncSetCallback Callback(CanRunScriptFuncs);
+  FuncSetCallback Callback(*this, CanRunScriptFuncs);
   // We add the matcher to the finder, linking it to our callback.
   Finder.addMatcher(
       functionDecl(hasCanRunScriptAnnotation()).bind("canRunScriptFunction"),
       &Callback);
   Finder.addMatcher(
       lambdaExpr().bind("lambda"),
       &Callback);
   // We start the analysis, given the ASTContext our main checker is in.
--- a/build/clang-plugin/tests/TestCanRunScript.cpp
+++ b/build/clang-plugin/tests/TestCanRunScript.cpp
@@ -28,18 +28,18 @@ struct RefCountedBase {
   MOZ_CAN_RUN_SCRIPT void method_test() {
     test();
   }
 
   MOZ_CAN_RUN_SCRIPT void method_test2() {
     test2(this);
   }
 
-  virtual void method_test3() {
-    test();
+  virtual void method_test3() { // expected-note {{parent function declared here}}
+    test(); // expected-error {{functions marked as MOZ_CAN_RUN_SCRIPT can only be called from functions also marked as MOZ_CAN_RUN_SCRIPT}}
   }
 };
 
 MOZ_CAN_RUN_SCRIPT void testLambda() {
   auto doIt = []() MOZ_CAN_RUN_SCRIPT {
     test();
   };
 
@@ -87,28 +87,28 @@ MOZ_CAN_RUN_SCRIPT void test2_parent7() 
 
 MOZ_CAN_RUN_SCRIPT void test3(int* param) {}
 
 MOZ_CAN_RUN_SCRIPT void test3_parent() {
   test3(new int);
 }
 
 struct RefCountedChild : public RefCountedBase {
-  virtual void method_test3() override;
+  virtual void method_test3() override; // expected-note {{overridden function declared here}} expected-note {{overridden function declared here}}
 };
 
-void RefCountedChild::method_test3() {
-  test();
+void RefCountedChild::method_test3() { // expected-note {{parent function declared here}}
+  test(); // expected-error {{functions marked as MOZ_CAN_RUN_SCRIPT can only be called from functions also marked as MOZ_CAN_RUN_SCRIPT}}
 }
 
 struct RefCountedSubChild : public RefCountedChild {
-  MOZ_CAN_RUN_SCRIPT void method_test3() override;
+  MOZ_CAN_RUN_SCRIPT void method_test3() override; // expected-error {{functions marked as MOZ_CAN_RUN_SCRIPT cannot override functions that are not marked MOZ_CAN_RUN_SCRIPT}}
 };
 
-void RefCountedSubChild::method_test3() {
+void RefCountedSubChild::method_test3() { // expected-error {{functions marked as MOZ_CAN_RUN_SCRIPT cannot override functions that are not marked MOZ_CAN_RUN_SCRIPT}}
   test();
 }
 
 MOZ_CAN_RUN_SCRIPT void test4() {
   RefPtr<RefCountedBase> refptr1 = new RefCountedChild;
   refptr1->method_test3();
 
   RefPtr<RefCountedBase> refptr2 = new RefCountedSubChild;
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -86,85 +86,16 @@ def yasm_asflags(yasm, target):
         if asflags:
             asflags += ['-rnasm', '-pnasm']
         return asflags
 
 
 set_config('YASM_ASFLAGS', yasm_asflags)
 
 
-# nasm detection
-# ==============================================================
-nasm = check_prog('NASM', ['nasm'], allow_missing=True)
-
-
-@depends_if(nasm)
-@checking('nasm version')
-def nasm_version(nasm):
-    (retcode, stdout, _) = get_cmd_output(nasm, '-v')
-    if retcode:
-        # mac stub binary
-        return None
-
-    version = stdout.splitlines()[0].split()[2]
-    return Version(version)
-
-
-@depends_if(nasm_version)
-def nasm_major_version(nasm_version):
-    return str(nasm_version.major)
-
-
-@depends_if(nasm_version)
-def nasm_minor_version(nasm_version):
-    return str(nasm_version.minor)
-
-
-set_config('NASM_MAJOR_VERSION', nasm_major_version)
-set_config('NASM_MINOR_VERSION', nasm_minor_version)
-
-
-@depends(nasm, target)
-def nasm_asflags(nasm, target):
-    if nasm:
-        asflags = {
-            ('OSX', 'x86'): ['-f', 'macho32'],
-            ('OSX', 'x86_64'): ['-f', 'macho64'],
-            ('WINNT', 'x86'): ['-f', 'win32'],
-            ('WINNT', 'x86_64'): ['-f', 'win64'],
-        }.get((target.os, target.cpu), None)
-        if asflags is None:
-            # We're assuming every x86 platform we support that's
-            # not Windows or Mac is ELF.
-            if target.cpu == 'x86':
-                asflags = ['-f', 'elf32']
-            elif target.cpu == 'x86_64':
-                asflags = ['-f', 'elf64']
-        return asflags
-
-
-set_config('NASM_ASFLAGS', nasm_asflags)
-
-@depends(nasm_asflags)
-def have_nasm(value):
-    if value:
-        return True
-
-
-@depends(yasm_asflags)
-def have_yasm(yasm_asflags):
-    if yasm_asflags:
-        return True
-
-set_config('HAVE_NASM', have_nasm)
-
-set_config('HAVE_YASM', have_yasm)
-# Until the YASM variable is not necessary in old-configure.
-add_old_configure_assignment('YASM', have_yasm)
-
 # Android NDK
 # ==============================================================
 
 
 @depends('--disable-compile-environment', target)
 def compiling_android(compile_env, target):
     return compile_env and target.os == 'Android'
 
@@ -788,16 +719,19 @@ def toolchain_search_path_for(host_or_ta
         mozbuild_state_dir = environ.get('MOZBUILD_STATE_PATH',
                                          os.path.expanduser(os.path.join('~', '.mozbuild')))
         bootstrap_clang_path = os.path.join(mozbuild_state_dir, 'clang', 'bin')
         result.append(bootstrap_clang_path)
 
         bootstrap_cbindgen_path = os.path.join(mozbuild_state_dir, 'cbindgen')
         result.append(bootstrap_cbindgen_path)
 
+        bootstrap_nasm_path = os.path.join(mozbuild_state_dir, 'nasm')
+        result.append(bootstrap_nasm_path)
+
         # Also add the rustup install directory for cargo/rustc.
         rustup_path = os.path.expanduser(os.path.join('~', '.cargo', 'bin'))
         result.append(rustup_path)
 
         return result
     return toolchain_search_path
 
 
@@ -1724,16 +1658,85 @@ def security_hardening_cflags(hardening_
     )
 
 
 add_old_configure_assignment('MOZ_HARDENING_CFLAGS', security_hardening_cflags.flags)
 add_old_configure_assignment('MOZ_HARDENING_LDFLAGS', security_hardening_cflags.ldflags)
 add_old_configure_assignment('MOZ_HARDENING_CFLAGS_JS', security_hardening_cflags.js_flags)
 add_old_configure_assignment('MOZ_HARDENING_LDFLAGS_JS', security_hardening_cflags.js_ldflags)
 
+# nasm detection
+# ==============================================================
+nasm = check_prog('NASM', ['nasm'], allow_missing=True, paths=toolchain_search_path)
+
+
+@depends_if(nasm)
+@checking('nasm version')
+def nasm_version(nasm):
+    (retcode, stdout, _) = get_cmd_output(nasm, '-v')
+    if retcode:
+        # mac stub binary
+        return None
+
+    version = stdout.splitlines()[0].split()[2]
+    return Version(version)
+
+
+@depends_if(nasm_version)
+def nasm_major_version(nasm_version):
+    return str(nasm_version.major)
+
+
+@depends_if(nasm_version)
+def nasm_minor_version(nasm_version):
+    return str(nasm_version.minor)
+
+
+set_config('NASM_MAJOR_VERSION', nasm_major_version)
+set_config('NASM_MINOR_VERSION', nasm_minor_version)
+
+
+@depends(nasm, target)
+def nasm_asflags(nasm, target):
+    if nasm:
+        asflags = {
+            ('OSX', 'x86'): ['-f', 'macho32'],
+            ('OSX', 'x86_64'): ['-f', 'macho64'],
+            ('WINNT', 'x86'): ['-f', 'win32'],
+            ('WINNT', 'x86_64'): ['-f', 'win64'],
+        }.get((target.os, target.cpu), None)
+        if asflags is None:
+            # We're assuming every x86 platform we support that's
+            # not Windows or Mac is ELF.
+            if target.cpu == 'x86':
+                asflags = ['-f', 'elf32']
+            elif target.cpu == 'x86_64':
+                asflags = ['-f', 'elf64']
+        return asflags
+
+
+set_config('NASM_ASFLAGS', nasm_asflags)
+
+@depends(nasm_asflags)
+def have_nasm(value):
+    if value:
+        return True
+
+
+@depends(yasm_asflags)
+def have_yasm(yasm_asflags):
+    if yasm_asflags:
+        return True
+
+set_config('HAVE_NASM', have_nasm)
+
+set_config('HAVE_YASM', have_yasm)
+# Until the YASM variable is not necessary in old-configure.
+add_old_configure_assignment('YASM', have_yasm)
+
 # Code Coverage
 # ==============================================================
 
 js_option('--enable-coverage', env='MOZ_CODE_COVERAGE',
           help='Enable code coverage')
 
 
 @depends('--enable-coverage')
--- a/build/unix/build-gcc/build-gcc.sh
+++ b/build/unix/build-gcc/build-gcc.sh
@@ -1,17 +1,15 @@
 #!/bin/bash
 
 set -e
 set -x
 
 make_flags="-j$(nproc)"
 
-. $data_dir/download-tools.sh
-
 prepare_mingw() {
   export prefix=/tools/mingw32
   export install_dir=$root_dir$prefix
   mkdir -p $install_dir
   export PATH=$PATH:$install_dir/bin/
 
   cd $root_dir
 
deleted file mode 100755
--- a/build/unix/build-gcc/download-tools.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-if [ -z "$root_dir" -o ! -d "$root_dir" ]; then
-  root_dir=$(mktemp -d)
-fi
-
-if test -z $TMPDIR; then
-  TMPDIR=/tmp/
-fi
-
-mkdir $root_dir/gpg
-GPG="gpg --homedir $root_dir/gpg"
-
-> $root_dir/downloads
-
-download() {
-  wget -c --progress=dot:mega -P $TMPDIR $1/$2
-  (cd $TMPDIR; sha256sum $2) >> $root_dir/downloads
-}
-
-download_and_check() {
-  download $1 ${2%.*}
-  wget -c --progress=dot:mega -P $TMPDIR $1/$2
-  $GPG --verify $TMPDIR/$2 $TMPDIR/${2%.*}
-}
--- a/devtools/client/aboutdebugging-new/test/browser/browser_aboutdebugging_telemetry_runtime_updates.js
+++ b/devtools/client/aboutdebugging-new/test/browser/browser_aboutdebugging_telemetry_runtime_updates.js
@@ -90,16 +90,20 @@ add_task(async function testUsbRuntimeUp
   const runtime2Id = evts.filter(e => e.method === "runtime_added")[0].extras.runtime_id;
   const runtime2Extras = Object.assign({}, RUNTIME_2_EXTRAS, {
     "runtime_id": runtime2Id,
   });
 
   info("Remove runtime 1");
   await removeUsbRuntime(USB_RUNTIME_1, mocks, document);
 
+  // Wait a tick for telementry events to settle. (removeUsbRuntime only waits
+  // for the UI to update.)
+  await undefined;
+
   checkTelemetryEvents([
     { method: "runtime_disconnected", extras: runtime1ConnectedExtras },
     { method: "runtime_removed", extras: runtime1Extras },
   ], sessionId);
 
   info("Remove runtime 2");
   await removeUsbRuntime(USB_RUNTIME_2, mocks, document);
 
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1053,16 +1053,22 @@ html[dir="rtl"] .managed-tree .tree .nod
   width: 16px;
   height: 16px;
   vertical-align: middle;
   /* use background-color for the icon color, and mask-image for its shape */
   background-color: var(--theme-icon-color);
   mask-size: contain;
   mask-repeat: no-repeat;
   mask-position: center;
+  /* multicolor icons use background-image */
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: contain;
+  /* do not let images shrink when used as flex children */
+  flex-shrink: 0;
 }
 
 /* Expand arrow icon */
 .img.arrow {
   width: 10px;
   height: 10px;
   mask-image: url("resource://devtools/client/debugger/new/images/arrow.svg");
   /* we may override the width/height in specific contexts to make the
@@ -1393,17 +1399,17 @@ html[dir="ltr"] .toggle-button.end:not(.
   margin-inline-end: 6px;
   animation: search-loader-rotate 0.5s linear infinite;
 }
 
 .search-field input {
   align-self: stretch;
   flex-grow: 1;
   height: 24px;
-  min-width: 40px;
+  width: 40px;
   border: none;
   padding: 4px;
   padding-inline-start: 28px;
   line-height: 16px;
   font-family: inherit;
   font-size: inherit;
   color: var(--theme-body-color);
   background-color: transparent;
@@ -1874,20 +1880,16 @@ menuseparator {
 
 /**
  * Variant of AccessibleImage used in sources list and tabs.
  * Define the different source type / framework / library icons here.
  */
 
 .source-icon {
   margin-inline-end: 4px;
-  /* multicolor icons use background-image */
-  background-position: center;
-  background-repeat: no-repeat;
-  background-size: contain;
 }
 
 /* Icons for frameworks and libs */
 
 .img.aframe {
   background-image: url("resource://devtools/client/debugger/new/images/sources/aframe.svg");
   background-color: transparent !important;
 }
@@ -2006,17 +2008,19 @@ menuseparator {
 .img.typescript {
   mask-image: url("resource://devtools/client/debugger/new/images/sources/typescript.svg");
 }
 
 .img.underscore {
   mask-image: url("resource://devtools/client/debugger/new/images/sources/underscore.svg");
 }
 
-.img.vue {
+/* We use both 'Vue' and 'VueJS' when identifying frameworks */
+.img.vue,
+.img.vuejs {
   background-image: url("resource://devtools/client/debugger/new/images/sources/vuejs.svg");
   background-color: transparent !important;
 }
 
 .img.webpack {
   background-image: url("resource://devtools/client/debugger/new/images/sources/webpack.svg");
   background-color: transparent !important;
 }
@@ -2315,17 +2319,16 @@ menuseparator {
   width: 20px;
   margin: 0 4px;
 }
 
 .source-footer > .commands > .blackboxed > .img.blackBox {
   background-color: var(--theme-icon-checked-color);
 }
 
-.source-footer .blackbox-summary,
 .source-footer .mapped-source,
 .source-footer .cursor-position {
   color: var(--theme-body-color);
   padding-right: 2.5px;
 }
 
 .source-footer .mapped-source {
   white-space: nowrap;
@@ -3092,16 +3095,17 @@ debug-expression-error {
 .breakpoints-exceptions {
   padding-bottom: 0.5em;
   padding-top: 0.5em;
   user-select: none;
 }
 
 .breakpoints-list .breakpoint {
   min-height: var(--breakpoint-expression-height);
+  overflow: hidden;
 }
 
 .breakpoints-exceptions-caught {
   padding: 0 1em 0.5em 3em;
   margin-top: -0.25em;
 }
 
 html[dir="rtl"] .breakpoints-exceptions-caught {
@@ -3218,30 +3222,22 @@ html .breakpoints-list .breakpoint.pause
   flex: 0 1 content;
   order: 3;
 }
 
 .breakpoint .close-btn {
   inset-inline-end: 15px;
   inset-inline-start: auto;
   position: absolute;
-  top: 8px;
-  display: none;
-}
-
-.breakpoint:hover .close-btn {
-  display: flex;
-}
-
-.breakpoint .close {
-  visibility: hidden;
-}
-
-.breakpoint:hover .close {
-  visibility: visible;
+  top: -100px; /*For hiding button outside of row until hovered or focused*/
+}
+
+.breakpoint:hover .close-btn,
+.breakpoint .close-btn:focus {
+  top: calc(50% - 8px);
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint {
   cursor: pointer;
 }
 
 .CodeMirror.cm-s-mozilla-breakpoint .CodeMirror-lines {
   padding: 0;
@@ -3393,48 +3389,49 @@ html .breakpoints-list .breakpoint.pause
 
 .input-expression:not(:placeholder-shown) {
   font-family: var(--monospace-font-family);
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-.frames [role="list"] .frames-group .group,
-.frames [role="list"] .frames-group .group .location {
+.frames-group .group,
+.frames-group .group .location {
   font-weight: 500;
   cursor: default;
   /*
    * direction:rtl is set in Frames.css to overflow the location text from the
    * start. Here we need to reset it in order to display the framework icon
    * after the framework name.
    */
   direction: ltr;
 }
 
-.frames [role="list"] .frames-group.expanded .group,
-.frames [role="list"] .frames-group.expanded .group .location {
+.frames-group.expanded .group,
+.frames-group.expanded .group .location {
   color: var(--theme-highlight-blue);
 }
 
-.frames [role="list"] .frames-group .frames-list [role="listitem"] {
-  padding-left: 30px;
-}
-
-.frames [role="list"] .frames-group .frames-list {
+.frames-group .frames-list [role="listitem"] {
+  padding-inline-start: 30px;
+}
+
+.frames-group .frames-list {
   border-top: 1px solid var(--theme-splitter-color);
   border-bottom: 1px solid var(--theme-splitter-color);
 }
 
-.frames [role="list"] .frames-group.expanded .badge {
+.frames-group.expanded .badge {
   color: var(--theme-highlight-blue);
 }
 
-.group-description-name {
-  padding-left: 5px;
+.frames-group .img.arrow {
+  margin-inline-start: -1px;
+  margin-inline-end: 4px;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .badge {
   --size: 17px;
   --radius: calc(var(--size) / 2);
@@ -3562,52 +3559,54 @@ html .breakpoints-list .breakpoint.pause
   fill: white;
 }
 
 :root.theme-light .frames [role="list"] [role="listitem"].selected .location,
 :root.theme-dark .frames [role="list"] [role="listitem"].selected .location {
   color: white;
 }
 
-.show-more-container {
+.frames .show-more-container {
   display: flex;
   min-height: 24px;
   padding: 4px 0;
 }
 
-.show-more {
+.frames .show-more {
   text-align: center;
   padding: 8px 0px;
   margin: 7px 10px 7px 7px;
   border: 1px solid var(--theme-splitter-color);
   background-color: var(--theme-tab-toolbar-background);
   width: 100%;
   font-size: inherit;
   color: inherit;
 }
 
-.show-more:hover {
+.frames .show-more:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.annotation-logo {
-  mask-size: 100%;
-  display: inline-block;
-  width: 12px;
-}
-
-:root.theme-dark .annotation-logo:not(.angular) svg path {
-  fill: var(--theme-highlight-blue);
+.frames .img.annotation-logo {
+  margin-inline-end: 4px;
+  background-color: currentColor;
+}
+
+/*
+ * We also show the library icon in locations, which are forced to RTL.
+ */
+.frames .location .img.annotation-logo {
+  margin-inline-start: 4px;
 }
 
 /* Some elements are added to the DOM only to be printed into the clipboard
    when the user copy some elements. We don't want those elements to mess with
    the layout so we put them outside of the screen
 */
-.clipboard-only {
+.frames .clipboard-only {
   position: absolute;
   left: -9999px;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .workers-list * {
@@ -3657,100 +3656,92 @@ html .breakpoints-list .breakpoint.pause
   background: white;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 :root {
   --accordion-header-background: var(--theme-toolbar-background);
-  --disclosure-arrow: #b2b2b2;
 }
 
 :root.theme-dark {
   --accordion-header-background: #222225;
-  --disclosure-arrow: #7f7f81;
 }
 
 .accordion {
   background-color: var(--theme-sidebar-background);
   width: 100%;
   list-style-type: none;
   padding: 0px;
   margin-top: 0px;
 }
 
 .accordion ._header {
   background-color: var(--accordion-header-background);
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
   font-size: 12px;
-  padding: 4px;
-  transition: all 0.25s ease;
+  line-height: calc(16 / 12);
+  padding: 4px 6px;
   width: 100%;
-  height: 24px;
   align-items: center;
   margin: 0px;
   font-weight: normal;
-
+  cursor: default;
   -webkit-user-select: none;
   -moz-user-select: none;
-  -ms-user-select: none;
-  -o-user-select: none;
   user-select: none;
-  cursor: default;
 }
 
 .accordion ._header:hover {
   background-color: var(--theme-toolbar-background-hover);
 }
 
-.accordion ._header button svg,
-.accordion ._header:hover button svg {
-  fill: currentColor;
+.accordion ._header .arrow {
+  margin-inline-end: 4px;
+}
+
+.accordion ._header .header-label {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.accordion ._header .header-buttons {
+  display: flex;
+  margin-inline-start: auto;
+}
+
+.accordion ._header .header-buttons button {
+  color: var(--theme-body-color);
+  border: none;
+  background: none;
+  padding: 0;
+  margin: 0 2px;
+  width: 16px;
   height: 16px;
 }
 
+.accordion ._header .header-buttons button::-moz-focus-inner {
+  border: none;
+}
+
+.accordion ._header .header-buttons button .img {
+  display: block;
+}
+
 .accordion ._content {
   border-bottom: 1px solid var(--theme-splitter-color);
   font-size: 12px;
 }
 
 .accordion div:last-child ._content {
   border-bottom: none;
 }
-
-.accordion ._header .header-buttons {
-  display: flex;
-  margin-left: auto;
-  padding-right: 5px;
-}
-
-.accordion .header-buttons .add-button {
-  font-size: 180%;
-  text-align: center;
-  line-height: 16px;
-}
-
-.accordion .header-buttons button {
-  color: var(--theme-body-color);
-  border: none;
-  background: none;
-  padding: 0;
-  width: 16px;
-  height: 16px;
-}
-
-.accordion .header-buttons button::-moz-focus-inner {
-  border: none;
-}
-
-.accordion .arrow svg {
-  fill: var(--disclosure-arrow);
-}
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 .command-bar {
   flex: 0 0 29px;
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
@@ -4385,23 +4376,30 @@ html .welcomebox .toggle-button-end.coll
 
 .dropdown {
   background: var(--theme-body-background);
   border: 1px solid var(--theme-splitter-color);
   border-radius: 4px;
   box-shadow: 0 4px 4px 0 var(--search-overlays-semitransparent);
   max-height: 300px;
   position: absolute;
-  inset-inline-end: 2px;
   top: 24px;
   width: 150px;
   z-index: 1000;
   overflow: auto;
 }
 
+[dir="ltr"] .dropdown {
+  right: 2px;
+}
+
+[dir="rtl"] .dropdown {
+  left: 2px;
+}
+
 .dropdown-block {
   position: relative;
   align-self: center;
   height: 100%;
 }
 
 /* cover the reserved space at the end of .source-tabs */
 .source-tabs + .dropdown-block {
@@ -4419,52 +4417,46 @@ html .welcomebox .toggle-button-end.coll
   width: 28px;
 }
 
 .dropdown-button .img {
   display: block;
 }
 
 .dropdown ul {
+  margin: 0;
+  padding: 4px 0;
   list-style: none;
-  line-height: 2em;
-  font-size: 1em;
-  margin: 0;
-  padding: 0;
 }
 
 .dropdown li {
   display: flex;
   align-items: center;
-  padding: 5px 8px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
+  padding: 6px 8px;
   font-size: 12px;
   line-height: calc(16 / 12);
   transition: all 0.25s ease;
 }
 
-.dropdown li:first-child {
-  margin-top: 4px;
-}
-
-.dropdown li:last-child {
-  margin-bottom: 4px;
-}
-
 .dropdown li:hover {
   background-color: var(--search-overlays-semitransparent);
 }
 
 .dropdown-icon {
   margin-inline-end: 4px;
   mask-size: 13px 13px;
 }
 
+.dropdown-label {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
 .dropdown-icon.prettyPrint,
 .dropdown-icon.blackBox {
   background-color: var(--theme-highlight-blue);
 }
 
 .dropdown-mask {
   position: fixed;
   width: 100%;
--- a/devtools/client/debugger/new/dist/parser-worker.js
+++ b/devtools/client/debugger/new/dist/parser-worker.js
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 549);
+/******/ 	return __webpack_require__(__webpack_require__.s = 550);
 /******/ })
 /************************************************************************/
 /******/ ([
 /* 0 */,
 /* 1 */,
 /* 2 */,
 /* 3 */,
 /* 4 */,
@@ -459,190 +459,190 @@ Object.defineProperty(exports, "validate
 Object.defineProperty(exports, "buildMatchMemberExpression", {
   enumerable: true,
   get: function () {
     return _buildMatchMemberExpression.default;
   }
 });
 exports.react = void 0;
 
-var _isReactComponent = _interopRequireDefault(__webpack_require__(551));
-
-var _isCompatTag = _interopRequireDefault(__webpack_require__(552));
-
-var _buildChildren = _interopRequireDefault(__webpack_require__(553));
-
-var _assertNode = _interopRequireDefault(__webpack_require__(625));
-
-var _generated = __webpack_require__(626);
+var _isReactComponent = _interopRequireDefault(__webpack_require__(552));
+
+var _isCompatTag = _interopRequireDefault(__webpack_require__(553));
+
+var _buildChildren = _interopRequireDefault(__webpack_require__(554));
+
+var _assertNode = _interopRequireDefault(__webpack_require__(626));
+
+var _generated = __webpack_require__(627);
 
 Object.keys(_generated).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated[key];
     }
   });
 });
 
-var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(__webpack_require__(627));
-
-var _createUnionTypeAnnotation = _interopRequireDefault(__webpack_require__(628));
-
-var _generated2 = __webpack_require__(40);
+var _createTypeAnnotationBasedOnTypeof = _interopRequireDefault(__webpack_require__(628));
+
+var _createUnionTypeAnnotation = _interopRequireDefault(__webpack_require__(629));
+
+var _generated2 = __webpack_require__(39);
 
 Object.keys(_generated2).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated2[key];
     }
   });
 });
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
-
-var _clone = _interopRequireDefault(__webpack_require__(328));
-
-var _cloneDeep = _interopRequireDefault(__webpack_require__(629));
-
-var _cloneWithoutLoc = _interopRequireDefault(__webpack_require__(630));
-
-var _addComment = _interopRequireDefault(__webpack_require__(631));
-
-var _addComments = _interopRequireDefault(__webpack_require__(329));
-
-var _inheritInnerComments = _interopRequireDefault(__webpack_require__(330));
-
-var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(333));
-
-var _inheritsComments = _interopRequireDefault(__webpack_require__(334));
-
-var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(335));
-
-var _removeComments = _interopRequireDefault(__webpack_require__(643));
-
-var _generated3 = __webpack_require__(644);
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
+
+var _clone = _interopRequireDefault(__webpack_require__(330));
+
+var _cloneDeep = _interopRequireDefault(__webpack_require__(630));
+
+var _cloneWithoutLoc = _interopRequireDefault(__webpack_require__(631));
+
+var _addComment = _interopRequireDefault(__webpack_require__(632));
+
+var _addComments = _interopRequireDefault(__webpack_require__(331));
+
+var _inheritInnerComments = _interopRequireDefault(__webpack_require__(332));
+
+var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(335));
+
+var _inheritsComments = _interopRequireDefault(__webpack_require__(336));
+
+var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(337));
+
+var _removeComments = _interopRequireDefault(__webpack_require__(644));
+
+var _generated3 = __webpack_require__(645);
 
 Object.keys(_generated3).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _generated3[key];
     }
   });
 });
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 Object.keys(_constants).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _constants[key];
     }
   });
 });
 
-var _ensureBlock = _interopRequireDefault(__webpack_require__(645));
-
-var _toBindingIdentifierName = _interopRequireDefault(__webpack_require__(646));
-
-var _toBlock = _interopRequireDefault(__webpack_require__(336));
-
-var _toComputedKey = _interopRequireDefault(__webpack_require__(647));
-
-var _toExpression = _interopRequireDefault(__webpack_require__(648));
-
-var _toIdentifier = _interopRequireDefault(__webpack_require__(337));
-
-var _toKeyAlias = _interopRequireDefault(__webpack_require__(649));
-
-var _toSequenceExpression = _interopRequireDefault(__webpack_require__(650));
-
-var _toStatement = _interopRequireDefault(__webpack_require__(652));
-
-var _valueToNode = _interopRequireDefault(__webpack_require__(653));
+var _ensureBlock = _interopRequireDefault(__webpack_require__(646));
+
+var _toBindingIdentifierName = _interopRequireDefault(__webpack_require__(647));
+
+var _toBlock = _interopRequireDefault(__webpack_require__(338));
+
+var _toComputedKey = _interopRequireDefault(__webpack_require__(648));
+
+var _toExpression = _interopRequireDefault(__webpack_require__(649));
+
+var _toIdentifier = _interopRequireDefault(__webpack_require__(339));
+
+var _toKeyAlias = _interopRequireDefault(__webpack_require__(650));
+
+var _toSequenceExpression = _interopRequireDefault(__webpack_require__(651));
+
+var _toStatement = _interopRequireDefault(__webpack_require__(653));
+
+var _valueToNode = _interopRequireDefault(__webpack_require__(654));
 
 var _definitions = __webpack_require__(44);
 
 Object.keys(_definitions).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _definitions[key];
     }
   });
 });
 
-var _appendToMemberExpression = _interopRequireDefault(__webpack_require__(657));
-
-var _inherits = _interopRequireDefault(__webpack_require__(658));
-
-var _prependToMemberExpression = _interopRequireDefault(__webpack_require__(659));
-
-var _removeProperties = _interopRequireDefault(__webpack_require__(340));
-
-var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(338));
-
-var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(327));
-
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
-
-var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(660));
-
-var _traverse = _interopRequireDefault(__webpack_require__(661));
-
-var _traverseFast = _interopRequireDefault(__webpack_require__(339));
+var _appendToMemberExpression = _interopRequireDefault(__webpack_require__(658));
+
+var _inherits = _interopRequireDefault(__webpack_require__(659));
+
+var _prependToMemberExpression = _interopRequireDefault(__webpack_require__(660));
+
+var _removeProperties = _interopRequireDefault(__webpack_require__(342));
+
+var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(340));
+
+var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(329));
+
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
+
+var _getOuterBindingIdentifiers = _interopRequireDefault(__webpack_require__(661));
+
+var _traverse = _interopRequireDefault(__webpack_require__(662));
+
+var _traverseFast = _interopRequireDefault(__webpack_require__(341));
 
 var _shallowEqual = _interopRequireDefault(__webpack_require__(239));
 
 var _is = _interopRequireDefault(__webpack_require__(251));
 
-var _isBinding = _interopRequireDefault(__webpack_require__(662));
-
-var _isBlockScoped = _interopRequireDefault(__webpack_require__(663));
-
-var _isImmutable = _interopRequireDefault(__webpack_require__(664));
-
-var _isLet = _interopRequireDefault(__webpack_require__(341));
-
-var _isNode = _interopRequireDefault(__webpack_require__(326));
-
-var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(665));
-
-var _isReferenced = _interopRequireDefault(__webpack_require__(666));
-
-var _isScope = _interopRequireDefault(__webpack_require__(667));
-
-var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(668));
+var _isBinding = _interopRequireDefault(__webpack_require__(663));
+
+var _isBlockScoped = _interopRequireDefault(__webpack_require__(664));
+
+var _isImmutable = _interopRequireDefault(__webpack_require__(665));
+
+var _isLet = _interopRequireDefault(__webpack_require__(343));
+
+var _isNode = _interopRequireDefault(__webpack_require__(328));
+
+var _isNodesEquivalent = _interopRequireDefault(__webpack_require__(666));
+
+var _isReferenced = _interopRequireDefault(__webpack_require__(667));
+
+var _isScope = _interopRequireDefault(__webpack_require__(668));
+
+var _isSpecifierDefault = _interopRequireDefault(__webpack_require__(669));
 
 var _isType = _interopRequireDefault(__webpack_require__(252));
 
-var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(669));
-
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _isVar = _interopRequireDefault(__webpack_require__(670));
-
-var _matchesPattern = _interopRequireDefault(__webpack_require__(308));
-
-var _validate = _interopRequireDefault(__webpack_require__(325));
-
-var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(307));
+var _isValidES3Identifier = _interopRequireDefault(__webpack_require__(670));
+
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _isVar = _interopRequireDefault(__webpack_require__(671));
+
+var _matchesPattern = _interopRequireDefault(__webpack_require__(310));
+
+var _validate = _interopRequireDefault(__webpack_require__(327));
+
+var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(309));
 
 var _generated4 = __webpack_require__(19);
 
 Object.keys(_generated4).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
   Object.defineProperty(exports, key, {
     enumerable: true,
@@ -4845,17 +4845,17 @@ function isSpreadProperty(node, opts) {
   return false;
 }
 
 /***/ }),
 /* 20 */,
 /* 21 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var freeGlobal = __webpack_require__(70);
+var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `self`. */
 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
 /** Used as a reference to the global object. */
 var root = freeGlobal || freeSelf || Function('return this')();
 
 module.exports = root;
@@ -5211,18 +5211,17 @@ function baseGetTag(value) {
 
 module.exports = baseGetTag;
 
 
 /***/ }),
 /* 36 */,
 /* 37 */,
 /* 38 */,
-/* 39 */,
-/* 40 */
+/* 39 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -5439,17 +5438,17 @@ exports.tSTypeAnnotation = exports.tsTyp
 exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
 exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = exports.TSTypeParameterDeclaration = TSTypeParameterDeclaration;
 exports.tSTypeParameter = exports.tsTypeParameter = exports.TSTypeParameter = TSTypeParameter;
 exports.numberLiteral = exports.NumberLiteral = NumberLiteral;
 exports.regexLiteral = exports.RegexLiteral = RegexLiteral;
 exports.restProperty = exports.RestProperty = RestProperty;
 exports.spreadProperty = exports.SpreadProperty = SpreadProperty;
 
-var _builder = _interopRequireDefault(__webpack_require__(555));
+var _builder = _interopRequireDefault(__webpack_require__(556));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function ArrayExpression(...args) {
   return (0, _builder.default)("ArrayExpression", ...args);
 }
 
 function AssignmentExpression(...args) {
@@ -6316,17 +6315,17 @@ function RestProperty(...args) {
 }
 
 function SpreadProperty(...args) {
   console.trace("The node type SpreadProperty has been renamed to SpreadElement");
   return SpreadProperty("SpreadProperty", ...args);
 }
 
 /***/ }),
-/* 41 */
+/* 40 */
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -6739,17 +6738,17 @@ function compareByGeneratedPositionsInfl
   }
 
   return strcmp(mappingA.name, mappingB.name);
 }
 exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
 
 /***/ }),
-/* 42 */
+/* 41 */
 /***/ (function(module, exports) {
 
 module.exports = function(module) {
 	if(!module.webpackPolyfill) {
 		module.deprecate = function() {};
 		module.paths = [];
 		// module.parent = undefined by default
 		if(!module.children) module.children = [];
@@ -6767,16 +6766,17 @@ module.exports = function(module) {
 		});
 		module.webpackPolyfill = 1;
 	}
 	return module;
 };
 
 
 /***/ }),
+/* 42 */,
 /* 43 */,
 /* 44 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
@@ -6816,39 +6816,39 @@ Object.defineProperty(exports, "DEPRECAT
   enumerable: true,
   get: function () {
     return _utils.DEPRECATED_KEYS;
   }
 });
 exports.TYPES = void 0;
 
 function _toFastProperties() {
-  const data = _interopRequireDefault(__webpack_require__(616));
+  const data = _interopRequireDefault(__webpack_require__(617));
 
   _toFastProperties = function () {
     return data;
   };
 
   return data;
 }
 
 __webpack_require__(250);
 
 __webpack_require__(253);
 
-__webpack_require__(620);
-
 __webpack_require__(621);
 
 __webpack_require__(622);
 
 __webpack_require__(623);
 
 __webpack_require__(624);
 
+__webpack_require__(625);
+
 var _utils = __webpack_require__(56);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 (0, _toFastProperties().default)(_utils.VISITOR_KEYS);
 (0, _toFastProperties().default)(_utils.ALIAS_KEYS);
 (0, _toFastProperties().default)(_utils.FLIPPED_ALIAS_KEYS);
 (0, _toFastProperties().default)(_utils.NODE_FIELDS);
@@ -6875,33 +6875,33 @@ exports.parse = parse;
 exports.parseConsoleScript = parseConsoleScript;
 exports.parseScript = parseScript;
 exports.getAst = getAst;
 exports.clearASTs = clearASTs;
 exports.traverseAst = traverseAst;
 exports.hasNode = hasNode;
 exports.replaceNode = replaceNode;
 
-var _parseScriptTags = __webpack_require__(671);
+var _parseScriptTags = __webpack_require__(672);
 
 var _parseScriptTags2 = _interopRequireDefault(_parseScriptTags);
 
-var _parser = __webpack_require__(675);
+var _parser = __webpack_require__(676);
 
 var babelParser = _interopRequireWildcard(_parser);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _isEmpty = __webpack_require__(343);
+var _isEmpty = __webpack_require__(345);
 
 var _isEmpty2 = _interopRequireDefault(_isEmpty);
 
-var _sources = __webpack_require__(344);
+var _sources = __webpack_require__(346);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 let ASTs = new Map(); /* This Source Code Form is subject to the terms of the Mozilla Public
                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -7377,21 +7377,22 @@ const store = {};
 /***/ }),
 /* 57 */,
 /* 58 */,
 /* 59 */,
 /* 60 */,
 /* 61 */,
 /* 62 */,
 /* 63 */,
-/* 64 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsNative = __webpack_require__(568),
-    getValue = __webpack_require__(571);
+/* 64 */,
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsNative = __webpack_require__(569),
+    getValue = __webpack_require__(572);
 
 /**
  * Gets the native function at `key` of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {string} key The key of the method to get.
  * @returns {*} Returns the function if it's native, else `undefined`.
@@ -7400,17 +7401,17 @@ function getNative(object, key) {
   var value = getValue(object, key);
   return baseIsNative(value) ? value : undefined;
 }
 
 module.exports = getNative;
 
 
 /***/ }),
-/* 65 */
+/* 66 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -7453,20 +7454,20 @@ const INHERIT_KEYS = {
 };
 exports.INHERIT_KEYS = INHERIT_KEYS;
 const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
 exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL;
 const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
 exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING;
 
 /***/ }),
-/* 66 */,
 /* 67 */,
 /* 68 */,
-/* 69 */
+/* 69 */,
+/* 70 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseToString = __webpack_require__(83);
 
 /**
  * Converts `value` to a string. An empty string is returned for `null`
  * and `undefined` values. The sign of `-0` is preserved.
  *
@@ -7490,28 +7491,27 @@ var baseToString = __webpack_require__(8
 function toString(value) {
   return value == null ? '' : baseToString(value);
 }
 
 module.exports = toString;
 
 
 /***/ }),
-/* 70 */
+/* 71 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
 module.exports = freeGlobal;
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
-/* 71 */,
 /* 72 */,
 /* 73 */,
 /* 74 */,
 /* 75 */,
 /* 76 */,
 /* 77 */,
 /* 78 */,
 /* 79 */,
@@ -7689,27 +7689,26 @@ module.exports = objectToString;
 /* 105 */,
 /* 106 */,
 /* 107 */,
 /* 108 */,
 /* 109 */,
 /* 110 */,
 /* 111 */,
 /* 112 */,
-/* 113 */,
-/* 114 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var DataView = __webpack_require__(601),
+/* 113 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var DataView = __webpack_require__(602),
     Map = __webpack_require__(241),
-    Promise = __webpack_require__(602),
-    Set = __webpack_require__(322),
-    WeakMap = __webpack_require__(603),
+    Promise = __webpack_require__(603),
+    Set = __webpack_require__(324),
+    WeakMap = __webpack_require__(604),
     baseGetTag = __webpack_require__(35),
-    toSource = __webpack_require__(310);
+    toSource = __webpack_require__(312);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
     objectTag = '[object Object]',
     promiseTag = '[object Promise]',
     setTag = '[object Set]',
     weakMapTag = '[object WeakMap]';
 
@@ -7754,29 +7753,29 @@ if ((DataView && getTag(new DataView(new
     return result;
   };
 }
 
 module.exports = getTag;
 
 
 /***/ }),
-/* 115 */
+/* 114 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isValidIdentifier;
 
 function _esutils() {
-  const data = _interopRequireDefault(__webpack_require__(617));
+  const data = _interopRequireDefault(__webpack_require__(618));
 
   _esutils = function () {
     return data;
   };
 
   return data;
 }
 
@@ -7788,17 +7787,17 @@ function isValidIdentifier(name) {
   } else if (name === "await") {
     return false;
   } else {
     return _esutils().default.keyword.isIdentifierNameES6(name);
   }
 }
 
 /***/ }),
-/* 116 */
+/* 115 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -7864,29 +7863,29 @@ function cloneNode(node, deep = true) {
   if (has(node, "extra")) {
     newNode.extra = Object.assign({}, node.extra);
   }
 
   return newNode;
 }
 
 /***/ }),
-/* 117 */
+/* 116 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var base64VLQ = __webpack_require__(118);
-var util = __webpack_require__(41);
-var ArraySet = __webpack_require__(119).ArraySet;
+var base64VLQ = __webpack_require__(117);
+var util = __webpack_require__(40);
+var ArraySet = __webpack_require__(118).ArraySet;
 var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
@@ -8286,17 +8285,17 @@ SourceMapGenerator.prototype.toString =
   function SourceMapGenerator_toString() {
     return JSON.stringify(this.toJSON());
   };
 
 exports.SourceMapGenerator = SourceMapGenerator;
 
 
 /***/ }),
-/* 118 */
+/* 117 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  *
@@ -8432,27 +8431,27 @@ exports.decode = function base64VLQ_deco
   } while (continuation);
 
   aOutParam.value = fromVLQSigned(result);
   aOutParam.rest = aIndex;
 };
 
 
 /***/ }),
-/* 119 */
+/* 118 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var has = Object.prototype.hasOwnProperty;
 var hasNativeMap = typeof Map !== "undefined";
 
 /**
  * A data structure which is a combination of an array and a set. Adding a new
  * member is O(1), testing for membership is O(1), and finding the index of an
  * element is O(1). Removing elements from the set is not supported. Only
  * strings are supported for membership.
@@ -8559,38 +8558,38 @@ ArraySet.prototype.at = function ArraySe
 ArraySet.prototype.toArray = function ArraySet_toArray() {
   return this._array.slice();
 };
 
 exports.ArraySet = ArraySet;
 
 
 /***/ }),
+/* 119 */,
 /* 120 */,
 /* 121 */,
 /* 122 */,
 /* 123 */,
 /* 124 */,
 /* 125 */,
 /* 126 */,
 /* 127 */,
 /* 128 */,
 /* 129 */,
 /* 130 */,
 /* 131 */,
 /* 132 */,
-/* 133 */,
-/* 134 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var listCacheClear = __webpack_require__(558),
-    listCacheDelete = __webpack_require__(559),
-    listCacheGet = __webpack_require__(560),
-    listCacheHas = __webpack_require__(561),
-    listCacheSet = __webpack_require__(562);
+/* 133 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var listCacheClear = __webpack_require__(559),
+    listCacheDelete = __webpack_require__(560),
+    listCacheGet = __webpack_require__(561),
+    listCacheHas = __webpack_require__(562),
+    listCacheSet = __webpack_require__(563);
 
 /**
  * Creates an list cache object.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -8611,20 +8610,20 @@ ListCache.prototype['delete'] = listCach
 ListCache.prototype.get = listCacheGet;
 ListCache.prototype.has = listCacheHas;
 ListCache.prototype.set = listCacheSet;
 
 module.exports = ListCache;
 
 
 /***/ }),
-/* 135 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var eq = __webpack_require__(136);
+/* 134 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(135);
 
 /**
  * Gets the index at which the `key` is found in `array` of key-value pairs.
  *
  * @private
  * @param {Array} array The array to inspect.
  * @param {*} key The key to search for.
  * @returns {number} Returns the index of the matched value, else `-1`.
@@ -8638,17 +8637,17 @@ function assocIndexOf(array, key) {
   }
   return -1;
 }
 
 module.exports = assocIndexOf;
 
 
 /***/ }),
-/* 136 */
+/* 135 */
 /***/ (function(module, exports) {
 
 /**
  * Performs a
  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  * comparison between two values to determine if they are equivalent.
  *
  * @static
@@ -8681,32 +8680,32 @@ module.exports = assocIndexOf;
 function eq(value, other) {
   return value === other || (value !== value && other !== other);
 }
 
 module.exports = eq;
 
 
 /***/ }),
-/* 137 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64);
+/* 136 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65);
 
 /* Built-in method references that are verified to be native. */
 var nativeCreate = getNative(Object, 'create');
 
 module.exports = nativeCreate;
 
 
 /***/ }),
-/* 138 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isKeyable = __webpack_require__(580);
+/* 137 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isKeyable = __webpack_require__(581);
 
 /**
  * Gets the data for `map`.
  *
  * @private
  * @param {Object} map The map to query.
  * @param {string} key The reference key.
  * @returns {*} Returns the map data.
@@ -8717,21 +8716,21 @@ function getMapData(map, key) {
     ? data[typeof key == 'string' ? 'string' : 'hash']
     : data.map;
 }
 
 module.exports = getMapData;
 
 
 /***/ }),
-/* 139 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assignValue = __webpack_require__(311),
-    baseAssignValue = __webpack_require__(312);
+/* 138 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assignValue = __webpack_require__(313),
+    baseAssignValue = __webpack_require__(314);
 
 /**
  * Copies properties of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy properties from.
  * @param {Array} props The property identifiers to copy.
  * @param {Object} [object={}] The object to copy properties to.
@@ -8763,22 +8762,22 @@ function copyObject(source, props, objec
   }
   return object;
 }
 
 module.exports = copyObject;
 
 
 /***/ }),
-/* 140 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayLikeKeys = __webpack_require__(313),
-    baseKeys = __webpack_require__(314),
-    isArrayLike = __webpack_require__(145);
+/* 139 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(315),
+    baseKeys = __webpack_require__(316),
+    isArrayLike = __webpack_require__(144);
 
 /**
  * Creates an array of the own enumerable property names of `object`.
  *
  * **Note:** Non-object values are coerced to objects. See the
  * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  * for more details.
  *
@@ -8806,21 +8805,21 @@ var arrayLikeKeys = __webpack_require__(
 function keys(object) {
   return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
 }
 
 module.exports = keys;
 
 
 /***/ }),
-/* 141 */
+/* 140 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(21),
-    stubFalse = __webpack_require__(589);
+    stubFalse = __webpack_require__(590);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
 /** Detect the popular CommonJS extension `module.exports`. */
@@ -8848,20 +8847,20 @@ var nativeIsBuffer = Buffer ? Buffer.isB
  *
  * _.isBuffer(new Uint8Array(2));
  * // => false
  */
 var isBuffer = nativeIsBuffer || stubFalse;
 
 module.exports = isBuffer;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 142 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 141 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.unary` without support for storing metadata.
  *
  * @private
  * @param {Function} func The function to cap arguments for.
  * @returns {Function} Returns the new capped function.
@@ -8871,20 +8870,20 @@ function baseUnary(func) {
     return func(value);
   };
 }
 
 module.exports = baseUnary;
 
 
 /***/ }),
-/* 143 */
-/***/ (function(module, exports, __webpack_require__) {
-
-/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(70);
+/* 142 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
 
 /** Detect the popular CommonJS extension `module.exports`. */
@@ -8905,20 +8904,20 @@ var nodeUtil = (function() {
 
     // Legacy `process.binding('util')` for Node.js < 10.
     return freeProcess && freeProcess.binding && freeProcess.binding('util');
   } catch (e) {}
 }());
 
 module.exports = nodeUtil;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 144 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 143 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /**
  * Checks if `value` is likely a prototype object.
  *
@@ -8932,20 +8931,20 @@ function isPrototype(value) {
 
   return value === proto;
 }
 
 module.exports = isPrototype;
 
 
 /***/ }),
-/* 145 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isFunction = __webpack_require__(309),
+/* 144 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(311),
     isLength = __webpack_require__(246);
 
 /**
  * Checks if `value` is array-like. A value is considered array-like if it's
  * not a function and has a `value.length` that's an integer greater than or
  * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  *
  * @static
@@ -8971,17 +8970,17 @@ var isFunction = __webpack_require__(309
 function isArrayLike(value) {
   return value != null && isLength(value.length) && !isFunction(value);
 }
 
 module.exports = isArrayLike;
 
 
 /***/ }),
-/* 146 */
+/* 145 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -9080,17 +9079,17 @@ getBindingIdentifiers.keys = {
   AssignmentPattern: ["left"],
   ArrayPattern: ["elements"],
   ObjectPattern: ["properties"],
   VariableDeclaration: ["declarations"],
   VariableDeclarator: ["id"]
 };
 
 /***/ }),
-/* 147 */
+/* 146 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -9102,25 +9101,24 @@ exports.getObjectExpressionValue = getOb
 exports.getCode = getCode;
 exports.getComments = getComments;
 exports.getSpecifiers = getSpecifiers;
 exports.isComputedExpression = isComputedExpression;
 exports.getMemberExpression = getMemberExpression;
 exports.getVariables = getVariables;
 exports.getPatternIdentifiers = getPatternIdentifiers;
 exports.isTopLevel = isTopLevel;
-exports.nodeHasSameLocation = nodeHasSameLocation;
-exports.sameLocation = sameLocation;
+exports.nodeLocationKey = nodeLocationKey;
 exports.getFunctionParameterNames = getFunctionParameterNames;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _generator = __webpack_require__(148);
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -9268,22 +9266,19 @@ function getIdentifiers(items) {
 }
 
 // Top Level checks the number of "body" nodes in the ancestor chain
 // if the node is top-level, then it shoul only have one body.
 function isTopLevel(ancestors) {
   return ancestors.filter(ancestor => ancestor.key == "body").length == 1;
 }
 
-function nodeHasSameLocation(a, b) {
-  return sameLocation(a.location, b.location);
-}
-
-function sameLocation(a, b) {
-  return a.start.line == b.start.line && a.start.column == b.start.column && a.end.line == b.end.line && a.end.column == b.end.column;
+function nodeLocationKey(a) {
+  const { start, end } = a.location;
+  return `${start.line}:${start.column}:${end.line}:${end.column}`;
 }
 
 function getFunctionParameterNames(path) {
   if (path.node.params != null) {
     return path.node.params.map(param => {
       if (param.type !== "AssignmentPattern") {
         return param.name;
       }
@@ -9301,31 +9296,31 @@ function getFunctionParameterNames(path)
         return `${param.left.name} = null`;
       }
     });
   }
   return [];
 }
 
 /***/ }),
-/* 148 */
+/* 147 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = _default;
 exports.CodeGenerator = void 0;
 
-var _sourceMap = _interopRequireDefault(__webpack_require__(676));
-
-var _printer = _interopRequireDefault(__webpack_require__(677));
+var _sourceMap = _interopRequireDefault(__webpack_require__(677));
+
+var _printer = _interopRequireDefault(__webpack_require__(678));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 class Generator extends _printer.default {
   constructor(ast, opts = {}, code) {
     const format = normalizeOptions(code, opts);
     const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null;
     super(format, map);
@@ -9399,20 +9394,20 @@ class CodeGenerator {
 exports.CodeGenerator = CodeGenerator;
 
 function _default(ast, opts, code) {
   const gen = new Generator(ast, opts, code);
   return gen.generate();
 }
 
 /***/ }),
-/* 149 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toFinite = __webpack_require__(679);
+/* 148 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toFinite = __webpack_require__(680);
 
 /**
  * Converts `value` to an integer.
  *
  * **Note:** This method is loosely based on
  * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
  *
  * @static
@@ -9441,17 +9436,17 @@ function toInteger(value) {
 
   return result === result ? (remainder ? result - remainder : result) : 0;
 }
 
 module.exports = toInteger;
 
 
 /***/ }),
-/* 150 */
+/* 149 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(global) {/*!
  * The buffer module from node.js, for the browser.
  *
  * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  * @license  MIT
@@ -11238,17 +11233,17 @@ function blitBuffer (src, dst, offset, l
 
 function isnan (val) {
   return val !== val // eslint-disable-line no-self-compare
 }
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
-/* 151 */
+/* 150 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isSymbol = __webpack_require__(51);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0;
 
 /**
@@ -11265,16 +11260,17 @@ function toKey(value) {
   var result = (value + '');
   return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 }
 
 module.exports = toKey;
 
 
 /***/ }),
+/* 151 */,
 /* 152 */,
 /* 153 */,
 /* 154 */,
 /* 155 */,
 /* 156 */,
 /* 157 */,
 /* 158 */,
 /* 159 */,
@@ -11367,65 +11363,74 @@ Object.defineProperty(exports, "__esModu
 });
 exports.clearSymbols = clearSymbols;
 exports.getSymbols = getSymbols;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _simplePath = __webpack_require__(342);
+var _simplePath = __webpack_require__(344);
 
 var _simplePath2 = _interopRequireDefault(_simplePath);
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
-
-var _inferClassName = __webpack_require__(699);
-
-var _getFunctionName = __webpack_require__(347);
+var _helpers = __webpack_require__(146);
+
+var _inferClassName = __webpack_require__(700);
+
+var _getFunctionName = __webpack_require__(349);
 
 var _getFunctionName2 = _interopRequireDefault(_getFunctionName);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 let symbolDeclarations = new Map();
 
 function getUniqueIdentifiers(identifiers) {
   const newIdentifiers = [];
+  const locationKeys = new Set();
   for (const newId of identifiers) {
-    if (!newIdentifiers.find(id => (0, _helpers.nodeHasSameLocation)(id, newId))) {
+    const key = (0, _helpers.nodeLocationKey)(newId);
+    if (!locationKeys.has(key)) {
+      locationKeys.add(key);
       newIdentifiers.push(newId);
     }
   }
 
   return newIdentifiers;
 }
 
 /* eslint-disable complexity */
-function extractSymbol(path, symbols) {
+function extractSymbol(path, symbols, state) {
   if ((0, _helpers.isFunction)(path)) {
     const name = (0, _getFunctionName2.default)(path.node, path.parent);
+
+    if (!state.fnCounts[name]) {
+      state.fnCounts[name] = 0;
+    }
+    const index = state.fnCounts[name]++;
+
     symbols.functions.push({
       name,
       klass: (0, _inferClassName.inferClassName)(path),
       location: path.node.loc,
       parameterNames: (0, _helpers.getFunctionParameterNames)(path),
       identifier: path.node.id,
       // indicates the occurence of the function in a file
       // e.g { name: foo, ... index: 4 } is the 4th foo function
       // in the file
-      index: symbols.functions.filter(f => f.name === name).length
+      index
     });
   }
 
   if (t.isJSXElement(path)) {
     symbols.hasJsx = true;
   }
 
   if (t.isGenericTypeAnnotation(path)) {
@@ -11547,18 +11552,17 @@ function extractSymbol(path, symbols) {
       location: { start, end },
       expression: "this"
     });
   }
 
   if (t.isVariableDeclarator(path)) {
     const nodeId = path.node.id;
 
-    const ids = (0, _helpers.getPatternIdentifiers)(nodeId);
-    symbols.identifiers = [...symbols.identifiers, ...ids];
+    symbols.identifiers.push(...(0, _helpers.getPatternIdentifiers)(nodeId));
   }
 }
 
 /* eslint-enable complexity */
 
 function extractSymbols(sourceId) {
   const symbols = {
     functions: [],
@@ -11570,22 +11574,26 @@ function extractSymbols(sourceId) {
     classes: [],
     imports: [],
     literals: [],
     hasJsx: false,
     hasTypes: false,
     loading: false
   };
 
+  const state = {
+    fnCounts: Object.create(null)
+  };
+
   const ast = (0, _ast.traverseAst)(sourceId, {
     enter(node, ancestors) {
       try {
         const path = (0, _simplePath2.default)(ancestors);
         if (path) {
-          extractSymbol(path, symbols);
+          extractSymbol(path, symbols, state);
         }
       } catch (e) {
         console.error(e);
       }
     }
   });
 
   // comments are extracted separately from the AST
@@ -11785,22 +11793,22 @@ function shallowEqual(actual, expected) 
 
   return true;
 }
 
 /***/ }),
 /* 240 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var ListCache = __webpack_require__(134),
-    stackClear = __webpack_require__(563),
-    stackDelete = __webpack_require__(564),
-    stackGet = __webpack_require__(565),
-    stackHas = __webpack_require__(566),
-    stackSet = __webpack_require__(567);
+var ListCache = __webpack_require__(133),
+    stackClear = __webpack_require__(564),
+    stackDelete = __webpack_require__(565),
+    stackGet = __webpack_require__(566),
+    stackHas = __webpack_require__(567),
+    stackSet = __webpack_require__(568);
 
 /**
  * Creates a stack cache object to store key-value pairs.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -11818,34 +11826,34 @@ Stack.prototype.set = stackSet;
 
 module.exports = Stack;
 
 
 /***/ }),
 /* 241 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var getNative = __webpack_require__(64),
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Map = getNative(root, 'Map');
 
 module.exports = Map;
 
 
 /***/ }),
 /* 242 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var mapCacheClear = __webpack_require__(572),
-    mapCacheDelete = __webpack_require__(579),
-    mapCacheGet = __webpack_require__(581),
-    mapCacheHas = __webpack_require__(582),
-    mapCacheSet = __webpack_require__(583);
+var mapCacheClear = __webpack_require__(573),
+    mapCacheDelete = __webpack_require__(580),
+    mapCacheGet = __webpack_require__(582),
+    mapCacheHas = __webpack_require__(583),
+    mapCacheSet = __webpack_require__(584);
 
 /**
  * Creates a map cache object to store key-value pairs.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -11869,17 +11877,17 @@ MapCache.prototype.set = mapCacheSet;
 
 module.exports = MapCache;
 
 
 /***/ }),
 /* 243 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsArguments = __webpack_require__(588),
+var baseIsArguments = __webpack_require__(589),
     isObjectLike = __webpack_require__(29);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
@@ -11942,19 +11950,19 @@ function isIndex(value, length) {
 
 module.exports = isIndex;
 
 
 /***/ }),
 /* 245 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var baseIsTypedArray = __webpack_require__(590),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+var baseIsTypedArray = __webpack_require__(591),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
 
 /**
  * Checks if `value` is classified as a typed array.
  *
  * @static
@@ -12016,18 +12024,18 @@ function isLength(value) {
 
 module.exports = isLength;
 
 
 /***/ }),
 /* 247 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var arrayFilter = __webpack_require__(598),
-    stubArray = __webpack_require__(317);
+var arrayFilter = __webpack_require__(599),
+    stubArray = __webpack_require__(319);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Built-in value references. */
 var propertyIsEnumerable = objectProto.propertyIsEnumerable;
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
@@ -12052,29 +12060,29 @@ var getSymbols = !nativeGetSymbols ? stu
 
 module.exports = getSymbols;
 
 
 /***/ }),
 /* 248 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var overArg = __webpack_require__(315);
+var overArg = __webpack_require__(317);
 
 /** Built-in value references. */
 var getPrototype = overArg(Object.getPrototypeOf, Object);
 
 module.exports = getPrototype;
 
 
 /***/ }),
 /* 249 */
 /***/ (function(module, exports, __webpack_require__) {
 
-var Uint8Array = __webpack_require__(323);
+var Uint8Array = __webpack_require__(325);
 
 /**
  * Creates a clone of `arrayBuffer`.
  *
  * @private
  * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
  * @returns {ArrayBuffer} Returns the cloned array buffer.
  */
@@ -12094,19 +12102,19 @@ module.exports = cloneArrayBuffer;
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _constants = __webpack_require__(65);
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _constants = __webpack_require__(66);
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 (0, _utils.default)("ArrayExpression", {
@@ -13268,17 +13276,17 @@ exports.classMethodOrDeclareMethodCommon
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inherit;
 
 function _uniq() {
-  const data = _interopRequireDefault(__webpack_require__(632));
+  const data = _interopRequireDefault(__webpack_require__(633));
 
   _uniq = function () {
     return data;
   };
 
   return data;
 }
 
@@ -13348,17 +13356,17 @@ module.exports = setToArray;
 /* 257 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
-exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
+exports.SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
 exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
 exports.SourceNode = __webpack_require__(263).SourceNode;
 
 
 /***/ }),
 /* 258 */
 /***/ (function(module, exports) {
 
@@ -13437,17 +13445,17 @@ exports.decode = function (charCode) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 
 /**
  * Determine whether mappingB is after mappingA with respect to generated
  * position.
  */
 function generatedPositionAfter(mappingA, mappingB) {
   // Optimized for most common case
   var lineA = mappingA.generatedLine;
@@ -13522,20 +13530,20 @@ exports.MappingList = MappingList;
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var binarySearch = __webpack_require__(261);
-var ArraySet = __webpack_require__(119).ArraySet;
-var base64VLQ = __webpack_require__(118);
+var ArraySet = __webpack_require__(118).ArraySet;
+var base64VLQ = __webpack_require__(117);
 var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
@@ -14847,18 +14855,18 @@ exports.quickSort = function (ary, compa
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-var util = __webpack_require__(41);
+var SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
+var util = __webpack_require__(40);
 
 // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 // operating systems these days (capturing the result).
 var REGEX_NEWLINE = /(\r?\n)/;
 
 // Newline character code for charCodeAt() comparisons
 var NEWLINE_CODE = 10;
 
@@ -15289,17 +15297,17 @@ function t() {
   t = function () {
     return data;
   };
 
   return data;
 }
 
 function _jsesc() {
-  const data = _interopRequireDefault(__webpack_require__(694));
+  const data = _interopRequireDefault(__webpack_require__(695));
 
   _jsesc = function () {
     return data;
   };
 
   return data;
 }
 
@@ -15772,38 +15780,40 @@ module.exports = isKey;
 /* 299 */,
 /* 300 */,
 /* 301 */,
 /* 302 */,
 /* 303 */,
 /* 304 */,
 /* 305 */,
 /* 306 */,
-/* 307 */
+/* 307 */,
+/* 308 */,
+/* 309 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildMatchMemberExpression;
 
-var _matchesPattern = _interopRequireDefault(__webpack_require__(308));
+var _matchesPattern = _interopRequireDefault(__webpack_require__(310));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function buildMatchMemberExpression(match, allowPartial) {
   const parts = match.split(".");
   return member => (0, _matchesPattern.default)(member, parts, allowPartial);
 }
 
 /***/ }),
-/* 308 */
+/* 310 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -15839,17 +15849,17 @@ function matchesPattern(member, match, a
 
     if (parts[i] !== value) return false;
   }
 
   return true;
 }
 
 /***/ }),
-/* 309 */
+/* 311 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObject = __webpack_require__(55);
 
 /** `Object#toString` result references. */
 var asyncTag = '[object AsyncFunction]',
     funcTag = '[object Function]',
@@ -15882,17 +15892,17 @@ function isFunction(value) {
   var tag = baseGetTag(value);
   return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 }
 
 module.exports = isFunction;
 
 
 /***/ }),
-/* 310 */
+/* 312 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var funcProto = Function.prototype;
 
 /** Used to resolve the decompiled source of functions. */
 var funcToString = funcProto.toString;
 
@@ -15914,21 +15924,21 @@ function toSource(func) {
   }
   return '';
 }
 
 module.exports = toSource;
 
 
 /***/ }),
-/* 311 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseAssignValue = __webpack_require__(312),
-    eq = __webpack_require__(136);
+/* 313 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseAssignValue = __webpack_require__(314),
+    eq = __webpack_require__(135);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -15948,20 +15958,20 @@ function assignValue(object, key, value)
     baseAssignValue(object, key, value);
   }
 }
 
 module.exports = assignValue;
 
 
 /***/ }),
-/* 312 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var defineProperty = __webpack_require__(585);
+/* 314 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var defineProperty = __webpack_require__(586);
 
 /**
  * The base implementation of `assignValue` and `assignMergeValue` without
  * value checks.
  *
  * @private
  * @param {Object} object The object to modify.
  * @param {string} key The key of the property to assign.
@@ -15979,23 +15989,23 @@ function baseAssignValue(object, key, va
     object[key] = value;
   }
 }
 
 module.exports = baseAssignValue;
 
 
 /***/ }),
-/* 313 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseTimes = __webpack_require__(587),
+/* 315 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseTimes = __webpack_require__(588),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
+    isBuffer = __webpack_require__(140),
     isIndex = __webpack_require__(244),
     isTypedArray = __webpack_require__(245);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
@@ -16034,21 +16044,21 @@ function arrayLikeKeys(value, inherited)
   }
   return result;
 }
 
 module.exports = arrayLikeKeys;
 
 
 /***/ }),
-/* 314 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isPrototype = __webpack_require__(144),
-    nativeKeys = __webpack_require__(591);
+/* 316 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isPrototype = __webpack_require__(143),
+    nativeKeys = __webpack_require__(592);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -16070,17 +16080,17 @@ function baseKeys(object) {
   }
   return result;
 }
 
 module.exports = baseKeys;
 
 
 /***/ }),
-/* 315 */
+/* 317 */
 /***/ (function(module, exports) {
 
 /**
  * Creates a unary function that invokes `func` with its argument transformed.
  *
  * @private
  * @param {Function} func The function to wrap.
  * @param {Function} transform The argument transform.
@@ -16091,22 +16101,22 @@ function overArg(func, transform) {
     return func(transform(arg));
   };
 }
 
 module.exports = overArg;
 
 
 /***/ }),
-/* 316 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayLikeKeys = __webpack_require__(313),
-    baseKeysIn = __webpack_require__(593),
-    isArrayLike = __webpack_require__(145);
+/* 318 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeKeys = __webpack_require__(315),
+    baseKeysIn = __webpack_require__(594),
+    isArrayLike = __webpack_require__(144);
 
 /**
  * Creates an array of the own and inherited enumerable property names of `object`.
  *
  * **Note:** Non-object values are coerced to objects.
  *
  * @static
  * @memberOf _
@@ -16129,17 +16139,17 @@ var arrayLikeKeys = __webpack_require__(
 function keysIn(object) {
   return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
 }
 
 module.exports = keysIn;
 
 
 /***/ }),
-/* 317 */
+/* 319 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns a new empty array.
  *
  * @static
  * @memberOf _
  * @since 4.13.0
@@ -16158,23 +16168,23 @@ module.exports = keysIn;
 function stubArray() {
   return [];
 }
 
 module.exports = stubArray;
 
 
 /***/ }),
-/* 318 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayPush = __webpack_require__(319),
+/* 320 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(321),
     getPrototype = __webpack_require__(248),
     getSymbols = __webpack_require__(247),
-    stubArray = __webpack_require__(317);
+    stubArray = __webpack_require__(319);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeGetSymbols = Object.getOwnPropertySymbols;
 
 /**
  * Creates an array of the own and inherited enumerable symbols of `object`.
  *
  * @private
@@ -16189,17 +16199,17 @@ var getSymbolsIn = !nativeGetSymbols ? s
   }
   return result;
 };
 
 module.exports = getSymbolsIn;
 
 
 /***/ }),
-/* 319 */
+/* 321 */
 /***/ (function(module, exports) {
 
 /**
  * Appends the elements of `values` to `array`.
  *
  * @private
  * @param {Array} array The array to modify.
  * @param {Array} values The values to append.
@@ -16215,42 +16225,42 @@ function arrayPush(array, values) {
   }
   return array;
 }
 
 module.exports = arrayPush;
 
 
 /***/ }),
-/* 320 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGetAllKeys = __webpack_require__(321),
+/* 322 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(323),
     getSymbols = __webpack_require__(247),
-    keys = __webpack_require__(140);
+    keys = __webpack_require__(139);
 
 /**
  * Creates an array of own enumerable property names and symbols of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names and symbols.
  */
 function getAllKeys(object) {
   return baseGetAllKeys(object, keys, getSymbols);
 }
 
 module.exports = getAllKeys;
 
 
 /***/ }),
-/* 321 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var arrayPush = __webpack_require__(319),
+/* 323 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayPush = __webpack_require__(321),
     isArray = __webpack_require__(22);
 
 /**
  * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
  * `keysFunc` and `symbolsFunc` to get the enumerable property names and
  * symbols of `object`.
  *
  * @private
@@ -16263,42 +16273,42 @@ function baseGetAllKeys(object, keysFunc
   var result = keysFunc(object);
   return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
 }
 
 module.exports = baseGetAllKeys;
 
 
 /***/ }),
-/* 322 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 324 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Set = getNative(root, 'Set');
 
 module.exports = Set;
 
 
 /***/ }),
-/* 323 */
+/* 325 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var root = __webpack_require__(21);
 
 /** Built-in value references. */
 var Uint8Array = root.Uint8Array;
 
 module.exports = Uint8Array;
 
 
 /***/ }),
-/* 324 */
+/* 326 */
 /***/ (function(module, exports) {
 
 /*
   Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
   Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
@@ -16429,17 +16439,17 @@ module.exports = Uint8Array;
         isIdentifierStartES6: isIdentifierStartES6,
         isIdentifierPartES6: isIdentifierPartES6
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 325 */
+/* 327 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16453,17 +16463,17 @@ function validate(node, key, val) {
   if (!fields) return;
   const field = fields[key];
   if (!field || !field.validate) return;
   if (field.optional && val == null) return;
   field.validate(node, key, val);
 }
 
 /***/ }),
-/* 326 */
+/* 328 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16471,17 +16481,17 @@ exports.default = isNode;
 
 var _definitions = __webpack_require__(44);
 
 function isNode(node) {
   return !!(node && _definitions.VISITOR_KEYS[node.type]);
 }
 
 /***/ }),
-/* 327 */
+/* 329 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16551,37 +16561,37 @@ function removeTypeDuplicates(nodes) {
   for (const name in generics) {
     types.push(generics[name]);
   }
 
   return types;
 }
 
 /***/ }),
-/* 328 */
+/* 330 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = clone;
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function clone(node) {
   return (0, _cloneNode.default)(node, false);
 }
 
 /***/ }),
-/* 329 */
+/* 331 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16600,17 +16610,17 @@ function addComments(node, type, comment
   } else {
     node[key] = comments;
   }
 
   return node;
 }
 
 /***/ }),
-/* 330 */
+/* 332 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16620,22 +16630,22 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritInnerComments(child, parent) {
   (0, _inherit.default)("innerComments", child, parent);
 }
 
 /***/ }),
-/* 331 */
+/* 333 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var MapCache = __webpack_require__(242),
-    setCacheAdd = __webpack_require__(634),
-    setCacheHas = __webpack_require__(635);
+    setCacheAdd = __webpack_require__(635),
+    setCacheHas = __webpack_require__(636);
 
 /**
  *
  * Creates an array cache object to store unique values.
  *
  * @private
  * @constructor
  * @param {Array} [values] The values to cache.
@@ -16653,17 +16663,17 @@ function SetCache(values) {
 // Add methods to `SetCache`.
 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
 SetCache.prototype.has = setCacheHas;
 
 module.exports = SetCache;
 
 
 /***/ }),
-/* 332 */
+/* 334 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if a `cache` value for `key` exists.
  *
  * @private
  * @param {Object} cache The cache to query.
  * @param {string} key The key of the entry to check.
@@ -16672,17 +16682,17 @@ module.exports = SetCache;
 function cacheHas(cache, key) {
   return cache.has(key);
 }
 
 module.exports = cacheHas;
 
 
 /***/ }),
-/* 333 */
+/* 335 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16692,44 +16702,44 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritLeadingComments(child, parent) {
   (0, _inherit.default)("leadingComments", child, parent);
 }
 
 /***/ }),
-/* 334 */
+/* 336 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inheritsComments;
 
-var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(335));
-
-var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(333));
-
-var _inheritInnerComments = _interopRequireDefault(__webpack_require__(330));
+var _inheritTrailingComments = _interopRequireDefault(__webpack_require__(337));
+
+var _inheritLeadingComments = _interopRequireDefault(__webpack_require__(335));
+
+var _inheritInnerComments = _interopRequireDefault(__webpack_require__(332));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritsComments(child, parent) {
   (0, _inheritTrailingComments.default)(child, parent);
   (0, _inheritLeadingComments.default)(child, parent);
   (0, _inheritInnerComments.default)(child, parent);
   return child;
 }
 
 /***/ }),
-/* 335 */
+/* 337 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16739,30 +16749,30 @@ var _inherit = _interopRequireDefault(__
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inheritTrailingComments(child, parent) {
   (0, _inherit.default)("trailingComments", child, parent);
 }
 
 /***/ }),
-/* 336 */
+/* 338 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toBlock;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toBlock(node, parent) {
   if ((0, _generated.isBlockStatement)(node)) {
     return node;
   }
 
   let blockNodes = [];
 
@@ -16779,28 +16789,28 @@ function toBlock(node, parent) {
 
     blockNodes = [node];
   }
 
   return (0, _generated2.blockStatement)(blockNodes);
 }
 
 /***/ }),
-/* 337 */
+/* 339 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toIdentifier;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toIdentifier(name) {
   name = name + "";
   name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
   name = name.replace(/^[-0-9]+/, "");
   name = name.replace(/[-\s]+(.)?/g, function (match, c) {
@@ -16810,40 +16820,40 @@ function toIdentifier(name) {
   if (!(0, _isValidIdentifier.default)(name)) {
     name = `_${name}`;
   }
 
   return name || "_";
 }
 
 /***/ }),
-/* 338 */
+/* 340 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removePropertiesDeep;
 
-var _traverseFast = _interopRequireDefault(__webpack_require__(339));
-
-var _removeProperties = _interopRequireDefault(__webpack_require__(340));
+var _traverseFast = _interopRequireDefault(__webpack_require__(341));
+
+var _removeProperties = _interopRequireDefault(__webpack_require__(342));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function removePropertiesDeep(tree, opts) {
   (0, _traverseFast.default)(tree, _removeProperties.default, opts);
   return tree;
 }
 
 /***/ }),
-/* 339 */
+/* 341 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -16867,28 +16877,28 @@ function traverseFast(node, enter, opts)
       }
     } else {
       traverseFast(subNode, enter, opts);
     }
   }
 }
 
 /***/ }),
-/* 340 */
+/* 342 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removeProperties;
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
 
 const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS);
 
 function removeProperties(node, opts = {}) {
   const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
 
@@ -16903,37 +16913,37 @@ function removeProperties(node, opts = {
   const symbols = Object.getOwnPropertySymbols(node);
 
   for (const sym of symbols) {
     node[sym] = null;
   }
 }
 
 /***/ }),
-/* 341 */
+/* 343 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isLet;
 
 var _generated = __webpack_require__(19);
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function isLet(node) {
   return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]);
 }
 
 /***/ }),
-/* 342 */
+/* 344 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17072,26 +17082,26 @@ class SimplePath {
       return null;
     }
 
     return new SimplePath(this._ancestors.slice(0, -1).concat([{ node, key, index: siblingIndex }]));
   }
 }
 
 /***/ }),
-/* 343 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseKeys = __webpack_require__(314),
-    getTag = __webpack_require__(114),
+/* 345 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseKeys = __webpack_require__(316),
+    getTag = __webpack_require__(113),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
-    isArrayLike = __webpack_require__(145),
-    isBuffer = __webpack_require__(141),
-    isPrototype = __webpack_require__(144),
+    isArrayLike = __webpack_require__(144),
+    isBuffer = __webpack_require__(140),
+    isPrototype = __webpack_require__(143),
     isTypedArray = __webpack_require__(245);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]',
     setTag = '[object Set]';
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
@@ -17155,17 +17165,17 @@ function isEmpty(value) {
   }
   return true;
 }
 
 module.exports = isEmpty;
 
 
 /***/ }),
-/* 344 */
+/* 346 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17195,33 +17205,33 @@ function getSource(sourceId) {
   return cachedSources.get(sourceId);
 }
 
 function clearSources() {
   cachedSources = new Map();
 }
 
 /***/ }),
-/* 345 */
+/* 347 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.needsWhitespace = needsWhitespace;
 exports.needsWhitespaceBefore = needsWhitespaceBefore;
 exports.needsWhitespaceAfter = needsWhitespaceAfter;
 exports.needsParens = needsParens;
 
-var whitespace = _interopRequireWildcard(__webpack_require__(686));
-
-var parens = _interopRequireWildcard(__webpack_require__(687));
+var whitespace = _interopRequireWildcard(__webpack_require__(687));
+
+var parens = _interopRequireWildcard(__webpack_require__(688));
 
 function t() {
   const data = _interopRequireWildcard(__webpack_require__(12));
 
   t = function () {
     return data;
   };
 
@@ -17318,17 +17328,17 @@ function needsParens(node, parent, print
   if (t().isNewExpression(parent) && parent.callee === node) {
     if (isOrHasCallExpression(node)) return true;
   }
 
   return find(expandedParens, node, parent, printStack);
 }
 
 /***/ }),
-/* 346 */
+/* 348 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17538,17 +17548,17 @@ function ImportNamespaceSpecifier(node) 
   this.token("*");
   this.space();
   this.word("as");
   this.space();
   this.print(node.local, node);
 }
 
 /***/ }),
-/* 347 */
+/* 349 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -17625,30 +17635,30 @@ function getFunctionName(node, parent) {
   }
 
   return "anonymous";
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 348 */
+/* 350 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.buildScopeList = undefined;
 exports.default = getScopes;
 exports.clearScopes = clearScopes;
 
-var _visitor = __webpack_require__(700);
+var _visitor = __webpack_require__(701);
 
 let parsedScopesCache = new Map(); /* This Source Code Form is subject to the terms of the Mozilla Public
                                     * License, v. 2.0. If a copy of the MPL was not distributed with this
                                     * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 function getScopes(location) {
   const { sourceId } = location;
   let parsedScopes = parsedScopesCache.get(sourceId);
@@ -17701,20 +17711,20 @@ function findScopes(scopes, location) {
 function compareLocations(a, b) {
   // According to type of Location.column can be undefined, if will not be the
   // case here, ignoring flow error.
   // $FlowIgnore
   return a.line == b.line ? a.column - b.column : a.line - b.line;
 }
 
 /***/ }),
-/* 349 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGet = __webpack_require__(350);
+/* 351 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(352);
 
 /**
  * Gets the value at `path` of `object`. If the resolved value is
  * `undefined`, the `defaultValue` is returned in its place.
  *
  * @static
  * @memberOf _
  * @since 3.7.0
@@ -17740,21 +17750,21 @@ function get(object, path, defaultValue)
   var result = object == null ? undefined : baseGet(object, path);
   return result === undefined ? defaultValue : result;
 }
 
 module.exports = get;
 
 
 /***/ }),
-/* 350 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var castPath = __webpack_require__(351),
-    toKey = __webpack_require__(151);
+/* 352 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(353),
+    toKey = __webpack_require__(150);
 
 /**
  * The base implementation of `_.get` without support for default values.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {Array|string} path The path of the property to get.
  * @returns {*} Returns the resolved value.
@@ -17770,23 +17780,23 @@ function baseGet(object, path) {
   }
   return (index && index == length) ? object : undefined;
 }
 
 module.exports = baseGet;
 
 
 /***/ }),
-/* 351 */
+/* 353 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isArray = __webpack_require__(22),
     isKey = __webpack_require__(268),
-    stringToPath = __webpack_require__(702),
-    toString = __webpack_require__(69);
+    stringToPath = __webpack_require__(703),
+    toString = __webpack_require__(70);
 
 /**
  * Casts `value` to a path array if it's not one.
  *
  * @private
  * @param {*} value The value to inspect.
  * @param {Object} [object] The object to query keys on.
  * @returns {Array} Returns the cast property path array.
@@ -17797,24 +17807,24 @@ function castPath(value, object) {
   }
   return isKey(value, object) ? [value] : stringToPath(toString(value));
 }
 
 module.exports = castPath;
 
 
 /***/ }),
-/* 352 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseMatches = __webpack_require__(706),
-    baseMatchesProperty = __webpack_require__(714),
-    identity = __webpack_require__(718),
+/* 354 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseMatches = __webpack_require__(707),
+    baseMatchesProperty = __webpack_require__(715),
+    identity = __webpack_require__(719),
     isArray = __webpack_require__(22),
-    property = __webpack_require__(719);
+    property = __webpack_require__(720);
 
 /**
  * The base implementation of `_.iteratee`.
  *
  * @private
  * @param {*} [value=_.identity] The value to convert to an iteratee.
  * @returns {Function} Returns the iteratee.
  */
@@ -17834,20 +17844,20 @@ function baseIteratee(value) {
   }
   return property(value);
 }
 
 module.exports = baseIteratee;
 
 
 /***/ }),
-/* 353 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsEqualDeep = __webpack_require__(708),
+/* 355 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqualDeep = __webpack_require__(709),
     isObjectLike = __webpack_require__(29);
 
 /**
  * The base implementation of `_.isEqual` which supports partial comparisons
  * and tracks traversed objects.
  *
  * @private
  * @param {*} value The value to compare.
@@ -17868,22 +17878,22 @@ function baseIsEqual(value, other, bitma
   }
   return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
 }
 
 module.exports = baseIsEqual;
 
 
 /***/ }),
-/* 354 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var SetCache = __webpack_require__(331),
-    arraySome = __webpack_require__(709),
-    cacheHas = __webpack_require__(332);
+/* 356 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(333),
+    arraySome = __webpack_require__(710),
+    cacheHas = __webpack_require__(334);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * A specialized version of `baseIsEqualDeep` for arrays with support for
  * partial deep comparisons.
@@ -17957,17 +17967,17 @@ function equalArrays(array, other, bitma
   stack['delete'](other);
   return result;
 }
 
 module.exports = equalArrays;
 
 
 /***/ }),
-/* 355 */
+/* 357 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55);
 
 /**
  * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
  *
  * @private
@@ -17978,17 +17988,17 @@ var isObject = __webpack_require__(55);
 function isStrictComparable(value) {
   return value === value && !isObject(value);
 }
 
 module.exports = isStrictComparable;
 
 
 /***/ }),
-/* 356 */
+/* 358 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `matchesProperty` for source values suitable
  * for strict equality comparisons, i.e. `===`.
  *
  * @private
  * @param {string} key The key of the property to get.
@@ -18004,17 +18014,17 @@ function matchesStrictComparable(key, sr
       (srcValue !== undefined || (key in Object(object)));
   };
 }
 
 module.exports = matchesStrictComparable;
 
 
 /***/ }),
-/* 357 */
+/* 359 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -18049,18 +18059,16 @@ function containsLocation(a, b) {
   return containsPosition(a, b.start) && containsPosition(a, b.end);
 }
 
 function nodeContainsPosition(node, position) {
   return containsPosition(node.loc, position);
 }
 
 /***/ }),
-/* 358 */,
-/* 359 */,
 /* 360 */,
 /* 361 */,
 /* 362 */,
 /* 363 */,
 /* 364 */,
 /* 365 */,
 /* 366 */,
 /* 367 */,
@@ -18240,50 +18248,51 @@ function nodeContainsPosition(node, posi
 /* 541 */,
 /* 542 */,
 /* 543 */,
 /* 544 */,
 /* 545 */,
 /* 546 */,
 /* 547 */,
 /* 548 */,
-/* 549 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(550);
-
-
-/***/ }),
+/* 549 */,
 /* 550 */
 /***/ (function(module, exports, __webpack_require__) {
 
+module.exports = __webpack_require__(551);
+
+
+/***/ }),
+/* 551 */
+/***/ (function(module, exports, __webpack_require__) {
+
 "use strict";
 
 
 var _getSymbols = __webpack_require__(238);
 
 var _ast = __webpack_require__(49);
 
-var _getScopes = __webpack_require__(348);
+var _getScopes = __webpack_require__(350);
 
 var _getScopes2 = _interopRequireDefault(_getScopes);
 
-var _sources = __webpack_require__(344);
-
-var _findOutOfScopeLocations = __webpack_require__(701);
+var _sources = __webpack_require__(346);
+
+var _findOutOfScopeLocations = __webpack_require__(702);
 
 var _findOutOfScopeLocations2 = _interopRequireDefault(_findOutOfScopeLocations);
 
-var _steps = __webpack_require__(723);
-
-var _validate = __webpack_require__(725);
-
-var _frameworks = __webpack_require__(726);
-
-var _mapExpression = __webpack_require__(727);
+var _steps = __webpack_require__(724);
+
+var _validate = __webpack_require__(726);
+
+var _frameworks = __webpack_require__(727);
+
+var _mapExpression = __webpack_require__(728);
 
 var _mapExpression2 = _interopRequireDefault(_mapExpression);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -18304,66 +18313,66 @@ self.onmessage = workerHandler({
   clearSources: _sources.clearSources,
   getNextStep: _steps.getNextStep,
   hasSyntaxError: _validate.hasSyntaxError,
   getFramework: _frameworks.getFramework,
   mapExpression: _mapExpression2.default
 });
 
 /***/ }),
-/* 551 */
+/* 552 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
-var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(307));
+var _buildMatchMemberExpression = _interopRequireDefault(__webpack_require__(309));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
 var _default = isReactComponent;
 exports.default = _default;
 
 /***/ }),
-/* 552 */
+/* 553 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isCompatTag;
 
 function isCompatTag(tagName) {
   return !!tagName && /^[a-z]/.test(tagName);
 }
 
 /***/ }),
-/* 553 */
+/* 554 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildChildren;
 
 var _generated = __webpack_require__(19);
 
-var _cleanJSXElementLiteralChild = _interopRequireDefault(__webpack_require__(554));
+var _cleanJSXElementLiteralChild = _interopRequireDefault(__webpack_require__(555));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function buildChildren(node) {
   const elements = [];
 
   for (let i = 0; i < node.children.length; i++) {
     let child = node.children[i];
@@ -18377,28 +18386,28 @@ function buildChildren(node) {
     if ((0, _generated.isJSXEmptyExpression)(child)) continue;
     elements.push(child);
   }
 
   return elements;
 }
 
 /***/ }),
-/* 554 */
+/* 555 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cleanJSXElementLiteralChild;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function cleanJSXElementLiteralChild(child, args) {
   const lines = child.value.split(/\r\n|\n|\r/);
   let lastNonEmptyLine = 0;
 
   for (let i = 0; i < lines.length; i++) {
     if (lines[i].match(/[^ \t]/)) {
       lastNonEmptyLine = i;
@@ -18430,40 +18439,40 @@ function cleanJSXElementLiteralChild(chi
       str += trimmedLine;
     }
   }
 
   if (str) args.push((0, _generated.stringLiteral)(str));
 }
 
 /***/ }),
-/* 555 */
+/* 556 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = builder;
 
 function _clone() {
-  const data = _interopRequireDefault(__webpack_require__(556));
+  const data = _interopRequireDefault(__webpack_require__(557));
 
   _clone = function () {
     return data;
   };
 
   return data;
 }
 
 var _definitions = __webpack_require__(44);
 
-var _validate = _interopRequireDefault(__webpack_require__(325));
+var _validate = _interopRequireDefault(__webpack_require__(327));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function builder(type, ...args) {
   const keys = _definitions.BUILDER_KEYS[type];
   const countArgs = args.length;
 
   if (countArgs > keys.length) {
@@ -18486,20 +18495,20 @@ function builder(type, ...args) {
   for (const key in node) {
     (0, _validate.default)(node, key, node[key]);
   }
 
   return node;
 }
 
 /***/ }),
-/* 556 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseClone = __webpack_require__(557);
+/* 557 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseClone = __webpack_require__(558);
 
 /** Used to compose bitmasks for cloning. */
 var CLONE_SYMBOLS_FLAG = 4;
 
 /**
  * Creates a shallow clone of `value`.
  *
  * **Note:** This method is loosely based on the
@@ -18528,40 +18537,40 @@ var CLONE_SYMBOLS_FLAG = 4;
 function clone(value) {
   return baseClone(value, CLONE_SYMBOLS_FLAG);
 }
 
 module.exports = clone;
 
 
 /***/ }),
-/* 557 */
+/* 558 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    arrayEach = __webpack_require__(584),
-    assignValue = __webpack_require__(311),
-    baseAssign = __webpack_require__(586),
-    baseAssignIn = __webpack_require__(592),
-    cloneBuffer = __webpack_require__(595),
-    copyArray = __webpack_require__(596),
-    copySymbols = __webpack_require__(597),
-    copySymbolsIn = __webpack_require__(599),
-    getAllKeys = __webpack_require__(320),
-    getAllKeysIn = __webpack_require__(600),
-    getTag = __webpack_require__(114),
-    initCloneArray = __webpack_require__(604),
-    initCloneByTag = __webpack_require__(605),
-    initCloneObject = __webpack_require__(610),
+    arrayEach = __webpack_require__(585),
+    assignValue = __webpack_require__(313),
+    baseAssign = __webpack_require__(587),
+    baseAssignIn = __webpack_require__(593),
+    cloneBuffer = __webpack_require__(596),
+    copyArray = __webpack_require__(597),
+    copySymbols = __webpack_require__(598),
+    copySymbolsIn = __webpack_require__(600),
+    getAllKeys = __webpack_require__(322),
+    getAllKeysIn = __webpack_require__(601),
+    getTag = __webpack_require__(113),
+    initCloneArray = __webpack_require__(605),
+    initCloneByTag = __webpack_require__(606),
+    initCloneObject = __webpack_require__(611),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
-    isMap = __webpack_require__(612),
+    isBuffer = __webpack_require__(140),
+    isMap = __webpack_require__(613),
     isObject = __webpack_require__(55),
-    isSet = __webpack_require__(614),
-    keys = __webpack_require__(140);
+    isSet = __webpack_require__(615),
+    keys = __webpack_require__(139);
 
 /** Used to compose bitmasks for cloning. */
 var CLONE_DEEP_FLAG = 1,
     CLONE_FLAT_FLAG = 2,
     CLONE_SYMBOLS_FLAG = 4;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
@@ -18705,17 +18714,17 @@ function baseClone(value, bitmask, custo
   });
   return result;
 }
 
 module.exports = baseClone;
 
 
 /***/ }),
-/* 558 */
+/* 559 */
 /***/ (function(module, exports) {
 
 /**
  * Removes all key-value entries from the list cache.
  *
  * @private
  * @name clear
  * @memberOf ListCache
@@ -18724,20 +18733,20 @@ function listCacheClear() {
   this.__data__ = [];
   this.size = 0;
 }
 
 module.exports = listCacheClear;
 
 
 /***/ }),
-/* 559 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 560 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /** Used for built-in method references. */
 var arrayProto = Array.prototype;
 
 /** Built-in value references. */
 var splice = arrayProto.splice;
 
 /**
@@ -18765,20 +18774,20 @@ function listCacheDelete(key) {
   --this.size;
   return true;
 }
 
 module.exports = listCacheDelete;
 
 
 /***/ }),
-/* 560 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 561 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Gets the list cache value for `key`.
  *
  * @private
  * @name get
  * @memberOf ListCache
  * @param {string} key The key of the value to get.
@@ -18790,20 +18799,20 @@ function listCacheGet(key) {
 
   return index < 0 ? undefined : data[index][1];
 }
 
 module.exports = listCacheGet;
 
 
 /***/ }),
-/* 561 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 562 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Checks if a list cache value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf ListCache
  * @param {string} key The key of the entry to check.
@@ -18812,20 +18821,20 @@ var assocIndexOf = __webpack_require__(1
 function listCacheHas(key) {
   return assocIndexOf(this.__data__, key) > -1;
 }
 
 module.exports = listCacheHas;
 
 
 /***/ }),
-/* 562 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var assocIndexOf = __webpack_require__(135);
+/* 563 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var assocIndexOf = __webpack_require__(134);
 
 /**
  * Sets the list cache `key` to `value`.
  *
  * @private
  * @name set
  * @memberOf ListCache
  * @param {string} key The key of the value to set.
@@ -18844,20 +18853,20 @@ function listCacheSet(key, value) {
   }
   return this;
 }
 
 module.exports = listCacheSet;
 
 
 /***/ }),
-/* 563 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var ListCache = __webpack_require__(134);
+/* 564 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(133);
 
 /**
  * Removes all key-value entries from the stack.
  *
  * @private
  * @name clear
  * @memberOf Stack
  */
@@ -18865,17 +18874,17 @@ function stackClear() {
   this.__data__ = new ListCache;
   this.size = 0;
 }
 
 module.exports = stackClear;
 
 
 /***/ }),
-/* 564 */
+/* 565 */
 /***/ (function(module, exports) {
 
 /**
  * Removes `key` and its value from the stack.
  *
  * @private
  * @name delete
  * @memberOf Stack
@@ -18889,17 +18898,17 @@ function stackDelete(key) {
   this.size = data.size;
   return result;
 }
 
 module.exports = stackDelete;
 
 
 /***/ }),
-/* 565 */
+/* 566 */
 /***/ (function(module, exports) {
 
 /**
  * Gets the stack value for `key`.
  *
  * @private
  * @name get
  * @memberOf Stack
@@ -18909,17 +18918,17 @@ module.exports = stackDelete;
 function stackGet(key) {
   return this.__data__.get(key);
 }
 
 module.exports = stackGet;
 
 
 /***/ }),
-/* 566 */
+/* 567 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if a stack value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf Stack
@@ -18929,20 +18938,20 @@ module.exports = stackGet;
 function stackHas(key) {
   return this.__data__.has(key);
 }
 
 module.exports = stackHas;
 
 
 /***/ }),
-/* 567 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var ListCache = __webpack_require__(134),
+/* 568 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ListCache = __webpack_require__(133),
     Map = __webpack_require__(241),
     MapCache = __webpack_require__(242);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * Sets the stack `key` to `value`.
@@ -18969,23 +18978,23 @@ function stackSet(key, value) {
   this.size = data.size;
   return this;
 }
 
 module.exports = stackSet;
 
 
 /***/ }),
-/* 568 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isFunction = __webpack_require__(309),
-    isMasked = __webpack_require__(569),
+/* 569 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isFunction = __webpack_require__(311),
+    isMasked = __webpack_require__(570),
     isObject = __webpack_require__(55),
-    toSource = __webpack_require__(310);
+    toSource = __webpack_require__(312);
 
 /**
  * Used to match `RegExp`
  * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  */
 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
 
 /** Used to detect host constructors (Safari). */
@@ -19022,20 +19031,20 @@ function baseIsNative(value) {
   var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
   return pattern.test(toSource(value));
 }
 
 module.exports = baseIsNative;
 
 
 /***/ }),
-/* 569 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var coreJsData = __webpack_require__(570);
+/* 570 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var coreJsData = __webpack_require__(571);
 
 /** Used to detect methods masquerading as native. */
 var maskSrcKey = (function() {
   var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
   return uid ? ('Symbol(src)_1.' + uid) : '';
 }());
 
 /**
@@ -19048,29 +19057,29 @@ var maskSrcKey = (function() {
 function isMasked(func) {
   return !!maskSrcKey && (maskSrcKey in func);
 }
 
 module.exports = isMasked;
 
 
 /***/ }),
-/* 570 */
+/* 571 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var root = __webpack_require__(21);
 
 /** Used to detect overreaching core-js shims. */
 var coreJsData = root['__core-js_shared__'];
 
 module.exports = coreJsData;
 
 
 /***/ }),
-/* 571 */
+/* 572 */
 /***/ (function(module, exports) {
 
 /**
  * Gets the value at `key` of `object`.
  *
  * @private
  * @param {Object} [object] The object to query.
  * @param {string} key The key of the property to get.
@@ -19079,21 +19088,21 @@ module.exports = coreJsData;
 function getValue(object, key) {
   return object == null ? undefined : object[key];
 }
 
 module.exports = getValue;
 
 
 /***/ }),
-/* 572 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Hash = __webpack_require__(573),
-    ListCache = __webpack_require__(134),
+/* 573 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Hash = __webpack_require__(574),
+    ListCache = __webpack_require__(133),
     Map = __webpack_require__(241);
 
 /**
  * Removes all key-value entries from the map.
  *
  * @private
  * @name clear
  * @memberOf MapCache
@@ -19106,24 +19115,24 @@ function mapCacheClear() {
     'string': new Hash
   };
 }
 
 module.exports = mapCacheClear;
 
 
 /***/ }),
-/* 573 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var hashClear = __webpack_require__(574),
-    hashDelete = __webpack_require__(575),
-    hashGet = __webpack_require__(576),
-    hashHas = __webpack_require__(577),
-    hashSet = __webpack_require__(578);
+/* 574 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var hashClear = __webpack_require__(575),
+    hashDelete = __webpack_require__(576),
+    hashGet = __webpack_require__(577),
+    hashHas = __webpack_require__(578),
+    hashSet = __webpack_require__(579);
 
 /**
  * Creates a hash object.
  *
  * @private
  * @constructor
  * @param {Array} [entries] The key-value pairs to cache.
  */
@@ -19144,20 +19153,20 @@ Hash.prototype['delete'] = hashDelete;
 Hash.prototype.get = hashGet;
 Hash.prototype.has = hashHas;
 Hash.prototype.set = hashSet;
 
 module.exports = Hash;
 
 
 /***/ }),
-/* 574 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 575 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /**
  * Removes all key-value entries from the hash.
  *
  * @private
  * @name clear
  * @memberOf Hash
  */
@@ -19165,17 +19174,17 @@ function hashClear() {
   this.__data__ = nativeCreate ? nativeCreate(null) : {};
   this.size = 0;
 }
 
 module.exports = hashClear;
 
 
 /***/ }),
-/* 575 */
+/* 576 */
 /***/ (function(module, exports) {
 
 /**
  * Removes `key` and its value from the hash.
  *
  * @private
  * @name delete
  * @memberOf Hash
@@ -19188,20 +19197,20 @@ function hashDelete(key) {
   this.size -= result ? 1 : 0;
   return result;
 }
 
 module.exports = hashDelete;
 
 
 /***/ }),
-/* 576 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 577 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
@@ -19224,20 +19233,20 @@ function hashGet(key) {
   }
   return hasOwnProperty.call(data, key) ? data[key] : undefined;
 }
 
 module.exports = hashGet;
 
 
 /***/ }),
-/* 577 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 578 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -19253,20 +19262,20 @@ function hashHas(key) {
   var data = this.__data__;
   return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
 }
 
 module.exports = hashHas;
 
 
 /***/ }),
-/* 578 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var nativeCreate = __webpack_require__(137);
+/* 579 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var nativeCreate = __webpack_require__(136);
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /**
  * Sets the hash `key` to `value`.
  *
  * @private
@@ -19282,20 +19291,20 @@ function hashSet(key, value) {
   data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
   return this;
 }
 
 module.exports = hashSet;
 
 
 /***/ }),
-/* 579 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 580 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Removes `key` and its value from the map.
  *
  * @private
  * @name delete
  * @memberOf MapCache
  * @param {string} key The key of the value to remove.
@@ -19306,17 +19315,17 @@ function mapCacheDelete(key) {
   this.size -= result ? 1 : 0;
   return result;
 }
 
 module.exports = mapCacheDelete;
 
 
 /***/ }),
-/* 580 */
+/* 581 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if `value` is suitable for use as unique object key.
  *
  * @private
  * @param {*} value The value to check.
  * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
@@ -19327,20 +19336,20 @@ function isKeyable(value) {
     ? (value !== '__proto__')
     : (value === null);
 }
 
 module.exports = isKeyable;
 
 
 /***/ }),
-/* 581 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 582 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Gets the map value for `key`.
  *
  * @private
  * @name get
  * @memberOf MapCache
  * @param {string} key The key of the value to get.
@@ -19349,20 +19358,20 @@ var getMapData = __webpack_require__(138
 function mapCacheGet(key) {
   return getMapData(this, key).get(key);
 }
 
 module.exports = mapCacheGet;
 
 
 /***/ }),
-/* 582 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 583 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Checks if a map value for `key` exists.
  *
  * @private
  * @name has
  * @memberOf MapCache
  * @param {string} key The key of the entry to check.
@@ -19371,20 +19380,20 @@ var getMapData = __webpack_require__(138
 function mapCacheHas(key) {
   return getMapData(this, key).has(key);
 }
 
 module.exports = mapCacheHas;
 
 
 /***/ }),
-/* 583 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getMapData = __webpack_require__(138);
+/* 584 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getMapData = __webpack_require__(137);
 
 /**
  * Sets the map `key` to `value`.
  *
  * @private
  * @name set
  * @memberOf MapCache
  * @param {string} key The key of the value to set.
@@ -19399,17 +19408,17 @@ function mapCacheSet(key, value) {
   this.size += data.size == size ? 0 : 1;
   return this;
 }
 
 module.exports = mapCacheSet;
 
 
 /***/ }),
-/* 584 */
+/* 585 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.forEach` for arrays without support for
  * iteratee shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -19427,38 +19436,38 @@ function arrayEach(array, iteratee) {
   }
   return array;
 }
 
 module.exports = arrayEach;
 
 
 /***/ }),
-/* 585 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64);
+/* 586 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65);
 
 var defineProperty = (function() {
   try {
     var func = getNative(Object, 'defineProperty');
     func({}, '', {});
     return func;
   } catch (e) {}
 }());
 
 module.exports = defineProperty;
 
 
 /***/ }),
-/* 586 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    keys = __webpack_require__(140);
+/* 587 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    keys = __webpack_require__(139);
 
 /**
  * The base implementation of `_.assign` without support for multiple sources
  * or `customizer` functions.
  *
  * @private
  * @param {Object} object The destination object.
  * @param {Object} source The source object.
@@ -19467,17 +19476,17 @@ var copyObject = __webpack_require__(139
 function baseAssign(object, source) {
   return object && copyObject(source, keys(source), object);
 }
 
 module.exports = baseAssign;
 
 
 /***/ }),
-/* 587 */
+/* 588 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.times` without support for iteratee shorthands
  * or max array length checks.
  *
  * @private
  * @param {number} n The number of times to invoke `iteratee`.
@@ -19493,17 +19502,17 @@ function baseTimes(n, iteratee) {
   }
   return result;
 }
 
 module.exports = baseTimes;
 
 
 /***/ }),
-/* 588 */
+/* 589 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]';
 
@@ -19517,17 +19526,17 @@ var argsTag = '[object Arguments]';
 function baseIsArguments(value) {
   return isObjectLike(value) && baseGetTag(value) == argsTag;
 }
 
 module.exports = baseIsArguments;
 
 
 /***/ }),
-/* 589 */
+/* 590 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns `false`.
  *
  * @static
  * @memberOf _
  * @since 4.13.0
@@ -19541,17 +19550,17 @@ module.exports = baseIsArguments;
 function stubFalse() {
   return false;
 }
 
 module.exports = stubFalse;
 
 
 /***/ }),
-/* 590 */
+/* 591 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isLength = __webpack_require__(246),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
@@ -19607,33 +19616,33 @@ function baseIsTypedArray(value) {
   return isObjectLike(value) &&
     isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
 }
 
 module.exports = baseIsTypedArray;
 
 
 /***/ }),
-/* 591 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var overArg = __webpack_require__(315);
+/* 592 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var overArg = __webpack_require__(317);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeKeys = overArg(Object.keys, Object);
 
 module.exports = nativeKeys;
 
 
 /***/ }),
-/* 592 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    keysIn = __webpack_require__(316);
+/* 593 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    keysIn = __webpack_require__(318);
 
 /**
  * The base implementation of `_.assignIn` without support for multiple sources
  * or `customizer` functions.
  *
  * @private
  * @param {Object} object The destination object.
  * @param {Object} source The source object.
@@ -19642,22 +19651,22 @@ var copyObject = __webpack_require__(139
 function baseAssignIn(object, source) {
   return object && copyObject(source, keysIn(source), object);
 }
 
 module.exports = baseAssignIn;
 
 
 /***/ }),
-/* 593 */
+/* 594 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55),
-    isPrototype = __webpack_require__(144),
-    nativeKeysIn = __webpack_require__(594);
+    isPrototype = __webpack_require__(143),
+    nativeKeysIn = __webpack_require__(595);
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
 /**
@@ -19681,17 +19690,17 @@ function baseKeysIn(object) {
   }
   return result;
 }
 
 module.exports = baseKeysIn;
 
 
 /***/ }),
-/* 594 */
+/* 595 */
 /***/ (function(module, exports) {
 
 /**
  * This function is like
  * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  * except that it includes inherited enumerable properties.
  *
  * @private
@@ -19707,17 +19716,17 @@ function nativeKeysIn(object) {
   }
   return result;
 }
 
 module.exports = nativeKeysIn;
 
 
 /***/ }),
-/* 595 */
+/* 596 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(21);
 
 /** Detect free variable `exports`. */
 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
 
 /** Detect free variable `module`. */
@@ -19746,20 +19755,20 @@ function cloneBuffer(buffer, isDeep) {
       result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
 
   buffer.copy(result);
   return result;
 }
 
 module.exports = cloneBuffer;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module)))
-
-/***/ }),
-/* 596 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module)))
+
+/***/ }),
+/* 597 */
 /***/ (function(module, exports) {
 
 /**
  * Copies the values of `source` to `array`.
  *
  * @private
  * @param {Array} source The array to copy values from.
  * @param {Array} [array=[]] The array to copy values to.
@@ -19775,20 +19784,20 @@ function copyArray(source, array) {
   }
   return array;
 }
 
 module.exports = copyArray;
 
 
 /***/ }),
-/* 597 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
+/* 598 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
     getSymbols = __webpack_require__(247);
 
 /**
  * Copies own symbols of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy symbols from.
  * @param {Object} [object={}] The object to copy symbols to.
@@ -19797,17 +19806,17 @@ var copyObject = __webpack_require__(139
 function copySymbols(source, object) {
   return copyObject(source, getSymbols(source), object);
 }
 
 module.exports = copySymbols;
 
 
 /***/ }),
-/* 598 */
+/* 599 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.filter` for arrays without support for
  * iteratee shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -19828,21 +19837,21 @@ function arrayFilter(array, predicate) {
   }
   return result;
 }
 
 module.exports = arrayFilter;
 
 
 /***/ }),
-/* 599 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var copyObject = __webpack_require__(139),
-    getSymbolsIn = __webpack_require__(318);
+/* 600 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var copyObject = __webpack_require__(138),
+    getSymbolsIn = __webpack_require__(320);
 
 /**
  * Copies own and inherited symbols of `source` to `object`.
  *
  * @private
  * @param {Object} source The object to copy symbols from.
  * @param {Object} [object={}] The object to copy symbols to.
  * @returns {Object} Returns `object`.
@@ -19850,22 +19859,22 @@ var copyObject = __webpack_require__(139
 function copySymbolsIn(source, object) {
   return copyObject(source, getSymbolsIn(source), object);
 }
 
 module.exports = copySymbolsIn;
 
 
 /***/ }),
-/* 600 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGetAllKeys = __webpack_require__(321),
-    getSymbolsIn = __webpack_require__(318),
-    keysIn = __webpack_require__(316);
+/* 601 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGetAllKeys = __webpack_require__(323),
+    getSymbolsIn = __webpack_require__(320),
+    keysIn = __webpack_require__(318);
 
 /**
  * Creates an array of own and inherited enumerable property names and
  * symbols of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the array of property names and symbols.
@@ -19873,56 +19882,56 @@ var baseGetAllKeys = __webpack_require__
 function getAllKeysIn(object) {
   return baseGetAllKeys(object, keysIn, getSymbolsIn);
 }
 
 module.exports = getAllKeysIn;
 
 
 /***/ }),
-/* 601 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 602 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var DataView = getNative(root, 'DataView');
 
 module.exports = DataView;
 
 
 /***/ }),
-/* 602 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 603 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var Promise = getNative(root, 'Promise');
 
 module.exports = Promise;
 
 
 /***/ }),
-/* 603 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getNative = __webpack_require__(64),
+/* 604 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getNative = __webpack_require__(65),
     root = __webpack_require__(21);
 
 /* Built-in method references that are verified to be native. */
 var WeakMap = getNative(root, 'WeakMap');
 
 module.exports = WeakMap;
 
 
 /***/ }),
-/* 604 */
+/* 605 */
 /***/ (function(module, exports) {
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
 var hasOwnProperty = objectProto.hasOwnProperty;
 
@@ -19944,24 +19953,24 @@ function initCloneArray(array) {
   }
   return result;
 }
 
 module.exports = initCloneArray;
 
 
 /***/ }),
-/* 605 */
+/* 606 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249),
-    cloneDataView = __webpack_require__(606),
-    cloneRegExp = __webpack_require__(607),
-    cloneSymbol = __webpack_require__(608),
-    cloneTypedArray = __webpack_require__(609);
+    cloneDataView = __webpack_require__(607),
+    cloneRegExp = __webpack_require__(608),
+    cloneSymbol = __webpack_require__(609),
+    cloneTypedArray = __webpack_require__(610);
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
     dateTag = '[object Date]',
     mapTag = '[object Map]',
     numberTag = '[object Number]',
     regexpTag = '[object RegExp]',
     setTag = '[object Set]',
@@ -20027,17 +20036,17 @@ function initCloneByTag(object, tag, isD
       return cloneSymbol(object);
   }
 }
 
 module.exports = initCloneByTag;
 
 
 /***/ }),
-/* 606 */
+/* 607 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `dataView`.
  *
  * @private
@@ -20049,17 +20058,17 @@ function cloneDataView(dataView, isDeep)
   var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
   return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
 }
 
 module.exports = cloneDataView;
 
 
 /***/ }),
-/* 607 */
+/* 608 */
 /***/ (function(module, exports) {
 
 /** Used to match `RegExp` flags from their coerced string values. */
 var reFlags = /\w*$/;
 
 /**
  * Creates a clone of `regexp`.
  *
@@ -20072,17 +20081,17 @@ function cloneRegExp(regexp) {
   result.lastIndex = regexp.lastIndex;
   return result;
 }
 
 module.exports = cloneRegExp;
 
 
 /***/ }),
-/* 608 */
+/* 609 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Symbol = __webpack_require__(28);
 
 /** Used to convert symbols to primitives and strings. */
 var symbolProto = Symbol ? Symbol.prototype : undefined,
     symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
 
@@ -20096,17 +20105,17 @@ var symbolProto = Symbol ? Symbol.protot
 function cloneSymbol(symbol) {
   return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
 }
 
 module.exports = cloneSymbol;
 
 
 /***/ }),
-/* 609 */
+/* 610 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var cloneArrayBuffer = __webpack_require__(249);
 
 /**
  * Creates a clone of `typedArray`.
  *
  * @private
@@ -20118,22 +20127,22 @@ function cloneTypedArray(typedArray, isD
   var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
   return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
 }
 
 module.exports = cloneTypedArray;
 
 
 /***/ }),
-/* 610 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseCreate = __webpack_require__(611),
+/* 611 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseCreate = __webpack_require__(612),
     getPrototype = __webpack_require__(248),
-    isPrototype = __webpack_require__(144);
+    isPrototype = __webpack_require__(143);
 
 /**
  * Initializes an object clone.
  *
  * @private
  * @param {Object} object The object to clone.
  * @returns {Object} Returns the initialized clone.
  */
@@ -20142,17 +20151,17 @@ function initCloneObject(object) {
     ? baseCreate(getPrototype(object))
     : {};
 }
 
 module.exports = initCloneObject;
 
 
 /***/ }),
-/* 611 */
+/* 612 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55);
 
 /** Built-in value references. */
 var objectCreate = Object.create;
 
 /**
@@ -20178,22 +20187,22 @@ var baseCreate = (function() {
     return result;
   };
 }());
 
 module.exports = baseCreate;
 
 
 /***/ }),
-/* 612 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsMap = __webpack_require__(613),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 613 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMap = __webpack_require__(614),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsMap = nodeUtil && nodeUtil.isMap;
 
 /**
  * Checks if `value` is classified as a `Map` object.
  *
  * @static
@@ -20211,20 +20220,20 @@ var nodeIsMap = nodeUtil && nodeUtil.isM
  * // => false
  */
 var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
 
 module.exports = isMap;
 
 
 /***/ }),
-/* 613 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getTag = __webpack_require__(114),
+/* 614 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(113),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var mapTag = '[object Map]';
 
 /**
  * The base implementation of `_.isMap` without Node.js optimizations.
  *
@@ -20235,22 +20244,22 @@ var mapTag = '[object Map]';
 function baseIsMap(value) {
   return isObjectLike(value) && getTag(value) == mapTag;
 }
 
 module.exports = baseIsMap;
 
 
 /***/ }),
-/* 614 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsSet = __webpack_require__(615),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 615 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsSet = __webpack_require__(616),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsSet = nodeUtil && nodeUtil.isSet;
 
 /**
  * Checks if `value` is classified as a `Set` object.
  *
  * @static
@@ -20268,20 +20277,20 @@ var nodeIsSet = nodeUtil && nodeUtil.isS
  * // => false
  */
 var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
 
 module.exports = isSet;
 
 
 /***/ }),
-/* 615 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getTag = __webpack_require__(114),
+/* 616 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getTag = __webpack_require__(113),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var setTag = '[object Set]';
 
 /**
  * The base implementation of `_.isSet` without Node.js optimizations.
  *
@@ -20292,17 +20301,17 @@ var setTag = '[object Set]';
 function baseIsSet(value) {
   return isObjectLike(value) && getTag(value) == setTag;
 }
 
 module.exports = baseIsSet;
 
 
 /***/ }),
-/* 616 */
+/* 617 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 let fastProto = null;
 
 // Creates an object with permanently fast properties in V8. See Toon Verwaest's
@@ -20326,17 +20335,17 @@ function FastObject(o) {
 FastObject();
 
 module.exports = function toFastproperties(o) {
 	return FastObject(o);
 };
 
 
 /***/ }),
-/* 617 */
+/* 618 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20357,25 +20366,25 @@ module.exports = function toFastproperti
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 
 (function () {
     'use strict';
 
-    exports.ast = __webpack_require__(618);
-    exports.code = __webpack_require__(324);
-    exports.keyword = __webpack_require__(619);
+    exports.ast = __webpack_require__(619);
+    exports.code = __webpack_require__(326);
+    exports.keyword = __webpack_require__(620);
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 618 */
+/* 619 */
 /***/ (function(module, exports) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20515,17 +20524,17 @@ module.exports = function toFastproperti
 
         trailingStatement: trailingStatement
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 619 */
+/* 620 */
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
   Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
 
@@ -20545,17 +20554,17 @@ module.exports = function toFastproperti
   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 (function () {
     'use strict';
 
-    var code = __webpack_require__(324);
+    var code = __webpack_require__(326);
 
     function isStrictModeReservedWordES6(id) {
         switch (id) {
         case 'implements':
         case 'interface':
         case 'package':
         case 'private':
         case 'protected':
@@ -20686,17 +20695,17 @@ module.exports = function toFastproperti
         isIdentifierES5: isIdentifierES5,
         isIdentifierES6: isIdentifierES6
     };
 }());
 /* vim: set sw=4 ts=4 et tw=80 : */
 
 
 /***/ }),
-/* 620 */
+/* 621 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21077,17 +21086,17 @@ defineInterfaceishType("InterfaceDeclara
     kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
   }
 });
 (0, _utils.default)("VoidTypeAnnotation", {
   aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
 });
 
 /***/ }),
-/* 621 */
+/* 622 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21243,17 +21252,17 @@ function _interopRequireWildcard(obj) { 
 (0, _utils.default)("JSXOpeningFragment", {
   aliases: ["JSX", "Immutable"]
 });
 (0, _utils.default)("JSXClosingFragment", {
   aliases: ["JSX", "Immutable"]
 });
 
 /***/ }),
-/* 622 */
+/* 623 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -21267,17 +21276,17 @@ function _interopRequireWildcard(obj) { 
   fields: {
     expression: {
       validate: (0, _utils.assertNodeType)("Expression")
     }
   }
 });
 
 /***/ }),
-/* 623 */
+/* 624 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 var _es = __webpack_require__(253);
@@ -21443,17 +21452,17 @@ function _interopRequireWildcard(obj) { 
     value: {
       validate: (0, _utils.assertValueType)("string")
     }
   },
   aliases: ["Expression", "Pureish", "Literal", "Immutable"]
 });
 
 /***/ }),
-/* 624 */
+/* 625 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _utils = _interopRequireWildcard(__webpack_require__(56));
 
 var _core = __webpack_require__(250);
@@ -21837,40 +21846,40 @@ const unionOrIntersection = {
     default: {
       validate: (0, _utils.assertNodeType)("TSType"),
       optional: true
     }
   }
 });
 
 /***/ }),
-/* 625 */
+/* 626 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = assertNode;
 
-var _isNode = _interopRequireDefault(__webpack_require__(326));
+var _isNode = _interopRequireDefault(__webpack_require__(328));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function assertNode(node) {
   if (!(0, _isNode.default)(node)) {
     const type = node && node.type || JSON.stringify(node);
     throw new TypeError(`Not a valid node of type "${type}"`);
   }
 }
 
 /***/ }),
-/* 626 */
+/* 627 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23180,28 +23189,28 @@ function assertRestProperty(node, opts) 
 }
 
 function assertSpreadProperty(node, opts) {
   console.trace("The node type SpreadProperty has been renamed to SpreadElement");
   assert("SpreadProperty", node, opts);
 }
 
 /***/ }),
-/* 627 */
+/* 628 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = createTypeAnnotationBasedOnTypeof;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function createTypeAnnotationBasedOnTypeof(type) {
   if (type === "string") {
     return (0, _generated.stringTypeAnnotation)();
   } else if (type === "number") {
     return (0, _generated.numberTypeAnnotation)();
   } else if (type === "undefined") {
     return (0, _generated.voidTypeAnnotation)();
@@ -23214,113 +23223,113 @@ function createTypeAnnotationBasedOnType
   } else if (type === "symbol") {
     return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol"));
   } else {
     throw new Error("Invalid typeof value");
   }
 }
 
 /***/ }),
-/* 628 */
+/* 629 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = createUnionTypeAnnotation;
 
-var _generated = __webpack_require__(40);
-
-var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(327));
+var _generated = __webpack_require__(39);
+
+var _removeTypeDuplicates = _interopRequireDefault(__webpack_require__(329));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function createUnionTypeAnnotation(types) {
   const flattened = (0, _removeTypeDuplicates.default)(types);
 
   if (flattened.length === 1) {
     return flattened[0];
   } else {
     return (0, _generated.unionTypeAnnotation)(flattened);
   }
 }
 
 /***/ }),
-/* 629 */
+/* 630 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cloneDeep;
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function cloneDeep(node) {
   return (0, _cloneNode.default)(node);
 }
 
 /***/ }),
-/* 630 */
+/* 631 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = cloneWithoutLoc;
 
-var _clone = _interopRequireDefault(__webpack_require__(328));
+var _clone = _interopRequireDefault(__webpack_require__(330));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function cloneWithoutLoc(node) {
   const newNode = (0, _clone.default)(node);
   newNode.loc = null;
   return newNode;
 }
 
 /***/ }),
-/* 631 */
+/* 632 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = addComment;
 
-var _addComments = _interopRequireDefault(__webpack_require__(329));
+var _addComments = _interopRequireDefault(__webpack_require__(331));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function addComment(node, type, content, line) {
   return (0, _addComments.default)(node, type, [{
     type: line ? "CommentLine" : "CommentBlock",
     value: content
   }]);
 }
 
 /***/ }),
-/* 632 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseUniq = __webpack_require__(633);
+/* 633 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseUniq = __webpack_require__(634);
 
 /**
  * Creates a duplicate-free version of an array, using
  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  * for equality comparisons, in which only the first occurrence of each element
  * is kept. The order of result values is determined by the order they occur
  * in the array.
  *
@@ -23338,24 +23347,24 @@ var baseUniq = __webpack_require__(633);
 function uniq(array) {
   return (array && array.length) ? baseUniq(array) : [];
 }
 
 module.exports = uniq;
 
 
 /***/ }),
-/* 633 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var SetCache = __webpack_require__(331),
-    arrayIncludes = __webpack_require__(636),
-    arrayIncludesWith = __webpack_require__(640),
-    cacheHas = __webpack_require__(332),
-    createSet = __webpack_require__(641),
+/* 634 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var SetCache = __webpack_require__(333),
+    arrayIncludes = __webpack_require__(637),
+    arrayIncludesWith = __webpack_require__(641),
+    cacheHas = __webpack_require__(334),
+    createSet = __webpack_require__(642),
     setToArray = __webpack_require__(256);
 
 /** Used as the size to enable large array optimizations. */
 var LARGE_ARRAY_SIZE = 200;
 
 /**
  * The base implementation of `_.uniqBy` without support for iteratee shorthands.
  *
@@ -23416,17 +23425,17 @@ function baseUniq(array, iteratee, compa
   }
   return result;
 }
 
 module.exports = baseUniq;
 
 
 /***/ }),
-/* 634 */
+/* 635 */
 /***/ (function(module, exports) {
 
 /** Used to stand-in for `undefined` hash values. */
 var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 /**
  * Adds `value` to the array cache.
  *
@@ -23441,17 +23450,17 @@ function setCacheAdd(value) {
   this.__data__.set(value, HASH_UNDEFINED);
   return this;
 }
 
 module.exports = setCacheAdd;
 
 
 /***/ }),
-/* 635 */
+/* 636 */
 /***/ (function(module, exports) {
 
 /**
  * Checks if `value` is in the array cache.
  *
  * @private
  * @name has
  * @memberOf SetCache
@@ -23461,20 +23470,20 @@ module.exports = setCacheAdd;
 function setCacheHas(value) {
   return this.__data__.has(value);
 }
 
 module.exports = setCacheHas;
 
 
 /***/ }),
-/* 636 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIndexOf = __webpack_require__(637);
+/* 637 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIndexOf = __webpack_require__(638);
 
 /**
  * A specialized version of `_.includes` for arrays without support for
  * specifying an index to search from.
  *
  * @private
  * @param {Array} [array] The array to inspect.
  * @param {*} target The value to search for.
@@ -23484,22 +23493,22 @@ function arrayIncludes(array, value) {
   var length = array == null ? 0 : array.length;
   return !!length && baseIndexOf(array, value, 0) > -1;
 }
 
 module.exports = arrayIncludes;
 
 
 /***/ }),
-/* 637 */
+/* 638 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIsNaN = __webpack_require__(638),
-    strictIndexOf = __webpack_require__(639);
+    baseIsNaN = __webpack_require__(639),
+    strictIndexOf = __webpack_require__(640);
 
 /**
  * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
  *
  * @private
  * @param {Array} array The array to inspect.
  * @param {*} value The value to search for.
  * @param {number} fromIndex The index to search from.
@@ -23510,17 +23519,17 @@ function baseIndexOf(array, value, fromI
     ? strictIndexOf(array, value, fromIndex)
     : baseFindIndex(array, baseIsNaN, fromIndex);
 }
 
 module.exports = baseIndexOf;
 
 
 /***/ }),
-/* 638 */
+/* 639 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.isNaN` without support for number objects.
  *
  * @private
  * @param {*} value The value to check.
  * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
@@ -23528,17 +23537,17 @@ module.exports = baseIndexOf;
 function baseIsNaN(value) {
   return value !== value;
 }
 
 module.exports = baseIsNaN;
 
 
 /***/ }),
-/* 639 */
+/* 640 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.indexOf` which performs strict equality
  * comparisons of values, i.e. `===`.
  *
  * @private
  * @param {Array} array The array to inspect.
@@ -23557,17 +23566,17 @@ function strictIndexOf(array, value, fro
   }
   return -1;
 }
 
 module.exports = strictIndexOf;
 
 
 /***/ }),
-/* 640 */
+/* 641 */
 /***/ (function(module, exports) {
 
 /**
  * This function is like `arrayIncludes` except that it accepts a comparator.
  *
  * @private
  * @param {Array} [array] The array to inspect.
  * @param {*} target The value to search for.
@@ -23585,21 +23594,21 @@ function arrayIncludesWith(array, value,
   }
   return false;
 }
 
 module.exports = arrayIncludesWith;
 
 
 /***/ }),
-/* 641 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var Set = __webpack_require__(322),
-    noop = __webpack_require__(642),
+/* 642 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Set = __webpack_require__(324),
+    noop = __webpack_require__(643),
     setToArray = __webpack_require__(256);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0;
 
 /**
  * Creates a set object of `values`.
  *
@@ -23610,17 +23619,17 @@ var INFINITY = 1 / 0;
 var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
   return new Set(values);
 };
 
 module.exports = createSet;
 
 
 /***/ }),
-/* 642 */
+/* 643 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns `undefined`.
  *
  * @static
  * @memberOf _
  * @since 2.3.0
@@ -23633,39 +23642,39 @@ module.exports = createSet;
 function noop() {
   // No operation performed.
 }
 
 module.exports = noop;
 
 
 /***/ }),
-/* 643 */
+/* 644 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = removeComments;
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function removeComments(node) {
   _constants.COMMENT_KEYS.forEach(key => {
     node[key] = null;
   });
 
   return node;
 }
 
 /***/ }),
-/* 644 */
+/* 645 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23754,80 +23763,80 @@ exports.JSX_TYPES = JSX_TYPES;
 const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"];
 exports.PRIVATE_TYPES = PRIVATE_TYPES;
 const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"];
 exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES;
 const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"];
 exports.TSTYPE_TYPES = TSTYPE_TYPES;
 
 /***/ }),
-/* 645 */
+/* 646 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = ensureBlock;
 
-var _toBlock = _interopRequireDefault(__webpack_require__(336));
+var _toBlock = _interopRequireDefault(__webpack_require__(338));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function ensureBlock(node, key = "body") {
   return node[key] = (0, _toBlock.default)(node[key], node);
 }
 
 /***/ }),
-/* 646 */
+/* 647 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toBindingIdentifierName;
 
-var _toIdentifier = _interopRequireDefault(__webpack_require__(337));
+var _toIdentifier = _interopRequireDefault(__webpack_require__(339));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toBindingIdentifierName(name) {
   name = (0, _toIdentifier.default)(name);
   if (name === "eval" || name === "arguments") name = "_" + name;
   return name;
 }
 
 /***/ }),
-/* 647 */
+/* 648 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toComputedKey;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toComputedKey(node, key = node.key || node.property) {
   if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name);
   return key;
 }
 
 /***/ }),
-/* 648 */
+/* 649 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -23853,32 +23862,32 @@ function toExpression(node) {
   if (!(0, _generated.isExpression)(node)) {
     throw new Error(`cannot turn ${node.type} to an expression`);
   }
 
   return node;
 }
 
 /***/ }),
-/* 649 */
+/* 650 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toKeyAlias;
 
 var _generated = __webpack_require__(19);
 
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
-
-var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(338));
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
+
+var _removePropertiesDeep = _interopRequireDefault(__webpack_require__(340));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toKeyAlias(node, key = node.key) {
   let alias;
 
   if (node.kind === "method") {
     return toKeyAlias.increment() + "";
@@ -23907,28 +23916,28 @@ toKeyAlias.increment = function () {
   if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
     return toKeyAlias.uid = 0;
   } else {
     return toKeyAlias.uid++;
   }
 };
 
 /***/ }),
-/* 650 */
+/* 651 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toSequenceExpression;
 
-var _gatherSequenceExpressions = _interopRequireDefault(__webpack_require__(651));
+var _gatherSequenceExpressions = _interopRequireDefault(__webpack_require__(652));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function toSequenceExpression(nodes, scope) {
   if (!nodes || !nodes.length) return;
   const declars = [];
   const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars);
   if (!result) return;
@@ -23936,34 +23945,34 @@ function toSequenceExpression(nodes, sco
   for (const declar of declars) {
     scope.push(declar);
   }
 
   return result;
 }
 
 /***/ }),
-/* 651 */
+/* 652 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = gatherSequenceExpressions;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
-
-var _cloneNode = _interopRequireDefault(__webpack_require__(116));
+var _generated2 = __webpack_require__(39);
+
+var _cloneNode = _interopRequireDefault(__webpack_require__(115));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function gatherSequenceExpressions(nodes, scope, declars) {
   const exprs = [];
   let ensureLastUndefined = true;
 
   for (const node of nodes) {
@@ -24015,30 +24024,30 @@ function gatherSequenceExpressions(nodes
   if (exprs.length === 1) {
     return exprs[0];
   } else {
     return (0, _generated2.sequenceExpression)(exprs);
   }
 }
 
 /***/ }),
-/* 652 */
+/* 653 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = toStatement;
 
 var _generated = __webpack_require__(19);
 
-var _generated2 = __webpack_require__(40);
+var _generated2 = __webpack_require__(39);
 
 function toStatement(node, ignore) {
   if ((0, _generated.isStatement)(node)) {
     return node;
   }
 
   let mustHaveId = false;
   let newType;
@@ -24065,50 +24074,50 @@ function toStatement(node, ignore) {
     }
   }
 
   node.type = newType;
   return node;
 }
 
 /***/ }),
-/* 653 */
+/* 654 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = valueToNode;
 
 function _isPlainObject() {
-  const data = _interopRequireDefault(__webpack_require__(654));
+  const data = _interopRequireDefault(__webpack_require__(655));
 
   _isPlainObject = function () {
     return data;
   };
 
   return data;
 }
 
 function _isRegExp() {
-  const data = _interopRequireDefault(__webpack_require__(655));
+  const data = _interopRequireDefault(__webpack_require__(656));
 
   _isRegExp = function () {
     return data;
   };
 
   return data;
 }
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
-
-var _generated = __webpack_require__(40);
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
+
+var _generated = __webpack_require__(39);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function valueToNode(value) {
   if (value === undefined) {
     return (0, _generated.identifier)("undefined");
   }
 
@@ -24175,17 +24184,17 @@ function valueToNode(value) {
 
     return (0, _generated.objectExpression)(props);
   }
 
   throw new Error("don't know how to turn this value into a node");
 }
 
 /***/ }),
-/* 654 */
+/* 655 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     getPrototype = __webpack_require__(248),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var objectTag = '[object Object]';
@@ -24243,22 +24252,22 @@ function isPlainObject(value) {
   return typeof Ctor == 'function' && Ctor instanceof Ctor &&
     funcToString.call(Ctor) == objectCtorString;
 }
 
 module.exports = isPlainObject;
 
 
 /***/ }),
-/* 655 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsRegExp = __webpack_require__(656),
-    baseUnary = __webpack_require__(142),
-    nodeUtil = __webpack_require__(143);
+/* 656 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsRegExp = __webpack_require__(657),
+    baseUnary = __webpack_require__(141),
+    nodeUtil = __webpack_require__(142);
 
 /* Node.js helper references. */
 var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
 
 /**
  * Checks if `value` is classified as a `RegExp` object.
  *
  * @static
@@ -24276,17 +24285,17 @@ var nodeIsRegExp = nodeUtil && nodeUtil.
  * // => false
  */
 var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
 
 module.exports = isRegExp;
 
 
 /***/ }),
-/* 656 */
+/* 657 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseGetTag = __webpack_require__(35),
     isObjectLike = __webpack_require__(29);
 
 /** `Object#toString` result references. */
 var regexpTag = '[object RegExp]';
 
@@ -24300,51 +24309,51 @@ var regexpTag = '[object RegExp]';
 function baseIsRegExp(value) {
   return isObjectLike(value) && baseGetTag(value) == regexpTag;
 }
 
 module.exports = baseIsRegExp;
 
 
 /***/ }),
-/* 657 */
+/* 658 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = appendToMemberExpression;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function appendToMemberExpression(member, append, computed = false) {
   member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed);
   member.property = append;
   member.computed = !!computed;
   return member;
 }
 
 /***/ }),
-/* 658 */
+/* 659 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = inherits;
 
-var _constants = __webpack_require__(65);
-
-var _inheritsComments = _interopRequireDefault(__webpack_require__(334));
+var _constants = __webpack_require__(66);
+
+var _inheritsComments = _interopRequireDefault(__webpack_require__(336));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function inherits(child, parent) {
   if (!child || !parent) return child;
 
   for (const key of _constants.INHERIT_KEYS.optional) {
     if (child[key] == null) {
@@ -24360,56 +24369,56 @@ function inherits(child, parent) {
     child[key] = parent[key];
   }
 
   (0, _inheritsComments.default)(child, parent);
   return child;
 }
 
 /***/ }),
-/* 659 */
+/* 660 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = prependToMemberExpression;
 
-var _generated = __webpack_require__(40);
+var _generated = __webpack_require__(39);
 
 function prependToMemberExpression(member, prepend) {
   member.object = (0, _generated.memberExpression)(prepend, member.object);
   return member;
 }
 
 /***/ }),
-/* 660 */
+/* 661 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = getOuterBindingIdentifiers;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function getOuterBindingIdentifiers(node, duplicates) {
   return (0, _getBindingIdentifiers.default)(node, duplicates, true);
 }
 
 /***/ }),
-/* 661 */
+/* 662 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24460,28 +24469,28 @@ function traverseSimpleImpl(node, enter,
       ancestors.pop();
     }
   }
 
   if (exit) exit(node, ancestors, state);
 }
 
 /***/ }),
-/* 662 */
+/* 663 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isBinding;
 
-var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(146));
+var _getBindingIdentifiers = _interopRequireDefault(__webpack_require__(145));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isBinding(node, parent) {
   const keys = _getBindingIdentifiers.default.keys[parent.type];
 
   if (keys) {
     for (let i = 0; i < keys.length; i++) {
@@ -24495,39 +24504,39 @@ function isBinding(node, parent) {
       }
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 663 */
+/* 664 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isBlockScoped;
 
 var _generated = __webpack_require__(19);
 
-var _isLet = _interopRequireDefault(__webpack_require__(341));
+var _isLet = _interopRequireDefault(__webpack_require__(343));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function isBlockScoped(node) {
   return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node);
 }
 
 /***/ }),
-/* 664 */
+/* 665 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24549,17 +24558,17 @@ function isImmutable(node) {
       return false;
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 665 */
+/* 666 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24616,17 +24625,17 @@ function isNodesEquivalent(a, b) {
       return false;
     }
   }
 
   return true;
 }
 
 /***/ }),
-/* 666 */
+/* 667 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24712,17 +24721,17 @@ function isReferenced(node, parent) {
     case "ObjectTypeProperty":
       return parent.key !== node;
   }
 
   return true;
 }
 
 /***/ }),
-/* 667 */
+/* 668 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24742,17 +24751,17 @@ function isScope(node, parent) {
   })) {
     return false;
   }
 
   return (0, _generated.isScopable)(node);
 }
 
 /***/ }),
-/* 668 */
+/* 669 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -24762,80 +24771,80 @@ var _generated = __webpack_require__(19)
 
 function isSpecifierDefault(specifier) {
   return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, {
     name: "default"
   });
 }
 
 /***/ }),
-/* 669 */
+/* 670 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isValidES3Identifier;
 
-var _isValidIdentifier = _interopRequireDefault(__webpack_require__(115));
+var _isValidIdentifier = _interopRequireDefault(__webpack_require__(114));
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
 
 function isValidES3Identifier(name) {
   return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
 }
 
 /***/ }),
-/* 670 */
+/* 671 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = isVar;
 
 var _generated = __webpack_require__(19);
 
-var _constants = __webpack_require__(65);
+var _constants = __webpack_require__(66);
 
 function isVar(node) {
   return (0, _generated.isVariableDeclaration)(node, {
     kind: "var"
   }) && !node[_constants.BLOCK_SCOPED_SYMBOL];
 }
 
 /***/ }),
-/* 671 */
+/* 672 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseScriptTags = exports.parseScripts = exports.parseScript = exports.getCandidateScriptLocations = exports.generateWhitespace = exports.extractScriptTags = undefined;
 
 var _types = __webpack_require__(12);
 
 var types = _interopRequireWildcard(_types);
 
-var _babylon = __webpack_require__(672);
+var _babylon = __webpack_require__(673);
 
 var babylon = _interopRequireWildcard(_babylon);
 
-var _customParse = __webpack_require__(673);
+var _customParse = __webpack_require__(674);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function parseScript(_ref) {
   var source = _ref.source,
       line = _ref.line;
 
   // remove empty or only whitespace scripts
@@ -24881,17 +24890,17 @@ exports.default = parseScriptTags;
 exports.extractScriptTags = extractScriptTags;
 exports.generateWhitespace = _customParse.generateWhitespace;
 exports.getCandidateScriptLocations = _customParse.getCandidateScriptLocations;
 exports.parseScript = parseScript;
 exports.parseScripts = parseScripts;
 exports.parseScriptTags = parseScriptTags;
 
 /***/ }),
-/* 672 */
+/* 673 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
 function _AwaitValue(value) {
@@ -35055,32 +35064,32 @@ function getParserClass(pluginsFromOptio
 }
 
 exports.parse = parse;
 exports.parseExpression = parseExpression;
 exports.tokTypes = types;
 
 
 /***/ }),
-/* 673 */
+/* 674 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseScriptTags = exports.parseScripts = exports.getCandidateScriptLocations = exports.generateWhitespace = undefined;
 
 var _types = __webpack_require__(12);
 
 var types = _interopRequireWildcard(_types);
 
-var _parseScriptFragment = __webpack_require__(674);
+var _parseScriptFragment = __webpack_require__(675);
 
 var _parseScriptFragment2 = _interopRequireDefault(_parseScriptFragment);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
@@ -35199,17 +35208,17 @@ function parseScriptTags(source, parser)
 
 exports.default = parseScriptTags;
 exports.generateWhitespace = generateWhitespace;
 exports.getCandidateScriptLocations = getCandidateScriptLocations;
 exports.parseScripts = parseScripts;
 exports.parseScriptTags = parseScriptTags;
 
 /***/ }),
-/* 674 */
+/* 675 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -35357,17 +35366,17 @@ function parseFragment(str) {
 
   return null;
 }
 
 exports.default = parseFragment;
 exports.parseFragment = parseFragment;
 
 /***/ }),
-/* 675 */
+/* 676 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
 function _AwaitValue(value) {
@@ -45825,17 +45834,17 @@ function getParserClass(pluginsFromOptio
 }
 
 exports.parse = parse;
 exports.parseExpression = parseExpression;
 exports.tokTypes = types;
 
 
 /***/ }),
-/* 676 */
+/* 677 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -45912,62 +45921,62 @@ class SourceMap {
     });
   }
 
 }
 
 exports.default = SourceMap;
 
 /***/ }),
-/* 677 */
+/* 678 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
 function _isInteger() {
-  const data = _interopRequireDefault(__webpack_require__(678));
+  const data = _interopRequireDefault(__webpack_require__(679));
 
   _isInteger = function () {
     return data;
   };
 
   return data;
 }
 
 function _repeat() {
-  const data = _interopRequireDefault(__webpack_require__(681));
+  const data = _interopRequireDefault(__webpack_require__(682));
 
   _repeat = function () {
     return data;
   };
 
   return data;
 }
 
-var _buffer = _interopRequireDefault(__webpack_require__(684));
-
-var n = _interopRequireWildcard(__webpack_require__(345));
+var _buffer = _interopRequireDefault(__webpack_require__(685));
+
+var n = _interopRequireWildcard(__webpack_require__(347));
 
 function t() {
   const data = _interopRequireWildcard(__webpack_require__(12));
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var generatorFunctions = _interopRequireWildcard(__webpack_require__(688));
+var generatorFunctions = _interopRequireWildcard(__webpack_require__(689));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const SCIENTIFIC_NOTATION = /e/i;
 const ZERO_DECIMAL_INTEGER = /\.0+$/;
 const NON_DECIMAL_LITERAL = /^0[box]/;
@@ -46419,20 +46428,20 @@ exports.default = Printer;
 Object.assign(Printer.prototype, generatorFunctions);
 
 function commaSeparator() {
   this.token(",");
   this.space();
 }
 
 /***/ }),
-/* 678 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toInteger = __webpack_require__(149);
+/* 679 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(148);
 
 /**
  * Checks if `value` is an integer.
  *
  * **Note:** This method is based on
  * [`Number.isInteger`](https://mdn.io/Number/isInteger).
  *
  * @static
@@ -46458,20 +46467,20 @@ var toInteger = __webpack_require__(149)
 function isInteger(value) {
   return typeof value == 'number' && value == toInteger(value);
 }
 
 module.exports = isInteger;
 
 
 /***/ }),
-/* 679 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var toNumber = __webpack_require__(680);
+/* 680 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toNumber = __webpack_require__(681);
 
 /** Used as references for various `Number` constants. */
 var INFINITY = 1 / 0,
     MAX_INTEGER = 1.7976931348623157e+308;
 
 /**
  * Converts `value` to a finite number.
  *
@@ -46506,17 +46515,17 @@ function toFinite(value) {
   }
   return value === value ? value : 0;
 }
 
 module.exports = toFinite;
 
 
 /***/ }),
-/* 680 */
+/* 681 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var isObject = __webpack_require__(55),
     isSymbol = __webpack_require__(51);
 
 /** Used as references for various `Number` constants. */
 var NAN = 0 / 0;
 
@@ -46578,23 +46587,23 @@ function toNumber(value) {
     ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
     : (reIsBadHex.test(value) ? NAN : +value);
 }
 
 module.exports = toNumber;
 
 
 /***/ }),
-/* 681 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseRepeat = __webpack_require__(682),
-    isIterateeCall = __webpack_require__(683),
-    toInteger = __webpack_require__(149),
-    toString = __webpack_require__(69);
+/* 682 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseRepeat = __webpack_require__(683),
+    isIterateeCall = __webpack_require__(684),
+    toInteger = __webpack_require__(148),
+    toString = __webpack_require__(70);
 
 /**
  * Repeats the given string `n` times.
  *
  * @static
  * @memberOf _
  * @since 3.0.0
  * @category String
@@ -46621,17 +46630,17 @@ function repeat(string, n, guard) {
   }
   return baseRepeat(toString(string), n);
 }
 
 module.exports = repeat;
 
 
 /***/ }),
-/* 682 */
+/* 683 */
 /***/ (function(module, exports) {
 
 /** Used as references for various `Number` constants. */
 var MAX_SAFE_INTEGER = 9007199254740991;
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeFloor = Math.floor;
 
@@ -46662,21 +46671,21 @@ function baseRepeat(string, n) {
 
   return result;
 }
 
 module.exports = baseRepeat;
 
 
 /***/ }),
-/* 683 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var eq = __webpack_require__(136),
-    isArrayLike = __webpack_require__(145),
+/* 684 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var eq = __webpack_require__(135),
+    isArrayLike = __webpack_require__(144),
     isIndex = __webpack_require__(244),
     isObject = __webpack_require__(55);
 
 /**
  * Checks if the given arguments are from an iteratee call.
  *
  * @private
  * @param {*} value The potential iteratee value argument.
@@ -46698,29 +46707,29 @@ function isIterateeCall(value, index, ob
   }
   return false;
 }
 
 module.exports = isIterateeCall;
 
 
 /***/ }),
-/* 684 */
+/* 685 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
 
 function _trimRight() {
-  const data = _interopRequireDefault(__webpack_require__(685));
+  const data = _interopRequireDefault(__webpack_require__(686));
 
   _trimRight = function () {
     return data;
   };
 
   return data;
 }
 
@@ -46961,34 +46970,34 @@ class Buffer {
     return this._position.line + count;
   }
 
 }
 
 exports.default = Buffer;
 
 /***/ }),
-/* 685 */
+/* 686 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 module.exports = function (str) {
 	var tail = str.length;
 
 	while (/[\s\uFEFF\u00A0]/.test(str[tail - 1])) {
 		tail--;
 	}
 
 	return str.slice(0, tail);
 };
 
 
 /***/ }),
-/* 686 */
+/* 687 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47176,17 +47185,17 @@ exports.list = list;
   [type].concat(t().FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) {
     nodes[type] = function () {
       return amounts;
     };
   });
 });
 
 /***/ }),
-/* 687 */
+/* 688 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47420,87 +47429,87 @@ function isFirstInStatement(printStack, 
       return false;
     }
   }
 
   return false;
 }
 
 /***/ }),
-/* 688 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _templateLiterals = __webpack_require__(689);
+/* 689 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _templateLiterals = __webpack_require__(690);
 
 Object.keys(_templateLiterals).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _templateLiterals[key];
     }
   });
 });
 
-var _expressions = __webpack_require__(690);
+var _expressions = __webpack_require__(691);
 
 Object.keys(_expressions).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _expressions[key];
     }
   });
 });
 
-var _statements = __webpack_require__(691);
+var _statements = __webpack_require__(692);
 
 Object.keys(_statements).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _statements[key];
     }
   });
 });
 
-var _classes = __webpack_require__(692);
+var _classes = __webpack_require__(693);
 
 Object.keys(_classes).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _classes[key];
     }
   });
 });
 
-var _methods = __webpack_require__(693);
+var _methods = __webpack_require__(694);
 
 Object.keys(_methods).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _methods[key];
     }
   });
 });
 
-var _modules = __webpack_require__(346);
+var _modules = __webpack_require__(348);
 
 Object.keys(_modules).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _modules[key];
     }
@@ -47514,66 +47523,66 @@ Object.keys(_types).forEach(function (ke
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _types[key];
     }
   });
 });
 
-var _flow = __webpack_require__(695);
+var _flow = __webpack_require__(696);
 
 Object.keys(_flow).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _flow[key];
     }
   });
 });
 
-var _base = __webpack_require__(696);
+var _base = __webpack_require__(697);
 
 Object.keys(_base).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _base[key];
     }
   });
 });
 
-var _jsx = __webpack_require__(697);
+var _jsx = __webpack_require__(698);
 
 Object.keys(_jsx).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _jsx[key];
     }
   });
 });
 
-var _typescript = __webpack_require__(698);
+var _typescript = __webpack_require__(699);
 
 Object.keys(_typescript).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
   Object.defineProperty(exports, key, {
     enumerable: true,
     get: function () {
       return _typescript[key];
     }
   });
 });
 
 /***/ }),
-/* 689 */
+/* 690 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47602,17 +47611,17 @@ function TemplateLiteral(node) {
 
     if (i + 1 < quasis.length) {
       this.print(node.expressions[i], node);
     }
   }
 }
 
 /***/ }),
-/* 690 */
+/* 691 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -47645,17 +47654,17 @@ function t() {
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var n = _interopRequireWildcard(__webpack_require__(345));
+var n = _interopRequireWildcard(__webpack_require__(347));
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function UnaryExpression(node) {
   if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof") {
     this.word(node.operator);
     this.space();
   } else {
@@ -47900,17 +47909,17 @@ function MetaProperty(node) {
 }
 
 function PrivateName(node) {
   this.token("#");
   this.print(node.id, node);
 }
 
 /***/ }),
-/* 691 */
+/* 692 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48225,17 +48234,17 @@ function VariableDeclarator(node) {
     this.space();
     this.token("=");
     this.space();
     this.print(node.init, node);
   }
 }
 
 /***/ }),
-/* 692 */
+/* 693 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48412,17 +48421,17 @@ function _classMethodHead(node) {
     this.word("static");
     this.space();
   }
 
   this._methodHead(node);
 }
 
 /***/ }),
-/* 693 */
+/* 694 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48569,17 +48578,17 @@ function ArrowFunctionExpression(node) {
   this.print(node.body, node);
 }
 
 function hasTypes(node, param) {
   return node.typeParameters || node.returnType || param.typeAnnotation || param.optional || param.trailingComments;
 }
 
 /***/ }),
-/* 694 */
+/* 695 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(Buffer) {
 
 const object = {};
 const hasOwnProperty = object.hasOwnProperty;
 const forOwn = (object, callback) => {
@@ -48903,20 +48912,20 @@ const jsesc = (argument, options) => {
 	}
 	return result;
 };
 
 jsesc.version = '2.5.1';
 
 module.exports = jsesc;
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(150).Buffer))
-
-/***/ }),
-/* 695 */
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(149).Buffer))
+
+/***/ }),
+/* 696 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -48988,17 +48997,17 @@ function t() {
 
   t = function () {
     return data;
   };
 
   return data;
 }
 
-var _modules = __webpack_require__(346);
+var _modules = __webpack_require__(348);
 
 var _types2 = __webpack_require__(264);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function AnyTypeAnnotation() {
   this.word("any");
 }
@@ -49540,17 +49549,17 @@ function Variance(node) {
   }
 }
 
 function VoidTypeAnnotation() {
   this.word("void");
 }
 
 /***/ }),
-/* 696 */
+/* 697 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -49615,17 +49624,17 @@ function Directive(node) {
   this.semicolon();
 }
 
 function InterpreterDirective(node) {
   this.token(`#!${node.value}\n`);
 }
 
 /***/ }),
-/* 697 */
+/* 698 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -49766,17 +49775,17 @@ function JSXOpeningFragment() {
 }
 
 function JSXClosingFragment() {
   this.token("</");
   this.token(">");
 }
 
 /***/ }),
-/* 698 */
+/* 699 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -50448,17 +50457,17 @@ function tsPrintSignatureDeclarationBase
 
   this._parameters(parameters, node);
 
   this.token(")");
   this.print(node.typeAnnotation, node);
 }
 
 /***/ }),
-/* 699 */
+/* 700 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -50547,37 +50556,37 @@ function inferClassName(path) {
   if (assignment) {
     return fromPrototype(assignment);
   }
 
   return null;
 }
 
 /***/ }),
-/* 700 */
+/* 701 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.parseSourceScopes = parseSourceScopes;
 exports.buildScopeList = buildScopeList;
 
-var _isEmpty = __webpack_require__(343);
+var _isEmpty = __webpack_require__(345);
 
 var _isEmpty2 = _interopRequireDefault(_isEmpty);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _getFunctionName = __webpack_require__(347);
+var _getFunctionName = __webpack_require__(349);
 
 var _getFunctionName2 = _interopRequireDefault(_getFunctionName);
 
 var _ast = __webpack_require__(49);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -51292,39 +51301,39 @@ function stripModuleScope(rootScope) {
   });
   rootLexicalScope.children = moduleScope.children;
   rootLexicalScope.children.forEach(child => {
     child.parent = rootLexicalScope;
   });
 }
 
 /***/ }),
-/* 701 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _get = __webpack_require__(349);
+/* 702 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _get = __webpack_require__(351);
 
 var _get2 = _interopRequireDefault(_get);
 
-var _findIndex = __webpack_require__(705);
+var _findIndex = __webpack_require__(706);
 
 var _findIndex2 = _interopRequireDefault(_findIndex);
 
-var _findLastIndex = __webpack_require__(722);
+var _findLastIndex = __webpack_require__(723);
 
 var _findLastIndex2 = _interopRequireDefault(_findLastIndex);
 
-var _contains = __webpack_require__(357);
+var _contains = __webpack_require__(359);
 
 var _getSymbols = __webpack_require__(238);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -51430,20 +51439,20 @@ function findOutOfScopeLocations(sourceI
   // we will mis-judge in-scope inner locations as out of scope.
   locations = removeInnerLocations(locations, position).filter(loc => !(0, _contains.containsPosition)(loc, position));
   return removeOverlaps(locations);
 }
 
 exports.default = findOutOfScopeLocations;
 
 /***/ }),
-/* 702 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var memoizeCapped = __webpack_require__(703);
+/* 703 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoizeCapped = __webpack_require__(704);
 
 /** Used to match property names within property paths. */
 var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
 
 /** Used to match backslashes in property paths. */
 var reEscapeChar = /\\(\\)?/g;
 
 /**
@@ -51463,20 +51472,20 @@ var stringToPath = memoizeCapped(functio
   });
   return result;
 });
 
 module.exports = stringToPath;
 
 
 /***/ }),
-/* 703 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var memoize = __webpack_require__(704);
+/* 704 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var memoize = __webpack_require__(705);
 
 /** Used as the maximum memoize cache size. */
 var MAX_MEMOIZE_SIZE = 500;
 
 /**
  * A specialized version of `_.memoize` which clears the memoized function's
  * cache when it exceeds `MAX_MEMOIZE_SIZE`.
  *
@@ -51495,17 +51504,17 @@ function memoizeCapped(func) {
   var cache = result.cache;
   return result;
 }
 
 module.exports = memoizeCapped;
 
 
 /***/ }),
-/* 704 */
+/* 705 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var MapCache = __webpack_require__(242);
 
 /** Error message constants. */
 var FUNC_ERROR_TEXT = 'Expected a function';
 
 /**
@@ -51574,22 +51583,22 @@ function memoize(func, resolver) {
 
 // Expose `MapCache`.
 memoize.Cache = MapCache;
 
 module.exports = memoize;
 
 
 /***/ }),
-/* 705 */
+/* 706 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIteratee = __webpack_require__(352),
-    toInteger = __webpack_require__(149);
+    baseIteratee = __webpack_require__(354),
+    toInteger = __webpack_require__(148);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max;
 
 /**
  * This method is like `_.find` except that it returns the index of the first
  * element `predicate` returns truthy for instead of the element itself.
  *
@@ -51635,22 +51644,22 @@ function findIndex(array, predicate, fro
   }
   return baseFindIndex(array, baseIteratee(predicate, 3), index);
 }
 
 module.exports = findIndex;
 
 
 /***/ }),
-/* 706 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsMatch = __webpack_require__(707),
-    getMatchData = __webpack_require__(713),
-    matchesStrictComparable = __webpack_require__(356);
+/* 707 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsMatch = __webpack_require__(708),
+    getMatchData = __webpack_require__(714),
+    matchesStrictComparable = __webpack_require__(358);
 
 /**
  * The base implementation of `_.matches` which doesn't clone `source`.
  *
  * @private
  * @param {Object} source The object of property values to match.
  * @returns {Function} Returns the new spec function.
  */
@@ -51663,21 +51672,21 @@ function baseMatches(source) {
     return object === source || baseIsMatch(object, source, matchData);
   };
 }
 
 module.exports = baseMatches;
 
 
 /***/ }),
-/* 707 */
+/* 708 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    baseIsEqual = __webpack_require__(353);
+    baseIsEqual = __webpack_require__(355);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * The base implementation of `_.isMatch` without support for iteratee shorthands.
  *
@@ -51731,26 +51740,26 @@ function baseIsMatch(object, source, mat
   }
   return true;
 }
 
 module.exports = baseIsMatch;
 
 
 /***/ }),
-/* 708 */
+/* 709 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Stack = __webpack_require__(240),
-    equalArrays = __webpack_require__(354),
-    equalByTag = __webpack_require__(710),
-    equalObjects = __webpack_require__(712),
-    getTag = __webpack_require__(114),
+    equalArrays = __webpack_require__(356),
+    equalByTag = __webpack_require__(711),
+    equalObjects = __webpack_require__(713),
+    getTag = __webpack_require__(113),
     isArray = __webpack_require__(22),
-    isBuffer = __webpack_require__(141),
+    isBuffer = __webpack_require__(140),
     isTypedArray = __webpack_require__(245);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1;
 
 /** `Object#toString` result references. */
 var argsTag = '[object Arguments]',
     arrayTag = '[object Array]',
@@ -51820,17 +51829,17 @@ function baseIsEqualDeep(object, other, 
   stack || (stack = new Stack);
   return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
 }
 
 module.exports = baseIsEqualDeep;
 
 
 /***/ }),
-/* 709 */
+/* 710 */
 /***/ (function(module, exports) {
 
 /**
  * A specialized version of `_.some` for arrays without support for iteratee
  * shorthands.
  *
  * @private
  * @param {Array} [array] The array to iterate over.
@@ -51849,24 +51858,24 @@ function arraySome(array, predicate) {
   }
   return false;
 }
 
 module.exports = arraySome;
 
 
 /***/ }),
-/* 710 */
+/* 711 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var Symbol = __webpack_require__(28),
-    Uint8Array = __webpack_require__(323),
-    eq = __webpack_require__(136),
-    equalArrays = __webpack_require__(354),
-    mapToArray = __webpack_require__(711),
+    Uint8Array = __webpack_require__(325),
+    eq = __webpack_require__(135),
+    equalArrays = __webpack_require__(356),
+    mapToArray = __webpack_require__(712),
     setToArray = __webpack_require__(256);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /** `Object#toString` result references. */
 var boolTag = '[object Boolean]',
@@ -51967,17 +51976,17 @@ function equalByTag(object, other, tag, 
   }
   return false;
 }
 
 module.exports = equalByTag;
 
 
 /***/ }),
-/* 711 */
+/* 712 */
 /***/ (function(module, exports) {
 
 /**
  * Converts `map` to its key-value pairs.
  *
  * @private
  * @param {Object} map The map to convert.
  * @returns {Array} Returns the key-value pairs.
@@ -51991,20 +52000,20 @@ function mapToArray(map) {
   });
   return result;
 }
 
 module.exports = mapToArray;
 
 
 /***/ }),
-/* 712 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var getAllKeys = __webpack_require__(320);
+/* 713 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var getAllKeys = __webpack_require__(322);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1;
 
 /** Used for built-in method references. */
 var objectProto = Object.prototype;
 
 /** Used to check objects for own properties. */
@@ -52086,21 +52095,21 @@ function equalObjects(object, other, bit
   stack['delete'](other);
   return result;
 }
 
 module.exports = equalObjects;
 
 
 /***/ }),
-/* 713 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var isStrictComparable = __webpack_require__(355),
-    keys = __webpack_require__(140);
+/* 714 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isStrictComparable = __webpack_require__(357),
+    keys = __webpack_require__(139);
 
 /**
  * Gets the property names, values, and compare flags of `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @returns {Array} Returns the match data of `object`.
  */
@@ -52116,26 +52125,26 @@ function getMatchData(object) {
   }
   return result;
 }
 
 module.exports = getMatchData;
 
 
 /***/ }),
-/* 714 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseIsEqual = __webpack_require__(353),
-    get = __webpack_require__(349),
-    hasIn = __webpack_require__(715),
+/* 715 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseIsEqual = __webpack_require__(355),
+    get = __webpack_require__(351),
+    hasIn = __webpack_require__(716),
     isKey = __webpack_require__(268),
-    isStrictComparable = __webpack_require__(355),
-    matchesStrictComparable = __webpack_require__(356),
-    toKey = __webpack_require__(151);
+    isStrictComparable = __webpack_require__(357),
+    matchesStrictComparable = __webpack_require__(358),
+    toKey = __webpack_require__(150);
 
 /** Used to compose bitmasks for value comparisons. */
 var COMPARE_PARTIAL_FLAG = 1,
     COMPARE_UNORDERED_FLAG = 2;
 
 /**
  * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
  *
@@ -52155,21 +52164,21 @@ function baseMatchesProperty(path, srcVa
       : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
   };
 }
 
 module.exports = baseMatchesProperty;
 
 
 /***/ }),
-/* 715 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseHasIn = __webpack_require__(716),
-    hasPath = __webpack_require__(717);
+/* 716 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseHasIn = __webpack_require__(717),
+    hasPath = __webpack_require__(718);
 
 /**
  * Checks if `path` is a direct or inherited property of `object`.
  *
  * @static
  * @memberOf _
  * @since 4.0.0
  * @category Object
@@ -52195,17 +52204,17 @@ var baseHasIn = __webpack_require__(716)
 function hasIn(object, path) {
   return object != null && hasPath(object, path, baseHasIn);
 }
 
 module.exports = hasIn;
 
 
 /***/ }),
-/* 716 */
+/* 717 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.hasIn` without support for deep paths.
  *
  * @private
  * @param {Object} [object] The object to query.
  * @param {Array|string} key The key to check.
@@ -52214,25 +52223,25 @@ module.exports = hasIn;
 function baseHasIn(object, key) {
   return object != null && key in Object(object);
 }
 
 module.exports = baseHasIn;
 
 
 /***/ }),
-/* 717 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var castPath = __webpack_require__(351),
+/* 718 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var castPath = __webpack_require__(353),
     isArguments = __webpack_require__(243),
     isArray = __webpack_require__(22),
     isIndex = __webpack_require__(244),
     isLength = __webpack_require__(246),
-    toKey = __webpack_require__(151);
+    toKey = __webpack_require__(150);
 
 /**
  * Checks if `path` exists on `object`.
  *
  * @private
  * @param {Object} object The object to query.
  * @param {Array|string} path The path to check.
  * @param {Function} hasFunc The function to check properties.
@@ -52259,17 +52268,17 @@ function hasPath(object, path, hasFunc) 
   return !!length && isLength(length) && isIndex(key, length) &&
     (isArray(object) || isArguments(object));
 }
 
 module.exports = hasPath;
 
 
 /***/ }),
-/* 718 */
+/* 719 */
 /***/ (function(module, exports) {
 
 /**
  * This method returns the first argument it receives.
  *
  * @static
  * @since 0.1.0
  * @memberOf _
@@ -52286,23 +52295,23 @@ module.exports = hasPath;
 function identity(value) {
   return value;
 }
 
 module.exports = identity;
 
 
 /***/ }),
-/* 719 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseProperty = __webpack_require__(720),
-    basePropertyDeep = __webpack_require__(721),
+/* 720 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseProperty = __webpack_require__(721),
+    basePropertyDeep = __webpack_require__(722),
     isKey = __webpack_require__(268),
-    toKey = __webpack_require__(151);
+    toKey = __webpack_require__(150);
 
 /**
  * Creates a function that returns the value at `path` of a given object.
  *
  * @static
  * @memberOf _
  * @since 2.4.0
  * @category Util
@@ -52324,17 +52333,17 @@ var baseProperty = __webpack_require__(7
 function property(path) {
   return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
 }
 
 module.exports = property;
 
 
 /***/ }),
-/* 720 */
+/* 721 */
 /***/ (function(module, exports) {
 
 /**
  * The base implementation of `_.property` without support for deep paths.
  *
  * @private
  * @param {string} key The key of the property to get.
  * @returns {Function} Returns the new accessor function.
@@ -52344,20 +52353,20 @@ function baseProperty(key) {
     return object == null ? undefined : object[key];
   };
 }
 
 module.exports = baseProperty;
 
 
 /***/ }),
-/* 721 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var baseGet = __webpack_require__(350);
+/* 722 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var baseGet = __webpack_require__(352);
 
 /**
  * A specialized version of `baseProperty` which supports deep paths.
  *
  * @private
  * @param {Array|string} path The path of the property to get.
  * @returns {Function} Returns the new accessor function.
  */
@@ -52366,22 +52375,22 @@ function basePropertyDeep(path) {
     return baseGet(object, path);
   };
 }
 
 module.exports = basePropertyDeep;
 
 
 /***/ }),
-/* 722 */
+/* 723 */
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseFindIndex = __webpack_require__(255),
-    baseIteratee = __webpack_require__(352),
-    toInteger = __webpack_require__(149);
+    baseIteratee = __webpack_require__(354),
+    toInteger = __webpack_require__(148);
 
 /* Built-in method references for those with the same name as other `lodash` methods. */
 var nativeMax = Math.max,
     nativeMin = Math.min;
 
 /**
  * This method is like `_.findIndex` except that it iterates over elements
  * of `collection` from right to left.
@@ -52431,34 +52440,34 @@ function findLastIndex(array, predicate,
   }
   return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
 }
 
 module.exports = findLastIndex;
 
 
 /***/ }),
-/* 723 */
+/* 724 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.getNextStep = getNextStep;
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
-var _closest = __webpack_require__(724);
-
-var _helpers = __webpack_require__(147);
+var _closest = __webpack_require__(725);
+
+var _helpers = __webpack_require__(146);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function getNextStep(sourceId, pausedPosition) {
   const currentExpression = getSteppableExpression(sourceId, pausedPosition);
   if (!currentExpression) {
     return null;
   }
@@ -52498,34 +52507,34 @@ function _getNextStep(statement, sourceI
       sourceId: sourceId
     };
   }
 
   return null;
 }
 
 /***/ }),
-/* 724 */
+/* 725 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.getClosestPath = getClosestPath;
 
-var _simplePath = __webpack_require__(342);
+var _simplePath = __webpack_require__(344);
 
 var _simplePath2 = _interopRequireDefault(_simplePath);
 
 var _ast = __webpack_require__(49);
 
-var _contains = __webpack_require__(357);
+var _contains = __webpack_require__(359);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function getClosestPath(sourceId, location) {
   let closestPath = null;
 
   (0, _ast.traverseAst)(sourceId, {
     enter(node, ancestors) {
@@ -52544,17 +52553,17 @@ function getClosestPath(sourceId, locati
   }
 
   return closestPath;
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 725 */
+/* 726 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -52569,17 +52578,17 @@ function hasSyntaxError(input) {
   } catch (e) {
     return `${e.name} : ${e.message}`;
   }
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
-/* 726 */
+/* 727 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -52640,38 +52649,38 @@ const isAngularComponent = sourceSymbols
 // Vue
 
 const isVueComponent = sourceSymbols => {
   const { identifiers } = sourceSymbols;
   return identifiers.some(identifier => identifier.name == "Vue");
 };
 
 /***/ }),
-/* 727 */
+/* 728 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapExpression;
 
 var _ast = __webpack_require__(49);
 
-var _mapOriginalExpression = __webpack_require__(728);
+var _mapOriginalExpression = __webpack_require__(729);
 
 var _mapOriginalExpression2 = _interopRequireDefault(_mapOriginalExpression);
 
-var _mapBindings = __webpack_require__(729);
+var _mapBindings = __webpack_require__(730);
 
 var _mapBindings2 = _interopRequireDefault(_mapBindings);
 
-var _mapAwaitExpression = __webpack_require__(730);
+var _mapAwaitExpression = __webpack_require__(731);
 
 var _mapAwaitExpression2 = _interopRequireDefault(_mapAwaitExpression);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -52708,32 +52717,32 @@ function mapExpression(expression, mappi
 
   return {
     expression,
     mapped
   };
 }
 
 /***/ }),
-/* 728 */
+/* 729 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapOriginalExpression;
 
 var _ast = __webpack_require__(49);
 
-var _getScopes = __webpack_require__(348);
-
-var _generator = __webpack_require__(148);
+var _getScopes = __webpack_require__(350);
+
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
@@ -52832,32 +52841,32 @@ function mapOriginalExpression(expressio
   if (shouldUpdate) {
     return (0, _generator2.default)(ast).code;
   }
 
   return expression;
 }
 
 /***/ }),
-/* 729 */
+/* 730 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapExpressionBindings;
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
-
-var _generator = __webpack_require__(148);
+var _helpers = __webpack_require__(146);
+
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
@@ -52960,38 +52969,38 @@ function mapExpressionBindings(expressio
   if (!shouldUpdate || !isMapped) {
     return expression;
   }
 
   return (0, _generator2.default)(ast).code;
 }
 
 /***/ }),
-/* 730 */
+/* 731 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = mapTopLevelAwait;
 
-var _generator = __webpack_require__(148);
+var _generator = __webpack_require__(147);
 
 var _generator2 = _interopRequireDefault(_generator);
 
 var _types = __webpack_require__(12);
 
 var t = _interopRequireWildcard(_types);
 
 var _ast = __webpack_require__(49);
 
-var _helpers = __webpack_require__(147);
+var _helpers = __webpack_require__(146);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
--- a/devtools/client/debugger/new/dist/pretty-print-worker.js
+++ b/devtools/client/debugger/new/dist/pretty-print-worker.js
@@ -65,34 +65,34 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 731);
+/******/ 	return __webpack_require__(__webpack_require__.s = 732);
 /******/ })
 /************************************************************************/
 /******/ ({
 
-/***/ 117:
+/***/ 116:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var base64VLQ = __webpack_require__(118);
-var util = __webpack_require__(41);
-var ArraySet = __webpack_require__(119).ArraySet;
+var base64VLQ = __webpack_require__(117);
+var util = __webpack_require__(40);
+var ArraySet = __webpack_require__(118).ArraySet;
 var MappingList = __webpack_require__(259).MappingList;
 
 /**
  * An instance of the SourceMapGenerator represents a source map which is
  * being built incrementally. You may pass an object with the following
  * properties:
  *
  *   - file: The filename of the generated source.
@@ -493,17 +493,17 @@ SourceMapGenerator.prototype.toString =
     return JSON.stringify(this.toJSON());
   };
 
 exports.SourceMapGenerator = SourceMapGenerator;
 
 
 /***/ }),
 
-/***/ 118:
+/***/ 117:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  *
@@ -640,27 +640,27 @@ exports.decode = function base64VLQ_deco
 
   aOutParam.value = fromVLQSigned(result);
   aOutParam.rest = aIndex;
 };
 
 
 /***/ }),
 
-/***/ 119:
+/***/ 118:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var has = Object.prototype.hasOwnProperty;
 var hasNativeMap = typeof Map !== "undefined";
 
 /**
  * A data structure which is a combination of an array and a set. Adding a new
  * member is O(1), testing for membership is O(1), and finding the index of an
  * element is O(1). Removing elements from the set is not supported. Only
  * strings are supported for membership.
@@ -821,17 +821,17 @@ module.exports = networkRequest;
 /***/ 257:
 /***/ (function(module, exports, __webpack_require__) {
 
 /*
  * Copyright 2009-2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.txt or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
-exports.SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
+exports.SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
 exports.SourceMapConsumer = __webpack_require__(260).SourceMapConsumer;
 exports.SourceNode = __webpack_require__(263).SourceNode;
 
 
 /***/ }),
 
 /***/ 258:
 /***/ (function(module, exports) {
@@ -912,17 +912,17 @@ exports.decode = function (charCode) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2014 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 
 /**
  * Determine whether mappingB is after mappingA with respect to generated
  * position.
  */
 function generatedPositionAfter(mappingA, mappingB) {
   // Optimized for most common case
   var lineA = mappingA.generatedLine;
@@ -1176,20 +1176,20 @@ module.exports = {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var util = __webpack_require__(41);
+var util = __webpack_require__(40);
 var binarySearch = __webpack_require__(261);
-var ArraySet = __webpack_require__(119).ArraySet;
-var base64VLQ = __webpack_require__(118);
+var ArraySet = __webpack_require__(118).ArraySet;
+var base64VLQ = __webpack_require__(117);
 var quickSort = __webpack_require__(262).quickSort;
 
 function SourceMapConsumer(aSourceMap) {
   var sourceMap = aSourceMap;
   if (typeof aSourceMap === 'string') {
     sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
   }
 
@@ -2504,18 +2504,18 @@ exports.quickSort = function (ary, compa
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
 
-var SourceMapGenerator = __webpack_require__(117).SourceMapGenerator;
-var util = __webpack_require__(41);
+var SourceMapGenerator = __webpack_require__(116).SourceMapGenerator;
+var util = __webpack_require__(40);
 
 // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 // operating systems these days (capturing the result).
 var REGEX_NEWLINE = /(\r?\n)/;
 
 // Newline character code for charCodeAt() comparisons
 var NEWLINE_CODE = 10;
 
@@ -2914,17 +2914,17 @@ SourceNode.prototype.toStringWithSourceM
   return { code: generated.code, map: map };
 };
 
 exports.SourceNode = SourceNode;
 
 
 /***/ }),
 
-/***/ 41:
+/***/ 40:
 /***/ (function(module, exports) {
 
 /* -*- Mode: js; js-indent-level: 2; -*- */
 /*
  * Copyright 2011 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE or:
  * http://opensource.org/licenses/BSD-3-Clause
  */
@@ -3338,31 +3338,31 @@ function compareByGeneratedPositionsInfl
 
   return strcmp(mappingA.name, mappingB.name);
 }
 exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
 
 /***/ }),
 
-/***/ 731:
+/***/ 732:
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(732);
+module.exports = __webpack_require__(733);
 
 
 /***/ }),
 
-/***/ 732:
+/***/ 733:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _prettyFast = __webpack_require__(733);
+var _prettyFast = __webpack_require__(734);
 
 var _prettyFast2 = _interopRequireDefault(_prettyFast);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -3402,17 +3402,17 @@ function invertMappings(mappings) {
     return mapping;
   });
 }
 
 self.onmessage = workerHandler({ prettyPrint });
 
 /***/ }),
 
-/***/ 733:
+/***/ 734:
 /***/ (function(module, exports, __webpack_require__) {
 
 var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* -*- indent-tabs-mode: nil; js-indent-level: 2; fill-column: 80 -*- */
 /*
  * Copyright 2013 Mozilla Foundation and contributors
  * Licensed under the New BSD license. See LICENSE.md or:
  * http://opensource.org/licenses/BSD-2-Clause
  */
@@ -3428,17 +3428,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WE
   } else if (typeof exports === "object") {
     module.exports = factory();
   } else {
     root.prettyFast = factory();
   }
 }(this, function () {
   "use strict";
 
-  var acorn = this.acorn || __webpack_require__(734);
+  var acorn = this.acorn || __webpack_require__(735);
   var sourceMap = this.sourceMap || __webpack_require__(257);
   var SourceNode = sourceMap.SourceNode;
 
   // If any of these tokens are seen before a "[" token, we know that "[" token
   // is the start of an array literal, rather than a property access.
   //
   // The only exception is "}", which would need to be disambiguated by
   // parsing. The majority of the time, an open bracket following a closing
@@ -4294,17 +4294,17 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WE
     return result.toStringWithSourceMap({ file: options.url });
   };
 
 }.bind(this)));
 
 
 /***/ }),
 
-/***/ 734:
+/***/ 735:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function (global, factory) {
 	 true ? factory(exports) :
 	typeof define === 'function' && define.amd ? define(['exports'], factory) :
 	(factory((global.acorn = global.acorn || {})));
 }(this, (function (exports) { 'use strict';
 
--- a/devtools/client/debugger/new/dist/search-worker.js
+++ b/devtools/client/debugger/new/dist/search-worker.js
@@ -2,17 +2,17 @@
 	if(typeof exports === 'object' && typeof module === 'object')
 		module.exports = factory(require("devtools/shared/flags"));
 	else if(typeof define === 'function' && define.amd)
 		define(["devtools/shared/flags"], factory);
 	else {
 		var a = typeof exports === 'object' ? factory(require("devtools/shared/flags")) : factory(root["devtools/shared/flags"]);
 		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 	}
-})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_71__) {
+})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_72__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
 /******/ 		// Check if module is in cache
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 735);
+/******/ 	return __webpack_require__(__webpack_require__.s = 736);
 /******/ })
 /************************************************************************/
 /******/ ({
 
 /***/ 16:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -87,28 +87,28 @@ const workerUtils = __webpack_require__(
 
 module.exports = {
   networkRequest,
   workerUtils
 };
 
 /***/ }),
 
-/***/ 165:
+/***/ 164:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = buildQuery;
 
-var _escapeRegExp = __webpack_require__(166);
+var _escapeRegExp = __webpack_require__(165);
 
 var _escapeRegExp2 = _interopRequireDefault(_escapeRegExp);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /**
  * Ignore doing outline matches for less than 3 whitespaces
  *
@@ -167,20 +167,20 @@ function buildQuery(originalQuery, modif
     return new RegExp(query, flags);
   }
 
   return new RegExp(query);
 }
 
 /***/ }),
 
-/***/ 166:
+/***/ 165:
 /***/ (function(module, exports, __webpack_require__) {
 
-var toString = __webpack_require__(69);
+var toString = __webpack_require__(70);
 
 /**
  * Used to match `RegExp`
  * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  */
 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
     reHasRegExpChar = RegExp(reRegExpChar.source);
 
@@ -209,17 +209,17 @@ function escapeRegExp(string) {
 module.exports = escapeRegExp;
 
 
 /***/ }),
 
 /***/ 21:
 /***/ (function(module, exports, __webpack_require__) {
 
-var freeGlobal = __webpack_require__(70);
+var freeGlobal = __webpack_require__(71);
 
 /** Detect free variable `self`. */
 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
 /** Used as a reference to the global object. */
 var root = freeGlobal || freeSelf || Function('return this')();
 
 module.exports = root;
@@ -548,17 +548,17 @@ module.exports = isObjectLike;
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(process) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-const flag = __webpack_require__(71);
+const flag = __webpack_require__(72);
 
 function isBrowser() {
   return typeof window == "object";
 }
 
 function isNode() {
   return process && process.release && process.release.name == 'node';
 }
@@ -625,32 +625,32 @@ function baseGetTag(value) {
     : objectToString(value);
 }
 
 module.exports = baseGetTag;
 
 
 /***/ }),
 
-/***/ 358:
+/***/ 360:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = getMatches;
 
 var _assert = __webpack_require__(57);
 
 var _assert2 = _interopRequireDefault(_assert);
 
-var _buildQuery = __webpack_require__(165);
+var _buildQuery = __webpack_require__(164);
 
 var _buildQuery2 = _interopRequireDefault(_buildQuery);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -934,17 +934,17 @@ function assert(condition, message) {
     throw new Error(`Assertion failure: ${message}`);
   }
 } /* This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /***/ }),
 
-/***/ 69:
+/***/ 70:
 /***/ (function(module, exports, __webpack_require__) {
 
 var baseToString = __webpack_require__(83);
 
 /**
  * Converts `value` to a string. An empty string is returned for `null`
  * and `undefined` values. The sign of `-0` is preserved.
  *
@@ -969,79 +969,79 @@ function toString(value) {
   return value == null ? '' : baseToString(value);
 }
 
 module.exports = toString;
 
 
 /***/ }),
 
-/***/ 70:
+/***/ 71:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
 module.exports = freeGlobal;
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))
 
 /***/ }),
 
-/***/ 71:
+/***/ 72:
 /***/ (function(module, exports) {
 
-module.exports = __WEBPACK_EXTERNAL_MODULE_71__;
-
-/***/ }),
-
-/***/ 735:
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(736);
-
+module.exports = __WEBPACK_EXTERNAL_MODULE_72__;
 
 /***/ }),
 
 /***/ 736:
 /***/ (function(module, exports, __webpack_require__) {
 
+module.exports = __webpack_require__(737);
+
+
+/***/ }),
+
+/***/ 737:
+/***/ (function(module, exports, __webpack_require__) {
+
 "use strict";
 
 
-var _getMatches = __webpack_require__(358);
+var _getMatches = __webpack_require__(360);
 
 var _getMatches2 = _interopRequireDefault(_getMatches);
 
-var _projectSearch = __webpack_require__(737);
+var _projectSearch = __webpack_require__(738);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { workerHandler } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 self.onmessage = workerHandler({ getMatches: _getMatches2.default, findSourceMatches: _projectSearch.findSourceMatches });
 
 /***/ }),
 
-/***/ 737:
+/***/ 738:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.findSourceMatches = findSourceMatches;
 
-var _getMatches = __webpack_require__(358);
+var _getMatches = __webpack_require__(360);
 
 var _getMatches2 = _interopRequireDefault(_getMatches);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function findSourceMatches(source, queryText) {
   const { id, loadedState, text } = source;
   if (loadedState != "loaded" || typeof text != "string" || queryText == "") {
--- a/devtools/client/debugger/new/dist/vendors.js
+++ b/devtools/client/debugger/new/dist/vendors.js
@@ -2,17 +2,17 @@
 	if(typeof exports === 'object' && typeof module === 'object')
 		module.exports = factory(require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags"));
 	else if(typeof define === 'function' && define.amd)
 		define(["devtools/client/shared/vendor/react-prop-types", "devtools/client/shared/vendor/react", "devtools/client/shared/vendor/react-dom-factories", "devtools/client/shared/vendor/lodash", "Services", "devtools/client/shared/vendor/react-dom", "devtools/shared/flags"], factory);
 	else {
 		var a = typeof exports === 'object' ? factory(require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags")) : factory(root["devtools/client/shared/vendor/react-prop-types"], root["devtools/client/shared/vendor/react"], root["devtools/client/shared/vendor/react-dom-factories"], root["devtools/client/shared/vendor/lodash"], root["Services"], root["devtools/client/shared/vendor/react-dom"], root["devtools/shared/flags"]);
 		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 	}
-})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_24__, __WEBPACK_EXTERNAL_MODULE_71__) {
+})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_24__, __WEBPACK_EXTERNAL_MODULE_72__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
 /******/ 		// Check if module is in cache
@@ -65,17 +65,17 @@ return /******/ (function(modules) { // 
 /******/
 /******/ 	// Object.prototype.hasOwnProperty.call
 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 /******/
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/assets/build";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 762);
+/******/ 	return __webpack_require__(__webpack_require__.s = 763);
 /******/ })
 /************************************************************************/
 /******/ ({
 
 /***/ 0:
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
@@ -91,17 +91,17 @@ module.exports = __WEBPACK_EXTERNAL_MODU
 
 /***/ 10:
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_10__;
 
 /***/ }),
 
-/***/ 101:
+/***/ 100:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -119,17 +119,17 @@ var _propTypes = __webpack_require__(0);
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { Component, createFactory } = _react2.default; /* This Source Code Form is subject to the terms of the Mozilla Public
                                                        * License, v. 2.0. If a copy of the MPL was not distributed with this
                                                        * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-__webpack_require__(102);
+__webpack_require__(101);
 
 // depth
 const AUTO_EXPAND_DEPTH = 0;
 
 // Simplied selector targetting elements that can receive the focus,
 // full version at https://stackoverflow.com/questions/1599660.
 const FOCUSABLE_SELECTOR = ["a[href]:not([tabindex='-1'])", "button:not([disabled]):not([tabindex='-1'])", "iframe:not([tabindex='-1'])", "input:not([disabled]):not([tabindex='-1'])", "select:not([disabled]):not([tabindex='-1'])", "textarea:not([disabled]):not([tabindex='-1'])", "[tabindex]:not([tabindex='-1'])"].join(", ");
 
@@ -170,16 +170,17 @@ class TreeNode extends Component {
       index: _propTypes2.default.number.isRequired,
       depth: _propTypes2.default.number.isRequired,
       focused: _propTypes2.default.bool.isRequired,
       active: _propTypes2.default.bool.isRequired,
       expanded: _propTypes2.default.bool.isRequired,
       item: _propTypes2.default.any.isRequired,
       isExpandable: _propTypes2.default.bool.isRequired,
       onClick: _propTypes2.default.func,
+      shouldItemUpdate: _propTypes2.default.func,
       renderItem: _propTypes2.default.func.isRequired
     };
   }
 
   constructor(props) {
     super(props);
 
     this.treeNodeRef = _react2.default.createRef();
@@ -198,17 +199,17 @@ class TreeNode extends Component {
         elms[0].focus();
       }
     } else {
       elms.forEach(elm => elm.setAttribute("tabindex", "-1"));
     }
   }
 
   shouldComponentUpdate(nextProps) {
-    return this.props.item !== nextProps.item || this.props.focused !== nextProps.focused || this.props.expanded !== nextProps.expanded;
+    return this.props.item !== nextProps.item || this.props.shouldItemUpdate && this.props.shouldItemUpdate(this.props.item, nextProps.item) || this.props.focused !== nextProps.focused || this.props.expanded !== nextProps.expanded;
   }
 
   /**
    * Get a list of all elements that are focusable with a keyboard inside the
    * tree node.
    */
   getFocusableElements() {
     return this.treeNodeRef.current ? Array.from(this.treeNodeRef.current.querySelectorAll(FOCUSABLE_SELECTOR)) : [];
@@ -425,16 +426,27 @@ class Tree extends Component {
       // Type: getChildren(item: Item) -> [Item]
       //
       // Example:
       //
       //     // This item's children are stored in its `children` property.
       //     getChildren: item => item.children
       getChildren: _propTypes2.default.func.isRequired,
 
+      // A function to check if the tree node for the item should be updated.
+      //
+      // Type: shouldItemUpdate(prevItem: Item, nextItem: Item) -> Boolean
+      //
+      // Example:
+      //
+      //     // This item should be updated if it's type is a long string
+      //     shouldItemUpdate: (prevItem, nextItem) =>
+      //       nextItem.type === "longstring"
+      shouldItemUpdate: _propTypes2.default.func,
+
       // A function which takes an item and ArrowExpander component instance and
       // returns a component, or text, or anything else that React considers
       // renderable.
       //
       // Type: renderItem(item: Item,
       //                  depth: Number,
       //                  isFocused: Boolean,
       //                  arrow: ReactComponent,
@@ -994,16 +1006,17 @@ class Tree extends Component {
         // We make a key unique depending on whether the tree node is in active
         // or inactive state to make sure that it is actually replaced and the
         // tabbable state is reset.
         key: `${key}-${active === item ? "active" : "inactive"}`,
         id: key,
         index: i,
         item,
         depth,
+        shouldItemUpdate: this.props.shouldItemUpdate,
         renderItem: this.props.renderItem,
         focused: focused === item,
         active: active === item,
         expanded: this.props.isExpanded(item),
         isExpandable: this._nodeIsExpandable(item),
         onExpand: this._onExpand,
         onCollapse: this._onCollapse,
         onClick: e => {
@@ -1057,24 +1070,24 @@ class Tree extends Component {
     }, nodes);
   }
 }
 
 exports.default = Tree;
 
 /***/ }),
 
-/***/ 102:
+/***/ 101:
 /***/ (function(module, exports) {
 
 // removed by extract-text-webpack-plugin
 
 /***/ }),
 
-/***/ 109:
+/***/ 108:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1084,17 +1097,17 @@ var _createClass = function () { functio
 var _propTypes = __webpack_require__(0);
 
 var _propTypes2 = _interopRequireDefault(_propTypes);
 
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
-var _tab = __webpack_require__(110);
+var _tab = __webpack_require__(109);
 
 var _tab2 = _interopRequireDefault(_tab);
 
 var _tabList = __webpack_require__(224);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1228,17 +1241,17 @@ TabList.defaultProps = {
   children: null,
   className: _tabList2.default.container,
   onActivateTab: function onActivateTab() {},
   vertical: false
 };
 
 /***/ }),
 
-/***/ 110:
+/***/ 109:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1300,17 +1313,17 @@ Tab.defaultProps = {
   active: false,
   className: _tab2.default.container,
   onActivate: undefined,
   tabRef: undefined
 };
 
 /***/ }),
 
-/***/ 111:
+/***/ 110:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1356,23 +1369,23 @@ TabPanels.propTypes = {
 TabPanels.defaultProps = {
   accessibleId: undefined,
   activeIndex: 0,
   className: null
 };
 
 /***/ }),
 
-/***/ 112:
+/***/ 111:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;
 
-  _ref = __webpack_require__(63), countDir = _ref.countDir, getExtension = _ref.getExtension;
+  _ref = __webpack_require__(64), countDir = _ref.countDir, getExtension = _ref.getExtension;
 
   module.exports = Query = (function() {
     function Query(query, _arg) {
       var optCharRegEx, pathSeparator, _ref1;
       _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;
       if (!(query && query.length)) {
         return null;
       }
@@ -1420,40 +1433,40 @@ TabPanels.defaultProps = {
     return charCodes;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 131:
+/***/ 130:
 /***/ (function(module, exports, __webpack_require__) {
 
 const SplitBox = __webpack_require__(216);
 
 module.exports = SplitBox;
 
 /***/ }),
 
-/***/ 132:
+/***/ 131:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(process) {(function() {
   var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;
 
   filter = __webpack_require__(228);
 
   matcher = __webpack_require__(229);
 
   scorer = __webpack_require__(48);
 
-  pathScorer = __webpack_require__(63);
-
-  Query = __webpack_require__(112);
+  pathScorer = __webpack_require__(64);
+
+  Query = __webpack_require__(111);
 
   preparedQueryCache = null;
 
   defaultPathSeparator = (typeof process !== "undefined" && process !== null ? process.platform : void 0) === "win32" ? '\\' : '/';
 
   module.exports = {
     filter: function(candidates, query, options) {
       if (options == null) {
@@ -1548,17 +1561,17 @@ module.exports = SplitBox;
   };
 
 }).call(this);
 
 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(52)))
 
 /***/ }),
 
-/***/ 133:
+/***/ 132:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1574,17 +1587,17 @@ exports.default = _Svg2.default; /* This
                                   * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /**
  * This file maps the SVG React Components in the images directory.
  */
 
 /***/ }),
 
-/***/ 155:
+/***/ 154:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 var _devtoolsServices = __webpack_require__(20);
 
 var _devtoolsServices2 = _interopRequireDefault(_devtoolsServices);
@@ -1810,17 +1823,17 @@ Menu.sendActionToFirstResponder = () => 
 Menu.buildFromTemplate = () => {
   throw Error("Not implemented");
 };
 
 module.exports = Menu;
 
 /***/ }),
 
-/***/ 156:
+/***/ 155:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -1848,17 +1861,17 @@ p.defer = function defer() {
     promise: promise
   };
 };
 
 module.exports = p;
 
 /***/ }),
 
-/***/ 157:
+/***/ 156:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -1921,17 +1934,17 @@ function MenuItem({
   this.visible = visible;
   this.accelerator = accelerator;
 }
 
 module.exports = MenuItem;
 
 /***/ }),
 
-/***/ 158:
+/***/ 157:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2110,17 +2123,17 @@ function makeObserver(self, cache, prefs
     }
   };
 }
 
 exports.PrefsHelper = PrefsHelper;
 
 /***/ }),
 
-/***/ 159:
+/***/ 158:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2358,34 +2371,17 @@ KeyShortcuts.prototype = {
   off(key, listener) {
     this.eventEmitter.off(key, listener);
   }
 };
 module.exports = KeyShortcuts;
 
 /***/ }),
 
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-const networkRequest = __webpack_require__(25);
-const workerUtils = __webpack_require__(26);
-
-module.exports = {
-  networkRequest,
-  workerUtils
-};
-
-/***/ }),
-
-/***/ 160:
+/***/ 159:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
@@ -2396,17 +2392,34 @@ module.exports = {
  * Based on nsIMarkupDocumentViewer.fullZoom API
  * https://developer.mozilla.org/en-US/Firefox/Releases/3/Full_page_zoom
  */
 
 exports.register = function (window) {};
 
 /***/ }),
 
-/***/ 161:
+/***/ 16:
+/***/ (function(module, exports, __webpack_require__) {
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const networkRequest = __webpack_require__(25);
+const workerUtils = __webpack_require__(26);
+
+module.exports = {
+  networkRequest,
+  workerUtils
+};
+
+/***/ }),
+
+/***/ 160:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /**
  *
  * Adapted from https://github.com/mozilla-b2g/gaia/blob/f09993563fb5fec4393eb71816ce76cb00463190/shared/js/async_storage.js
  * (converted to use Promises instead of callbacks).
  *
@@ -2589,17 +2602,17 @@ exports.getItem = getItem;
 exports.setItem = setItem;
 exports.removeItem = removeItem;
 exports.clear = clear;
 exports.length = length;
 exports.key = key;
 
 /***/ }),
 
-/***/ 162:
+/***/ 161:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -2906,17 +2919,17 @@ module.exports = {
   isContentScheme,
   isWASM,
   isDataScheme,
   getSourceMappedFile
 };
 
 /***/ }),
 
-/***/ 163:
+/***/ 162:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
@@ -3246,17 +3259,17 @@ class Telemetry {
    */
   toolClosed(id, sessionId, obj) {}
 }
 
 module.exports = Telemetry;
 
 /***/ }),
 
-/***/ 164:
+/***/ 163:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This file is a chrome-API-free version of the module
@@ -3266,17 +3279,17 @@ module.exports = Telemetry;
 // should implement the similar functionalities on its own.
 //
 // Please keep in mind that if the feature in this file has changed, don't
 // forget to also change that accordingly in
 // devtools/client/shared/unicode-url.js in the mozilla-central repository.
 
 
 
-const punycode = __webpack_require__(68);
+const punycode = __webpack_require__(69);
 
 /**
  * Gets a readble Unicode hostname from a hostname.
  *
  * If the `hostname` is a readable ASCII hostname, such as example.org, then
  * this function will simply return the original `hostname`.
  *
  * If the `hostname` is a Punycode hostname representing a Unicode domain name,
@@ -4594,35 +4607,35 @@ module.exports = Draggable;
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 
-var _tabList = __webpack_require__(109);
+var _tabList = __webpack_require__(108);
 
 Object.defineProperty(exports, 'TabList', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tabList).default;
   }
 });
 
-var _tabPanels = __webpack_require__(111);
+var _tabPanels = __webpack_require__(110);
 
 Object.defineProperty(exports, 'TabPanels', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tabPanels).default;
   }
 });
 
-var _tab = __webpack_require__(110);
+var _tab = __webpack_require__(109);
 
 Object.defineProperty(exports, 'Tab', {
   enumerable: true,
   get: function get() {
     return _interopRequireDefault(_tab).default;
   }
 });
 
@@ -4692,21 +4705,21 @@ var _propTypes2 = _interopRequireDefault
 var _react = __webpack_require__(1);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _uniqueId = __webpack_require__(226);
 
 var _uniqueId2 = _interopRequireDefault(_uniqueId);
 
-var _tabList = __webpack_require__(109);
+var _tabList = __webpack_require__(108);
 
 var _tabList2 = _interopRequireDefault(_tabList);
 
-var _tabPanels = __webpack_require__(111);
+var _tabPanels = __webpack_require__(110);
 
 var _tabPanels2 = _interopRequireDefault(_tabPanels);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
@@ -4807,19 +4820,19 @@ function uniqueId() {
 /***/ 228:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var Query, pathScorer, pluckCandidates, scorer, sortCandidates;
 
   scorer = __webpack_require__(48);
 
-  pathScorer = __webpack_require__(63);
-
-  Query = __webpack_require__(112);
+  pathScorer = __webpack_require__(64);
+
+  Query = __webpack_require__(111);
 
   pluckCandidates = function(a) {
     return a.candidate;
   };
 
   sortCandidates = function(a, b) {
     return b.score - a.score;
   };
@@ -5550,17 +5563,17 @@ module.exports = g;
 
 "use strict";
 /* WEBPACK VAR INJECTION */(function(process) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-const flag = __webpack_require__(71);
+const flag = __webpack_require__(72);
 
 function isBrowser() {
   return typeof window == "object";
 }
 
 function isNode() {
   return process && process.release && process.release.name == 'node';
 }
@@ -5886,26 +5899,26 @@ module.exports = {
 
 "use strict";
 
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const Menu = __webpack_require__(155);
-const MenuItem = __webpack_require__(157);
-const { PrefsHelper } = __webpack_require__(158);
-const KeyShortcuts = __webpack_require__(159);
-const { ZoomKeys } = __webpack_require__(160);
+const Menu = __webpack_require__(154);
+const MenuItem = __webpack_require__(156);
+const { PrefsHelper } = __webpack_require__(157);
+const KeyShortcuts = __webpack_require__(158);
+const { ZoomKeys } = __webpack_require__(159);
 const EventEmitter = __webpack_require__(46);
-const asyncStorage = __webpack_require__(161);
-const SourceUtils = __webpack_require__(162);
-const Telemetry = __webpack_require__(163);
-const { getUnicodeHostname, getUnicodeUrlPath, getUnicodeUrl } = __webpack_require__(164);
+const asyncStorage = __webpack_require__(160);
+const SourceUtils = __webpack_require__(161);
+const Telemetry = __webpack_require__(162);
+const { getUnicodeHostname, getUnicodeUrlPath, getUnicodeUrl } = __webpack_require__(163);
 
 module.exports = {
   KeyShortcuts,
   Menu,
   MenuItem,
   PrefsHelper,
   ZoomKeys,
   asyncStorage,
@@ -5914,17 +5927,17 @@ module.exports = {
   Telemetry,
   getUnicodeHostname,
   getUnicodeUrlPath,
   getUnicodeUrl
 };
 
 /***/ }),
 
-/***/ 42:
+/***/ 41:
 /***/ (function(module, exports) {
 
 module.exports = function(module) {
 	if(!module.webpackPolyfill) {
 		module.deprecate = function() {};
 		module.paths = [];
 		// module.parent = undefined by default
 		if(!module.children) module.children = [];
@@ -5956,17 +5969,17 @@ module.exports = function(module) {
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var EventEmitter = function EventEmitter() {};
 module.exports = EventEmitter;
 
-const promise = __webpack_require__(156);
+const promise = __webpack_require__(155);
 
 /**
  * Decorate an object with event emitter functionality.
  *
  * @param Object aObjectToDecorate
  *        Bind all public methods of EventEmitter to
  *        the aObjectToDecorate object.
  */
@@ -6660,17 +6673,17 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
 	} else {
 		window.classNames = classNames;
 	}
 }());
 
 
 /***/ }),
 
-/***/ 63:
+/***/ 64:
 /***/ (function(module, exports, __webpack_require__) {
 
 (function() {
   var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;
 
   _ref = __webpack_require__(48), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;
 
   tau_depth = 20;
@@ -6777,17 +6790,17 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
     return matched / m;
   };
 
 }).call(this);
 
 
 /***/ }),
 
-/***/ 68:
+/***/ 69:
 /***/ (function(module, exports, __webpack_require__) {
 
 /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */
 ;(function(root) {
 
 	/** Detect free variables */
 	var freeExports = typeof exports == 'object' && exports &&
 		!exports.nodeType && exports;
@@ -7313,71 +7326,71 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
 		}
 	} else {
 		// in Rhino or a web browser
 		root.punycode = punycode;
 	}
 
 }(this));
 
-/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42)(module), __webpack_require__(27)))
+/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41)(module), __webpack_require__(27)))
 
 /***/ }),
 
-/***/ 71:
+/***/ 72:
 /***/ (function(module, exports) {
 
-module.exports = __WEBPACK_EXTERNAL_MODULE_71__;
+module.exports = __WEBPACK_EXTERNAL_MODULE_72__;
 
 /***/ }),
 
-/***/ 73:
+/***/ 74:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _tree = __webpack_require__(101);
+var _tree = __webpack_require__(100);
 
 var _tree2 = _interopRequireDefault(_tree);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 module.exports = {
   Tree: _tree2.default
 }; /* This Source Code Form is subject to the terms of the Mozilla Public
     * License, v. 2.0. If a copy of the MPL was not distributed with this
     * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /***/ }),
 
-/***/ 762:
+/***/ 763:
 /***/ (function(module, exports, __webpack_require__) {
 
-module.exports = __webpack_require__(763);
+module.exports = __webpack_require__(764);
 
 
 /***/ }),
 
-/***/ 763:
+/***/ 764:
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.vendored = undefined;
 
-var _devtoolsComponents = __webpack_require__(73);
+var _devtoolsComponents = __webpack_require__(74);
 
 var devtoolsComponents = _interopRequireWildcard(_devtoolsComponents);
 
-var _devtoolsConfig = __webpack_require__(764);
+var _devtoolsConfig = __webpack_require__(765);
 
 var devtoolsConfig = _interopRequireWildcard(_devtoolsConfig);
 
 var _devtoolsContextmenu = __webpack_require__(33);
 
 var devtoolsContextmenu = _interopRequireWildcard(_devtoolsContextmenu);
 
 var _devtoolsEnvironment = __webpack_require__(30);
@@ -7387,17 +7400,17 @@ var devtoolsEnvironment = _interopRequir
 var _devtoolsModules = __webpack_require__(34);
 
 var devtoolsModules = _interopRequireWildcard(_devtoolsModules);
 
 var _devtoolsUtils = __webpack_require__(16);
 
 var devtoolsUtils = _interopRequireWildcard(_devtoolsUtils);
 
-var _fuzzaldrinPlus = __webpack_require__