Merge autoland to mozilla-central. a=merge
authorAndreea Pavel <apavel@mozilla.com>
Fri, 22 Nov 2019 11:14:11 +0200
changeset 503284 80ab213de5a9647fb7da0ed969a3c5a0d5ce4cdf
parent 503213 2a76c7273dd288badf6297583860a36df99cb31f (current diff)
parent 503283 33ea535c231b68f09698c310a267f9f483a8e1a5 (diff)
child 503306 1469feeca395eff65a81d6f283da42b0866e6717
push id36831
push userapavel@mozilla.com
push dateFri, 22 Nov 2019 09:15:12 +0000
treeherdermozilla-central@80ab213de5a9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone72.0a1
first release with
nightly linux32
80ab213de5a9 / 72.0a1 / 20191122091512 / files
nightly linux64
80ab213de5a9 / 72.0a1 / 20191122091512 / files
nightly mac
80ab213de5a9 / 72.0a1 / 20191122091512 / files
nightly win32
80ab213de5a9 / 72.0a1 / 20191122091512 / files
nightly win64
80ab213de5a9 / 72.0a1 / 20191122091512 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge autoland to mozilla-central. a=merge
browser/base/content/browser-allTabsMenu.inc.xul
browser/base/content/macWindow.inc.xul
browser/components/controlcenter/content/identityPanel.inc.xul
browser/components/controlcenter/content/protectionsPanel.inc.xul
browser/components/customizableui/content/customizeMode.inc.xul
browser/components/customizableui/content/panelUI.inc.xul
browser/components/downloads/content/downloadsCommands.inc.xul
browser/components/downloads/content/downloadsContextMenu.inc.xul
browser/components/downloads/content/downloadsPanel.inc.xul
browser/components/downloads/content/downloadsStrings.inc.xul
browser/components/places/content/bookmarksHistoryTooltip.inc.xul
browser/components/places/content/editBookmarkPanel.inc.xul
browser/components/places/content/placesCommands.inc.xul
browser/components/places/content/placesContextMenu.inc.xul
gfx/layers/opengl/GLManager.cpp
gfx/layers/opengl/GLManager.h
js/src/tests/non262/fields/bug1580246.js
modules/libpref/init/StaticPrefList.yaml
toolkit/components/jsoncpp/include/json/features.h
--- a/browser/actors/FormValidationParent.jsm
+++ b/browser/actors/FormValidationParent.jsm
@@ -112,20 +112,20 @@ class FormValidationParent extends JSWin
   _showPopup(aWindow, aPanelData) {
     let previouslyShown = !!this._panel;
     this._panel = aWindow.document.getElementById("invalid-form-popup");
     this._panel.firstChild.textContent = aPanelData.message;
     this._panel.hidden = false;
 
     let tabBrowser = aWindow.gBrowser;
     this._anchor = tabBrowser.selectedBrowser.popupAnchor;
-    this._anchor.left = aPanelData.contentRect.left;
-    this._anchor.top = aPanelData.contentRect.top;
-    this._anchor.width = aPanelData.contentRect.width;
-    this._anchor.height = aPanelData.contentRect.height;
+    this._anchor.style.left = aPanelData.contentRect.left + "px";
+    this._anchor.style.top = aPanelData.contentRect.top + "px";
+    this._anchor.style.width = aPanelData.contentRect.width + "px";
+    this._anchor.style.height = aPanelData.contentRect.height + "px";
     this._anchor.hidden = false;
 
     // Display the panel if it isn't already visible.
     if (!previouslyShown) {
       // Cleanup after the popup is hidden
       this._panel.addEventListener("popuphiding", this, true);
 
       // Hide if the user scrolls the page
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1573804224556">
+<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1574334260570">
   <emItems>
     <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1211" id="flvto@hotger.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
@@ -3552,16 +3552,24 @@
     <emItem blockID="19c04aaf-c02d-4583-9978-c519245cd4fb" id="/^((\{c8476e06-0a50-41ec-a840-a2db436cf38c\})|(youtube\.downloader@firefox\.dev)|(youtubedownloader@firefox\.com)|(youtubehddownloader@firefox\.com)|(youtube\.d@firefox\.dev)|(advblock@blocker)|(YouTube@HD\.Downloader)|(adt-3\.0\.7@blocker)|(\{7131880e-d327-4802-b5ed-fee33c281abd\})|(\{5cb84843-504e-406e-8fb7-051c7fc3c9d3\})|(\{d8686bde-e666-4084-ae01-c75aa7a30f93\})|(\{96d35545-d94a-4ee1-bc43-d3055650587c\})|(ali-image-search@4\.0)|(\{e7634c48-0d36-448e-891e-b2036beebcd0\})|(\{442de29c-b710-45d4-b121-7b4be387c327\})|(lite-vpn-4\.1\.14@gmail\.com))$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="d39750c3-a305-4487-bc0f-21500c3597dd" id="/^((_1gMembers_@www\.inboxace\.com)|(_39Members_@www\.mapsgalaxy\.com)|(_5zMembers_@www\.couponxplorer\.com)|(_65Members_@download\.fromdoctopdf\.com)|(_flMembers_@free\.myformsfinder\.com))$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="28831b71-8a9a-466e-9f34-1f40f2f0e27a" id="/^((\{333d6dd8-43ed-4f01-944d-b7c737a5db72\})|(\{f5712532-777e-4080-b6b9-d548040f7675\})|(\{abf3f8d7-bc95-4dd5-ab96-c390ad5f8756\})|(\{f769002a-608d-4a8c-adc4-05f4857ff3ae\})|(\{1980667f-9bde-4e7e-8d0c-132db12c1b30\}))$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="9729654a-6cd1-4e20-8cf5-47a3ff544ef5" id="/^((youtubetomp3@addons\.youtube\.com)|(addons-mozilla@youtube-to-mp4))$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
   </emItems>
   <pluginItems>
     <pluginItem blockID="p332">
       <match name="filename" exp="libflashplayer\.so"/>
       <match name="description" exp="^Shockwave Flash 11.(0|1) r[0-9]{1,3}$"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange severity="0" vulnerabilitystatus="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -321,16 +321,18 @@ pref("browser.urlbar.switchTabs.adoptInt
 pref("browser.urlbar.openintab", false);
 
 // This is disabled until Bug 1340663 figures out the remaining requirements.
 pref("browser.urlbar.usepreloadedtopurls.enabled", false);
 pref("browser.urlbar.usepreloadedtopurls.expire_days", 14);
 
 // Whether the quantum bar displays the major design update.
 pref("browser.urlbar.megabar", false);
+// Whether we expand the font size when the megabar is focused.
+pref("browser.urlbar.megabar.expandTextOnFocus", false);
 // Whether the megabar displays the permanent search icon.
 pref("browser.urlbar.searchIcon", false);
 pref("browser.urlbar.view.stripHttps", false);
 
 pref("browser.urlbar.openViewOnFocus", false);
 pref("browser.urlbar.eventTelemetry.enabled", false);
 
 pref("browser.altClickSave", false);
--- a/browser/base/content/aboutDialog.xul
+++ b/browser/base/content/aboutDialog.xul
@@ -26,17 +26,17 @@
         inwindowmenu="false"
 #else
         data-l10n-id="aboutDialog-title"
 #endif
         role="dialog"
         aria-describedby="version distribution distributionId communityDesc contributeDesc trademark"
         >
 #ifdef XP_MACOSX
-#include macWindow.inc.xul
+#include macWindow.inc.xhtml
 #endif
 
   <linkset>
     <html:link rel="localization" href="branding/brand.ftl"/>
     <html:link rel="localization" href="browser/aboutDialog.ftl"/>
   </linkset>
 
   <script src="chrome://browser/content/aboutDialog.js"/>
rename from browser/base/content/browser-allTabsMenu.inc.xul
rename to browser/base/content/browser-allTabsMenu.inc.xhtml
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -105,17 +105,17 @@
              label="&minimizeWindow.label;"
              oncommand="window.minimize();" />
     <command id="zoomWindow"
              label="&zoomWindow.label;"
              oncommand="zoomWindow();" />
 #endif
   </commandset>
 
-#include ../../components/places/content/placesCommands.inc.xul
+#include ../../components/places/content/placesCommands.inc.xhtml
 
   <keyset id="mainKeyset">
     <key id="key_newNavigator"
          key="&newNavigatorCmd.key;"
          command="cmd_newNavigator"
          modifiers="accel" reserved="true"/>
     <key id="key_newNavigatorTab" key="&tabCmd.commandkey;" modifiers="accel"
          command="cmd_newNavigatorTabNoEvent" reserved="true"/>
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -939,16 +939,17 @@ menupopup[emptyplacesresult="true"] > .h
 #invalid-form-popup > description {
   max-width: 280px;
 }
 
 .popup-anchor {
   /* should occupy space but not be visible */
   opacity: 0;
   pointer-events: none;
+  position: absolute;
 }
 
 browser[tabmodalPromptShowing] {
   -moz-user-focus: none !important;
 }
 
 /* Status panel */
 
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -78,17 +78,17 @@
   <link rel="localization" href="browser/menubar.ftl"/>
   <link rel="localization" href="browser/protectionsPanel.ftl"/>
   <link rel="localization" href="browser/appmenu.ftl"/>
 
   <title>&mainWindow.title;</title>
 
 # All JS files which are needed by browser.xhtml and other top level windows to
 # support MacOS specific features *must* go into the global-scripts.inc file so
-# that they can be shared with macWindow.inc.xul.
+# that they can be shared with macWindow.inc.xhtml.
 #include global-scripts.inc
 
 <script>
   /* eslint-env mozilla/browser-window */
   Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
   Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
   if (AppConstants.MOZ_DATA_REPORTING) {
     Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
@@ -120,17 +120,17 @@
   // may be leaking things because they will never be destroyed after.
   window.addEventListener("DOMContentLoaded",
     gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
 </script>
 </head>
 <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 # All sets except for popupsets (commands, keys, and stringbundles)
 # *must* go into the browser-sets.inc file so that they can be shared with other
-# top level windows in macWindow.inc.xul.
+# top level windows in macWindow.inc.xhtml.
 #include browser-sets.inc
   <popupset id="mainPopupSet">
     <menupopup id="tabContextMenu"
                onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);"
                onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
       <menuitem id="context_reloadTab" data-lazy-l10n-id="reload-tab"
                 oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
       <menuitem id="context_reloadSelectedTabs" data-lazy-l10n-id="reload-tabs" hidden="true"
@@ -278,17 +278,17 @@
       </box>
       <html:div id="editBookmarkPanelInfoArea">
         <html:div id="editBookmarkPanelRecommendation"></html:div>
         <html:div id="editBookmarkPanelFaviconContainer">
           <html:img id="editBookmarkPanelFavicon"/>
         </html:div>
         <html:div id="editBookmarkPanelImage"></html:div>
       </html:div>
-#include ../../components/places/content/editBookmarkPanel.inc.xul
+#include ../../components/places/content/editBookmarkPanel.inc.xhtml
       <vbox id="editBookmarkPanelBottomContent"
             flex="1">
         <checkbox id="editBookmarkPanel_showForNewBookmarks"
                   label="&editBookmark.showForNewBookmarks.label;"
                   accesskey="&editBookmark.showForNewBookmarks.accesskey;"
                   oncommand="StarUI.onShowForNewBookmarksCheckboxCommand();"/>
       </vbox>
       <hbox id="editBookmarkPanelBottomButtons"
@@ -508,17 +508,17 @@
     </menupopup>
 
     <menupopup id="pictureInPictureToggleContextMenu">
       <menuitem label="&pictureInPictureHideToggle.label;"
                 accesskey="&pictureInPictureHideToggle.accesskey;"
                 oncommand="PictureInPicture.hideToggle();" />
     </menupopup>
 
-#include ../../components/places/content/placesContextMenu.inc.xul
+#include ../../components/places/content/placesContextMenu.inc.xhtml
 
     <panel id="ctrlTab-panel" hidden="true" norestorefocus="true" level="top">
       <hbox id="ctrlTab-previews"/>
       <hbox id="ctrlTab-showAll-container" pack="center"/>
     </panel>
 
     <panel id="pageActionPanel"
            class="cui-widget-panel panel-no-padding"
@@ -580,17 +580,17 @@
                 oncommand="BrowserPageActions.togglePinningForContextAction();"
                 data-l10n-id="page-action-remove-from-urlbar"/>
       <menuseparator class="pageActionContextMenuItem extensionPinned extensionUnpinned"/>
       <menuitem class="pageActionContextMenuItem extensionPinned extensionUnpinned"
                 oncommand="BrowserPageActions.openAboutAddonsForContextAction();"
                 data-l10n-id="page-action-manage-extension"/>
     </menupopup>
 
-#include ../../components/places/content/bookmarksHistoryTooltip.inc.xul
+#include ../../components/places/content/bookmarksHistoryTooltip.inc.xhtml
 
     <tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
 
     <tooltip id="back-button-tooltip">
       <description class="tooltip-label" value="&backButton.tooltip;"/>
 #ifdef XP_MACOSX
       <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
 #else
@@ -604,21 +604,21 @@
       <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
 #else
       <description class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
 #endif
     </tooltip>
 
 #include popup-notifications.inc
 
-#include ../../components/customizableui/content/panelUI.inc.xul
-#include ../../components/controlcenter/content/identityPanel.inc.xul
-#include ../../components/controlcenter/content/protectionsPanel.inc.xul
-#include ../../components/downloads/content/downloadsPanel.inc.xul
-#include browser-allTabsMenu.inc.xul
+#include ../../components/customizableui/content/panelUI.inc.xhtml
+#include ../../components/controlcenter/content/identityPanel.inc.xhtml
+#include ../../components/controlcenter/content/protectionsPanel.inc.xhtml
+#include ../../components/downloads/content/downloadsPanel.inc.xhtml
+#include browser-allTabsMenu.inc.xhtml
 
     <hbox id="downloads-animation-container" mousethrough="always">
       <vbox id="downloads-notification-anchor" hidden="true">
         <vbox id="downloads-indicator-notification"/>
       </vbox>
     </hbox>
 
     <tooltip id="dynamic-shortcut-tooltip"
@@ -700,17 +700,17 @@
 #ifdef MENUBAR_CAN_AUTOHIDE
                toolbarname="&menubarCmd.label;"
                accesskey="&menubarCmd.accesskey;"
                autohide="true"
 #endif
                context="toolbar-context-menu">
         <toolbaritem id="menubar-items" align="center">
 # The entire main menubar is placed into browser-menubar.inc, so that it can be
-# shared with other top level windows in macWindow.inc.xul.
+# shared with other top level windows in macWindow.inc.xhtml.
 #include browser-menubar.inc
         </toolbaritem>
         <spacer flex="1" skipintoolbarset="true" ordinal="1000"/>
 #include titlebar-items.inc.xul
       </toolbar>
 
       <toolbar id="TabsToolbar"
                class="browser-toolbar titlebar-color"
@@ -1403,17 +1403,17 @@
         <tabpanels id="tabbrowser-tabpanels"
                     flex="1" class="plain" selectedIndex="0"/>
       </tabbox>
     </vbox>
     <vbox id="browser-border-end" hidden="true" layer="true"/>
   </hbox>
 
   <box id="customization-container" flex="1" renderroot="content" hidden="true"><![CDATA[
-#include ../../components/customizableui/content/customizeMode.inc.xul
+#include ../../components/customizableui/content/customizeMode.inc.xhtml
   ]]></box>
 
 # Everything that needs to straddle the line between chrome and content, without being
 # its own widget-level window, needs to go in here, and set the renderroot="popover"
 # attribute, or it will fail to render properly in WebRender.
 #include popovers.inc
 
   <vbox id="browser-bottombox" layer="true" renderroot="content">
--- a/browser/base/content/hiddenWindowMac.xhtml
+++ b/browser/base/content/hiddenWindowMac.xhtml
@@ -11,17 +11,17 @@
 #include browser-doctype.inc
 ]>
 
 <window id="main-window"
         xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         data-l10n-sync="true">
 
-#include macWindow.inc.xul
+#include macWindow.inc.xhtml
 
 <!-- Dock menu -->
 <popupset>
   <menupopup id="menu_mac_dockmenu">
     <!-- The command cannot be cmd_newNavigator because we need to activate
          the application. -->
     <menuitem label="&newNavigatorCmd.label;" oncommand="OpenBrowserWindowFromDockMenu();"
               id="macDockMenuNewWindow" />
rename from browser/base/content/macWindow.inc.xul
rename to browser/base/content/macWindow.inc.xhtml
--- a/browser/base/content/moz.build
+++ b/browser/base/content/moz.build
@@ -146,17 +146,17 @@ with Files("browser-sync.js"):
     BUG_COMPONENT = ("Firefox", "Sync")
 
 with Files("contentSearch*"):
     BUG_COMPONENT = ("Firefox", "Search")
 
 with Files("hiddenWindowMac.xhtml"):
     BUG_COMPONENT = ("Firefox", "Site Permissions")
 
-with Files("macWindow.inc.xul"):
+with Files("macWindow.inc.xhtml"):
     BUG_COMPONENT = ("Firefox", "Shell Integration")
 
 with Files("tabbrowser*"):
     BUG_COMPONENT = ("Firefox", "Tabbed Browser")
 
 with Files("browser-allTabsMenu.js"):
     BUG_COMPONENT = ("Firefox", "Tabbed Browser")
 
--- a/browser/base/content/pageinfo/pageInfo.xul
+++ b/browser/base/content/pageinfo/pageInfo.xul
@@ -24,17 +24,17 @@
   align="stretch"
   screenX="10" screenY="10"
   persist="screenX screenY width height sizemode">
 
   <linkset>
     <html:link rel="localization" href="browser/pageInfo.ftl"/>
   </linkset>
   #ifdef XP_MACOSX
-  #include ../macWindow.inc.xul
+  #include ../macWindow.inc.xhtml
   #else
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://global/content/editMenuOverlay.js"/>
   <script src="chrome://browser/content/utilityOverlay.js"/>
   #endif
   <script src="chrome://global/content/contentAreaUtils.js"/>
   <script src="chrome://global/content/treeUtils.js"/>
   <script src="chrome://browser/content/pageinfo/pageInfo.js"/>
--- a/browser/base/content/test/performance/browser_startup_mainthreadio.js
+++ b/browser/base/content/test/performance/browser_startup_mainthreadio.js
@@ -352,22 +352,30 @@ const startupPhases = {
       close: 1,
     },
     {
       // We only hit this for new profiles.
       path: "XREAppDist:distribution.ini",
       condition: WIN,
       stat: 1,
     },
+    // Bug 1547693
     {
       path: "*WindowsApps/microsoft.windowscommunicationsapps*",
       condition: WIN,
       ignoreIfUnused: true,
       stat: 3,
     },
+    // Bug 1545167
+    {
+      path: "*Microsoft.MicrosoftEdge*",
+      condition: WIN,
+      ignoreIfUnused: true,
+      stat: 3,
+    },
     {
       // bug 1545139
       path: "*Fonts/StaticCache.dat",
       condition: WIN,
       ignoreIfUnused: true, // Only on Win7
       read: 1,
     },
     {
rename from browser/components/controlcenter/content/identityPanel.inc.xul
rename to browser/components/controlcenter/content/identityPanel.inc.xhtml
rename from browser/components/controlcenter/content/protectionsPanel.inc.xul
rename to browser/components/controlcenter/content/protectionsPanel.inc.xhtml
rename from browser/components/customizableui/content/customizeMode.inc.xul
rename to browser/components/customizableui/content/customizeMode.inc.xhtml
rename from browser/components/customizableui/content/panelUI.inc.xul
rename to browser/components/customizableui/content/panelUI.inc.xhtml
--- a/browser/components/downloads/content/contentAreaDownloadsView.xul
+++ b/browser/components/downloads/content/contentAreaDownloadsView.xul
@@ -43,12 +43,12 @@
     <richlistbox flex="1"
                  seltype="multiple"
                  id="downloadsRichListBox"
                  context="downloadsContextMenu"/>
     <description id="downloadsListEmptyDescription"
                  value="&downloadsListEmpty.label;"
                  mousethrough="always"/>
   </stack>
-#include downloadsCommands.inc.xul
-#include downloadsStrings.inc.xul
-#include downloadsContextMenu.inc.xul
+#include downloadsCommands.inc.xhtml
+#include downloadsStrings.inc.xhtml
+#include downloadsContextMenu.inc.xhtml
 </window>
rename from browser/components/downloads/content/downloadsCommands.inc.xul
rename to browser/components/downloads/content/downloadsCommands.inc.xhtml
rename from browser/components/downloads/content/downloadsContextMenu.inc.xul
rename to browser/components/downloads/content/downloadsContextMenu.inc.xhtml
rename from browser/components/downloads/content/downloadsPanel.inc.xul
rename to browser/components/downloads/content/downloadsPanel.inc.xhtml
--- a/browser/components/downloads/content/downloadsPanel.inc.xul
+++ b/browser/components/downloads/content/downloadsPanel.inc.xhtml
@@ -1,13 +1,13 @@
 <!-- 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/. -->
 
-#include downloadsStrings.inc.xul
+#include downloadsStrings.inc.xhtml
 
 <commandset>
   <command id="downloadsCmd_doDefault"
            oncommand="goDoCommand('downloadsCmd_doDefault')"/>
   <command id="downloadsCmd_pauseResume"
            oncommand="goDoCommand('downloadsCmd_pauseResume')"/>
   <command id="downloadsCmd_cancel"
            oncommand="goDoCommand('downloadsCmd_cancel')"/>
rename from browser/components/downloads/content/downloadsStrings.inc.xul
rename to browser/components/downloads/content/downloadsStrings.inc.xhtml
--- a/browser/components/extensions/ExtensionControlledPopup.jsm
+++ b/browser/components/extensions/ExtensionControlledPopup.jsm
@@ -81,17 +81,17 @@ class ExtensionControlledPopup {
    *                 An observer topic to trigger the popup on with Services.obs. If the
    *                 doorhanger should appear on a specific window include it as the
    *                 subject in the observer event.
    * @param {string} opts.anchorId
    *                 The id to anchor the popupnotification on. If it is not provided
    *                 then it will anchor to a browser action or the app menu.
    * @param {string} opts.popupnotificationId
    *                 The id for the popupnotification element in the markup. This
-   *                 element should be defined in panelUI.inc.xul.
+   *                 element should be defined in panelUI.inc.xhtml.
    * @param {string} opts.settingType
    *                 The setting type to check in ExtensionSettingsStore to retrieve
    *                 the controlling extension.
    * @param {string} opts.settingKey
    *                 The setting key to check in ExtensionSettingsStore to retrieve
    *                 the controlling extension.
    * @param {string} opts.descriptionId
    *                 The id of the element where the description should be displayed.
--- a/browser/components/extensions/parent/ext-bookmarks.js
+++ b/browser/components/extensions/parent/ext-bookmarks.js
@@ -1,20 +1,24 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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/. */
 
 "use strict";
 
-var { PlacesUtils } = ChromeUtils.import(
-  "resource://gre/modules/PlacesUtils.jsm"
+var { XPCOMUtils } = ChromeUtils.import(
+  "resource://gre/modules/XPCOMUtils.jsm"
 );
 
+XPCOMUtils.defineLazyModuleGetters(this, {
+  PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
+});
+
 var { ExtensionError } = ExtensionUtils;
 
 const { TYPE_BOOKMARK, TYPE_FOLDER, TYPE_SEPARATOR } = PlacesUtils.bookmarks;
 
 const BOOKMARKS_TYPES_TO_API_TYPES_MAP = new Map([
   [TYPE_BOOKMARK, "bookmark"],
   [TYPE_FOLDER, "folder"],
   [TYPE_SEPARATOR, "separator"],
--- a/browser/components/extensions/parent/ext-browsingData.js
+++ b/browser/components/extensions/parent/ext-browsingData.js
@@ -1,45 +1,29 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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/. */
 
 "use strict";
 
-var { PlacesUtils } = ChromeUtils.import(
-  "resource://gre/modules/PlacesUtils.jsm"
+var { XPCOMUtils } = ChromeUtils.import(
+  "resource://gre/modules/XPCOMUtils.jsm"
 );
 
-ChromeUtils.defineModuleGetter(
-  this,
-  "Preferences",
-  "resource://gre/modules/Preferences.jsm"
-);
-ChromeUtils.defineModuleGetter(
-  this,
-  "Sanitizer",
-  "resource:///modules/Sanitizer.jsm"
-);
-ChromeUtils.defineModuleGetter(
-  this,
-  "Services",
-  "resource://gre/modules/Services.jsm"
-);
-ChromeUtils.defineModuleGetter(
-  this,
-  "setTimeout",
-  "resource://gre/modules/Timer.jsm"
-);
-ChromeUtils.defineModuleGetter(
-  this,
-  "ServiceWorkerCleanUp",
-  "resource://gre/modules/ServiceWorkerCleanUp.jsm"
-);
+XPCOMUtils.defineLazyModuleGetters(this, {
+  LoginHelper: "resource://gre/modules/LoginHelper.jsm",
+  PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
+  Preferences: "resource://gre/modules/Preferences.jsm",
+  Sanitizer: "resource:///modules/Sanitizer.jsm",
+  Services: "resource://gre/modules/Services.jsm",
+  setTimeout: "resource://gre/modules/Timer.jsm",
+  ServiceWorkerCleanUp: "resource://gre/modules/ServiceWorkerCleanUp.jsm",
+});
 
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "quotaManagerService",
   "@mozilla.org/dom/quota-manager-service;1",
   "nsIQuotaManagerService"
 );
 
@@ -226,34 +210,27 @@ const clearLocalStorage = async function
       });
     });
 
     return Promise.all(promises);
   }
 };
 
 const clearPasswords = async function(options) {
-  let loginManager = Services.logins;
   let yieldCounter = 0;
 
-  if (options.since) {
-    // Iterate through the logins and delete any updated after our cutoff.
-    let logins = loginManager.getAllLogins();
-    for (let login of logins) {
-      login.QueryInterface(Ci.nsILoginMetaInfo);
-      if (login.timePasswordChanged >= options.since) {
-        loginManager.removeLogin(login);
-        if (++yieldCounter % YIELD_PERIOD == 0) {
-          await new Promise(resolve => setTimeout(resolve, 0)); // Don't block the main thread too long.
-        }
+  // Iterate through the logins and delete any updated after our cutoff.
+  for (let login of await LoginHelper.getAllUserFacingLogins()) {
+    login.QueryInterface(Ci.nsILoginMetaInfo);
+    if (!options.since || login.timePasswordChanged >= options.since) {
+      Services.logins.removeLogin(login);
+      if (++yieldCounter % YIELD_PERIOD == 0) {
+        await new Promise(resolve => setTimeout(resolve, 0)); // Don't block the main thread too long.
       }
     }
-  } else {
-    // Remove everything.
-    loginManager.removeAllLogins();
   }
 };
 
 const clearPluginData = options => {
   return Sanitizer.items.pluginData.clear(makeRange(options));
 };
 
 const doRemoval = (options, dataToRemove, extension) => {
--- a/browser/components/extensions/parent/ext-history.js
+++ b/browser/components/extensions/parent/ext-history.js
@@ -1,25 +1,24 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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/. */
 
 "use strict";
 
-var { PlacesUtils } = ChromeUtils.import(
-  "resource://gre/modules/PlacesUtils.jsm"
+var { XPCOMUtils } = ChromeUtils.import(
+  "resource://gre/modules/XPCOMUtils.jsm"
 );
 
-ChromeUtils.defineModuleGetter(
-  this,
-  "Services",
-  "resource://gre/modules/Services.jsm"
-);
+XPCOMUtils.defineLazyModuleGetters(this, {
+  PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
+  Services: "resource://gre/modules/Services.jsm",
+});
 
 var { normalizeTime } = ExtensionCommon;
 
 let nsINavHistoryService = Ci.nsINavHistoryService;
 const TRANSITION_TO_TRANSITION_TYPES_MAP = new Map([
   ["link", nsINavHistoryService.TRANSITION_LINK],
   ["typed", nsINavHistoryService.TRANSITION_TYPED],
   ["auto_bookmark", nsINavHistoryService.TRANSITION_BOOKMARK],
--- a/browser/components/extensions/test/xpcshell/test_ext_browsingData_passwords.js
+++ b/browser/components/extensions/test/xpcshell/test_ext_browsingData_passwords.js
@@ -7,52 +7,44 @@ XPCOMUtils.defineLazyServiceGetter(
   "loginManager",
   "@mozilla.org/login-manager;1",
   "nsILoginManager"
 );
 
 const REFERENCE_DATE = Date.now();
 const LOGIN_USERNAME = "username";
 const LOGIN_PASSWORD = "password";
-const LOGIN_USERNAME_FIELD = "username_field";
-const LOGIN_PASSWORD_FIELD = "password_field";
 const OLD_HOST = "http://mozilla.org";
 const NEW_HOST = "http://mozilla.com";
+const FXA_HOST = "chrome://FirefoxAccounts";
 
 function checkLoginExists(host, shouldExist) {
   let logins = loginManager.findLogins(host, "", null);
   equal(
     logins.length,
     shouldExist ? 1 : 0,
     `Login was ${shouldExist ? "" : "not "} found.`
   );
 }
 
 function addLogin(host, timestamp) {
   checkLoginExists(host, false);
   let login = Cc["@mozilla.org/login-manager/loginInfo;1"].createInstance(
     Ci.nsILoginInfo
   );
-  login.init(
-    host,
-    "",
-    null,
-    LOGIN_USERNAME,
-    LOGIN_PASSWORD,
-    LOGIN_USERNAME_FIELD,
-    LOGIN_PASSWORD_FIELD
-  );
+  login.init(host, "", null, LOGIN_USERNAME, LOGIN_PASSWORD);
   login.QueryInterface(Ci.nsILoginMetaInfo);
   login.timePasswordChanged = timestamp;
   loginManager.addLogin(login);
   checkLoginExists(host, true);
 }
 
 async function setupPasswords() {
   loginManager.removeAllLogins();
+  addLogin(FXA_HOST, REFERENCE_DATE);
   addLogin(NEW_HOST, REFERENCE_DATE);
   addLogin(OLD_HOST, REFERENCE_DATE - 10000);
 }
 
 add_task(async function testPasswords() {
   function background() {
     browser.test.onMessage.addListener(async (msg, options) => {
       if (msg == "removeHistory") {
@@ -74,32 +66,35 @@ add_task(async function testPasswords() 
   async function testRemovalMethod(method) {
     // Clear passwords with no since value.
     await setupPasswords();
     extension.sendMessage(method, {});
     await extension.awaitMessage("passwordsRemoved");
 
     checkLoginExists(OLD_HOST, false);
     checkLoginExists(NEW_HOST, false);
+    checkLoginExists(FXA_HOST, true);
 
     // Clear passwords with recent since value.
     await setupPasswords();
     extension.sendMessage(method, { since: REFERENCE_DATE - 1000 });
     await extension.awaitMessage("passwordsRemoved");
 
     checkLoginExists(OLD_HOST, true);
     checkLoginExists(NEW_HOST, false);
+    checkLoginExists(FXA_HOST, true);
 
     // Clear passwords with old since value.
     await setupPasswords();
     extension.sendMessage(method, { since: REFERENCE_DATE - 20000 });
     await extension.awaitMessage("passwordsRemoved");
 
     checkLoginExists(OLD_HOST, false);
     checkLoginExists(NEW_HOST, false);
+    checkLoginExists(FXA_HOST, true);
   }
 
   await extension.startup();
 
   await testRemovalMethod("removePasswords");
   await testRemovalMethod("remove");
 
   await extension.unload();
--- a/browser/components/newtab/lib/ASRouter.jsm
+++ b/browser/components/newtab/lib/ASRouter.jsm
@@ -105,16 +105,20 @@ const STARTPAGE_VERSION = "6";
 // Remote Settings
 const RS_SERVER_PREF = "services.settings.server";
 const RS_MAIN_BUCKET = "main";
 const RS_COLLECTION_L10N = "ms-language-packs"; // "ms" stands for Messaging System
 const RS_PROVIDERS_WITH_L10N = ["cfr", "cfr-fxa"];
 const RS_FLUENT_VERSION = "v1";
 const RS_FLUENT_RECORD_PREFIX = `cfr-${RS_FLUENT_VERSION}`;
 const RS_DOWNLOAD_MAX_RETRIES = 2;
+// This is the list of providers for which we want to cache the targeting
+// expression result and reuse between calls. Cache duration is defined in
+// ASRouterTargeting where evaluation takes place.
+const JEXL_PROVIDER_CACHE = new Set(["snippets"]);
 
 // To observe the app locale change notification.
 const TOPIC_INTL_LOCALE_CHANGED = "intl:app-locales-changed";
 // To observe the pref that controls if ASRouter should use the remote Fluent files for l10n.
 const USE_REMOTE_L10N_PREF =
   "browser.newtabpage.activity-stream.asrouter.useRemoteL10n";
 
 /**
@@ -1210,45 +1214,55 @@ class _ASRouter {
         return personalizedCfrScores;
       },
       get scoreThreshold() {
         return personalizedCfrThreshold;
       },
     };
   }
 
-  _findAllMessages(candidateMessages, trigger, ordered = false) {
+  _findAllMessages(
+    candidateMessages,
+    trigger,
+    { ordered = false, shouldCache = false } = {}
+  ) {
     const messages = candidateMessages.filter(m =>
       this.isBelowFrequencyCaps(m)
     );
     const context = this._getMessagesContext();
 
     return ASRouterTargeting.findAllMatchingMessages({
       messages,
       trigger,
       context,
       onError: this._handleTargetingError,
       ordered,
+      shouldCache,
     });
   }
 
-  _findMessage(candidateMessages, trigger, ordered = false) {
+  _findMessage(
+    candidateMessages,
+    trigger,
+    { ordered = false, shouldCache = false } = {}
+  ) {
     const messages = candidateMessages.filter(m =>
       this.isBelowFrequencyCaps(m)
     );
     const context = this._getMessagesContext();
 
     // Find a message that matches the targeting context as well as the trigger context (if one is provided)
     // If no trigger is provided, we should find a message WITHOUT a trigger property defined.
     return ASRouterTargeting.findMatchingMessage({
       messages,
       trigger,
       context,
       onError: this._handleTargetingError,
       ordered,
+      shouldCache,
     });
   }
 
   async evaluateExpression(target, { expression, context }) {
     const channel = target || this.messageChannel;
     let evaluationStatus;
     try {
       evaluationStatus = {
@@ -1348,17 +1362,17 @@ class _ASRouter {
           break;
         }
       }
     } else {
       // Find all messages that matches the targeting context
       const allMessages = await this._findAllMessages(
         bundledMessagesOfSameTemplate,
         trigger,
-        true
+        { ordered: true }
       );
 
       if (allMessages && allMessages.length) {
         // Retrieve enough messages needed to fill a bundle
         // Only copy the content of the message (that's what the UI cares about)
         result = result.concat(
           allMessages.slice(0, bundleLength).map(message => ({
             content: message.content,
@@ -1643,34 +1657,38 @@ class _ASRouter {
       }
       if (triggerId && m.trigger.id !== triggerId) {
         return false;
       }
 
       return true;
     });
 
+    const shouldCache = msgs.every(m => JEXL_PROVIDER_CACHE.has(m.provider));
+
     if (returnAll) {
       return this._findAllMessages(
         msgs,
         triggerId && {
           id: triggerId,
           param: triggerParam,
           context: triggerContext,
-        }
+        },
+        { shouldCache }
       );
     }
 
     return this._findMessage(
       msgs,
       triggerId && {
         id: triggerId,
         param: triggerParam,
         context: triggerContext,
-      }
+      },
+      { shouldCache }
     );
   }
 
   async setMessageById(id, target, force = true, action = {}) {
     await this.setState({ lastMessageId: id });
     const newMessage = this.getMessageById(id);
 
     await this._sendMessageToTarget(newMessage, target, action.data, force);
--- a/browser/components/newtab/lib/ASRouterTargeting.jsm
+++ b/browser/components/newtab/lib/ASRouterTargeting.jsm
@@ -114,16 +114,19 @@ const MOZ_JEXL_FILEPATH = "mozjexl";
 
 const { activityStreamProvider: asProvider } = NewTabUtils;
 
 const FRECENT_SITES_UPDATE_INTERVAL = 6 * 60 * 60 * 1000; // Six hours
 const FRECENT_SITES_IGNORE_BLOCKED = false;
 const FRECENT_SITES_NUM_ITEMS = 25;
 const FRECENT_SITES_MIN_FRECENCY = 100;
 
+const CACHE_EXPIRATION = 60 * 1000;
+const jexlEvaluationCache = new Map();
+
 /**
  * CachedTargetingGetter
  * @param property {string} Name of the method called on ActivityStreamProvider
  * @param options {{}?} Options object passsed to ActivityStreamProvider method
  * @param updateInterval {number?} Update interval for query. Defaults to FRECENT_SITES_UPDATE_INTERVAL
  */
 function CachedTargetingGetter(
   property,
@@ -558,31 +561,62 @@ this.ASRouterTargeting = {
         trigger.param.url &&
         new MatchPatternSet(candidateMessageTrigger.patterns).matches(
           trigger.param.url
         ))
     );
   },
 
   /**
+   * getCachedEvaluation - Return a cached jexl evaluation if available
+   *
+   * @param {string} targeting JEXL expression to lookup
+   * @returns {obj|null} Object with value result or null if not available
+   */
+  getCachedEvaluation(targeting) {
+    if (jexlEvaluationCache.has(targeting)) {
+      const { timestamp, value } = jexlEvaluationCache.get(targeting);
+      if (Date.now() - timestamp <= CACHE_EXPIRATION) {
+        return { value };
+      }
+      jexlEvaluationCache.delete(targeting);
+    }
+
+    return null;
+  },
+
+  /**
    * checkMessageTargeting - Checks is a message's targeting parameters are satisfied
    *
    * @param {*} message An AS router message
    * @param {obj} context A FilterExpression context
    * @param {func} onError A function to handle errors (takes two params; error, message)
+   * @param {boolean} shouldCache Should the JEXL evaluations be cached and reused.
    * @returns
    */
-  async checkMessageTargeting(message, context, onError) {
+  async checkMessageTargeting(message, context, onError, shouldCache) {
     // If no targeting is specified,
     if (!message.targeting) {
       return true;
     }
     let result;
     try {
+      if (shouldCache) {
+        result = this.getCachedEvaluation(message.targeting);
+        if (result) {
+          return result.value;
+        }
+      }
       result = await this.isMatch(message.targeting, context);
+      if (shouldCache) {
+        jexlEvaluationCache.set(message.targeting, {
+          timestamp: Date.now(),
+          value: result,
+        });
+      }
     } catch (error) {
       Cu.reportError(error);
       if (onError) {
         const type = error.fileName.includes(MOZ_JEXL_FILEPATH)
           ? this.ERROR_TYPES.MALFORMED_EXPRESSION
           : this.ERROR_TYPES.OTHER_ERROR;
         onError(type, error, message);
       }
@@ -599,52 +633,60 @@ this.ASRouterTargeting = {
     return sortMessagesByPriority(sortedMessages);
   },
 
   _getCombinedContext(trigger, context) {
     const triggerContext = trigger ? trigger.context : {};
     return this.combineContexts(context, triggerContext);
   },
 
-  _isMessageMatch(message, trigger, context, onError) {
+  _isMessageMatch(message, trigger, context, onError, shouldCache = false) {
     return (
       message &&
       (trigger
         ? this.isTriggerMatch(trigger, message.trigger)
         : !message.trigger) &&
       // If a trigger expression was passed to this function, the message should match it.
       // Otherwise, we should choose a message with no trigger property (i.e. a message that can show up at any time)
-      this.checkMessageTargeting(message, context, onError)
+      this.checkMessageTargeting(message, context, onError, shouldCache)
     );
   },
 
   /**
    * findMatchingMessage - Given an array of messages, returns one message
    *                       whos targeting expression evaluates to true
    *
    * @param {Array} messages An array of AS router messages
    * @param {trigger} string A trigger expression if a message for that trigger is desired
    * @param {obj|null} context A FilterExpression context. Defaults to TargetingGetters above.
    * @param {func} onError A function to handle errors (takes two params; error, message)
    * @param {func} ordered An optional param when true sort message by order specified in message
+   * @param {boolean} shouldCache Should the JEXL evaluations be cached and reused.
    * @returns {obj} an AS router message
    */
   async findMatchingMessage({
     messages,
     trigger,
     context,
     onError,
     ordered = false,
+    shouldCache = false,
   }) {
     const sortedMessages = this._getSortedMessages(messages, ordered);
     const combinedContext = this._getCombinedContext(trigger, context);
 
     for (const candidate of sortedMessages) {
       if (
-        await this._isMessageMatch(candidate, trigger, combinedContext, onError)
+        await this._isMessageMatch(
+          candidate,
+          trigger,
+          combinedContext,
+          onError,
+          shouldCache
+        )
       ) {
         return candidate;
       }
     }
     return null;
   },
 
   /**
--- a/browser/components/newtab/lib/ActivityStream.jsm
+++ b/browser/components/newtab/lib/ActivityStream.jsm
@@ -652,16 +652,35 @@ this.ActivityStream = class ActivityStre
     this._defaultPrefs = new DefaultPrefs(PREFS_CONFIG);
   }
 
   init() {
     try {
       this._updateDynamicPrefs();
       this._defaultPrefs.init();
 
+      // Look for outdated user pref values that might have been accidentally
+      // persisted when restoring the original pref value at the end of an
+      // experiment across versions with a different default value.
+      const DS_CONFIG =
+        "browser.newtabpage.activity-stream.discoverystream.config";
+      if (
+        Services.prefs.prefHasUserValue(DS_CONFIG) &&
+        [
+          // Firefox 66
+          `{"api_key_pref":"extensions.pocket.oAuthConsumerKey","enabled":false,"show_spocs":true,"layout_endpoint":"https://getpocket.com/v3/newtab/layout?version=1&consumer_key=$apiKey&layout_variant=basic"}`,
+          // Firefox 67
+          `{"api_key_pref":"extensions.pocket.oAuthConsumerKey","enabled":false,"show_spocs":true,"layout_endpoint":"https://getpocket.cdn.mozilla.net/v3/newtab/layout?version=1&consumer_key=$apiKey&layout_variant=basic"}`,
+          // Firefox 68
+          `{"api_key_pref":"extensions.pocket.oAuthConsumerKey","collapsible":true,"enabled":false,"show_spocs":true,"hardcoded_layout":true,"personalized":false,"layout_endpoint":"https://getpocket.cdn.mozilla.net/v3/newtab/layout?version=1&consumer_key=$apiKey&layout_variant=basic"}`,
+        ].includes(Services.prefs.getStringPref(DS_CONFIG))
+      ) {
+        Services.prefs.clearUserPref(DS_CONFIG);
+      }
+
       // Hook up the store and let all feeds and pages initialize
       this.store.init(
         this.feeds,
         ac.BroadcastToContent({
           type: at.INIT,
           data: {},
         }),
         { type: at.UNINIT }
--- a/browser/components/newtab/test/unit/asrouter/ASRouter.test.js
+++ b/browser/components/newtab/test/unit/asrouter/ASRouter.test.js
@@ -1095,21 +1095,61 @@ describe("ASRouter", () => {
       };
       await Router.setState({ messages: [message2, message1] });
       // Just return the first message provided as arg
       const stub = sandbox.stub(Router, "_findMessage");
 
       Router.handleMessageRequest(trigger);
 
       assert.calledOnce(stub);
-      assert.calledWithExactly(stub, sinon.match.array, {
-        id: trigger.triggerId,
-        param: trigger.triggerParam,
-        context: trigger.triggerContext,
-      });
+      assert.calledWithExactly(
+        stub,
+        sinon.match.array,
+        {
+          id: trigger.triggerId,
+          param: trigger.triggerParam,
+          context: trigger.triggerContext,
+        },
+        { shouldCache: false }
+      );
+    });
+    it("should cache snippets messages", async () => {
+      const trigger = {
+        triggerId: "foo",
+        triggerParam: "bar",
+        triggerContext: "context",
+      };
+      const message1 = {
+        id: "1",
+        provider: "snippets",
+        campaign: "foocampaign",
+        trigger: { id: "foo" },
+      };
+      const message2 = {
+        id: "2",
+        campaign: "foocampaign",
+        trigger: { id: "bar" },
+      };
+      await Router.setState({ messages: [message2, message1] });
+      // Just return the first message provided as arg
+      const stub = sandbox.stub(Router, "_findMessage");
+
+      Router.handleMessageRequest(trigger);
+
+      assert.calledOnce(stub);
+      assert.calledWithExactly(
+        stub,
+        sinon.match.array,
+        {
+          id: trigger.triggerId,
+          param: trigger.triggerParam,
+          context: trigger.triggerContext,
+        },
+        { shouldCache: true }
+      );
     });
     it("should filter out messages without a trigger (or different) when a triggerId is defined", async () => {
       const trigger = { triggerId: "foo" };
       const message1 = {
         id: "1",
         campaign: "foocampaign",
         trigger: { id: "foo" },
       };
--- a/browser/components/newtab/test/unit/asrouter/ASRouterTargeting.test.js
+++ b/browser/components/newtab/test/unit/asrouter/ASRouterTargeting.test.js
@@ -213,8 +213,96 @@ describe("#CachedTargetingGetter", () =>
             return "bar";
           },
         }
       );
       assert.calledOnce(global.Cu.reportError);
     });
   });
 });
+describe("ASRouterTargeting", () => {
+  let evalStub;
+  let sandbox;
+  let clock;
+  beforeEach(() => {
+    sandbox = sinon.createSandbox();
+    evalStub = sandbox.stub(global.FilterExpressions, "eval");
+    sandbox.replace(ASRouterTargeting, "Environment", {});
+    clock = sinon.useFakeTimers();
+  });
+  afterEach(() => {
+    clock.restore();
+    sandbox.restore();
+  });
+  it("should cache evaluation result", async () => {
+    evalStub.resolves(true);
+
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl1" },
+      {},
+      sandbox.stub(),
+      true
+    );
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl2" },
+      {},
+      sandbox.stub(),
+      true
+    );
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl1" },
+      {},
+      sandbox.stub(),
+      true
+    );
+
+    assert.calledTwice(evalStub);
+  });
+  it("should not cache evaluation result", async () => {
+    evalStub.resolves(true);
+
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      false
+    );
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      false
+    );
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      false
+    );
+
+    assert.calledThrice(evalStub);
+  });
+  it("should expire cache entries", async () => {
+    evalStub.resolves(true);
+
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      true
+    );
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      true
+    );
+    clock.tick(60 * 1000 + 1);
+    await ASRouterTargeting.checkMessageTargeting(
+      { targeting: "jexl" },
+      {},
+      sandbox.stub(),
+      true
+    );
+
+    assert.calledTwice(evalStub);
+  });
+});
--- a/browser/components/places/content/bookmarkProperties.xul
+++ b/browser/components/places/content/bookmarkProperties.xul
@@ -31,11 +31,11 @@
 
   <script src="chrome://browser/content/places/editBookmark.js"/>
   <script src="chrome://browser/content/places/bookmarkProperties.js"/>
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://global/content/editMenuOverlay.js"/>
   <script src="chrome://browser/content/utilityOverlay.js"/>
   <script src="chrome://browser/content/places/places-tree.js"/>
 
-#include editBookmarkPanel.inc.xul
+#include editBookmarkPanel.inc.xhtml
 
 </dialog>
rename from browser/components/places/content/bookmarksHistoryTooltip.inc.xul
rename to browser/components/places/content/bookmarksHistoryTooltip.inc.xhtml
--- a/browser/components/places/content/bookmarksSidebar.xul
+++ b/browser/components/places/content/bookmarksSidebar.xul
@@ -26,19 +26,19 @@
 
   <script src="chrome://browser/content/places/bookmarksSidebar.js"/>
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://browser/content/utilityOverlay.js"/>
   <script src="chrome://browser/content/contentTheme.js"/>
   <script src="chrome://browser/content/places/places-tree.js"/>
   <script src="chrome://global/content/editMenuOverlay.js"/>
 
-#include placesCommands.inc.xul
-#include placesContextMenu.inc.xul
-#include bookmarksHistoryTooltip.inc.xul
+#include placesCommands.inc.xhtml
+#include placesContextMenu.inc.xhtml
+#include bookmarksHistoryTooltip.inc.xhtml
 
   <hbox id="sidebar-search-container" align="center">
     <search-textbox id="search-box" flex="1"
                     placeholder="&bookmarksSearch.placeholder;"
                     aria-controls="bookmarks-view"
                     oncommand="searchBookmarks(this.value);"/>
   </hbox>
 
rename from browser/components/places/content/editBookmarkPanel.inc.xul
rename to browser/components/places/content/editBookmarkPanel.inc.xhtml
--- a/browser/components/places/content/historySidebar.xul
+++ b/browser/components/places/content/historySidebar.xul
@@ -27,27 +27,27 @@
 
   <script src="chrome://browser/content/places/historySidebar.js"/>
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://browser/content/utilityOverlay.js"/>
   <script src="chrome://browser/content/contentTheme.js"/>
   <script src="chrome://browser/content/places/places-tree.js"/>
   <script src="chrome://global/content/editMenuOverlay.js"/>
 
-#include placesCommands.inc.xul
+#include placesCommands.inc.xhtml
 
 #include ../../../../toolkit/content/editMenuKeys.inc.xul
 #ifdef XP_MACOSX
   <keyset id="editMenuKeysExtra">
     <key id="key_delete2" keycode="VK_BACK" command="cmd_delete"/>
   </keyset>
 #endif
 
-#include placesContextMenu.inc.xul
-#include bookmarksHistoryTooltip.inc.xul
+#include placesContextMenu.inc.xhtml
+#include bookmarksHistoryTooltip.inc.xhtml
 
   <hbox id="sidebar-search-container">
     <search-textbox id="search-box" flex="1"
                     placeholder="&historySearch.placeholder;"
                     aria-controls="historyTree"
                     oncommand="searchHistory(this.value);"/>
     <button id="viewButton" style="min-width:0px !important;" type="menu"
             label="&view.label;" accesskey="&view.accesskey;" selectedsort="day"
--- a/browser/components/places/content/places.xul
+++ b/browser/components/places/content/places.xul
@@ -40,34 +40,34 @@
         width="&places.library.width;" height="&places.library.height;"
         screenX="10" screenY="10"
         toggletoolbar="true"
         persist="width height screenX screenY sizemode">
 
   <script src="chrome://browser/content/places/places.js"/>
   <script src="chrome://global/content/editMenuOverlay.js"/>
 #ifndef XP_MACOSX
-  <!-- On Mac, this is included via macWindow.inc.xul -> global-scripts.inc -> browser.js -> defineLazyScriptGetter -->
+  <!-- On Mac, this is included via macWindow.inc.xhtml -> global-scripts.inc -> browser.js -> defineLazyScriptGetter -->
   <script src="chrome://browser/content/places/editBookmark.js"/>
-  <!-- On Mac, thes are included via macWindow.inc.xul -> global-scripts.inc -->
+  <!-- On Mac, thes are included via macWindow.inc.xhtml -> global-scripts.inc -->
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://browser/content/utilityOverlay.js"/>
 #endif
 
   <stringbundleset id="placesStringSet">
     <stringbundle id="brandStrings" src="chrome://branding/locale/brand.properties"/>
   </stringbundleset>
 
 #ifdef XP_MACOSX
-#include ../../../base/content/macWindow.inc.xul
+#include ../../../base/content/macWindow.inc.xhtml
 #else
-#include placesCommands.inc.xul
+#include placesCommands.inc.xhtml
 #endif
 
-  <!-- This must be included after macWindow.inc.xul to override DownloadsView -->
+  <!-- This must be included after macWindow.inc.xhtml to override DownloadsView -->
   <script src="chrome://browser/content/downloads/allDownloadsView.js"/>
   <script src="chrome://global/content/contentAreaUtils.js"/>
   <script src="chrome://browser/content/places/places-tree.js"/>
 
   <commandset id="organizerCommandSet">
     <command id="OrganizerCommand_find:all"
              oncommand="PlacesSearchBox.findAll();"/>
     <command id="OrganizerCommand_export"
@@ -84,18 +84,18 @@
              oncommand="PlacesOrganizer.saveSearch();"/>
     <command id="OrganizerCommand_search:moreCriteria"
              oncommand="PlacesQueryBuilder.addRow();"/>
     <command id="OrganizerCommand:Back"
              oncommand="PlacesOrganizer.back();"/>
     <command id="OrganizerCommand:Forward"
              oncommand="PlacesOrganizer.forward();"/>
   </commandset>
-#include ../../downloads/content/downloadsCommands.inc.xul
-#include ../../downloads/content/downloadsStrings.inc.xul
+#include ../../downloads/content/downloadsCommands.inc.xhtml
+#include ../../downloads/content/downloadsStrings.inc.xhtml
 
   <keyset id="placesOrganizerKeyset">
     <!-- Instantiation Keys -->
     <key id="placesKey_close" key="&cmd.close.key;" modifiers="accel"
          oncommand="window.close();"/>
 
     <!-- Command Keys -->
     <key id="placesKey_find:all"
@@ -138,21 +138,21 @@
 #include ../../../../toolkit/content/editMenuKeys.inc.xul
 #ifdef XP_MACOSX
   <keyset id="editMenuKeysExtra">
     <key id="key_delete2" keycode="VK_BACK" command="cmd_delete"/>
   </keyset>
 #endif
 
   <popupset id="placesPopupset">
-#include placesContextMenu.inc.xul
+#include placesContextMenu.inc.xhtml
     <menupopup id="placesColumnsContext"
                onpopupshowing="ViewMenu.fillWithColumns(event, null, null, 'checkbox', null);"
                oncommand="ViewMenu.showHideColumn(event.target); event.stopPropagation();"/>
-#include ../../downloads/content/downloadsContextMenu.inc.xul
+#include ../../downloads/content/downloadsContextMenu.inc.xhtml
   </popupset>
 
   <toolbox id="placesToolbox">
     <toolbar class="chromeclass-toolbar" id="placesToolbar" align="center">
       <toolbarbutton id="back-button"
                      command="OrganizerCommand:Back"
                      tooltiptext="&backButton.tooltip;"
                      disabled="true"/>
@@ -415,14 +415,14 @@
           <label id="itemsCountText"/>
           <spacer flex="1"/>
           <description id="selectItemDescription">
               &detailsPane.selectAnItemText.description;
           </description>
           <spacer flex="3"/>
         </vbox>
         <vbox id="infoBox">
-#include editBookmarkPanel.inc.xul
+#include editBookmarkPanel.inc.xhtml
         </vbox>
       </deck>
     </vbox>
   </hbox>
 </window>
rename from browser/components/places/content/placesCommands.inc.xul
rename to browser/components/places/content/placesCommands.inc.xhtml
rename from browser/components/places/content/placesContextMenu.inc.xul
rename to browser/components/places/content/placesContextMenu.inc.xhtml
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -2602,23 +2602,16 @@ var SessionStoreInternal = {
     }
 
     return aBrowsingContext.changeFrameRemoteness(aRemoteType, aSwitchId);
   },
 
   // Examine the channel response to see if we should change the process
   // performing the given load. aRequestor implements nsIProcessSwitchRequestor
   onMayChangeProcess(aRequestor) {
-    if (
-      !E10SUtils.useHttpResponseProcessSelection() &&
-      !E10SUtils.useCrossOriginOpenerPolicy()
-    ) {
-      return;
-    }
-
     let switchRequestor;
     try {
       switchRequestor = aRequestor.QueryInterface(Ci.nsIProcessSwitchRequestor);
     } catch (e) {
       debug(`[process-switch]: object not compatible with process switching `);
       return;
     }
 
@@ -2644,21 +2637,32 @@ var SessionStoreInternal = {
     // Determine if remote subframes should be used for this load.
     let topBC = browsingContext.top;
     if (!topBC.embedderElement) {
       debug(`[process-switch]: no embedder for top - ignoring`);
       return;
     }
 
     let topDocShell = topBC.embedderElement.ownerGlobal.docShell;
-    let useRemoteSubframes = topDocShell.QueryInterface(Ci.nsILoadContext)
-      .useRemoteSubframes;
-    if (!useRemoteSubframes && cp != Ci.nsIContentPolicy.TYPE_DOCUMENT) {
-      debug(`[process-switch]: remote subframes disabled - ignoring`);
-      return;
+    let { useRemoteSubframes } = topDocShell.QueryInterface(Ci.nsILoadContext);
+    if (!useRemoteSubframes) {
+      if (
+        !E10SUtils.useHttpResponseProcessSelection() &&
+        !E10SUtils.useCrossOriginOpenerPolicy()
+      ) {
+        debug(
+          `[process-switch]: response process selection disabled - ignoring`
+        );
+        return;
+      }
+
+      if (cp != Ci.nsIContentPolicy.TYPE_DOCUMENT) {
+        debug(`[process-switch]: remote subframes disabled - ignoring`);
+        return;
+      }
     }
 
     // Get principal for a document already loaded in the BrowsingContext.
     let currentPrincipal = null;
     if (browsingContext.currentWindowGlobal) {
       currentPrincipal = browsingContext.currentWindowGlobal.documentPrincipal;
     }
 
--- a/browser/components/shell/content/setDesktopBackground.xul
+++ b/browser/components/shell/content/setDesktopBackground.xul
@@ -25,17 +25,17 @@
         buttons="accept"
 #endif
         buttonlabelaccept="&setDesktopBackground.title;"
         onload="gSetBackground.load();"
         title="&setDesktopBackground.title;"
         style="width: 30em;">
 
 #ifdef XP_MACOSX
-#include ../../../base/content/macWindow.inc.xul
+#include ../../../base/content/macWindow.inc.xhtml
 #endif
 
     <stringbundle id="backgroundBundle"
                   src="chrome://browser/locale/shellservice.properties"/>
     <script src="chrome://browser/content/utilityOverlay.js"/>
     <script src="chrome://browser/content/setDesktopBackground.js"/>
     <script src="chrome://global/content/contentAreaUtils.js"/>
 
--- a/browser/components/urlbar/UrlbarView.jsm
+++ b/browser/components/urlbar/UrlbarView.jsm
@@ -756,23 +756,30 @@ class UrlbarView {
     item.setAttribute("role", "option");
     item._elements = new Map();
     return item;
   }
 
   _createRowContent(item) {
     let typeIcon = this._createElement("span");
     typeIcon.className = "urlbarView-type-icon";
-    item._content.appendChild(typeIcon);
+
+    if (!this.input.megabar) {
+      item._content.appendChild(typeIcon);
+    }
 
     let favicon = this._createElement("img");
     favicon.className = "urlbarView-favicon";
     item._content.appendChild(favicon);
     item._elements.set("favicon", favicon);
 
+    if (this.input.megabar) {
+      item._content.appendChild(typeIcon);
+    }
+
     let title = this._createElement("span");
     title.className = "urlbarView-title";
     item._content.appendChild(title);
     item._elements.set("title", title);
 
     let tagsContainer = this._createElement("span");
     tagsContainer.className = "urlbarView-tags";
     item._content.appendChild(tagsContainer);
--- a/browser/config/mozconfigs/linux32/profile-generate
+++ b/browser/config/mozconfigs/linux32/profile-generate
@@ -1,9 +1,8 @@
 . $topsrcdir/browser/config/mozconfigs/linux32/nightly
 
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
 mk_add_options "export MOZ_AUTOMATION_L10N_CHECK=0"
 
 ac_add_options --enable-profile-generate
 ac_add_options --disable-tests
--- a/browser/config/mozconfigs/linux64/profile-generate
+++ b/browser/config/mozconfigs/linux64/profile-generate
@@ -1,9 +1,8 @@
 . $topsrcdir/browser/config/mozconfigs/linux64/nightly
 
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
 mk_add_options "export MOZ_AUTOMATION_L10N_CHECK=0"
 
 ac_add_options --enable-profile-generate=cross
 ac_add_options --disable-tests
--- a/browser/config/mozconfigs/win32/profile-generate
+++ b/browser/config/mozconfigs/win32/profile-generate
@@ -1,9 +1,8 @@
 . $topsrcdir/browser/config/mozconfigs/win32/nightly
 
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
 mk_add_options "export MOZ_AUTOMATION_L10N_CHECK=0"
 
 ac_add_options --enable-profile-generate
 ac_add_options --disable-tests
--- a/browser/config/mozconfigs/win64/profile-generate
+++ b/browser/config/mozconfigs/win64/profile-generate
@@ -1,9 +1,8 @@
 . $topsrcdir/browser/config/mozconfigs/win64/nightly
 
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
 mk_add_options "export MOZ_AUTOMATION_L10N_CHECK=0"
 
 ac_add_options --enable-profile-generate
 ac_add_options --disable-tests
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -276,16 +276,26 @@ notification[value="translation"] menuli
   --urlbar-popup-url-color: -moz-nativehyperlinktext;
   --urlbar-popup-action-color: -moz-nativehyperlinktext;
 }
 
 .urlbarView {
   font-size: 1.05em;
 }
 
+@supports -moz-bool-pref("browser.urlbar.megabar.expandTextOnFocus") {
+  .urlbarView {
+    font-size: inherit;
+  }
+
+  #urlbar[breakout-extend] {
+    font-size: 1.14em;
+  }
+}
+
 /* Bookmarking panel */
 
 %include ../shared/places/editBookmarkPanel.inc.css
 
 /* Content area */
 
 %include ../shared/sidebar.inc.css
 
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -295,16 +295,26 @@
   /* Set custom disabled text color since native graytext is too faint on macOS 10.14+. */
   --panel-disabled-color: #737373;
 }
 
 .urlbarView {
   font-size: 14px;
 }
 
+@supports -moz-bool-pref("browser.urlbar.megabar.expandTextOnFocus") {
+  .urlbarView {
+    font-size: inherit;
+  }
+
+  #urlbar[breakout-extend] {
+    font-size: 1.36em;
+  }
+}
+
 #BMB_bookmarksPopup[side="top"],
 #BMB_bookmarksPopup[side="bottom"] {
   margin-left: -26px;
   margin-right: -26px;
 }
 
 #BMB_bookmarksPopup[side="left"],
 #BMB_bookmarksPopup[side="right"] {
@@ -328,19 +338,19 @@
 }
 
 #editBookmarkPanelRows > vbox > html|input:focus,
 #editBookmarkPanelRows > vbox > hbox > html|input:focus {
   border-color: -moz-mac-focusring !important;
   box-shadow: var(--focus-ring-box-shadow);
 }
 
-/* The following elements come from editBookmarkPanel.inc.xul. Styling that's
+/* The following elements come from editBookmarkPanel.inc.xhtml. Styling that's
    specific to the editBookmarkPanel should be in browser.css. Styling that
-   should be shared by all editBookmarkPanel.inc.xul consumers should be in
+   should be shared by all editBookmarkPanel.inc.xhtml consumers should be in
    editBookmark.css. */
 
 #editBMPanel_newFolderBox {
   background-color: var(--arrowpanel-field-background);
   color: inherit;
   border-radius: 0 2px;
   border: 1px solid var(--panel-separator-color);
   margin: 0;
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/icons/bookmark-12.svg
@@ -0,0 +1,7 @@
+<!-- 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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
+  <path d="M11.89 4.45a1.7 1.7 0 00-1.31-1.13L8.5 3l-1-2A1.75 1.75 0 006 0a1.71 1.71 0 00-1.52 1l-1 2-2.08.37a1.69 1.69 0 00-.92 2.77L2 7.77 1.68 10a1.69 1.69 0 00.7 1.63 1.71 1.71 0 001.76.11l1.86-1 1.87 1a1.79 1.79 0 00.78.19 1.72 1.72 0 001-.31 1.69 1.69 0 00.7-1.62L10 7.77l1.52-1.62a1.69 1.69 0 00.37-1.7z" fill="context-stroke"/>
+  <path d="M10.94 4.77a.7.7 0 00-.53-.47l-2.58-.46-1.21-2.43A.74.74 0 006 1a.69.69 0 00-.62.39L4.17 3.84 1.6 4.3a.71.71 0 00-.54.46.69.69 0 00.15.7l1.84 2-.38 2.74a.69.69 0 00.28.67.73.73 0 00.4.13.72.72 0 00.32-.08L6 9.69l2.33 1.21a.69.69 0 00.72-.05.68.68 0 00.28-.66L9 7.44l1.84-2a.69.69 0 00.1-.67z" fill="context-fill"/>
+</svg>
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/icons/tab-12.svg
@@ -0,0 +1,7 @@
+<!-- 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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
+  <path d="M11 6.28V4.19A2.23 2.23 0 008.75 2H3.27A2.23 2.23 0 001 4.19v2.07A2 2 0 002 10h8a2 2 0 002-2 2 2 0 00-1-1.72z" fill="context-stroke"/>
+  <path d="M10 7V4.19A1.23 1.23 0 008.75 3H3.27A1.23 1.23 0 002 4.19V7a1 1 0 000 2h8a1 1 0 000-2z" fill="context-fill"/>
+</svg>
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -156,16 +156,17 @@
   skin/classic/browser/fxa/add-device.svg                      (../shared/fxa/add-device.svg)
 
   skin/classic/browser/accessibility.svg              (../shared/icons/accessibility.svg)
   skin/classic/browser/accessibility-active.svg       (../shared/icons/accessibility-active.svg)
   skin/classic/browser/add.svg                        (../shared/icons/add.svg)
   skin/classic/browser/back.svg                       (../shared/icons/back.svg)
   skin/classic/browser/back-12.svg                    (../shared/icons/back-12.svg)
   skin/classic/browser/bookmark.svg                   (../shared/icons/bookmark.svg)
+  skin/classic/browser/bookmark-12.svg                (../shared/icons/bookmark-12.svg)
   skin/classic/browser/bookmark-animation.svg         (../shared/icons/bookmark-animation.svg)
   skin/classic/browser/bookmark-hollow.svg            (../shared/icons/bookmark-hollow.svg)
   skin/classic/browser/bookmark-star-on-tray.svg      (../shared/icons/bookmark-star-on-tray.svg)
   skin/classic/browser/bookmarks-toolbar.svg          (../shared/icons/bookmarks-toolbar.svg)
   skin/classic/browser/characterEncoding.svg          (../shared/icons/characterEncoding.svg)
   skin/classic/browser/chevron.svg                    (../shared/icons/chevron.svg)
   skin/classic/browser/chevron-animation.svg          (../shared/icons/chevron-animation.svg)
   skin/classic/browser/check-animation.svg            (../shared/icons/check-animation.svg)
@@ -222,16 +223,17 @@
   skin/classic/browser/sign-out.svg                   (../shared/icons/sign-out.svg)
 #ifndef XP_LINUX
   skin/classic/browser/sort.svg                       (../shared/icons/sort.svg)
 #endif
   skin/classic/browser/stop.svg                       (../shared/icons/stop.svg)
   skin/classic/browser/stop-to-reload.svg             (../shared/icons/stop-to-reload.svg)
   skin/classic/browser/sync.svg                       (../shared/icons/sync.svg)
   skin/classic/browser/tab.svg                        (../shared/icons/tab.svg)
+  skin/classic/browser/tab-12.svg                     (../shared/icons/tab-12.svg)
   skin/classic/browser/tip.svg                        (../shared/icons/tip.svg)
   skin/classic/browser/toggle.svg                     (../shared/icons/toggle.svg)
   skin/classic/browser/undo.svg                       (../shared/icons/undo.svg)
   skin/classic/browser/unpin-tab.svg                  (../shared/icons/unpin-tab.svg)
   skin/classic/browser/whatsnew.svg                   (../shared/icons/whatsnew.svg)
   skin/classic/browser/window.svg                     (../shared/icons/window.svg)
   skin/classic/browser/zoom-in.svg                    (../shared/icons/zoom-in.svg)
   skin/classic/browser/zoom-out.svg                   (../shared/icons/zoom-out.svg)
--- a/browser/themes/shared/urlbar-autocomplete.inc.css
+++ b/browser/themes/shared/urlbar-autocomplete.inc.css
@@ -4,18 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 %endif
 
 %filter substitution
 %define urlbarViewPadding 4px
 %define urlbarViewIconMarginEnd (@identityBoxPaddingInline@ + @identityBoxMarginInlineEnd@)
 %define urlbarViewFaviconOffset (@urlbarViewPadding@ + 16px /* type icon width */ + @urlbarViewIconMarginEnd@)
 %define urlbarViewMarginInline 7px
-%define urlbarViewPaddingInline 30px
-%define urlbarViewItemPaddingStart (@urlbarViewPaddingInline@ - (/* type icon: */ 16px + @urlbarViewIconMarginEnd@))
+%define urlbarViewItemInlinePadding 6px
 
 :root {
   --autocomplete-popup-background: var(--arrowpanel-background);
   --autocomplete-popup-color: var(--arrowpanel-color);
   --autocomplete-popup-highlight-background: Highlight;
   --autocomplete-popup-highlight-color: HighlightText;
 
   /* From in-content/common.inc.css. */
@@ -75,18 +74,17 @@
   box-shadow: 0 5px 18px rgba(0, 0, 0, .2);
 }
 
 #urlbar-contextual-tip {
   align-items: center;
   display: flex;
   padding-top: 24px;
   padding-bottom: 24px;
-  padding-inline-start: calc(@urlbarViewItemPaddingStart@);
-  padding-inline-end: @urlbarViewPaddingInline@;
+  padding-inline: @urlbarViewItemInlinePadding@;
 }
 
 .urlbarView:not(.megabar) #urlbar-contextual-tip {
   padding-inline-start: var(--item-padding-start, calc(5px + @urlbarViewFaviconOffset@));
   padding-inline-end: var(--item-padding-end, 5px);
 }
 
 #urlbar-contextual-tip-title {
@@ -132,17 +130,17 @@
   fill: currentColor;
   fill-opacity: .6;
   padding-block: 3px;
 }
 
 .urlbarView:not(.megabar) .urlbarView-row,
 .urlbarView.megabar .urlbarView-row-inner {
   border-radius: 2px;
-  padding-inline-start: calc(@urlbarViewItemPaddingStart@);
+  padding-inline-start: @urlbarViewItemInlinePadding@;
 }
 
 .urlbarView:not(.megabar) .urlbarView-row:not([type=tip]),
 .urlbarView.megabar .urlbarView-row-inner {
   padding-block: 6px;
 }
 
 .urlbarView:not(.megabar) .urlbarView-row {
@@ -156,17 +154,17 @@
 
 .urlbarView:not(.megabar) .urlbarView-row[type=tip] {
   padding-block: 24px;
 }
 
 .urlbarView.megabar .urlbarView-row[type=tip] {
   padding-block: 18px;
   /* Compensating for the 4px focus ring on tip buttons. */
-  padding-inline-end: calc(@urlbarViewItemPaddingStart@ + 4px);
+  padding-inline-end: calc(@urlbarViewItemInlinePadding@ + 4px);
 }
 
 .urlbarView-row-inner {
   display: flex;
   flex-wrap: nowrap;
   align-items: end;
   justify-content: start;
 }
@@ -196,27 +194,43 @@
   color: var(--autocomplete-popup-highlight-color);
   fill-opacity: 1;
 }
 
 .urlbarView-type-icon,
 .urlbarView-favicon {
   min-width: 16px;
   height: 16px;
-  margin-inline-end: calc(@urlbarViewIconMarginEnd@);
   background-repeat: no-repeat;
   background-size: contain;
   -moz-context-properties: fill, fill-opacity;
 }
 
+.urlbarView:not(.megabar) .urlbarView-type-icon,
+.urlbarView-favicon {
+  margin-inline-end: calc(@urlbarViewIconMarginEnd@);
+}
+
+.urlbarView.megabar .urlbarView-type-icon {
+  position: absolute;
+  min-width: 12px;
+  height: 12px;
+  margin-bottom: -4px;
+  margin-inline-start: 8px;
+  -moz-context-properties: fill, stroke;
+}
+
 .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-favicon {
   min-width: 24px;
   height: 24px;
+  margin-inline-end: 12px;
+}
+
+.urlbarView:not(.megabar) .urlbarView-row[type=tip] > .urlbarView-row-inner > .urlbarView-favicon {
   margin-inline-start: calc(12px + @urlbarViewIconMarginEnd@);
-  margin-inline-end: 12px;
 }
 
 /* The help icon is a standard Photon ghost button. */
 .urlbarView-tip-help {
   min-width: 16px;
   height: 32px;
   background-image: url("chrome://global/skin/icons/help.svg");
   background-size: 16px;
@@ -251,16 +265,40 @@
 @media (min-resolution: 2dppx) {
   .urlbarView-type-icon,
   .urlbarView-favicon,
   #urlbar-contextual-tip-icon {
       transform: translateY(-1.5px);
   }
 }
 
+.urlbarView.megabar .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-type-icon {
+  background-image: url(chrome://browser/skin/bookmark-12.svg);
+  color: #0060df; /* Blue-60 */
+  stroke: #fff;
+}
+
+.urlbarView.megabar .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-type-icon,
+.urlbarView.megabar:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-type-icon {
+  background-image: url(chrome://browser/skin/tab-12.svg);
+  color: #008eaf; /* Teal-70 */
+  stroke: #fff;
+}
+
+:root[lwt-toolbar-field-brighttext] .urlbarView.megabar .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-type-icon {
+  color: #0a84ff; /* Blue-50 */
+  stroke: #38383d; /* Grey-70 */
+}
+
+:root[lwt-toolbar-field-brighttext] .urlbarView.megabar .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-type-icon,
+:root[lwt-toolbar-field-brighttext] .urlbarView.megabar:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-type-icon {
+  color: #00c8d7; /* Teal-60 */
+  stroke: #38383d; /* Grey-70 */
+}
+
 .urlbarView-row[type=bookmark] > .urlbarView-row-inner > .urlbarView-type-icon {
   background-image: url(chrome://browser/skin/bookmark.svg);
 }
 
 .urlbarView-row[type=remotetab] > .urlbarView-row-inner > .urlbarView-type-icon,
 .urlbarView:not([actionoverride]) .urlbarView-row[type=switchtab] > .urlbarView-row-inner > .urlbarView-type-icon {
   background-image: url(chrome://browser/skin/tab.svg);
 }
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -549,16 +549,22 @@ menuitem.bookmark-item {
 
 @media (-moz-windows-default-theme: 0) {
   :root {
     --urlbar-popup-url-color: -moz-nativehyperlinktext;
     --urlbar-popup-action-color: -moz-nativehyperlinktext;
   }
 }
 
+@supports -moz-bool-pref("browser.urlbar.megabar.expandTextOnFocus") {
+  #urlbar[breakout-extend] {
+    font-size: 1.25em;
+  }
+}
+
 /* bookmarking panel */
 
 %include ../shared/places/editBookmarkPanel.inc.css
 
 /* ::::: content area ::::: */
 
 %include ../shared/sidebar.inc.css
 
--- a/build/pgo/profileserver.py
+++ b/build/pgo/profileserver.py
@@ -5,16 +5,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 import json
 import os
 import sys
 import glob
 import subprocess
 
+import mozcrash
 from mozbuild.base import MozbuildObject
 from mozfile import TemporaryDirectory
 from mozhttpd import MozHttpd
 from mozprofile import FirefoxProfile, Preferences
 from mozprofile.permissions import ServerLocations
 from mozrunner import FirefoxRunner, CLI
 from six import string_types
 
@@ -24,16 +25,40 @@ PATH_MAPPINGS = {
     '/webkit/PerformanceTests': 'third_party/webkit/PerformanceTests',
     # It is tempting to map to `testing/talos/talos/tests` instead, to avoid
     # writing `tests/` in every path, but we can't do that because some files
     # refer to scripts located in `../..`.
     '/talos': 'testing/talos/talos',
 }
 
 
+def get_crashreports(directory, name=None):
+    rc = 0
+    upload_path = os.environ.get('UPLOAD_PATH')
+    if upload_path:
+        # For automation, log the minidumps with stackwalk and get them moved to
+        # the artifacts directory.
+        fetches_dir = os.environ.get('MOZ_FETCHES_DIR')
+        if not fetches_dir:
+            raise Exception("Unable to process minidump in automation because "
+                            "$MOZ_FETCHES_DIR is not set in the environment")
+        stackwalk_binary = os.path.join(fetches_dir, 'minidump_stackwalk', 'minidump_stackwalk')
+        if sys.platform == 'win32':
+            stackwalk_binary += '.exe'
+        minidump_path = os.path.join(directory, "minidumps")
+        rc = mozcrash.check_for_crashes(
+            minidump_path,
+            symbols_path=fetches_dir,
+            stackwalk_binary=stackwalk_binary,
+            dump_save_path=upload_path,
+            test_name=name,
+        )
+    return rc
+
+
 if __name__ == '__main__':
     cli = CLI()
     debug_args, interactive = cli.debugger_arguments()
     runner_args = cli.runner_args()
 
     build = MozbuildObject.from_environment()
 
     binary = runner_args.get('binary')
@@ -114,16 +139,17 @@ if __name__ == '__main__':
             print("Firefox exited with code %d during profile initialization"
                   % ret)
             logfile = process_args.get('logfile')
             if logfile:
                 print("Firefox output (%s):" % logfile)
                 with open(logfile) as f:
                     print(f.read())
             httpd.stop()
+            get_crashreports(profilePath, name='Profile initialization')
             sys.exit(ret)
 
         jarlog = os.getenv("JARLOG_FILE")
         if jarlog:
             env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
             print("jarlog: %s" % env["MOZ_JAR_LOG_FILE"])
 
         if 'UPLOAD_PATH' in env:
@@ -139,18 +165,26 @@ if __name__ == '__main__':
         httpd.stop()
         if ret:
             print("Firefox exited with code %d during profiling" % ret)
             logfile = process_args.get('logfile')
             if logfile:
                 print("Firefox output (%s):" % logfile)
                 with open(logfile) as f:
                     print(f.read())
+            get_crashreports(profilePath, name='Profiling run')
             sys.exit(ret)
 
+        # Try to move the crash reports to the artifacts even if Firefox appears
+        # to exit successfully, in case there's a crash that doesn't set the
+        # return code to non-zero for some reason.
+        if get_crashreports(profilePath, name='Firefox exited successfully?') != 0:
+            print("Firefox exited successfully, but produced a crashreport")
+            sys.exit(1)
+
         llvm_profdata = env.get('LLVM_PROFDATA')
         if llvm_profdata:
             profraw_files = glob.glob('*.profraw')
             if not profraw_files:
                 print('Could not find profraw files in the current directory: %s' % os.getcwd())
                 sys.exit(1)
             merge_cmd = [
                 llvm_profdata,
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -741,21 +741,19 @@ endif
 define syms_template
 syms:: $(2)
 $(2): $(1)
 ifdef MOZ_CRASHREPORTER
 	$$(call py_action,dumpsymbols,$$(abspath $$<) $$(abspath $$@) $$(DUMP_SYMBOLS_FLAGS))
 endif
 endef
 
-ifndef MOZ_PROFILE_GENERATE
 ifneq (,$(filter $(DIST)/bin%,$(FINAL_TARGET)))
 DUMP_SYMS_TARGETS := $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS)
 endif
-endif
 
 ifdef MOZ_AUTOMATION
 ifeq (,$(filter 1,$(MOZ_AUTOMATION_BUILD_SYMBOLS)))
 DUMP_SYMS_TARGETS :=
 endif
 endif
 
 ifdef MOZ_COPY_PDBS
--- a/devtools/client/application/initializer.js
+++ b/devtools/client/application/initializer.js
@@ -23,22 +23,16 @@ const Provider = createFactory(
 const { bindActionCreators } = require("devtools/client/shared/vendor/redux");
 const { l10n } = require("./src/modules/l10n");
 
 const { configureStore } = require("./src/create-store");
 const actions = require("./src/actions/index");
 
 const { WorkersListener } = require("devtools/client/shared/workers-listener");
 
-const {
-  addDebugServiceWorkersListener,
-  canDebugServiceWorkers,
-  removeDebugServiceWorkersListener,
-} = require("devtools/shared/service-workers-debug-helper");
-
 const { services } = require("./src/modules/services");
 
 const App = createFactory(require("./src/components/App"));
 
 /**
  * Global Application object in this panel. This object is expected by panel.js and is
  * called to start the UI for the panel.
  */
@@ -54,24 +48,32 @@ window.Application = {
     this.client = toolbox.target.client;
 
     this.store = configureStore();
     this.actions = bindActionCreators(actions, this.store.dispatch);
     this.serviceWorkerRegistrationFronts = [];
 
     services.init(this.toolbox);
 
+    this.deviceFront = await this.client.mainRoot.getFront("device");
+
     this.workersListener = new WorkersListener(this.client.mainRoot);
     this.workersListener.addListener(this.updateWorkers);
     this.toolbox.target.on("navigate", this.handleOnNavigate);
-    addDebugServiceWorkersListener(this.updateCanDebugWorkers);
+
+    if (this.deviceFront) {
+      this.canDebugWorkersListener = this.deviceFront.on(
+        "can-debug-sw-updated",
+        this.updateCanDebugWorkers
+      );
+    }
 
     // start up updates for the initial state
     this.updateDomain();
-    this.updateCanDebugWorkers();
+    await this.updateCanDebugWorkers();
     await this.updateWorkers();
 
     await l10n.init(["devtools/application.ftl"]);
 
     // Render the root Application component.
     const app = App({
       client: this.client,
       fluentBundles: l10n.getBundles(),
@@ -92,24 +94,29 @@ window.Application = {
 
     this.actions.updateWorkers(workers);
   },
 
   updateDomain() {
     this.actions.updateDomain(this.toolbox.target.url);
   },
 
-  updateCanDebugWorkers() {
-    const canDebugWorkers = canDebugServiceWorkers();
+  async updateCanDebugWorkers() {
+    const canDebugWorkers = this.deviceFront
+      ? (await this.deviceFront.getDescription()).canDebugServiceWorkers
+      : false;
+
     this.actions.updateCanDebugWorkers(canDebugWorkers);
   },
 
   destroy() {
     this.workersListener.removeListener();
+    if (this.deviceFront) {
+      this.deviceFront.off("can-debug-sw-updated", this.updateCanDebugWorkers);
+    }
     this.toolbox.target.off("navigate", this.updateDomain);
-    removeDebugServiceWorkersListener(this.updateCanDebugWorkers);
 
     unmountComponentAtNode(this.mount);
     this.mount = null;
     this.toolbox = null;
     this.client = null;
   },
 };
--- a/devtools/client/application/test/browser/browser.ini
+++ b/devtools/client/application/test/browser/browser.ini
@@ -24,16 +24,18 @@ support-files =
   !/devtools/client/debugger/test/mochitest/helpers/context.js
   !/devtools/client/shared/test/frame-script-utils.js
   !/devtools/client/shared/test/shared-head.js
   !/devtools/client/shared/test/telemetry-test-helpers.js
 
 [browser_application_panel_sidebar.js]
 [browser_application_panel_debug-service-worker.js]
 skip-if = debug || asan # Bug 1559591, 1575578
+[browser_application_panel_disable-start-service-worker.js]
+skip-if = (os == 'linux' && asan) || debug || serviceworker_e10s # Bug 1559487, 1559591, 1447197
 [browser_application_panel_list-domain-workers.js]
 skip-if = debug # Bug 1559591
 [browser_application_panel_list-several-workers.js]
 skip-if = debug # Bug 1559591
 [browser_application_panel_list-single-worker.js]
 skip-if = debug # Bug 1559591
 [browser_application_panel_list-workers-empty.js]
 [browser_application_panel_list-unicode.js]
@@ -42,9 +44,9 @@ skip-if = debug # Bug 1559591
 [browser_application_panel_manifest-load.js]
 [browser_application_panel_manifest-open-json.js]
 [browser_application_panel_manifest-reload.js]
 [browser_application_panel_open-links.js]
 skip-if = true # Bug 1467256, 1559591
 [browser_application_panel_unregister-worker.js]
 skip-if = debug # Bug 1559591
 [browser_application_panel_start-service-worker.js]
-skip-if = (os == 'linux' && asan) || debug || serviceworker_e10s # Bug 1559487, 1559591, 1447197
+skip-if = (os == 'linux' && asan) || debug # Bug 1559487, 1559591, 1447197
new file mode 100644
--- /dev/null
+++ b/devtools/client/application/test/browser/browser_application_panel_disable-start-service-worker.js
@@ -0,0 +1,37 @@
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const TAB_URL = URL_ROOT + "resources/service-workers/simple.html";
+
+/**
+ * Tests that Start button is disabled for service workers, when they cannot be debugged
+ */
+add_task(async function() {
+  await enableApplicationPanel();
+
+  // disable sw debugging by increasing the # of processes and thus multi-e10s kicking in
+  info("Disable service worker debugging");
+  await pushPref("dom.ipc.processCount", 8);
+
+  const { panel, tab, target } = await openNewTabAndApplicationPanel(TAB_URL);
+  const doc = panel.panelWin.document;
+
+  selectPage(panel, "service-workers");
+
+  await waitForWorkerRegistration(tab);
+
+  info("Wait until the service worker appears in the application panel");
+  await waitUntil(() => getWorkerContainers(doc).length === 1);
+
+  info("Wait until the start button is displayed");
+  const container = getWorkerContainers(doc)[0];
+  await waitUntil(() => container.querySelector(".js-start-button"));
+  ok(
+    container.querySelector(".js-start-button").disabled,
+    "Start button is disabled"
+  );
+
+  await unregisterAllWorkers(target.client);
+});
--- a/devtools/client/application/test/browser/browser_application_panel_start-service-worker.js
+++ b/devtools/client/application/test/browser/browser_application_panel_start-service-worker.js
@@ -43,39 +43,8 @@ add_task(async function() {
   await waitUntil(() => {
     const statusEl = container.querySelector(".js-worker-status");
     return statusEl && statusEl.textContent === "Running";
   });
   ok(true, "Worker status is 'Running'");
 
   await unregisterAllWorkers(target.client);
 });
-
-/**
- * Tests that Start button is disabled for service workers, when they cannot be debugged
- */
-add_task(async function() {
-  await enableApplicationPanel();
-
-  // disable sw debugging by increasing the # of processes and thus multi-e10s kicking in
-  info("Disable service worker debugging");
-  await pushPref("dom.ipc.processCount", 8);
-
-  const { panel, tab, target } = await openNewTabAndApplicationPanel(TAB_URL);
-  const doc = panel.panelWin.document;
-
-  selectPage(panel, "service-workers");
-
-  await waitForWorkerRegistration(tab);
-
-  info("Wait until the service worker appears in the application panel");
-  await waitUntil(() => getWorkerContainers(doc).length === 1);
-
-  info("Wait until the start button is displayed");
-  const container = getWorkerContainers(doc)[0];
-  await waitUntil(() => container.querySelector(".js-start-button"));
-  ok(
-    container.querySelector(".js-start-button").disabled,
-    "Start button is disabled"
-  );
-
-  await unregisterAllWorkers(target.client);
-});
--- a/devtools/client/debugger/test/mochitest/browser.ini
+++ b/devtools/client/debugger/test/mochitest/browser.ini
@@ -155,16 +155,17 @@ skip-if = os == "win"
 [browser_dbg-toggling-tools.js]
 [browser_dbg-react-app.js]
 skip-if = os == "win"
 [browser_dbg-wasm-sourcemaps.js]
 [browser_dbg-windowless-workers.js]
 [browser_dbg-windowless-workers-early-breakpoint.js]
 [browser_dbg-worker-exception.js]
 [browser_dbg-windowless-service-workers.js]
+skip-if = !nightly_build # parent intercept node is needed bug 1588154
 [browser_dbg-worker-scopes.js]
 skip-if = (os == 'linux' && debug) || (os == 'linux' && asan) || ccov  #Bug 1456013, Bug 1559547
 [browser_dbg-event-handler.js]
 [browser_dbg-event-breakpoints.js]
 [browser_dbg-eval-throw.js]
 [browser_dbg-sourceURL-breakpoint.js]
 [browser_dbg-old-breakpoint.js]
 [browser_dbg-idb-run-to-completion.js]
@@ -176,9 +177,9 @@ skip-if = (os == 'linux' && debug) || (o
 [browser_dbg-bfcache.js]
 [browser_dbg-gc-breakpoint-positions.js]
 [browser_dbg-gc-sources.js]
 [browser_dbg-watchpoints.js]
 skip-if = debug
 [browser_dbg-toolbox-unselected-pause.js]
 skip-if = asan # Bug 1591064
 [browser_dbg-toolbox-workers.js]
-skip-if = asan # Bug 1591064
+skip-if = asan || !nightly_build # Bug 1591064, parent intercept mode is needed bug 1588154
--- a/devtools/client/definitions.js
+++ b/devtools/client/definitions.js
@@ -464,17 +464,17 @@ Tools.application = {
   url: "chrome://devtools/content/application/index.html",
   label: l10n("application.label"),
   panelLabel: l10n("application.panellabel"),
   tooltip: l10n("application.tooltip"),
   inMenu: false,
   hiddenInOptions: true,
 
   isTargetSupported: function(target) {
-    return target.isLocalTab;
+    return target.hasActor("manifest");
   },
 
   build: function(iframeWindow, toolbox) {
     return new ApplicationPanel(iframeWindow, toolbox);
   },
 };
 
 Tools.whatsnew = {
--- a/devtools/server/actors/network-monitor/network-observer.js
+++ b/devtools/server/actors/network-monitor/network-observer.js
@@ -630,29 +630,43 @@ NetworkObserver.prototype = {
 
     if (timestamp) {
       httpActivity.timings.REQUEST_HEADER = {
         first: timestamp,
         last: timestamp,
       };
     }
 
+    const trackingProtectionLevel2Enabled = Services.prefs
+      .getStringPref("urlclassifier.trackingTable")
+      .includes("content-track-digest256");
+    const tpFlagsMask = trackingProtectionLevel2Enabled
+      ? ~Ci.nsIClassifiedChannel.CLASSIFIED_ANY_BASIC_TRACKING &
+        ~Ci.nsIClassifiedChannel.CLASSIFIED_ANY_STRICT_TRACKING
+      : ~Ci.nsIClassifiedChannel.CLASSIFIED_ANY_BASIC_TRACKING &
+        Ci.nsIClassifiedChannel.CLASSIFIED_ANY_STRICT_TRACKING;
     const event = {};
     event.method = channel.requestMethod;
     event.channelId = channel.channelId;
     event.url = channel.URI.spec;
     event.private = httpActivity.private;
     event.headersSize = 0;
     event.startedDateTime = (timestamp
       ? new Date(Math.round(timestamp / 1000))
       : new Date()
     ).toISOString();
     event.fromCache = fromCache;
     event.fromServiceWorker = fromServiceWorker;
-    event.isThirdPartyTrackingResource = channel.isThirdPartyTrackingResource();
+    // Only consider channels classified as level-1 to be trackers if our preferences
+    // would not cause such channels to be blocked in strict content blocking mode.
+    // Make sure the value produced here is a boolean.
+    event.isThirdPartyTrackingResource = !!(
+      channel.isThirdPartyTrackingResource() &&
+      (channel.thirdPartyClassificationFlags & tpFlagsMask) == 0
+    );
     const referrerInfo = channel.referrerInfo;
     event.referrerPolicy = referrerInfo
       ? referrerInfo.getReferrerPolicyString()
       : "";
     httpActivity.fromServiceWorker = fromServiceWorker;
 
     if (extraStringData) {
       event.headersSize = extraStringData.length;
--- a/devtools/server/actors/thread.js
+++ b/devtools/server/actors/thread.js
@@ -109,16 +109,17 @@ const ThreadActor = ActorClassWithSpec(t
     this._observingNetwork = false;
     this._activeEventBreakpoints = new Set();
     this._activeEventPause = null;
     this._pauseOverlay = null;
     this._priorPause = null;
 
     this._options = {
       autoBlackBox: false,
+      skipBreakpoints: false,
     };
 
     this.breakpointActorMap = new BreakpointActorMap(this);
 
     this._debuggerSourcesSeen = null;
 
     // A Set of URLs string to watch for when new sources are found by
     // the debugger instance.
@@ -348,17 +349,17 @@ const ThreadActor = ActorClassWithSpec(t
     this.dbg.onNewDebuggee = this._onNewDebuggee;
     if (this.dbg.replaying) {
       this.dbg.replayingOnForcedPause = this.replayingOnForcedPause.bind(this);
       this.dbg.replayingOnPositionChange = this._makeReplayingOnPositionChange();
     }
 
     this._debuggerSourcesSeen = new WeakSet();
 
-    Object.assign(this._options, options || {});
+    this._options = { ...this._options, ...options };
     this.sources.setOptions(this._options);
     this.sources.on("newSource", this.onNewSourceEvent);
 
     // Initialize an event loop stack. This can't be done in the constructor,
     // because this.conn is not yet initialized by the actor pool at that time.
     this._nestedEventLoops = new EventLoopStack({
       thread: this,
     });
@@ -680,17 +681,17 @@ const ThreadActor = ActorClassWithSpec(t
     }
 
     if ("pauseWorkersUntilAttach" in options) {
       if (this._parent.pauseWorkersUntilAttach) {
         this._parent.pauseWorkersUntilAttach(options.pauseWorkersUntilAttach);
       }
     }
 
-    Object.assign(this._options, options);
+    this._options = { ...this._options, ...options };
 
     // Update the global source store
     this.sources.setOptions(options);
 
     return {};
   },
 
   _eventBreakpointListener(notification) {
@@ -1862,17 +1863,21 @@ const ThreadActor = ActorClassWithSpec(t
   },
 
   onSkipBreakpoints: function({ skip }) {
     this._options.skipBreakpoints = skip;
     return { skip };
   },
 
   onPauseOnExceptions: function({ pauseOnExceptions, ignoreCaughtExceptions }) {
-    Object.assign(this._options, { pauseOnExceptions, ignoreCaughtExceptions });
+    this._options = {
+      ...this._options,
+      pauseOnExceptions,
+      ignoreCaughtExceptions,
+    };
     this.maybePauseOnExceptions();
     return {};
   },
 
   /*
    * A function that the engine calls when a recording/replaying process has
    * changed its position: a checkpoint was reached or a switch between a
    * recording and replaying child process occurred.
--- a/dom/indexedDB/ActorsChild.cpp
+++ b/dom/indexedDB/ActorsChild.cpp
@@ -2586,54 +2586,55 @@ void BackgroundRequestChild::MaybeSendCo
 
     MOZ_ALWAYS_TRUE(SendContinue(response));
   }
 }
 
 void BackgroundRequestChild::OnPreprocessFinished(
     uint32_t aCloneDataIndex, UniquePtr<JSStructuredCloneData> aCloneData) {
   AssertIsOnOwningThread();
-  MOZ_ASSERT(aCloneDataIndex < mPreprocessHelpers.Length());
+  MOZ_ASSERT(aCloneDataIndex < mCloneInfos.Length());
   MOZ_ASSERT(aCloneData);
-  MOZ_ASSERT(mPreprocessHelpers[aCloneDataIndex]);
-  MOZ_ASSERT(!mCloneDatas[aCloneDataIndex]);
-
-  mCloneDatas[aCloneDataIndex] = std::move(aCloneData);
+
+  auto& cloneInfo = mCloneInfos[aCloneDataIndex];
+  MOZ_ASSERT(cloneInfo.mPreprocessHelper);
+  MOZ_ASSERT(!cloneInfo.mCloneData);
+
+  cloneInfo.mCloneData = std::move(aCloneData);
 
   MaybeSendContinue();
 
-  mPreprocessHelpers[aCloneDataIndex] = nullptr;
+  cloneInfo.mPreprocessHelper = nullptr;
 }
 
 void BackgroundRequestChild::OnPreprocessFailed(uint32_t aCloneDataIndex,
                                                 nsresult aErrorCode) {
   AssertIsOnOwningThread();
-  MOZ_ASSERT(aCloneDataIndex < mPreprocessHelpers.Length());
+  MOZ_ASSERT(aCloneDataIndex < mCloneInfos.Length());
   MOZ_ASSERT(NS_FAILED(aErrorCode));
-  MOZ_ASSERT(mPreprocessHelpers[aCloneDataIndex]);
-  MOZ_ASSERT(!mCloneDatas[aCloneDataIndex]);
+
+  auto& cloneInfo = mCloneInfos[aCloneDataIndex];
+  MOZ_ASSERT(cloneInfo.mPreprocessHelper);
+  MOZ_ASSERT(!cloneInfo.mCloneData);
 
   if (NS_SUCCEEDED(mPreprocessResultCode)) {
     mPreprocessResultCode = aErrorCode;
   }
 
   MaybeSendContinue();
 
-  mPreprocessHelpers[aCloneDataIndex] = nullptr;
+  cloneInfo.mPreprocessHelper = nullptr;
 }
 
 UniquePtr<JSStructuredCloneData> BackgroundRequestChild::GetNextCloneData() {
   AssertIsOnOwningThread();
-  MOZ_ASSERT(mCurrentCloneDataIndex < mCloneDatas.Length());
-  MOZ_ASSERT(mCloneDatas[mCurrentCloneDataIndex]);
-
-  UniquePtr<JSStructuredCloneData> cloneData;
-  mCloneDatas[mCurrentCloneDataIndex++].swap(cloneData);
-
-  return cloneData;
+  MOZ_ASSERT(mCurrentCloneDataIndex < mCloneInfos.Length());
+  MOZ_ASSERT(mCloneInfos[mCurrentCloneDataIndex].mCloneData);
+
+  return std::move(mCloneInfos[mCurrentCloneDataIndex++].mCloneData);
 }
 
 void BackgroundRequestChild::HandleResponse(nsresult aResponse) {
   AssertIsOnOwningThread();
   MOZ_ASSERT(NS_FAILED(aResponse));
   MOZ_ASSERT(NS_ERROR_GET_MODULE(aResponse) == NS_ERROR_MODULE_DOM_INDEXEDDB);
   MOZ_ASSERT(mTransaction);
 
@@ -2683,34 +2684,34 @@ void BackgroundRequestChild::HandleRespo
 
   nsTArray<StructuredCloneReadInfo> cloneReadInfos;
 
   if (!aResponse.IsEmpty()) {
     const uint32_t count = aResponse.Length();
 
     cloneReadInfos.SetCapacity(count);
 
-    IDBDatabase* database = mTransaction->Database();
-
-    for (uint32_t index = 0; index < count; index++) {
-      // XXX Fix this somehow...
-      auto& serializedCloneInfo =
-          const_cast<SerializedStructuredCloneReadInfo&>(aResponse[index]);
-
-      StructuredCloneReadInfo* cloneReadInfo = cloneReadInfos.AppendElement();
-
-      // Move relevant data into the cloneReadInfo
-      *cloneReadInfo = DeserializeStructuredCloneReadInfo(
-          std::move(serializedCloneInfo), database);
-
-      if (cloneReadInfo->mHasPreprocessInfo) {
-        UniquePtr<JSStructuredCloneData> cloneData = GetNextCloneData();
-        cloneReadInfo->mData = std::move(*cloneData);
-      }
-    }
+    std::transform(
+        aResponse.begin(), aResponse.end(), MakeBackInserter(cloneReadInfos),
+        [database = mTransaction->Database(), this](
+            const SerializedStructuredCloneReadInfo& constSerializedCloneInfo) {
+          // XXX Fix the need for the const_cast somehow...
+          auto& serializedCloneInfo =
+              const_cast<SerializedStructuredCloneReadInfo&>(
+                  constSerializedCloneInfo);
+
+          auto cloneReadInfo = DeserializeStructuredCloneReadInfo(
+              std::move(serializedCloneInfo), database);
+
+          if (cloneReadInfo.mHasPreprocessInfo) {
+            cloneReadInfo.mData = std::move(*GetNextCloneData());
+          }
+
+          return cloneReadInfo;
+        });
   }
 
   ResultHelper helper(mRequest, mTransaction, &cloneReadInfos);
 
   DispatchSuccessEvent(&helper);
 }
 
 void BackgroundRequestChild::HandleResponse(JS::Handle<JS::Value> aResponse) {
@@ -2746,68 +2747,64 @@ nsresult BackgroundRequestChild::HandleP
 }
 
 nsresult BackgroundRequestChild::HandlePreprocessInternal(
     const nsTArray<PreprocessInfo>& aPreprocessInfos) {
   AssertIsOnOwningThread();
 
   IDBDatabase* database = mTransaction->Database();
 
-  uint32_t count = aPreprocessInfos.Length();
-
-  mPreprocessHelpers.SetLength(count);
+  const uint32_t count = aPreprocessInfos.Length();
+
+  mCloneInfos.SetLength(count);
 
   // TODO: Since we use the stream transport service, this can spawn 25 threads
   //       and has the potential to cause some annoying browser hiccups.
   //       Consider using a single thread or a very small threadpool.
   for (uint32_t index = 0; index < count; index++) {
     const PreprocessInfo& preprocessInfo = aPreprocessInfos[index];
 
     const auto files =
         DeserializeStructuredCloneFiles(database, preprocessInfo.files(),
                                         /* aForPreprocess */ true);
 
     MOZ_ASSERT(files.Length() == 1);
 
-    RefPtr<PreprocessHelper>& preprocessHelper = mPreprocessHelpers[index];
-    preprocessHelper = new PreprocessHelper(index, this);
+    auto& preprocessHelper = mCloneInfos[index].mPreprocessHelper;
+    preprocessHelper = MakeRefPtr<PreprocessHelper>(index, this);
 
     nsresult rv = preprocessHelper->Init(files[0]);
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return rv;
     }
 
     rv = preprocessHelper->Dispatch();
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return rv;
     }
 
     mRunningPreprocessHelpers++;
   }
 
-  mCloneDatas.SetLength(count);
-
   return NS_OK;
 }
 
 void BackgroundRequestChild::ActorDestroy(ActorDestroyReason aWhy) {
   AssertIsOnOwningThread();
 
   MaybeCollectGarbageOnIPCMessage();
 
-  for (uint32_t count = mPreprocessHelpers.Length(), index = 0; index < count;
-       index++) {
-    RefPtr<PreprocessHelper>& preprocessHelper = mPreprocessHelpers[index];
+  for (auto& cloneInfo : mCloneInfos) {
+    const auto& preprocessHelper = cloneInfo.mPreprocessHelper;
 
     if (preprocessHelper) {
       preprocessHelper->ClearActor();
-
-      preprocessHelper = nullptr;
     }
   }
+  mCloneInfos.Clear();
 
   if (mTransaction) {
     mTransaction->AssertIsOnOwningThread();
 
     mTransaction->OnRequestFinished(/* aRequestCompletedSuccessfully */
                                     aWhy == Deletion);
 #ifdef DEBUG
     mTransaction = nullptr;
--- a/dom/indexedDB/ActorsChild.h
+++ b/dom/indexedDB/ActorsChild.h
@@ -50,16 +50,27 @@ class IDBRequest;
 class IndexedDatabaseManager;
 
 namespace indexedDB {
 
 class Key;
 class PermissionRequestChild;
 class PermissionRequestParent;
 class SerializedStructuredCloneReadInfo;
+struct CloneInfo;
+
+}  // namespace indexedDB
+}  // namespace dom
+}  // namespace mozilla
+
+DECLARE_USE_COPY_CONSTRUCTORS(mozilla::dom::indexedDB::CloneInfo)
+
+namespace mozilla {
+namespace dom {
+namespace indexedDB {
 
 class ThreadLocal {
   friend class nsAutoPtr<ThreadLocal>;
   friend IDBFactory;
 
   LoggingInfo mLoggingInfo;
   IDBTransaction* mCurrentTransaction;
   nsCString mLoggingIdString;
@@ -551,23 +562,23 @@ class BackgroundMutableFileChild final :
   bool DeallocPBackgroundFileHandleChild(
       PBackgroundFileHandleChild* aActor) override;
 };
 
 class BackgroundRequestChild final : public BackgroundRequestChildBase,
                                      public PBackgroundIDBRequestChild {
   friend class BackgroundTransactionChild;
   friend class BackgroundVersionChangeTransactionChild;
+  friend struct CloneInfo;
   friend IDBTransaction;
 
   class PreprocessHelper;
 
   RefPtr<IDBTransaction> mTransaction;
-  nsTArray<RefPtr<PreprocessHelper>> mPreprocessHelpers;
-  nsTArray<UniquePtr<JSStructuredCloneData>> mCloneDatas;
+  nsTArray<CloneInfo> mCloneInfos;
   uint32_t mRunningPreprocessHelpers;
   uint32_t mCurrentCloneDataIndex;
   nsresult mPreprocessResultCode;
   bool mGetAll;
 
  private:
   // Only created by IDBTransaction.
   explicit BackgroundRequestChild(IDBRequest* aRequest);
@@ -612,16 +623,21 @@ class BackgroundRequestChild final : pub
 
   mozilla::ipc::IPCResult Recv__delete__(
       const RequestResponse& aResponse) override;
 
   mozilla::ipc::IPCResult RecvPreprocess(
       const PreprocessParams& aParams) override;
 };
 
+struct CloneInfo {
+  RefPtr<BackgroundRequestChild::PreprocessHelper> mPreprocessHelper;
+  UniquePtr<JSStructuredCloneData> mCloneData;
+};
+
 // TODO: Consider defining different subclasses for the different cursor types,
 // possibly using the CRTP, which would remove the need for various case
 // distinctions.
 class BackgroundCursorChild final : public PBackgroundIDBCursorChild {
   friend class BackgroundTransactionChild;
   friend class BackgroundVersionChangeTransactionChild;
 
   class DelayedActionRunnable;
--- a/dom/indexedDB/IDBDatabase.cpp
+++ b/dom/indexedDB/IDBDatabase.cpp
@@ -339,19 +339,21 @@ already_AddRefed<DOMStringList> IDBDatab
   const nsTArray<ObjectStoreSpec>& objectStores = mSpec->objectStores();
 
   RefPtr<DOMStringList> list = new DOMStringList();
 
   if (!objectStores.IsEmpty()) {
     nsTArray<nsString>& listNames = list->StringArray();
     listNames.SetCapacity(objectStores.Length());
 
-    for (uint32_t index = 0; index < objectStores.Length(); index++) {
-      listNames.InsertElementSorted(objectStores[index].metadata().name());
-    }
+    std::transform(
+        objectStores.cbegin(), objectStores.cend(), MakeBackInserter(listNames),
+        [](const auto& objectStore) { return objectStore.metadata().name(); });
+
+    listNames.Sort();
   }
 
   return list.forget();
 }
 
 already_AddRefed<Document> IDBDatabase::GetOwnerDocument() const {
   if (nsPIDOMWindowInner* window = GetOwner()) {
     nsCOMPtr<Document> doc = window->GetExtantDoc();
@@ -378,27 +380,29 @@ already_AddRefed<IDBObjectStore> IDBData
   }
 
   KeyPath keyPath(0);
   if (NS_FAILED(KeyPath::Parse(aOptionalParameters.mKeyPath, &keyPath))) {
     aRv.Throw(NS_ERROR_DOM_SYNTAX_ERR);
     return nullptr;
   }
 
-  nsTArray<ObjectStoreSpec>& objectStores = mSpec->objectStores();
-  for (uint32_t count = objectStores.Length(), index = 0; index < count;
-       index++) {
-    if (aName == objectStores[index].metadata().name()) {
-      aRv.ThrowDOMException(
-          NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR,
-          nsPrintfCString(
-              "Object store named '%s' already exists at index '%u'",
-              NS_ConvertUTF16toUTF8(aName).get(), index));
-      return nullptr;
-    }
+  auto& objectStores = mSpec->objectStores();
+  const auto end = objectStores.cend();
+  const auto foundIt = std::find_if(
+      objectStores.cbegin(), end, [&aName](const auto& objectStore) {
+        return aName == objectStore.metadata().name();
+      });
+  if (foundIt != end) {
+    aRv.ThrowDOMException(
+        NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR,
+        nsPrintfCString("Object store named '%s' already exists at index '%zu'",
+                        NS_ConvertUTF16toUTF8(aName).get(),
+                        foundIt.GetIndex()));
+    return nullptr;
   }
 
   if (!keyPath.IsAllowedForObjectStore(aOptionalParameters.mAutoIncrement)) {
     aRv.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
     return nullptr;
   }
 
   const ObjectStoreSpec* oldSpecElements =
@@ -443,43 +447,37 @@ void IDBDatabase::DeleteObjectStore(cons
     return;
   }
 
   if (!transaction->IsOpen()) {
     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR);
     return;
   }
 
-  nsTArray<ObjectStoreSpec>& specArray = mSpec->objectStores();
-
-  int64_t objectStoreId = 0;
-
-  for (uint32_t specCount = specArray.Length(), specIndex = 0;
-       specIndex < specCount; specIndex++) {
-    const ObjectStoreMetadata& metadata = specArray[specIndex].metadata();
-    MOZ_ASSERT(metadata.id());
-
-    if (aName == metadata.name()) {
-      objectStoreId = metadata.id();
+  auto& specArray = mSpec->objectStores();
+  const auto end = specArray.end();
+  const auto foundIt =
+      std::find_if(specArray.begin(), end, [&aName](const auto& objectStore) {
+        const ObjectStoreMetadata& metadata = objectStore.metadata();
+        MOZ_ASSERT(metadata.id());
 
-      // Must do this before altering the metadata array!
-      transaction->DeleteObjectStore(objectStoreId);
-
-      specArray.RemoveElementAt(specIndex);
+        return aName == metadata.name();
+      });
 
-      RefreshSpec(/* aMayDelete */ false);
-      break;
-    }
-  }
-
-  if (!objectStoreId) {
+  if (foundIt == end) {
     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR);
     return;
   }
 
+  // Must do this before altering the metadata array!
+  transaction->DeleteObjectStore(foundIt->metadata().id());
+
+  specArray.RemoveElementAt(foundIt);
+  RefreshSpec(/* aMayDelete */ false);
+
   // Don't do this in the macro because we always need to increment the serial
   // number to keep in sync with the parent.
   const uint64_t requestSerialNumber = IDBRequest::NextSerialNumber();
 
   IDB_LOG_MARK_CHILD_TRANSACTION_REQUEST(
       "database(%s).transaction(%s).deleteObjectStore(\"%s\")",
       "IDBDatabase.deleteObjectStore()", transaction->LoggingSerialNumber(),
       requestSerialNumber, IDB_LOG_STRINGIFY(this),
@@ -553,43 +551,36 @@ nsresult IDBDatabase::Transaction(JSCont
   MOZ_ASSERT(!storeNames.IsEmpty());
 
   const nsTArray<ObjectStoreSpec>& objectStores = mSpec->objectStores();
   const uint32_t nameCount = storeNames.Length();
 
   nsTArray<nsString> sortedStoreNames;
   sortedStoreNames.SetCapacity(nameCount);
 
-  // Check to make sure the object store names we collected actually exist.
-  for (uint32_t nameIndex = 0; nameIndex < nameCount; nameIndex++) {
-    const nsString& name = storeNames[nameIndex];
-
-    bool found = false;
-
-    for (uint32_t objCount = objectStores.Length(), objIndex = 0;
-         objIndex < objCount; objIndex++) {
-      if (objectStores[objIndex].metadata().name() == name) {
-        found = true;
-        break;
-      }
-    }
-
-    if (!found) {
+  // While collecting object store names, check if the corresponding object
+  // stores actually exist.
+  const auto begin = objectStores.cbegin();
+  const auto end = objectStores.cend();
+  for (const auto& name : storeNames) {
+    const auto foundIt =
+        std::find_if(begin, end, [&name](const auto& objectStore) {
+          return objectStore.metadata().name() == name;
+        });
+    if (foundIt == end) {
       return NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR;
     }
 
-    sortedStoreNames.InsertElementSorted(name);
+    sortedStoreNames.EmplaceBack(name);
   }
+  sortedStoreNames.Sort();
 
   // Remove any duplicates.
-  for (uint32_t nameIndex = nameCount - 1; nameIndex > 0; nameIndex--) {
-    if (sortedStoreNames[nameIndex] == sortedStoreNames[nameIndex - 1]) {
-      sortedStoreNames.RemoveElementAt(nameIndex);
-    }
-  }
+  sortedStoreNames.SetLength(
+      std::unique(sortedStoreNames.begin(), sortedStoreNames.end()).GetIndex());
 
   IDBTransaction::Mode mode;
   switch (aMode) {
     case IDBTransactionMode::Readonly:
       mode = IDBTransaction::READ_ONLY;
       break;
     case IDBTransactionMode::Readwrite:
       if (mQuotaExceeded) {
--- a/dom/indexedDB/IDBObjectStore.cpp
+++ b/dom/indexedDB/IDBObjectStore.cpp
@@ -48,16 +48,18 @@
 #include "mozilla/SystemGroup.h"
 #include "nsCOMPtr.h"
 #include "nsQueryObject.h"
 #include "nsStreamUtils.h"
 #include "nsStringStream.h"
 #include "ProfilerHelpers.h"
 #include "ReportInternalError.h"
 
+#include <numeric>
+
 // Include this last to avoid path problems on Windows.
 #include "ActorsChild.h"
 
 namespace mozilla {
 namespace dom {
 
 using namespace mozilla::dom::indexedDB;
 using namespace mozilla::dom::quota;
@@ -1526,21 +1528,22 @@ already_AddRefed<IDBRequest> IDBObjectSt
   // kMaxIDBMsgOverhead covers the minor stuff not included in this calculation
   // because the precise calculation would slow down this AddOrPut operation.
   static const size_t kMaxIDBMsgOverhead = 1024 * 1024;  // 1MB
   const uint32_t maximalSizeFromPref =
       IndexedDatabaseManager::MaxSerializedMsgSize();
   MOZ_ASSERT(maximalSizeFromPref > kMaxIDBMsgOverhead);
   const size_t kMaxMessageSize = maximalSizeFromPref - kMaxIDBMsgOverhead;
 
-  size_t indexUpdateInfoSize = 0;
-  for (size_t i = 0; i < updateInfo.Length(); i++) {
-    indexUpdateInfoSize += updateInfo[i].value().GetBuffer().Length();
-    indexUpdateInfoSize += updateInfo[i].localizedValue().GetBuffer().Length();
-  }
+  const size_t indexUpdateInfoSize =
+      std::accumulate(updateInfo.cbegin(), updateInfo.cend(), 0u,
+                      [](size_t old, const IndexUpdateInfo& updateInfo) {
+                        return old + updateInfo.value().GetBuffer().Length() +
+                               updateInfo.localizedValue().GetBuffer().Length();
+                      });
 
   const size_t messageSize = cloneWriteInfo.mCloneBuffer.data().Size() +
                              key.GetBuffer().Length() + indexUpdateInfoSize;
 
   if (messageSize > kMaxMessageSize) {
     IDB_REPORT_INTERNAL_ERR();
     aRv.ThrowDOMException(NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR,
                           nsPrintfCString("The serialized value is too large"
--- a/editor/libeditor/tests/test_bug549262.html
+++ b/editor/libeditor/tests/test_bug549262.html
@@ -116,17 +116,17 @@ function startTest() {
   synthesizeKey("VK_DOWN", {}, win);
 
   step();
 
   is(win.scrollY, oldY, "Page is not scrolled down");
   is(win.getSelection().focusNode, ed.firstChild, "Correct element selected");
   is(win.getSelection().focusOffset, ed.textContent.length, "Selection should be moved to the end");
 
+  cwu.restoreNormalRefresh();
   win.close();
-  cwu.restoreNormalRefresh();
 
   SimpleTest.finish();
 }
 </script>
 </pre>
 </body>
 </html>
--- a/gfx/layers/composite/LayerManagerComposite.cpp
+++ b/gfx/layers/composite/LayerManagerComposite.cpp
@@ -36,16 +36,17 @@
 #include "mozilla/StaticPrefs_gfx.h"
 #include "mozilla/StaticPrefs_layers.h"
 #include "mozilla/gfx/2D.h"             // for DrawTarget
 #include "mozilla/gfx/Matrix.h"         // for Matrix4x4
 #include "mozilla/gfx/Point.h"          // for IntSize, Point
 #include "mozilla/gfx/Rect.h"           // for Rect
 #include "mozilla/gfx/Types.h"          // for Color, SurfaceFormat
 #include "mozilla/layers/Compositor.h"  // for Compositor
+#include "mozilla/layers/CompositorOGL.h"
 #include "mozilla/layers/CompositorTypes.h"
 #include "mozilla/layers/Effects.h"              // for Effect, EffectChain, etc
 #include "mozilla/layers/LayerMetricsWrapper.h"  // for LayerMetricsWrapper
 #include "mozilla/layers/LayersTypes.h"          // for etc
 #include "mozilla/widget/CompositorWidget.h"     // for WidgetRenderingContext
 #include "ipc/CompositorBench.h"                 // for CompositorBench
 #include "ipc/ShadowLayerUtils.h"
 #include "mozilla/mozalloc.h"  // for operator new, etc
@@ -57,17 +58,16 @@
 #include "nsPoint.h"          // for nsIntPoint
 #include "nsRect.h"           // for mozilla::gfx::IntRect
 #include "nsRegion.h"         // for nsIntRegion, etc
 #if defined(MOZ_WIDGET_ANDROID)
 #  include <android/log.h>
 #  include <android/native_window.h>
 #  include "mozilla/jni/Utils.h"
 #  include "mozilla/widget/AndroidCompositorWidget.h"
-#  include "opengl/CompositorOGL.h"
 #  include "GLConsts.h"
 #  include "GLContextEGL.h"
 #  include "GLContextProvider.h"
 #  include "mozilla/Unused.h"
 #  include "ScopedGLHelpers.h"
 #endif
 #include "GeckoProfiler.h"
 #include "TextRenderer.h"  // for TextRenderer
@@ -1098,19 +1098,19 @@ bool LayerManagerComposite::Render(const
     auto packet = MakeUnique<layerscope::Packet>();
     layerscope::LayersPacket* layersPacket = packet->mutable_layers();
     this->Dump(layersPacket);
     LayerScope::SendLayerDump(std::move(packet));
   }
 
   mozilla::widget::WidgetRenderingContext widgetContext;
 #if defined(XP_MACOSX)
-  widgetContext.mLayerManager = this;
-#elif defined(MOZ_WIDGET_ANDROID)
-  widgetContext.mCompositor = GetCompositor();
+  if (CompositorOGL* compositorOGL = mCompositor->AsCompositorOGL()) {
+    widgetContext.mGL = compositorOGL->gl();
+  }
 #endif
 
   {
     AUTO_PROFILER_LABEL("LayerManagerComposite::Render:Prerender", GRAPHICS);
 
     if (!mCompositor->GetWidget()->PreRender(&widgetContext)) {
       return false;
     }
--- a/gfx/layers/moz.build
+++ b/gfx/layers/moz.build
@@ -301,26 +301,24 @@ if CONFIG['MOZ_WAYLAND']:
     SOURCES += [
         'opengl/WaylandDMABUFTextureClientOGL.cpp',
         'opengl/WaylandDMABUFTextureHostOGL.cpp',
     ]
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     EXPORTS.mozilla.layers += [
         'NativeLayerCA.h',
-        'opengl/GLManager.h',
         'TextureSync.h',
     ]
     EXPORTS += [
         'MacIOSurfaceHelpers.h',
         'MacIOSurfaceImage.h',
     ]
     UNIFIED_SOURCES += [
         'NativeLayerCA.mm',
-        'opengl/GLManager.cpp',
         'TextureSync.cpp',
     ]
     SOURCES += [
         'ipc/ShadowLayerUtilsMac.cpp',
         'MacIOSurfaceHelpers.cpp',
         'MacIOSurfaceImage.cpp',
     ]
     OS_LIBS += [
--- a/gfx/layers/opengl/CompositorOGL.h
+++ b/gfx/layers/opengl/CompositorOGL.h
@@ -41,17 +41,16 @@ class nsIWidget;
 
 namespace mozilla {
 
 namespace layers {
 
 class CompositingRenderTarget;
 class CompositingRenderTargetOGL;
 class DataTextureSource;
-class GLManagerCompositor;
 class ShaderProgramOGL;
 class TextureSource;
 class TextureSourceOGL;
 class BufferTextureHost;
 struct Effect;
 struct EffectChain;
 class GLBlitTextureImageHelper;
 
@@ -101,17 +100,16 @@ class PerUnitTexturePoolOGL : public Com
   RefPtr<gl::GLContext> mGL;
 };
 
 // If you want to make this class not final, first remove calls to virtual
 // methods (Destroy) that are made in the destructor.
 class CompositorOGL final : public Compositor {
   typedef mozilla::gl::GLContext GLContext;
 
-  friend class GLManagerCompositor;
   friend class CompositingRenderTargetOGL;
 
   std::map<ShaderConfigOGL, ShaderProgramOGL*> mPrograms;
 
  public:
   CompositorOGL(CompositorBridgeParent* aParent,
                 widget::CompositorWidget* aWidget, int aSurfaceWidth = -1,
                 int aSurfaceHeight = -1, bool aUseExternalSurfaceSize = false);
deleted file mode 100644
--- a/gfx/layers/opengl/GLManager.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/. */
-
-#include "GLManager.h"
-#include "CompositorOGL.h"  // for CompositorOGL
-#include "GLContext.h"      // for GLContext
-#include "OGLShaderProgram.h"
-#include "mozilla/Attributes.h"         // for override
-#include "mozilla/RefPtr.h"             // for RefPtr
-#include "mozilla/layers/Compositor.h"  // for Compositor
-#include "mozilla/layers/LayerManagerComposite.h"
-#include "mozilla/layers/LayersTypes.h"
-#include "mozilla/mozalloc.h"  // for operator new, etc
-
-using namespace mozilla::gl;
-
-namespace mozilla {
-namespace layers {
-
-class GLManagerCompositor : public GLManager {
- public:
-  explicit GLManagerCompositor(CompositorOGL* aCompositor)
-      : mImpl(aCompositor) {}
-
-  GLContext* gl() const override { return mImpl->gl(); }
-
-  void ActivateProgram(ShaderProgramOGL* aProg) override {
-    mImpl->ActivateProgram(aProg);
-  }
-
-  ShaderProgramOGL* GetProgram(GLenum aTarget,
-                               gfx::SurfaceFormat aFormat) override {
-    ShaderConfigOGL config = ShaderConfigFromTargetAndFormat(aTarget, aFormat);
-    return mImpl->GetShaderProgramFor(config);
-  }
-
-  const gfx::Matrix4x4& GetProjMatrix() const override {
-    return mImpl->GetProjMatrix();
-  }
-
-  void BindAndDrawQuad(ShaderProgramOGL* aProg, const gfx::Rect& aLayerRect,
-                       const gfx::Rect& aTextureRect) override {
-    mImpl->BindAndDrawQuad(aProg, aLayerRect, aTextureRect);
-  }
-
- private:
-  RefPtr<CompositorOGL> mImpl;
-};
-
-/* static */
-GLManager* GLManager::CreateGLManager(LayerManagerComposite* aManager) {
-  if (aManager && aManager->GetCompositor()->GetBackendType() ==
-                      LayersBackend::LAYERS_OPENGL) {
-    return new GLManagerCompositor(
-        aManager->GetCompositor()->AsCompositorOGL());
-  }
-  return nullptr;
-}
-
-}  // namespace layers
-}  // namespace mozilla
deleted file mode 100644
--- a/gfx/layers/opengl/GLManager.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/. */
-
-#ifndef MOZILLA_GFX_GLMANAGER_H
-#define MOZILLA_GFX_GLMANAGER_H
-
-#include "GLDefs.h"
-#include "mozilla/gfx/Types.h"  // for SurfaceFormat
-#include "mozilla/gfx/2D.h"
-
-namespace mozilla {
-namespace gl {
-class GLContext;
-}  // namespace gl
-
-namespace layers {
-
-class LayerManagerComposite;
-class ShaderProgramOGL;
-
-/**
- * Minimal interface to allow widgets to draw using OpenGL. Abstracts
- * CompositorOGL. Call CreateGLManager with a LayerManagerComposite
- * backed by a CompositorOGL.
- */
-class GLManager {
- public:
-  static GLManager* CreateGLManager(LayerManagerComposite* aManager);
-
-  virtual ~GLManager() = default;
-
-  virtual gl::GLContext* gl() const = 0;
-  virtual ShaderProgramOGL* GetProgram(GLenum aTarget,
-                                       gfx::SurfaceFormat aFormat) = 0;
-  virtual void ActivateProgram(ShaderProgramOGL* aPrg) = 0;
-  virtual const gfx::Matrix4x4& GetProjMatrix() const = 0;
-  virtual void BindAndDrawQuad(ShaderProgramOGL* aProg,
-                               const gfx::Rect& aLayerRect,
-                               const gfx::Rect& aTextureRect) = 0;
-};
-
-}  // namespace layers
-}  // namespace mozilla
-
-#endif
--- a/gfx/webrender_bindings/RendererOGL.cpp
+++ b/gfx/webrender_bindings/RendererOGL.cpp
@@ -111,19 +111,16 @@ RenderedFrameId RendererOGL::UpdateAndRe
     const Maybe<gfx::IntSize>& aReadbackSize,
     const Maybe<wr::ImageFormat>& aReadbackFormat,
     const Maybe<Range<uint8_t>>& aReadbackBuffer, bool aHadSlowFrame,
     RendererStats* aOutStats) {
   mozilla::widget::WidgetRenderingContext widgetContext;
 
 #if defined(XP_MACOSX)
   widgetContext.mGL = mCompositor->gl();
-// TODO: we don't have a notion of compositor here.
-//#elif defined(MOZ_WIDGET_ANDROID)
-//  widgetContext.mCompositor = mCompositor;
 #endif
 
   if (!mCompositor->GetWidget()->PreRender(&widgetContext)) {
     // XXX This could cause oom in webrender since pending_texture_updates is
     // not handled. It needs to be addressed.
     return RenderedFrameId();
     ;
   }
--- a/intl/locale/windows/OSPreferences_win.cpp
+++ b/intl/locale/windows/OSPreferences_win.cpp
@@ -1,51 +1,123 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  *
  * 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/. */
 
 #include "OSPreferences.h"
 #include "mozilla/intl/LocaleService.h"
+#include "mozilla/WindowsVersion.h"
 #include "nsReadableUtils.h"
 
 #include <windows.h>
 
+#ifndef __MINGW32__  // WinRT headers not yet supported by MinGW
+#  include <roapi.h>
+#  include <wrl.h>
+#  include <Windows.System.UserProfile.h>
+
+using namespace Microsoft::WRL;
+using namespace Microsoft::WRL::Wrappers;
+using namespace ABI::Windows::Foundation::Collections;
+using namespace ABI::Windows::System::UserProfile;
+#endif
+
 using namespace mozilla::intl;
 
 OSPreferences::OSPreferences() {}
 
 OSPreferences::~OSPreferences() {}
 
 bool OSPreferences::ReadSystemLocales(nsTArray<nsCString>& aLocaleList) {
   MOZ_ASSERT(aLocaleList.IsEmpty());
 
-  ULONG numLanguages = 0;
-  DWORD cchLanguagesBuffer = 0;
-  BOOL ok = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages,
-                                        nullptr, &cchLanguagesBuffer);
-  if (ok) {
-    AutoTArray<WCHAR, 64> locBuffer;
-    locBuffer.SetCapacity(cchLanguagesBuffer);
-    ok = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages,
-                                     locBuffer.Elements(), &cchLanguagesBuffer);
-    if (ok) {
-      NS_LossyConvertUTF16toASCII loc(locBuffer.Elements());
+#ifndef __MINGW32__
+  if (IsWin8OrLater()) {
+    // Try to get language list from GlobalizationPreferences; if this fails,
+    // we'll fall back to GetUserPreferredUILanguages.
+    // Per MSDN, these APIs are not available prior to Win8.
 
-      // We will only take the first locale from the returned list, because
-      // we do not support real fallback chains for RequestedLocales yet.
-      if (CanonicalizeLanguageTag(loc)) {
-        aLocaleList.AppendElement(loc);
-        return true;
+    // RoInitialize may fail with "cannot change thread mode after it is set",
+    // if the runtime was already initialized on this thread.
+    // This appears to be harmless, and we can proceed to attempt the following
+    // runtime calls.
+    HRESULT inited = RoInitialize(RO_INIT_MULTITHREADED);
+    if (SUCCEEDED(inited) || inited == RPC_E_CHANGED_MODE) {
+      ComPtr<IGlobalizationPreferencesStatics> globalizationPrefs;
+      ComPtr<IVectorView<HSTRING>> languages;
+      uint32_t count;
+      if (SUCCEEDED(RoGetActivationFactory(
+              HStringReference(
+                  RuntimeClass_Windows_System_UserProfile_GlobalizationPreferences)
+                  .Get(),
+              IID_PPV_ARGS(&globalizationPrefs))) &&
+          SUCCEEDED(globalizationPrefs->get_Languages(&languages)) &&
+          SUCCEEDED(languages->get_Size(&count))) {
+        for (uint32_t i = 0; i < count; ++i) {
+          HString lang;
+          if (SUCCEEDED(languages->GetAt(i, lang.GetAddressOf()))) {
+            unsigned int length;
+            const wchar_t* text = lang.GetRawBuffer(&length);
+            NS_LossyConvertUTF16toASCII loc(text, length);
+            if (CanonicalizeLanguageTag(loc)) {
+              aLocaleList.AppendElement(loc);
+            }
+          }
+        }
+      }
+
+      // Only close the runtime if we successfully initialized it above,
+      // otherwise we assume it was already in use and should be left as is.
+      if (SUCCEEDED(inited)) {
+        RoUninitialize();
       }
     }
   }
+#endif
 
-  return false;
+  // Per MSDN, GetUserPreferredUILanguages is available from Vista onwards,
+  // so we can use it unconditionally (although it may not work well!)
+  if (aLocaleList.IsEmpty()) {
+    // Note that according to the questioner at
+    // https://stackoverflow.com/questions/52849233/getuserpreferreduilanguages-never-returns-more-than-two-languages,
+    // this may not always return the full list of languages we'd expect.
+    // We should always get at least the first-preference lang, though.
+    ULONG numLanguages = 0;
+    DWORD cchLanguagesBuffer = 0;
+    if (!GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages, nullptr,
+                                     &cchLanguagesBuffer)) {
+      return false;
+    }
+
+    AutoTArray<WCHAR, 64> locBuffer;
+    locBuffer.SetCapacity(cchLanguagesBuffer);
+    if (!GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages,
+                                     locBuffer.Elements(),
+                                     &cchLanguagesBuffer)) {
+      return false;
+    }
+
+    const WCHAR* start = locBuffer.Elements();
+    const WCHAR* bufEnd = start + cchLanguagesBuffer;
+    while (bufEnd - start > 1 && *start) {
+      const WCHAR* end = start + 1;
+      while (bufEnd - end > 1 && *end) {
+        end++;
+      }
+      NS_LossyConvertUTF16toASCII loc(start, end - start);
+      if (CanonicalizeLanguageTag(loc)) {
+        aLocaleList.AppendElement(loc);
+      }
+      start = end + 1;
+    }
+  }
+
+  return !aLocaleList.IsEmpty();
 }
 
 bool OSPreferences::ReadRegionalPrefsLocales(nsTArray<nsCString>& aLocaleList) {
   MOZ_ASSERT(aLocaleList.IsEmpty());
 
   WCHAR locale[LOCALE_NAME_MAX_LENGTH];
   if (NS_WARN_IF(!LCIDToLocaleName(LOCALE_USER_DEFAULT, locale,
                                    LOCALE_NAME_MAX_LENGTH, 0))) {
--- a/js/src/debugger/Script.cpp
+++ b/js/src/debugger/Script.cpp
@@ -1509,17 +1509,16 @@ static bool BytecodeIsEffectful(JSOp op)
     case JSOP_RETURN:
     case JSOP_RETRVAL:
     case JSOP_AND:
     case JSOP_OR:
     case JSOP_COALESCE:
     case JSOP_TRY:
     case JSOP_THROW:
     case JSOP_GOTO:
-    case JSOP_CONDSWITCH:
     case JSOP_TABLESWITCH:
     case JSOP_CASE:
     case JSOP_DEFAULT:
     case JSOP_BITNOT:
     case JSOP_BITAND:
     case JSOP_BITOR:
     case JSOP_BITXOR:
     case JSOP_LSH:
@@ -1702,16 +1701,17 @@ static bool BytecodeIsEffectful(JSOp op)
     case JSOP_ASYNCRESOLVE:
     case JSOP_FINALLY:
     case JSOP_GETRVAL:
     case JSOP_GOSUB:
     case JSOP_RETSUB:
     case JSOP_THROWMSG:
     case JSOP_FORCEINTERPRETER:
     case JSOP_UNUSED71:
+    case JSOP_UNUSED120:
     case JSOP_UNUSED149:
     case JSOP_LIMIT:
       return false;
   }
 
   MOZ_ASSERT_UNREACHABLE("Invalid opcode");
   return false;
 }
--- a/js/src/frontend/BytecodeControlStructures.cpp
+++ b/js/src/frontend/BytecodeControlStructures.cpp
@@ -80,19 +80,16 @@ bool LoopControl::emitContinueTarget(Byt
 }
 
 bool LoopControl::emitSpecialBreakForDone(BytecodeEmitter* bce) {
   // This doesn't pop stack values, nor handle any other controls.
   // Should be called on the toplevel of the loop.
   MOZ_ASSERT(bce->bytecodeSection().stackDepth() == stackDepth_);
   MOZ_ASSERT(bce->innermostNestableControl == this);
 
-  if (!bce->newSrcNote(SRC_BREAK)) {
-    return false;
-  }
   if (!bce->emitJump(JSOP_GOTO, &breaks)) {
     return false;
   }
 
   return true;
 }
 
 bool LoopControl::emitEntryJump(BytecodeEmitter* bce) {
--- a/js/src/frontend/BytecodeControlStructures.h
+++ b/js/src/frontend/BytecodeControlStructures.h
@@ -158,22 +158,16 @@ class LoopControl : public BreakableCont
   }
 
   // The offset of the backward jump at the loop end from the loop's top, in
   // case there was no entry jump.
   BytecodeOffsetDiff loopEndOffsetFromLoopHead() const {
     return loopEndOffset_ - head_.offset;
   }
 
-  // The offset of the continue target from the loop's top, in case there was
-  // no entry jump.
-  BytecodeOffsetDiff continueTargetOffsetFromLoopHead() const {
-    return continueTarget_.offset - head_.offset;
-  }
-
   // A continue target can be specified by the following 2 ways:
   //   * Use the existing JUMPTARGET by calling `setContinueTarget` with
   //     the offset of the JUMPTARGET
   //   * Generate a new JUMPTARGETby calling `emitContinueTarget`
   void setContinueTarget(BytecodeOffset offset) {
     continueTarget_.offset = offset;
   }
   MOZ_MUST_USE bool emitContinueTarget(BytecodeEmitter* bce);
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -856,31 +856,25 @@ bool NonLocalExitControl::prepareForNonL
   }
 
   return true;
 }
 
 }  // anonymous namespace
 
 bool BytecodeEmitter::emitGoto(NestableControl* target, JumpList* jumplist,
-                               SrcNoteType noteType) {
-  NonLocalExitControl nle(this, noteType == SRC_CONTINUE
+                               GotoKind kind) {
+  NonLocalExitControl nle(this, kind == GotoKind::Continue
                                     ? NonLocalExitControl::Continue
                                     : NonLocalExitControl::Break);
 
   if (!nle.prepareForNonLocalJump(target)) {
     return false;
   }
 
-  if (noteType != SRC_NULL) {
-    if (!newSrcNote(noteType)) {
-      return false;
-    }
-  }
-
   return emitJump(JSOP_GOTO, jumplist);
 }
 
 Scope* BytecodeEmitter::innermostScope() const {
   return innermostEmitterScope()->scope(this);
 }
 
 bool BytecodeEmitter::emitIndex32(JSOp op, uint32_t index) {
@@ -5862,34 +5856,30 @@ bool BytecodeEmitter::emitWhile(BinaryNo
     return false;
   }
 
   return true;
 }
 
 bool BytecodeEmitter::emitBreak(PropertyName* label) {
   BreakableControl* target;
-  SrcNoteType noteType;
   if (label) {
     // Any statement with the matching label may be the break target.
     auto hasSameLabel = [label](LabelControl* labelControl) {
       return labelControl->label() == label;
     };
     target = findInnermostNestableControl<LabelControl>(hasSameLabel);
-    noteType = SRC_BREAK2LABEL;
   } else {
     auto isNotLabel = [](BreakableControl* control) {
       return !control->is<LabelControl>();
     };
     target = findInnermostNestableControl<BreakableControl>(isNotLabel);
-    noteType =
-        (target->kind() == StatementKind::Switch) ? SRC_SWITCHBREAK : SRC_BREAK;
-  }
-
-  return emitGoto(target, &target->breaks, noteType);
+  }
+
+  return emitGoto(target, &target->breaks, GotoKind::Break);
 }
 
 bool BytecodeEmitter::emitContinue(PropertyName* label) {
   LoopControl* target = nullptr;
   if (label) {
     // Find the loop statement enclosed by the matching label.
     NestableControl* control = innermostNestableControl;
     while (!control->is<LabelControl>() ||
@@ -5897,17 +5887,17 @@ bool BytecodeEmitter::emitContinue(Prope
       if (control->is<LoopControl>()) {
         target = &control->as<LoopControl>();
       }
       control = control->enclosing();
     }
   } else {
     target = findInnermostNestableControl<LoopControl>();
   }
-  return emitGoto(target, &target->continues, SRC_CONTINUE);
+  return emitGoto(target, &target->continues, GotoKind::Continue);
 }
 
 bool BytecodeEmitter::emitGetFunctionThis(NameNode* thisName) {
   MOZ_ASSERT(sc->thisBinding() == ThisBinding::Function);
   MOZ_ASSERT(thisName->isName(cx->names().dotThis));
 
   return emitGetFunctionThis(Some(thisName->pn_pos.begin));
 }
--- a/js/src/frontend/BytecodeEmitter.h
+++ b/js/src/frontend/BytecodeEmitter.h
@@ -446,18 +446,19 @@ struct MOZ_STACK_CLASS BytecodeEmitter {
 
   MOZ_MUST_USE bool emitCall(JSOp op, uint16_t argc,
                              const mozilla::Maybe<uint32_t>& sourceCoordOffset);
   MOZ_MUST_USE bool emitCall(JSOp op, uint16_t argc, ParseNode* pn = nullptr);
   MOZ_MUST_USE bool emitCallIncDec(UnaryNode* incDec);
 
   mozilla::Maybe<uint32_t> getOffsetForLoop(ParseNode* nextpn);
 
+  enum class GotoKind { Break, Continue };
   MOZ_MUST_USE bool emitGoto(NestableControl* target, JumpList* jumplist,
-                             SrcNoteType noteType = SRC_NULL);
+                             GotoKind kind);
 
   MOZ_MUST_USE bool emitIndex32(JSOp op, uint32_t index);
   MOZ_MUST_USE bool emitIndexOp(JSOp op, uint32_t index);
 
   MOZ_MUST_USE bool emitAtomOp(
       JSAtom* atom, JSOp op,
       ShouldInstrument shouldInstrument = ShouldInstrument::No);
   MOZ_MUST_USE bool emitAtomOp(
--- a/js/src/frontend/CForEmitter.cpp
+++ b/js/src/frontend/CForEmitter.cpp
@@ -204,20 +204,16 @@ bool CForEmitter::emitCond(const Maybe<u
 
 bool CForEmitter::emitEnd() {
   MOZ_ASSERT(state_ == State::Cond);
   // Set the first note offset so we can find the loop condition.
   if (!bce_->setSrcNoteOffset(noteIndex_, SrcNote::For::CondOffset,
                               condOffset_ - biasedTop_)) {
     return false;
   }
-  if (!bce_->setSrcNoteOffset(noteIndex_, SrcNote::For::UpdateOffset,
-                              loopInfo_->continueTargetOffset() - biasedTop_)) {
-    return false;
-  }
 
   // If no loop condition, just emit a loop-closing jump.
   if (!loopInfo_->emitLoopEnd(bce_,
                               cond_ == Cond::Present ? JSOP_IFNE : JSOP_GOTO)) {
     //              [stack]
     return false;
   }
 
--- a/js/src/frontend/DoWhileEmitter.cpp
+++ b/js/src/frontend/DoWhileEmitter.cpp
@@ -30,17 +30,17 @@ bool DoWhileEmitter::emitBody(const Mayb
   }
 
   // We need a nop here to make it possible to set a breakpoint on `do`.
   if (!bce_->emit1(JSOP_NOP)) {
     return false;
   }
 
   // Emit an annotated nop so IonBuilder can recognize the 'do' loop.
-  if (!bce_->newSrcNote3(SRC_DO_WHILE, 0, 0, &noteIndex_)) {
+  if (!bce_->newSrcNote(SRC_DO_WHILE, &noteIndex_)) {
     return false;
   }
 
   loopInfo_.emplace(bce_, StatementKind::DoLoop);
 
   if (!loopInfo_->emitLoopHead(bce_, bodyPos)) {
     return false;
   }
@@ -76,22 +76,17 @@ bool DoWhileEmitter::emitEnd() {
   }
 
   if (!bce_->addTryNote(JSTRY_LOOP, bce_->bytecodeSection().stackDepth(),
                         loopInfo_->headOffset(),
                         loopInfo_->breakTargetOffset())) {
     return false;
   }
 
-  // Update the annotations with the update and back edge positions, for
-  // IonBuilder.
-  if (!bce_->setSrcNoteOffset(noteIndex_, SrcNote::DoWhile::CondOffset,
-                              loopInfo_->continueTargetOffsetFromLoopHead())) {
-    return false;
-  }
+  // Update the annotation with the back edge position, for IonBuilder.
   if (!bce_->setSrcNoteOffset(noteIndex_, SrcNote::DoWhile::BackJumpOffset,
                               loopInfo_->loopEndOffsetFromLoopHead())) {
     return false;
   }
 
   if (!loopInfo_->patchBreaksAndContinues(bce_)) {
     return false;
   }
--- a/js/src/frontend/IfEmitter.cpp
+++ b/js/src/frontend/IfEmitter.cpp
@@ -2,56 +2,46 @@
  * vim: set ts=8 sts=2 et sw=2 tw=80:
  * 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/. */
 
 #include "frontend/IfEmitter.h"
 
 #include "frontend/BytecodeEmitter.h"
-#include "frontend/SourceNotes.h"
 #include "vm/Opcodes.h"
 
 using namespace js;
 using namespace js::frontend;
 
 using mozilla::Maybe;
 
 BranchEmitterBase::BranchEmitterBase(BytecodeEmitter* bce, Kind kind)
     : bce_(bce), kind_(kind) {}
 
 IfEmitter::IfEmitter(BytecodeEmitter* bce, Kind kind)
     : BranchEmitterBase(bce, kind) {}
 
 IfEmitter::IfEmitter(BytecodeEmitter* bce)
     : IfEmitter(bce, Kind::MayContainLexicalAccessInBranch) {}
 
-bool BranchEmitterBase::emitThenInternal(SrcNoteType type) {
+bool BranchEmitterBase::emitThenInternal() {
   // The end of TDZCheckCache for cond for else-if.
   if (kind_ == Kind::MayContainLexicalAccessInBranch) {
     tdzCache_.reset();
   }
 
-  // Emit an annotated branch-if-false around the then part.
-  if (!bce_->newSrcNote(type)) {
-    return false;
-  }
+  // Emit a branch-if-false around the then part.
   if (!bce_->emitJump(JSOP_IFEQ, &jumpAroundThen_)) {
     return false;
   }
 
-  // To restore stack depth in else part, save depth of the then part.
-#ifdef DEBUG
-  // If DEBUG, this is also necessary to calculate |pushed_|.
+  // To restore stack depth in else part (if present), save depth of the then
+  // part.
   thenDepth_ = bce_->bytecodeSection().stackDepth();
-#else
-  if (type == SRC_COND || type == SRC_IF_ELSE) {
-    thenDepth_ = bce_->bytecodeSection().stackDepth();
-  }
-#endif
 
   // Enclose then-branch with TDZCheckCache.
   if (kind_ == Kind::MayContainLexicalAccessInBranch) {
     tdzCache_.emplace(bce_);
   }
 
   return true;
 }
@@ -144,32 +134,32 @@ bool IfEmitter::emitIf(const Maybe<uint3
   return true;
 }
 
 bool IfEmitter::emitThen() {
   MOZ_ASSERT(state_ == State::If || state_ == State::ElseIf);
   MOZ_ASSERT_IF(state_ == State::ElseIf, tdzCache_.isSome());
   MOZ_ASSERT_IF(state_ != State::ElseIf, tdzCache_.isNothing());
 
-  if (!emitThenInternal(SRC_IF)) {
+  if (!emitThenInternal()) {
     return false;
   }
 
 #ifdef DEBUG
   state_ = State::Then;
 #endif
   return true;
 }
 
 bool IfEmitter::emitThenElse() {
   MOZ_ASSERT(state_ == State::If || state_ == State::ElseIf);
   MOZ_ASSERT_IF(state_ == State::ElseIf, tdzCache_.isSome());
   MOZ_ASSERT_IF(state_ != State::ElseIf, tdzCache_.isNothing());
 
-  if (!emitThenInternal(SRC_IF_ELSE)) {
+  if (!emitThenInternal()) {
     return false;
   }
 
 #ifdef DEBUG
   state_ = State::ThenElse;
 #endif
   return true;
 }
@@ -241,17 +231,17 @@ bool CondEmitter::emitCond() {
 #ifdef DEBUG
   state_ = State::Cond;
 #endif
   return true;
 }
 
 bool CondEmitter::emitThenElse() {
   MOZ_ASSERT(state_ == State::Cond);
-  if (!emitThenInternal(SRC_COND)) {
+  if (!emitThenInternal()) {
     return false;
   }
 
 #ifdef DEBUG
   state_ = State::ThenElse;
 #endif
   return true;
 }
--- a/js/src/frontend/IfEmitter.h
+++ b/js/src/frontend/IfEmitter.h
@@ -64,17 +64,17 @@ class MOZ_STACK_CLASS BranchEmitterBase 
   // The number of values pushed in the then and else blocks.
   int32_t pushed_ = 0;
   bool calculatedPushed_ = false;
 #endif
 
  protected:
   BranchEmitterBase(BytecodeEmitter* bce, Kind kind);
 
-  MOZ_MUST_USE bool emitThenInternal(SrcNoteType type);
+  MOZ_MUST_USE bool emitThenInternal();
   void calculateOrCheckPushed();
   MOZ_MUST_USE bool emitElseInternal();
   MOZ_MUST_USE bool emitEndInternal();
 
  public:
 #ifdef DEBUG
   // Returns the number of values pushed onto the value stack inside
   // `then_block` and `else_block`.
--- a/js/src/frontend/SourceNotes.h
+++ b/js/src/frontend/SourceNotes.h
@@ -41,19 +41,16 @@ class SrcNote {
   // SRC_FOR: Source note for JSOP_NOP at the top of C-style for loop,
   //          which is placed after init expression/declaration ops.
   class For {
    public:
     enum Fields {
       // The offset of the condition expression ops from JSOP_NOP.
       CondOffset,
 
-      // The offset of the update expression ops from JSOP_NOP.
-      UpdateOffset,
-
       // The offset of JSOP_GOTO/JSOP_IFNE at the end of the loop from
       // JSOP_NOP.
       BackJumpOffset,
       Count,
     };
   };
   // SRC_WHILE: Source note for JSOP_GOTO at the top of while loop,
   //            which jumps to JSOP_LOOPENTRY.
@@ -64,19 +61,16 @@ class SrcNote {
       BackJumpOffset,
       Count,
     };
   };
   // SRC_DO_WHILE: Source note for JSOP_LOOPHEAD at the top of do-while loop
   class DoWhile {
    public:
     enum Fields {
-      // The offset of the condition ops from JSOP_LOOPHEAD.
-      CondOffset,
-
       // The offset of JSOP_IFNE at the end of the loop from
       // JSOP_LOOPHEAD.
       BackJumpOffset,
       Count,
     };
   };
   // SRC_FOR_IN: Source note for JSOP_GOTO at the top of for-in loop,
   //             which jumps to JSOP_LOOPENTRY.
@@ -103,39 +97,16 @@ class SrcNote {
    public:
     enum Fields {
       // The offset of the end of switch (the first non-JumpTarget op
       // after switch) from JSOP_TABLESWITCH.
       EndOffset,
       Count
     };
   };
-  // SRC_CONDSWITCH: Source note for JSOP_CONDSWITCH.
-  class CondSwitch {
-   public:
-    enum Fields {
-      // The offset of the end of switch (the first non-JumpTarget op
-      // after switch) from JSOP_CONDSWITCH.
-      EndOffset,
-
-      // The offset of JSOP_CASE for the first case from JSOP_CONDSWITCH.
-      FirstCaseOffset,
-      Count
-    };
-  };
-  // SRC_NEXTCASE: Source note for JSOP_CASE in a JSOP_CONDSWITCH.
-  class NextCase {
-   public:
-    enum Fields {
-      // Offset of the next JSOP_CASE from this JSOP_CASE.  This field is
-      // 0 if this is the last JSOP_CASE.
-      NextCaseOffset,
-      Count
-    };
-  };
   // SRC_TRY: Source note for JSOP_TRY.
   class Try {
    public:
     enum Fields {
       // The offset of the JSOP_GOTO at the end of the try block from
       // JSOP_TRY.
       EndOfTryJumpOffset,
       Count
@@ -160,41 +131,41 @@ class SrcNote {
       Count
     };
   };
 };
 
 // clang-format off
 #define FOR_EACH_SRC_NOTE_TYPE(M)                                                                  \
     M(SRC_NULL,         "null",        0)  /* Terminates a note vector. */                         \
-    M(SRC_IF,           "if",          0)  /* JSOP_IFEQ bytecode is from an if-then. */            \
-    M(SRC_IF_ELSE,      "if-else",     0)  /* JSOP_IFEQ bytecode is from an if-then-else. */       \
-    M(SRC_COND,         "cond",        0)  /* JSOP_IFEQ is from conditional ?: operator. */        \
     M(SRC_FOR,          "for",         SrcNote::For::Count) \
     M(SRC_WHILE,        "while",       SrcNote::While::Count) \
     M(SRC_DO_WHILE,     "do-while",    SrcNote::DoWhile::Count) \
     M(SRC_FOR_IN,       "for-in",      SrcNote::ForIn::Count) \
     M(SRC_FOR_OF,       "for-of",      SrcNote::ForOf::Count) \
-    M(SRC_CONTINUE,     "continue",    0)  /* JSOP_GOTO is a continue. */                          \
-    M(SRC_BREAK,        "break",       0)  /* JSOP_GOTO is a break. */                             \
-    M(SRC_BREAK2LABEL,  "break2label", 0)  /* JSOP_GOTO for 'break label'. */                      \
-    M(SRC_SWITCHBREAK,  "switchbreak", 0)  /* JSOP_GOTO is a break in a switch. */                 \
     M(SRC_TABLESWITCH,  "tableswitch", SrcNote::TableSwitch::Count) \
-    M(SRC_CONDSWITCH,   "condswitch",  SrcNote::CondSwitch::Count) \
-    M(SRC_NEXTCASE,     "nextcase",    SrcNote::NextCase::Count) \
     M(SRC_ASSIGNOP,     "assignop",    0)  /* += or another assign-op follows. */                  \
     M(SRC_CLASS_SPAN,   "class",       2)  /* The starting and ending offsets for the class, used  \
                                               for toString correctness for default ctors. */       \
     M(SRC_TRY,          "try",         SrcNote::Try::Count) \
     /* All notes above here are "gettable".  See SN_IS_GETTABLE below. */                          \
     M(SRC_COLSPAN,      "colspan",     SrcNote::ColSpan::Count) \
     M(SRC_NEWLINE,      "newline",     0)  /* Bytecode follows a source newline. */                \
     M(SRC_SETLINE,      "setline",     SrcNote::SetLine::Count) \
     M(SRC_BREAKPOINT,   "breakpoint",  0)  /* Bytecode is a recommended breakpoint. */             \
     M(SRC_STEP_SEP,     "step-sep",    0)  /* Bytecode is the first in a new steppable area. */    \
+    M(SRC_UNUSED15,     "unused",      0) \
+    M(SRC_UNUSED16,     "unused",      0) \
+    M(SRC_UNUSED17,     "unused",      0) \
+    M(SRC_UNUSED18,     "unused",      0) \
+    M(SRC_UNUSED19,     "unused",      0) \
+    M(SRC_UNUSED20,     "unused",      0) \
+    M(SRC_UNUSED21,     "unused",      0) \
+    M(SRC_UNUSED22,     "unused",      0) \
+    M(SRC_UNUSED23,     "unused",      0) \
     M(SRC_XDELTA,       "xdelta",      0)  /* 24-31 are for extended delta notes. */
 // clang-format on
 
 enum SrcNoteType {
 #define DEFINE_SRC_NOTE_TYPE(sym, name, arity) sym,
   FOR_EACH_SRC_NOTE_TYPE(DEFINE_SRC_NOTE_TYPE)
 #undef DEFINE_SRC_NOTE_TYPE
 
--- a/js/src/frontend/SwitchEmitter.cpp
+++ b/js/src/frontend/SwitchEmitter.cpp
@@ -39,17 +39,17 @@ bool SwitchEmitter::TableGenerator::addN
 
   if (intmap_.isNothing()) {
     intmap_.emplace();
   }
 
   low_ = std::min(low_, caseValue);
   high_ = std::max(high_, caseValue);
 
-  // Check for duplicates, which require a JSOP_CONDSWITCH.
+  // Check for duplicates, which are not supported in a table switch.
   // We bias caseValue by 65536 if it's negative, and hope that's a rare case
   // (because it requires a malloc'd bitmap).
   if (caseValue < 0) {
     caseValue += Bit(16);
   }
   if (caseValue >= intmapBitLength_) {
     size_t newLength = NumWordsForBitArrayOfLength(caseValue + 1);
     if (!intmap_->resize(newLength)) {
@@ -79,18 +79,18 @@ void SwitchEmitter::TableGenerator::fini
   }
 
   if (caseCount == 0) {
     low_ = 0;
     high_ = -1;
     return;
   }
 
-  // Compute table length and select condswitch instead if overlarge
-  // or more than half-sparse.
+  // Compute table length. Don't use table switch if overlarge or more than
+  // half-sparse.
   tableLength_ = uint32_t(high_ - low_ + 1);
   if (tableLength_ >= Bit(16) || tableLength_ > 2 * caseCount) {
     setInvalid();
   }
 }
 
 uint32_t SwitchEmitter::TableGenerator::toCaseIndex(int32_t caseValue) const {
   MOZ_ASSERT(finished_);
@@ -158,43 +158,34 @@ bool SwitchEmitter::emitCond() {
   controlInfo_.emplace(bce_, StatementKind::Switch);
   top_ = bce_->bytecodeSection().offset();
 
   if (!caseOffsets_.resize(caseCount_)) {
     ReportOutOfMemory(bce_->cx);
     return false;
   }
 
-  // The note has two offsets: first tells total switch code length;
-  // second tells offset to first JSOP_CASE.
-  if (!bce_->newSrcNote3(SRC_CONDSWITCH, 0, 0, &noteIndex_)) {
-    return false;
-  }
-
   MOZ_ASSERT(top_ == bce_->bytecodeSection().offset());
-  if (!bce_->emitN(JSOP_CONDSWITCH, 0)) {
-    return false;
-  }
 
   tdzCacheCaseAndBody_.emplace(bce_);
 
   state_ = State::Cond;
   return true;
 }
 
 bool SwitchEmitter::emitTable(const TableGenerator& tableGen) {
   MOZ_ASSERT(state_ == State::CaseCount);
   kind_ = Kind::Table;
 
   // After entering the scope if necessary, push the switch control.
   controlInfo_.emplace(bce_, StatementKind::Switch);
   top_ = bce_->bytecodeSection().offset();
 
   // The note has one offset that tells total switch code length.
-  if (!bce_->newSrcNote2(SRC_TABLESWITCH, 0, &noteIndex_)) {
+  if (!bce_->newSrcNote2(SRC_TABLESWITCH, 0, &tableSwitchNoteIndex_)) {
     return false;
   }
 
   if (!caseOffsets_.resize(tableGen.tableLength())) {
     ReportOutOfMemory(bce_->cx);
     return false;
   }
 
@@ -221,50 +212,23 @@ bool SwitchEmitter::emitCaseOrDefaultJum
 
   if (isDefault) {
     if (!bce_->emitJump(JSOP_DEFAULT, &condSwitchDefaultOffset_)) {
       return false;
     }
     return true;
   }
 
-  if (caseIndex > 0) {
-    // Link the last JSOP_CASE's SRC_NEXTCASE to current JSOP_CASE for the
-    // benefit of IonBuilder.
-    if (!bce_->setSrcNoteOffset(
-            caseNoteIndex_, SrcNote::NextCase::NextCaseOffset,
-            bce_->bytecodeSection().offset() - lastCaseOffset_)) {
-      return false;
-    }
-  }
-
-  if (!bce_->newSrcNote2(SRC_NEXTCASE, 0, &caseNoteIndex_)) {
-    return false;
-  }
-
   JumpList caseJump;
   if (!bce_->emitJump(JSOP_CASE, &caseJump)) {
     return false;
   }
   caseOffsets_[caseIndex] = caseJump.offset;
   lastCaseOffset_ = caseJump.offset;
 
-  if (caseIndex == 0) {
-    // Switch note's second offset is to first JSOP_CASE.
-    unsigned noteCount = bce_->bytecodeSection().notes().length();
-    if (!bce_->setSrcNoteOffset(noteIndex_, 1, lastCaseOffset_ - top_)) {
-      return false;
-    }
-    unsigned noteCountDelta =
-        bce_->bytecodeSection().notes().length() - noteCount;
-    if (noteCountDelta != 0) {
-      caseNoteIndex_ += noteCountDelta;
-    }
-  }
-
   return true;
 }
 
 bool SwitchEmitter::prepareForCaseValue() {
   MOZ_ASSERT(kind_ == Kind::Cond);
   MOZ_ASSERT(state_ == State::Cond || state_ == State::Case);
 
   if (!bce_->emit1(JSOP_DUP)) {
@@ -405,28 +369,24 @@ bool SwitchEmitter::emitEnd() {
                              defaultJumpTargetOffset_);
   } else {
     // Fill in the default jump target.
     pc = bce_->bytecodeSection().code(top_);
     SET_JUMP_OFFSET(pc, (defaultJumpTargetOffset_.offset - top_).value());
     pc += JUMP_OFFSET_LEN;
   }
 
-  // Set the SRC_SWITCH note's offset operand to tell end of switch.
-  // This code is shared between table switch and cond switch.
-  static_assert(unsigned(SrcNote::TableSwitch::EndOffset) ==
-                    unsigned(SrcNote::CondSwitch::EndOffset),
-                "{TableSwitch,CondSwitch}::EndOffset should be same");
-  if (!bce_->setSrcNoteOffset(
-          noteIndex_, SrcNote::TableSwitch::EndOffset,
-          bce_->bytecodeSection().lastNonJumpTargetOffset() - top_)) {
-    return false;
-  }
+  if (kind_ == Kind::Table) {
+    // Set the SRC_TABLESWITCH note's offset operand to tell end of switch.
+    if (!bce_->setSrcNoteOffset(
+            tableSwitchNoteIndex_, SrcNote::TableSwitch::EndOffset,
+            bce_->bytecodeSection().lastNonJumpTargetOffset() - top_)) {
+      return false;
+    }
 
-  if (kind_ == Kind::Table) {
     // Skip over the already-initialized switch bounds.
     pc += 2 * JUMP_OFFSET_LEN;
 
     // Use the 'default' offset for missing cases.
     for (uint32_t i = 0, length = caseOffsets_.length(); i < length; i++) {
       if (caseOffsets_[i].value() == 0) {
         caseOffsets_[i] = defaultJumpTargetOffset_.offset;
       }
--- a/js/src/frontend/SwitchEmitter.h
+++ b/js/src/frontend/SwitchEmitter.h
@@ -169,19 +169,18 @@ struct BytecodeEmitter;
 //     se.emitCaseBody();
 //     emit(c1_body);
 //
 //     se.emitEnd();
 //
 class MOZ_STACK_CLASS SwitchEmitter {
   // Bytecode for each case.
   //
-  // Cond Switch
+  // Cond Switch (uses an equality comparison for each case)
   //     {discriminant}
-  //     JSOP_CONDSWITCH
   //
   //     {c1_expr}
   //     JSOP_CASE c1
   //
   //     JSOP_JUMPTARGET
   //     {c2_expr}
   //     JSOP_CASE c2
   //
@@ -294,21 +293,18 @@ class MOZ_STACK_CLASS SwitchEmitter {
   BytecodeEmitter* bce_;
 
   // `kind_` should be set to the correct value in emitCond/emitTable.
   Kind kind_ = Kind::Cond;
 
   // True if there's explicit default case.
   bool hasDefault_ = false;
 
-  // The source note index for SRC_CONDSWITCH.
-  unsigned noteIndex_ = 0;
-
-  // Source note index of the previous SRC_NEXTCASE.
-  unsigned caseNoteIndex_ = 0;
+  // The source note index for SRC_TABLESWITCH.
+  unsigned tableSwitchNoteIndex_ = 0;
 
   // The number of cases in the switch statement, excluding the default case.
   uint32_t caseCount_ = 0;
 
   // Internal index for case jump and case body, used by cond switch.
   uint32_t caseIndex_ = 0;
 
   // Bytecode offset after emitting `discriminant`.
--- a/js/src/jit/BaselineCodeGen.cpp
+++ b/js/src/jit/BaselineCodeGen.cpp
@@ -2943,21 +2943,16 @@ bool BaselineCodeGen<Handler>::emit_JSOP
 }
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_STRICTNE() {
   return emitCompare();
 }
 
 template <typename Handler>
-bool BaselineCodeGen<Handler>::emit_JSOP_CONDSWITCH() {
-  return true;
-}
-
-template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_CASE() {
   frame.popRegsAndSync(1);
 
   Label done;
   masm.branchTestBooleanTruthy(/* branchIfTrue */ false, R0, &done);
   {
     // Pop the switch value if the case matches.
     masm.addToStackPtr(Imm32(sizeof(Value)));
@@ -6927,16 +6922,17 @@ MethodStatus BaselineCompiler::emitBody(
     if (MOZ_UNLIKELY(compileDebugInstrumentation()) && !emitDebugTrap()) {
       return Method_Error;
     }
 
     switch (op) {
       case JSOP_FORCEINTERPRETER:
         // Caller must have checked script->hasForceInterpreterOp().
       case JSOP_UNUSED71:
+      case JSOP_UNUSED120:
       case JSOP_UNUSED149:
       case JSOP_LIMIT:
         MOZ_CRASH("Unexpected op");
 
 #define EMIT_OP(OP)                                            \
   case OP:                                                     \
     if (MOZ_UNLIKELY(!this->emit_##OP())) return Method_Error; \
     break;
--- a/js/src/jit/BaselineCodeGen.h
+++ b/js/src/jit/BaselineCodeGen.h
@@ -82,17 +82,16 @@ namespace jit {
   _(JSOP_LT)                        \
   _(JSOP_LE)                        \
   _(JSOP_GT)                        \
   _(JSOP_GE)                        \
   _(JSOP_EQ)                        \
   _(JSOP_NE)                        \
   _(JSOP_STRICTEQ)                  \
   _(JSOP_STRICTNE)                  \
-  _(JSOP_CONDSWITCH)                \
   _(JSOP_CASE)                      \
   _(JSOP_DEFAULT)                   \
   _(JSOP_LINENO)                    \
   _(JSOP_BITNOT)                    \
   _(JSOP_NEG)                       \
   _(JSOP_NEWARRAY)                  \
   _(JSOP_NEWARRAY_COPYONWRITE)      \
   _(JSOP_INITELEM_ARRAY)            \
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -1989,17 +1989,16 @@ AbortReasonOr<Ok> IonBuilder::jsop_loope
 
 AbortReasonOr<Ok> IonBuilder::inspectOpcode(JSOp op, bool* restarted) {
   // Add not yet implemented opcodes at the bottom of the switch!
   switch (op) {
     case JSOP_NOP_DESTRUCTURING:
     case JSOP_TRY_DESTRUCTURING:
     case JSOP_LINENO:
     case JSOP_LABEL:
-    case JSOP_CONDSWITCH:
       return Ok();
 
     case JSOP_NOP: {
       jssrcnote* sn = GetSrcNote(gsn, script(), pc);
       if (sn && SN_TYPE(sn) == SRC_FOR) {
         return visitForLoop(sn);
       }
       return Ok();
@@ -2689,16 +2688,17 @@ AbortReasonOr<Ok> IonBuilder::inspectOpc
       // operation in the optimizing compiler?
       break;
 
     case JSOP_FORCEINTERPRETER:
       // Intentionally not implemented.
       break;
 
     case JSOP_UNUSED71:
+    case JSOP_UNUSED120:
     case JSOP_UNUSED149:
     case JSOP_LIMIT:
       break;
   }
 
   // Track a simpler message, since the actionable abort message is a
   // static string, and the internal opcode name isn't an actionable
   // thing anyways.
--- a/js/src/shell/js.cpp
+++ b/js/src/shell/js.cpp
@@ -2987,42 +2987,29 @@ static bool PCToLine(JSContext* cx, unsi
   return true;
 }
 
 #if defined(DEBUG) || defined(JS_JITSPEW)
 
 static void UpdateSwitchTableBounds(JSContext* cx, HandleScript script,
                                     unsigned offset, unsigned* start,
                                     unsigned* end) {
-  jsbytecode* pc;
-  JSOp op;
-  ptrdiff_t jmplen;
-  int32_t low, high, n;
-
-  pc = script->offsetToPC(offset);
-  op = JSOp(*pc);
-  switch (op) {
-    case JSOP_TABLESWITCH:
-      jmplen = JUMP_OFFSET_LEN;
-      pc += jmplen;
-      low = GET_JUMP_OFFSET(pc);
-      pc += JUMP_OFFSET_LEN;
-      high = GET_JUMP_OFFSET(pc);
-      pc += JUMP_OFFSET_LEN;
-      n = high - low + 1;
-      break;
-
-    default:
-      /* [condswitch] switch does not have any jump or lookup tables. */
-      MOZ_ASSERT(op == JSOP_CONDSWITCH);
-      return;
-  }
+  jsbytecode* pc = script->offsetToPC(offset);
+  MOZ_ASSERT(JSOp(*pc) == JSOP_TABLESWITCH);
+
+  ptrdiff_t jmplen = JUMP_OFFSET_LEN;
+  pc += jmplen;
+  int32_t low = GET_JUMP_OFFSET(pc);
+  pc += JUMP_OFFSET_LEN;
+  int32_t high = GET_JUMP_OFFSET(pc);
+  pc += JUMP_OFFSET_LEN;
+  int32_t n = high - low + 1;
 
   *start = script->pcToOffset(pc);
-  *end = *start + (unsigned)(n * jmplen);
+  *end = *start + unsigned(n * jmplen);
 }
 
 static MOZ_MUST_USE bool SrcNotes(JSContext* cx, HandleScript script,
                                   Sprinter* sp) {
   if (!sp->put("\nSource notes:\n") ||
       !sp->jsprintf("%4s %4s %5s %6s %-8s %s\n", "ofs", "line", "pc", "delta",
                     "desc", "args") ||
       !sp->put("---- ---- ----- ------ -------- ------\n")) {
@@ -3041,23 +3028,16 @@ static MOZ_MUST_USE bool SrcNotes(JSCont
     const char* name = js_SrcNoteSpec[type].name;
     if (!sp->jsprintf("%3u: %4u %5u [%4u] %-8s", unsigned(sn - notes), lineno,
                       offset, delta, name)) {
       return false;
     }
 
     switch (type) {
       case SRC_NULL:
-      case SRC_IF:
-      case SRC_IF_ELSE:
-      case SRC_COND:
-      case SRC_CONTINUE:
-      case SRC_BREAK:
-      case SRC_BREAK2LABEL:
-      case SRC_SWITCHBREAK:
       case SRC_ASSIGNOP:
       case SRC_BREAKPOINT:
       case SRC_STEP_SEP:
       case SRC_XDELTA:
         break;
 
       case SRC_COLSPAN:
         colspan =
@@ -3075,19 +3055,18 @@ static MOZ_MUST_USE bool SrcNotes(JSCont
         break;
 
       case SRC_NEWLINE:
         ++lineno;
         break;
 
       case SRC_FOR:
         if (!sp->jsprintf(
-                " cond %u update %u backjump %u",
+                " cond %u backjump %u",
                 unsigned(GetSrcNoteOffset(sn, SrcNote::For::CondOffset)),
-                unsigned(GetSrcNoteOffset(sn, SrcNote::For::UpdateOffset)),
                 unsigned(GetSrcNoteOffset(sn, SrcNote::For::BackJumpOffset)))) {
           return false;
         }
         break;
 
       case SRC_WHILE:
       case SRC_FOR_IN:
       case SRC_FOR_OF:
@@ -3102,63 +3081,35 @@ static MOZ_MUST_USE bool SrcNotes(JSCont
         if (!sp->jsprintf(" backjump %u",
                           unsigned(GetSrcNoteOffset(
                               sn, SrcNote::While::BackJumpOffset)))) {
           return false;
         }
         break;
 
       case SRC_DO_WHILE:
-        if (!sp->jsprintf(
-                " cond %u backjump %u",
-                unsigned(GetSrcNoteOffset(sn, SrcNote::DoWhile::CondOffset)),
-                unsigned(
-                    GetSrcNoteOffset(sn, SrcNote::DoWhile::BackJumpOffset)))) {
-          return false;
-        }
-        break;
-
-      case SRC_NEXTCASE:
-        if (!sp->jsprintf(" next case offset %u",
+        if (!sp->jsprintf(" backjump %u",
                           unsigned(GetSrcNoteOffset(
-                              sn, SrcNote::NextCase::NextCaseOffset)))) {
+                              sn, SrcNote::DoWhile::BackJumpOffset)))) {
           return false;
         }
         break;
 
       case SRC_TABLESWITCH: {
         mozilla::DebugOnly<JSOp> op = JSOp(script->code()[offset]);
         MOZ_ASSERT(op == JSOP_TABLESWITCH);
         if (!sp->jsprintf(" end offset %u",
                           unsigned(GetSrcNoteOffset(
                               sn, SrcNote::TableSwitch::EndOffset)))) {
           return false;
         }
         UpdateSwitchTableBounds(cx, script, offset, &switchTableStart,
                                 &switchTableEnd);
         break;
       }
-      case SRC_CONDSWITCH: {
-        mozilla::DebugOnly<JSOp> op = JSOp(script->code()[offset]);
-        MOZ_ASSERT(op == JSOP_CONDSWITCH);
-        if (!sp->jsprintf(" end offset %u",
-                          unsigned(GetSrcNoteOffset(
-                              sn, SrcNote::CondSwitch::EndOffset)))) {
-          return false;
-        }
-        if (unsigned caseOff = unsigned(
-                GetSrcNoteOffset(sn, SrcNote::CondSwitch::FirstCaseOffset))) {
-          if (!sp->jsprintf(" first case offset %u", caseOff)) {
-            return false;
-          }
-        }
-        UpdateSwitchTableBounds(cx, script, offset, &switchTableStart,
-                                &switchTableEnd);
-        break;
-      }
 
       case SRC_TRY:
         MOZ_ASSERT(JSOp(script->code()[offset]) == JSOP_TRY);
         if (!sp->jsprintf(" offset to jump %u",
                           unsigned(GetSrcNoteOffset(
                               sn, SrcNote::Try::EndOfTryJumpOffset)))) {
           return false;
         }
rename from js/src/tests/non262/fields/bug1580246.js
rename to js/src/tests/non262/fields/bug1587574.js
--- a/js/src/vm/Interpreter.cpp
+++ b/js/src/vm/Interpreter.cpp
@@ -1972,19 +1972,19 @@ static MOZ_NEVER_INLINE JS_HAZ_JSNATIVE_
       DISPATCH_TO(op);
     }
 
     /* Various 1-byte no-ops. */
     CASE(JSOP_NOP)
     CASE(JSOP_NOP_DESTRUCTURING)
     CASE(JSOP_TRY_DESTRUCTURING)
     CASE(JSOP_UNUSED71)
+    CASE(JSOP_UNUSED120)
     CASE(JSOP_UNUSED149)
-    CASE(JSOP_TRY)
-    CASE(JSOP_CONDSWITCH) {
+    CASE(JSOP_TRY) {
       MOZ_ASSERT(CodeSpec[*REGS.pc].length == 1);
       ADVANCE_AND_DISPATCH(1);
     }
 
     CASE(JSOP_JUMPTARGET)
     CASE(JSOP_LOOPHEAD) {
       MOZ_ASSERT(CodeSpec[*REGS.pc].length == JSOP_JUMPTARGET_LENGTH);
       COUNT_COVERAGE();
--- a/js/src/vm/Opcodes.h
+++ b/js/src/vm/Opcodes.h
@@ -1237,50 +1237,18 @@
      * Embedded lineno to speedup 'pc->line' mapping.
      *
      *   Category: Other
      *   Operands: uint32_t lineno
      *   Stack: =>
      */ \
     MACRO(JSOP_LINENO, 119, "lineno", NULL, 5, 0, 0, JOF_UINT32) \
     /*
-     * This no-op appears after the bytecode for EXPR in 'switch (EXPR) {...}'
-     * if the switch cannot be optimized using JSOP_TABLESWITCH.
-     *
-     * For a non-optimized switch statement like this:
-     *
-     *     switch (EXPR) {
-     *       case V0:
-     *         C0;
-     *       ...
-     *       default:
-     *         D;
-     *     }
-     *
-     * the bytecode looks like this:
-     *
-     *     (EXPR)
-     *     condswitch
-     *     (V0)
-     *     case ->C0
-     *     ...
-     *     default ->D
-     *     (C0)
-     *     ...
-     *     (D)
-     *
-     * Note that code for all case-labels is emitted first, then code for the
-     * body of each case clause.
-     *
-     *   Category: Statements
-     *   Type: Switch Statement
-     *   Operands:
-     *   Stack: =>
      */ \
-    MACRO(JSOP_CONDSWITCH, 120, "condswitch", NULL, 1, 0, 0, JOF_BYTE) \
+    MACRO(JSOP_UNUSED120, 120, "unused", NULL, 1, 0, 0, JOF_BYTE) \
     /*
      * Pops the top two values on the stack as 'val' and 'cond'. If 'cond' is
      * 'true', jumps to a 32-bit offset from the current bytecode, re-pushes
      * 'val' onto the stack if 'false'.
      *
      *   Category: Statements
      *   Type: Switch Statement
      *   Operands: int32_t offset
--- a/layout/style/test/mochitest.ini
+++ b/layout/style/test/mochitest.ini
@@ -3,16 +3,17 @@ prefs =
   dom.animations-api.compositing.enabled=true
   dom.animations-api.core.enabled=true
   dom.animations-api.getAnimations.enabled=true
   dom.animations-api.implicit-keyframes.enabled=true
   dom.animations-api.timelines.enabled=true
   gfx.omta.background-color=true
   layout.css.individual-transform.enabled=true
   layout.css.motion-path.enabled=true
+  layout.css.motion-path-ray.enabled=true
   layout.css.overflow-logical.enabled=true
   layout.css.step-position-jump.enabled=true
   layout.css.text-underline-offset.enabled=true
   layout.css.text-decoration-thickness.enabled=true
   layout.css.backdrop-filter.enabled=true
   layout.css.text-decoration-skip-ink.enabled=true
 support-files =
   animation_utils.js
--- a/media/mtransport/third_party/nrappkit/nrappkit.gyp
+++ b/media/mtransport/third_party/nrappkit/nrappkit.gyp
@@ -32,42 +32,40 @@
               './src/share/nr_reg_keys.h',
 #              './src/share/nr_startup.c',
 #              './src/share/nr_startup.h',
 #              './src/share/nrappkit_static_plugins.c',
                './src/port/generic/include'
 
               # libekr
               './src/util/libekr/assoc.h',
-              './src/util/libekr/debug.c',
-              './src/util/libekr/debug.h',
+#              './src/util/libekr/debug.c',
+#              './src/util/libekr/debug.h',
               './src/util/libekr/r_assoc.c',
               './src/util/libekr/r_assoc.h',
 #              './src/util/libekr/r_assoc_test.c',
               './src/util/libekr/r_common.h',
               './src/util/libekr/r_crc32.c',
               './src/util/libekr/r_crc32.h',
               './src/util/libekr/r_data.c',
               './src/util/libekr/r_data.h',
               './src/util/libekr/r_defaults.h',
               './src/util/libekr/r_errors.c',
               './src/util/libekr/r_errors.h',
               './src/util/libekr/r_includes.h',
-              './src/util/libekr/r_list.c',
-              './src/util/libekr/r_list.h',
+#              './src/util/libekr/r_list.c',
+#              './src/util/libekr/r_list.h',
               './src/util/libekr/r_macros.h',
               './src/util/libekr/r_memory.c',
               './src/util/libekr/r_memory.h',
               './src/util/libekr/r_replace.c',
               './src/util/libekr/r_thread.h',
               './src/util/libekr/r_time.c',
               './src/util/libekr/r_time.h',
               './src/util/libekr/r_types.h',
-              './src/util/libekr/debug.c',
-              './src/util/libekr/debug.h',
 
               # Utilities
               './src/util/byteorder.c',
               './src/util/byteorder.h',
               #'./src/util/escape.c',
               #'./src/util/escape.h',
               #'./src/util/filename.c',
               #'./src/util/getopt.c',
--- a/mobile/android/config/mozconfigs/android-api-16/profile-generate
+++ b/mobile/android/config/mozconfigs/android-api-16/profile-generate
@@ -1,9 +1,8 @@
 . "$topsrcdir/mobile/android/config/mozconfigs/android-api-16/nightly"
 
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
 mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
 
 ac_add_options --enable-profile-generate
 ac_add_options --disable-tests
 unset MOZ_LTO
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -4911,17 +4911,17 @@
   type: RelaxedAtomicBool
   value: true
   mirror: always
   rust: true
 
 # Is support for CSS individual transform enabled?
 - name: layout.css.individual-transform.enabled
   type: bool
-  value: @IS_NOT_RELEASE_OR_BETA@
+  value: true
   mirror: always
 
 # Is support for CSS initial-letter property enabled?
 - name: layout.css.initial-letter.enabled
   type: bool
   value: false
   mirror: always
 
@@ -4930,18 +4930,25 @@
   type: RelaxedAtomicBool
   value: false
   mirror: always
   rust: true
 
 # Is support for motion-path enabled?
 - name: layout.css.motion-path.enabled
   type: bool
-  value: @IS_NOT_RELEASE_OR_BETA@
-  mirror: always
+  value: true
+  mirror: always
+
+# Is support for motion-path ray() enabled?
+- name: layout.css.motion-path-ray.enabled
+  type: RelaxedAtomicBool
+  value: @IS_NIGHTLY_BUILD@
+  mirror: always
+  rust: true
 
 # Expose the media query -moz-touch-enabled to web content.
 - name: layout.css.moz-touch-enabled.enabled
   type: RelaxedAtomicBool
   value: @IS_NOT_NIGHTLY_BUILD@
   mirror: always
   rust: true
 
@@ -7176,16 +7183,28 @@
   mirror: always
 
 # Report Anti-tracking warnings to console lazily
 - name: privacy.restrict3rdpartystorage.console.lazy
   type: bool
   value: true
   mirror: always
 
+# Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
+- name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
+  type: bool
+  value: true
+  mirror: always
+
+# Enable the heuristic to allow storage access for windows opened using window.open()
+- name: privacy.restrict3rdpartystorage.heuristic.window_open
+  type: bool
+  value: true
+  mirror: always
+
 # Anti-tracking user-interaction expiration.
 - name: privacy.userInteraction.expiration
   type: uint32_t
   value: 2592000   # 30 days (in seconds)
   mirror: always
 
 # Anti-tracking user-interaction document interval.
 - name: privacy.userInteraction.document.interval
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
@@ -7073,17 +7073,17 @@ ac.zw
 co.zw
 gov.zw
 mil.zw
 org.zw
 
 
 // newGTLDs
 
-// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2019-11-15T17:07:54Z
+// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2019-11-20T17:10:44Z
 // This list is auto-generated, don't edit it manually.
 // aaa : 2015-02-26 American Automobile Association, Inc.
 aaa
 
 // aarp : 2015-05-21 AARP
 aarp
 
 // abarth : 2015-07-30 Fiat Chrysler Automobiles N.V.
@@ -7663,19 +7663,16 @@ cheap
 chintai
 
 // christmas : 2013-11-21 Uniregistry, Corp.
 christmas
 
 // chrome : 2014-07-24 Charleston Road Registry Inc.
 chrome
 
-// chrysler : 2015-07-30 FCA US LLC.
-chrysler
-
 // church : 2014-02-06 Binky Moon, LLC
 church
 
 // cipriani : 2015-02-19 Hotel Cipriani Srl
 cipriani
 
 // circle : 2014-12-18 Amazon Registry Services, Inc.
 circle
@@ -7945,19 +7942,16 @@ diy
 dnp
 
 // docs : 2014-10-16 Charleston Road Registry Inc.
 docs
 
 // doctor : 2016-06-02 Binky Moon, LLC
 doctor
 
-// dodge : 2015-07-30 FCA US LLC.
-dodge
-
 // dog : 2014-12-04 Binky Moon, LLC
 dog
 
 // domains : 2013-10-17 Binky Moon, LLC
 domains
 
 // dot : 2015-05-21 Dish DBS Corporation
 dot
@@ -8737,19 +8731,16 @@ kred
 kuokgroup
 
 // kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
 kyoto
 
 // lacaixa : 2014-01-09 Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa”
 lacaixa
 
-// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
-ladbrokes
-
 // lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
 lamborghini
 
 // lamer : 2015-10-01 The Estée Lauder Companies Inc.
 lamer
 
 // lancaster : 2015-02-12 LANCASTER
 lancaster
@@ -9052,19 +9043,16 @@ mom
 monash
 
 // money : 2014-10-16 Binky Moon, LLC
 money
 
 // monster : 2015-09-11 XYZ.COM LLC
 monster
 
-// mopar : 2015-07-30 FCA US LLC.
-mopar
-
 // mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
 mormon
 
 // mortgage : 2014-03-20 Dog Beach, LLC
 mortgage
 
 // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
 moscow
@@ -9847,19 +9835,16 @@ sport
 spot
 
 // spreadbetting : 2014-12-11 Dotspreadbetting Registry Limited
 spreadbetting
 
 // srl : 2015-05-07 InterNetX, Corp
 srl
 
-// srt : 2015-07-30 FCA US LLC.
-srt
-
 // stada : 2014-11-13 STADA Arzneimittel AG
 stada
 
 // staples : 2015-07-30 Staples, Inc.
 staples
 
 // star : 2015-01-08 Star India Private Limited
 star
@@ -10111,19 +10096,16 @@ tushu
 tvs
 
 // ubank : 2015-08-20 National Australia Bank Limited
 ubank
 
 // ubs : 2014-12-11 UBS AG
 ubs
 
-// uconnect : 2015-07-30 FCA US LLC.
-uconnect
-
 // unicom : 2015-10-15 China United Network Communications Corporation Limited
 unicom
 
 // university : 2014-03-06 Binky Moon, LLC
 university
 
 // uno : 2013-09-11 DotSite Inc.
 uno
@@ -10234,19 +10216,16 @@ walmart
 walter
 
 // wang : 2013-10-24 Zodiac Wang Limited
 wang
 
 // wanggou : 2014-12-18 Amazon Registry Services, Inc.
 wanggou
 
-// warman : 2015-06-18 Weir Group IP Limited
-warman
-
 // watch : 2013-11-14 Binky Moon, LLC
 watch
 
 // watches : 2014-12-22 Richemont DNS Inc.
 watches
 
 // weather : 2015-01-08 International Business Machines Corporation
 weather
--- a/netwerk/protocol/http/HttpChannelChild.cpp
+++ b/netwerk/protocol/http/HttpChannelChild.cpp
@@ -576,18 +576,18 @@ class SyntheticDiversionListener final :
 NS_IMPL_ISUPPORTS(SyntheticDiversionListener, nsIStreamListener);
 
 void HttpChannelChild::DoOnStartRequest(nsIRequest* aRequest,
                                         nsISupports* aContext) {
   nsresult rv;
 
   LOG(("HttpChannelChild::DoOnStartRequest [this=%p]\n", this));
 
-  // In theory mListener should not be null, but in practice sometimes it is.
-  MOZ_ASSERT(mListener);
+  // mListener could be null if the redirect setup is not completed.
+  MOZ_ASSERT(mListener || mOnStartRequestCalled);
   if (!mListener) {
     Cancel(NS_ERROR_FAILURE);
     return;
   }
 
   if (mSynthesizedResponsePump && mLoadFlags & LOAD_CALL_CONTENT_SNIFFERS) {
     mSynthesizedResponsePump->PeekStream(CallTypeSniffers,
                                          static_cast<nsIChannel*>(this));
@@ -1086,20 +1086,25 @@ void HttpChannelChild::DoOnStopRequest(n
       NS_ENSURE_SUCCESS_VOID(rv);
 
       UrlClassifierCommon::SetBlockedContent(this, aChannelStatus, list,
                                              provider, fullhash);
     }
   };
   checkForBlockedContent();
 
+  // See bug 1587686. If the redirect setup is not completed, the post-redirect
+  // channel will be not opened and mListener will be null.
+  MOZ_ASSERT(mListener || !mWasOpened);
+  if (!mListener) {
+    return;
+  }
+
   MOZ_ASSERT(!mOnStopRequestCalled, "We should not call OnStopRequest twice");
 
-  // In theory mListener should not be null, but in practice sometimes it is.
-  MOZ_ASSERT(mListener);
   if (mListener) {
     nsCOMPtr<nsIStreamListener> listener(mListener);
     mOnStopRequestCalled = true;
     listener->OnStopRequest(aRequest, mStatus);
   }
   mOnStopRequestCalled = true;
 
   // notify "http-on-stop-connect" observers
@@ -1615,18 +1620,50 @@ void HttpChannelChild::OverrideSecurityI
     nsISupports* securityInfo) {
   mResponseCouldBeSynthesized = true;
   DebugOnly<nsresult> rv = OverrideSecurityInfo(securityInfo);
   MOZ_ASSERT(NS_SUCCEEDED(rv));
 }
 
 mozilla::ipc::IPCResult HttpChannelChild::RecvRedirect3Complete() {
   LOG(("HttpChannelChild::RecvRedirect3Complete [this=%p]\n", this));
+  nsCOMPtr<nsIChannel> redirectChannel =
+      do_QueryInterface(mRedirectChannelChild);
+  MOZ_ASSERT(redirectChannel);
   mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent(
-      this, [self = UnsafePtr<HttpChannelChild>(this)]() {
+      this, [self = UnsafePtr<HttpChannelChild>(this), redirectChannel]() {
+        nsresult rv = NS_OK;
+        Unused << self->GetStatus(&rv);
+        if (NS_FAILED(rv)) {
+          // Pre-redirect channel was canceled. Call |HandleAsyncAbort|, so
+          // mListener's OnStart/StopRequest can be called. Nothing else will
+          // trigger these notification after this point.
+          // We do this before |CompleteRedirectSetup|, so post-redirect channel
+          // stays unopened and we also make sure that OnStart/StopRequest won't
+          // be called twice.
+          self->HandleAsyncAbort();
+
+          nsCOMPtr<nsIHttpChannelChild> chan =
+              do_QueryInterface(redirectChannel);
+          RefPtr<HttpChannelChild> httpChannelChild =
+              static_cast<HttpChannelChild*>(chan.get());
+          if (httpChannelChild) {
+            // For sending an IPC message to parent channel so that the loading
+            // can be cancelled.
+            Unused << httpChannelChild->Cancel(rv);
+
+            // The post-redirect channel could still get OnStart/StopRequest IPC
+            // messages from parent, but the mListener is still null. So, we
+            // call |DoNotifyListener| to pretend that OnStart/StopRequest are
+            // already called.
+            httpChannelChild->DoNotifyListener();
+          }
+          return;
+        }
+
         self->Redirect3Complete(nullptr);
       }));
   return IPC_OK();
 }
 
 void HttpChannelChild::ProcessFlushedForDiversion() {
   LOG(("HttpChannelChild::ProcessFlushedForDiversion [this=%p]\n", this));
   MOZ_ASSERT(OnSocketThread());
--- a/python/mozbuild/mozbuild/configure/options.py
+++ b/python/mozbuild/mozbuild/configure/options.py
@@ -17,17 +17,17 @@ HELP_OPTIONS_CATEGORY = 'Help options'
 # "./configure --help" becomes less useful if there are an excessive number of
 # categories.
 _ALL_CATEGORIES = (
     HELP_OPTIONS_CATEGORY,
 )
 
 
 def _infer_option_category(define_depth):
-    stack_frame = inspect.stack()[3 + define_depth]
+    stack_frame = inspect.stack(0)[3 + define_depth]
     try:
         path = os.path.relpath(stack_frame[0].f_code.co_filename)
     except ValueError:
         # If this call fails, it means the relative path couldn't be determined
         # (e.g. because this file is on a different drive than the cwd on a
         # Windows machine). That's fine, just use the absolute filename.
         path = stack_frame[0].f_code.co_filename
     return 'Options from ' + path
--- a/python/mozbuild/mozbuild/test/python.ini
+++ b/python/mozbuild/mozbuild/test/python.ini
@@ -1,6 +1,7 @@
 [DEFAULT]
 subsuite = mozbuild
 
 [test_expression.py]
 [test_licenses.py]
 [test_pythonutil.py]
+[test_util_fileavoidwrite.py]
--- a/python/mozbuild/mozbuild/test/test_util.py
+++ b/python/mozbuild/mozbuild/test/test_util.py
@@ -4,31 +4,25 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 import itertools
 import hashlib
 import os
 import unittest
-import shutil
 import string
 import sys
-import tempfile
 import textwrap
 
 from mozfile.mozfile import NamedTemporaryFile
-from mozunit import (
-    main,
-    MockedOpen,
-)
+from mozunit import main
 
 from mozbuild.util import (
     expand_variables,
-    FileAvoidWrite,
     group_unified_files,
     hash_file,
     indented_repr,
     memoize,
     memoized_property,
     pair,
     resolve_target_to_make,
     MozbuildDeletionError,
@@ -78,96 +72,16 @@ class TestHashing(unittest.TestCase):
         temp.write(data)
         temp.flush()
 
         actual = hash_file(temp.name)
 
         self.assertEqual(actual, expected)
 
 
-class TestFileAvoidWrite(unittest.TestCase):
-    def test_file_avoid_write(self):
-        with MockedOpen({'file': 'content'}):
-            # Overwriting an existing file replaces its content
-            faw = FileAvoidWrite('file')
-            faw.write('bazqux')
-            self.assertEqual(faw.close(), (True, True))
-            self.assertEqual(open('file', 'r').read(), 'bazqux')
-
-            # Creating a new file (obviously) stores its content
-            faw = FileAvoidWrite('file2')
-            faw.write('content')
-            self.assertEqual(faw.close(), (False, True))
-            self.assertEqual(open('file2').read(), 'content')
-
-        with MockedOpen({'file': 'content'}):
-            with FileAvoidWrite('file') as file:
-                file.write('foobar')
-
-            self.assertEqual(open('file', 'r').read(), 'foobar')
-
-        class MyMockedOpen(MockedOpen):
-            '''MockedOpen extension to raise an exception if something
-            attempts to write in an opened file.
-            '''
-
-            def __call__(self, name, mode):
-                if 'w' in mode:
-                    raise Exception('Unexpected open with write mode')
-                return MockedOpen.__call__(self, name, mode)
-
-        with MyMockedOpen({'file': 'content'}):
-            # Validate that MyMockedOpen works as intended
-            file = FileAvoidWrite('file')
-            file.write('foobar')
-            self.assertRaises(Exception, file.close)
-
-            # Check that no write actually happens when writing the
-            # same content as what already is in the file
-            faw = FileAvoidWrite('file')
-            faw.write('content')
-            self.assertEqual(faw.close(), (True, False))
-
-    def test_diff_not_default(self):
-        """Diffs are not produced by default."""
-
-        with MockedOpen({'file': 'old'}):
-            faw = FileAvoidWrite('file')
-            faw.write('dummy')
-            faw.close()
-            self.assertIsNone(faw.diff)
-
-    def test_diff_update(self):
-        """Diffs are produced on file update."""
-
-        with MockedOpen({'file': 'old'}):
-            faw = FileAvoidWrite('file', capture_diff=True)
-            faw.write('new')
-            faw.close()
-
-            diff = '\n'.join(faw.diff)
-            self.assertIn('-old', diff)
-            self.assertIn('+new', diff)
-
-    def test_diff_create(self):
-        """Diffs are produced when files are created."""
-
-        tmpdir = tempfile.mkdtemp()
-        try:
-            path = os.path.join(tmpdir, 'file')
-            faw = FileAvoidWrite(path, capture_diff=True)
-            faw.write('new')
-            faw.close()
-
-            diff = '\n'.join(faw.diff)
-            self.assertIn('+new', diff)
-        finally:
-            shutil.rmtree(tmpdir)
-
-
 class TestResolveTargetToMake(unittest.TestCase):
     def setUp(self):
         self.topobjdir = data_path
 
     def assertResolve(self, path, expected):
         # Handle Windows path separators.
         (reldir, target) = resolve_target_to_make(self.topobjdir, path)
         if reldir is not None:
new file mode 100644
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/test_util_fileavoidwrite.py
@@ -0,0 +1,109 @@
+# 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/.
+from __future__ import absolute_import, print_function, unicode_literals
+"""Tests for the FileAvoidWrite object."""
+
+import locale
+import pytest
+import pathlib2
+from mozbuild.util import FileAvoidWrite
+from mozunit import main
+
+
+@pytest.fixture
+def tmp_path(tmpdir):
+    """Backport of the tmp_path fixture from pytest 3.9.1."""
+    return pathlib2.Path(str(tmpdir))
+
+
+def test_overwrite_contents(tmp_path):
+    file = tmp_path / "file.txt"
+    file.write_text("abc")
+
+    faw = FileAvoidWrite(str(file))
+    faw.write("bazqux")
+
+    assert faw.close() == (True, True)
+    assert file.read_text() == "bazqux"
+
+
+def test_store_new_contents(tmp_path):
+    file = tmp_path / "file.txt"
+
+    faw = FileAvoidWrite(str(file))
+    faw.write("content")
+
+    assert faw.close() == (False, True)
+    assert file.read_text() == "content"
+
+
+def test_change_binary_file_contents(tmp_path):
+    file = tmp_path / "file.dat"
+    file.write_bytes(b"\0")
+
+    faw = FileAvoidWrite(str(file), readmode="rb")
+    faw.write(b"\0\0\0")
+
+    assert faw.close() == (True, True)
+    assert file.read_bytes() == b"\0\0\0"
+
+
+def test_obj_as_context_manager(tmp_path):
+    file = tmp_path / "file.txt"
+
+    with FileAvoidWrite(str(file)) as fh:
+        fh.write("foobar")
+
+    assert file.read_text() == "foobar"
+
+
+def test_no_write_happens_if_file_contents_same(tmp_path):
+    file = tmp_path / "file.txt"
+    file.write_text("content")
+    original_write_time = file.stat().st_mtime
+
+    faw = FileAvoidWrite(str(file))
+    faw.write("content")
+
+    assert faw.close() == (True, False)
+    assert file.stat().st_mtime == original_write_time
+
+
+def test_diff_not_created_by_default(tmp_path):
+    file = tmp_path / "file.txt"
+    faw = FileAvoidWrite(str(file))
+    faw.write("dummy")
+    faw.close()
+    assert faw.diff is None
+
+
+def test_diff_update(tmp_path):
+    file = tmp_path / "diffable.txt"
+    file.write_text("old")
+
+    faw = FileAvoidWrite(str(file), capture_diff=True)
+    faw.write("new")
+    faw.close()
+
+    diff = "\n".join(faw.diff)
+    assert "-old" in diff
+    assert "+new" in diff
+
+
+@pytest.mark.skipif(
+    locale.getdefaultlocale()[1] == "cp1252",
+    reason="Fails on win32 terminals with cp1252 encoding",
+)
+def test_write_unicode(tmp_path):
+    # Unicode grinning face :D
+    binary_emoji = b"\xf0\x9f\x98\x80"
+
+    file = tmp_path / "file.dat"
+    faw = FileAvoidWrite(str(file))
+    faw.write(binary_emoji)
+    faw.close()
+
+
+if __name__ == "__main__":
+    main()
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -1,40 +1,36 @@
 # 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 contains miscellaneous utility functions that don't belong anywhere
 # in particular.
 
-from __future__ import absolute_import, unicode_literals, print_function
+from __future__ import absolute_import, print_function, unicode_literals
 
 import argparse
 import collections
 import ctypes
 import difflib
 import errno
 import functools
 import hashlib
 import itertools
 import os
 import re
-import six
 import stat
 import sys
 import time
-
 from collections import (
     OrderedDict,
 )
-from io import (
-    StringIO,
-    BytesIO,
-)
+from io import (BytesIO, StringIO)
 
+import six
 
 if sys.platform == 'win32':
     _kernel32 = ctypes.windll.kernel32
     _FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x2000
     system_encoding = 'mbcs'
 else:
     system_encoding = 'utf-8'
 
@@ -221,16 +217,17 @@ class FileAvoidWrite(BytesIO):
         self.name = filename
         assert type(capture_diff) == bool
         assert type(dry_run) == bool
         assert 'r' in readmode
         self._capture_diff = capture_diff
         self._write_to_file = not dry_run
         self.diff = None
         self.mode = readmode
+        self._binary_mode = 'b' in readmode
 
     def write(self, buf):
         if isinstance(buf, six.text_type):
             buf = buf.encode('utf-8')
         BytesIO.write(self, buf)
 
     def avoid_writing_to_file(self):
         self._write_to_file = False
@@ -241,17 +238,27 @@ class FileAvoidWrite(BytesIO):
         Returns a tuple of bools indicating what action was performed:
 
             (file existed, file updated)
 
         If ``capture_diff`` was specified at construction time and the
         underlying file was changed, ``.diff`` will be populated with the diff
         of the result.
         """
-        buf = self.getvalue()
+        if self._binary_mode or six.PY2:
+            # Use binary data under Python 2 because it can be written to files
+            # opened with either open(mode='w') or open(mode='wb') without raising
+            # unicode errors. Also use binary data if the caller explicitly asked for
+            # it.
+            buf = self.getvalue()
+        else:
+            # Use strings in Python 3 unless the caller explicitly asked for binary
+            # data.
+            buf = self.getvalue().decode('utf-8')
+
         BytesIO.close(self)
         existed = False
         old_content = None
 
         try:
             existing = open(self.name, self.mode)
             existed = True
         except IOError:
@@ -266,39 +273,66 @@ class FileAvoidWrite(BytesIO):
             finally:
                 existing.close()
 
         if self._write_to_file:
             ensureParentDir(self.name)
             # Maintain 'b' if specified.  'U' only applies to modes starting with
             # 'r', so it is dropped.
             writemode = 'w'
-            if 'b' in self.mode:
+            if self._binary_mode:
                 writemode += 'b'
             with open(self.name, writemode) as file:
                 file.write(buf)
 
-        if self._capture_diff:
-            try:
-                old_lines = old_content.splitlines() if existed else None
-                new_lines = buf.splitlines()
-
-                self.diff = simple_diff(self.name, old_lines, new_lines)
-            # FileAvoidWrite isn't unicode/bytes safe. So, files with non-ascii
-            # content or opened and written in different modes may involve
-            # implicit conversion and this will make Python unhappy. Since
-            # diffing isn't a critical feature, we just ignore the failure.
-            # This can go away once FileAvoidWrite uses io.BytesIO and
-            # io.StringIO. But that will require a lot of work.
-            except (UnicodeDecodeError, UnicodeEncodeError):
-                self.diff = ['Binary or non-ascii file changed: %s' %
-                             self.name]
+        self._generate_diff(buf, old_content)
 
         return existed, True
 
+    def _generate_diff(self, new_content, old_content):
+        """Generate a diff for the changed contents if `capture_diff` is True.
+
+        If the changed contents could not be decoded as utf-8 then generate a
+        placeholder message instead of a diff.
+
+        Args:
+            new_content: Str or bytes holding the new file contents.
+            old_content: Str or bytes holding the original file contents. Should be
+                None if no old content is being overwritten.
+        """
+        if not self._capture_diff:
+            return
+
+        try:
+            if old_content is None:
+                old_lines = None
+            else:
+                if self._binary_mode:
+                    # difflib doesn't work with bytes.
+                    old_content = old_content.decode('utf-8')
+
+                old_lines = old_content.splitlines()
+
+            if self._binary_mode:
+                # difflib doesn't work with bytes.
+                new_content = new_content.decode('utf-8')
+
+            new_lines = new_content.splitlines()
+
+            self.diff = simple_diff(self.name, old_lines, new_lines)
+        # FileAvoidWrite isn't unicode/bytes safe. So, files with non-ascii
+        # content or opened and written in different modes may involve
+        # implicit conversion and this will make Python unhappy. Since
+        # diffing isn't a critical feature, we just ignore the failure.
+        # This can go away once FileAvoidWrite uses io.BytesIO and
+        # io.StringIO. But that will require a lot of work.
+        except (UnicodeDecodeError, UnicodeEncodeError):
+            self.diff = ['Binary or non-ascii file changed: %s' %
+                         self.name]
+
     def __enter__(self):
         return self
 
     def __exit__(self, type, value, traceback):
         if not self.closed:
             self.close()
 
 
--- a/remote/test/browser/browser_cdp.js
+++ b/remote/test/browser/browser_cdp.js
@@ -23,37 +23,37 @@ add_task(async function testCDP(client) 
   is(
     version.userAgent,
     window.navigator.userAgent,
     "Browser.getVersion().userAgent is correct"
   );
 
   // receive console.log messages and print them
   Log.enable();
-  ok(true, "Log domain has been enabled");
+  info("Log domain has been enabled");
 
   Log.entryAdded(({ entry }) => {
     const { timestamp, level, text, args } = entry;
     const msg = text || args.join(" ");
     console.log(`${new Date(timestamp)}\t${level.toUpperCase()}\t${msg}`);
   });
 
   // turn on navigation related events, such as DOMContentLoaded et al.
   await Page.enable();
-  ok(true, "Page domain has been enabled");
+  info("Page domain has been enabled");
 
   const frameStoppedLoading = Page.frameStoppedLoading();
   const navigatedWithinDocument = Page.navigatedWithinDocument();
   const loadEventFired = Page.loadEventFired();
   await Page.navigate({
     url: toDataURL(`<script>console.log("foo")</script>`),
   });
-  ok(true, "A new page has been loaded");
+  info("A new page has been loaded");
 
   await loadEventFired;
-  ok(true, "`Page.loadEventFired` fired");
+  info("`Page.loadEventFired` fired");
 
   await frameStoppedLoading;
-  ok(true, "`Page.frameStoppedLoading` fired");
+  info("`Page.frameStoppedLoading` fired");
 
   await navigatedWithinDocument;
-  ok(true, "`Page.navigatedWithinDocument` fired");
+  info("`Page.navigatedWithinDocument` fired");
 });
--- a/remote/test/browser/browser_main_target.js
+++ b/remote/test/browser/browser_main_target.js
@@ -10,17 +10,17 @@ add_task(async function(_client, CDP) {
   ok(
     mainProcessTarget,
     "The main process target is instantiated after the call to `listen`"
   );
 
   const targetURL = mainProcessTarget.wsDebuggerURL;
 
   const client = await CDP({ target: targetURL });
-  ok(true, "CDP client has been instantiated");
+  info("CDP client has been instantiated");
 
   try {
     const { Browser, Target } = client;
     ok(Browser, "The main process target exposes Browser domain");
     ok(Target, "The main process target exposes Target domain");
 
     const version = await Browser.getVersion();
 
--- a/remote/test/browser/network/browser_requestWillBeSent.js
+++ b/remote/test/browser/network/browser_requestWillBeSent.js
@@ -9,22 +9,22 @@ const PAGE_URL =
   "http://example.com/browser/remote/test/browser/network/doc_requestWillBeSent.html";
 const JS_URL =
   "http://example.com/browser/remote/test/browser/network/file_requestWillBeSent.js";
 
 add_task(async function(client) {
   const { Page, Network } = client;
 
   await Network.enable();
-  ok(true, "Network domain has been enabled");
+  info("Network domain has been enabled");
 
   let requests = 0;
   const onRequests = new Promise(resolve => {
     Network.requestWillBeSent(event => {
-      ok(true, "Received a request");
+      info("Received a request");
       switch (++requests) {
         case 1:
           is(event.request.url, PAGE_URL, "Got the page request");
           is(event.type, "Document", "The page request has 'Document' type");
           is(
             event.requestId,
             event.loaderId,
             "The page request has requestId = loaderId (puppeteer assumes that to detect the page start request)"
--- a/remote/test/browser/page/browser_frameNavigated.js
+++ b/remote/test/browser/page/browser_frameNavigated.js
@@ -15,32 +15,32 @@ const resolutions = new Map();
 
 add_task(async function(client) {
   await loadURL(INITIAL_DOC);
 
   const { Page } = client;
 
   // turn on navigation related events, such as DOMContentLoaded et al.
   await Page.enable();
-  ok(true, "Page domain has been enabled");
+  info("Page domain has been enabled");
 
   const { frameTree } = await Page.getFrameTree();
   ok(!!frameTree.frame, "getFrameTree exposes one frame");
   is(frameTree.childFrames.length, 0, "getFrameTree reports no child frame");
   ok(frameTree.frame.id, "getFrameTree's frame has an id");
   is(
     frameTree.frame.url,
     INITIAL_DOC,
     "getFrameTree's frame has the right url"
   );
 
   // Save the given `promise` resolution into the `promises` global Set
   function recordPromise(name, promise) {
     promise.then(event => {
-      ok(true, `Received Page.${name}`);
+      info(`Received Page.${name}`);
       resolutions.set(name, event);
     });
     promises.add(promise);
   }
   // Record all Page events that we assert in this test
   function recordPromises() {
     recordPromise("frameStartedLoading", Page.frameStartedLoading());
     recordPromise("frameNavigated", Page.frameNavigated());
@@ -50,17 +50,17 @@ add_task(async function(client) {
     recordPromise("frameStoppedLoading", Page.frameStoppedLoading());
   }
 
   info("Test Page.navigate");
   recordPromises();
 
   const url = RANDOM_ID_DOC;
   const { frameId } = await Page.navigate({ url });
-  ok(true, "A new page has been loaded");
+  info("A new page has been loaded");
 
   ok(frameId, "Page.navigate returned a frameId");
   is(
     frameId,
     frameTree.frame.id,
     "The Page.navigate's frameId is the same than getFrameTree's one"
   );
 
@@ -68,33 +68,33 @@ add_task(async function(client) {
 
   const randomId1 = await getTestTabRandomId();
   ok(!!randomId1, "Test tab has a valid randomId");
 
   info("Test Page.reload");
   recordPromises();
 
   await Page.reload();
-  ok(true, "The page has been reloaded");
+  info("The page has been reloaded");
 
   await assertNavigationEvents({ url, frameId });
 
   const randomId2 = await getTestTabRandomId();
   ok(!!randomId2, "Test tab has a valid randomId");
   isnot(
     randomId2,
     randomId1,
     "Test tab randomId has been updated after reload"
   );
 
   info("Test Page.navigate with the same URL still reloads the current page");
   recordPromises();
 
   await Page.navigate({ url });
-  ok(true, "The page has been reloaded");
+  info("The page has been reloaded");
 
   await assertNavigationEvents({ url, frameId });
 
   const randomId3 = await getTestTabRandomId();
   ok(!!randomId3, "Test tab has a valid randomId");
   isnot(
     randomId3,
     randomId2,
--- a/remote/test/browser/page/browser_runtimeEvents.js
+++ b/remote/test/browser/page/browser_runtimeEvents.js
@@ -28,21 +28,21 @@ add_task(async function testCDP(client) 
     events.push("executionContextCreated");
   });
   Runtime.executionContextDestroyed(() => {
     events.push("executionContextDestroyed");
   });
 
   // turn on navigation related events, such as DOMContentLoaded et al.
   await Page.enable();
-  ok(true, "Page domain has been enabled");
+  info("Page domain has been enabled");
 
   const onExecutionContextCreated = Runtime.executionContextCreated();
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Runtime.enable will dispatch `executionContextCreated` for the existing document
   let { context } = await onExecutionContextCreated;
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   assertReceivedEvents(
@@ -61,17 +61,17 @@ add_task(async function testCDP(client) 
     "getFrameTree and executionContextCreated refers about the same frame Id"
   );
 
   const onFrameNavigated = Page.frameNavigated();
   const onExecutionContextDestroyed = Runtime.executionContextDestroyed();
   const onExecutionContextCreated2 = Runtime.executionContextCreated();
   const url = toDataURL("test-page");
   const { frameId } = await Page.navigate({ url });
-  ok(true, "A new page has been loaded");
+  info("A new page has been loaded");
   ok(frameId, "Page.navigate returned a frameId");
   is(
     frameId,
     frameTree.frame.id,
     "The Page.navigate's frameId is the same than getFrameTree's one"
   );
 
   const frameNavigated = await onFrameNavigated;
--- a/remote/test/browser/runtime/browser_callFunctionOn.js
+++ b/remote/test/browser/runtime/browser_callFunctionOn.js
@@ -14,17 +14,17 @@ add_task(async function(client) {
   await testReturnByValue(client, contextId);
   await testAwaitPromise(client, contextId);
   await testObjectId(client, contextId);
 });
 
 async function testRuntimeEnable({ Runtime }) {
   // Enable watching for new execution context
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Calling Runtime.enable will emit executionContextCreated for the existing contexts
   const { context } = await Runtime.executionContextCreated();
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   return context;
--- a/remote/test/browser/runtime/browser_evaluate.js
+++ b/remote/test/browser/runtime/browser_evaluate.js
@@ -79,17 +79,17 @@ add_task(async function(client) {
       await testJSError(fun);
     }
   }
 });
 
 async function testRuntimeEnable({ Runtime }) {
   // Enable watching for new execution context
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Calling Runtime.enable will emit executionContextCreated for the existing contexts
   const { context } = await Runtime.executionContextCreated();
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   return context;
--- a/remote/test/browser/runtime/browser_executionContext.js
+++ b/remote/test/browser/runtime/browser_executionContext.js
@@ -16,17 +16,17 @@ add_task(async function(client) {
   await testNavigateBack(client, firstContext, secondContext);
   const thirdContext = await testNavigateViaLocation(client, firstContext);
   await testReload(client, thirdContext);
 });
 
 async function testRuntimeEnable({ Runtime }) {
   // Enable watching for new execution context
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Calling Runtime.enable will emit executionContextCreated for the existing contexts
   const { context } = await Runtime.executionContextCreated();
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   return context;
@@ -48,17 +48,17 @@ async function testEvaluate({ Runtime },
 
 async function testNavigate({ Runtime, Page }, previousContext) {
   info("Navigate to a new URL");
 
   const executionContextDestroyed = Runtime.executionContextDestroyed();
   const executionContextCreated = Runtime.executionContextCreated();
 
   const { frameId } = await Page.navigate({ url: toDataURL("test-page") });
-  ok(true, "A new page has been loaded");
+  info("A new page has been loaded");
   is(
     frameId,
     previousContext.auxData.frameId,
     "Page.navigate returns the same frameId than executionContextCreated"
   );
 
   const { executionContextId } = await executionContextDestroyed;
   is(
--- a/remote/test/browser/runtime/browser_getProperties.js
+++ b/remote/test/browser/runtime/browser_getProperties.js
@@ -13,17 +13,17 @@ add_task(async function(client) {
   await testGetCustomProperty(client, contextId);
   await testGetPrototypeProperties(client, contextId);
   await testGetGetterSetterProperties(client, contextId);
 });
 
 async function testRuntimeEnable({ Runtime }) {
   // Enable watching for new execution context
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Calling Runtime.enable will emit executionContextCreated for the existing contexts
   const { context } = await Runtime.executionContextCreated();
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   return context;
--- a/remote/test/browser/runtime/browser_remoteObjects.js
+++ b/remote/test/browser/runtime/browser_remoteObjects.js
@@ -10,17 +10,17 @@ add_task(async function(client) {
   const contextId = firstContext.id;
 
   await testObjectRelease(client, contextId);
 });
 
 async function testRuntimeEnable({ Runtime }) {
   // Enable watching for new execution context
   await Runtime.enable();
-  ok(true, "Runtime domain has been enabled");
+  info("Runtime domain has been enabled");
 
   // Calling Runtime.enable will emit executionContextCreated for the existing contexts
   const { context } = await Runtime.executionContextCreated();
   ok(!!context.id, "The execution context has an id");
   ok(context.auxData.isDefault, "The execution context is the default one");
   ok(!!context.auxData.frameId, "The execution context has a frame id set");
 
   return context;
@@ -48,17 +48,17 @@ async function testObjectRelease({ Runti
     functionDeclaration: "function () { return this.foo; }",
   });
   is(result3.type, "number", "The type is correct");
   is(result3.value, 42, "Got the object's foo attribute");
 
   await Runtime.releaseObject({
     objectId: result.objectId,
   });
-  ok(true, "Object is released");
+  info("Object is released");
 
   try {
     await Runtime.callFunctionOn({
       executionContextId: contextId,
       functionDeclaration: "() => {}",
       arguments: [{ objectId: result.objectId }],
     });
     ok(false, "callFunctionOn with a released object as argument should throw");
--- a/remote/test/browser/target/browser_browserContext.js
+++ b/remote/test/browser/target/browser_browserContext.js
@@ -30,10 +30,10 @@ add_task(async function(_, CDP) {
     "targetCreated refers to the same browser context"
   );
   is(targetInfo.type, "page", "The target is a page");
 
   // Releasing the browser context is going to remove the tab opened when calling createTarget
   await Target.disposeBrowserContext({ browserContextId });
 
   await client.close();
-  ok(true, "The client is closed");
+  info("The client is closed");
 });
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1132,9 +1132,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 488;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1582550065130000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1582809719401000);
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,32 +3,33 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.                */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1584969222314000);
+const PRTime gPreloadListExpirationTime = INT64_C(1585228895689000);
 %%
 0--1.de, 1
 0-1.party, 1
 0-24.com, 1
 0-24.net, 1
 00004048.com, 1
 000321365.com, 1
 000b58.com, 1
 000btt.net, 1
 00100010.net, 1
 0010100.net, 1
 0011d88.com, 1
 00120012.net, 1
 00130013.net, 1
 0013d88.com, 1
+00140014.net, 1
 0014d88.com, 1
 00150015.net, 1
 0015d88.com, 1
 00160016.net, 1
 00168365.com, 1
 0016d88.com, 1
 0017d88.com, 1
 00180018.net, 1
@@ -439,16 +440,17 @@ 077k8.com, 1
 078663.com, 1
 0788yh.com, 1
 078kb.com, 1
 0792112.com, 1
 079606.com, 1
 079607.com, 1
 0798rcw.com, 1
 0799ks.com, 1
+07am8.com, 1
 07d88.com, 1
 07d88.net, 1
 0809yh.com, 1
 081115.com, 1
 081752.com, 1
 081763.com, 1
 081769.com, 1
 081783.com, 1
@@ -547,16 +549,17 @@ 0i0.nl, 1
 0ii0.cf, 1
 0ik.de, 1
 0iz.net, 1
 0knowledge.de, 0
 0lc8.com, 1
 0lc8.net, 1
 0o0.edu.pl, 1
 0paste.com, 1
+0q0.eu, 1
 0vi.org, 1
 0vo.moe, 1
 0wx.cat, 1
 0wx.es, 1
 0wx.eu, 1
 0wx.org, 1
 0x.cx, 1
 0x.sk, 1
@@ -615,16 +618,17 @@ 100onrainkajino.com, 1
 100pounds.co.uk, 1
 100pudov.tk, 1
 100up.de, 1
 100up.org, 1
 100visits.tk, 1
 101.qa, 1
 101010.pl, 1
 1011100.com, 1
+10160365.com, 1
 101sauna.kz, 1
 101sauna.ru, 1
 1020301.com, 1
 1020302.com, 1
 1020305.com, 1
 1020307.com, 1
 1020309.com, 1
 1020310.com, 1
@@ -1096,16 +1100,25 @@ 15918.net, 1
 159cp.com, 1
 159k66.ag, 1
 159k66.com, 1
 159ks.com, 1
 159ks.net, 1
 159z6.com, 1
 16-qw.tk, 1
 1600esplanade.com, 1
+16036510.com, 1
+16036520.com, 1
+16036530.com, 1
+16036540.com, 1
+16036550.com, 1
+16036560.com, 1
+16036570.com, 1
+16036580.com, 1
+16036590.com, 1
 160763.com, 1
 160887.com, 1
 161233.com, 1
 161263.com, 1
 16164f.com, 1
 1620301.com, 1
 1620302.com, 1
 1620303.com, 1
@@ -1509,43 +1522,46 @@ 1r.is, 1
 1rs.nl, 1
 1salland.nl, 1
 1sand0s.nl, 1
 1scope.com, 1
 1se.co, 1
 1se2or3.com, 1
 1st-bounce.co.uk, 1
 1st-community.de, 1
+1st2bounce.com, 1
 1stcarpetcleaning.co.uk, 1
 1stchoicelandscapingwa.com, 1
 1stclassbouncycastles.co.uk, 1
 1stforfun.co.uk, 1
 1stpeninsulabouncers.co.uk, 1
 1ticks.com, 1
 1u0m.com, 1
 1v1.xyz, 1
 1v9.im, 1
 1volcano.ru, 1
 1vpns.com, 1
+1way.faith, 1
 1whw.co.uk, 1
 1wirelog.de, 1
 1wl.uk, 1
 1zombie.team, 1
 2.wtf, 1
 200.network, 1
 2000.is, 1
 2000meter.no, 1
 2001y.me, 1
 200201.xyz, 1
 200fcw.com, 1
 200ks.com, 1
 2012.ovh, 1
 2012review.tk, 1
 2013review.tk, 1
 2015review.tk, 1
+20160365.com, 1
 2017c.com, 1
 2018.wales, 1
 2018fifaworldcup.tk, 1
 2018j95.com, 1
 20191r.com, 1
 2019j95.com, 1
 2019k8.com, 1
 2020j95.com, 1
@@ -1678,17 +1694,16 @@ 233hub.org, 1
 233hugo.com, 1
 233now.com, 1
 233ss.net, 1
 233v2.com, 1
 233vps.com, 1
 233yes.com, 1
 23436565.com, 1
 2346321.com, 1
-234666365.com, 1
 234lc.com, 1
 235u.net, 1
 23732.com, 1
 238212.com, 1
 23ks.app, 1
 23lhb.com, 1
 24-7.jp, 1
 24.ie, 1
@@ -1908,16 +1923,17 @@ 2y3x.com, 1
 3-800.com, 1
 3-dot-careapp1-146314.appspot.com, 1
 30019.com, 1
 3004233.com, 1
 3006789.com, 1
 300m.com, 0
 301.technology, 1
 301355.com, 1
+30160365.com, 1
 301ks.com, 1
 302422.com, 1
 303112.com, 1
 303312.com, 1
 3033888.com, 1
 303422.com, 1
 30375500.com, 1
 30375511.com, 1
@@ -2093,17 +2109,16 @@ 342733.com, 1
 342922.com, 1
 342933.com, 1
 343022.com, 1
 343622.com, 1
 34365t.com, 1
 343722.com, 1
 343922.com, 1
 34536565.com, 1
-345666365.com, 1
 345lc.com, 1
 346022.com, 1
 346033.com, 1
 346122.com, 1
 346233.com, 1
 346322.com, 1
 346422.com, 1
 346522.com, 1
@@ -2585,16 +2600,17 @@ 4-it.de, 1
 4000milestare.com, 1
 4001365.com, 1
 4002365.com, 1
 4003365.com, 1
 4004233.com, 1
 4004365.com, 1
 4005365.com, 1
 400k8.com, 1
+40160365.com, 1
 4025360.com, 1
 4025361.com, 1
 4025362.com, 1
 4025363.com, 1
 4025364.com, 1
 4025365.com, 1
 4025366.com, 1
 4025367.com, 1
@@ -2716,24 +2732,21 @@ 436773.com, 1
 437844.com, 1
 438663.com, 1
 439050.com, 1
 43klive.com, 1
 44-k.com, 1
 440887.com, 1
 44168365.com, 1
 441jj.com, 0
-441jz.com, 1
 442887.com, 1
-442jz.com, 1
 44321365.com, 1
 443658.com, 1
 44365t.com, 1
 443887.com, 1
-443jz.com, 1
 444321365.com, 1
 444887.com, 1
 444b58.com, 1
 4455bet.vip, 1
 445887.com, 1
 44b58.com, 1
 451.ooo, 1
 451365.com, 1
@@ -2796,16 +2809,17 @@ 499ks.com, 1
 499ks.net, 1
 49dollaridahoregisteredagent.com, 1
 4baby.com.br, 1
 4best.tk, 1
 4c-haircare.com, 1
 4d2.xyz, 1
 4dbygg.se, 1
 4dillusion.tk, 1
+4dpredict.com, 1
 4everproxy.com, 1
 4evip.com, 1
 4eyes.ch, 1
 4fit.ro, 1
 4flex.info, 1
 4freepress.com, 1
 4g-server.eu, 0
 4gnews.pt, 1
@@ -2850,16 +2864,17 @@ 5004233.com, 1
 5007999.com, 1
 500fcw.com, 1
 500k.nl, 1
 500k8.com, 1
 500p.xyz, 1
 500promocodes.com, 1
 500promokodov.ru, 1
 501117.com, 1
+50160365.com, 1
 5017501.com, 1
 5017502.com, 1
 5017503.com, 1
 5017504.com, 1
 5017505.com, 1
 5017601.com, 0
 5017602.com, 0
 5017603.com, 0
@@ -2999,26 +3014,24 @@ 52051.com, 1
 52051a.com, 1
 52051u.com, 1
 52051v.com, 1
 52051w.com, 1
 52051x.com, 1
 52051y.com, 1
 52051z.com, 1
 52062a.com, 1
-52062d.com, 1
 52062e.com, 1
-52062f.com, 1
 52062h.com, 1
 52062j.com, 1
-52062q.com, 1
+52062o.com, 1
+52062r.com, 1
 52062s.com, 1
-52062t.com, 1
-52062v.com, 1
 52062y.com, 1
+52062z.com, 1
 520xpjxpj.com, 1
 5214889.com, 1
 5214889.net, 1
 5219.ml, 1
 5225sf.com, 1
 524022.com, 1
 524622.com, 1
 524922.com, 1
@@ -3260,16 +3273,17 @@ 5thchichesterscouts.org.uk, 1
 5y.fi, 1
 5yeb.com, 1
 6-600.com, 1
 6004233.com, 1
 60062b.cc, 1
 60062h.cc, 1
 60062i.cc, 1
 600k8.com, 1
+60160365.com, 1
 602422.com, 1
 602yb.com, 1
 603yb.com, 1
 604122.com, 1
 604322.com, 1
 604522.com, 1
 604622.com, 1
 605422.com, 1
@@ -3394,28 +3408,26 @@ 6365tw.com, 1
 6365xj.com, 1
 6365xz.com, 1
 6365yd.com, 1
 6365yn.com, 1
 6365zj.com, 1
 638566.com, 1
 639422.com, 1
 639622222.com, 1
-6396444.com, 1
 63964444.com, 1
 63965555.com, 1
 639655555.com, 1
 639666666.com, 1
 63967777.com, 1
 63968888.com, 1
 639688888.com, 1
 63969999.com, 1
 6396aaa.com, 1
 6396ccc.com, 1
-6396eee.com, 1
 6396fff.com, 1
 6396hhh.com, 1
 6396iii.com, 1
 6396jjj.com, 1
 63gaming.com, 1
 640622.com, 1
 640722.com, 1
 640922.com, 1
@@ -3898,16 +3910,17 @@ 6lo.zgora.pl, 1
 6t-montjoye.org, 1
 6u55ooxpo38mnikkxqvbmwfwauiiv35bsmm-2yj.com, 1
 6wbz.com, 1
 700.az, 1
 7004233.com, 1
 700k8.com, 1
 700wns.com, 1
 701135.com, 1
+70160365.com, 1
 701605.com, 1
 70365365.com, 1
 704233.com, 1
 7045.com, 1
 704533.com, 1
 7045h.com, 1
 704633.com, 1
 705994.com, 1
@@ -4119,16 +4132,17 @@ 8007d88.com, 1
 8008d88.com, 1
 8009d88.com, 1
 8010d88.com, 1
 8011d88.com, 1
 8012d88.com, 1
 8013d.com, 1
 8013d88.com, 1
 8015d88.com, 1
+80160365.com, 1
 8016d88.com, 1
 8017d.com, 1
 8017d88.com, 1
 8018d.com, 1
 8019d.com, 1
 8019d88.com, 1
 8020d88.com, 1
 8021d.com, 1
@@ -4232,17 +4246,16 @@ 816jz.com, 1
 8170d.com, 1
 8171d.com, 1
 8173d.com, 1
 8176d.com, 1
 8178d.com, 1
 81818app.com, 1
 81818b.com, 1
 81818c.com, 1
-81818d.com, 1
 81818e.com, 1
 81818f.com, 1
 81818g.com, 1
 81818h.com, 1
 81818i.com, 1
 81818j.com, 1
 81818k.com, 1
 81818l.com, 1
@@ -4411,16 +4424,18 @@ 8396p.com, 1
 83kb88.com, 1
 842365.com, 1
 842844.com, 1
 846773.com, 1
 847773.com, 1
 848663.com, 1
 848jz.com, 1
 850226.com, 1
+8521.co, 1
+8521.me, 1
 8522.am, 1
 8522club.com, 1
 8522hk.com, 1
 8522ph.com, 1
 8522top.com, 1
 8522tw.com, 1
 8522usa.com, 1
 85383838.com, 0
@@ -4453,16 +4468,17 @@ 861365r.com, 1
 861365s.com, 1
 861365t.com, 1
 861365u.com, 1
 861365vip.com, 1
 861365w.com, 1
 861365y.com, 1
 861365z.com, 1
 861kb.com, 1
+86286286.com, 1
 8649955.com, 1
 8649966.com, 1
 8649977.com, 1
 866300.vip, 1
 866304.com, 1
 866305.vip, 1
 866308.vip, 1
 866314.com, 1
@@ -4652,17 +4668,16 @@ 88740z.com, 1
 8875d.com, 1
 8876d.com, 1
 8879d.com, 1
 887k66.com, 1
 887z6.com, 1
 8880ks.com, 1
 8881234j.com, 1
 8881ks.com, 1
-8882345j.com, 1
 888234j.com, 1
 8882ks.com, 1
 888321365.com, 1
 8883456j.com, 1
 888345j.com, 1
 8884553.com, 1
 8884567j.com, 1
 888456j.com, 1
@@ -4678,16 +4693,17 @@ 8887ks.com, 1
 88881.pw, 1
 8888209.com, 1
 88884048.com, 1
 888888722.com, 1
 88889822.com, 1
 8888esb.com, 1
 8888yule8888.com, 1
 8889ks.com, 1
+888am8.net, 1
 888bwf.com, 1
 888funcity.com, 1
 888funcity.net, 1
 888k66.com, 1
 888xpjxpj.com, 1
 8890d.com, 1
 8890ks.com, 1
 8891d.com, 1
@@ -4786,16 +4802,17 @@ 89kb88.com, 1
 8ack.de, 1
 8ag88.com, 1
 8agks.com, 1
 8b8888.com, 1
 8ballbombom.uk, 1
 8balls.nl, 1
 8btt.app, 1
 8dabet.com, 1
+8e8z.com, 1
 8hrs.net, 1
 8k66.vip, 1
 8lc8.net, 1
 8maerz.at, 1
 8me.nl, 1
 8pecxstudios.com, 1
 8shequapp.com, 1
 8t8.eu, 1
@@ -5394,18 +5411,18 @@ 966k66.com, 1
 966kb.com, 1
 966ks.com, 1
 966ty.com, 1
 966z6.com, 1
 967606.com, 1
 9679693.com, 1
 967you.com, 1
 9681909.com, 1
-9696178.com, 0
-9696178.net, 0
+9696178.com, 1
+9696178.net, 1
 96kb88.com, 1
 96z66.com, 1
 9721a.com, 1
 9721aa.com, 1
 9721b.com, 1
 9721bb.com, 1
 9721c.com, 1
 9721cc.com, 1
@@ -5532,16 +5549,17 @@ 9822hk.com, 1
 9822ph.com, 1
 9822tw.com, 1
 9822usa.com, 1
 9836952.com, 1
 984.ch, 1
 985kb.com, 1
 988316.com, 1
 988am8.net, 1
+988wh.com, 1
 988z6.com, 1
 989z6.com, 1
 98agks.com, 1
 98d88.com, 1
 98kb88.com, 1
 98ks.app, 1
 98laba.com, 0
 98laba.net, 0
@@ -5568,16 +5586,17 @@ 9968282.com, 1
 9968363.com, 1
 9968389.com, 1
 9968393.com, 1
 9968404.com, 1
 9968505.com, 1
 9968508.com, 1
 9968535.com, 1
 9968595.com, 1
+9968600.com, 1
 9968656.com, 1
 9968707.com, 1
 9968717.com, 1
 9968838.com, 1
 9968909.com, 1
 9968959.com, 1
 9968969.com, 1
 9968aa.com, 1
@@ -6028,30 +6047,33 @@ aaronfurtado.com, 1
 aaronhorler.com, 1
 aaronhorler.com.au, 1
 aaronkimmig.de, 1
 aaronroyle.com, 1
 aaronsilber.me, 1
 aarquiteta.com.br, 1
 aartsplastics.nl, 1
 aarvinproperties.com, 1
+aarwer.com, 1
+aarwer.jp, 1
 aasvets.co.uk, 1
 aatf.us, 1
 aati.be, 1
 aati.info, 1
 aattrans.com, 1
 aavienna.com, 1
 ab-photography.nl, 1
 ab288.com, 1
 ab2888.cn, 1
 ab28s.com, 1
 ab2web.com, 1
 abaapplianceservice.com, 1
 abaaustin.com, 1
 ababyco.com.hr, 1
+abacross.com, 1
 abacusbouncycastle.co.uk, 1
 abacusfi.com, 1
 abacustech.co.jp, 1
 abaev.uk, 1
 abandonedmines.gov, 1
 abasalehngo.com, 1
 abashevo.ml, 1
 abasky.net, 1
@@ -6088,16 +6110,17 @@ abdulrahman.eu, 1
 abdulwahaab.ca, 1
 abdurrahmangazidis.tk, 1
 abdurrehman.tk, 1
 abe-elektro.de, 1
 abe-medical.jp, 1
 abecodes.net, 1
 abeilles-idapi.fr, 0
 abelbarretto.tk, 1
+abelrubio.me, 1
 abelsflooringandtile.com, 1
 abenteuer-ahnenforschung.de, 1
 abeontech.com, 1
 aberdeenalmeras.com, 1
 aberdeencastles.co.uk, 1
 aberdeenjudo.co.uk, 1
 aberon.pl, 1
 abeus.com, 1
@@ -6159,23 +6182,26 @@ abolitionist.com, 1
 abolitionist.in, 1
 abolitionist.net, 1
 abolitionist.us, 1
 abolitionistparty.com, 1
 abolitionistproject.com, 1
 abolitionistsociety.com, 1
 abolitionniste.com, 1
 abolizionista.com, 1
+abona24.de, 1
 abonilla.com, 1
 aborla.net, 1
 abos.eu, 0
 abou.to, 0
 abouncycastleman.co.uk, 1
 about-bangladesh.tk, 1
 about-ti.me, 1
+aboutasia-trade.nl, 1
+aboutasia.nl, 1
 aboutassistedliving.org, 0
 abouthrm.nl, 1
 aboutict.nl, 1
 aboutlegal.nl, 1
 aboutmedia.nl, 1
 aboutmyproperty.ca, 1
 aboutpublishers.nl, 1
 aboutshakil.tk, 1
@@ -6306,16 +6332,17 @@ aceinstituteonline.com, 1
 aceitedelcampo.com, 1
 acelpb.com, 1
 acem.org.au, 1
 acemobileforce.com, 1
 acemypaper.com, 1
 acen.eu, 1
 acerentalandsales.com, 1
 acerislaw.com, 1
+aceshop702.com, 1
 acessibilidadebr.com.br, 1
 acessoeducacao.com, 1
 acfun.eu.org, 1
 acg.mn, 1
 acg.social, 1
 acg.vc, 1
 acgaudio.com, 1
 acgmoon.com, 1
@@ -6412,24 +6439,27 @@ activateudid.com, 1
 active-tluszcz.pl, 1
 active.hu, 0
 active247.info, 1
 activeaerogels.com, 1
 activecare-monitor.com, 0
 activeclearweb.com, 1
 activeexcavator.com, 1
 activefootandankle.com, 1
+activegearandapparel.com, 1
 activehire.co.uk, 1
 activeleisure.ie, 1
 activephoto.se, 1
 activespaceautomation.com, 1
 activespacetech.com, 1
 activiteithardenberg.nl, 1
 activitesaintnicaise.org, 1
 activityeventhire.co.uk, 1
+activityhub.cloud, 1
+activityhub.xyz, 1
 actom.cc, 1
 actom.org, 1
 actonwoodworks.com, 1
 actors-cafe.net, 1
 actorshop.co.uk, 1
 actorsroom.com, 1
 actserv.co.ke, 1
 actualadmins.com, 1
@@ -6438,16 +6468,17 @@ actualidadecommerce.com, 1
 actualidadgadget.com, 1
 actualidadiphone.com, 1
 actualidadkd.com, 1
 actualidadliteratura.com, 1
 actualidadmotor.com, 1
 actualidadviajes.com, 1
 actualite-videos.com, 1
 actualsolutions.am, 1
+acubens.org, 1
 acudire.es, 1
 acuica.co.uk, 0
 acul.me, 1
 aculocity.com, 1
 acumed-diagnostic.com, 1
 acunetix.com, 1
 acupofsalt.tv, 1
 acupuntura.coach, 1
@@ -6505,16 +6536,17 @@ adamwallington.co.uk, 1
 adamyuan.xyz, 1
 adappt.co.uk, 1
 adapptlabs.com, 1
 adapt-elektronik.com, 1
 adapt.de, 1
 adaptablesecurity.org, 1
 adaptergonomics.com, 1
 adapti.de, 1
+adaptiv.ltd, 1
 adaptiveicons.com, 1
 adaptivemechanics.edu.au, 1
 adarixconsultores.com, 1
 adarshcloud.in, 1
 adasbench.com, 1
 adativos.com.br, 1
 adawolfa.cz, 1
 adayinthelifeof.nl, 1
@@ -6559,16 +6591,17 @@ adept.org.pl, 1
 adesa.co.uk, 1
 adevel.eu, 1
 adex.network, 1
 adf-safetytools.com, 1
 adf.rocks, 1
 adftrasporti.it, 1
 adhd-inattentive.com, 1
 adhesivelaundry.co.uk, 1
+adhgroup.ug, 1
 adhoc.is, 1
 adhocracy.plus, 1
 adidasrunningpartners.com, 1
 adiehard.party, 0
 adimaja.com, 1
 adimplere.com.br, 1
 adinariversloveschool.com, 1
 adingenierie.fr, 1
@@ -6653,16 +6686,17 @@ adriatrans.ga, 1
 adrienjacquierbret.com, 1
 adrienkohlbecker.com, 1
 adriennesmiles.com, 1
 adrinet.tk, 1
 adrup.com, 1
 adsamcik.com, 1
 adsbouncycastles.co.uk, 1
 adsbtc.org, 1
+adsib.gob.bo, 1
 adsl2meg.fr, 1
 adsviews.gq, 1
 adswoo.com, 1
 adtelligent.com, 1
 adtgroup.com, 1
 adult.properties, 1
 adultbizz.eu, 1
 adultwebcams1.com, 1
@@ -6726,16 +6760,17 @@ advocator.ca, 1
 advocoeurdehaan.nl, 1
 advogatech.com.br, 1
 advokat-malinovskii.ml, 1
 advokat-romanov.com, 1
 advokaty-onlajn.gq, 1
 advokaty-yuristy.tk, 1
 advtran.com, 1
 adware.pl, 0
+adwokatkosterka.pl, 1
 adwokatzdunek.pl, 1
 adws.io, 1
 adxperience.com, 1
 adzie.xyz, 1
 adzuna.at, 1
 adzuna.ca, 1
 adzuna.co.nz, 1
 adzuna.co.za, 1
@@ -6807,25 +6842,27 @@ aestheticsplus.xyz, 1
 aesthetikpiercing.de, 1
 aesthetx.com, 1
 aestore.by, 1
 aesym.de, 1
 aeternus.tech, 1
 aetherc0r3.eu, 1
 aetherlink.de, 1
 aethonan.pro, 1
+aevar.io, 1
 aevpn.org, 1
 aextron.com, 1
 aextron.de, 1
 aextron.org, 1
 afashion.com.au, 1
 afavre.io, 1
 afbeelding.im, 1
 afbeeldinguploaden.nl, 1
-afcmrs.org, 0
+afcmrs.org, 1
+afcmrstest.org, 1
 afcompany.it, 1
 afcurgentcarelyndhurst.com, 1
 affaire.com, 1
 affairefacile.net, 1
 affarsnatverk.nu, 1
 affektblog.de, 1
 affichagepub3.com, 1
 affiliatefeatures.com, 1
@@ -6846,28 +6883,30 @@ affordableenvironmental.net, 1
 affordablehealthquotesforyou.com, 1
 affordableinsurancenow.com, 1
 affordablemudjacking.com, 1
 affordablepapers.com, 1
 affordableracingparts.com.au, 1
 affpass.com, 1
 affping.com, 1
 affvps.net, 1
+afgaim.com, 1
 afghan.dating, 1
 afgn.com.ua, 1
 afi-business-consulting.com, 1
 aficards.com, 1
 aficionados.com.br, 1
 afilio.de, 1
 afinadoronline.com.br, 1
 afinaudio.com, 1
 aflebedevo.tk, 1
 aflfreebets.com, 1
 aflowershop.ca, 1
 afmtevents.com, 1
+afonso.io, 1
 afp548.com, 1
 afree.ir, 0
 afri.cc, 1
 africa.dating, 1
 africalebanon.tk, 1
 african-bay.de, 1
 africanhosting.ml, 1
 africanimpact.com, 1
@@ -6879,16 +6918,17 @@ afrishade.com, 1
 afrodigital.uk, 1
 afs-asso.org, 1
 afscheidsportret.nl, 1
 aftab-alam.de, 1
 after.digital, 1
 afterdwi.info, 1
 afterhate.fr, 1
 afterpay.com, 1
+afterschoolprogramsoflancaster.org, 1
 afterskool.eu, 1
 afterstack.net, 1
 aftonpravdan.nu, 1
 afuh.de, 1
 afva.net, 1
 afwd.international, 1
 ag-2.net, 1
 ag-3.net, 1
@@ -7061,17 +7101,17 @@ agilecraft.com, 1
 agilesurvey.ch, 1
 agileui.com, 1
 agiley.se, 1
 agilicus.ca, 1
 agilicus.com, 1
 agilizing.us, 1
 agilob.net, 1
 aging.gov, 1
-agingstats.gov, 0
+agingstats.gov, 1
 agingstop.net, 1
 aginion.net, 1
 agiserv.fr, 1
 agks0.com, 1
 agks006.com, 1
 agks007.com, 1
 agks008.com, 1
 agks009.com, 1
@@ -7222,18 +7262,20 @@ agrekov.ru, 1
 agreor.com, 1
 agrichamber.com.ua, 1
 agriculture-schools.com, 1
 agridir.site, 1
 agrikulturchic.com, 1
 agrios.de, 1
 agriquads.nl, 1
 agro-forestry.net, 1
+agrobaza.com.ua, 1
 agroconsultoraplus.com, 1
 agrodronechile.cl, 1
+agrolab.dk, 1
 agroline.by, 1
 agromotorsburzaco.com, 1
 agroplas.cf, 1
 agroxxi.ru, 0
 agroyard.com.ua, 1
 agsb.ch, 0
 agscinemas.com, 1
 agscinemasapp.com, 1
@@ -7432,16 +7474,17 @@ airbnb.pl, 1
 airbnb.pt, 1
 airbnb.ru, 1
 airbnb.se, 1
 airbnb.tools, 1
 airbnbchina.cn, 1
 airbnbopen.com, 1
 airborne-inflatables.co.uk, 1
 airbossofamerica.com, 1
+airbrake.io, 1
 aircomms.com, 1
 airconditioning-sandton.co.za, 1
 airconrandburg.co.za, 1
 airconsalberton.co.za, 1
 airconsfourways.co.za, 1
 airconsmidrand.co.za, 1
 airductclean.com, 0
 airductcleaninggrandprairie.com, 1
@@ -7522,17 +7565,16 @@ ajiaojr.io, 1
 ajiaojr.me, 1
 ajiaojr.net, 1
 ajiboye.com, 1
 ajl.io, 1
 ajnah.net, 1
 ajnasz.hu, 1
 ajs5.com, 1
 ajsb85.com, 1
-ajsgall.com, 1
 ajwebsolutions.com, 1
 ak-varazdin.hr, 1
 ak-webit.de, 1
 ak47-miyamoto.spdns.org, 1
 aka.ms, 1
 akachanikuji.com, 1
 akademeia.moe, 1
 akademie-frankfurt.de, 1
@@ -7594,16 +7636,17 @@ aktive-arbeitslose.at, 1
 aktivierungscenter.de, 1
 akuislam.com, 1
 akukas.com, 1
 akul.co.in, 1
 akuseorangtraveler.com, 0
 akustik.tech, 1
 akuston.eu, 1
 akutun.cl, 1
+akvitens.com.ua, 1
 akvorrat.at, 1
 al-f.net, 1
 al3366.tech, 1
 al3abmizo.com, 1
 al3xpro.com, 1
 alab.space, 1
 alabamaag.gov, 1
 alabamacoastalradiology.com, 1
@@ -7644,18 +7687,18 @@ alasdelalma.com.co, 1
 alaskabuylocal.org, 1
 alaskafishinglodges.net, 1
 alaskajewelry.com, 1
 alasta.info, 1
 alastairs-place.net, 1
 alatkesehatan.tk, 1
 alauda-home.de, 1
 alaundeil.xyz, 1
-alaxyjewellers.co.za, 1
 alb-flirt.de, 1
+albagora.nl, 1
 albalatedelarzobispo.tk, 1
 albanesi.it, 1
 albareport.com, 1
 albatrosswear.com, 1
 albbounce.co.uk, 1
 alberoraydolap.com, 1
 albersdruck.de, 1
 albert-yu.com, 1
@@ -7777,19 +7820,19 @@ alextjam.es, 1
 alextsang.net, 1
 alexvdveen.nl, 0
 alexvetter.de, 1
 alexwardweb.com, 1
 alexyang.me, 1
 alfa-host.ml, 1
 alfa-tech.su, 1
 alfacharlie.co, 1
+alfadlmedical.net, 1
 alfaproweb.fr, 1
 alfavit.cf, 1
-alfirous.com, 1
 alforto.nl, 1
 alfratehotelcampiglio.it, 1
 alfred-figge.de, 1
 alfredapp.com, 1
 alftrain.com, 1
 algarmatic-automatismos.pt, 1
 algbee.com, 1
 algebra-quiz.com, 1
@@ -7813,18 +7856,19 @@ alice-noutore.com, 1
 alice-of-alice.top, 1
 alice.tw, 1
 alicemaywebdesign.com.au, 1
 alicestudio.it, 1
 alicetone.net, 1
 alicialab.org, 1
 aliefirfany.com, 1
 alieke.design, 1
+alien.bz, 1
 alien6.com, 1
-alienation.biz, 1
+alienation.biz, 0
 alienflight.com, 1
 alienslab.net, 1
 alienstat.com, 1
 alighierirescaldina.it, 1
 alignrs.com, 1
 aliim.gdn, 1
 alijammusic.com, 0
 alikulov.me, 1
@@ -7837,26 +7881,24 @@ aliorange.com, 1
 alis-test.tk, 1
 alisondavenport.ga, 1
 alisonisrealestate.com, 1
 alisonlitchfield.com, 1
 alistairstowing.com, 1
 alisync.com, 1
 alitec.it, 1
 aliv.biz, 1
-aliwebstore.com, 1
 alix-board.de, 1
 alize-theatre.ch, 0
 aliziolaw.com, 1
 aljaspod.ch, 1
 aljaspod.com, 1
 aljaspod.hu, 1
 aljaspod.net, 1
 aljaspod.org, 1
-aljoschairmer.de, 1
 aljweb.com, 1
 alkacoin.net, 1
 alkel.info, 1
 alkemi-si.fr, 1
 alko-centr.ru, 1
 alko-stop.ml, 1
 alkopedia.tk, 1
 alkor.tk, 1
@@ -8094,16 +8136,17 @@ als-japan.com, 1
 alsops.cf, 1
 alstertouch.com, 1
 alstertouch.de, 1
 alstroemeria.org, 1
 alt-three.com, 1
 alt.org, 1
 altabib.me, 1
 altahrim.net, 1
+altair.fi, 1
 altairlyh.com, 1
 altapina.com, 0
 altaplana.be, 1
 altaynews.kz, 1
 altco.group, 1
 altedirect.com, 1
 alteiria.fr, 1
 alter-news.fr, 1
@@ -8134,16 +8177,17 @@ altisdev.com, 1
 altkremsmuensterer.at, 1
 altmaestrat.es, 1
 altmann-systems.de, 1
 altoa.cz, 1
 altonblom.com, 1
 altopartners.com, 1
 altopia.com, 1
 altorise.com, 1
+altospam.com, 1
 altphotos.com, 1
 altporn.xyz, 1
 altrui.st, 1
 altsdigital.com, 1
 altstipendiaten.de, 1
 alttrackr.com, 1
 altunbas.info, 1
 altweaver.com, 1
@@ -8151,16 +8195,17 @@ aluminium-express.ru, 1
 aluminium-giesserei.de, 1
 alumni-kusa.jp, 1
 alupferd.de, 1
 aluroof.eu, 1
 alushta-vostorg.tk, 1
 alvcs.com, 1
 alviano.com, 0
 alvicom.hu, 1
+alvimedika.com.ua, 1
 alvn.ga, 1
 alvosec.com, 1
 alwayshowher.tk, 1
 alwayslookingyourbest.com, 1
 alwaysmine.fi, 1
 alwaysonssl.com, 1
 alwayswanderlust.com, 1
 alxlegal.com, 1
@@ -8185,31 +8230,37 @@ am2s.fr, 1
 am3.se, 1
 am5039.com, 1
 am5188.com, 1
 am5199.com, 1
 am5566m.com, 1
 am6118.com, 1
 am615.am, 1
 am8.com, 1
+am8.im, 1
+am8009.com, 1
+am8028.com, 1
 am8136.com, 1
 am8213.com, 1
 am88.ag, 1
 am8833.net, 1
+am8866m.com, 1
+am8895.com, 1
 am9588.com, 1
 am9d104.com, 1
 ama.ne.jp, 1
 amaderelectronics.com, 1
 amadoraslindas.com, 1
 amadvice.com, 1
 amaforro.com, 1
 amagdic.com, 1
 amagical.net, 0
 amaiz.com, 1
 amal2019.com, 1
+amalficoastransfers.it, 1
 amalfilapiazzetta.it, 1
 amalfipositanoboatrental.com, 1
 amalfirock.it, 1
 amalfitabula.it, 1
 amanatrustbooks.org.uk, 1
 amandadamsphotography.com, 1
 amandahamilton.tk, 1
 amandasage.ca, 1
@@ -8225,22 +8276,24 @@ amateurpornhours.com, 1
 amateurradionotes.com, 1
 amateurvoicetalent.com, 1
 amati.solutions, 1
 amato.tk, 1
 amatsuka.com, 1
 amauf.de, 1
 amautorepairwa.com, 1
 amazetimberfurniture.com.au, 1
+amazighlove.com, 1
 amazili-communication.com, 1
 amazing-castles.co.uk, 1
 amazinginflatables.co.uk, 1
 amazingraymond.com, 1
 amazingraymond.com.au, 1
 amb.tf, 1
+amb8.net, 1
 ambacoin.io, 1
 ambassify.com, 1
 ambassify.eu, 1
 amberalert.gov, 1
 amberglowleisure.co.uk, 1
 amberlightleisure.com, 1
 amberoad.tk, 1
 ambholding-usedcars.be, 0
@@ -8328,16 +8381,17 @@ amirautos.com, 0
 amirmahdy.com, 1
 amisderodin.fr, 1
 amiserver.de, 1
 amisharingstuff.com, 1
 amitabhsirkiclasses.org.in, 1
 amitpatra.com, 1
 amiu.org, 1
 amj74-informatique.fr, 1
+amjinc.ca, 1
 amleather.pl, 1
 amm6610.com, 1
 amm6e.com, 1
 ammanagingdirectors.com, 1
 amministratore.biz, 1
 amministratore.roma.it, 1
 amministratorecondominio.roma.it, 1
 amnesty-bf.org, 1
@@ -8345,16 +8399,17 @@ amnesty.org.au, 1
 amnesy.fr, 1
 amobileway.co.uk, 1
 amok8.am, 1
 amokinio.com, 1
 amoozesh98.com, 1
 amoozesh98.ir, 1
 amorgos-aegialis.com, 1
 amorim.ca, 1
+amoryurgentcare.com, 1
 amosng.com, 1
 amoxil.cf, 1
 amperaa.net, 1
 ampersandnbspsemicolon.com, 1
 ampgroep.nl, 1
 amphetamines.org, 1
 amphibo.ly, 1
 amphost.tk, 1
@@ -8624,17 +8679,17 @@ angularjs.org, 0
 angusmak.com, 1
 anhaffen.lu, 1
 anhqv.es, 1
 ani-man.de, 1
 aniaimichal.eu, 1
 anicam.fr, 1
 aniforprez.net, 1
 anim.ee, 1
-animaemundi.be, 1
+animaemundi.be, 0
 animal-liberation.com, 1
 animal-rights.com, 1
 animalconnect.org.za, 1
 animalistic.io, 1
 animalliberation.tk, 1
 animalstropic.com, 1
 animaltesting.fr, 1
 animalz.tk, 1
@@ -8653,30 +8708,32 @@ animeai.com, 1
 animebits.moe, 1
 animeclub.in.ua, 1
 animedon.tk, 1
 animefever.tv, 1
 animefire.net, 1
 animefluxxx.com, 1
 animehf.com, 1
 animeinsights.net, 1
+animemotivation.com, 1
 animeone.me, 1
 animes-portal.info, 1
 animesharp.com, 1
 animetriad.com, 1
 animojis.es, 1
 animorphsfanforum.com, 1
 anipassion.com, 0
 anirvalle.com, 1
 anitaalbersen.nl, 1
 anitaxcph.dk, 1
 anitube-nocookie.ch, 1
 anitube.ch, 1
 anivar.net, 1
 aniviasport.store, 1
+aniwhen.com, 1
 anjara.eu, 1
 anjocerdena.com, 1
 anjoola.com, 1
 ankane.org, 1
 ankaraevdenevenakliyat.name.tr, 1
 ankarakart.com.tr, 1
 ankaraotokiralama.tk, 1
 ankaraprofesyonelwebtasarim.com, 1
@@ -8871,16 +8928,17 @@ anxiolytics.com, 1
 any-download.cf, 1
 any-download.ga, 1
 any-download.gq, 1
 any-download.ml, 1
 any.pm, 0
 anyad.at, 1
 anyfood.fi, 1
 anyi.in, 1
+anyilin.cn, 1
 anymetrix.io, 1
 anyon.com, 1
 anypeer.net, 1
 anyprime.net, 1
 anyquestions.govt.nz, 1
 anystack.xyz, 1
 anythinggraphic.net, 1
 anyways.at, 1
@@ -8907,16 +8965,17 @@ aopedeure.nl, 1
 aopsy.de, 1
 aori.com, 1
 aorosora.com, 1
 aosc.io, 0
 aostacarnavals.it, 1
 aotearoa.maori.nz, 1
 aotearoafreepress.com, 1
 aotearoaleaks.org, 1
+aoyamacc.co.jp, 1
 ap-swiss.ch, 0
 apa-canal.ro, 1
 apac-tech.com, 0
 apache-portal.com, 1
 apachehaus.de, 0
 apachelounge.com, 1
 apachezone.com, 1
 apadvantage.com, 1
@@ -9012,29 +9071,31 @@ aponkral.org, 1
 aporia.io, 1
 aposke.com, 1
 aposke.net, 1
 aposke.org, 1
 apostalegal.com, 1
 apostalegal.pt, 1
 apostilasaprovacao.com, 1
 apothecarydouglasville.com, 1
+apotheek-ict.nl, 1
 apotheke-ch.org, 1
 apotheke55.de, 1
 apothes.is, 1
 app, 1
 app-at.work, 1
 app-scope.com, 1
 app.lookout.com, 1
 app.recurly.com, 1
 app.simpletax.ca, 1
 app.yinxiang.com, 0
 app00228.com, 1
 app11018.com, 1
 app2get.de, 1
+app5671.com, 1
 app666365.com, 1
 app6810.com, 1
 app77018.com, 1
 appagility.co.nz, 1
 appapi.link, 1
 apparelfashionwiki.com, 1
 appartement-andrea.at, 1
 appartement-evolene.net, 0
@@ -9048,24 +9109,26 @@ appelaprojets.fr, 1
 appelboomdefilm.nl, 1
 appengine.google.com, 1
 appers.co, 1
 appgeek.com.br, 1
 appharbor.com, 1
 appify.org, 1
 appimlab.it, 1
 appizia.com, 1
+applaudit.com, 1
 apple-watch-zubehoer.de, 1
 apple.ax, 1
 applegun.com, 1
 applejacks-bouncy-castles.co.uk, 1
 applemon.com, 1
 appleoosa.com, 1
 appleranch.com, 1
 applesencia.com, 1
+appletree.is, 1
 applian.jp, 1
 appliancepronwi.com, 1
 applic8.com, 0
 application-travel.us.com, 1
 applicationmanager.gov, 1
 applied-privacy.net, 1
 appliquette.com.au, 1
 apply-esta.us.com, 1
@@ -9204,16 +9267,17 @@ arboworks.com, 1
 arbu.eu, 0
 arcadio.fr, 1
 arcaik.net, 1
 arcanetides.com, 1
 arcanist.games, 1
 arcbouncycastles.co.uk, 1
 arcenergy.co.uk, 1
 archaeoadventures.com, 1
+archambault.paris, 1
 archbishop.ga, 1
 archeologicatoscana.it, 1
 archframe.net, 1
 archimedicx.com, 1
 archina.ir, 1
 archined.nl, 1
 archit.in, 1
 architectryan.com, 1
@@ -9282,17 +9346,19 @@ argb.de, 1
 argecord.com, 1
 argekultur.at, 1
 argentinatrabaja.org, 1
 argh.io, 1
 argonium.com.au, 1
 argot.com, 1
 argovpay.com, 1
 argumentative-essay.gq, 1
+argyrakis.gr, 1
 arheh.com, 1
+arhitekti.hr, 1
 ariacreations.net, 1
 ariadermspa.com, 1
 arian.io, 1
 ariana.wtf, 1
 arias.re, 1
 ariba.info, 1
 ariege-pyrenees.net, 1
 arielpereira.tk, 1
@@ -9501,22 +9567,24 @@ articulatedmedia.com, 1
 artifact.spb.ru, 1
 artifexnet.com, 1
 artificial.army, 1
 artificialgrassandlandscaping.com, 1
 artificialplants.tk, 1
 artigianociao.jp, 1
 artigoos.com, 1
 artik.cloud, 1
+artikel9.com, 1
 artikelpendidikan.id, 1
 artimpact.ch, 1
 artioml.net, 1
 artionet.ch, 1
 artis-game.net, 1
 artisan-cheminees-poeles-design.fr, 0
+artisan-emmanuel.fr, 1
 artisanhd.com, 0
 artisans-libres.com, 0
 artisansoftaste.com, 1
 artisavotins.com, 1
 artisense.de, 1
 artistagenda.com, 1
 artistedeparis.fr, 1
 artisticedgegranite.net, 1
@@ -9542,16 +9610,17 @@ artofwhere.com, 1
 artozoul.fr, 1
 artplasticsurgeons.com, 1
 artransparency.gov, 1
 artrapid.com, 1
 artratio.net, 1
 artroot.jp, 1
 artroscopiaperlosport.it, 1
 arts.gov, 1
+artsacademics.org, 1
 artschmidtoptical.com, 1
 artsmarket.ca, 1
 artspac.es, 1
 arttel-media.ru, 1
 arturkohut.com, 1
 arturli.be, 1
 arturopinto.com.mx, 1
 arturrossa.de, 1
@@ -9576,16 +9645,17 @@ arx8x.net, 1
 arxell.com, 1
 aryalaroca.de, 1
 aryan-nation.com, 1
 aryasenna.net, 1
 arzid.com, 1
 arzinfo.pw, 1
 as200753.com, 1
 as200753.net, 1
+as204982.net, 1
 as395.com, 1
 as397.com, 1
 as398.com, 1
 as44222.net, 1
 as5158.com, 1
 as8423.net, 1
 asaabforever.com, 1
 asabacortoscaseros.tk, 1
@@ -9615,16 +9685,17 @@ asdchieti.tk, 1
 asdwfwqd.com, 1
 asdyx.de, 1
 asec01.net, 1
 asegem.es, 1
 aseith.com, 1
 aselectionoffice.gov, 1
 asenno.com, 1
 aserver.co, 1
+aseth.de, 1
 asexualitat.cat, 1
 asfaleianet.gr, 1
 asgapps.co.za, 1
 asgrd.org, 1
 ashastalent.com, 1
 ashd1.goip.de, 1
 ashd2.goip.de, 1
 ashd3.goip.de, 1
@@ -9666,32 +9737,34 @@ asilo.roma.it, 1
 asinetasima.com, 1
 asisee.co.il, 1
 ask.fi, 1
 ask.pe, 1
 ask.stg.fedoraproject.org, 1
 ask1.org, 1
 askcascade.com, 1
 askeustache.com, 1
+askexpert.in, 1
 askizzy.org.au, 1
 askkaren.gov, 1
 askmagicconch.com, 0
 askme-events.vip, 1
 askme24.de, 1
 askv6.net, 1
 askvg.com, 1
 askwhy.cz, 1
 askwhy.eu, 1
 aslinfinity.com, 1
 asmanyasgiven.com, 1
 asmarketero.com, 1
 asmbsurvey.com, 1
 asmdz.com, 1
 asmeets.nl, 1
 asmood.net, 1
+asmrbuluo.com, 1
 asngear.biz, 1
 asoagroca.com, 1
 asociacionbienestarinmobiliariobogota.com, 1
 asociaciontrastea.com, 1
 asoul.tw, 1
 asp.net, 1
 aspargesgaarden.no, 1
 aspatrimoine.com, 0
@@ -9914,17 +9987,17 @@ atraverscugy.ch, 0
 atrevillot.com, 1
 atrias.net, 1
 atrinik.org, 1
 atsoftware.de, 1
 atspeeds.com, 1
 attac.us, 1
 atte.fi, 1
 attendanceondemand.com, 1
-attendantdesign.com, 1
+attendantdesign.com, 0
 attendu.cz, 1
 attengo.ga, 1
 attention.horse, 1
 attilagyorffy.com, 1
 attilavandervelde.nl, 1
 attimec.com, 1
 attinderdhillon.com, 1
 attiremr.tk, 1
@@ -10049,16 +10122,17 @@ ausmwoid.de, 1
 auspicacious.org, 1
 ausschreibungen-suedtirol.it, 1
 aussiefunadvisor.com, 1
 aussiemilfs.com, 1
 aussieseoadelaide.com.au, 1
 aussieseobrisbane.com.au, 1
 aussieservicedown.com, 1
 aussiestoresonline.com, 1
+aussiestories.dk, 1
 austenplumbing.com, 1
 austerevisuals.com, 1
 austin-pearce.com, 1
 austin-security-cameras.com, 1
 austincardiac.com, 1
 austinchase.com, 1
 austinheap.com, 0
 austinlockout.com, 1
@@ -10114,17 +10188,16 @@ autobella-hurtownia.pl, 1
 autobelle.it, 1
 autobourcier.com, 1
 autocadperfmon.azurewebsites.net, 1
 autocartruck.com, 1
 autoccaz.fr, 1
 autocontrol.online, 1
 autocorner.com, 1
 autocrypt.org, 1
-autod.hu, 1
 autodalmacija.com, 1
 autodemolizioni.roma.it, 1
 autodidactic.ai, 1
 autodidacticstudios.com, 1
 autodidacticstudios.net, 1
 autodidacticstudios.org, 1
 autodius.com, 1
 autoecoledumontblanc.com, 1
@@ -10348,16 +10421,17 @@ awen.me, 1
 awesome-coconut-software.fr, 1
 awesomebouncycastles.co.uk, 1
 awesomenamegenerator.com, 1
 awesomesit.es, 1
 awf0.xyz, 1
 awic.ca, 1
 awk.tw, 1
 awksolutions.com, 1
+awlgolf.com, 1
 awningcanopyus.com, 1
 awningsaboveus.com, 1
 awningsatlantaga.com, 1
 awningsydney.ga, 1
 awomansplacenj.com, 1
 awplasticsurgery.com, 1
 awsbs.de, 1
 awscloudrecipes.com, 1
@@ -10412,16 +10486,17 @@ aymerick-dupouey.fr, 1
 aymerick.fr, 1
 aymericlagier.com, 1
 ayon.group, 1
 ayothemes.com, 1
 ayporealestate.com, 1
 aypotech.com, 1
 ayrohq.com, 1
 ayrshirebouncycastlehire.co.uk, 1
+ayselonia.onl, 1
 ayudacloud.com, 1
 ayudalabs.com, 1
 ayudapreview.com, 1
 ayumi.network, 1
 ayumindev.net, 1
 ayumix3.xyz, 1
 ayurveda-mantry.com, 0
 ayurveda101.com, 0
@@ -10606,16 +10681,21 @@ b6750.com, 1
 b67772.com, 1
 b67773.com, 1
 b67774.com, 1
 b67775.com, 1
 b67801.com, 1
 b67802.com, 1
 b67803.com, 1
 b67805.com, 1
+b67901.com, 1
+b67902.com, 1
+b67903.com, 1
+b67904.com, 1
+b67905.com, 1
 b68.xyz, 1
 b6957.co, 1
 b70661.com, 1
 b70663.com, 1
 b70664.com, 1
 b70771.com, 1
 b70772.com, 1
 b70773.com, 1
@@ -10857,16 +10937,17 @@ baciu.ch, 0
 backeby.eu, 1
 background-checks-systems.com, 1
 background-checks.asia, 1
 background-checks.biz, 1
 background-checks.mobi, 1
 backgroundchecks.online, 1
 backgroundscreenersofamerica.com, 1
 backgroundz.net, 1
+backlinkbase.com, 1
 backlogapp.io, 1
 backmitra.com, 1
 backmitra.mx, 1
 backmitra.nl, 1
 backmountaingas.com, 1
 backpacken.org, 1
 backpacker.dating, 1
 backscattering.de, 0
@@ -11031,16 +11112,17 @@ balslev.io, 1
 balter.com, 1
 balticer.de, 1
 balticmed.pl, 1
 balticnetworks.com, 1
 baltimorecashflow.com, 1
 bamahammer.com, 1
 bamanshop.com, 1
 bambambaby.com.br, 0
+bamboehof.nl, 1
 bambooforest.nl, 1
 bamboorelay.com, 1
 bamily.rocks, 1
 bamtoki.com, 1
 ban.moe, 1
 bananabandy.com, 1
 bananacloud.fr, 1
 banananet.work, 1
@@ -11123,16 +11205,25 @@ bantaihost.com, 1
 banter.city, 1
 bao-in.com, 1
 bao-in.net, 1
 baodan666.com, 1
 baofengtech.com, 1
 baokhangfood.com, 1
 baopublishing.it, 1
 baosuckhoedoisong.net, 1
+baoxue1.com, 1
+baoxue2.com, 1
+baoxue3.com, 1
+baoxue5.com, 1
+baoxue6.com, 1
+baoxue7.com, 1
+baoxue8.com, 1
+baoxue9.com, 1
+bapha.be, 1
 baptiste-peugnez.fr, 1
 baptisteplanckaert.tk, 1
 bar-harcourt.com, 1
 bar.pl, 1
 barabrume.fr, 1
 barakayu.com, 1
 baranmovie.tk, 1
 barans2239.com, 1
@@ -11222,18 +11313,19 @@ bascht.com, 1
 basculasconfiables.com, 1
 base-autonome-durable.com, 0
 basebalance.net, 1
 baseballrampage.com, 1
 baseballsavings.com, 1
 baseballwarehouse.com, 1
 basebyte.nl, 1
 baseconvert.com, 1
-basedonline.nl, 1
 baseerapp.com, 1
+basel-gynaecology.com, 1
+basel-gynaekologie.ch, 1
 baselang.com, 1
 basement961.co.nz, 1
 basementdoctornorthwest.com, 1
 basementfinishingohio.com, 1
 basementwaterproofingdesmoines.com, 1
 baserverz.ga, 1
 baseweb.design, 1
 bashc.at, 1
@@ -11241,16 +11333,17 @@ bashing-battlecats.com, 1
 bashkirlife.tk, 1
 bashstreetband.co.uk, 1
 basicamente.digital, 1
 basicapparel.de, 1
 basicattentiontoken.org, 1
 basics.net, 1
 basilicaknights.org, 1
 basilm.co, 1
+basilsys.com, 1
 basketball-brannenburg.de, 1
 basketforex.com, 1
 basnoslovno.ru, 1
 basonlinemarketing.nl, 1
 basradio.tk, 1
 bass-pro.ru, 1
 bassblog.net, 1
 bassment.ph, 1
@@ -11338,17 +11431,16 @@ baystreet.com.mt, 1
 baytalebaa.com, 1
 baytownent.com, 1
 baywatch.io, 1
 bayz.de, 1
 baza-gai.com.ua, 1
 bazaarbhaav.com, 1
 bazaarcompass.com, 1
 bazari.com.pl, 1
-bazinga-events.nl, 1
 bazos.at, 1
 bazos.cz, 1
 bazos.pl, 1
 bazos.sk, 1
 bazziergraphik.com, 1
 bb00228.com, 1
 bb057.com, 1
 bb087.com, 1
@@ -11460,17 +11552,16 @@ beaglesecurity.com, 1
 beagreenbean.co.uk, 1
 beaker.coffee, 1
 bealpha.pl, 1
 beambdi.com, 1
 beamitapp.com, 1
 beamstat.com, 1
 beanbagaa.com, 1
 beanbot.party, 1
-beanbox.com, 1
 beanilla.com, 1
 beanjuice.me, 1
 beans-one.com, 0
 beansgalore.com.au, 1
 bearcms.com, 1
 bearded.sexy, 1
 beardic.cn, 1
 beardsome.me, 1
@@ -11490,17 +11581,16 @@ beau.pw, 1
 beaumelcosmetiques.fr, 1
 beaute-eternelle.ch, 0
 beauty-expert.co, 1
 beauty-form.ir, 1
 beauty-italy.ru, 1
 beauty-yan-enterprise.com, 1
 beauty24.de, 1
 beautyandfashionadvice.com, 1
-beautybear.dk, 1
 beautybh.com, 1
 beautyby.tv, 1
 beautycarepack.com.ng, 1
 beautyevent.fr, 1
 beautykat.ru, 1
 beautyseasons.ru, 1
 beaver-creek.ga, 1
 beaverdamautos.com, 1
@@ -11523,29 +11613,31 @@ becklove.cn, 1
 beckyhirstconsulting.com.au, 1
 becleverwithyourcash.com, 1
 become-lucky.com, 1
 becomeabricklayer.com.au, 1
 becquerelgroup.com, 1
 becs.ch, 0
 becubed.co, 1
 becydog.cz, 1
+bedacdn.com, 1
 bedamedia.com, 1
 bedandbreakfast.dk, 1
 bedandbreakfasteuropa.com, 1
 bedandbreakfasthoekvanholland.com, 1
 beddentotaal.nl, 1
 bedels.nl, 1
 bedfordnissanparts.com, 1
 bedlingtonterrier.com.br, 1
 bednar.co, 1
 bedouille.com, 1
 bedrijfsfotoreportages.nl, 1
 bedrocklinux.org, 1
 bedste10.dk, 1
+bedtimeflirt.com, 1
 bee-creative.nl, 1
 bee-line.org.uk, 1
 bee-removal-dublin.com, 1
 bee.clothing, 1
 bee.supply, 1
 bee.tools, 1
 beecare.ch, 0
 beechwoodmetalworks.com, 1
@@ -11670,16 +11762,17 @@ bella.network, 1
 bellaklein.de, 1
 bellamodeling.com, 1
 bellamy.cloud, 1
 bellavistaoutdoor.com, 1
 bellebakes.blog, 1
 bellevueowners.tk, 1
 bellezzasenzalimiti.it, 1
 bellinghamdetailandglass.com, 1
+belllegal.com.au, 1
 belloy.ch, 0
 belloy.net, 0
 bellthrogh.com, 1
 bellware.io, 0
 belly-button-piercings.com, 1
 bellyandbrain.amsterdam, 1
 belmontgoessolar.org, 1
 belos.at, 1
@@ -11749,16 +11842,17 @@ benjaminjurke.com, 1
 benjaminjurke.net, 1
 benjaminkopelke.com, 1
 benjaminpiquet.fr, 0
 benjamins.com, 1
 benjaminvasel.de, 1
 benjii.me, 1
 benjijaldoner.nl, 1
 benleemd.com, 1
+benmack.net, 1
 benmatthews.com.au, 1
 benmillett.us, 0
 bennettsbouncycastlehire.co.uk, 1
 bennettshire.co.uk, 1
 benni1.eu, 1
 bennierobinson.com, 1
 bennink.me, 1
 benno.frl, 1
@@ -11786,16 +11880,17 @@ benz-hikaku.com, 1
 benzi.io, 1
 benzina.cn, 1
 benzou-space.com, 1
 beoordelingen.be, 1
 bep.gov, 1
 bepayd.com, 1
 bephoenix.org.uk, 0
 beplephan.com, 1
+bepsvpt.me, 1
 bequ1ck.com, 1
 bequiia.com, 1
 beranovi.com, 1
 berasavocate.com, 1
 beraten-entwickeln-steuern.de, 1
 berati.tv, 1
 beratungswelt.dvag, 1
 berdaguermontes.eu, 0
@@ -11923,16 +12018,17 @@ bestbefore.com, 1
 bestbestbitcoin.com, 1
 bestbonuses.co.uk, 1
 bestboot.cf, 1
 bestbrokerindia.com, 1
 bestbuyzone.com, 1
 bestcarscyprus.com, 1
 bestcellular.com, 0
 bestcivilattorneys.com, 1
+bestcrossbowguide.com, 1
 bestdating.today, 1
 bestdownloadscenter.com, 1
 bestechgadgets.tk, 1
 bestedeal.nl, 1
 bestehostingproviders.nl, 1
 bestelectricnd.com, 1
 bestellipticalmachinereview.info, 1
 bestemailmarketingsoftware.org, 1
@@ -11994,20 +12090,16 @@ bet04vip.com, 1
 bet05vip.com, 1
 bet062.com, 1
 bet064.com, 1
 bet06vip.com, 1
 bet074.com, 1
 bet08vip.com, 1
 bet09vip.com, 1
 bet10vip.com, 1
-bet166bbb.com, 1
-bet166fff.com, 1
-bet166ww.com, 1
-bet166xx.com, 1
 bet166yy.com, 1
 bet168wy.com, 1
 bet168wy.net, 1
 bet261.com, 1
 bet290.com, 1
 bet333111.com, 1
 bet333123.com, 1
 bet333222.com, 1
@@ -12037,16 +12129,18 @@ bet333u.com, 1
 bet333v.com, 1
 bet333w.com, 1
 bet333x.com, 1
 bet333y.com, 1
 bet333z.com, 1
 bet33app.com, 1
 bet3602.com, 1
 bet3607.com, 1
+bet3639.com, 1
+bet365bc.net, 1
 bet365cn-casino.com, 1
 bet365cn-game.com, 1
 bet365cn-keno.com, 1
 bet365cn-livecasino.com, 1
 bet365cn-poker.com, 1
 bet365cn-sports.com, 1
 bet365cn-vegas.com, 1
 bet365cnq.com, 1
@@ -12054,25 +12148,43 @@ bet365cnr.com, 1
 bet365cns.com, 1
 bet365cnt.com, 1
 bet365cnu.com, 1
 bet365cnv.com, 1
 bet365cnw.com, 1
 bet365cnx.com, 1
 bet365cny.com, 1
 bet365cnz.com, 1
+bet365g8.com, 1
+bet365n1.com, 1
+bet365n2.com, 1
+bet365n6.com, 1
+bet365n8.com, 1
+bet365n9.com, 1
+bet365q0.com, 1
+bet365q6.com, 1
+bet365q8.com, 1
+bet365q9.com, 1
+bet365r8.com, 1
 bet365u.com, 1
 bet365vip1.com, 0
 bet365vip2.com, 0
 bet365vip3.com, 0
 bet365vip4.com, 0
 bet365vip5.com, 0
 bet365vip6.com, 0
 bet365vip7.com, 1
 bet365vip9.com, 0
+bet365x0.com, 1
+bet365x1.com, 1
+bet365x2.com, 1
+bet365x3.com, 1
+bet365x6.com, 1
+bet365x8.com, 1
+bet365x9.com, 1
 bet44401.com, 1
 bet44402.com, 1
 bet44403.com, 1
 bet44404.com, 1
 bet44405.com, 1
 bet44406.com, 1
 bet44407.com, 1
 bet44409.com, 1
@@ -12109,16 +12221,24 @@ bet5678g.com, 1
 bet599.com, 1
 bet66669999.com, 1
 bet666888.vip, 1
 bet721.com, 1
 bet819.com, 1
 bet820.com, 1
 bet909.com, 1
 bet9bet9.net, 1
+betaa0.com, 1
+betaa1.com, 1
+betaa2.com, 1
+betaa3.com, 1
+betaa5.com, 1
+betaa6.com, 1
+betaa8.com, 1
+betaa9.com, 1
 betaal.my, 1
 betaclouds.net, 1
 betaprofiles.com, 1
 betaworx.de, 1
 betaworx.eu, 1
 betb33.com, 1
 betb73.com, 1
 betcn-mart.com, 1
@@ -12177,16 +12297,18 @@ bettmer.de, 1
 bettolinokitchen.com, 1
 bettrlifeapp.com, 1
 betty-baloo.com, 1
 bettyweber.com, 1
 betulashop.ch, 1
 betwalker.com, 1
 betwin9.com, 1
 betwin9.net, 1
+betxx1.com, 1
+betxx2.com, 1
 beulen.email, 1
 beulen.link, 1
 beulen.pro, 1
 beuteugeu.com, 1
 bevallarta.com, 1
 bevedo.cz, 1
 bevedo.sk, 1
 beveiligingscamerawestland.nl, 1
@@ -12269,32 +12391,31 @@ bgfoto.info, 1
 bghost.xyz, 1
 bgkoleda.bg, 1
 bglsingles.de, 1
 bgmn.me, 1
 bgp.ee, 1
 bgp.space, 1
 bgr34.cz, 1
 bgs-game.com, 1
-bgtgames.com, 1
 bgtoyou.com, 1
 bguidinger.com, 1
 bh-oberland.de, 1
 bh.sb, 1
 bharath-g.in, 1
 bhat.vn, 1
 bhavansvidyamandir.tk, 1
 bhaweshkumar.com, 1
 bhglamour.com, 1
 bhi.consulting, 1
 bhodisoft.com, 1
 bhrenovations.com, 1
 bhserralheria.com.br, 1
 bhtelecom.ba, 1
-bhthome.com, 0
+bhthome.com, 1
 bhuntr.com, 1
 bhxch.moe, 1
 bhyn.ca, 1
 bi.search.yahoo.com, 0
 bi1gif.radio, 1
 bi5.me, 1
 bi8cku.club, 1
 bi8cku.tech, 1
@@ -12403,16 +12524,17 @@ bigsam.us, 1
 bigserp.com, 1
 bigshopper.com, 1
 bigshopper.nl, 1
 bigshort.org, 1
 bigsisterchannel.com, 1
 bigskylifestylerealestate.com, 1
 bigskymontanalandforsale.com, 1
 bigthunder.ca, 1
+bigudi.ee, 1
 bihub.io, 1
 biilo.com, 1
 bijancompany.com, 1
 bijouxcherie.com, 1
 bijuteriicualint.ro, 1
 bike-kurse.ch, 1
 bike-shack.com, 1
 bikebay.it, 1
@@ -12554,16 +12676,17 @@ bintangsyurga.com, 1
 bintelligence.info, 1
 bintelligence.nl, 1
 binti.com, 1
 bintooshoots.com, 1
 bio-disinfestazione.it, 1
 bio-feed.org, 1
 bio-place.com, 1
 bio24.si, 1
+bioamtw.com, 1
 bioastin.de, 1
 bioatelier.it, 1
 biobuttons.ch, 1
 biocheminee.com, 1
 biocrafting.net, 1
 biodiagnostiki.clinic, 1
 biodieseldata.com, 1
 biodots.at, 1
@@ -12587,16 +12710,17 @@ biohappiness.com, 1
 bioharmony.ca, 1
 biointelligence-explosion.com, 1
 bioknowme.com, 1
 biol.moscow, 1
 biol.spb.ru, 1
 biolack.cf, 1
 bioleev.sklep.pl, 1
 bioligo.ch, 0
+biolika.ua, 1
 biolindo.com, 0
 biolmarket.ru, 1
 biologis.ch, 1
 biology-colleges.com, 1
 biomag.it, 1
 biomathalliance.org, 1
 biomed-hospital.ch, 1
 biomed.ch, 1
@@ -12614,16 +12738,17 @@ biosalts.it, 1
 biosbits.org, 1
 biosearch.tk, 1
 bioshine.com.sg, 1
 bioshome.de, 1
 biosignalanalytics.com, 1
 biospeak.solutions, 1
 biosphere.cc, 1
 biospw.com, 1
+biotanquesbts.com, 1
 biotechware.com, 1
 biotera.cl, 1
 biotin.ch, 1
 biou.me, 1
 biovalue.eu, 1
 biowtage.gq, 1
 bip.gov.sa, 0
 bipyo.com, 1
@@ -12640,17 +12765,16 @@ birdymanbestreviews.com, 1
 birgerschwarz.de, 0
 birgit-rydlewski.de, 1
 birgitandmerlin.com, 1
 birkengarten.ch, 1
 birkenstab.de, 1
 birkenwasser.de, 1
 birminghamsunset.com, 1
 birthdaytip.com, 1
-birthmatters.us, 1
 birthright.host, 1
 birthright.website, 1
 birzan.org, 1
 bisa-sis.net, 1
 bischoff-mathey.family, 1
 biscoint.io, 1
 biscuit.town, 1
 biscuitcute.com.br, 1
@@ -12726,16 +12850,17 @@ bitenose.com, 1
 bitenose.net, 1
 bitenose.org, 1
 bitex.la, 1
 bitfasching.de, 0
 bitfehler.net, 1
 bitfinder.nl, 1
 bitfuse.net, 1
 bitgain-leverage.com, 1
+bitgild.com, 1
 bitgo.com, 1
 bitgrapes.com, 1
 bitguerrilla.com, 1
 bithausen.io, 1
 bither.net, 1
 bithir.co.uk, 1
 bititrain.com, 1
 bitjunkiehosting.com, 1
@@ -12769,16 +12894,17 @@ bitref.com, 1
 bitrefill.com, 1
 bitrush.nl, 1
 bits-hr.de, 1
 bitsafe.com.my, 1
 bitsalt.com, 1
 bitski.com, 1
 bitskins.co, 1
 bitskrieg.net, 1
+bitsler.ie, 1
 bitso.com, 1
 bitsoffreedom.nl, 1
 bitstage.uk, 1
 bitstep.ca, 1
 bitstorm.nl, 1
 bitstorm.org, 1
 bitsy.com, 1
 bitsync.nl, 1
@@ -12881,16 +13007,17 @@ blablacar.pl, 1
 blablacar.pt, 1
 blablacar.ro, 1
 blablacar.rs, 1
 blablacar.ru, 1
 black-cat-seo.com, 1
 black-gay-porn.biz, 1
 black-holes.org, 1
 black-khat.com, 1
+black-magic-love-spells.com, 1
 black-mail.nl, 1
 black-pool.net, 1
 black-raven.fr, 1
 black.dating, 1
 black.host, 1
 black1ce.com, 1
 blackandpony.de, 1
 blackapron.com.br, 1
@@ -12937,24 +13064,26 @@ blackpayment.ru, 1
 blackphantom.de, 1
 blackphoenix.de, 1
 blackpi.dedyn.io, 1
 blackroadphotography.de, 1
 blackroot.eu, 1
 blackscreen.me, 1
 blackscytheconsulting.com, 1
 blackseals.net, 1
+blacksheepsw.com, 1
 blackspark.tk, 1
 blackstrapsecurity.com, 1
 blackstump.xyz, 1
 blackteam.org, 1
 blackthrone.tk, 1
 blacktown.eu, 1
 blacktownbuildingsupplies.com.au, 1
 blacktubes.cf, 1
+blackyin.xyz, 1
 blackys-chamber.de, 0
 blackzebra.audio, 1
 blaindalefarms.com, 1
 blaise.io, 1
 blakecoin.org, 1
 blakekhan.com, 1
 blakezone.com, 1
 blamefran.net, 1
@@ -13127,16 +13256,17 @@ blondesguide.com, 1
 blood4pets.tk, 1
 bloodhunt.pl, 1
 bloodpop.tk, 1
 bloodsports.org, 1
 bloody.pw, 1
 bloom-avenue.com, 1
 bloom.sh, 1
 bloomscape.com, 1
+bloondl.com, 1
 blopezabogado.es, 1
 blrjmt.com, 1
 bltc.co.uk, 1
 bltc.com, 1
 bltc.net, 1
 bltc.org, 1
 bltc.org.uk, 1
 bltdirect.com, 1
@@ -13168,16 +13298,17 @@ bluegifts.ro, 1
 bluehelixmusic.com, 1
 bluehillhosting.com, 1
 blueimp.net, 1
 bluekrypt.com, 1
 blueliquiddesigns.com.au, 1
 bluemanhoop.com, 1
 bluemarmalade.co.uk, 1
 bluemeda.web.id, 1
+bluemoonrescue.org, 1
 bluemoonroleplaying.com, 1
 bluemosh.com, 1
 bluemtnrentalmanagement.ca, 1
 bluenote9.com, 1
 blueoakart.com, 1
 bluepearl.tk, 1
 blueperil.de, 1
 bluepostbox.de, 1
@@ -13278,16 +13409,17 @@ bobandducky.com, 1
 bobaobei.net, 1
 bobaobei.org, 1
 bobasy.pl, 1
 bobazar.com, 0
 bobbyhensley.com, 1
 bobcoffee.com.br, 1
 bobcopeland.com, 1
 bobep.ru, 1
+bobigames.com, 1
 bobiji.com, 0
 bobisec.cz, 1
 bobkidbob.com, 1
 bobkoetsier.nl, 1
 bobnbounce.ie, 1
 bobnbouncedublin.ie, 1
 bobobox.net, 1
 bobstenancycleaning.co.uk, 1
@@ -13395,16 +13527,18 @@ bonfi.net, 1
 bongbabyhouse.com, 1
 bongbabyhouse.vn, 1
 bongloy.com, 1
 bongminhtam.com, 1
 bongo.cat, 1
 bongocams.webcam, 1
 bongoo.fr, 1
 bonifacius.be, 1
+bonifatius-friedrich.de, 1
+bonifatiusfriedrich.de, 1
 bonita.com.br, 1
 bonito.pl, 1
 bonn.digital, 1
 bonnant-associes.ch, 0
 bonnant-partners.ch, 0
 bonnebouffe.fr, 1
 bonniecoloring.com, 1
 bonniedraw.com, 1
@@ -13471,16 +13605,17 @@ booox.pw, 1
 boop.gq, 1
 boop.pro, 1
 booquiz.com, 1
 boosinflatablegames.co.uk, 1
 boosman.nu, 1
 boosmanpoolservice.com, 1
 boost.fyi, 1
 boost.ink, 1
+boosteusedetalents.fr, 1
 boostgame.win, 1
 booter.pw, 1
 boothlabs.me, 1
 bootjp.me, 0
 bootsschule-weiss.de, 1
 boozinyan.com, 1
 bopera.co.uk, 1
 bopiweb.com, 1
@@ -13546,16 +13681,17 @@ bots.cat, 1
 botserver.de, 1
 botsiah.fail, 1
 botsindiscord.me, 1
 botstack.host, 1
 bottaerisposta.net, 1
 bottineauneighborhood.org, 1
 bottinquebec.com, 1
 bottke.berlin, 1
+bottle.li, 1
 bottledstories.de, 1
 bou.cloud, 1
 bou.ke, 1
 bouah.net, 1
 bouchard-mathieux.com, 1
 bouchonville-knifemaker.com, 1
 bouckaert-usedcars.be, 0
 boudah.pl, 1
@@ -13763,16 +13899,17 @@ bradypatterson.com, 1
 braemer-it-consulting.de, 1
 braeunlich-gmbh.com, 1
 bragasoft.com.br, 0
 bragaweb.com.br, 1
 brage.info, 1
 brahmins.com, 1
 braiampeguero.xyz, 1
 brailsford.xyz, 1
+brain-club.info, 1
 brain-e.co, 1
 brain-force.ch, 1
 brainball.fr, 0
 brainboxai.com, 1
 braineet.com, 1
 brainhub.nl, 1
 brainobeat.com, 1
 brainserve.ch, 0
@@ -13956,16 +14093,17 @@ briantkatch.com, 1
 brianvalente.tk, 1
 brianwalther.com, 1
 brianwesaala.com, 0
 brianwilson.tk, 1
 briarproject.org, 1
 brickadia.com, 1
 brickftp.com, 1
 brickheroes.com, 0
+bricksmateriales.com.ar, 1
 brickstreettrio.com, 1
 brickvortex.com, 0
 brickweb.co.uk, 1
 brickwerks.io, 1
 bricolajeux.ch, 0
 brid.gy, 0
 bridalfabrics.co.uk, 1
 bridalfabrics.com, 1
@@ -14056,23 +14194,25 @@ broadleft.org, 1
 broadsheet.com.au, 1
 broadwayvets.co.uk, 1
 broadyexpress.com.au, 1
 brockmeyer.net, 1
 brockmeyer.org, 1
 brodowski.cc, 1
 brody.digital, 1
 brody.ninja, 1
+broe.ie, 1
 broerict.nl, 1
 broersma.com, 1
 broerweb.nl, 1
 broeselei.at, 1
 brojagraphics.de, 1
 brokenhands.io, 1
 brokernet.ie, 0
+brokernotes.co, 1
 brokervalues.com, 1
 brokolit.com, 1
 brols.eu, 1
 bromo.cf, 1
 brompton-cocktail.com, 1
 bronevichok.ru, 1
 bronwynlewis.com, 1
 bronzew.com, 1
@@ -14090,16 +14230,17 @@ brossmanit.com, 1
 brouillard.ch, 0
 brouskat.be, 1
 brouwerijdeblauweijsbeer.nl, 1
 brownesgas.com, 1
 brownfieldstsc.org, 1
 brownforces.desi, 1
 brownforces.org, 1
 brownihc.com, 1
+brownsgroup.com, 1
 browntowncountryclub.com, 1
 brownwolfstudio.com, 1
 browsbybecca.ca, 1
 browse-tutorials.com, 1
 browsedns.net, 1
 browsemycity.com, 1
 browserleaks.com, 1
 brrd.io, 1
@@ -14187,17 +14328,16 @@ bslim-e-boutique.com, 1
 bsmn.ga, 1
 bsmomo-api.com, 1
 bso-buitengewoon.nl, 1
 bsociabl.com, 1
 bsp-southpool.com, 1
 bsquared.org, 1
 bssolvfagen-pre-storeswa-wap.azurewebsites.net, 1
 bsstainless.com, 1
-bstoked.net, 1
 bsuess.de, 1
 bsuru.xyz, 1
 bsw-solution.de, 1
 bszoft.hu, 1
 bt123.xyz, 1
 bt3655.com, 1
 bt3657.com, 1
 bt3658.com, 1
@@ -14386,16 +14526,17 @@ buch-angucken.de, 1
 buchhaltung-muehelos.de, 1
 buchwegweiser.com, 1
 buck-hydro.de, 1
 buckelewrealtygroup.com, 1
 bucketlist.co.ke, 1
 buckscountyobgyn.com, 1
 buckypaper.com, 1
 budaev-shop.ru, 1
+buddhismedia.com, 1
 buddhismus.net, 1
 buddhistische-weisheiten.org, 1
 buddie5.com, 1
 buddlycrafts.com, 1
 buddy-acceptance-authentication-api.azurewebsites.net, 1
 buddy-acceptance-authentication-frontend.azurewebsites.net, 1
 buddy-acceptance-backoffice-frontend.azurewebsites.net, 1
 buddy-acceptance-banking-api.azurewebsites.net, 1
@@ -14462,16 +14603,17 @@ builditsolutions.net, 1
 buildkite.com, 1
 buildmorebuslanes.com, 1
 buildplease.com, 1
 buileo.com, 1
 builtory.my, 1
 builtvisible.com, 1
 builtwith.com, 1
 buissonchardin.fr, 1
+buitenposter.nl, 1
 buka.jp, 1
 bukiskola.hu, 1
 bukkenfan.jp, 1
 bukpcszerviz.hu, 1
 bul3seas.eu, 1
 bulario.com, 1
 bulario.net, 1
 bularmas.com, 1
@@ -14601,16 +14743,17 @@ bustadice.com, 1
 bustany.org, 1
 buster.me.uk, 1
 busuttil.org.uk, 1
 buswiki.ml, 1
 busybee360.com, 1
 busyon.cloud, 1
 butarque.es, 1
 buthowdoyoubuygroceries.com, 1
+butikvip.ru, 1
 butlercountyhistory.org, 1
 butlerfm.dk, 1
 butt.repair, 1
 butter.horse, 1
 butteramotors.com, 1
 butterflycare.co, 1
 buttermilk.cf, 1
 buttgun-tattoo.de, 1
@@ -14705,18 +14848,37 @@ bwin18.cc, 1
 bwin2288.com, 1
 bwin369.cc, 1
 bwin58.cc, 1
 bwl-earth.club, 1
 bws16.de, 1
 bwserhoscaletrainaz.com, 1
 bx-n.de, 1
 bx49.cc, 1
+bxdj2.com, 1
+bxdj3.com, 1
+bxdj4.com, 1
+bxdj5.com, 1
+bxdj6.com, 1
+bxdj666.com, 1
+bxdj7.com, 1
+bxdj8.com, 1
+bxdj88.com, 1
+bxdj888.com, 1
+bxdj9.com, 1
 bxegypt.com, 1
 bxp40.at, 1
+bxzx1.com, 1
+bxzx2.com, 1
+bxzx3.com, 1
+bxzx4.com, 1
+bxzx5.com, 1
+bxzx6.com, 1
+bxzx7.com, 1
+bxzx9.com, 1
 by-robyn.nl, 1
 by1899.com, 1
 byange.pro, 1
 byatte.com, 1
 byaustere.com, 1
 bydisk.com, 0
 bye-bye.us, 1
 byeskille.no, 1
@@ -14779,17 +14941,16 @@ bytesund.biz, 1
 bytesunlimited.com, 0
 byteswave.cl, 1
 bytesystems.com, 1
 byteterrace.com, 1
 bytheglass.gr, 1
 bytheswordinc.com, 1
 bythisverse.com, 1
 bytrain.net, 1
-bytynazizkove.cz, 1
 byvshie.com, 1
 bywin9.com, 1
 byxong.com, 1
 bzh.tf, 1
 bzhub.bid, 1
 bziaks.xyz, 1
 bzsparks.com, 0
 bztech.com.br, 1
@@ -15079,16 +15240,17 @@ camp-pleinsoleil.ch, 1
 camp.co.uk, 1
 campaign-ad.com, 1
 campaign.gov.uk, 1
 campaignhelpdesk.org, 1
 campaignlake.com, 1
 campaignwiki.org, 1
 campamentos.info, 1
 campbellapplianceheatingandair.com, 1
+campbellkennedy.co.uk, 1
 campcambodia.org, 1
 campcanada.org, 1
 campeonatoalemao.com.br, 1
 camperdays.de, 1
 camperlist.com, 1
 campermanaustralia.com, 1
 campertrailerfinance.com.au, 1
 camperverzekerd.nl, 1
@@ -15331,16 +15493,17 @@ careeapp.com, 1
 career.support, 1
 careerdirectionsltd.com, 1
 careeroptionscoach.com, 1
 careerpower.co.in, 1
 careers.plus, 1
 careertransformed.com, 1
 carefour.nl, 1
 carefulcolor.com, 1
+caregiverva.org, 1
 caremad.io, 1
 carepan.ga, 1
 carepassport.com, 1
 carespot.biz, 1
 carespot.co, 1
 carespot.mobi, 1
 carespot.net, 1
 carespot.org, 1
@@ -15426,16 +15589,17 @@ carol-lambert.com, 1
 carolcappelletti.com, 1
 caroli.biz, 1
 caroli.com, 1
 caroli.info, 1
 caroli.name, 1
 caroli.net, 1
 carolicious.tk, 1
 carolina.cz, 1
+carolinaallergyandasthma.com, 1
 carolinaclimatecontrolsc.com, 1
 carolinaoliveira.tk, 1
 carolinapainandspine.com, 1
 carolineball.com, 1
 carolineeball.com, 1
 carolinehanania.com, 1
 carolynjoyce.com.au, 1
 carontetourist.hr, 1
@@ -15495,16 +15659,17 @@ casa-due.com, 1
 casa-laguna.net, 1
 casa-lunch-break.de, 1
 casa-lunchbreak.de, 1
 casa-mea-inteligenta.ro, 1
 casaamor.ph, 1
 casaasia.cat, 1
 casaasia.es, 1
 casaasia.eu, 1
+casabella.com.tw, 1
 casabouquet.com, 1
 casacazoleiro.com, 1
 casacochecurro.com, 1
 casadasportasejanelas.com, 1
 casadopulpo.com, 1
 casaessencias.com.br, 1
 casalborgo.it, 1
 casalindamex.com, 1
@@ -15618,16 +15783,17 @@ catalogobiblioteca.net, 1
 catalogosvirtualesonline.com, 1
 catalyconv.com, 1
 catalyst-ecommerce.com, 1
 catalystapp.co, 1
 catbold.space, 1
 catbox.moe, 1
 catbull.com, 1
 catburton.co.uk, 1
+catchcrabs.com, 1
 catchers.cc, 1
 catchersgear.com, 1
 catchhimandkeephim.com, 1
 catchief.com, 1
 catchkol.com, 1
 catcontent.cloud, 1
 catcoxx.de, 1
 catenacondos.com, 1
@@ -15765,17 +15931,16 @@ cdasenegal.com, 1
 cdasiaonline.com, 0
 cdbf.ch, 0
 cdbtech.com, 1
 cdburnerxp.se, 1
 cdc.cx, 1
 cdcpartners.gov, 1
 cdda.ch, 0
 cdeck.net, 1
-cdemi.io, 1
 cdepot.eu, 1
 cdf.wiki, 1
 cdgfrm.com, 1
 cdigitale.com, 1
 cdireland.com, 1
 cdkeykopen.com, 1
 cdkeyprices.com, 1
 cdkeyworld.de, 1
@@ -15805,22 +15970,24 @@ cebz.org, 1
 cecame.ch, 1
 cecilga.gov, 1
 ceciliacolombara.com, 1
 cecilwalker.com.au, 0
 ced-services.nl, 1
 cedarcitydining.com, 1
 cedarslodge.com, 1
 cedehb.be, 1
+ceditedv.com.pe, 1
 cedricbonhomme.org, 1
 cedriccassimo.ch, 0
 cedriccassimo.com, 0
 cee.io, 1
 ceebee.com, 1
 ceefaastresources.com, 1
+cefinco.org, 1
 cegfw.com, 1
 cegss.org.gt, 1
 ceiba.com.co, 1
 ceilingpac.org, 1
 ceiphr.com, 1
 cejhon.cz, 0
 celadas.tk, 1
 celcelulares.com, 1
@@ -15831,16 +15998,17 @@ celebmasta.com, 1
 celebphotos.blog, 1
 celebrasianconference.com, 1
 celebrityhealthcritic.com, 1
 celebrityscope.net, 1
 celebritytopnews.tk, 1
 celec.gob.ec, 0
 celectro-pro.com, 1
 celestebonito.pt, 1
+celestialisms.com, 1
 celiac.com, 1
 celiendev.ch, 0
 celine-patisserie.fr, 1
 cell-lookup.com, 1
 cellartracker.com, 1
 cellebrite.com, 1
 celliberate.co.uk, 1
 celltek-server.de, 0
@@ -15877,16 +16045,17 @@ centos.pub, 1
 centos.tips, 1
 central4.me, 1
 centralbank.ae, 1
 centralconvergence.com, 1
 centralebigmat.eu, 1
 centralegedimat.eu, 1
 centralfor.me, 1
 centralheating.hu, 1
+centraljerseyrcca.com, 1
 centrallead.net, 1
 centralmarket.com, 0
 centralmissourifoundationrepair.com, 1
 centralpaellera.com, 1
 centralpoint.be, 0
 centralpoint.nl, 0
 centralstatecu.org, 1
 centralvoice.org, 1
@@ -15976,16 +16145,17 @@ cesium.ml, 1
 ceskaexpedice.org, 1
 ceskepivnesety.sk, 1
 ceskepivnisety.cz, 1
 ceso-saco.com, 1
 cesobaly.cz, 1
 cestunmetier.ch, 1
 cetamol.com, 1
 ceu.edu, 0
+ceverett.io, 1
 cevin.at, 1
 cevo.com.hr, 1
 cezdent.com, 1
 cf-ide.de, 1
 cf-tm.net, 1
 cfan.space, 1
 cfc-swc.gc.ca, 1
 cfda.gov, 1
@@ -16020,20 +16190,20 @@ cglib.xyz, 1
 cgminc.net, 1
 cgnparts.com, 1
 cgp.moe, 1
 cgpe.com, 0
 cgsmart.com, 1
 cgtx.us, 1
 cgurtner.ch, 1
 ch-laborit.fr, 1
-ch-sc.de, 1
 ch.bzh, 1
 ch.search.yahoo.com, 0
 ch47f.com, 1
+chabad360.me, 1
 chabaudparfum.com, 1
 chabert-provence.fr, 1
 chabik.com, 1
 chaboisseau.net, 1
 chad.ch, 1
 chadlenz.ca, 1
 chadpugsley.com, 1
 chadstoneapartments.com.au, 1
@@ -16124,16 +16294,17 @@ charitylog.co.uk, 1
 charl.eu, 1
 charlenevondell.com, 1
 charlenew.xyz, 1
 charles-darwin.com, 1
 charlesbwise.com, 1
 charlespitonltd.com, 1
 charlesrogers.co.uk, 1
 charlestonfacialplastic.com, 1
+charlie.im, 1
 charlie4change.com, 1
 charliedillon.com, 1
 charliegarrod.com, 1
 charliehr.com, 1
 charlierogers.co.uk, 1
 charlierogers.com, 1
 charlotte-touati.ch, 1
 charlottecountyva.gov, 1
@@ -16498,16 +16669,17 @@ chopperdesign.com, 1
 chopperforums.com, 1
 chordify.net, 1
 chorkley.co.uk, 1
 chorkley.com, 1
 chorkley.me, 1
 chorkley.uk, 1
 chorpinkpoemps.de, 1
 chosenplaintext.org, 1
+choservices.com, 1
 chourishi-shigoto.com, 1
 chovancova.sk, 1
 choyri.com, 1
 chpwmedicare.org, 1
 chr0me.sh, 1
 chr1sbin.works, 1
 chris-edwards.net, 1
 chris-siedler.at, 1
@@ -16695,18 +16867,16 @@ cigar-cartel.com, 1
 cigarterminal.com, 0
 cigoteket.se, 1
 cihar.com, 1
 ciicutini.ro, 1
 ciiex.co, 1
 cikeblog.com, 1
 cilacapnews.ml, 1
 ciliberto.org, 1
-ciliwang.live, 1
-ciliwang.org, 1
 cilloc.be, 1
 cima-idf.fr, 1
 cimbalino.org, 1
 cimballa.com, 1
 cimfax.com, 1
 cinafilm.com, 1
 cinay.pw, 1
 cindey.io, 1
@@ -16760,16 +16930,17 @@ circu.ml, 1
 circuitcityelectricaladelaide.com.au, 1
 circulatedigital.com, 1
 circule.cc, 1
 cirfi.com, 1
 ciri.com.co, 1
 cirrus0.de, 1
 cirruslab.ch, 1
 cirujanooral.com, 1
+cirvapp.com, 1
 cisa.gov, 1
 ciscodude.net, 0
 cisoaid.com, 1
 cisofy.com, 1
 cispeo.org, 1
 ciss.ltd, 1
 cissa.org.au, 1
 cissofitness.com, 1
@@ -16797,49 +16968,47 @@ citsc.de, 1
 cittadesign.com, 0
 city-adm.lviv.ua, 1
 city-forums.ml, 1
 city-walks.info, 1
 citybeat.de, 1
 citycreek.studio, 1
 citydance.ee, 1
 cityfloorsupply.com, 1
+citylift.com.ua, 1
 citylights.eu, 1
 citymoobel.ee, 1
 cityofarcolatx.gov, 1
 cityofeastpointemi.gov, 1
 cityofmadera.gov, 1
 cityoftitans.com, 1
 cityoftitansmmo.com, 1
 cityofwadley-ga.gov, 1
 cityofwoodward-ok.gov, 1
 citypro.tk, 1
+cityradiusmaps.com, 1
 citysportapp.com, 0
 citywalkr.com, 1
 citywidealarms.com, 1
 citywisdom.tk, 1
 cityworksonline.com, 1
 ciubotaru.tk, 1
 ciuciucadou.ro, 1
 ciudadanosbo.com, 1
-ciurcasdan.eu, 1
 civey.com, 1
 civicamente.cl, 1
 civicforum.pl, 1
 civics.us, 1
 civicunicorn.com, 1
 civicunicorn.us, 1
 civilbikes.com, 1
 civilg20.org, 1
 civillines.nl, 1
 civiltoday.com, 1
 civmob.com, 1
-cixiaoya.space, 1
-cixiaoya1.xyz, 1
-cixiaoya2.xyz, 1
 cj-espace-vert.fr, 1
 cj-jackson.com, 1
 cjbeckert.com, 0
 cjdby.net, 1
 cjdpenterprises.com, 1
 cjdpenterprises.com.au, 1
 cjean.fr, 1
 cjenni.ch, 1
@@ -16859,16 +17028,17 @@ ckennelley.com, 1
 ckennelly.com, 1
 ckennely.com, 1
 ckleemann.de, 1
 cklie.de, 1
 ckliemann.com, 1
 ckliemann.net, 1
 ckna.ca, 1
 ckostecki.de, 1
+ckp.ie, 1
 ckp.io, 1
 ckpl.us, 1
 cktennis.com, 1
 ckventura.sk, 1
 cl.search.yahoo.com, 0
 cl0ud.space, 1
 clacetandil.com.ar, 1
 clad.cf, 1
@@ -16916,16 +17086,17 @@ classroom.google.com, 1
 classroomconductor.com, 1
 classroomcountdown.co.nz, 1
 classteaching.com.au, 1
 claster.it, 1
 claude.me, 1
 claude.photo, 1
 claude.tech, 1
 claudeleveille.com, 1
+claudia-makeup.com, 1
 claudia-urio.com, 0
 claudiney.eti.br, 1
 claudiney.id, 1
 claudiney.info, 1
 claudiolemos.com, 1
 claumarservice.com, 1
 claus-bahr.de, 1
 clauseriksen.net, 1
@@ -16954,23 +17125,26 @@ cleango.pl, 1
 cleanhouse2000.us, 1
 cleaningservicejulai.com, 1
 cleaningsolutionn.com, 1
 cleaningsquad.ca, 0
 cleanplanet.co.jp, 1
 cleansewellness.com, 1
 clearance365.co.uk, 1
 clearblueday.co.uk, 1
+clearbooks.co.uk, 1
 clearbookscdn.uk, 1
 clearbreezesecuritydoors.com.au, 1
 clearchaos.net, 1
 clearchatsandbox.com, 1
 clearer.cloud, 1
 clearip.com, 1
+clearlinux.org, 1
 clearpay.co.uk, 1
+clearsense.com, 1
 clearspringhealthcare.com, 1
 clearspringinsurance.com, 1
 clearview-creative.com, 1
 clearviewwealthprojector.com.au, 1
 clearvoice.com, 1
 clearvoice1.com, 1
 clearwaterbidets.com, 0
 cleary.xyz, 1
@@ -16981,30 +17155,30 @@ clemenscompanies.com, 1
 clement-beaufils.fr, 1
 clementfevrier.fr, 1
 clemovementlaw.com, 1
 cles-asso.fr, 1
 cles.jp, 1
 cleveille.com, 1
 clevelandokla.com, 1
 clevermatch.com, 1
+cleveroad.com, 1
 clevertarget.ru, 1
 cleververmarkten.com, 1
 cleververmarkten.de, 1
 clevisto.com, 1
 clevvi.com.au, 1
 cleysense.com, 1
 clic-et-site.com, 1
 clic-music.com, 1
 clica.net, 1
 clicandfioul.com, 1
 clicheshishalounge.co.uk, 1
 click-licht.de, 1
 click2order.co.uk, 1
-click4web.com, 1
 clickbasin.co.uk, 1
 clickclickphish.com, 1
 clickclock.cc, 1
 clickenergy.com.au, 1
 clickingmad.com, 1
 clickphish.com, 1
 clien.net, 1
 client.coach, 0
@@ -17148,16 +17322,17 @@ cloudtskr.com, 1
 cloudup.com, 1
 cloudwallce.com, 1
 cloudwarez.xyz, 1
 cloudwellmarketing.com, 1
 cloudwise.nl, 1
 clouz.de, 1
 cloveros.ga, 1
 clovertwo.com, 1
+clownday.co.uk, 1
 clownindeklas.nl, 1
 clownish.co.il, 1
 cloxy.com, 1
 cloze.com, 1
 clr3.com, 1
 clsfoundationrepairandwaterproofing.com, 1
 clsimage.com, 1
 clsoft.ch, 1
@@ -17247,17 +17422,16 @@ cna5.org, 1
 cnam-idf.fr, 1
 cnaprograms.online, 1
 cnatraining.network, 1
 cnbs.ch, 1
 cnc-lehrgang.de, 1
 cncado.net, 1
 cncbazar365.com, 1
 cncfraises.fr, 1
-cncn.link, 1
 cncrans.ch, 0
 cncs.gov.pt, 1
 cnet-hosting.com, 1
 cnetw.xyz, 1
 cni-certing.it, 1
 cnitdog.com, 0
 cnlic.com, 1
 cnnet.in, 1
@@ -17276,16 +17450,22 @@ coachbakery.com, 1
 coachezmoi.ch, 0
 coachfederation.ro, 1
 coaching-harmonique.fr, 1
 coaching-impulse.ch, 0
 coaching-park.fr, 1
 coachsystem.ru, 1
 coalitionministries.org, 1
 coalpointcottage.com, 1
+coastalurgentcarebatonrouge.com, 1
+coastalurgentcarebossier.com, 1
+coastalurgentcaregonzales.com, 1
+coastalurgentcarehouma.com, 1
+coastalurgentcareruston.com, 1
+coastalurgentcarethibodaux.com, 1
 coastline.net.au, 1
 coastmedicalservice.com, 1
 coathangastrangla.com, 1
 coathangastrangler.com, 1
 coathangerstrangla.com, 1
 coathangerstrangler.com, 1
 coatl-industries.com, 1
 coatsandcocktails.org, 1
@@ -17406,17 +17586,16 @@ codeyellow.nl, 1
 codific.com, 1
 codigodelbonusbet365.com, 1
 codimaker.com, 1
 coding-minds.com, 1
 coding.lv, 1
 codingblog.org, 1
 codingforspeed.com, 1
 codinginfinity.me, 1
-codinglogs.com, 1
 codingrobots.com, 1
 codista.com, 1
 cododigital.co.uk, 1
 codxg.org, 1
 codyevanscomputer.com, 1
 codymoniz.com, 1
 codyqx4.com, 1
 coecho.net, 1
@@ -17606,16 +17785,17 @@ com-in.de, 1
 com-news.io, 1
 com.cc, 1
 comalia.com, 1
 comandofilmes.club, 1
 comarkinstruments.net, 1
 combatircelulitis.com, 1
 combattrecellulite.com, 1
 combigo.com, 1
+combineconquer.com, 1
 combron.be, 1
 combron.co.uk, 1
 combron.com, 1
 combron.nl, 1
 comchezmeme.com, 1
 comcol.nl, 1
 comcov.com, 1
 comdotgame.com, 1
@@ -17721,16 +17901,17 @@ comparexcloudcenter.com, 1
 compartirtrenmesaave.com, 1
 compassbest.com, 1
 compassdirectportal.com, 1
 compassfinance.com, 1
 compassintladv.com, 1
 compassionaterelease.com, 1
 compassleaf.com, 1
 compasslos.com, 1
+compdermcenter.com, 1
 compeat.com, 1
 competencyassessment.ca, 1
 competitor.com, 1
 compeuphoria.com, 1
 comphare.nl, 1
 compibus.fr, 1
 compilenix.org, 1
 compitak.com, 1
@@ -17777,30 +17958,32 @@ compunetwor.com, 1
 compuplast.cz, 1
 compusolve.nl, 1
 computec.ch, 1
 computehealth.com, 1
 computer-acquisti.com, 1
 computer-menschen.de, 1
 computer-science-schools.com, 1
 computerassistance.co.uk, 1
+computerbas.nl, 1
 computerbase.de, 1
 computercamaccgi.com, 1
 computercraft.net, 1
 computeremergency.com.au, 0
 computerguardians.com.au, 0
 computerhilfe-feucht.de, 1
 computerinfobits.com, 1
 computernetwerkwestland.nl, 1
 computersystems.guru, 0
 computingsociety.co.uk, 1
 computop.com, 1
 computron.ga, 1
 comtily.com, 1
 comumlab.org, 1
+comunal.co, 1
 comunidadmontepinar.es, 1
 comvos.de, 1
 comw.cc, 1
 con-con.nl, 1
 conalcorp.com, 1
 conalpedis.tk, 1
 conatus.ai, 1
 concept-web.ch, 0
@@ -17852,16 +18035,17 @@ confiwall.de, 1
 conflicting.tk, 1
 conforama.es, 1
 conforama.pt, 1
 conformal.com, 0
 conformist.jp, 1
 confrerie-rp.fr, 1
 conftree.com, 1
 confucio.cl, 1
+confusion-band.ch, 1
 confygo.com, 1
 congafasdesol.com, 1
 congineer.com, 1
 congobunkering.com, 0
 congresscoverage.com, 1
 conju.cat, 1
 conjugacao.com.br, 1
 conkret.ch, 1
@@ -17994,35 +18178,33 @@ contraspin.co.nz, 1
 contratatupoliza.com, 1
 contratti.it, 1
 contributor.google.com, 1
 controlambientalbogota.com, 1
 controlbooth.com, 1
 controle.net, 1
 controleer-maar-een-ander.nl, 1
 controllertech.com, 1
-controltickets.com.br, 1
 controlvoltage.cc, 1
 contunda.de, 1
 conv2pdf.com, 1
 convergence.fi, 1
 convergencela.com, 1
 convergnce.com, 1
 conversationsri.ga, 1
 conversiepartners.nl, 1
 conversiones.com, 1
 conversionsciences.com, 1
 convert.im, 1
 convert.zone, 1
 converter.ml, 1
-converticacommerce.com, 0
 convertimg.com, 1
 convexset.org, 1
 convocatoriafundacionpepsicomexico.org, 0
-conxcon.de, 0
+conxcon.de, 1
 cookcountyclerkil.gov, 1
 cooker.fr, 1
 cookescastles.co.uk, 1
 cookicons.co, 1
 cookie4.com, 1
 cookieandkate.com, 1
 cookiecrook.com, 1
 cookiee.net, 0
@@ -18136,16 +18318,17 @@ cornergarage.coop, 1
 cornerstone.network, 1
 cornerstonecmc.org, 1
 cornfestgiethoorn.nl, 1
 corniche.com, 1
 corningcu.org, 1
 cornitek.tk, 1
 cornmachine.com, 1
 cornodo.com, 1
+cornsoyexpo.org, 1
 corona-academy.com, 1
 corona-renderer.cloud, 1
 corona-renderer.com, 1
 coronersconnect.co.uk, 1
 coropiacere.org, 1
 corp.goog, 1
 corpfin.net, 1
 corpio.nl, 1
@@ -18179,16 +18362,17 @@ corruptos.tk, 1
 corsa-b.uk, 1
 corscanplus.com, 1
 corsectra.com, 1
 corsicalaw.com, 1
 corsihaccpsicurezzalavoro.it, 1
 corsisicurezza.it, 1
 corso-antincendio.org, 1
 corsomassaggi.it, 1
+corsorspp.roma.it, 1
 cortealcastello.it, 1
 cortexitrecruitment.com, 1
 cortexx.nl, 1
 cortis-consulting.ch, 1
 corvax.kiev.ua, 1
 corvee.com, 1
 corvus.eu.org, 1
 coryadum.com, 1
@@ -18320,16 +18504,17 @@ cpe-registry.com, 1
 cpe-registry.net, 1
 cpe-registry.org, 1
 cpegypt.tk, 1
 cperegistry.com, 1
 cperegistry.net, 1
 cperegistry.org, 1
 cpgarmor.com, 1
 cphpvb.net, 1
+cpilot.cz, 1
 cplala.com, 1
 cpls.me, 1
 cplus.me, 1
 cplusplus.se, 1
 cppan.org, 1
 cppaste.org, 1
 cppressinc.com, 1
 cpqcol.gov.co, 1
@@ -18360,24 +18545,26 @@ crackorsquad.in, 1
 crackpfer.de, 1
 crackslut.eu, 1
 cracksnet.tk, 1
 crackstation.net, 1
 cradlepointecm.com, 1
 craft-beer.life, 1
 craft-me-in.com, 1
 craftandbuild.de, 1
+craftcms.com, 1
 crafted.cat, 1
 crafters.co.jp, 1
 craftination.net, 1
 craftinghand.com, 1
 craftinginredlipstick.com, 1
 craftist.de, 1
 craftmachinec.com, 1
 craftngo.hu, 1
+craftsandsweets.com, 1
 craftshiponline.tk, 1
 craftsmandruggets.com, 1
 craftsmany.net, 1
 crafttalk.tk, 1
 craftwmcp.xyz, 1
 craftydev.design, 1
 craftyguy.net, 1
 craftyphotons.net, 1
@@ -18412,16 +18599,17 @@ crazy-bulks.com, 1
 crazy-cat.net, 1
 crazy-coders.com, 1
 crazybulk.co.uk, 1
 crazybulk.com, 1
 crazybulk.de, 1
 crazybulk.fr, 1
 crazycastles.ie, 1
 crazycraftland.net, 1
+crazycube.fr, 1
 crazydomains.ae, 1
 crazydomains.co.nz, 1
 crazydomains.co.uk, 1
 crazydomains.com.au, 1
 crazydomains.in, 1
 crazygifts.cf, 1
 crazyhost.ga, 1
 crazymarvin.com, 1
@@ -18483,28 +18671,28 @@ creativeliquid.com, 1
 creativesectors.tk, 1
 creativesprite.com, 1
 creativesurvey.com, 1
 creativeweb.biz, 1
 creativewolf.net, 1
 creativosonline.org, 1
 creatixx-network.de, 0
 creatleencoaching.com, 1
-creato.top, 1
 creators-design.com, 1
 creators.direct, 1
 creatorswave.com, 1
 crebita.de, 1
 crecips.com, 1
 crecman.fr, 1
 credential.eu, 1
 credex.bg, 1
 credigo.se, 1
 credit-default-swaps.tk, 1
 creditif.tk, 1
+creditmonkey.pro, 1
 credito360.pt, 1
 creditor.tk, 1
 creditorapido.pt, 1
 creditos-rapidos.com, 1
 creditozen.es, 1
 creditozen.mx, 1
 creditproautos.com, 0
 creditscoretalk.com, 1
@@ -18700,16 +18888,17 @@ cryptoparty.tv, 1
 cryptopartynewcastle.org, 1
 cryptopartyutah.org, 1
 cryptopaste.org, 1
 cryptophobia.nl, 1
 cryptopro.shop, 1
 cryptorival.com, 1
 cryptoseb.pw, 1
 cryptoshot.pw, 1
+cryptotrendclub.com, 1
 cryptoya.io, 1
 cryptract.co, 1
 crys.cloud, 1
 crys.email, 1
 crys.hu, 1
 crys.me, 1
 crys.ovh, 1
 crys.pw, 1
@@ -18812,16 +19001,17 @@ ctl.email, 1
 ctliu.com, 1
 ctmrepository.com, 1
 ctnguyen.de, 1
 ctnguyen.net, 1
 ctns.de, 0
 ctoforhire.com.au, 1
 ctoin.tw, 1
 ctomp.io, 0
+ctor.ch, 1
 ctoresms.com, 1
 ctpe.net, 1
 ctrl.blog, 1
 ctrld.me, 1
 cttso.gov, 1
 cu247secure.ie, 1
 cuanticasocialmedia.com, 1
 cuatroymedia.com, 1
@@ -18861,16 +19051,17 @@ cuddlingyaks.com, 1
 cudoo.de, 1
 cuegee.com, 1
 cuentamecomopaso.es, 1
 cuentasmutualamr.org.ar, 1
 cuetoems.com, 1
 cuibonobo.com, 1
 cuio.net, 1
 cuir-lipari.fr, 1
+cuitandokter.com, 1
 culan.dk, 1
 cultiv.nl, 1
 cultivo.bio, 1
 cultofd50.org, 1
 cultofperf.org.uk, 1
 cultura10.com, 1
 culturabrasilia.tk, 1
 culturalparadiso.tk, 1
@@ -18890,16 +19081,17 @@ cumplegenial.com, 1
 cumseface.eu, 1
 cumshots-video.ru, 1
 cumtd.com, 1
 cunha.be, 1
 cuntflaps.me, 1
 cuoc.org.uk, 1
 cuongthach.com, 0
 cup.al, 1
+cupcake.pt, 1
 cupcao.gov, 1
 cupclub.com, 1
 cupoane-reducere.net, 1
 cupom.net, 1
 cur.by, 1
 curacao-firma.com, 1
 curacao-license.com, 1
 curacaodiveguide.com, 1
@@ -18910,16 +19102,17 @@ curbside.com, 1
 cureatr.com, 1
 curia.fi, 1
 curieux.digital, 0
 curio-shiki.com, 1
 curiosity-driven.org, 1
 curiouspeddler.com, 1
 curlify.com, 1
 curlybracket.co.uk, 1
+curontwerptoolgroenbeton.nl, 1
 currency-strength.com, 1
 current-usa.com, 1
 currentlystreaming.com, 1
 currentlyusa.com, 1
 currynissanmaparts.com, 1
 cursos-trabajadores.net, 1
 cursos.com, 1
 cursosdeinglesmexico.com, 1
@@ -19000,16 +19193,17 @@ cvmu.jp, 1
 cvo-group.com, 1
 cvr.dk, 1
 cvtemplatemaster.com, 1
 cvursache.com, 0
 cvutdecin.cz, 1
 cvv.cn, 1
 cw-bw.de, 0
 cw.center, 1
+cw.do, 1
 cwaclub.tk, 1
 cwagner.me, 1
 cwbrtrust.ca, 1
 cwc.gov, 1
 cwgaming.co.uk, 1
 cwilson.ga, 1
 cwmart.in, 1
 cwningen.cymru, 0
@@ -19080,16 +19274,17 @@ cyberpcforum.com, 1
 cyberphaze.com, 1
 cyberphoenix.tk, 1
 cyberpubonline.com, 1
 cyberregister.nl, 1
 cyberregister.org, 1
 cybersafesolutions.com, 1
 cybersantri.com, 1
 cyberscan.io, 1
+cybersecurite-info.fr, 1
 cybersecurity.gr, 1
 cybersecurity.run, 1
 cybersecuritychallenge.be, 0
 cybersecurityketen.nl, 1
 cyberseguranca.com.br, 1
 cyberserver.org, 1
 cybersins.com, 1
 cybersmart.co.uk, 1
@@ -19487,16 +19682,17 @@ dailyemailinboxing.com, 1
 dailyenglishchallenge.com, 1
 dailyhealthguard.com, 1
 dailykos.com, 1
 dailynewsclubs.ga, 1
 dailypop.ru, 1
 dailyrenewblog.com, 1
 dailyrover.com, 1
 dailyroverr.com, 1
+dailysuperheroes.com, 1
 dailytopix.com, 1
 dailyxenang.com, 1
 daimafengzi.com, 1
 dairikab.go.id, 1
 dairyshrine.org, 1
 daisakuikeda.org, 1
 daisidaniels.co.uk, 1
 daisuki.pw, 1
@@ -19526,16 +19722,17 @@ dale-west.com, 1
 dalek.co.nz, 1
 dalepresencia.com, 0
 dalfsennet.nl, 1
 dalianbbq.com, 1
 dalingk.com, 1
 dallas.gov, 1
 dallaslu.com, 1
 dallasmenshealth.com, 1
+dalliard.ch, 1
 dallinbryce.com, 1
 dallmeier.net, 1
 dalmatiersheusden.be, 1
 daltonedwards.me, 1
 dam74.com.ar, 1
 damaged.org, 1
 damasexpress.com, 1
 damedrogy.cz, 1
@@ -19566,25 +19763,25 @@ danaketh.com, 1
 danalytics.com.pe, 1
 danamica.dk, 1
 danandrum.com, 1
 danarozmarin.com, 1
 danbaldwinart.com, 1
 danbarrett.com.au, 0
 danbergen.com, 1
 danburycampervans.co.uk, 1
+danca.com, 1
 dance-colleges.com, 1
 danceylove.net, 1
 danchen.org, 1
 dancingcubs.co.uk, 1
 dandan101.com, 1
 dandenongroadapartments.com.au, 1
 dandia.ro, 1
 dandymrsb.com, 1
-daneandthepain.com, 1
 danel.ski, 1
 danelska.pl, 1
 danelski.pl, 1
 danfromit.co.uk, 1
 danfromit.com, 1
 dango.in, 0
 dangr.zone, 1
 danhalliday.com, 1
@@ -19595,16 +19792,17 @@ daniel-kulbe.de, 1
 daniel-leblanc.tk, 1
 daniel-milnes.co.uk, 1
 daniel-milnes.uk, 1
 daniel-ruf.de, 1
 daniel-stahl.net, 1
 daniel-wildhaber.ch, 1
 daniel.domains, 1
 daniel.sb, 1
+danielalvarez.net, 1
 danielas.boutique, 1
 daniele.tech, 1
 danielehniss.de, 1
 danielepestilli.com, 1
 danielgorr.de, 1
 danielgray.email, 1
 danielgray.me, 1
 danielgraziano.ca, 1
@@ -19663,16 +19861,17 @@ danndorf.com, 1
 dannhanks.com, 1
 dannicholas.net, 1
 danny-tittel.de, 1
 dannycairns.com, 1
 dannygaidateraelgar.com, 1
 dannyjota.tk, 1
 dannyrohde.de, 0
 dannystevens.co.uk, 1
+danonsecurity.com, 1
 danotage.tv, 1
 danoz.net, 1
 danpiel.net, 1
 dansa.com.co, 1
 dansage.co, 1
 dansaunders.me, 1
 dansdiscounttools.com, 1
 dansedesalonsaintave.fr, 1
@@ -19701,28 +19900,29 @@ daplie.com, 1
 dapoxetinagenerico.cf, 1
 dapperdom.net, 1
 dapps.earth, 1
 dappworld.com, 1
 daracokorilo.com, 1
 darani.ch, 1
 daravk.ch, 1
 darbi.org, 1
-darc-mak.de, 1
+darc-mak.de, 0
 darchoods.net, 0
 darcymarshall.com, 1
 dare.deals, 1
 daretogain.com, 1
 dareyou.be, 1
 darf.nl, 1
 dariaburger.de, 1
 darinkotter.com, 1
 darioackermann.ch, 0
 darioclip.com, 1
 darioturchetti.me, 1
+dark-archive.com, 1
 dark-crystal.tk, 1
 dark-infection.de, 1
 dark-nova.me, 1
 dark-nova.tk, 1
 dark-vision.cz, 1
 dark.fail, 1
 dark.ninja, 1
 darkcores.net, 1
@@ -19917,16 +20117,17 @@ david-schiffmann.de, 1
 david.kitchen, 1
 davidadrian.org, 1
 davidandersson.se, 1
 davidandrewcoaching.com, 1
 davidbranco.me, 1
 davidbrito.tech, 1
 davidbrookes.me, 1
 davidbuckell.com, 1
+daviddejori.com, 1
 daviddever.net, 1
 davidfetveit.com, 1
 davidforward.net, 1
 davidfrancoeur.com, 1
 davidgouveia.net, 1
 davidgow.net, 1
 davidgreig.uk, 1
 davidgroup.co.id, 1
@@ -19974,16 +20175,17 @@ dawnbringer.eu, 1
 dawnbringer.net, 1
 dawnofeden.net, 1
 dawnofhope.tk, 1
 dawnson.is, 1
 dawoud.org, 1
 dawson-floridavilla.co.uk, 1
 dax.guide, 1
 daxpatterns.com, 1
+daxterfellowesservers.com, 1
 daycontactlens.com, 1
 daydream.team, 1
 daylightpirates.org, 1
 dayman.net, 1
 daymprove.life, 1
 dayofdays.be, 1
 dayofthegirl.gc.ca, 1
 days.one, 1
@@ -20008,16 +20210,17 @@ dazzit.org, 1
 dazzit.xyz, 1
 db-sanity.com, 1
 db-works.nl, 1
 db.ci, 1
 dbapress.org, 1
 dbaron.org, 1
 dbas.cz, 1
 dbb.wtf, 1
+dbcartography.com, 1
 dbentertainment.co.uk, 1
 dbgamestudio.com, 1
 dbjc.tk, 1
 dblcastles.co.uk, 1
 dbldub.net, 1
 dblx.io, 1
 dbmiller.org, 1
 dbmteam.com, 1
@@ -20047,27 +20250,27 @@ dcave.net, 1
 dcbouncycastles.co.uk, 1
 dcc.moe, 1
 dccwiki.com, 1
 dcdestetica.it, 1
 dcepler.net, 1
 dchatelain.ch, 0
 dchest.org, 1
 dckd.nl, 1
-dcl.re, 1
 dclaisse.fr, 1
 dcmapping.net, 1
 dcmarvelunited.com, 1
 dcmediahosting.com, 1
 dcmt.co, 1
 dcpower.eu, 1
 dcrdev.com, 1
 dcw.io, 1
 dcyph.de, 1
 dd.art.pl, 1
+dd.center, 1
 dd00228.com, 1
 dd112d.net, 1
 dd118d.com, 1
 dd11d.net, 1
 dd201d.com, 1
 dd202d.com, 1
 dd203d.com, 1
 dd204d.com, 1
@@ -20112,29 +20315,29 @@ ddns-test.de, 1
 ddnsweb.com, 0
 ddos-mitigation.co.uk, 1
 ddos-mitigation.info, 1
 ddosguard.cf, 1
 ddosolitary.org, 1
 ddproxy.cf, 1
 ddracepro.net, 1
 dds.mil, 1
+dds.pe, 1
 ddsmatchsouthwest.com, 1
 ddy.tw, 1
 de-gucci.com, 1
 de-kramers.nl, 1
 de-mail.info, 1
 de-medici.nl, 1
 de-mossadeq.tk, 1
 de-osopanda.com, 1
 de-rwa.de, 1
 de-servers.de, 1
 de-spil.be, 1
 de.search.yahoo.com, 0
-de8468.com, 1
 dead-letter.email, 1
 deadbeef.ninja, 1
 deadbyhost.com, 1
 deadc0de.re, 1
 deadmann.com, 1
 deadmorose.ru, 1
 deadpulse.com, 1
 deadroot.tk, 1
@@ -20154,16 +20357,17 @@ dealbanana.de, 1
 dealbanana.fi, 1
 dealbanana.fr, 1
 dealbanana.it, 1
 dealbanana.se, 1
 dealbx.com, 1
 dealcruiser.nl, 1
 dealdump.nl, 1
 dealerselectric.com, 1
+dealerwriter.com, 1
 dealinflatables.co.uk, 1
 dealosa.com, 1
 dealspotr.com, 1
 dealszone.net, 1
 deamuseum.org, 1
 deanandnatalia.co.za, 1
 deanbank.com, 1
 deanjerkovich.com, 1
@@ -20182,16 +20386,17 @@ death.social, 1
 deathberry.ddns.net, 1
 deathofspring.com, 0
 deathsdomain.com, 1
 deathy.ro, 1
 deautomaat.nl, 1
 deavel.com, 1
 deavel.fr, 1
 deavel.net, 1
+debarras-diogene.paris, 1
 debarrasantony.com, 1
 debarrasasnieressurseine.com, 1
 debarrasboulognebillancourt.com, 1
 debarrasclichy.com, 1
 debarrascolombes.com, 1
 debarrasnanterre.com, 1
 debatereport.com, 1
 debbyefurd.com, 1
@@ -20354,16 +20559,17 @@ degit.de, 1
 degoeiewebsite.cf, 1
 degoticapunk.xyz, 1
 degoulet.net, 1
 degraafschapdierenartsen.nl, 1
 degracetechnologie.com, 1
 degradarium.com, 1
 degrasboom.nl, 1
 degressif.com, 1
+degroupage.info, 0
 dehopre.com, 1
 dehydrated.de, 1
 deidee.nl, 1
 deimos.gq, 1
 dein-baumdienst.de, 1
 dein-trueffel.de, 1
 deinballon.de, 1
 deine-gitarre.com, 1
@@ -20499,42 +20705,43 @@ denistruffaut.fr, 0
 deniszczuk.pl, 1
 deniz.uk, 1
 denizdesign.co.uk, 1
 denkeandersblog.de, 1
 denkmalagentur.ch, 1
 denkmalsetzung.at, 1
 denkubator.de, 1
 dennhat.com, 1
+denninger.jp, 1
 dennisang.com, 1
 dennisdoes.net, 0
 dennisforbes.ca, 1
 dennishzg.com, 1
 denniskoot.nl, 1
 dennismurphy.biz, 1
 dennisvandenbos.nl, 1
 dennogumi.org, 1
 denous.nl, 1
 dent.uy, 1
+denta-ua.com, 1
 dental-cloud.eu, 1
 dental-colleges.com, 1
 dentallaborgeraeteservice.de, 1
 dentechnica.co.uk, 1
 dentistesdarveauetrioux.com, 1
 dentistglasgow.com, 1
 dentistryateastpiedmont.com, 1
 dentoncounty.gov, 1
 dentrassi.de, 1
 dentystabirmingham.co.uk, 1
 denuevestore.com, 1
 denvergospelhall.org, 1
 denvernews.ml, 1
 denwauranailab.com, 1
 denydarko.tk, 1
-deonlinespecialist.nl, 1
 deontology.com, 1
 depaco.com, 1
 depannage-traceur.fr, 1
 deparis.me, 1
 departmentofdefense.tk, 1
 departmentofoncology.com, 1
 depeces.com, 1
 depechemode-live.com, 1
@@ -20552,17 +20759,16 @@ depedtayo.ph, 1
 depelos.co, 1
 depelteau.com, 1
 dependablehvacrefrigeration.com, 1
 deperewi.gov, 1
 depicus.com, 1
 depilacioncon.com, 1
 depleteduranium.tk, 1
 deplorablesdaily.com, 1
-depoker.top, 1
 depone.net, 1
 depop.com, 1
 depositart.com, 1
 depositomerci.it, 1
 depositomobili.it, 1
 depot24.nl, 1
 depotsquarekerrville.com, 1
 depotter-usedcars.be, 0
@@ -20593,16 +20799,17 @@ derdewereldrommelmarkt.nl, 1
 dereddingsklos.nl, 1
 dereferenced.net, 1
 derehamcastles.co.uk, 1
 derekbooth.co.uk, 1
 derekheld.com, 1
 derekkent.com, 1
 derekseaman.com, 0
 derekseaman.studio, 0
+derenderkeks.me, 1
 derf.red, 1
 derf.us, 1
 dergeilstestammderwelt.de, 1
 derhil.de, 1
 derivativeshub.pro, 1
 derive.cc, 1
 derivedata.com, 1
 derkuki.de, 1
@@ -20625,30 +20832,30 @@ derreichesack.com, 1
 dersoundhunter.de, 1
 derstulle.de, 1
 derw.pw, 1
 des-hommes-et-des-clous.com, 1
 desafiomovilidadsustentable.com, 1
 desagaz.com, 1
 desanta.top, 1
 descargar-apk.org, 1
-descartes-finance.com, 1
 desec.io, 1
 desentupidorademais.com.br, 1
 desentupidorapernambucana.com.br, 1
 desert-maroc.com, 1
 desertbloomplasticsurgery.com, 1
 desertmedaesthetics.com, 1
 desertsounds.org, 1
 desgenst.ch, 1
 desheng28.com, 1
 deshevle-net.com, 1
 deshobi.cloud, 1
 design-in-bad.eu, 1
 design-tooning.de, 1
+design-your-life.info, 1
 designanyware.com.br, 1
 designartepublicidad.com, 1
 designed-cybersecurity.com, 1
 designedbygeniuses.com, 1
 designedcybersecurity.com, 1
 designer-drug.com, 1
 designera.se, 1
 designerchad.com, 1
@@ -20754,16 +20961,17 @@ dev-sev-web.pantheonsite.io, 1
 dev-tek.de, 1
 dev.moe, 1
 devafexcur-dntg.azurewebsites.net, 1
 devafterdark.com, 1
 devagency.fr, 1
 devalps.eu, 1
 devapi.pro, 1
 devb.nl, 1
+devbean.net, 1
 devcf.com, 1
 devcoins.org, 1
 devconf.nl, 1
 devcore.pl, 1
 devcu.net, 1
 devdeb.com, 1
 devdesco.com, 1
 devdoodle.net, 1
@@ -20843,17 +21051,16 @@ dexonrest.azurewebsites.net, 1
 dexonservicedeskws.azurewebsites.net, 1
 dexonsoftware.com, 1
 deyute.com, 1
 dez-online.de, 1
 dezeregio.nl, 1
 dezet-ev.de, 1
 dezmembrariromania.ro, 1
 dezzoroofing.co.za, 1
-df1nif.de, 1
 df1paw.de, 1
 df3312.com, 1
 df3313.com, 1
 df3314.com, 1
 df3315.com, 1
 df3316.com, 1
 df3317.com, 1
 df3318.com, 1
@@ -20878,17 +21085,16 @@ dfixit.com, 1
 dflcares.com, 1
 dfmn.berlin, 1
 dfranke.com, 1
 dg68.cc, 1
 dgangsta.net, 1
 dgblaw.com.au, 0
 dgbouncycastlehire.com, 1
 dgeex.eu, 1
-dggm.ru, 1
 dgitup.com, 1
 dgportals.co.uk, 1
 dgpot.com, 1
 dgt-portal.de, 1
 dgtakano.co.jp, 1
 dgx.io, 1
 dh6729.com, 1
 dh9397.com, 1
@@ -20952,16 +21158,17 @@ diananeves.pt, 0
 dianefriedli.ch, 0
 dianurse.com, 1
 diare-na-miru.cz, 1
 diario-egipto.com, 1
 diariocibao.com, 1
 diariodearaxa.com.br, 1
 diarionoticia.pe, 1
 diariorealidad.com, 1
+diariosurnoticias.com, 1
 diaroma.it, 1
 diarynote.jp, 1
 diasdasemana.com, 1
 diasp.org, 1
 diasporadialogues.com, 1
 diatrofi-ygeia.gr, 1
 diavo.de, 1
 diba.org.cn, 1
@@ -20989,16 +21196,17 @@ dick.red, 1
 dickord.cloud, 1
 dickpics.ru, 1
 dicksakowicz.com, 1
 dicoding.com, 1
 dictionaryofnumbers.com, 1
 dictionarypro.net, 1
 dictzone.com, 1
 didacte.com, 1
+didaktik4you.de, 1
 didche.net, 0
 diddens.de, 1
 dideeducacion.com, 1
 didefamilia.com, 1
 didesalud.com, 1
 didierghez.com, 1
 didierlaumen.be, 1
 didigotoffer.com, 1
@@ -21040,20 +21248,17 @@ dienstplan.one, 1
 diepanhcare.com, 1
 dierabenmutti.de, 1
 dieradvies.nl, 1
 dierenartsdeconinck.be, 1
 dieselanimals.lt, 1
 dieselgalleri.com, 1
 dieser.me, 1
 diesteppenreiter.de, 1
-dietaanticelulitica.com, 1
-dietaanticelulitis.com, 1
 dietacelulitis.com, 1
-dietafeliz.com, 1
 dietbrand.eu, 1
 dieterglas.de, 1
 dietergreven.de, 0
 dieterstinglhamber.me, 0
 diethood.com, 1
 dieti-natura.com, 1
 dieti.net, 1
 dietlin.com, 1
@@ -21464,30 +21669,34 @@ diytechguides.com, 1
 diyvideoeditor.com, 1
 dizayner.tk, 1
 dizzie.org, 1
 dizzieforums.com, 1
 dizzythewizard.co.uk, 1
 dj-leszwolle.nl, 1
 dj-x.info, 1
 dj16888.com, 1
+dj16888a.com, 1
+dj16888b.com, 1
+dj16888c.com, 1
+dj16888d.com, 1
 dj3dub.com, 1
 djangobirthday.com, 1
 djangogolf.com, 1
 djangoproject.com, 1
 djangosnippets.org, 1
 djanpana.com, 1
 djbbouncycastles.co.uk, 1
 djbobbytables.com, 1
 djboekingskantoor.nl, 1
 djc.me, 1
 djcursuszwolle.nl, 1
 djdavid98.hu, 1
 djdeepstate.com, 1
-djeung.org, 1
+djfafafa.com, 1
 djfrenchy.com, 1
 dji-ars.pl, 1
 djipanov.com, 1
 djitsolutions.com, 1
 djl188.cc, 1
 djl63.com, 1
 djl63001.com, 1
 djleon.net, 1
@@ -21661,29 +21870,30 @@ doctor.dating, 1
 doctor360.com.au, 1
 doctorbini.com, 1
 doctorcalefon.com, 1
 doctorfox.co.uk, 1
 doctornaima.ml, 1
 doctorperu.com, 1
 doctorwho.cz, 1
 doctorxdentist.com, 1
+docu.io, 1
 docubox.info, 1
 docucopies.com, 1
 docudanang.com.vn, 0
 documaniatv.com, 1
 documentations-sociales.com, 1
 docupaymentuat.xyz, 1
 docusearch.com, 1
 doda.space, 1
 dodds.cc, 1
 dodikod.tk, 1
 dodomu.ddns.net, 1
 dodopri.com, 1
-doenjoylife.com, 1
+doenjoylife.com, 0
 doeren.com, 1
 doerz.com, 1
 does.one, 1
 doesburg-comp.nl, 1
 doesinfotech.com, 1
 doesmycodehavebugs.today, 1
 doesnotscale.com, 0
 dofuspvp.com, 0
@@ -21705,16 +21915,17 @@ doggo.email, 1
 doggroomingcourse.com, 1
 doggybag-committee.com, 1
 dogmap.jp, 1
 dogodki.today, 1
 dogoo.com, 1
 dogpawstudio.com, 1
 dogprograms.net, 1
 dogrescuegreece.nl, 1
+dogrockresorts.com, 1
 dogvolution.com, 1
 dohanews.co, 1
 doihavetoputonpants.com, 1
 doinaruscior.eu, 1
 doitauto.de, 1
 doitexperience.com, 1
 dojifish.space, 1
 dojin.nagoya, 1
@@ -21736,16 +21947,17 @@ dolciterapie.com, 1
 doli.se, 1
 dolice.net, 1
 dolinathome.com, 1
 doll.ml, 1
 dollarrp.pl, 1
 dollchan.org, 1
 dollemore.com, 1
 dollhousetoyo.com, 1
+dolmenejecutores.com, 1
 dolorism.com, 1
 dolph.de, 1
 dolphin-cloud.com, 1
 dolphin-hosting.com, 1
 dolphin-it.de, 1
 doma.in, 1
 domadillo.com, 1
 domain-ermittlung.de, 1
@@ -21888,16 +22100,17 @@ doomoo.com, 1
 doomsworld.com, 1
 doomtech.net, 1
 doomus.me, 1
 doooooops.com, 1
 doop.im, 1
 door.cards, 1
 doordecor.bg, 1
 doorflow.com, 1
+doorgate.pt, 1
 doorhandlese.com, 1
 doorshingekit.com, 1
 doorswest.net, 1
 doortim.nl, 1
 dopesoft.de, 1
 dopetrue.com, 1
 dophys.top, 1
 doppeleinhorn.de, 1
@@ -21932,16 +22145,17 @@ dormkitty.com, 1
 dornhecker.me, 1
 dorogaminina.tk, 1
 dorpshuis-dwarsgracht.nl, 1
 dorpshuiskesteren.nl, 1
 dorquelle.com, 1
 dorsetentertainments.co.uk, 1
 dorth.nl, 1
 dortmund.directory, 1
+dos.cafe, 1
 dosenbierrepublik.com, 1
 dosenkiwi.at, 1
 dosje.org, 1
 doska.by, 1
 doska.ru, 1
 dosomeworks.biz, 1
 dossplumbing.co.za, 0
 dostalsecurity.com, 1
@@ -22286,16 +22500,17 @@ drhathazi.hu, 1
 drheibel.com, 1
 drherndonent.com, 1
 drhildebrand.net, 1
 drhoseyni.com, 1
 drhyler.com, 1
 drianpublishing.tk, 1
 driesjtuver.nl, 1
 driessoftsec.tk, 1
+driestwegkerk.nl, 1
 driftdude.nl, 1
 driftingruby.com, 1
 drighes.com, 1
 drillingsupply.info, 1
 drillingsupplystore.com, 1
 drillion.net, 1
 drillshackresort.com, 1
 drilon.be, 1
@@ -22371,17 +22586,17 @@ dropshell.net, 1
 droso.dk, 1
 drown.photography, 1
 drpetersenobgynal.com, 1
 drpetervoigt.ddns.net, 1
 drpetervoigt.de, 1
 drphillipsmwc.com, 1
 drpico.com.au, 1
 drpil.nl, 1
-drpure.top, 1
+drpure.top, 0
 drradin.com, 1
 drrhonda.com, 1
 drros.ru, 1
 drrr.chat, 1
 drrr.com, 1
 drrr.wiki, 1
 drsajjadian.com, 1
 drsamuelkoo.com, 1
@@ -22459,16 +22674,17 @@ dsol.hu, 1
 dsouzamusic.com, 1
 dspace.pl, 1
 dspropertyservicesltd.co.uk, 1
 dsreal.de, 1
 dstamou.de, 1
 dsteiner.at, 1
 dstvinstallalberton.co.za, 1
 dstvinstalledenvale.co.za, 1
+dstvinstallfourways.co.za, 0
 dstvinstallglenvista.co.za, 1
 dstvinstalljohannesburg.co.za, 1
 dstvinstallkemptonpark.co.za, 1
 dstvinstallrandburg.co.za, 1
 dstvrandburg.co.za, 1
 dstvsandton.co.za, 1
 dstvsouthafrica.com, 1
 dsuinnovation.com, 1
@@ -22585,16 +22801,17 @@ duncancmt.com, 1
 duncanfamilytrust.org, 1
 duncanmoffat.com, 1
 duncanwinfrey.com, 1
 duncm.com, 1
 dundalkdonnie.com, 1
 dunesadventure.net, 1
 dungdev.net, 1
 dungeon-bbs.de, 1
+dungeoncity.com, 1
 dunklau.fr, 1
 dunkle-seite.org, 1
 dunmanelectric.com, 1
 dunyahalleri.com, 1
 duo.com, 1
 duobus.nl, 1
 duoluodeyu.com, 1
 duoquadragintien.fr, 1
@@ -22611,16 +22828,17 @@ durcal.tk, 1
 durchblick-shop.de, 1
 durdle.com, 1
 dureuil.info, 1
 durexwinkel.nl, 1
 durfteparticiperen.nl, 1
 durgatopos.it, 1
 duria.de, 1
 duriaux-dentiste.ch, 0
+duriemas.com, 1
 durin-art.com, 1
 durmatest.com, 1
 duroterm.ro, 1
 durys.be, 1
 dushu.cat, 1
 dusmomente.com, 1
 dusnan.com, 1
 dustandsand.com, 1
@@ -22629,17 +22847,16 @@ dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
 dustyro.se, 1
 dustyspokesbnb.ca, 1
 dustywilson.com, 1
 dutabisniz.com, 1
 dutch.desi, 1
 dutch1.nl, 1
-dutchessuganda.com, 1
 dutchfoodie.nl, 1
 dutchforkrunners.com, 1
 dutchrank.nl, 1
 dutchsailors.com, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 dutkoteam.com, 1
 dutrac.co.id, 1
@@ -22694,17 +22911,16 @@ dybuster.it, 1
 dybuster.se, 1
 dyeager.org, 1
 dyktig.as, 1
 dyktig.no, 1
 dylancl.cf, 1
 dylangattey.com, 1
 dylankatz.com, 1
 dylanknoll.ca, 1
-dylanscott.com.au, 1
 dylanspcrepairs.com, 1
 dylanwise.net, 1
 dylmye.me, 0
 dylnuge.com, 1
 dym.asia, 1
 dym.bz, 1
 dym2012.com, 1
 dym2013.com, 1
@@ -22795,16 +23011,17 @@ e-baraxolka.ru, 1
 e-beyond.de, 1
 e-bikesdirect.co.uk, 1
 e-biografias.net, 1
 e-boekhouden.nl, 1
 e-borneoshop.com, 1
 e-briancon.com, 1
 e-businessexpert.com, 1
 e-coexist.com, 1
+e-cogni.com.br, 1
 e-colle.info, 1
 e-diabolo.tk, 1
 e-emploi.be, 1
 e-enterprise.gov, 1
 e-gemeinde.at, 1
 e-id.ee, 1
 e-klempir.cz, 1
 e-labo.works, 1
@@ -22859,17 +23076,16 @@ e53888.net, 1
 e59888.com, 1
 e59888.net, 1
 e5tv.hu, 1
 e64.com, 1
 e6729.co, 1
 e6729.com, 1
 e6957.co, 1
 e6e.io, 1
-e6ex.com, 1
 e7180.com, 1
 e7d.io, 1
 e7fun.net, 1
 e81818.com, 1
 e899365.com, 1
 e901.com, 1
 e9297.co, 1
 e965.ru, 1
@@ -22967,17 +23183,16 @@ easypv.ch, 1
 easyqr.codes, 1
 easyreal.ru, 1
 easyroad.fr, 1
 easyschools.org, 0
 easyshare.gq, 1
 easyslide.be, 1
 easystore.co, 1
 easytechguides.com, 1
-easytechsecurity.com, 1
 easytube.ga, 1
 easyweenies.com, 1
 easywin.ml, 1
 easywio.com, 1
 eat-sleep-code.com, 1
 eat-the-world.ch, 1
 eatery.co.il, 1
 eatfitoutlet.com.br, 1
@@ -23043,17 +23258,17 @@ ec-current.com, 1
 ec.mine.nu, 1
 ecalculator.org, 1
 ecardoo.com, 1
 ecardoo.de, 1
 ecardoo.net, 1
 ecardoo.org, 1
 ecbt.co.il, 1
 ecchidreams.com, 1
-ecco-verde.com, 0
+eccma.org, 1
 eccux.com, 1
 ecdn.cz, 1
 ecelembrou.ovh, 1
 ecfunstalls.com, 1
 echarity.ae, 1
 echarlascartas.es, 1
 echatta.net, 1
 echatta.org, 1
@@ -23195,16 +23410,17 @@ edefrutos.me, 1
 edehsa.com, 1
 edeka-jbl-treueaktion.de, 1
 edelweiss-pinzolo.com, 1
 eden-eu.com, 1
 eden-project-insight.tk, 1
 eden.co.uk, 1
 edenmal.net, 1
 edenming.info, 1
+edenvalerubbleremovals.co.za, 0
 edesseglabor.hu, 1
 edfinancial.com, 1
 edgarz.tk, 1
 edgecustomersportal.com, 1
 edgedynasty.com, 1
 edgefantasy.com, 1
 edgeservices.co.uk, 1
 edgetalk.net, 1
@@ -23382,16 +23598,17 @@ eflorashop.fr, 1
 eflorashop.it, 1
 eflorashop.mx, 1
 eflorashop.net, 1
 eflorashop.us, 1
 efmcredentialing.org, 1
 efoood.org, 1
 efreet.xyz, 1
 eft.boutique, 1
+eftcorp.biz, 0
 eftelingcraft.net, 1
 eftopia.org, 1
 efzh2so1cuskp9j3evlqa1m68id-m9p1tzb05zo.com, 1
 egablo.black, 1
 egarden.it, 1
 egb.at, 0
 egbc.ca, 1
 egeozcan.com, 1
@@ -23659,16 +23876,17 @@ electricmalibu.com, 1
 electricmoorpark.com, 1
 electricnewburypark.com, 1
 electricoakpark.com, 1
 electricsimivalley.com, 1
 electricthousandoaks.com, 1
 electricwestlakevillage.com, 1
 electro-pak.com.pk, 1
 electrocardiographe.net, 1
+electrocomplect.com.ua, 1
 electroforum.tk, 1
 electrolivefest.spb.ru, 1
 electromagnetism.gq, 1
 electronic-ignition-system.com, 1
 electronicafacil.net, 1
 electronicayseguridadmonserrate.com, 1
 electronicfasteners.com, 0
 electronicssrit.tk, 1
@@ -23769,16 +23987,17 @@ elhossari.com, 1
 elia.cloud, 1
 elian-art.de, 1
 eliaskordelakos.com, 1
 eliasojala.me, 1
 eliasong.com, 1
 eliaswendt.com, 1
 eliaswendt.de, 1
 elibom.com, 1
+elicite.com, 1
 elie.net, 1
 elifesciences.org, 1
 eligibilis.com, 1
 eligible.com, 1
 eligibleapi.com, 1
 eligrey.com, 1
 elijahgrey.com, 1
 elikers.ml, 1
@@ -23937,16 +24156,17 @@ emcentrix-com-site-mvc.azurewebsites.net
 emcspotlight.com, 1
 emdrupholm.dk, 1
 emecew.com, 1
 emeliefalk.se, 1
 emeliemai.com, 1
 ememsei.com, 1
 emeraldcbdshop.com, 0
 emeraldcityswagger.com, 1
+emeraldcoasturgentcare.com, 1
 emeraldislerealty.com, 1
 emergency-federal-register.gov, 1
 emergencyessay.com, 1
 emergencyshutoff.com, 1
 emergesydney.com.au, 1
 emersoncanada.ca, 1
 emex.ro, 1
 emi.im, 1
@@ -24031,17 +24251,16 @@ empoweren.com, 1
 emprechtinger.com, 1
 emprego.pt, 1
 empregosrj.com, 1
 emprendeconchrisfx.com, 1
 emprendeperuano.com, 1
 emptybox.org, 1
 empyrean-advisors.com, 1
 emrah.io, 1
-emrahcinik.com, 1
 emreaydinfan.tk, 1
 emrenovation.com, 1
 emresaglam.com, 1
 emrullahsahin.com, 1
 ems.gov, 1
 emsa-casm.ca, 1
 emtradingacademy.com, 1
 emulator.ml, 1
@@ -24113,16 +24332,17 @@ endpointsystems.com, 1
 endspamwith.us, 1
 enduranceday.be, 1
 endurogp.org, 1
 endustriyelfirinlar.com, 1
 endviolence.gc.ca, 1
 endzeit-architekten.com, 0
 eneamarcantoni.com, 1
 eneko.com, 1
+enekogarrido.com, 1
 enemiesoflight.de, 1
 energie-sante.ch, 0
 energiekeurplus.nl, 1
 energija-visiems.lt, 1
 energy-drink-magazin.de, 1
 energy-healings.com, 1
 energy-in-balance.eu, 1
 energy-infra.nl, 1
@@ -24160,17 +24380,16 @@ engelmann.com, 0
 engelundlicht.ch, 1
 engelwerbung.com, 1
 engg.ca, 1
 engie-laadpalen.nl, 1
 engiedev.net, 1
 engima.nl, 1
 enginepit.com, 1
 enginsight.com, 1
-enginx.cn, 1
 enginx.net, 1
 engl-server.de, 1
 engl-systems.de, 1
 englishbulgaria.net, 1
 englishcast.com.br, 1
 englishdirectory.de, 1
 englishforums.com, 1
 englishlol.com, 1
@@ -24275,18 +24494,20 @@ enviroli.co.uk, 1
 enviroli.com, 1
 enviroli.org.uk, 1
 enviroli.uk, 1
 environment.ai, 1
 environmental-colleges.com, 1
 enviroprobasements.com, 1
 envman.io, 1
 envoie.moi, 1
+envoker.com, 1
 envoker.nl, 1
 envoyez.moi, 1
+envoypresents.com, 1
 enwikipedia.tk, 1
 enxadahost.com, 1
 enzoic.com, 1
 eocservices.co.uk, 1
 eoitek.com, 1
 eola.co, 1
 eolme.ml, 1
 eon.tech, 1
@@ -24417,16 +24638,17 @@ equipoweb.info, 1
 equisecu.com, 1
 equityflows.com, 1
 equk.co.uk, 1
 er-mgmt.com, 1
 er-music.com, 1
 er.tl, 1
 er1s.xyz, 1
 era.fi, 1
+eradigital.net, 1
 eradoom.net, 1
 erasmo.info, 1
 erasmusplusrooms.com, 1
 erasure.tk, 1
 erate.fi, 1
 erath.fr, 0
 erawanarifnugroho.com, 0
 erclab.kr, 1
@@ -24514,17 +24736,16 @@ errortools.com, 1
 ers35.com, 1
 ersa-shop.com, 1
 ershiwo.com, 1
 ersinbiltekin.tk, 1
 ersinerce.com, 1
 erspro.net, 1
 erstehilfeprodukte.at, 1
 ert.ovh, 1
-ertir.ru, 0
 erty.stream, 1
 eru.im, 0
 eru.me, 1
 eru.moe, 1
 erudicia.com, 1
 erudicia.de, 1
 erudicia.es, 1
 erudicia.fr, 1
@@ -24737,16 +24958,17 @@ esmincg2t1.com, 1
 esmoney.cc, 1
 esmoney.me, 1
 esoa.net, 1
 esoko.eu, 1
 esolcourses.com, 1
 esolitos.com, 1
 eson.eu, 1
 esono.de, 1
+esoteric.website, 1
 esoterik.link, 1
 esoterikerforum.de, 1
 esovita.de, 1
 espace-caen.fr, 0
 espace-gestion.fr, 1
 espace-habitat-francais.fr, 1
 espace.network, 1
 espacelanguetokyo.fr, 1
@@ -24759,18 +24981,18 @@ espanol.search.yahoo.com, 0
 espci.fr, 1
 especialistagoogleadwords.com.br, 1
 especificosba.com.ar, 1
 espehus.dk, 1
 esperantio.tk, 1
 espgg.org, 1
 espherapromocional.com.br, 1
 espigol.org, 1
+espiragen.com, 1
 espiritugay.com, 1
-esport-agency.fr, 1
 esport-battlefield.com, 1
 esports-network.de, 1
 espower.com.sg, 1
 espritrait.com, 0
 espyder.net, 1
 esquirou-trieves.fr, 0
 esrhd.com, 1
 esrinfo.com, 1
@@ -24907,17 +25129,16 @@ ethanlew.is, 1
 ethelbrooks.com, 1
 ethelbrooks.es, 1
 ether.school, 1
 ethercalc.com, 1
 ethercalc.org, 1
 etherderbies.com, 1
 etherium.org, 1
 etherpad.nl, 1
-ethers.news, 1
 ethicalconsumer.org, 1
 ethicaldata.co.uk, 1
 ethicalpolitics.org, 1
 ethicaltek.com, 1
 ethicsburg.gov, 1
 ethika.com, 1
 ethil-faer.fr, 1
 ethiobaba.com, 1
@@ -24998,16 +25219,17 @@ eurekaarchi.com, 1
 eurekaarchitecture.com, 1
 euro-construction.co.uk, 1
 euro-servers.de, 1
 euroalter.com, 1
 eurocars2000.es, 1
 eurocenterobuda.hu, 1
 eurocertificazione.it, 1
 eurocomcompany.cz, 1
+eurocons.ro, 1
 euroconthr.ro, 1
 eurodentaire.com, 1
 euroexpres.info, 1
 euroflora.com, 1
 euroflora.mobi, 1
 eurofrank.eu, 1
 eurogarden-parts.de, 1
 eurogarden.be, 1
@@ -25075,16 +25297,17 @@ evangelicalmagazine.com, 1
 evangelosm.com, 1
 evanreev.es, 1
 evansdesignstudio.com, 0
 evansville-wy.gov, 1
 evantage.org, 1
 evantageglobal.com, 1
 evanwang0.com, 1
 evapp.org, 1
+evaria-network.fr, 1
 evasion-energie.com, 1
 evasioncreole.com, 1
 evasovova.cz, 1
 evavolfova.cz, 1
 evdenevenakliyatankara.name.tr, 1
 eve-online-com.ru, 1
 eve-raynon.fr, 1
 eve-ua.com, 1
@@ -25123,17 +25346,17 @@ everain.me, 1
 everberg.tk, 1
 everettsautorepair.com, 1
 everfine.com.tw, 1
 evergladesrestoration.gov, 1
 everglow.co.jp, 1
 everglowtrading.com, 1
 evergreenmichigan.com, 1
 everhome.de, 1
-everichspice.com, 0
+everichspice.com, 1
 everify.gov, 1
 everling.lu, 1
 everlong.org, 1
 evermarkstudios.com, 1
 evernaut.com, 1
 everpcpc.com, 1
 evertonarentwe.com, 1
 everwaking.com, 0
@@ -25153,16 +25376,17 @@ everythingaccess.com, 1
 everythingstech.com, 1
 everythinq.com, 1
 everytrycounts.gov, 1
 everywhere.cloud, 1
 eveshaiwu.com, 1
 eveshamglass.co.uk, 1
 eveswell.com, 1
 evexia.xyz, 1
+evhoeft.com, 1
 eviction.cf, 1
 evidence-based.review, 1
 evidencebased.net, 1
 evidencija.ba, 1
 evil-empire.tk, 1
 evilbeasts.ru, 1
 evilbunnyfufu.com, 1
 evileden.com, 1
@@ -25200,26 +25424,28 @@ evote-ch.ch, 1
 evotec.pl, 1
 evotec.xyz, 1
 evoting-test.ch, 0
 evoting.ch, 1
 evowrap.co.uk, 1
 evpro.lt, 1
 evrial.com, 1
 evrica.me, 1
+evrodim.company, 1
 evromandie.ch, 1
 evrotrust.com, 1
 evsinemasistemleri.tk, 1
 evstatus.com, 1
 evtasima.name.tr, 1
 evthing.se, 1
 evtripping.com, 1
 evtscan.io, 1
 evyn.eu, 1
 ewa-hayward.co.uk, 1
+ewaf.club, 1
 ewaipiotr.pl, 1
 ewanm89.co.uk, 1
 ewanm89.com, 1
 ewanm89.uk, 1
 ewar.lt, 0
 ewc.co.jp, 1
 ewcd.co.jp, 1
 ewe2.ninja, 1
@@ -25306,39 +25532,42 @@ exgen.io, 1
 exhibityour.com, 1
 exiahost.com, 1
 existest.com, 1
 exit9wineandliquor.com, 1
 exitooutdoor.com, 1
 exl-english.com, 1
 exmart.ng, 1
 exmoe.com, 1
+exnce.com, 1
 exocen.com, 1
 exodiac.ph, 1
 exon.io, 1
 exordiumconcepts.com, 1
 exoscale.ch, 1
 exoscale.com, 1
 exoten-spezialist.de, 1
 exotic-bengal-cattery.ml, 1
 exoticads.com, 1
 exoticaz.to, 1
 exousiakaidunamis.pw, 1
 exozwiki.com, 0
 exp.de, 1
 expancio.com, 0
 expanddigital.media, 1
 expandeco.com, 1
+expansion-lidl.es, 1
 expatads.com, 1
 expatfinancial.com.hk, 1
 expatfire.com, 1
 expatmortgage.uk, 1
 expe.voyage, 1
 expeditiegrensland.nl, 1
 expeditions.com, 0
+experens.com, 1
 experienceoutdoors.org.uk, 1
 experienceoz.com.au, 1
 experimentator.cz, 1
 experise.fr, 1
 expert-korovin.ru, 1
 expert-voronezh.tk, 1
 expert.cz, 1
 experteasy.com.au, 1
@@ -25360,16 +25589,17 @@ exploflex.com.br, 1
 exploit-db.com, 1
 exploit.cz, 1
 exploit.party, 1
 exploit.ph, 1
 exploited.cz, 1
 exploithe.net, 1
 exploitit.com.au, 1
 exploodo.rocks, 1
+exploradora.hu, 1
 exploravacations.in, 1
 explorebigideas.com, 1
 exploredouglascountyga.com, 1
 exploremonero.com, 1
 exploretsp.gov, 1
 exploringenderby.com, 1
 exploringmorocco.tours, 1
 expmind.co.in, 1
@@ -25439,16 +25669,17 @@ extradivers-worldwide.com, 1
 extrapagetab.com, 1
 extratorrent.cool, 1
 extrawdw.net, 1
 extreemhost.nl, 1
 extreme-gaming.de, 1
 extreme-gaming.us, 1
 extreme-players.com, 1
 extreme-players.de, 1
+extreme-stock.com, 1
 extreme.co.th, 1
 extrememanual.net, 1
 extremeservicesandrestoration.com, 1
 exvs.org, 1
 exxpozed-image.de, 1
 exxpozed.ch, 1
 exxpozed.co.uk, 1
 exxpozed.com, 1
@@ -25567,42 +25798,44 @@ f88yule1.com, 1
 f88yule111.com, 1
 f88yule122.com, 1
 f88yule3.com, 1
 f88yule5.com, 1
 f88yule6.com, 1
 f88yule7.com, 1
 f88yule8.com, 1
 f88yule9.com, 1
+f8906.com, 1
 f8908.com, 1
 f8921.com, 1
 f899365.com, 1
 f8cp0.com, 1
 f8cp1.com, 1
 f8cp2.com, 1
 f8cp3.com, 1
 f8cp4.com, 1
 f8cp5.com, 1
 f8cp6.com, 1
 f8cp7.com, 1
+f8cp8.com, 1
 f8cp9.com, 1
 f8s.co, 1
 f9297.co, 1
 f9728.co, 1
 f9850.com, 0
 f9851.com, 0
 f9852.com, 0
 f9854.com, 0
 f9855.com, 0
 f9880.com, 0
 f9881.com, 0
 f9882.com, 0
 f9883.com, 0
 f9884.com, 0
-f9885.com, 1
+f9885.com, 0
 f9digital.com, 1
 f9marketing.com, 1
 fa-works.com, 1
 fa158k.com, 1
 fabbro-roma.org, 1
 fabbro.roma.it, 1
 faber.org.ru, 1
 fabian-fingerle.de, 1
@@ -25620,16 +25853,17 @@ fabiankoeppen.com, 1
 fabien-hebuterne.fr, 1
 fabienbaker.com, 1
 fabienne-roux.org, 1
 fabiobier.com, 1
 fabiocicerchia.it, 1
 fabjansisters.eu, 1
 fabled.com, 1
 fableforge.nl, 1
+fableheartmedia.com, 1
 fabriceleroux.com, 0
 fabrika.com.br, 1
 fabrikafilmes.com.br, 1
 fabriziocavaliere.it, 1
 fabriziorocca.com, 1
 fabriziorocca.it, 1
 fabrykowski.com, 1
 fabrysociety.org, 1
@@ -25832,17 +26066,16 @@ familjenm.se, 1
 familledessaint.fr, 1
 familleseux.net, 1
 familleshilton.com, 1
 familylawhotline.org, 1
 familyparties.co.uk, 1
 familyreal.ru, 1
 familyrecipe.co.uk, 1
 familytreehq.com, 1
-familytreesbyjackie.com, 1
 familyworld.gr, 1
 famion.eu, 0
 famososnaweb.com, 1
 famousbirthdays.com, 1
 famoushostels.com, 1
 famvangelder.nl, 1
 famvsomeren.nl, 1
 fan.gov, 1
@@ -25850,16 +26083,17 @@ fanactu.com, 1
 fanatical.com, 1
 fanatik.io, 1
 fanboi.ch, 1
 fanbot.co, 1
 fanclubrbdmaniaromania.tk, 1
 fancy-bridge.com, 1
 fancy.org.uk, 1
 fancygaming.dk, 1
+fancypantsfit.com, 1
 fander.it, 1
 fandler.cz, 1
 fandomservices.com, 1
 fanfareunion.ch, 0
 fangs.ink, 1
 fanjingbo.com, 1
 fanjingbo.me, 1
 fanjoe.be, 1
@@ -25893,16 +26127,17 @@ fantraxhq.com, 1
 fanvoice.com, 1
 fanyina.cn, 1
 fanyina.com, 1
 fanyue123.tk, 1
 fanz.pro, 1
 fanzhencha.com, 1
 fanzlive.com, 1
 fap.no, 1
+fapcoholic.com, 1
 fapiis.gov, 1
 fapp.tube, 1
 fapplepie.com, 1
 faq.ie, 1
 faq.lookout.com, 0
 fara.gov, 1
 faradji.nu, 1
 faradome.ws, 1
@@ -26059,38 +26294,38 @@ fbigame.com, 1
 fbiic.gov, 1
 fbijobs.gov, 1
 fbo.gov, 0
 fboerman.nl, 1
 fbrief.org, 1
 fbsbx.com, 1
 fbtholdings.com, 1
 fburl.com, 1
+fbvstore.com, 1
 fbwgynplus.com, 1
 fbwgynplus.com.au, 1
 fc.media, 1
-fc8882.com, 0
-fc8882.net, 0
+fc8882.com, 1
+fc8882.net, 1
 fca-tools.com, 1
 fcapartsdb.com, 1
 fcapollo.tk, 1
 fcarsenal.tk, 1
 fcbarcelona.cz, 1
 fcburk.de, 1
 fccarbon.com, 1
 fcdn.nl, 1
 fcforum.net, 1
 fcic.gov, 1
 fcingolstadt.de, 1
 fcitasc.com, 1
 fcosinus.com, 1
 fcprovadia.com, 1
 fcsic.gov, 1
 fctwo.download, 1
-fd020.com, 1
 fdalawboston.com, 1
 fdaregs.com, 1
 fdevs.ch, 1
 fdfz.edu.cn, 1
 fdicig.gov, 1
 fdicoig.gov, 1
 fdis.net.cn, 1
 fdlibre.eu, 1
@@ -26146,16 +26381,17 @@ feedstringer.com, 1
 feedthefuture.gov, 0
 feeeei.com, 1
 feeg-wage.gc.ca, 1
 feegg.com.br, 1
 feek.fit, 1
 feel-events.com, 1
 feel.aero, 1
 feelgood-workouts.de, 1
+feelingmassage.nl, 1
 feelmom.com, 1
 feeltennis.net, 1
 feen.us, 1
 feepod.com, 1
 feeriedesign-event.com, 1
 feestbierfusten.nl, 1
 feetpa.ws, 1
 fefelovalex.ru, 1
@@ -26169,16 +26405,17 @@ fegli.gov, 1
 fehngarten.de, 1
 feigling.net, 0
 feildel.fr, 1
 feilen.de, 1
 feilestrokestown.com, 1
 feirlane.org, 0
 feisim.com, 1
 feisim.org, 1
+feistore.com.tw, 1
 feistyduck.com, 1
 feixiang.eu.org, 1
 feiya.ng, 1
 fejervar.hu, 1
 fejes.house, 1
 fekir.info, 1
 feld.design, 1
 feld.saarland, 1
@@ -26514,16 +26751,17 @@ finalx.nl, 1
 finance-colleges.com, 1
 finance-news.ga, 1
 financejobs.ch, 1
 financenews.tk, 1
 financewithcromulent.com, 1
 financialfreedomaus.com, 1
 financniexperti.sk, 1
 finansa.no, 1
+finanskredirehberi.com, 1
 finanstilsynet.dk, 1
 finanziero.de, 1
 finch.am, 1
 finchi.de, 1
 finchnest.co.uk, 1
 find-job-in.com, 1
 find-mba.com, 1
 finda.ae, 1
@@ -26579,16 +26817,17 @@ finlandcook.top, 1
 finlito.tk, 1
 finn.io, 1
 finnclass.cz, 1
 finneas.net, 1
 finnwea.com, 1
 finotax.com, 1
 finpt.com, 0
 fins.money, 1
+finsecurity.eu, 1
 finsprings.org, 1
 finstererlebnis.de, 1
 fintandunleavy.com, 0
 fintechnics.com, 0
 fintry.ca, 1
 finvantage.com, 1
 finwe.info, 1
 finzy.com, 1
@@ -26600,17 +26839,16 @@ fioritic.com, 1
 fioulmarket.fr, 1
 fir3net.com, 1
 firc.de, 1
 fire-schools.com, 1
 firebaseio.com, 1
 firebirdrangecookers.com, 1
 firebounty.com, 1
 fireboxfood.com, 1
-firebugmusic.com, 1
 firecareandsecurity.co.uk, 1
 firechip.cc, 1
 firecore.com, 1
 firecry.org, 1
 firefense.com, 1
 firefighters.dating, 1
 fireflyiii.spdns.org, 1
 firegeisha.com, 1
@@ -26651,26 +26889,28 @@ first.org, 1
 first4it.com, 1
 firstbooks.ml, 1
 firstchoicebouncycastlehire.co.uk, 1
 firstchoicecandy.com, 1
 firstchoicefriseur.at, 1
 firstclasscastles.com, 1
 firstclassleisure.co.uk, 1
 firstcoastteaco.com, 1
+firstcolonyengraving.com, 1
 firstderm.com, 1
 firstdorsal.eu, 1
 firstdry.com.br, 1
 firstfinca.de, 1
 firstinnovationltd.com, 1
 firstmall.de, 1
 firstnet.gov, 1
 firstnetworksouth.com, 1
 firstq.xyz, 1
 firstrays.com, 1
+firstversionist.com, 1
 firstwebring.tk, 1
 firtreetechnology.co.uk, 1
 fischer-its.com, 0
 fischer-kundendienst.de, 1
 fischers.cc, 1
 fischers.it, 1
 fischers.srv.br, 1
 fiscoeconti.it, 1
@@ -26718,16 +26958,17 @@ fiuxy.me, 1
 fiuxy.org, 1
 fiveboosts.xyz, 1
 fiveslice.pizza, 1
 fivestartrader.com, 1
 fivethirtyeight.com, 1
 fiveyearsahead.com, 1
 fix-the-timeline.com, 1
 fix-the-timeline.org, 1
+fix.mk, 1
 fixatom.com, 1
 fixed.supply, 1
 fixedtodayplumbing.com.au, 1
 fixel.express, 1
 fixfm.tk, 1
 fixforce.nl, 1
 fixhotsauce.com, 1
 fixingscrews.co.uk, 1
@@ -26764,16 +27005,17 @@ flagfox.net, 1
 flaggorvarlden.se, 1
 flagi-panstw.pl, 1
 flagistrany.ru, 1
 flagpedia.asia, 1
 flagpedia.net, 1
 flagriculture.gov, 1
 flagshop.jp, 1
 flagspot.net, 0
+flairfindr.com, 1
 flam.io, 1
 flam3d.be, 1
 flam3d.nl, 1
 flam3d.org, 1
 flamero.fi, 1
 flamet.eu, 1
 flameworked.com, 1
 flamingcow.tv, 1
@@ -27071,16 +27313,17 @@ fokus.ag, 1
 fol.tf, 1
 folar.ga, 1
 folio.no, 1
 foliumbiosciences.com, 1
 foliumfinance.com, 1
 foljeton.dk, 1
 folk.as, 1
 folkadelic.de, 1
+folkofolk.se, 1
 follandviolins.com, 1
 followback.net, 1
 follower98.ir, 1
 followmystaff.com, 1
 followthatpage.com, 1
 followthedog.co.uk, 1
 foluomeng.net, 1
 folv.es, 1
@@ -27132,16 +27375,18 @@ footagecrate.com, 1
 footballforum.de, 1
 footballsrit.tk, 1
 for.care, 0
 foray-jero.me, 1
 forbidden-mods.de, 1
 forbiddenhistory.info, 1
 forbusiness.ca, 1
 forcamp.ga, 1
+force4racing.co.uk, 1
+force4racing.com, 1
 forcelink.eu, 1
 forcelink.nl, 1
 forcelinkamerica.com, 1
 forcelinkamerica.nl, 1
 forces.army, 1
 forcewave.com, 1
 ford-mustang.tk, 1
 ford-shop.by, 1
@@ -27321,16 +27566,17 @@ founderio.net, 1
 foundsounds.me, 1
 fourashesgolfcentre.co.uk, 1
 fourashesgolfcentre.com, 1
 fourashesgolfcentre.uk, 1
 fourdesignstudio.com, 0
 fourfourcrew.com, 1
 fourmies.fr, 1
 fournarisopenday.com, 1
+fournisseur-des-collectivites.com, 1
 fourscore.ga, 1
 fourxone.com, 1
 fowlervwparts.com, 1
 fowlsmurf.net, 1
 fox.my, 0
 foxbnc.co.uk, 1
 foxbnc.uk, 1
 foxes.no, 1
@@ -27373,16 +27619,17 @@ fraho.eu, 1
 frail.gq, 1
 framapiaf.org, 0
 framboise314.fr, 1
 framedpaws.com, 1
 framer.com, 1
 framezdakkapellen.nl, 1
 fran.cr, 1
 fran.id, 1
+france-hotellerie-restauration.com, 1
 france-news.cf, 1
 francepandi.fr, 1
 francesca-and-lucas.com, 1
 francescopalazzo.com, 1
 francescopandolfibalbi.it, 1
 francescoyatesfansite.com, 1
 francetraceur.fr, 1
 franchini.email, 1
@@ -27600,17 +27847,17 @@ freerealincest.com, 1
 freergform.org, 1
 freertomorrow.com, 1
 freeshell.de, 1
 freeshkre.li, 1
 freesitemapgenerator.com, 1
 freeslots.guru, 1
 freesms-online.de, 1
 freesnowden.is, 1
-freesoft-board.to, 0
+freesoft-board.to, 1
 freesoftlab.com, 1
 freesolitaire.win, 1
 freesourcestl.org, 1
 freespace.info, 1
 freespot.mobi, 1
 freesquare.net, 1
 freessl.tech, 1
 freesslcertificate.me, 1
@@ -27631,60 +27878,63 @@ freezion.com, 1
 frei.social, 1
 freiboth.ddns.net, 1
 freie-software.net, 1
 freiewaehler-verden.de, 1
 freifahrt.de, 1
 freifall.tk, 1
 freifamily.ch, 1
 freifunk-burgaltendorf.de, 1
-freifunk-essen.de, 1
 freifunk-in-solingen.de, 1
 freifunk-lindlar.net, 1
 freifunk-luenen.de, 1
 freifunk-nrw.de, 1
 freifunk-remscheid.de, 1
 freimeldungen.de, 1
 freims.cc, 1
 freitasul.com.br, 1
 freitasul.io, 1
 freiwuppertal.de, 1
 freiwurst.net, 1
 freizeitbad-riff.de, 1
 freizeitplaza.de, 1
 frejasdal.dk, 1
 frenchcreekcog.org, 1
 frenchguy.ch, 1
+frenchmac.com, 1
 frenchmusic.fr, 1
 frenzel.dk, 1
 frequencebanane.ch, 0
 frequentflyerapp.com, 1
+fresh-components.com, 1
 fresh-hotel.org, 1
 fresh-networks.net, 1
 fresh.co.il, 1
 fresh4.co.uk, 1
 freshbean.club, 1
 freshbooks.com, 1
 freshcode.nl, 1
 freshdesigns.de, 1
 freshdns.nl, 1
 freshempire.gov, 1
 freshers9.com, 1
+freshgujarat.com, 1
 freshmaza.com, 1
 freshpounds.com, 1
 fretscha.com, 1
 frettirnar.is, 1
 fretworksec.com, 1
 freundinnen-ausflug.de, 1
 freundinnen-kurzurlaub.de, 1
 freundinnen-urlaub.de, 1
 freundinnenausflug.de, 1
 frforms.com, 1
 friarsonbase.com, 1
 fribourgviking.net, 1
+fricassea.com, 1
 frickelboxx.de, 1
 frickelmeister.de, 1
 frickenate.com, 1
 fridarestaurantemexicano.com, 1
 fridayfoucoud.ma, 1
 fridaysforfuture-bremen.de, 1
 fridolinka.cz, 1
 friedberg2020.de, 1
@@ -27873,30 +28123,33 @@ fucknazis.tk, 1
 fuckobr.com, 1
 fuckobr.net, 1
 fuckobr.org, 1
 fuckobr.su, 1
 fuckssl.com, 1
 fuckup.dk, 1
 fuckyoupaypal.me, 1
 fuckz.net, 1
+fudie.net, 1
 fuechschen.org, 1
 fuego.tech, 1
 fuelfirebrand.com, 1
 fuelingyourdreams.com, 0
 fuerstenfelder-immobilien.de, 1
+fugioninc.com, 1
 fugle.de, 1
 fuglede.dk, 1
 fuite.ch, 0
 fuitedeau.ch, 0
 fuites.ch, 0
 fujianshipbuilding.com, 1
 fujieb.com, 1
 fujiwaraqol.com, 1
 fujiwarashinzo.com, 1
+fukakukeiba.com, 1
 fukata.org, 1
 fukikaeru.com, 1
 fukt.ca, 1
 fukuiedu.com, 1
 fukuko.biz, 1
 fukuko.xyz, 1
 fukushima-fun.com, 1
 fukushimacoffee.com, 1
@@ -27910,17 +28163,16 @@ full-race.com, 1
 full-stack.ninja, 1
 fullbundle.com, 1
 fullcirclestudio.nl, 1
 fullerlife.org.uk, 1
 fullfilez.com, 1
 fullhost.com, 1
 fullhub.ru, 1
 fullmatch.net, 1
-fullmoviez.co, 1
 fullstacknotes.com, 0
 fulltxt.ml, 1
 fumblers.ca, 1
 fumerolles.ch, 0
 fun-bounce.co.uk, 1
 fun-fan.biz, 1
 fun-tasia.co.uk, 1
 fun4kidzbouncycastles.co.uk, 1
@@ -27973,16 +28225,17 @@ funktionsverket.se, 1
 funkydealz.no, 1
 funkygamer1.de, 1
 funmountaincanyon.com, 1
 funnelweb.xyz, 1
 funniestclip.com, 1
 funnybikini.com, 1
 funnychristianjokes.tk, 1
 funoverip.net, 1
+funprode.org, 1
 funsochi.ru, 1
 funspins.com, 1
 funtastic.ie, 1
 funtime-inflatables.co.uk, 1
 funtime.com.ua, 1
 funtime.kiev.ua, 1
 funtimeentertainment.co.uk, 1
 funtimesbouncycastles.co.uk, 1
@@ -28098,17 +28351,19 @@ fyfywka.com, 1
 fyksen.me, 1
 fyn.nl, 1
 fyner.lt, 1
 fyol.pw, 1
 fyol.xyz, 0
 fyreek.me, 1
 fyretrine.com, 1
 fysesbjerg.dk, 1
+fysio-ict.nl, 1
 fysiomassageoosterhout.nl, 1
+fysiotherapie-ict.nl, 1
 fysiotherapieapeldoornzuid.nl, 1
 fysiotherapieholtenbroek.nl, 1
 fysiotherapierossum.nl, 1
 fysiovdberg.nl, 1
 fyss.ga, 1
 fysuite.com, 1
 fytcart.com, 1
 fytorio-pasxalis.gr, 1
@@ -28216,16 +28471,17 @@ gagor.pl, 1
 gagramore.cf, 1
 gagygnole.ch, 0
 gaiavanderzeyp.com, 1
 gaichon.com, 0
 gaigelama.com, 1
 gailfellowsphotography.com, 1
 gaines-sodiamex.fr, 1
 gainesvillega.gov, 1
+gainins.com, 1
 gaio-automobiles.fr, 1
 gaireg.de, 1
 gaiserik.com, 0
 gaitandmobility.com, 1
 gaitrehabilitation.com, 1
 gaitresearch.com, 1
 gajas18.com, 1
 gajowniczek.eu, 1
@@ -28387,16 +28643,17 @@ gandalfthefeline.com, 1
 gandc.co, 0
 gandgliquors.com, 1
 ganggalbichler.at, 1
 gangnam-club.com, 1
 gangnamcool.com, 1
 ganodermatiendaonline.com, 1
 ganpris.online, 1
 gansleit.com, 0
+gantt-chart.com, 1
 ganyouxuan.com, 1
 ganzgraph.de, 1
 ganztagplus.de, 1
 gao.ci, 1
 gao.rocks, 1
 gaodebo.com, 1
 gaojianli.me, 1
 gaojianli.tk, 1
@@ -28405,16 +28662,17 @@ gaos.org, 1
 gaozj.com, 1
 gapdirect.com, 1
 gapfa.org, 0
 gaphag.ddns.net, 1
 garage-door.pro, 1
 garage-leone.com, 0
 garage-meynard.com, 1
 garagedejan.ch, 1
+garagedoorrepaircedarhilltx.com, 1
 garagedoorrepairingsanjose.com, 1
 garageenginuity.com, 1
 garagegoossens.be, 1
 garagemhermetica.org, 1
 garagesmart.com.au, 1
 garagevanhulle-used.be, 0
 garanteasy.com, 1
 garantieabschluss.de, 0
@@ -28735,22 +28993,25 @@ gensend.com, 1
 gensenwedding.jp, 1
 genshiken-itb.org, 1
 gensicke.de, 1
 genslerapps.com, 1
 genslerwisp.com, 1
 gensokyo.chat, 0
 gensokyo.re, 1
 gensonline.eu, 1
+gentapps.com, 1
 gentcdn.com, 1
 gentianes.ch, 1
 gentledance.ch, 1
 gentledance.net, 1
+gentlemens-life.de, 1
 gentlent.com, 1
 gentlent.net, 1
+gentlentapis.com, 1
 gentoo-blog.de, 1
 gentooblog.de, 1
 gentoocn.org, 1
 gentz.rocks, 1
 genunlimited.ga, 1
 genunlimited.tk, 1
 genusbag.com, 1
 genusshotel-riegersburg.at, 1
@@ -28824,27 +29085,28 @@ germandarknes.net, 1
 germanicvs.tk, 1
 germanmasterpainters.nz, 1
 germansoldiers.net, 1
 germanssky.de, 1
 germantrip.tk, 1
 germany-board.tk, 1
 germanytravel.ga, 1
 germanytravelguide.ml, 1
+germfr.ee, 1
 gernert-server.de, 1
 gero.io, 1
 geroiplavska.tk, 1
 gerritcodereview.com, 1
 gers-authentique.com, 1
 gervais-avocat.fr, 1
 gerwinvanderkamp.nl, 1
 ges-bo.de, 1
 gesamenvat.nl, 1
 geschaeftsideen-ebook.de, 1
-geschenkly.de, 1
+geschenkly.de, 0
 geschichtscheck.de, 1
 geschmacksache.online, 1
 geschwinder.net, 1
 geseduc.cl, 1
 gesevi.com, 1
 gesica.cloud, 1
 gesmav-trier.de, 1
 gesnex.com, 1
@@ -28853,16 +29115,17 @@ gestionrocamar.es, 1
 gestlifes.com, 1
 gestorehotel.com, 1
 gestormensajeria.com, 1
 gestsal.com, 1
 gestus.co, 1
 gesundheitmassage.com, 1
 gesundheitswelt24.de, 1
 get-asterisk.ru, 1
+get-baaam.com, 1
 get-california-real-estate.com, 1
 get-erp.ru, 1
 get-it-live.com, 1
 get-it-live.de, 1
 get-maurice.com, 1
 get-on.bid, 1
 get-quick-bits-fast-2018.pw, 1
 get-refer.com, 1
@@ -28877,16 +29140,17 @@ getbox.me, 1
 getbreadcrumbs.com, 1
 getbrowink.com, 1
 getbutterfly.com, 1
 getcard.cc, 1
 getcertified.pro, 1
 getcheapinsurancenow.info, 1
 getcloak.com, 0
 getcolq.com, 1
+getcreditscore.com.au, 1
 getdash.io, 1
 getdeveloper.de, 1
 geteduroam.no, 1
 geterp.ru, 1
 geteventbox.com, 1
 getfedora.org, 1
 getfilterlive.org, 1
 getfirstalert.com, 1
@@ -28896,31 +29160,33 @@ getgeek.ee, 1
 getgeek.es, 1
 getgeek.fi, 1
 getgeek.fr, 1
 getgeek.io, 1
 getgeek.no, 1
 getgeek.nu, 1
 getgeek.pl, 1
 getgeek.se, 1
+gethome.ru, 1
 gethow.org, 1
 gethttpsforfree.com, 1
 geti2p.com, 1
 getidmcc.com, 1
 getimgs.com, 1
 getinphase.com, 1
 getintopc.com, 1
 getitlive.de, 1
 getitpeople.com, 1
 getlawyered.com.au, 1
 getleanflorida.gov, 1
 getmango.com, 1
 getmdl.io, 1
 getmerch.eu, 1
-getmovil.com, 0
+getmonero.cz, 1
+getmovil.com, 1
 getnib.com, 1
 getnikola.com, 1
 getonyx.com, 1
 getpagespeed.com, 1
 getpaidclub.tk, 1
 getpanelapp.com, 1
 getpei.com, 1
 getprivacy.net, 1
@@ -28956,16 +29222,18 @@ getyour.nz, 1
 getyourlifestraight.com, 1
 getyourphix.tk, 1
 geus-okna.eu, 1
 gevaulug.fr, 1
 gevelreinigingtiel.nl, 1
 geyduschek.be, 1
 gezinnenhilton.com, 1
 gezondetips.nl, 1
+gezondheidszorg-ict.nl, 1
+gezondheidszorg-it.nl, 1
 gf-franken.de, 1
 gf5fcalc.com, 1
 gfac.ru, 1
 gfahnen.de, 1
 gfast.ru, 1
 gfcleisure.co.uk, 1
 gfe.li, 1
 gfe.link, 1
@@ -29016,17 +29284,16 @@ ghaglund.se, 1
 gheestore.in, 1
 ghettonetflix.de, 1
 ghfip.com.au, 1
 ghini.com, 1
 ghislainphu.fr, 1
 ghkim.net, 1
 ghostblog.info, 0
 ghostcir.com, 1
-ghostsupreme.eu, 1
 ghou.me, 1
 ghowell.io, 1
 ghull.email, 1
 ghuntley.com, 0
 giac.net, 1
 giac.org, 1
 giacomopelagatti.it, 1
 giakki.eu, 0
@@ -29039,16 +29306,17 @@ giaoxudongtri.com, 1
 giaphaco.com, 1
 giardinaggio.milano.it, 1
 giardinaggio.napoli.it, 1
 giardinaggio.roma.it, 1
 giardiniblog.it, 1
 giardiniere.bologna.it, 1
 giardiniere.milano.it, 1
 giardiniere.roma.it, 1
+giardinoperfetto.com, 1
 gibraltar.at, 1
 gibraltarwi.gov, 1
 gibreel.tk, 1
 gichigamigames.com, 1
 giddyaunt.net, 1
 giebel.it, 1
 giegler.software, 0
 gielectrical.com.au, 1
@@ -29082,17 +29350,16 @@ giggletotz.co.uk, 1
 gigin.eu, 1
 gigin.me, 1
 gigis-pizzeria.de, 1
 gigis.cloud, 1
 gigiscloud.servebeer.com, 1
 giglink.club, 1
 gigolodavid.be, 1
 gigseekr.com, 1
-gigsoupmusic.com, 1
 gigtroll.eu, 1
 gijsbertus.com, 1
 gijswesterman.nl, 1
 gilangcp.com, 1
 gileadpac.com, 1
 gilescountytn.gov, 1
 giliamor.com, 1
 gilium.com, 1
@@ -29200,17 +29467,17 @@ gjcampbell.co.uk, 1
 gjengset.com, 1
 gjspunk.de, 0
 gjung.com, 0
 gkasper.de, 1
 gkb2020.ch, 1
 gkimanyar.org, 1
 gkoenig-innenausbau.de, 1
 gkralik.eu, 1
-gku-winterling.de, 1
+gku-winterling.de, 0
 gkv-gorinchem.nl, 1
 gkvsc.de, 0
 gl.search.yahoo.com, 0
 glabiatoren-kst.de, 1
 glaciernursery.com, 1
 gladdy.co.uk, 1
 gladdy.uk, 1
 gladdymedia.co.uk, 1
@@ -29258,16 +29525,17 @@ glenhuntlyapartments.com.au, 1
 glenshere.com, 1
 glevolution.com, 1
 glexia.com, 1
 glidingshop.cz, 1
 glidingshop.de, 1
 glidingshop.eu, 1
 gliihc.net, 1
 glimhome.com, 1
+glittersjabloon.nl, 1
 glitzafricafashionweek.com, 1
 glitzerstuecke.de, 1
 glixee.com, 1
 glk.partners, 1
 glloq.org, 0
 glnpo.gov, 1
 gloalerts.com, 1
 global-adult-webcams.com, 1
@@ -29357,16 +29625,18 @@ gmail.com, 0
 gmanukyan.com, 1
 gmao.com, 1
 gmbh-kiekin.de, 1
 gmc.uy, 1
 gmccar.it, 1
 gmcd.co, 1
 gmdu.net, 1
 gme.one, 1
+gmeet.at, 1
+gmeet.io, 1
 gmenhq.com, 1
 gmind.ovh, 1
 gmod.de, 1
 gmpark.dk, 1
 gmpartsdb.com, 1
 gmslparking.co.uk, 1
 gmta.nl, 1
 gmtplus.co.za, 1
@@ -29420,16 +29690,17 @@ goalbookapp.com, 1
 goalongtravels.com, 1
 goanalyse.co.uk, 1
 goand.run, 1
 goarmy.eu, 1
 goatbot.xyz, 1
 goatcloud.com, 1
 goaudits.com, 1
 gobarrelroll.com, 1
+goblackcat.com, 1
 goblinsatwork.com, 1
 goblintears.com, 1
 gobouncy.co.uk, 1
 gobouncy.com, 1
 gobytedesign.co.uk, 1
 goc4wraps.com, 1
 gocardless.com, 1
 gocher.me, 1
@@ -29464,16 +29735,17 @@ goedverzekerd.net, 1
 goehler-baumpflege.de, 1
 goeikan.life, 1
 goemail.me, 1
 goerner.me, 1
 goerres2014.de, 1
 goetemp.de, 1
 goetic.space, 1
 goettinger-biergarten.de, 1
+goetzinger-web.de, 1
 goffrie.com, 1
 gofigure.fr, 0
 goflo.net, 1
 gofoiayourself.org, 1
 gogetssl.com, 0
 gogle-analytics.com, 1
 gogleapis.com, 1
 gogomail.ga, 1
@@ -29550,16 +29822,17 @@ gondawa.com, 1
 gondelvaartdwarsgracht.nl, 1
 gondola-parkinson.com, 1
 gongjianwei.com, 1
 gongjuhao.com, 1
 gonkar.com, 1
 gonx.dk, 0
 gonzalesca.gov, 1
 goo.gl, 1
+good-tips.pro, 1
 good588.com, 1
 gooday.life, 1
 gooddomainna.me, 1
 goodfeels.net, 1
 goodfor.us, 1
 goodhealthtv.com, 1
 goodiesoft.hu, 1
 goodmood.co.uk, 1
@@ -29658,16 +29931,17 @@ goto.world, 1
 goto10.se, 1
 gotomi.info, 0
 gotowebsites.info, 1
 gotowned.org, 0
 gotoxy.at, 1
 gotrail.fr, 1
 gotravel.us, 1
 gotrek.com.au, 1
+gottcar.com, 1
 gottfridsberg.org, 1
 goudenharynck.be, 1
 gouforit.com, 1
 goug0.com, 1
 goug1.com, 1
 goug10.com, 1
 goug11.com, 1
 goug16.com, 1
@@ -29773,16 +30047,17 @@ gradingcontractornc.com, 1
 grads360.org, 1
 gradualgram.com, 1
 graeber.com, 1
 graecum.org, 1
 graetnew.com, 1
 graf-igor.ch, 1
 graf.re, 1
 grafcaps.com, 1
+grafe.com, 1
 graffen.dk, 1
 grafia.ink, 1
 graficasantana.com.br, 1
 grafik.gq, 1
 grafittikontroll.cf, 1
 grafmag.pl, 1
 grafmurr.de, 1
 grafoteka.pl, 1
@@ -29917,16 +30192,17 @@ green-attitude.be, 1
 green-care.nl, 1
 green-light.cf, 1
 green-light.co.nz, 1
 green-light.ga, 1
 green-light.gq, 1
 green-light.ml, 1
 green-techno.ru, 1
 greenaddress.it, 1
+greenangels.com.ua, 1
 greenapproach.ca, 1
 greencircleplantnursery.com.au, 1
 greencircleplantnursery.net.au, 1
 greenconn.ca, 1
 greendrive.tk, 1
 greener.pl, 1
 greenews.ga, 1
 greengates.co.uk, 1
@@ -30107,16 +30383,17 @@ growwithdaylight.co.uk, 1
 growy.ch, 0
 grozter.se, 1
 grrmmll.com, 1
 grsecurity.net, 1
 gruble.de, 1
 gruebebraeu.ch, 1
 gruelang.org, 1
 gruenderlehrstuhl.de, 1
+gruenderwoche-dresden.de, 1
 gruene-im-rvr.de, 1
 gruene-wattenscheid.de, 1
 gruenes-wp.de, 1
 gruenprint.de, 1
 gruenstreifen-ev.de, 1
 gruhn.email, 1
 grumpy.fr, 1
 grumpygamers.com, 1
@@ -30137,16 +30414,17 @@ grupog2i.com, 1
 grupoinassa.com, 1
 grupomakben.com, 0
 grupomedlegal.com, 1
 grupoparco.com, 1
 grupoproabienesraices.com.mx, 1
 gruposertaoveredas.com.br, 1
 gruselgrotte.com, 1
 grusenmeyer.be, 1
+gruslic.org.mx, 1
 gruver.de, 1
 gruwa.net, 1
 gruzoperevozki.ml, 1
 gryinx.com, 1
 gs1pt.org, 1
 gs93.de, 1
 gsaj114.net, 1
 gscloud.xyz, 1
@@ -30165,16 +30443,17 @@ gst.priv.at, 1
 gstand.tk, 1
 gt-himmel.com, 1
 gt-network.de, 1
 gta-arabs.com, 1
 gtacty.co, 1
 gtaforum.nl, 1
 gtapg.net, 1
 gtcprojects.com, 1
+gtd.cloud, 1
 gtdgo.com, 0
 gtlaun.ch, 1
 gtlfsonlinepay.com, 1
 gtmetrix.com, 1
 gtn-pravda.ru, 1
 gtoepfer.de, 1
 gtopala.com, 1
 gtopala.net, 1
@@ -30198,17 +30477,16 @@ gubagoo.io, 1
 gudangpangan.id, 1
 gudini.net, 1
 gudrunfit.dk, 1
 guegan.de, 1
 guelo.ch, 1
 guelphhydropool.com, 1
 guendra.dedyn.io, 1
 guenthereder.at, 1
-guenthernoack.de, 1
 guerard.info, 1
 guernseycounty.gov, 1
 guerrilla.technology, 1
 guesthouse-namaste.com, 1
 guevener.de, 1
 gueze-ardeche.fr, 1
 gueze-sas.fr, 1
 gufen.ga, 1
@@ -30304,16 +30582,17 @@ gut8er.com.de, 1
 gute-schulen-porta.de, 1
 guthabenkarten-billiger.de, 1
 gutieli.com, 1
 gutools.co.uk, 1
 guts.me, 1
 guts.moe, 1
 gutschein-spezialist.de, 1
 gutscheinemagic.de, 1
+gutscheineplus.de, 1
 gutscheingeiz.de, 1
 gutuia.blue, 1
 guus-thijssen.nl, 1
 guvernalternativa.ro, 1
 guyeskens.be, 1
 guyfletcher.com, 1
 guys-reviews.ml, 1
 guysauto.com, 1
@@ -30363,17 +30642,16 @@ gymjp.com, 1
 gymkirchenfeld.ch, 1
 gymlife.fr, 1
 gymnaserenens.ch, 0
 gymnasium-farmsen.de, 1
 gymnasium-hittfeld.de, 1
 gymnastic.ga, 1
 gymnchod.cz, 1
 gympap.de, 1
-gympass.com, 1
 gynaecology.co, 1
 gynem.de, 1
 gynoguide.com, 1
 gyoza.beer, 1
 gypsyreel.com, 1
 gyre.ch, 0
 gyrenens.ch, 0
 gyroscopicinvesting.com, 1
@@ -30501,16 +30779,17 @@ hackgins.com, 1
 hackhouse.sh, 1
 hackingand.coffee, 0
 hackingarise.com, 1
 hackingdh.com, 1
 hackingsafe.com, 1
 hackingvision.com, 1
 hackintosh.eu, 1
 hackmd.io, 1
+hackmeifyoucan.site, 1
 hackmeimfamo.us, 1
 hackreone.com, 1
 hacksecu.re, 1
 hacksoc.co.uk, 1
 hackthat.tk, 1
 hackthissite.org, 1
 hacktic.info, 1
 hacktivis.me, 1
@@ -30614,16 +30893,17 @@ halo.fr, 1
 halocredit.pl, 1
 halongbaybackpackertour.com, 1
 haloobaloo.com, 1
 haloria.com, 1
 haltegame.com, 1
 halyul.com, 1
 hamacho-kyudo.com, 1
 hamali.bg, 1
+hamamatsu-kotsu.co.jp, 1
 hamarimarriage.tk, 1
 hambassadors.org, 1
 hamburg40grad.de, 1
 hamburgerbesteld.nl, 1
 hamburgobgyn.com, 1
 hamcocc.com, 1
 hamcram.io, 1
 hamiltonlinen.com, 1
@@ -30638,16 +30918,17 @@ hammercast.fm, 1
 hammerpondkennels.co.uk, 1
 hampl.tv, 1
 hampshiretechservices.co.uk, 1
 hamsystems.eu, 1
 hamu.blue, 1
 hana-groupsac.com, 1
 hana.ondemand.com, 1
 hanakaraku.com, 1
+hanami-web.tokyo.jp, 1
 hanazono.tokyo, 1
 hanbing.it, 1
 hancocklawfl.com, 1
 handbrake.fr, 1
 handcraft.eu.org, 1
 handgelenkbandage-test.de, 1
 handknit.com.np, 1
 handlecoin.com, 1
@@ -30742,16 +31023,17 @@ happychungus.tk, 1
 happycoder.net, 1
 happydietplan.com, 1
 happydoq.ch, 0
 happygadget.me, 1
 happyhourboard.com, 1
 happykidscastles.co.uk, 1
 happylearning.com, 1
 happylifestyle.com, 1
+happyretail.co, 1
 happyschnapper.com, 1
 happyteamlabs.com, 1
 happytiger.eu, 1
 happyukgo.com, 1
 hapsana.nl, 1
 hapsfordmill.co.uk, 1
 haptemic.com, 1
 hapvm.com, 1
@@ -30800,16 +31082,17 @@ harmoney.com.au, 1
 harmonyplace.com, 1
 harms.io, 1
 harmsboone.org, 1
 harnov.dk, 1
 haroldsharpe.com, 1
 harp.gov, 1
 harpersvilleal.gov, 1
 harpoo.jp, 0
+harptechnologies.com, 1
 harrcostl.com, 1
 harringtonca.com, 1
 harrisandharris.com.au, 1
 harrisconsulting.ie, 1
 harrisonm.com, 1
 harrisonsand.com, 0
 harrisonswebsites.com, 1
 harry-baker.com, 1
@@ -30865,18 +31148,18 @@ hashiura.jp, 1
 hashplex.com, 1
 hashru.nl, 1
 hashtagpatriot.com, 1
 hashtagswimwear.com, 1
 hashworks.net, 1
 hashxp.org, 1
 hasilocke.de, 1
 haskett.ca, 1
-haskovec.com, 1
 hasselbach-dellwig.de, 1
+hasseplatslageri.se, 1
 hassra.org.uk, 1
 hastaneurunleri.com.tr, 1
 hatachan.site, 1
 hatarisecurity.co.ke, 1
 hatcher.cloud, 1
 hatethe.uk, 1
 hatpakha.com, 1
 hatter.ink, 1
@@ -30927,16 +31210,17 @@ hawawa.kr, 1
 hawickvets.co.uk, 1
 hawk-la.com, 1
 hawkargentina.com, 1
 hawkeyeinsight.com, 1
 hawkinsonkiaparts.com, 1
 hawkofgeorgia.com, 1
 hawkon.dk, 1
 hawksguild.com, 1
+hawksracing.de, 1
 hax.to, 1
 haxdroid.com, 1
 haxo.nl, 0
 haxx.hu, 1
 hayai.space, 1
 hayashi-rin.net, 1
 haydenjames.io, 1
 hayfordoleary.com, 1
@@ -31224,16 +31508,17 @@ hellsh.com, 1
 helm-pokale.at, 1
 helm-pokale.de, 1
 helm-trophy.com, 1
 help.simpletax.ca, 1
 help207.xyz, 1
 helpantiaging.com, 1
 helpconnect.com.au, 1
 helpekwendenihospital.com, 1
+helpfulhealthinsurance.com, 1
 helpkoil.com, 1
 helpmij.cf, 1
 helpscoutdocs.com, 1
 helptasker.com, 1
 helptasker.net, 1
 helptasker.ru, 1
 helpwithadoption.com, 1
 helpwithinsomnia.org, 0
@@ -31378,28 +31663,30 @@ hesyifei.com, 1
 hetene.nl, 1
 hethakhout.nl, 1
 hethely.ch, 1
 hetmeisjeachterpauw.nl, 1
 hetmer.com, 1
 hetmer.cz, 1
 hetmer.net, 1
 hetushu.com, 1
+hetwalhalla.nl, 1
 heute-kaufen.de, 1
 heute.training, 1
 heutger.net, 1
 hevertonfreitas.com.br, 1
 hex.nl, 1
 hexacon.io, 1
 hexadecimal.tech, 1
 hexagon-e.com, 1
 hexapt.com, 1
 hexclock.io, 1
 hexcode.in, 1
 hexed.it, 1
+hexhu.net, 1
 hexiaohu.cn, 1
 hexicurity.com, 1
 hexid.me, 0
 hexieshe.com, 1
 hexo.io, 0
 hexobind.com, 1
 hexony.com, 1
 hexr.org, 1
@@ -31479,25 +31766,27 @@ hiddenhillselectrician.com, 1
 hiddenhillsexteriorlighting.com, 1
 hiddenhillslandscapelighting.com, 1
 hiddenhillslighting.com, 1
 hiddenhillsoutdoorlighting.com, 1
 hiddenimage.ml, 1
 hiddenmalta.net, 1
 hiddenpalms.tk, 1
 hiddout.com, 1
+hide.me, 1
 hideallip.com, 1
 hidedd.com, 1
 hideo54.com, 1
 hideouswebsite.com, 1
 hidupnomad.com, 0
 hieisuki.ga, 1
 hielscher.com, 1
 hieu.com.au, 1
 hif88.com, 1
+hifala.de, 1
 hiffo.de, 1
 hifly.com.tw, 1
 hifumi.us, 1
 hig.gov, 1
 higgstools.org, 1
 highair.net, 1
 highclasseducation.com, 1
 highcorkett.com, 1
@@ -31508,16 +31797,17 @@ highkick.jp, 1
 highland-webcams.com, 1
 highlandparkcog.org, 1
 highlandsfl.gov, 1
 highlatitudestravel.com, 0
 highlegshop.com, 1
 highlevelwoodlands.com, 1
 highlnk.com, 1
 highpressuretech.com, 1
+highriskpay.com, 1
 highspeed-arnsberg.de, 1
 highspeedinternet.my, 1
 hightechbasementsystems.com, 1
 hightechgadgets.net, 1
 hightechreviews.ga, 1
 hightimes.com, 1
 highwaytohoell.de, 1
 higilopocht.li, 1
@@ -31627,16 +31917,17 @@ history-schools.com, 1
 history.google.com, 1
 history.gov, 1
 history.pe, 1
 hitandhealth.nl, 1
 hitchpin.com, 1
 hitchunion.org, 1
 hitechgr.eu, 1
 hiteco.com, 1
+hiteshbrahmbhatt.com, 1
 hiteshchandwani.com, 1
 hiteshjoshi.com, 1
 hitflow.fr, 1
 hitfront.com, 1
 hithardnews.com, 1
 hititgunesi-tr.com, 1
 hitmanstat.us, 1
 hitn.at, 1
@@ -31707,16 +31998,17 @@ hk.search.yahoo.com, 0
 hkas.org.hk, 1
 hkbsurgery.com, 1
 hkdobrev.com, 1
 hklbgd.org, 1
 hkmap.co, 1
 hkmap.com, 1
 hkmap.live, 1
 hkmap.net, 1
+hkno.it, 1
 hkr.at, 1
 hks-ffm.de, 1
 hks-projekt.at, 1
 hks.pw, 1
 hktech.com, 1
 hktkl.com, 1
 hkustmbajp.com, 1
 hl8id.vip, 1
@@ -31773,16 +32065,17 @@ hochoukikikiraku.com, 1
 hochyi.com, 1
 hochzeit-dana-laurens.de, 1
 hochzeitsfotograf-deinfoto.ch, 1
 hochzeitsplanerin-hamburg.de, 1
 hockey.academy, 1
 hockeyapp.ch, 1
 hockeymotion.ch, 0
 hodgephotography.com, 1
+hodler.shop, 1
 hoe.re, 1
 hoeft-autolackierung.de, 1
 hoekvanholland.eu, 1
 hoelty.network, 1
 hoeren.club, 1
 hoesnelwasik.nl, 1
 hoeveiligismijn.nl, 1
 hoevenstein.nl, 0
@@ -32083,16 +32376,17 @@ hostingsolutions.cz, 1
 hostingsrv.nl, 1
 hostix.de, 1
 hostma.ma, 1
 hostmark.pl, 1
 hostmijnpagina.nl, 1
 hostmodern.com.au, 1
 hostmywebsite.online, 1
 hosuronline.com, 1
+hot-and-new.gr, 1
 hot-spa.ch, 0
 hotartup.com, 1
 hotcandlestick.com, 1
 hotchillibox.com, 1
 hotcoin.io, 1
 hotdoc.com.au, 1
 hotel-alan.hr, 1
 hotel-kontorhaus-stralsund.de, 1
@@ -32107,16 +32401,17 @@ hotelamgarnmarkt.at, 0
 hotelbonacabol.com, 1
 hotelbretagne.dk, 1
 hotelcoliber.pl, 1
 hotelconsulado.com.br, 1
 hotelcorporate.codes, 1
 hotelcorporatecodes.com, 1
 hotelelaphusabrac.com, 1
 hoteles4you.com, 1
+hotelevergrandpalace.in, 1
 hotelevershine.com, 1
 hotelflow.com.br, 1
 hotelident.de, 1
 hotelindraprasth.biz, 1
 hotelkaj.hr, 1
 hotellerssolutions.com, 1
 hotellilas.in, 1
 hotello.io, 1
@@ -32170,16 +32465,17 @@ housekeeperlondon.co.uk, 1
 houselocal.co.uk, 1
 housemates.uk.com, 1
 houseofherbs.gr, 1
 houseofhouston.com, 1
 houseofpertijs.com, 1
 houseofyee.com, 1
 houser.lu, 1
 housese.at, 1
+housingloan.jp, 1
 housingneedz.com, 1
 houstonapartmentinsiders.com, 1
 houstonauthorizedrepair.com, 1
 houstoncreditlaw.com, 1
 houstonendodontics.com, 1
 houstongaragedoorsrepair.com, 1
 houstonlockout.com, 1
 houstontxlocksmiths.com, 1
@@ -32409,17 +32705,16 @@ hubrecht.at, 1
 hubspot.com, 1
 hubspot.de, 1
 hubspot.es, 1
 hubspot.fr, 1
 hubspot.jp, 1
 huchet.me, 1
 hudebnibazarmixer.cz, 1
 hudhaifahgoga.co.za, 1
-hudingyuan.cn, 1
 hudobniny.net, 1
 hudognik.com, 1
 hudrydum.cz, 1
 hudsonfaceandeye.com, 1
 hudsonwi.gov, 1
 huduser.gov, 1
 huendeleskopfhuette.de, 1
 huersch.com, 1
@@ -32449,16 +32744,17 @@ hui-in.com, 1
 hui-in.net, 1
 huihui.moe, 1
 huimiquan.com, 1
 huininga.com, 1
 huininga.nl, 1
 huininga.org, 1
 huipc.com, 1
 huirongis.me, 1
+huisartsen-ict.nl, 1
 huisartsenpraktijkheemraadssingel.nl, 1
 huisartsenpraktijksonmezer.nl, 1
 huisartsenpraktijkzonnehoed.nl, 1
 huiser.nl, 1
 huisjeboompje-baby.nl, 1
 huislaw.com, 1
 huislijn.nl, 1
 huissier-vosges.com, 1
@@ -32526,16 +32822,17 @@ hundeformel.de, 1
 hundeverwaltung.de, 1
 hundhausen.de, 1
 hundter.com, 1
 hunger.im, 1
 huniverse.co, 1
 hunngard.com, 1
 hunqz.com, 1
 hunstoncanoeclub.co.uk, 1
+hunt.gs, 1
 huntcraft.ru, 1
 hunter-read.com, 1
 hunter.io, 1
 hunterjohnson.io, 1
 hunterkehoe.com, 1
 huntertechsolution.com, 1
 huntexpired.com, 1
 huntingdonbouncers.co.uk, 1
@@ -32560,17 +32857,16 @@ hurtigtinternet.dk, 1
 husakbau.at, 1
 hushfile.it, 1
 husic.net, 0
 husk.house, 1
 huskyeye.de, 1
 huskyinc.us, 0
 husqvarnamoped.se, 1
 hussam.eu.org, 1
-hustlehope.com, 1
 huto.ml, 1
 huurwoordenaar.nl, 1
 huutonauru.net, 1
 huwcbjones.co.uk, 1
 huwcbjones.uk, 1
 huwjones.me, 1
 huxcoconstruction.com, 1
 huxley.net, 1
@@ -32616,16 +32912,17 @@ hybridworx.de, 1
 hybridworx.eu, 1
 hybridworx.net, 1
 hybridworx.org, 1
 hybrydowe-samochody.pl, 1
 hybula.com, 1
 hycken.com, 1
 hyckenberg.com, 1
 hyderabadonlinegifts.com, 1
+hydra-clothing.com, 1
 hydracommunity.net, 1
 hydrante.ch, 0
 hydro17.com, 1
 hydroagro.pl, 1
 hydrocloud.net, 1
 hydrographicsocietybenelux.eu, 1
 hydroponicglobal.com.au, 1
 hydroturbine.info, 0
@@ -32785,28 +33082,32 @@ ianklug.com, 1
 iankmusic.com, 1
 ianmooreis.me, 1
 ianmoriarty.com.au, 1
 iansyst.co.uk, 1
 ianwalsh.org, 0
 iap.network, 1
 iapws.com, 1
 ias-gruppe.net, 1
+ias.ua, 1
 iassess.eu, 1
 iatfei.com, 1
 iautodily.cz, 1
 iavian.com, 1
 ib-wedler.de, 0
 iba.community, 1
+iba.gov.au, 1
 ibacktraced.it, 1
 ibaq.nl, 1
 ibauruapan.com.mx, 1
 ibavaro.com, 1
 ibb.co, 1
 ibcl.us, 1
+ibcmed.com, 1
+ibcmed.net, 1
 ibcmed.org, 1
 ibe.de, 1
 ibeep.com, 1
 iberiaversicherungen.com, 1
 ibericaderedes.es, 1
 ibericarbenet.es, 1
 ibericarcuzco.es, 1
 ibericarcuzcomini.es, 1
@@ -32850,44 +33151,47 @@ ibwc.gov, 1
 ibykos.com, 1
 ic-lighting.com.au, 1
 ic3.gov, 1
 icafecash.com, 1
 icanhas.report, 1
 icanhasht.ml, 1
 icanhazpass.com, 1
 icarlos.net, 1
+icasnetwork.com, 0
 icasture.top, 1
 icbemp.gov, 0
 icci.info, 1
 iccorporateinteriors.com.au, 1
 iccpublisher.com, 1
 icdp.org.ua, 1
 ice.xyz, 1
 iceandfiremechanical.com, 1
 icebat.dyndns.org, 1
 iceberg.academy, 0
 icebook.co.uk, 1
 icebound.win, 1
 icecars.net, 1
 icecodenew.tk, 1
 icecontrol.ro, 1
 icecutethings.com, 1
+icedream.tech, 1
 icelandic.cf, 1
 icelandicasian.com, 1
 iceloch.com, 1
 icetiger.eu, 1
 icetravellers.com, 1
 icewoman.net, 1
 ich-hab-die-schnauze-voll-von-der-suche-nach-ner-kurzen-domain.de, 1
 ich-tanke.de, 1
 icharme.fr, 1
 ichasco.com, 1
 ichbinein.org, 1
 ichbinkeinreh.de, 1
+ichglaubesbackt.de, 1
 ichitaso.com, 1
 ickerseashop.com, 1
 iclinic.ua, 1
 icloud.st, 1
 icmhd.ch, 0
 icmp2018.org, 1
 icnc.ga, 0
 icnsoft.org, 1
@@ -32968,16 +33272,17 @@ idenamaislami.com, 1
 idensys.nl, 1
 ident-clinic.be, 1