Merge m-c to autoland
authorPhil Ringnalda <philringnalda@gmail.com>
Sun, 06 Nov 2016 19:15:53 -0800
changeset 348040 45ed47afd5181810fc662cc87eefc986bf939778
parent 348039 f26d5e27e1b69638bb9c0e24a1936f40ac7b40dc (current diff)
parent 348026 908557c762f798605a2f96e4c943791cbada1b50 (diff)
child 348041 63be72bf8bbd66a07c64e29a5deb52c1b3a2f411
push id10298
push userraliiev@mozilla.com
push dateMon, 14 Nov 2016 12:33:03 +0000
treeherdermozilla-aurora@7e29173b1641 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone52.0a1
Merge m-c to autoland
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,31 +1,31 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1478348528369" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1478439427463" xmlns="http://www.mozilla.org/2006/addons-blocklist">
   <emItems>
     <emItem blockID="i988" id="{b12785f5-d8d0-4530-a3ea-5c4263b85bef}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i398" id="{377e5d4d-77e5-476a-8716-7e70a9272da0}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i698" id="{6b2a75c8-6e2e-4267-b955-43e25b54e575}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
+    <emItem blockID="i1263" id="axtara__web@axtara.com">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="1.1.1" severity="3"/>
+    </emItem>
     <emItem blockID="i1231" id="youtube@downloader.yt">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i1263" id="axtara__web@axtara.com">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="1.1.1" severity="3"/>
-    </emItem>
     <emItem blockID="i922" id="{34712C68-7391-4c47-94F3-8F88D49AD632}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="39.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
@@ -176,21 +176,21 @@
     <emItem blockID="i626" id="{20AD702C-661E-4534-8CE9-BA4EC9AD6ECC}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i501" id="xivars@aol.com">
+    <emItem blockID="i716" id="{cc6cc772-f121-49e0-b1f0-c26583cb0c5e}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i716" id="{cc6cc772-f121-49e0-b1f0-c26583cb0c5e}">
+    <emItem blockID="i501" id="xivars@aol.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i360" id="ytd@mybrowserbar.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i666" id="wecarereminder@bryan">
@@ -202,24 +202,24 @@
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i684" id="{9edd0ea8-2819-47c2-8320-b007d5996f8a}">
       <prefs>
         <pref>browser.search.defaultenginename</pref>
       </prefs>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
+    <emItem blockID="i444" id="fplayer@adobe.flash">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i69" id="{977f3b97-5461-4346-92c8-a14c749b77c9}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i444" id="fplayer@adobe.flash">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i550" id="colmer@yopmail.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i362" id="addon@defaulttab.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="1.4.4" severity="1"/>
     </emItem>
@@ -262,21 +262,21 @@
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i706" id="thefoxonlybetter@quicksaver">
       <prefs/>
       <versionRange minVersion="1.10" maxVersion="*" severity="3"/>
       <versionRange minVersion="1.6.160" maxVersion="1.6.160" severity="3"/>
       <versionRange minVersion="0" maxVersion="0.*" severity="3"/>
     </emItem>
-    <emItem blockID="i497" id="{872b5b88-9db5-4310-bdd0-ac189557e5f5}">
+    <emItem blockID="i1210" id="auto-plugin-checker@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i1210" id="auto-plugin-checker@jetpack">
+    <emItem blockID="i497" id="{872b5b88-9db5-4310-bdd0-ac189557e5f5}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i91" id="crossriderapp4926@crossrider.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="0.81.43" severity="1"/>
     </emItem>
     <emItem blockID="i376" id="{9e09ac65-43c0-4b9d-970f-11e2e9616c55}">
@@ -298,21 +298,21 @@
     <emItem blockID="i778" id="{f2456568-e603-43db-8838-ffa7c4a685c7}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i318" id="ffxtlbr@incredibar.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i754" id="{bb7b7a60-f574-47c2-8a0b-4c56f2da9802}">
+    <emItem blockID="i694" id="59D317DB041748fdB89B47E6F96058F3@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i694" id="59D317DB041748fdB89B47E6F96058F3@jetpack">
+    <emItem blockID="i754" id="{bb7b7a60-f574-47c2-8a0b-4c56f2da9802}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i1016" id="jid1-uabu5A9hduqzCw@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i12" id="masterfiler@gmail.com">
@@ -439,40 +439,40 @@
     <emItem blockID="i222" id="dealcabby@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i100" id="{394DCBA4-1F92-4f8e-8EC9-8D2CB90CB69B}">
       <prefs/>
       <versionRange minVersion="2.5.0" maxVersion="2.5.0" severity="1"/>
     </emItem>
-    <emItem blockID="i590" id="{94cd2cc3-083f-49ba-a218-4cda4b4829fd}">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="1"/>
-    </emItem>
     <emItem blockID="i1232" id="nosquint@urandom.ca">
       <prefs/>
       <versionRange minVersion="0" maxVersion="2.1.9.1-signed.1-signed" severity="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="47"/>
         </targetApplication>
       </versionRange>
     </emItem>
+    <emItem blockID="i590" id="{94cd2cc3-083f-49ba-a218-4cda4b4829fd}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="1"/>
+    </emItem>
+    <emItem blockID="i650" id="jid1-qj0w91o64N7Eeg@jetpack">
+      <prefs/>
+      <versionRange minVersion="39.5.1" maxVersion="47.0.4" severity="3"/>
+    </emItem>
     <emItem blockID="i748" id="{32da2f20-827d-40aa-a3b4-2fc4a294352e}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i544" id="/^(93abedcf-8e3a-4d02-b761-d1441e437c09@243f129d-aee2-42c2-bcd1-48858e1c22fd\.com|9acfc440-ac2d-417a-a64c-f6f14653b712@09f9a966-9258-4b12-af32-da29bdcc28c5\.com|58ad0086-1cfb-48bb-8ad2-33a8905572bc@5715d2be-69b9-4930-8f7e-64bdeb961cfd\.com)$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i650" id="jid1-qj0w91o64N7Eeg@jetpack">
-      <prefs/>
-      <versionRange minVersion="39.5.1" maxVersion="47.0.4" severity="3"/>
-    </emItem>
     <emItem blockID="i628" id="ffxtlbr@iminent.com">
       <prefs>
         <pref>browser.startup.homepage</pref>
         <pref>browser.search.defaultenginename</pref>
       </prefs>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i640" id="jid0-l9BxpNUhx1UUgRfKigWzSfrZqAc@jetpack">
@@ -520,36 +520,36 @@
     <emItem blockID="i772" id="{72b98dbc-939a-4e0e-b5a9-9fdbf75963ef}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i996" id="9598582LLKmjasieijkaslesae@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i546" id="firefox@browsefox.com">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="1"/>
-    </emItem>
     <emItem blockID="i88" id="anttoolbar@ant.com">
       <prefs/>
       <versionRange minVersion="2.4.6.4" maxVersion="2.4.6.4" severity="1"/>
     </emItem>
     <emItem blockID="i358" id="lfind@nijadsoft.net">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i438" id="{02edb56b-9b33-435b-b7df-b2843273a694}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i67" id="youtube2@youtube2.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
+    <emItem blockID="i546" id="firefox@browsefox.com">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="1"/>
+    </emItem>
     <emItem blockID="i586" id="jid1-0xtMKhXFEs4jIg@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i786" id="{63eb5ed4-e1b3-47ec-a253-f8462f205350}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -673,24 +673,24 @@
     <emItem blockID="i968" id="{184AA5E6-741D-464a-820E-94B3ABC2F3B4}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i538" id="{354dbb0a-71d5-4e9f-9c02-6c88b9d387ba}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="i792" id="{8f894ed3-0bf2-498e-a103-27ef6e88899f}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i742" id="{f894a29a-f065-40c3-bb19-da6057778493}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i792" id="{8f894ed3-0bf2-498e-a103-27ef6e88899f}">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i658" id="low_quality_flash@pie2k.com">
       <prefs/>
       <versionRange minVersion="46.2" maxVersion="47.1" severity="3"/>
     </emItem>
     <emItem blockID="i17" id="{3252b9ae-c69a-4eaf-9502-dc9c1f6c009e}">
       <prefs/>
       <versionRange minVersion="2.2" maxVersion="2.2"/>
     </emItem>
@@ -854,30 +854,30 @@
     <emItem blockID="i165" id="{EEF73632-A085-4fd3-A778-ECD82C8CB297}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1022" id="g99hiaoekjoasiijdkoleabsy278djasi@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i718" id="G4Ce4@w.net">
-      <prefs>
-        <pref>browser.startup.homepage</pref>
-      </prefs>
-      <versionRange minVersion="0" maxVersion="*" severity="1"/>
-    </emItem>
     <emItem blockID="i75" id="firebug@software.joehewitt.com" os="Darwin,Linux">
       <prefs/>
       <versionRange minVersion="1.9.0" maxVersion="1.9.0" severity="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="9.*" minVersion="9.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
+    <emItem blockID="i718" id="G4Ce4@w.net">
+      <prefs>
+        <pref>browser.startup.homepage</pref>
+      </prefs>
+      <versionRange minVersion="0" maxVersion="*" severity="1"/>
+    </emItem>
     <emItem blockID="i499" id="{babb9931-ad56-444c-b935-38bffe18ad26}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i21" id="support@update-firefox.com">
       <prefs/>
     </emItem>
     <emItem blockID="i491" id="{515b2424-5911-40bd-8a2c-bdb20286d8f5}">
@@ -936,27 +936,27 @@
     <emItem blockID="i1077" id="helper@vidscrab.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i55" id="youtube@youtube7.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
-    <emItem blockID="i664" id="123456789@offeringmedia.com">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i630" id="webbooster@iminent.com">
       <prefs>
         <pref>browser.startup.homepage</pref>
         <pref>browser.search.defaultenginename</pref>
       </prefs>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
+    <emItem blockID="i664" id="123456789@offeringmedia.com">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i93" id="{68b8676b-99a5-46d1-b390-22411d8bcd61}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
     <emItem blockID="i624" id="/^({b95faac1-a3d7-4d69-8943-ddd5a487d966}|{ecce0073-a837-45a2-95b9-600420505f7e}|{2713b394-286f-4d7c-89ea-4174eeab9f5a}|{da7a20cf-bef4-4342-ad78-0240fdf87055})$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
@@ -1064,23 +1064,23 @@
     <emItem blockID="i350" id="sqlmoz@facebook.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i446" id="{E90FA778-C2B7-41D0-9FA9-3FEC1CA54D66}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i13" id="{E8E88AB0-7182-11DF-904E-6045E0D72085}">
-      <prefs/>
-    </emItem>
     <emItem blockID="i117" id="{ce7e73df-6a44-4028-8079-5927a588c948}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="1.0.8" severity="1"/>
     </emItem>
+    <emItem blockID="i13" id="{E8E88AB0-7182-11DF-904E-6045E0D72085}">
+      <prefs/>
+    </emItem>
     <emItem blockID="i226" id="{462be121-2b54-4218-bf00-b9bf8135b23f}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i258" id="helperbar@helperbar.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="1.0" severity="1"/>
     </emItem>
@@ -1155,45 +1155,45 @@
         <pref>browser.search.defaultenginename</pref>
       </prefs>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i972" id="831778-poidjao88DASfsAnindsd@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="i515" id="/^({bf9194c2-b86d-4ebc-9b53-1c08b6ff779e}|{61a83e16-7198-49c6-8874-3e4e8faeb4f3}|{f0af464e-5167-45cf-9cf0-66b396d1918c}|{5d9968c3-101c-4944-ba71-72d77393322d}|{01e86e69-a2f8-48a0-b068-83869bdba3d0})$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="1"/>
+    </emItem>
     <emItem blockID="i844" id="e9d197d59f2f45f382b1aa5c14d82@8706aaed9b904554b5cb7984e9.com">
       <prefs>
         <pref>browser.startup.homepage</pref>
         <pref>browser.search.defaultenginename</pref>
       </prefs>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i515" id="/^({bf9194c2-b86d-4ebc-9b53-1c08b6ff779e}|{61a83e16-7198-49c6-8874-3e4e8faeb4f3}|{f0af464e-5167-45cf-9cf0-66b396d1918c}|{5d9968c3-101c-4944-ba71-72d77393322d}|{01e86e69-a2f8-48a0-b068-83869bdba3d0})$/">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="1"/>
-    </emItem>
     <emItem blockID="i216" id="fdm_ffext@freedownloadmanager.org">
       <prefs/>
       <versionRange minVersion="1.0" maxVersion="1.3.1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="3.0a1"/>
         </targetApplication>
       </versionRange>
       <versionRange minVersion="1.5.7.5" maxVersion="1.5.7.5" severity="1"/>
     </emItem>
-    <emItem blockID="i461" id="{8E9E3331-D360-4f87-8803-52DE43566502}">
+    <emItem blockID="i596" id="{b99c8534-7800-48fa-bd71-519a46cdc7e1}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i818" id="contentarget@maildrop.cc">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i596" id="{b99c8534-7800-48fa-bd71-519a46cdc7e1}">
+    <emItem blockID="i461" id="{8E9E3331-D360-4f87-8803-52DE43566502}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i23" id="firefox@bandoo.com">
       <prefs/>
       <versionRange minVersion="5.0" maxVersion="5.0" severity="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="3.7a1pre"/>
@@ -1359,28 +1359,28 @@
     <emItem blockID="i1034" id="a88a77ahjjfjakckmmabsy278djasi@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i562" id="iobitapps@mybrowserbar.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i970" id="hha8771ui3-Fo9j9h7aH98jsdfa8sda@jetpack">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i916" id="{97E22097-9A2F-45b1-8DAF-36AD648C7EF4}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="39.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
+    <emItem blockID="i970" id="hha8771ui3-Fo9j9h7aH98jsdfa8sda@jetpack">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i338" id="{1FD91A9C-410C-4090-BBCC-55D3450EF433}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i430" id="1chtw@facebook.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -1445,24 +1445,24 @@
     <emItem blockID="i58" id="webmaster@buzzzzvideos.info">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
     <emItem blockID="i5" id="support@daemon-tools.cc">
       <prefs/>
       <versionRange minVersion=" " maxVersion="1.0.0.5"/>
     </emItem>
+    <emItem blockID="i378" id="{a7aae4f0-bc2e-a0dd-fb8d-68ce32c9261f}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i449" id="gystqfr@ylgga.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
-    <emItem blockID="i378" id="{a7aae4f0-bc2e-a0dd-fb8d-68ce32c9261f}">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i545" id="superlrcs@svenyor.net">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i163" id="info@allpremiumplay.info">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -1587,24 +1587,24 @@
     <emItem blockID="i465" id="trtv3@trtv.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i8" id="{B13721C7-F507-4982-B2E5-502A71474FED}">
       <prefs/>
       <versionRange minVersion=" " severity="1"/>
     </emItem>
+    <emItem blockID="i854" id="/^(7tG@zEb\.net|ru@gfK0J\.edu)$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i73" id="a1g0a9g219d@a1.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
-    <emItem blockID="i854" id="/^(7tG@zEb\.net|ru@gfK0J\.edu)$/">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i662" id="imbaty@taringamp3.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1126" id="{bbea93c6-64a3-4a5a-854a-9cc61c8d309e}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -1796,28 +1796,28 @@
     <emItem blockID="i926" id="{B1FC07E1-E05B-4567-8891-E63FBE545BA8}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="39.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
+    <emItem blockID="i382" id="{6926c7f7-6006-42d1-b046-eba1b3010315}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="1"/>
+    </emItem>
     <emItem blockID="i806" id="{d9284e50-81fc-11da-a72b-0800200c9a66}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="7.7.34" severity="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="34.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
-    <emItem blockID="i382" id="{6926c7f7-6006-42d1-b046-eba1b3010315}">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="1"/>
-    </emItem>
     <emItem blockID="i782" id="safebrowse@safebrowse.co">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i812" id="{1e4ea5fc-09e5-4f45-a43b-c048304899fc}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -1836,21 +1836,21 @@
     <emItem blockID="i472" id="linksicle@linksicle.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i98" id="youtubeeing@youtuberie.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
-    <emItem blockID="i1213" id="unblocker20__web@unblocker.yt">
+    <emItem blockID="i578" id="jid1-XLjasWL55iEE1Q@jetpack">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i578" id="jid1-XLjasWL55iEE1Q@jetpack">
+    <emItem blockID="i1213" id="unblocker20__web@unblocker.yt">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1233" id="cloudmask@cloudmask.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="2.0.788"/>
     </emItem>
     <emItem blockID="i582" id="discoverypro@discoverypro.com">
@@ -1888,28 +1888,28 @@
           <versionRange maxVersion="*" minVersion="3.7a1pre"/>
         </targetApplication>
       </versionRange>
     </emItem>
     <emItem blockID="i1129" id="youtubeunblocker__web@unblocker.yt">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
-    <emItem blockID="i808" id="{c96d1ae6-c4cf-4984-b110-f5f561b33b5a}">
-      <prefs/>
-      <versionRange minVersion="0" maxVersion="*" severity="3"/>
-    </emItem>
     <emItem blockID="i1214" id="firefoxdav@icloud.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="1.4.22" severity="1"/>
     </emItem>
     <emItem blockID="i66" id="youtubeer@youtuber.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*"/>
     </emItem>
+    <emItem blockID="i808" id="{c96d1ae6-c4cf-4984-b110-f5f561b33b5a}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i4" id="{4B3803EA-5230-4DC3-A7FC-33638F3D3542}">
       <prefs/>
       <versionRange minVersion="1.2" maxVersion="1.2">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="3.0a1"/>
         </targetApplication>
       </versionRange>
     </emItem>
--- a/browser/components/originattributes/test/browser/browser.ini
+++ b/browser/components/originattributes/test/browser/browser.ini
@@ -1,23 +1,42 @@
 [DEFAULT]
 tags = usercontextid firstpartyisolation originattributes
 support-files =
   dummy.html
   file_broadcastChannel.html
   file_broadcastChanneliFrame.html
+  file_cache.html
   file_favicon.html
   file_favicon.png
   file_favicon.png^headers^
   file_favicon_cache.html
   file_favicon_cache.png
   file_favicon_thirdParty.html
   file_firstPartyBasic.html
   file_sharedworker.html
   file_sharedworker.js
+  file_thirdPartyChild.audio.ogg
+  file_thirdPartyChild.embed.png
+  file_thirdPartyChild.fetch.html
+  file_thirdPartyChild.iframe.html
+  file_thirdPartyChild.img.png
+  file_thirdPartyChild.import.js
+  file_thirdPartyChild.link.css
+  file_thirdPartyChild.object.png
+  file_thirdPartyChild.request.html
+  file_thirdPartyChild.script.js
+  file_thirdPartyChild.sharedworker.js
+  file_thirdPartyChild.track.vtt
+  file_thirdPartyChild.video.ogv
+  file_thirdPartyChild.worker.fetch.html
+  file_thirdPartyChild.worker.js
+  file_thirdPartyChild.worker.request.html
+  file_thirdPartyChild.worker.xhr.html
+  file_thirdPartyChild.xhr.html
   head.js
   test.js
   test.js^headers^
   test.html
   test2.html
   test2.js
   test2.js^headers^
   test_firstParty.html
@@ -27,16 +46,17 @@ support-files =
   test_firstParty_http_redirect.html^headers^
   test_firstParty_iframe_http_redirect.html
   test_firstParty_postMessage.html
   window.html
   worker_blobify.js
   worker_deblobify.js
 
 [browser_broadcastChannel.js]
+[browser_cache.js]
 [browser_cookieIsolation.js]
 [browser_favicon_firstParty.js]
 [browser_favicon_userContextId.js]
 [browser_firstPartyIsolation.js]
 [browser_localStorageIsolation.js]
 [browser_blobURLIsolation.js]
 [browser_imageCacheIsolation.js]
 [browser_sharedworker.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/browser_cache.js
@@ -0,0 +1,247 @@
+/*
+ * Bug 1264577 - A test case for testing caches of various submodules.
+ *   This test case will load two pages that each page loads various resources
+ *   within the same third party domain for the same originAttributes or different
+ *   originAttributes. And then, it verifies the number of cache entries and
+ *   the originAttributes of loading channels. If these two pages belong to
+ *   the same originAttributes, the number of cache entries for a certain
+ *   resource would be one. Otherwise, it would be two.
+ */
+
+const { classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu } = Components;
+
+let {LoadContextInfo} = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {});
+let protocolProxyService = Cc["@mozilla.org/network/protocol-proxy-service;1"]
+                             .getService(Ci.nsIProtocolProxyService);
+
+const TEST_DOMAIN = "http://example.net";
+const TEST_PATH = "/browser/browser/components/originattributes/test/browser/";
+const TEST_PAGE = TEST_DOMAIN + TEST_PATH + "file_cache.html";
+
+let suffixes = ["iframe.html", "link.css", "script.js", "img.png", "object.png",
+                "embed.png", "xhr.html", "worker.xhr.html", "audio.ogg",
+                "video.ogv", "track.vtt",
+                "fetch.html", "worker.fetch.html",
+                "request.html", "worker.request.html",
+                "import.js", "worker.js", "sharedworker.js"];
+
+// A random value for isolating video/audio elements across different tests.
+let randomSuffix;
+
+function clearAllImageCaches() {
+  let tools = SpecialPowers.Cc["@mozilla.org/image/tools;1"]
+                             .getService(SpecialPowers.Ci.imgITools);
+  let imageCache = tools.getImgCacheForDocument(window.document);
+  imageCache.clearCache(true);  // true=chrome
+  imageCache.clearCache(false); // false=content
+}
+
+function cacheDataForContext(loadContextInfo) {
+  return new Promise(resolve => {
+    let cacheEntries = [];
+    let cacheVisitor = {
+      onCacheStorageInfo(num, consumption) {},
+      onCacheEntryInfo(uri, idEnhance) {
+        cacheEntries.push({ uri: uri,
+                            idEnhance: idEnhance });
+      },
+      onCacheEntryVisitCompleted() {
+        resolve(cacheEntries);
+      },
+      QueryInterface(iid) {
+        if (iid.equals(Ci.nsICacheStorageVisitor))
+          return this;
+
+        throw Components.results.NS_ERROR_NO_INTERFACE;
+      }
+    };
+    // Visiting the disk cache also visits memory storage so we do not
+    // need to use Services.cache2.memoryCacheStorage() here.
+    let storage = Services.cache2.diskCacheStorage(loadContextInfo, false);
+    storage.asyncVisitStorage(cacheVisitor, true);
+  });
+}
+
+let countMatchingCacheEntries = function (cacheEntries, domain, fileSuffix) {
+  return cacheEntries.map(entry => entry.uri.asciiSpec)
+                     .filter(spec => spec.includes(domain))
+                     .filter(spec => spec.includes("file_thirdPartyChild." + fileSuffix))
+                     .length;
+};
+
+function observeChannels(onChannel) {
+  // We use a dummy proxy filter to catch all channels, even those that do not
+  // generate an "http-on-modify-request" notification, such as link preconnects.
+  let proxyFilter = {
+    applyFilter : function (aProxyService, aChannel, aProxy) {
+      // We have the channel; provide it to the callback.
+      onChannel(aChannel);
+      // Pass on aProxy unmodified.
+      return aProxy;
+    }
+  };
+  protocolProxyService.registerChannelFilter(proxyFilter, 0);
+  // Return the stop() function:
+  return () => protocolProxyService.unregisterChannelFilter(proxyFilter);
+}
+
+function startObservingChannels(aMode) {
+  let stopObservingChannels = observeChannels(function (channel) {
+    let originalURISpec = channel.originalURI.spec;
+    if (originalURISpec.includes("example.net")) {
+      let loadInfo = channel.loadInfo;
+
+      switch (aMode) {
+        case TEST_MODE_FIRSTPARTY:
+          ok(loadInfo.originAttributes.firstPartyDomain === "example.com" ||
+             loadInfo.originAttributes.firstPartyDomain === "example.org",
+             "first party for " + originalURISpec + " is " + loadInfo.originAttributes.firstPartyDomain);
+          break;
+
+        case TEST_MODE_NO_ISOLATION:
+          ok(ChromeUtils.isOriginAttributesEqual(loadInfo.originAttributes, ChromeUtils.fillNonDefaultOriginAttributes()),
+             "OriginAttributes for " + originalURISpec + " is default.");
+          break;
+
+        case TEST_MODE_CONTAINERS:
+          ok(loadInfo.originAttributes.userContextId === 1 ||
+             loadInfo.originAttributes.userContextId === 2,
+             "userContextId for " + originalURISpec + " is " + loadInfo.originAttributes.userContextId);
+          break;
+
+        default:
+          ok(false, "Unknown test mode.");
+      }
+    }
+  });
+  return stopObservingChannels;
+}
+
+let stopObservingChannels;
+
+// The init function, which clears image and network caches, and generates
+// the random value for isolating video and audio elements across different
+// test runs.
+function* doInit(aMode) {
+  yield SpecialPowers.pushPrefEnv({"set": [["network.predictor.enabled",         false],
+                                           ["network.predictor.enable-prefetch", false]]});
+  clearAllImageCaches();
+
+  let networkCache = Cc["@mozilla.org/netwerk/cache-storage-service;1"]
+                        .getService(Ci.nsICacheStorageService);
+  networkCache.clear();
+
+  randomSuffix = Math.random();
+  stopObservingChannels = startObservingChannels(aMode);
+}
+
+// In the test function, we dynamically generate the video and audio element,
+// and assign a random suffix to their URL to isolate them across different
+// test runs.
+function* doTest(aBrowser) {
+
+  let argObj = {
+    randomSuffix: randomSuffix,
+    urlPrefix: TEST_DOMAIN + TEST_PATH,
+  };
+
+  yield ContentTask.spawn(aBrowser, argObj, function* (arg) {
+    let videoURL = arg.urlPrefix + "file_thirdPartyChild.video.ogv";
+    let audioURL = arg.urlPrefix + "file_thirdPartyChild.audio.ogg";
+    let trackURL = arg.urlPrefix + "file_thirdPartyChild.track.vtt";
+    let URLSuffix = "?r=" + arg.randomSuffix;
+
+    // Create the audio and video elements.
+    let audio = content.document.createElement('audio');
+    let video = content.document.createElement('video');
+    let audioSource = content.document.createElement('source');
+    let audioTrack = content.document.createElement('track');
+
+    // Assign attributes for the audio element.
+    audioSource.setAttribute("src", audioURL + URLSuffix);
+    audioSource.setAttribute("type", "audio/ogg");
+    audioTrack.setAttribute("src", trackURL);
+    audioTrack.setAttribute("kind", "subtitles");
+
+    // Append the audio and track element into the body, and wait until they're finished.
+    yield new Promise(resolve => {
+      let audioLoaded = false;
+      let trackLoaded = false;
+
+      let audioListener = () => {
+        audio.removeEventListener("canplaythrough", audioListener);
+
+        audioLoaded = true;
+        if (audioLoaded && trackLoaded) {
+          resolve();
+        }
+      };
+
+      let trackListener = () => {
+        audioTrack.removeEventListener("load", trackListener);
+
+        trackLoaded = true;
+        if (audioLoaded && trackLoaded) {
+          resolve();
+        }
+      };
+
+      audio.appendChild(audioSource);
+      audio.appendChild(audioTrack);
+      audio.autoplay = true;
+
+      audioTrack.addEventListener("load", trackListener, false);
+      audio.addEventListener("canplaythrough", audioListener, false);
+      content.document.body.appendChild(audio);
+    });
+
+    // Append the video element into the body, and wait until it's finished.
+    yield new Promise(resolve => {
+      let listener = () => {
+        video.removeEventListener("canplaythrough", listener);
+        resolve();
+      };
+
+      // Assign attributes for the video element.
+      video.setAttribute("src", videoURL + URLSuffix);
+      video.setAttribute("type", "video/ogg");
+
+      video.addEventListener("canplaythrough", listener, false);
+      content.document.body.appendChild(video);
+    });
+  });
+
+  return 0;
+}
+
+// The check function, which checks the number of cache entries.
+function* doCheck(aShouldIsolate, aInputA, aInputB) {
+  let expectedEntryCount = 1;
+  let data = [];
+  data = data.concat(yield cacheDataForContext(LoadContextInfo.default));
+  data = data.concat(yield cacheDataForContext(LoadContextInfo.private));
+  data = data.concat(yield cacheDataForContext(LoadContextInfo.custom(true, {})));
+
+  if (aShouldIsolate) {
+    expectedEntryCount = 2;
+  }
+
+  for (let suffix of suffixes) {
+    let foundEntryCount = countMatchingCacheEntries(data, "example.net", suffix);
+    let result = (expectedEntryCount === foundEntryCount);
+    ok(result, "Cache entries expected for " + suffix + ": " + expectedEntryCount +
+               ", and found " + foundEntryCount);
+  }
+
+  stopObservingChannels();
+  stopObservingChannels = undefined;
+  return true;
+}
+
+let testArgs = {
+  url: TEST_PAGE,
+  firstFrameSetting: DEFAULT_FRAME_SETTING,
+  secondFrameSetting: [TEST_TYPE_FRAME],
+};
+
+IsolationTestTools.runTests(testArgs, doTest, doCheck, doInit);
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_cache.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<head>
+  <link rel="stylesheet" type="text/css"
+        href="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.link.css">
+  <link rel="preconnect" href="http://example.net">
+</head>
+<body>
+<div>file_cache.html</div>
+
+<iframe src="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.iframe.html">
+</iframe>
+
+<script src="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.script.js">
+</script>
+
+<img src="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.img.png">
+
+<embed src="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.embed.png">
+
+<object data="http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.object.png"
+        type="image/png"></object>
+</body>
+</html>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..edda4e9128435b0cc9ba500c9daca90e2be30acf
GIT binary patch
literal 2603
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5916f289705642eec4975cf51458b9afeefe46c
GIT binary patch
literal 95
zc%17D@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%mF?juK#@*VoWXSL2@NQe!*uh
mnS}iXa=1KQ978JRBqsscYz)k1<~1vTECx?kKbLh*2~7ZT-W2Wt
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.fetch.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.fetch.html</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.iframe.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.html</div>
+<script>
+  var xhr = new XMLHttpRequest();
+  xhr.open("GET", "http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.xhr.html", true);
+  xhr.send();
+  var worker = new Worker("http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.js");
+  var sharedWorker = new SharedWorker("http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.sharedworker.js");
+
+  fetch("file_thirdPartyChild.fetch.html", {cache: "force-cache"} );
+  fetch(new Request("file_thirdPartyChild.request.html"), {cache: "force-cache"} );
+</script>
+</body>
+</html>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5916f289705642eec4975cf51458b9afeefe46c
GIT binary patch
literal 95
zc%17D@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%mF?juK#@*VoWXSL2@NQe!*uh
mnS}iXa=1KQ978JRBqsscYz)k1<~1vTECx?kKbLh*2~7ZT-W2Wt
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.import.js
@@ -0,0 +1,1 @@
+// dummy script, to be called by self.importScripts(...)
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.link.css
@@ -0,0 +1,1 @@
+/* Dummy CSS file, used by browser_cache.js. */
\ No newline at end of file
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5916f289705642eec4975cf51458b9afeefe46c
GIT binary patch
literal 95
zc%17D@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%mF?juK#@*VoWXSL2@NQe!*uh
mnS}iXa=1KQ978JRBqsscYz)k1<~1vTECx?kKbLh*2~7ZT-W2Wt
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.request.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.request.html</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.script.js
@@ -0,0 +1,1 @@
+// Dummy child script, used by browser_cache.js
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.sharedworker.js
@@ -0,0 +1,1 @@
+// dummy file
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.track.vtt
@@ -0,0 +1,13 @@
+WEBVTT FILE
+
+1
+00:00:00.500 --> 00:00:02.000 D:vertical A:start
+blah blah blah
+
+2
+00:00:02.500 --> 00:00:04.300
+this is a test
+
+3
+00:00:05.000 --> 00:00:07.000
+one more line
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..68dee3cf2b1de3d820a7b606cdca809f8224e855
GIT binary patch
literal 16049
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
NW^56gvQ&sQ|3Brd7xw@F
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.fetch.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.worker.fetch.html</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.js
@@ -0,0 +1,9 @@
+var xhr = new XMLHttpRequest();
+xhr.open("GET", "http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.xhr.html", true);
+xhr.send();
+
+fetch("http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.fetch.html", {cache: "force-cache"} );
+var myRequest = new Request("http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.request.html");
+fetch(myRequest, {cache: "force-cache"} );
+
+self.importScripts("http://example.net/browser/browser/components/originattributes/test/browser/file_thirdPartyChild.import.js");
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.request.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.worker.request.html</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.worker.xhr.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.worker.xhr.html</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.xhr.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<!-- The child page, used by browser_cache.js -->
+<body>
+<div>thirdPartyChild.html</div>
+</body>
+</html>
--- a/browser/components/originattributes/test/browser/head.js
+++ b/browser/components/originattributes/test/browser/head.js
@@ -304,17 +304,17 @@ this.IsolationTestTools = {
                       ];
 
     this._add_task(function* (aMode) {
       let tabSettingA = 0;
 
       for (let tabSettingB of [0, 1]) {
         // Give the test a chance to set up before each case is run.
         if (aBeforeFunc) {
-          yield aBeforeFunc();
+          yield aBeforeFunc(aMode);
         }
 
         // Create Tabs.
         let tabInfoA = yield IsolationTestTools._addTab(aMode,
                                                         pageURL,
                                                         tabSettings[tabSettingA],
                                                         firstFrameSetting);
         let tabInfoB = yield IsolationTestTools._addTab(aMode,
--- a/dom/animation/KeyframeUtils.cpp
+++ b/dom/animation/KeyframeUtils.cpp
@@ -1463,43 +1463,43 @@ RequiresAdditiveAnimation(const nsTArray
  * @param aSpacingRange The sequence of keyframes between whose endpoints we
  *   should apply distribute spacing.
  * @param aRangeToAdjust The range of keyframes we want to apply to.
  */
 static void
 DistributeRange(const Range<Keyframe>& aSpacingRange,
                 const Range<Keyframe>& aRangeToAdjust)
 {
-  MOZ_ASSERT(aRangeToAdjust.start() >= aSpacingRange.start() &&
+  MOZ_ASSERT(aRangeToAdjust.begin() >= aSpacingRange.begin() &&
              aRangeToAdjust.end() <= aSpacingRange.end(),
              "Out of range");
   const size_t n = aSpacingRange.length() - 1;
   const double startOffset = aSpacingRange[0].mComputedOffset;
   const double diffOffset = aSpacingRange[n].mComputedOffset - startOffset;
-  for (auto iter = aRangeToAdjust.start();
+  for (auto iter = aRangeToAdjust.begin();
        iter != aRangeToAdjust.end();
        ++iter) {
-    size_t index = iter - aSpacingRange.start();
+    size_t index = iter - aSpacingRange.begin();
     iter->mComputedOffset = startOffset + double(index) / n * diffOffset;
   }
 }
 
 /**
  * Overload of DistributeRange to apply distribute spacing to all keyframes in
  * between the endpoints of the given range.
  *
  * @param aSpacingRange The sequence of keyframes between whose endpoints we
  *   should apply distribute spacing.
  */
 static void
 DistributeRange(const Range<Keyframe>& aSpacingRange)
 {
   // We don't need to apply distribute spacing to keyframe A and keyframe B.
   DistributeRange(aSpacingRange,
-                  Range<Keyframe>(aSpacingRange.start() + 1,
+                  Range<Keyframe>(aSpacingRange.begin() + 1,
                                   aSpacingRange.end() - 1));
 }
 
 /**
  * Apply paced spacing to all paceable keyframes in between the endpoints of the
  * given range.
  *
  * @param aKeyframes The range of keyframes between whose endpoints we should
@@ -1520,41 +1520,41 @@ PaceRange(const Range<Keyframe>& aKeyfra
              "Range length mismatch");
 
   const size_t len = aKeyframes.length();
   // If there is nothing between the end points, there is nothing to space.
   if (len < 3) {
     return;
   }
 
-  const double distA = *(aCumulativeDistances.start());
+  const double distA = *(aCumulativeDistances.begin());
   const double distB = *(aCumulativeDistances.end() - 1);
   MOZ_ASSERT(distA != kNotPaceable && distB != kNotPaceable,
              "Both Paced A and Paced B should be paceable");
 
   // If the total distance is zero, we should fall back to distribute spacing.
   // The caller will fill-in any keyframes without a computed offset using
   // distribute spacing so we can just return here.
   if (distA == distB) {
     return;
   }
 
-  const RangedPtr<Keyframe> pacedA = aKeyframes.start();
+  const RangedPtr<Keyframe> pacedA = aKeyframes.begin();
   const RangedPtr<Keyframe> pacedB = aKeyframes.end() - 1;
   MOZ_ASSERT(pacedA->mComputedOffset != Keyframe::kComputedOffsetNotSet &&
              pacedB->mComputedOffset != Keyframe::kComputedOffsetNotSet,
              "Both Paced A and Paced B should have valid computed offsets");
 
   // Apply computed offset.
   const double offsetA     = pacedA->mComputedOffset;
   const double diffOffset  = pacedB->mComputedOffset - offsetA;
   const double initialDist = distA;
   const double totalDist   = distB - initialDist;
   for (auto iter = pacedA + 1; iter != pacedB; ++iter) {
-    size_t k = iter - aKeyframes.start();
+    size_t k = iter - aKeyframes.begin();
     if (aCumulativeDistances[k] == kNotPaceable) {
       continue;
     }
 
     double dist = aCumulativeDistances[k] - initialDist;
     iter->mComputedOffset = offsetA + diffOffset * dist / totalDist;
   }
 }
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -232,16 +232,17 @@
 #include "mozilla/dom/MediaQueryList.h"
 #include "mozilla/dom/ScriptSettings.h"
 #include "mozilla/dom/NavigatorBinding.h"
 #include "mozilla/dom/ImageBitmap.h"
 #include "mozilla/dom/ImageBitmapBinding.h"
 #include "mozilla/dom/ServiceWorkerRegistration.h"
 #include "mozilla/dom/U2F.h"
 #include "mozilla/dom/WebIDLGlobalNameHash.h"
+#include "mozilla/dom/Worklet.h"
 #ifdef HAVE_SIDEBAR
 #include "mozilla/dom/ExternalBinding.h"
 #endif
 
 #ifdef MOZ_WEBSPEECH
 #include "mozilla/dom/SpeechSynthesis.h"
 #endif
 
@@ -14843,11 +14844,25 @@ nsGlobalWindow::TemporarilyDisableDialog
 
 nsGlobalWindow::TemporarilyDisableDialogs::~TemporarilyDisableDialogs()
 {
   if (mTopWindow) {
     mTopWindow->mAreDialogsEnabled = mSavedDialogsEnabled;
   }
 }
 
+already_AddRefed<Worklet>
+nsGlobalWindow::CreateWorklet(ErrorResult& aRv)
+{
+  MOZ_RELEASE_ASSERT(IsInnerWindow());
+
+  if (!mDoc) {
+    aRv.Throw(NS_ERROR_FAILURE);
+    return nullptr;
+  }
+
+  RefPtr<Worklet> worklet = new Worklet(AsInner(), mDoc->NodePrincipal());
+  return worklet.forget();
+}
+
 template class nsPIDOMWindow<mozIDOMWindowProxy>;
 template class nsPIDOMWindow<mozIDOMWindow>;
 template class nsPIDOMWindow<nsISupports>;
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -131,16 +131,17 @@ class TabGroup;
 class Timeout;
 class U2F;
 class VRDisplay;
 class VREventObserver;
 class WakeLock;
 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK)
 class WindowOrientationObserver;
 #endif
+class Worklet;
 namespace cache {
 class CacheStorage;
 } // namespace cache
 class IDBFactory;
 } // namespace dom
 } // namespace mozilla
 
 extern already_AddRefed<nsIScriptTimeoutHandler>
@@ -921,16 +922,20 @@ public:
 
   // Exposed only for testing
   static bool
   TokenizeDialogOptions(nsAString& aToken, nsAString::const_iterator& aIter,
                         nsAString::const_iterator aEnd);
   static void
   ConvertDialogOptions(const nsAString& aOptions, nsAString& aResult);
 
+  // Exposed only for testing
+  already_AddRefed<mozilla::dom::Worklet>
+  CreateWorklet(mozilla::ErrorResult& aRv);
+
 protected:
   bool AlertOrConfirm(bool aAlert, const nsAString& aMessage,
                       nsIPrincipal& aSubjectPrincipal,
                       mozilla::ErrorResult& aError);
 
 public:
   void Alert(nsIPrincipal& aSubjectPrincipal,
              mozilla::ErrorResult& aError);
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -2701,17 +2701,18 @@ IsNonExposedGlobal(JSContext* aCx, JSObj
 {
   MOZ_ASSERT(aNonExposedGlobals, "Why did we get called?");
   MOZ_ASSERT((aNonExposedGlobals &
               ~(GlobalNames::Window |
                 GlobalNames::BackstagePass |
                 GlobalNames::DedicatedWorkerGlobalScope |
                 GlobalNames::SharedWorkerGlobalScope |
                 GlobalNames::ServiceWorkerGlobalScope |
-                GlobalNames::WorkerDebuggerGlobalScope)) == 0,
+                GlobalNames::WorkerDebuggerGlobalScope |
+                GlobalNames::WorkletGlobalScope)) == 0,
              "Unknown non-exposed global type");
 
   const char* name = js::GetObjectClass(aGlobal)->name;
 
   if ((aNonExposedGlobals & GlobalNames::Window) &&
       !strcmp(name, "Window")) {
     return true;
   }
@@ -2736,16 +2737,21 @@ IsNonExposedGlobal(JSContext* aCx, JSObj
     return true;
   }
 
   if ((aNonExposedGlobals & GlobalNames::WorkerDebuggerGlobalScope) &&
       !strcmp(name, "WorkerDebuggerGlobalScopex")) {
     return true;
   }
 
+  if ((aNonExposedGlobals & GlobalNames::WorkletGlobalScope) &&
+      !strcmp(name, "WorkletGlobalScope")) {
+    return true;
+  }
+
   return false;
 }
 
 void
 HandlePrerenderingViolation(nsPIDOMWindowInner* aWindow)
 {
   // Freeze the window and its workers, and its children too.
   aWindow->Freeze();
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -13235,16 +13235,41 @@ class CGRegisterWorkerDebuggerBindings(C
                     "%s::ConstructorEnabled(aCx, aObj) && " % bindingNS
                     + condition)
             conditions.append(condition)
         lines = [CGIfWrapper(CGGeneric("return false;\n"), condition) for
                  condition in conditions]
         lines.append(CGGeneric("return true;\n"))
         return CGList(lines, "\n").define()
 
+class CGRegisterWorkletBindings(CGAbstractMethod):
+    def __init__(self, config):
+        CGAbstractMethod.__init__(self, None, 'RegisterWorkletBindings', 'bool',
+                                  [Argument('JSContext*', 'aCx'),
+                                   Argument('JS::Handle<JSObject*>', 'aObj')])
+        self.config = config
+
+    def definition_body(self):
+        descriptors = self.config.getDescriptors(hasInterfaceObject=True,
+                                                 isExposedInAnyWorklet=True,
+                                                 register=True)
+        conditions = []
+        for desc in descriptors:
+            bindingNS = toBindingNamespace(desc.name)
+            condition = "!%s::GetConstructorObject(aCx)" % bindingNS
+            if desc.isExposedConditionally():
+                condition = (
+                    "%s::ConstructorEnabled(aCx, aObj) && " % bindingNS
+                    + condition)
+            conditions.append(condition)
+        lines = [CGIfWrapper(CGGeneric("return false;\n"), condition) for
+                 condition in conditions]
+        lines.append(CGGeneric("return true;\n"))
+        return CGList(lines, "\n").define()
+
 class CGResolveSystemBinding(CGAbstractMethod):
     def __init__(self, config):
         CGAbstractMethod.__init__(self, None, 'ResolveSystemBinding', 'bool',
                                   [Argument('JSContext*', 'aCx'),
                                    Argument('JS::Handle<JSObject*>', 'aObj'),
                                    Argument('JS::Handle<jsid>', 'aId'),
                                    Argument('bool*', 'aResolvedp')])
         self.config = config
@@ -16604,16 +16629,41 @@ class GlobalGenRoots():
 
         # Add include guards.
         curr = CGIncludeGuard('RegisterWorkerDebuggerBindings', curr)
 
         # Done.
         return curr
 
     @staticmethod
+    def RegisterWorkletBindings(config):
+
+        curr = CGRegisterWorkletBindings(config)
+
+        # Wrap all of that in our namespaces.
+        curr = CGNamespace.build(['mozilla', 'dom'],
+                                 CGWrapper(curr, post='\n'))
+        curr = CGWrapper(curr, post='\n')
+
+        # Add the includes
+        defineIncludes = [CGHeaders.getDeclarationFilename(desc.interface)
+                          for desc in config.getDescriptors(hasInterfaceObject=True,
+                                                            register=True,
+                                                            isExposedInAnyWorklet=True)]
+
+        curr = CGHeaders([], [], [], [], [], defineIncludes,
+                         'RegisterWorkletBindings', curr)
+
+        # Add include guards.
+        curr = CGIncludeGuard('RegisterWorkletBindings', curr)
+
+        # Done.
+        return curr
+
+    @staticmethod
     def ResolveSystemBinding(config):
 
         curr = CGResolveSystemBinding(config)
 
         # Wrap all of that in our namespaces.
         curr = CGNamespace.build(['mozilla', 'dom'],
                                  CGWrapper(curr, post='\n'))
         curr = CGWrapper(curr, post='\n')
--- a/dom/bindings/Configuration.py
+++ b/dom/bindings/Configuration.py
@@ -193,16 +193,18 @@ class Configuration(DescriptorProvider):
             elif key == 'isJSImplemented':
                 getter = lambda x: x.interface.isJSImplemented()
             elif key == 'isNavigatorProperty':
                 getter = lambda x: x.interface.isNavigatorProperty()
             elif key == 'isExposedInAnyWorker':
                 getter = lambda x: x.interface.isExposedInAnyWorker()
             elif key == 'isExposedInWorkerDebugger':
                 getter = lambda x: x.interface.isExposedInWorkerDebugger()
+            elif key == 'isExposedInAnyWorklet':
+                getter = lambda x: x.interface.isExposedInAnyWorklet()
             elif key == 'isExposedInSystemGlobals':
                 getter = lambda x: x.interface.isExposedInSystemGlobals()
             elif key == 'isExposedInWindow':
                 getter = lambda x: x.interface.isExposedInWindow()
             else:
                 # Have to watch out: just closing over "key" is not enough,
                 # since we're about to mutate its value
                 getter = (lambda attrName: lambda x: getattr(x, attrName))(key)
--- a/dom/bindings/DOMJSClass.h
+++ b/dom/bindings/DOMJSClass.h
@@ -98,16 +98,17 @@ namespace GlobalNames {
 // interfaces, not of the global names used to refer to them in IDL [Exposed]
 // annotations.
 static const uint32_t Window = 1u << 0;
 static const uint32_t BackstagePass = 1u << 1;
 static const uint32_t DedicatedWorkerGlobalScope = 1u << 2;
 static const uint32_t SharedWorkerGlobalScope = 1u << 3;
 static const uint32_t ServiceWorkerGlobalScope = 1u << 4;
 static const uint32_t WorkerDebuggerGlobalScope = 1u << 5;
+static const uint32_t WorkletGlobalScope = 1u << 6;
 } // namespace GlobalNames
 
 struct PrefableDisablers {
   inline bool isEnabled(JSContext* cx, JS::Handle<JSObject*> obj) const {
     // Reading "enabled" on a worker thread is technically undefined behavior,
     // because it's written only on main threads, with no barriers of any sort.
     // So we want to avoid doing that.  But we don't particularly want to make
     // expensive NS_IsMainThread calls here.
--- a/dom/bindings/mozwebidlcodegen/__init__.py
+++ b/dom/bindings/mozwebidlcodegen/__init__.py
@@ -128,26 +128,28 @@ class WebIDLCodegenManager(LoggingMixin)
     # Global parser derived declaration files.
     GLOBAL_DECLARE_FILES = {
         'GeneratedAtomList.h',
         'GeneratedEventList.h',
         'PrototypeList.h',
         'RegisterBindings.h',
         'RegisterWorkerBindings.h',
         'RegisterWorkerDebuggerBindings.h',
+        'RegisterWorkletBindings.h',
         'ResolveSystemBinding.h',
         'UnionConversions.h',
         'UnionTypes.h',
     }
 
     # Global parser derived definition files.
     GLOBAL_DEFINE_FILES = {
         'RegisterBindings.cpp',
         'RegisterWorkerBindings.cpp',
         'RegisterWorkerDebuggerBindings.cpp',
+        'RegisterWorkletBindings.cpp',
         'ResolveSystemBinding.cpp',
         'UnionTypes.cpp',
         'PrototypeList.cpp',
     }
 
     def __init__(self, config_path, inputs, exported_header_dir,
                  codegen_dir, state_path, cache_dir=None, make_deps_path=None,
                  make_deps_target=None):
--- a/dom/bindings/parser/WebIDL.py
+++ b/dom/bindings/parser/WebIDL.py
@@ -510,16 +510,19 @@ class IDLExposureMixins():
                 self.isExposedInSystemGlobals())
 
     def isExposedInAnyWorker(self):
         return len(self.getWorkerExposureSet()) > 0
 
     def isExposedInWorkerDebugger(self):
         return len(self.getWorkerDebuggerExposureSet()) > 0
 
+    def isExposedInAnyWorklet(self):
+        return len(self.getWorkletExposureSet()) > 0
+
     def isExposedInSystemGlobals(self):
         return 'BackstagePass' in self.exposureSet
 
     def isExposedInSomeButNotAllWorkers(self):
         """
         Returns true if the Exposed extended attribute for this interface
         exposes it in some worker globals but not others.  The return value does
         not depend on whether the interface is exposed in Window or System
@@ -529,16 +532,20 @@ class IDLExposureMixins():
             return False
         workerScopes = self.parentScope.globalNameMapping["Worker"]
         return len(workerScopes.difference(self.exposureSet)) > 0
 
     def getWorkerExposureSet(self):
         workerScopes = self._globalScope.globalNameMapping["Worker"]
         return workerScopes.intersection(self.exposureSet)
 
+    def getWorkletExposureSet(self):
+        workletScopes = self._globalScope.globalNameMapping["Worklet"]
+        return workletScopes.intersection(self.exposureSet)
+
     def getWorkerDebuggerExposureSet(self):
         workerDebuggerScopes = self._globalScope.globalNameMapping["WorkerDebugger"]
         return workerDebuggerScopes.intersection(self.exposureSet)
 
 
 class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins):
     def __init__(self, location, parentScope, identifier):
         assert isinstance(identifier, IDLUnresolvedIdentifier)
--- a/dom/console/Console.cpp
+++ b/dom/console/Console.cpp
@@ -9,16 +9,17 @@
 
 #include "mozilla/dom/BlobBinding.h"
 #include "mozilla/dom/Exceptions.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/FunctionBinding.h"
 #include "mozilla/dom/Performance.h"
 #include "mozilla/dom/StructuredCloneHolder.h"
 #include "mozilla/dom/ToJSValue.h"
+#include "mozilla/dom/WorkletGlobalScope.h"
 #include "mozilla/Maybe.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsDocument.h"
 #include "nsDOMNavigationTiming.h"
 #include "nsGlobalWindow.h"
 #include "nsJSUtils.h"
 #include "nsNetUtil.h"
 #include "ScriptSettings.h"
@@ -2358,73 +2359,82 @@ Console::IsShuttingDown() const
 {
   MOZ_ASSERT(mStatus != eUnknown);
   return mStatus == eShuttingDown;
 }
 
 /* static */ already_AddRefed<Console>
 Console::GetConsole(const GlobalObject& aGlobal)
 {
-  RefPtr<Console> console;
-
+  ErrorResult rv;
+  RefPtr<Console> console = GetConsoleInternal(aGlobal, rv);
+  if (NS_WARN_IF(rv.Failed()) || !console) {
+    rv.SuppressException();
+    return nullptr;
+  }
+
+  console->AssertIsOnOwningThread();
+
+  if (console->IsShuttingDown()) {
+    return nullptr;
+  }
+
+  return console.forget();
+}
+
+/* static */ Console*
+Console::GetConsoleInternal(const GlobalObject& aGlobal, ErrorResult& aRv)
+{
+  // Worklet
+  if (NS_IsMainThread()) {
+    nsCOMPtr<WorkletGlobalScope> workletScope =
+      do_QueryInterface(aGlobal.GetAsSupports());
+    if (workletScope) {
+      return workletScope->GetConsole(aRv);
+    }
+  }
+
+  // Window
   if (NS_IsMainThread()) {
     nsCOMPtr<nsPIDOMWindowInner> innerWindow =
       do_QueryInterface(aGlobal.GetAsSupports());
     if (NS_WARN_IF(!innerWindow)) {
       return nullptr;
     }
 
     nsGlobalWindow* window = nsGlobalWindow::Cast(innerWindow);
-
-    ErrorResult rv;
-    console = window->GetConsole(rv);
-    if (NS_WARN_IF(rv.Failed())) {
-      rv.SuppressException();
-      return nullptr;
-    }
-  } else {
-    JSContext* cx = aGlobal.Context();
-    WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx);
-    MOZ_ASSERT(workerPrivate);
-
-    nsCOMPtr<nsIGlobalObject> global =
-      do_QueryInterface(aGlobal.GetAsSupports());
-    if (NS_WARN_IF(!global)) {
-      return nullptr;
-    }
-
-    WorkerGlobalScope* scope = workerPrivate->GlobalScope();
-    MOZ_ASSERT(scope);
-
-    // Normal worker scope.
-    ErrorResult rv;
-    if (scope == global) {
-      console = scope->GetConsole(rv);
-    }
-
-    // Debugger worker scope
-    else {
-      WorkerDebuggerGlobalScope* debuggerScope =
-        workerPrivate->DebuggerGlobalScope();
-      MOZ_ASSERT(debuggerScope);
-      MOZ_ASSERT(debuggerScope == global, "Which kind of global do we have?");
-
-      console = debuggerScope->GetConsole(rv);
-    }
-
-    if (NS_WARN_IF(rv.Failed())) {
-      rv.SuppressException();
-      return nullptr;
-    }
+    return window->GetConsole(aRv);
   }
 
-  MOZ_ASSERT(console);
-  console->AssertIsOnOwningThread();
-
-  if (console->IsShuttingDown()) {
+  // Workers
+  MOZ_ASSERT(!NS_IsMainThread());
+
+  JSContext* cx = aGlobal.Context();
+  WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx);
+  MOZ_ASSERT(workerPrivate);
+
+  nsCOMPtr<nsIGlobalObject> global =
+    do_QueryInterface(aGlobal.GetAsSupports());
+  if (NS_WARN_IF(!global)) {
     return nullptr;
   }
 
-  return console.forget();
+  WorkerGlobalScope* scope = workerPrivate->GlobalScope();
+  MOZ_ASSERT(scope);
+
+  // Normal worker scope.
+  if (scope == global) {
+    return scope->GetConsole(aRv);
+  }
+
+  // Debugger worker scope
+  else {
+    WorkerDebuggerGlobalScope* debuggerScope =
+      workerPrivate->DebuggerGlobalScope();
+    MOZ_ASSERT(debuggerScope);
+    MOZ_ASSERT(debuggerScope == global, "Which kind of global do we have?");
+
+    return debuggerScope->GetConsole(aRv);
+  }
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/console/Console.h
+++ b/dom/console/Console.h
@@ -156,16 +156,19 @@ private:
     MethodAssert,
     MethodCount,
     MethodClear
   };
 
   static already_AddRefed<Console>
   GetConsole(const GlobalObject& aGlobal);
 
+  static Console*
+  GetConsoleInternal(const GlobalObject& aGlobal, ErrorResult &aRv);
+
   static void
   ProfileMethod(const GlobalObject& aGlobal, const nsAString& aAction,
                 const Sequence<JS::Value>& aData);
 
   void
   ProfileMethodInternal(JSContext* aCx, const nsAString& aAction,
                         const Sequence<JS::Value>& aData);
 
--- a/dom/json/nsJSON.cpp
+++ b/dom/json/nsJSON.cpp
@@ -526,17 +526,17 @@ nsJSONListener::OnStopRequest(nsIRequest
     rv = ProcessBytes(nullptr, 0);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   JS::Rooted<JS::Value> reviver(mCx, JS::NullValue()), value(mCx);
 
   JS::ConstTwoByteChars chars(reinterpret_cast<const char16_t*>(mBufferedChars.Elements()),
                               mBufferedChars.Length());
-  bool ok = JS_ParseJSONWithReviver(mCx, chars.start().get(),
+  bool ok = JS_ParseJSONWithReviver(mCx, chars.begin().get(),
                                       uint32_t(mBufferedChars.Length()),
                                       reviver, &value);
 
   *mRootVal = value;
   mBufferedChars.TruncateLength(0);
   return ok ? NS_OK : NS_ERROR_FAILURE;
 }
 
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -96,16 +96,17 @@ DIRS += [
     'xslt',
     'xul',
     'manifest',
     'vr',
     'u2f',
     'console',
     'performance',
     'xhr',
+    'worklet',
 ]
 
 if CONFIG['OS_ARCH'] == 'WINNT':
     DIRS += ['plugins/ipc/hangui']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
     DIRS += [
         'speakermanager',
--- a/dom/webidl/Console.webidl
+++ b/dom/webidl/Console.webidl
@@ -1,15 +1,15 @@
 /* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=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/. */
 
-[Exposed=(Window,Worker,WorkerDebugger),
+[Exposed=(Window,Worker,WorkerDebugger,Worklet),
  ClassString="Console",
  ProtoObjectHack]
 namespace console {
   void log(any... data);
   void info(any... data);
   void warn(any... data);
   void error(any... data);
   void _exception(any... data);
--- a/dom/webidl/Window.webidl
+++ b/dom/webidl/Window.webidl
@@ -481,16 +481,22 @@ partial interface Window {
   [Pref="dom.vr.enabled"]
   attribute EventHandler onvrdisplayconnect;
   [Pref="dom.vr.enabled"]
   attribute EventHandler onvrdisplaydisconnect;
   [Pref="dom.vr.enabled"]
   attribute EventHandler onvrdisplaypresentchange;
 };
 
+// For testing worklet only
+partial interface Window {
+  [Pref="dom.worklet.testing.enabled", Throws]
+  Worklet createWorklet();
+};
+
 Window implements ChromeWindow;
 Window implements WindowOrWorkerGlobalScope;
 
 partial interface Window {
   [Throws, Pref="dom.requestIdleCallback.enabled"]
   unsigned long requestIdleCallback(IdleRequestCallback callback,
                                     optional IdleRequestOptions options);
   [Pref="dom.requestIdleCallback.enabled"]
new file mode 100644
--- /dev/null
+++ b/dom/webidl/Worklet.webidl
@@ -0,0 +1,14 @@
+/* -*- Mode: IDL; 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/.
+ *
+ * The origin of this IDL file is
+ * https://drafts.css-houdini.org/worklets/#idl-index
+ */
+
+[Pref="dom.worklet.enabled"]
+interface Worklet {
+  [NewObject, Throws]
+  Promise<void> import(USVString moduleURL);
+};
new file mode 100644
--- /dev/null
+++ b/dom/webidl/WorkletGlobalScope.webidl
@@ -0,0 +1,17 @@
+/* -*- Mode: IDL; 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/.
+ *
+ * The origin of this IDL file is
+ * https://drafts.css-houdini.org/worklets/#idl-index
+ */
+
+[Global=(Worklet), Exposed=(Worklet)]
+interface WorkletGlobalScope {
+};
+
+// Mozilla extensions
+partial interface WorkletGlobalScope {
+  void dump(optional DOMString str);
+};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -576,16 +576,18 @@ WEBIDL_FILES = [
     'WifiOptions.webidl',
     'WindowOrWorkerGlobalScope.webidl',
     'WindowRoot.webidl',
     'Worker.webidl',
     'WorkerDebuggerGlobalScope.webidl',
     'WorkerGlobalScope.webidl',
     'WorkerLocation.webidl',
     'WorkerNavigator.webidl',
+    'Worklet.webidl',
+    'WorkletGlobalScope.webidl',
     'XMLDocument.webidl',
     'XMLHttpRequest.webidl',
     'XMLHttpRequestEventTarget.webidl',
     'XMLHttpRequestUpload.webidl',
     'XMLSerializer.webidl',
     'XMLStylesheetProcessingInstruction.webidl',
     'XPathEvaluator.webidl',
     'XPathExpression.webidl',
new file mode 100644
--- /dev/null
+++ b/dom/worklet/Worklet.cpp
@@ -0,0 +1,391 @@
+/* -*- 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 "Worklet.h"
+#include "WorkletGlobalScope.h"
+#include "mozilla/dom/WorkletBinding.h"
+#include "mozilla/dom/BlobBinding.h"
+#include "mozilla/dom/Fetch.h"
+#include "mozilla/dom/PromiseNativeHandler.h"
+#include "mozilla/dom/RegisterWorkletBindings.h"
+#include "mozilla/dom/Response.h"
+#include "mozilla/dom/ScriptSettings.h"
+#include "nsIThreadRetargetableRequest.h"
+#include "nsNetUtil.h"
+#include "nsScriptLoader.h"
+#include "xpcprivate.h"
+
+namespace mozilla {
+namespace dom {
+
+// ---------------------------------------------------------------------------
+// WorkletFetchHandler
+
+class WorkletFetchHandler : public PromiseNativeHandler
+                          , public nsIStreamLoaderObserver
+{
+public:
+  NS_DECL_ISUPPORTS
+
+  static already_AddRefed<Promise>
+  Fetch(Worklet* aWorklet, const nsAString& aModuleURL, ErrorResult& aRv)
+  {
+    MOZ_ASSERT(aWorklet);
+
+    nsCOMPtr<nsIGlobalObject> global =
+      do_QueryInterface(aWorklet->GetParentObject());
+    MOZ_ASSERT(global);
+
+    RefPtr<Promise> promise = Promise::Create(global, aRv);
+    if (NS_WARN_IF(aRv.Failed())) {
+      return nullptr;
+    }
+
+    nsCOMPtr<nsPIDOMWindowInner> window = aWorklet->GetParentObject();
+    MOZ_ASSERT(window);
+
+    nsCOMPtr<nsIDocument> doc;
+    doc = window->GetExtantDoc();
+    if (!doc) {
+      promise->MaybeReject(NS_ERROR_FAILURE);
+      return promise.forget();
+    }
+
+    nsCOMPtr<nsIURI> baseURI = doc->GetBaseURI();
+    nsCOMPtr<nsIURI> resolvedURI;
+    nsresult rv = NS_NewURI(getter_AddRefs(resolvedURI), aModuleURL, nullptr, baseURI);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      promise->MaybeReject(rv);
+      return promise.forget();
+    }
+
+    nsAutoCString spec;
+    rv = resolvedURI->GetSpec(spec);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      promise->MaybeReject(rv);
+      return promise.forget();
+    }
+
+    // Maybe we already have an handler for this URI
+    {
+      WorkletFetchHandler* handler = aWorklet->GetImportFetchHandler(spec);
+      if (handler) {
+        handler->AddPromise(promise);
+        return promise.forget();
+      }
+    }
+
+    RequestOrUSVString request;
+    request.SetAsUSVString().Rebind(aModuleURL.Data(), aModuleURL.Length());
+
+    RequestInit init;
+
+    RefPtr<Promise> fetchPromise = FetchRequest(global, request, init, aRv);
+    if (NS_WARN_IF(aRv.Failed())) {
+      promise->MaybeReject(aRv);
+      return promise.forget();
+    }
+
+    RefPtr<WorkletFetchHandler> handler =
+      new WorkletFetchHandler(aWorklet, aModuleURL, promise);
+    fetchPromise->AppendNativeHandler(handler);
+
+    aWorklet->AddImportFetchHandler(spec, handler);
+    return promise.forget();
+  }
+
+  virtual void
+  ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override
+  {
+    if (!aValue.isObject()) {
+      RejectPromises(NS_ERROR_FAILURE);
+      return;
+    }
+
+    RefPtr<Response> response;
+    nsresult rv = UNWRAP_OBJECT(Response, &aValue.toObject(), response);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      RejectPromises(NS_ERROR_FAILURE);
+      return;
+    }
+
+    if (!response->Ok()) {
+      RejectPromises(NS_ERROR_DOM_NETWORK_ERR);
+      return;
+    }
+
+    nsCOMPtr<nsIInputStream> inputStream;
+    response->GetBody(getter_AddRefs(inputStream));
+    if (!inputStream) {
+      RejectPromises(NS_ERROR_DOM_NETWORK_ERR);
+      return;
+    }
+
+    nsCOMPtr<nsIInputStreamPump> pump;
+    rv = NS_NewInputStreamPump(getter_AddRefs(pump), inputStream);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      RejectPromises(rv);
+      return;
+    }
+
+    nsCOMPtr<nsIStreamLoader> loader;
+    rv = NS_NewStreamLoader(getter_AddRefs(loader), this);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      RejectPromises(rv);
+      return;
+    }
+
+    rv = pump->AsyncRead(loader, nullptr);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      RejectPromises(rv);
+      return;
+    }
+
+    nsCOMPtr<nsIThreadRetargetableRequest> rr = do_QueryInterface(pump);
+    if (rr) {
+      nsCOMPtr<nsIEventTarget> sts =
+        do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID);
+      rv = rr->RetargetDeliveryTo(sts);
+      if (NS_FAILED(rv)) {
+        NS_WARNING("Failed to dispatch the nsIInputStreamPump to a IO thread.");
+      }
+    }
+  }
+
+  NS_IMETHOD
+  OnStreamComplete(nsIStreamLoader* aLoader, nsISupports* aContext,
+                   nsresult aStatus, uint32_t aStringLen,
+                   const uint8_t* aString) override
+  {
+    MOZ_ASSERT(NS_IsMainThread());
+
+    if (NS_FAILED(aStatus)) {
+      RejectPromises(aStatus);
+      return NS_OK;
+    }
+
+    char16_t* scriptTextBuf;
+    size_t scriptTextLength;
+    nsresult rv =
+      nsScriptLoader::ConvertToUTF16(nullptr, aString, aStringLen,
+                                     NS_LITERAL_STRING("UTF-8"), nullptr,
+                                     scriptTextBuf, scriptTextLength);
+    if (NS_WARN_IF(NS_FAILED(rv))) {
+      RejectPromises(rv);
+      return NS_OK;
+    }
+
+    // Moving the ownership of the buffer
+    JS::SourceBufferHolder buffer(scriptTextBuf, scriptTextLength,
+                                  JS::SourceBufferHolder::GiveOwnership);
+
+    AutoJSAPI jsapi;
+    jsapi.Init();
+
+    RefPtr<WorkletGlobalScope> globalScope =
+      mWorklet->GetOrCreateGlobalScope(jsapi.cx());
+    MOZ_ASSERT(globalScope);
+
+    AutoEntryScript aes(globalScope, "Worklet");
+    JSContext* cx = aes.cx();
+
+    JS::Rooted<JSObject*> globalObj(cx, globalScope->GetGlobalJSObject());
+
+    (void) new XPCWrappedNativeScope(cx, globalObj);
+
+    JS::CompileOptions compileOptions(cx);
+    compileOptions.setIntroductionType("Worklet");
+    compileOptions.setFileAndLine(NS_ConvertUTF16toUTF8(mURL).get(), 0);
+    compileOptions.setVersion(JSVERSION_DEFAULT);
+    compileOptions.setIsRunOnce(true);
+
+    // We only need the setNoScriptRval bit when compiling off-thread here,
+    // since otherwise nsJSUtils::EvaluateString will set it up for us.
+    compileOptions.setNoScriptRval(true);
+
+    JS::Rooted<JS::Value> unused(cx);
+    if (!JS::Evaluate(cx, compileOptions, buffer, &unused)) {
+      ErrorResult error;
+      error.StealExceptionFromJSContext(cx);
+      RejectPromises(error.StealNSResult());
+      return NS_OK;
+    }
+
+    // All done.
+    ResolvePromises();
+    return NS_OK;
+  }
+
+  virtual void
+  RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override
+  {
+    RejectPromises(NS_ERROR_DOM_NETWORK_ERR);
+  }
+
+private:
+  WorkletFetchHandler(Worklet* aWorklet, const nsAString& aURL,
+                      Promise* aPromise)
+    : mWorklet(aWorklet)
+    , mStatus(ePending)
+    , mErrorStatus(NS_OK)
+    , mURL(aURL)
+  {
+    MOZ_ASSERT(aWorklet);
+    MOZ_ASSERT(aPromise);
+
+    mPromises.AppendElement(aPromise);
+  }
+
+  ~WorkletFetchHandler()
+  {}
+
+  void
+  AddPromise(Promise* aPromise)
+  {
+    MOZ_ASSERT(aPromise);
+
+    switch (mStatus) {
+      case ePending:
+        mPromises.AppendElement(aPromise);
+        return;
+
+      case eRejected:
+        MOZ_ASSERT(NS_FAILED(mErrorStatus));
+        aPromise->MaybeReject(mErrorStatus);
+        return;
+
+      case eResolved:
+        aPromise->MaybeResolveWithUndefined();
+        return;
+    }
+  }
+
+  void
+  RejectPromises(nsresult aResult)
+  {
+    MOZ_ASSERT(mStatus == ePending);
+    MOZ_ASSERT(NS_FAILED(aResult));
+
+    for (uint32_t i = 0; i < mPromises.Length(); ++i) {
+      mPromises[i]->MaybeReject(aResult);
+    }
+    mPromises.Clear();
+
+    mStatus = eRejected;
+    mErrorStatus = aResult;
+    mWorklet = nullptr;
+  }
+
+  void
+  ResolvePromises()
+  {
+    MOZ_ASSERT(mStatus == ePending);
+
+    for (uint32_t i = 0; i < mPromises.Length(); ++i) {
+      mPromises[i]->MaybeResolveWithUndefined();
+    }
+    mPromises.Clear();
+
+    mStatus = eResolved;
+    mWorklet = nullptr;
+  }
+
+  RefPtr<Worklet> mWorklet;
+  nsTArray<RefPtr<Promise>> mPromises;
+
+  enum {
+    ePending,
+    eRejected,
+    eResolved
+  } mStatus;
+
+  nsresult mErrorStatus;
+
+  nsString mURL;
+};
+
+NS_IMPL_ISUPPORTS(WorkletFetchHandler, nsIStreamLoaderObserver)
+
+// ---------------------------------------------------------------------------
+// Worklet
+
+NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(Worklet, mWindow, mScope)
+NS_IMPL_CYCLE_COLLECTING_ADDREF(Worklet)
+NS_IMPL_CYCLE_COLLECTING_RELEASE(Worklet)
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Worklet)
+  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
+  NS_INTERFACE_MAP_ENTRY(nsISupports)
+NS_INTERFACE_MAP_END
+
+Worklet::Worklet(nsPIDOMWindowInner* aWindow, nsIPrincipal* aPrincipal)
+  : mWindow(aWindow)
+  , mPrincipal(aPrincipal)
+{
+  MOZ_ASSERT(aWindow);
+  MOZ_ASSERT(aPrincipal);
+
+#ifdef RELEASE_OR_BETA
+  MOZ_CRASH("This code should not go to release/beta yet!");
+#endif
+}
+
+Worklet::~Worklet()
+{}
+
+JSObject*
+Worklet::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
+{
+  return WorkletBinding::Wrap(aCx, this, aGivenProto);
+}
+
+already_AddRefed<Promise>
+Worklet::Import(const nsAString& aModuleURL, ErrorResult& aRv)
+{
+  return WorkletFetchHandler::Fetch(this, aModuleURL, aRv);
+}
+
+WorkletGlobalScope*
+Worklet::GetOrCreateGlobalScope(JSContext* aCx)
+{
+  if (!mScope) {
+    mScope = new WorkletGlobalScope(mWindow);
+
+    JS::Rooted<JSObject*> global(aCx);
+    NS_ENSURE_TRUE(mScope->WrapGlobalObject(aCx, mPrincipal, &global), nullptr);
+
+    JSAutoCompartment ac(aCx, global);
+
+    // Init Web IDL bindings
+    if (!RegisterWorkletBindings(aCx, global)) {
+      mScope = nullptr;
+      return nullptr;
+    }
+
+    JS_FireOnNewGlobalObject(aCx, global);
+  }
+
+  return mScope;
+}
+
+WorkletFetchHandler*
+Worklet::GetImportFetchHandler(const nsACString& aURI)
+{
+  return mImportHandlers.GetWeak(aURI);
+}
+
+void
+Worklet::AddImportFetchHandler(const nsACString& aURI,
+                               WorkletFetchHandler* aHandler)
+{
+  MOZ_ASSERT(aHandler);
+  MOZ_ASSERT(!mImportHandlers.GetWeak(aURI));
+
+  mImportHandlers.Put(aURI, aHandler);
+}
+
+} // dom namespace
+} // mozilla namespace
new file mode 100644
--- /dev/null
+++ b/dom/worklet/Worklet.h
@@ -0,0 +1,70 @@
+/* -*- 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_dom_Worklet_h
+#define mozilla_dom_Worklet_h
+
+#include "mozilla/Attributes.h"
+#include "mozilla/ErrorResult.h"
+#include "nsRefPtrHashtable.h"
+#include "nsWrapperCache.h"
+#include "nsCOMPtr.h"
+
+class nsPIDOMWindowInner;
+class nsIPrincipal;
+
+namespace mozilla {
+namespace dom {
+
+class Promise;
+class WorkletGlobalScope;
+class WorkletFetchHandler;
+
+class Worklet final : public nsISupports
+                    , public nsWrapperCache
+{
+public:
+  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Worklet)
+
+  Worklet(nsPIDOMWindowInner* aWindow, nsIPrincipal* aPrincipal);
+
+  nsPIDOMWindowInner* GetParentObject() const
+  {
+    return mWindow;
+  }
+
+  virtual JSObject*
+  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+  already_AddRefed<Promise>
+  Import(const nsAString& aModuleURL, ErrorResult& aRv);
+
+  WorkletGlobalScope*
+  GetOrCreateGlobalScope(JSContext* aCx);
+
+private:
+  ~Worklet();
+
+  WorkletFetchHandler*
+  GetImportFetchHandler(const nsACString& aURI);
+
+  void
+  AddImportFetchHandler(const nsACString& aURI, WorkletFetchHandler* aHandler);
+
+  nsCOMPtr<nsPIDOMWindowInner> mWindow;
+  nsCOMPtr<nsIPrincipal> mPrincipal;
+
+  RefPtr<WorkletGlobalScope> mScope;
+  nsRefPtrHashtable<nsCStringHashKey, WorkletFetchHandler> mImportHandlers;
+
+  friend class WorkletFetchHandler;
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_Worklet_h
new file mode 100644
--- /dev/null
+++ b/dom/worklet/WorkletGlobalScope.cpp
@@ -0,0 +1,106 @@
+/* -*- 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 "WorkletGlobalScope.h"
+#include "mozilla/dom/WorkletGlobalScopeBinding.h"
+#include "mozilla/dom/Console.h"
+#include "nsContentUtils.h"
+
+namespace mozilla {
+namespace dom {
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(WorkletGlobalScope)
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WorkletGlobalScope)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
+  NS_IMPL_CYCLE_COLLECTION_UNLINK(mWindow)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK(mConsole)
+  tmp->UnlinkHostObjectURIs();
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(WorkletGlobalScope)
+
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWindow)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mConsole)
+  tmp->TraverseHostObjectURIs(cb);
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(WorkletGlobalScope)
+
+NS_IMPL_CYCLE_COLLECTING_ADDREF(WorkletGlobalScope)
+NS_IMPL_CYCLE_COLLECTING_RELEASE(WorkletGlobalScope)
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WorkletGlobalScope)
+  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
+  NS_INTERFACE_MAP_ENTRY(nsIGlobalObject)
+  NS_INTERFACE_MAP_ENTRY(WorkletGlobalScope)
+NS_INTERFACE_MAP_END
+
+WorkletGlobalScope::WorkletGlobalScope(nsPIDOMWindowInner* aWindow)
+  : mWindow(aWindow)
+{
+  MOZ_ASSERT(aWindow);
+}
+
+WorkletGlobalScope::~WorkletGlobalScope()
+{
+}
+
+JSObject*
+WorkletGlobalScope::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
+{
+  MOZ_CRASH("We should never get here!");
+  return nullptr;
+}
+
+bool
+WorkletGlobalScope::WrapGlobalObject(JSContext* aCx,
+                                     nsIPrincipal* aPrincipal,
+                                     JS::MutableHandle<JSObject*> aReflector)
+{
+  JS::CompartmentOptions options;
+  return WorkletGlobalScopeBinding::Wrap(aCx, this, this,
+                                         options,
+                                         nsJSPrincipals::get(aPrincipal),
+                                         true, aReflector);
+}
+
+Console*
+WorkletGlobalScope::GetConsole(ErrorResult& aRv)
+{
+  if (!mConsole) {
+    mConsole = Console::Create(mWindow, aRv);
+    if (NS_WARN_IF(aRv.Failed())) {
+      return nullptr;
+    }
+  }
+
+  return mConsole;
+}
+
+void
+WorkletGlobalScope::Dump(const Optional<nsAString>& aString) const
+{
+  if (!nsContentUtils::DOMWindowDumpEnabled()) {
+    return;
+  }
+
+  if (!aString.WasPassed()) {
+    return;
+  }
+
+  NS_ConvertUTF16toUTF8 str(aString.Value());
+
+#ifdef ANDROID
+  __android_log_print(ANDROID_LOG_INFO, "Gecko", "%s", str.get());
+#endif
+
+  fputs(str.get(), stdout);
+  fflush(stdout);
+}
+
+} // dom namespace
+} // mozilla namespace
new file mode 100644
--- /dev/null
+++ b/dom/worklet/WorkletGlobalScope.h
@@ -0,0 +1,75 @@
+/* -*- 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_dom_WorkletGlobalScope_h
+#define mozilla_dom_WorkletGlobalScope_h
+
+#include "mozilla/Attributes.h"
+#include "mozilla/ErrorResult.h"
+#include "mozilla/dom/BindingDeclarations.h"
+#include "nsIGlobalObject.h"
+#include "nsWrapperCache.h"
+
+#define WORKLET_IID \
+  { 0x1b3f62e7, 0xe357, 0x44be, \
+    { 0xbf, 0xe0, 0xdf, 0x85, 0xe6, 0x56, 0x85, 0xac } }
+
+class nsIPrincipal;
+class nsPIDOMWindowInner;
+
+namespace mozilla {
+namespace dom {
+
+class Console;
+
+class WorkletGlobalScope final : public nsIGlobalObject
+                               , public nsWrapperCache
+{
+public:
+  NS_DECLARE_STATIC_IID_ACCESSOR(WORKLET_IID)
+
+  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(WorkletGlobalScope)
+
+  explicit WorkletGlobalScope(nsPIDOMWindowInner* aWindow);
+
+  nsIGlobalObject* GetParentObject() const
+  {
+    return nullptr;
+  }
+
+  virtual JSObject*
+  WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+  bool
+  WrapGlobalObject(JSContext* aCx, nsIPrincipal* aPrincipal,
+                   JS::MutableHandle<JSObject*> aReflector);
+
+  virtual JSObject*
+  GetGlobalJSObject() override
+  {
+    return GetWrapper();
+  }
+
+  Console*
+  GetConsole(ErrorResult& aRv);
+
+  void
+  Dump(const Optional<nsAString>& aString) const;
+
+private:
+  ~WorkletGlobalScope();
+
+  nsCOMPtr<nsPIDOMWindowInner> mWindow;
+  RefPtr<Console> mConsole;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(WorkletGlobalScope, WORKLET_IID)
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_WorkletGlobalScope_h
new file mode 100644
--- /dev/null
+++ b/dom/worklet/moz.build
@@ -0,0 +1,25 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+EXPORTS.mozilla.dom += [
+    'Worklet.h',
+    'WorkletGlobalScope.h',
+]
+
+UNIFIED_SOURCES += [
+    'Worklet.cpp',
+    'WorkletGlobalScope.cpp',
+]
+
+LOCAL_INCLUDES += [
+    '/js/xpconnect/src',
+]
+
+include('/ipc/chromium/chromium-config.mozbuild')
+
+MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
+
+FINAL_LIBRARY = 'xul'
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/common.js
@@ -0,0 +1,14 @@
+function loadTest(file) {
+  var iframe = document.createElement('iframe');
+  iframe.src = file;
+
+  document.body.appendChild(iframe);
+}
+
+function setupTest() {
+  window.SimpleTest = parent.SimpleTest;
+  window.is = parent.is;
+  window.isnot = parent.isnot;
+  window.ok = parent.ok;
+  window.info = parent.info;
+}
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/file_basic.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+setupTest();
+
+var worklet = window.createWorklet();
+ok(!!worklet, "We have a Worklet");
+
+// First loading
+worklet.import("common.js")
+.then(() => {
+  ok(true, "Import should load a resource.");
+})
+
+// Second loading - same file
+.then(() => {
+  return worklet.import("common.js")
+})
+.then(() => {
+  ok(true, "Import should load a resource.");
+})
+
+// 3rd loading - a network error
+.then(() => {
+  return worklet.import("404.js");
+})
+.then(() => {
+  ok(false, "The loading should fail.");
+}, () => {
+  ok(true, "The loading should fail.");
+})
+
+// 4th loading - a network error
+.then(() => {
+  return worklet.import("404.js");
+})
+.then(() => {
+  ok(false, "The loading should fail.");
+}, () => {
+  ok(true, "The loading should fail.");
+})
+
+// done
+.then(() => {
+  SimpleTest.finish();
+});
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/file_console.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+setupTest();
+
+var worklet = window.createWorklet();
+ok(!!worklet, "We have a Worklet");
+worklet.import("worklet_console.js");
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/file_dump.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+setupTest();
+
+var worklet = window.createWorklet();
+ok(!!worklet, "We have a Worklet");
+worklet.import("worklet_dump.js")
+.then(() => {
+  SimpleTest.finish();
+});
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/file_import_with_cache.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+setupTest();
+
+var worklet = window.createWorklet();
+ok(!!worklet, "We have a Worklet");
+
+function loading() {
+  worklet.import("server_import_with_cache.sjs")
+  .then(() => {
+    ok(true, "Import should load a resource.");
+  }, () => {
+    ok(false, "Import should load a resource.");
+  })
+  .then(() => {
+    done();
+  });
+}
+
+var count = 0;
+const MAX = 10;
+
+function done() {
+  if (++count == MAX) {
+    SimpleTest.finish();
+  }
+}
+
+for (var i = 0; i < MAX; ++i) {
+  loading();
+}
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/mochitest.ini
@@ -0,0 +1,13 @@
+[DEFAULT]
+skip-if = release_or_beta
+support-files =
+  common.js
+
+[test_basic.html]
+support-files=file_basic.html
+[test_console.html]
+support-files=file_console.html worklet_console.js
+[test_import_with_cache.html]
+support-files=file_import_with_cache.html server_import_with_cache.sjs
+[test_dump.html]
+support-files=file_dump.html worklet_dump.js
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/server_import_with_cache.sjs
@@ -0,0 +1,13 @@
+function handleRequest(request, response)
+{
+  response.setHeader("Content-Type", "text/javascript", false);
+
+  var state = getState("alreadySent");
+  if (!state) {
+    setState("alreadySent", "1");
+  } else {
+    response.setStatusLine('1.1', 404, "Not Found");
+  }
+
+  response.write("42");
+}
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/test_basic.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv(
+  {"set": [["dom.worklet.testing.enabled", true],
+           ["dom.worklet.enabled", true]]},
+  function() { loadTest("file_basic.html"); });
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/test_console.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet - Console</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+function consoleListener() {
+  SpecialPowers.addObserver(this, "console-api-log-event", false);
+}
+
+consoleListener.prototype  = {
+  observe: function(aSubject, aTopic, aData) {
+    if (aTopic == "console-api-log-event") {
+      var obj = aSubject.wrappedJSObject;
+      if (obj.arguments[0] == "Hello world from a worklet") {
+        ok(true, "Message received \\o/");
+
+        SpecialPowers.removeObserver(this, "console-api-log-event");
+        SimpleTest.finish();
+        return;
+      }
+    }
+  }
+}
+
+var cl = new consoleListener();
+
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv(
+  {"set": [["dom.worklet.testing.enabled", true],
+           ["dom.worklet.enabled", true]]},
+  function() { loadTest("file_console.html"); });
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/test_dump.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet - Console</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv(
+  {"set": [["dom.worklet.testing.enabled", true],
+           ["dom.worklet.enabled", true]]},
+  function() { loadTest("file_dump.html"); });
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/test_import_with_cache.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for Worklet</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <script type="application/javascript" src="common.js"></script>
+</head>
+<body>
+
+<script type="application/javascript">
+
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv(
+  {"set": [["dom.worklet.testing.enabled", true],
+           ["dom.worklet.enabled", true]]},
+  function() { loadTest("file_import_with_cache.html"); });
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/worklet_console.js
@@ -0,0 +1,1 @@
+console.log("Hello world from a worklet");
new file mode 100644
--- /dev/null
+++ b/dom/worklet/tests/worklet_dump.js
@@ -0,0 +1,1 @@
+dump("Hello world from a worklet");
--- a/js/src/builtin/Eval.cpp
+++ b/js/src/builtin/Eval.cpp
@@ -153,17 +153,17 @@ EvalStringMightBeJSON(const mozilla::Ran
     {
         // Remarkably, JavaScript syntax is not a superset of JSON syntax:
         // strings in JavaScript cannot contain the Unicode line and paragraph
         // terminator characters U+2028 and U+2029, but strings in JSON can.
         // Rather than force the JSON parser to handle this quirk when used by
         // eval, we simply don't use the JSON parser when either character
         // appears in the provided string.  See bug 657367.
         if (sizeof(CharT) > 1) {
-            for (RangedPtr<const CharT> cp = chars.start() + 1, end = chars.end() - 1;
+            for (RangedPtr<const CharT> cp = chars.begin() + 1, end = chars.end() - 1;
                  cp < end;
                  cp++)
             {
                 char16_t c = *cp;
                 if (c == 0x2028 || c == 0x2029)
                     return false;
             }
         }
@@ -178,17 +178,17 @@ static EvalJSONResult
 ParseEvalStringAsJSON(JSContext* cx, const mozilla::Range<const CharT> chars, MutableHandleValue rval)
 {
     size_t len = chars.length();
     MOZ_ASSERT((chars[0] == '(' && chars[len - 1] == ')') ||
                (chars[0] == '[' && chars[len - 1] == ']'));
 
     auto jsonChars = (chars[0] == '[')
                      ? chars
-                     : mozilla::Range<const CharT>(chars.start().get() + 1U, len - 2);
+                     : mozilla::Range<const CharT>(chars.begin().get() + 1U, len - 2);
 
     Rooted<JSONParser<CharT>> parser(cx, JSONParser<CharT>(cx, jsonChars, JSONParserBase::NoError));
     if (!parser.parse(rval))
         return EvalJSON_Failure;
 
     return rval.isUndefined() ? EvalJSON_NotJSON : EvalJSON_Success;
 }
 
@@ -303,17 +303,17 @@ EvalKernel(JSContext* cx, HandleValue v,
             options.setFileAndLine("eval", 1);
             options.setIntroductionType("eval");
         }
 
         AutoStableStringChars linearChars(cx);
         if (!linearChars.initTwoByte(cx, linearStr))
             return false;
 
-        const char16_t* chars = linearChars.twoByteRange().start().get();
+        const char16_t* chars = linearChars.twoByteRange().begin().get();
         SourceBufferHolder::Ownership ownership = linearChars.maybeGiveOwnershipToCaller()
                                                   ? SourceBufferHolder::GiveOwnership
                                                   : SourceBufferHolder::NoOwnership;
         SourceBufferHolder srcBuf(chars, linearStr->length(), ownership);
         JSScript* compiled = frontend::CompileEvalScript(cx, cx->tempLifoAlloc(),
                                                          env, enclosing,
                                                          options, srcBuf);
         if (!compiled)
@@ -384,17 +384,17 @@ js::DirectEvalStringFromIon(JSContext* c
             options.setFileAndLine("eval", 1);
             options.setIntroductionType("eval");
         }
 
         AutoStableStringChars linearChars(cx);
         if (!linearChars.initTwoByte(cx, linearStr))
             return false;
 
-        const char16_t* chars = linearChars.twoByteRange().start().get();
+        const char16_t* chars = linearChars.twoByteRange().begin().get();
         SourceBufferHolder::Ownership ownership = linearChars.maybeGiveOwnershipToCaller()
                                                   ? SourceBufferHolder::GiveOwnership
                                                   : SourceBufferHolder::NoOwnership;
         SourceBufferHolder srcBuf(chars, linearStr->length(), ownership);
         JSScript* compiled = frontend::CompileEvalScript(cx, cx->tempLifoAlloc(),
                                                          env, enclosing,
                                                          options, srcBuf);
         if (!compiled)
--- a/js/src/builtin/Intl.cpp
+++ b/js/src/builtin/Intl.cpp
@@ -1140,18 +1140,18 @@ intl_CompareStrings(JSContext* cx, UColl
     AutoStableStringChars stableChars2(cx);
     if (!stableChars2.initTwoByte(cx, str2))
         return false;
 
     mozilla::Range<const char16_t> chars1 = stableChars1.twoByteRange();
     mozilla::Range<const char16_t> chars2 = stableChars2.twoByteRange();
 
     UCollationResult uresult = ucol_strcoll(coll,
-                                            Char16ToUChar(chars1.start().get()), chars1.length(),
-                                            Char16ToUChar(chars2.start().get()), chars2.length());
+                                            Char16ToUChar(chars1.begin().get()), chars1.length(),
+                                            Char16ToUChar(chars2.begin().get()), chars2.length());
     int32_t res;
     switch (uresult) {
         case UCOL_LESS: res = -1; break;
         case UCOL_EQUAL: res = 0; break;
         case UCOL_GREATER: res = 1; break;
         default: MOZ_CRASH("ucol_strcoll returned bad UCollationResult");
     }
     result.setInt32(res);
@@ -1495,17 +1495,17 @@ NewUNumberFormat(JSContext* cx, HandleOb
         if (!GetProperty(cx, internals, internals, cx->names().currency, &value))
             return nullptr;
         currency = value.toString();
         MOZ_ASSERT(currency->length() == 3,
                    "IsWellFormedCurrencyCode permits only length-3 strings");
         if (!currency->ensureFlat(cx) || !stableChars.initTwoByte(cx, currency))
             return nullptr;
         // uCurrency remains owned by stableChars.
-        uCurrency = Char16ToUChar(stableChars.twoByteRange().start().get());
+        uCurrency = Char16ToUChar(stableChars.twoByteRange().begin().get());
         if (!uCurrency)
             return nullptr;
 
         if (!GetProperty(cx, internals, internals, cx->names().currencyDisplay, &value))
             return nullptr;
         JSAutoByteString currencyDisplay(cx, value.toString());
         if (!currencyDisplay)
             return nullptr;
@@ -2061,25 +2061,25 @@ js::intl_canonicalizeTimeZone(JSContext*
     mozilla::Range<const char16_t> tzchars = stableChars.twoByteRange();
 
     Vector<char16_t, INITIAL_CHAR_BUFFER_SIZE> chars(cx);
     if (!chars.resize(INITIAL_CHAR_BUFFER_SIZE))
         return false;
 
     UBool* isSystemID = nullptr;
     UErrorCode status = U_ZERO_ERROR;
-    int32_t size = ucal_getCanonicalTimeZoneID(Char16ToUChar(tzchars.start().get()),
+    int32_t size = ucal_getCanonicalTimeZoneID(Char16ToUChar(tzchars.begin().get()),
                                                tzchars.length(), Char16ToUChar(chars.begin()),
                                                INITIAL_CHAR_BUFFER_SIZE, isSystemID, &status);
     if (status == U_BUFFER_OVERFLOW_ERROR) {
         MOZ_ASSERT(size >= 0);
         if (!chars.resize(size_t(size)))
             return false;
         status = U_ZERO_ERROR;
-        ucal_getCanonicalTimeZoneID(Char16ToUChar(tzchars.start().get()), tzchars.length(),
+        ucal_getCanonicalTimeZoneID(Char16ToUChar(tzchars.begin().get()), tzchars.length(),
                                     Char16ToUChar(chars.begin()), size, isSystemID, &status);
     }
     if (U_FAILURE(status)) {
         JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INTERNAL_INTL_ERROR);
         return false;
     }
 
     MOZ_ASSERT(size >= 0);
@@ -2170,38 +2170,38 @@ js::intl_patternForSkeleton(JSContext* c
     if (!skeletonFlat)
         return false;
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, skeletonFlat))
         return false;
 
     mozilla::Range<const char16_t> skeletonChars = stableChars.twoByteRange();
-    uint32_t skeletonLen = u_strlen(Char16ToUChar(skeletonChars.start().get()));
+    uint32_t skeletonLen = u_strlen(Char16ToUChar(skeletonChars.begin().get()));
 
     UErrorCode status = U_ZERO_ERROR;
     UDateTimePatternGenerator* gen = udatpg_open(icuLocale(locale.ptr()), &status);
     if (U_FAILURE(status)) {
         JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INTERNAL_INTL_ERROR);
         return false;
     }
     ScopedICUObject<UDateTimePatternGenerator, udatpg_close> toClose(gen);
 
-    int32_t size = udatpg_getBestPattern(gen, Char16ToUChar(skeletonChars.start().get()),
+    int32_t size = udatpg_getBestPattern(gen, Char16ToUChar(skeletonChars.begin().get()),
                                          skeletonLen, nullptr, 0, &status);
     if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
         JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INTERNAL_INTL_ERROR);
         return false;
     }
     ScopedJSFreePtr<UChar> pattern(cx->pod_malloc<UChar>(size + 1));
     if (!pattern)
         return false;
     pattern[size] = '\0';
     status = U_ZERO_ERROR;
-    udatpg_getBestPattern(gen, Char16ToUChar(skeletonChars.start().get()),
+    udatpg_getBestPattern(gen, Char16ToUChar(skeletonChars.begin().get()),
                           skeletonLen, pattern, size, &status);
     if (U_FAILURE(status)) {
         JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INTERNAL_INTL_ERROR);
         return false;
     }
 
     RootedString str(cx, JS_NewUCStringCopyZ(cx, reinterpret_cast<char16_t*>(pattern.get())));
     if (!str)
@@ -2236,28 +2236,28 @@ NewUDateFormat(JSContext* cx, HandleObje
     if (!GetProperty(cx, internals, internals, cx->names().timeZone, &value))
         return nullptr;
 
     AutoStableStringChars timeZoneChars(cx);
     Rooted<JSFlatString*> timeZoneFlat(cx, value.toString()->ensureFlat(cx));
     if (!timeZoneFlat || !timeZoneChars.initTwoByte(cx, timeZoneFlat))
         return nullptr;
 
-    const UChar* uTimeZone = Char16ToUChar(timeZoneChars.twoByteRange().start().get());
+    const UChar* uTimeZone = Char16ToUChar(timeZoneChars.twoByteRange().begin().get());
     uint32_t uTimeZoneLength = u_strlen(uTimeZone);
 
     if (!GetProperty(cx, internals, internals, cx->names().pattern, &value))
         return nullptr;
 
     AutoStableStringChars patternChars(cx);
     Rooted<JSFlatString*> patternFlat(cx, value.toString()->ensureFlat(cx));
     if (!patternFlat || !patternChars.initTwoByte(cx, patternFlat))
         return nullptr;
 
-    const UChar* uPattern = Char16ToUChar(patternChars.twoByteRange().start().get());
+    const UChar* uPattern = Char16ToUChar(patternChars.twoByteRange().begin().get());
     uint32_t uPatternLength = u_strlen(uPattern);
 
     UErrorCode status = U_ZERO_ERROR;
     UDateFormat* df =
         udat_open(UDAT_PATTERN, UDAT_PATTERN, icuLocale(locale.ptr()), uTimeZone, uTimeZoneLength,
                   uPattern, uPatternLength, &status);
     if (U_FAILURE(status)) {
         JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_INTERNAL_INTL_ERROR);
--- a/js/src/builtin/Object.cpp
+++ b/js/src/builtin/Object.cpp
@@ -127,17 +127,17 @@ obj_toSource(JSContext* cx, unsigned arg
 /*
  * Given a function source string, return the offset and length of the part
  * between '(function $name' and ')'.
  */
 template <typename CharT>
 static bool
 ArgsAndBodySubstring(mozilla::Range<const CharT> chars, size_t* outOffset, size_t* outLen)
 {
-    const CharT* const start = chars.start().get();
+    const CharT* const start = chars.begin().get();
     const CharT* const end = chars.end().get();
     const CharT* s = start;
 
     uint8_t parenChomp = 0;
     if (s[0] == '(') {
         s++;
         parenChomp = 1;
     }
--- a/js/src/builtin/ReflectParse.cpp
+++ b/js/src/builtin/ReflectParse.cpp
@@ -3690,17 +3690,17 @@ reflect_parse(JSContext* cx, uint32_t ar
 
     CompileOptions options(cx);
     options.setFileAndLine(filename, lineno);
     options.setCanLazilyParse(false);
     mozilla::Range<const char16_t> chars = linearChars.twoByteRange();
     UsedNameTracker usedNames(cx);
     if (!usedNames.init())
         return false;
-    Parser<FullParseHandler> parser(cx, cx->tempLifoAlloc(), options, chars.start().get(),
+    Parser<FullParseHandler> parser(cx, cx->tempLifoAlloc(), options, chars.begin().get(),
                                     chars.length(), /* foldConstants = */ false, usedNames,
                                     nullptr, nullptr);
     if (!parser.checkOptions())
         return false;
 
     serialize.setParser(&parser);
 
     ParseNode* pn;
--- a/js/src/builtin/TestingFunctions.cpp
+++ b/js/src/builtin/TestingFunctions.cpp
@@ -3098,17 +3098,17 @@ EvalReturningScope(JSContext* cx, unsign
     }
 
     AutoStableStringChars strChars(cx);
     if (!strChars.initTwoByte(cx, str))
         return false;
 
     mozilla::Range<const char16_t> chars = strChars.twoByteRange();
     size_t srclen = chars.length();
-    const char16_t* src = chars.start().get();
+    const char16_t* src = chars.begin().get();
 
     JS::AutoFilename filename;
     unsigned lineno;
 
     JS::DescribeScriptedCaller(cx, &filename, &lineno);
 
     JS::CompileOptions options(cx);
     options.setFileAndLine(filename.get(), lineno);
@@ -3184,17 +3184,17 @@ ShellCloneAndExecuteScript(JSContext* cx
         return false;
 
     AutoStableStringChars strChars(cx);
     if (!strChars.initTwoByte(cx, str))
         return false;
 
     mozilla::Range<const char16_t> chars = strChars.twoByteRange();
     size_t srclen = chars.length();
-    const char16_t* src = chars.start().get();
+    const char16_t* src = chars.begin().get();
 
     JS::AutoFilename filename;
     unsigned lineno;
 
     JS::DescribeScriptedCaller(cx, &filename, &lineno);
 
     JS::CompileOptions options(cx);
     options.setFileAndLine(filename.get(), lineno);
--- a/js/src/jit/Recover.cpp
+++ b/js/src/jit/Recover.cpp
@@ -1065,19 +1065,23 @@ RNaNToZero::RNaNToZero(CompactBufferRead
 { }
 
 
 bool
 RNaNToZero::recover(JSContext* cx, SnapshotIterator& iter) const
 {
     RootedValue v(cx, iter.read());
     RootedValue result(cx);
+    MOZ_ASSERT(v.isDouble() || v.isInt32());
 
-    MOZ_ASSERT(v.isDouble());
-    result.setDouble((mozilla::IsNaN(v.toDouble()) || mozilla::IsNegativeZero(v.toDouble())) ? 0.0 : v.toDouble());
+    // x ? x : 0.0
+    if (ToBoolean(v))
+        result = v;
+    else
+        result.setDouble(0.0);
 
     iter.storeInstructionResult(result);
     return true;
 }
 
 bool
 MRegExpMatcher::writeRecoverData(CompactBufferWriter& writer) const
 {
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -5131,17 +5131,17 @@ JS_CopyStringChars(JSContext* cx, mozill
     CHECK_REQUEST(cx);
     assertSameCompartment(cx, str);
 
     JSLinearString* linear = str->ensureLinear(cx);
     if (!linear)
         return false;
 
     MOZ_ASSERT(linear->length() <= dest.length());
-    CopyChars(dest.start().get(), *linear);
+    CopyChars(dest.begin().get(), *linear);
     return true;
 }
 
 JS_PUBLIC_API(const Latin1Char*)
 JS_GetLatin1InternedStringChars(const JS::AutoCheckCannotGC& nogc, JSString* str)
 {
     MOZ_ASSERT(str->isAtom());
     JSFlatString* flat = str->ensureFlat(nullptr);
@@ -6345,17 +6345,17 @@ JS_PUBLIC_API(bool)
 JS_IndexToId(JSContext* cx, uint32_t index, MutableHandleId id)
 {
     return IndexToId(cx, index, id);
 }
 
 JS_PUBLIC_API(bool)
 JS_CharsToId(JSContext* cx, JS::TwoByteChars chars, MutableHandleId idp)
 {
-    RootedAtom atom(cx, AtomizeChars(cx, chars.start().get(), chars.length()));
+    RootedAtom atom(cx, AtomizeChars(cx, chars.begin().get(), chars.length()));
     if (!atom)
         return false;
 #ifdef DEBUG
     uint32_t dummy;
     MOZ_ASSERT(!atom->isIndex(&dummy), "API misuse: |chars| must not encode an index");
 #endif
     idp.set(AtomToId(atom));
     return true;
--- a/js/src/jscompartment.cpp
+++ b/js/src/jscompartment.cpp
@@ -271,18 +271,18 @@ CopyStringPure(JSContext* cx, JSString* 
         if (copy)
             return copy;
 
         AutoStableStringChars chars(cx);
         if (!chars.init(cx, str))
             return nullptr;
 
         return chars.isLatin1()
-               ? NewStringCopyN<CanGC>(cx, chars.latin1Range().start().get(), len)
-               : NewStringCopyNDontDeflate<CanGC>(cx, chars.twoByteRange().start().get(), len);
+               ? NewStringCopyN<CanGC>(cx, chars.latin1Range().begin().get(), len)
+               : NewStringCopyNDontDeflate<CanGC>(cx, chars.twoByteRange().begin().get(), len);
     }
 
     if (str->hasLatin1Chars()) {
         ScopedJSFreePtr<Latin1Char> copiedChars;
         if (!str->asRope().copyLatin1CharsZ(cx, copiedChars))
             return nullptr;
 
         return NewString<CanGC>(cx, copiedChars.forget(), len);
--- a/js/src/jsfun.cpp
+++ b/js/src/jsfun.cpp
@@ -925,17 +925,17 @@ js::FindBody(JSContext* cx, HandleFuncti
 
     AutoKeepAtoms keepAtoms(cx->perThreadData);
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, src))
         return false;
 
     const mozilla::Range<const char16_t> srcChars = stableChars.twoByteRange();
-    TokenStream ts(cx, options, srcChars.start().get(), srcChars.length(), nullptr);
+    TokenStream ts(cx, options, srcChars.begin().get(), srcChars.length(), nullptr);
     int nest = 0;
     bool onward = true;
     // Skip arguments list.
     do {
         TokenKind tt;
         if (!ts.getToken(&tt))
             return false;
         switch (tt) {
@@ -970,17 +970,17 @@ js::FindBody(JSContext* cx, HandleFuncti
     mozilla::RangedPtr<const char16_t> end = srcChars.end();
     if (end[-1] == '}') {
         end--;
     } else {
         MOZ_ASSERT(!braced);
         for (; unicode::IsSpaceOrBOM2(end[-1]); end--)
             ;
     }
-    *bodyEnd = end - srcChars.start();
+    *bodyEnd = end - srcChars.begin();
     MOZ_ASSERT(*bodyStart <= *bodyEnd);
     return true;
 }
 
 JSString*
 js::FunctionToString(JSContext* cx, HandleFunction fun, bool lambdaParen)
 {
     if (fun->isInterpretedLazy() && !fun->getOrCreateScript(cx))
@@ -1895,17 +1895,17 @@ FunctionConstructor(JSContext* cx, unsig
     if (hasRest)
         fun->setHasRest();
 
     mozilla::Range<const char16_t> chars = stableChars.twoByteRange();
     SourceBufferHolder::Ownership ownership = stableChars.maybeGiveOwnershipToCaller()
                                               ? SourceBufferHolder::GiveOwnership
                                               : SourceBufferHolder::NoOwnership;
     bool ok;
-    SourceBufferHolder srcBuf(chars.start().get(), chars.length(), ownership);
+    SourceBufferHolder srcBuf(chars.begin().get(), chars.length(), ownership);
     if (isAsync)
         ok = frontend::CompileAsyncFunctionBody(cx, &fun, options, formals, srcBuf);
     else if (isStarGenerator)
         ok = frontend::CompileStarGeneratorBody(cx, &fun, options, formals, srcBuf);
     else
         ok = frontend::CompileFunctionBody(cx, &fun, options, formals, srcBuf);
     args.rval().setObject(*fun);
     return ok;
--- a/js/src/jsnum.cpp
+++ b/js/src/jsnum.cpp
@@ -183,17 +183,17 @@ ComputeAccurateBinaryBaseInteger(const C
 }
 
 template <typename CharT>
 double
 js::ParseDecimalNumber(const mozilla::Range<const CharT> chars)
 {
     MOZ_ASSERT(chars.length() > 0);
     uint64_t dec = 0;
-    RangedPtr<const CharT> s = chars.start(), end = chars.end();
+    RangedPtr<const CharT> s = chars.begin(), end = chars.end();
     do {
         CharT c = *s;
         MOZ_ASSERT('0' <= c && c <= '9');
         uint8_t digit = c - '0';
         uint64_t next = dec * 10 + digit;
         MOZ_ASSERT(next < DOUBLE_INTEGRAL_PRECISION_LIMIT,
                    "next value won't be an integrally-precise double");
         dec = next;
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -271,34 +271,34 @@ Unescape(StringBuffer& sb, const mozilla
             goto step_14;
 
 #define ENSURE_BUILDING                                      \
         do {                                                 \
             if (!building) {                                 \
                 building = true;                             \
                 if (!sb.reserve(length))                     \
                     return false;                            \
-                sb.infallibleAppend(chars.start().get(), k); \
+                sb.infallibleAppend(chars.begin().get(), k); \
             }                                                \
         } while(false);
 
         /* Step 10-13. */
-        if (Unhex4(chars.start() + k + 2, &c)) {
+        if (Unhex4(chars.begin() + k + 2, &c)) {
             ENSURE_BUILDING;
             k += 5;
             goto step_18;
         }
 
       step_14:
         /* Step 14. */
         if (k > length - 3)
             goto step_18;
 
         /* Step 15-17. */
-        if (Unhex2(chars.start() + k + 1, &c)) {
+        if (Unhex2(chars.begin() + k + 1, &c)) {
             ENSURE_BUILDING;
             k += 2;
         }
 
       step_18:
         if (building && !sb.append(c))
             return false;
 
@@ -969,17 +969,17 @@ js::str_normalize(JSContext* cx, unsigne
 
     // Step 8.
     AutoStableStringChars stableChars(cx);
     if (!str->ensureFlat(cx) || !stableChars.initTwoByte(cx, str))
         return false;
 
     static const size_t INLINE_CAPACITY = 32;
 
-    const UChar* srcChars = Char16ToUChar(stableChars.twoByteRange().start().get());
+    const UChar* srcChars = Char16ToUChar(stableChars.twoByteRange().begin().get());
     int32_t srcLen = AssertedCast<int32_t>(str->length());
     Vector<char16_t, INLINE_CAPACITY> chars(cx);
     if (!chars.resize(INLINE_CAPACITY))
         return false;
 
     UErrorCode status = U_ZERO_ERROR;
     int32_t size = unorm_normalize(srcChars, srcLen, form, 0,
                                    Char16ToUChar(chars.begin()), INLINE_CAPACITY,
--- a/js/src/shell/js.cpp
+++ b/js/src/shell/js.cpp
@@ -1702,46 +1702,46 @@ Evaluate(JSContext* cx, unsigned argc, V
             }
 
             if (loadBytecode) {
                 JS::TranscodeResult rv = JS::DecodeScript(cx, loadBuffer, &script);
                 if (!ConvertTranscodeResultToJSException(cx, rv))
                     return false;
             } else {
                 mozilla::Range<const char16_t> chars = codeChars.twoByteRange();
-                (void) JS::Compile(cx, options, chars.start().get(), chars.length(), &script);
+                (void) JS::Compile(cx, options, chars.begin().get(), chars.length(), &script);
             }
 
             if (!script)
                 return false;
         }
 
         if (displayURL && !script->scriptSource()->hasDisplayURL()) {
             JSFlatString* flat = displayURL->ensureFlat(cx);
             if (!flat)
                 return false;
 
             AutoStableStringChars chars(cx);
             if (!chars.initTwoByte(cx, flat))
                 return false;
 
-            const char16_t* durl = chars.twoByteRange().start().get();
+            const char16_t* durl = chars.twoByteRange().begin().get();
             if (!script->scriptSource()->setDisplayURL(cx, durl))
                 return false;
         }
         if (sourceMapURL && !script->scriptSource()->hasSourceMapURL()) {
             JSFlatString* flat = sourceMapURL->ensureFlat(cx);
             if (!flat)
                 return false;
 
             AutoStableStringChars chars(cx);
             if (!chars.initTwoByte(cx, flat))
                 return false;
 
-            const char16_t* smurl = chars.twoByteRange().start().get();
+            const char16_t* smurl = chars.twoByteRange().begin().get();
             if (!script->scriptSource()->setSourceMapURL(cx, smurl))
                 return false;
         }
         if (!JS_ExecuteScript(cx, script, args.rval())) {
             if (catchTermination && !JS_IsExceptionPending(cx)) {
                 JSAutoCompartment ac1(cx, callerGlobal);
                 JSString* str = JS_NewStringCopyZ(cx, "terminated");
                 if (!str)
@@ -1883,17 +1883,17 @@ Run(JSContext* cx, unsigned argc, Value*
     str = FileAsString(cx, str);
     if (!str)
         return false;
 
     AutoStableStringChars chars(cx);
     if (!chars.initTwoByte(cx, str))
         return false;
 
-    const char16_t* ucbuf = chars.twoByteRange().start().get();
+    const char16_t* ucbuf = chars.twoByteRange().begin().get();
     size_t buflen = str->length();
 
     RootedScript script(cx);
     int64_t startClock = PRMJ_Now();
     {
         /* FIXME: This should use UTF-8 (bug 987069). */
         JSAutoByteString filename(cx, str);
         if (!filename)
@@ -2271,17 +2271,17 @@ ValueToScript(JSContext* cx, HandleValue
         // To convert a string to a script, compile it. Parse it as an ES6 Program.
         RootedLinearString linearStr(cx, StringToLinearString(cx, v.toString()));
         if (!linearStr)
             return nullptr;
         size_t len = GetLinearStringLength(linearStr);
         AutoStableStringChars linearChars(cx);
         if (!linearChars.initTwoByte(cx, linearStr))
             return nullptr;
-        const char16_t* chars = linearChars.twoByteRange().start().get();
+        const char16_t* chars = linearChars.twoByteRange().begin().get();
 
         RootedScript script(cx);
         CompileOptions options(cx);
         if (!JS::Compile(cx, options, chars, len, &script))
             return nullptr;
         return script;
     }
 
@@ -3005,17 +3005,17 @@ Intern(JSContext* cx, unsigned argc, Val
         return false;
 
     AutoStableStringChars strChars(cx);
     if (!strChars.initTwoByte(cx, str))
         return false;
 
     mozilla::Range<const char16_t> chars = strChars.twoByteRange();
 
-    if (!JS_AtomizeAndPinUCStringN(cx, chars.start().get(), chars.length()))
+    if (!JS_AtomizeAndPinUCStringN(cx, chars.begin().get(), chars.length()))
         return false;
 
     args.rval().setUndefined();
     return true;
 }
 
 static bool
 Clone(JSContext* cx, unsigned argc, Value* vp)
@@ -3207,17 +3207,17 @@ EvalInContext(JSContext* cx, unsigned ar
     }
 
     AutoStableStringChars strChars(cx);
     if (!strChars.initTwoByte(cx, str))
         return false;
 
     mozilla::Range<const char16_t> chars = strChars.twoByteRange();
     size_t srclen = chars.length();
-    const char16_t* src = chars.start().get();
+    const char16_t* src = chars.begin().get();
 
     bool lazy = false;
     if (srclen == 4) {
         if (src[0] == 'l' && src[1] == 'a' && src[2] == 'z' && src[3] == 'y') {
             lazy = true;
             srclen = 0;
         }
     }
@@ -3927,17 +3927,17 @@ Compile(JSContext* cx, unsigned argc, Va
         return false;
 
     JS::CompileOptions options(cx);
     options.setIntroductionType("js shell compile")
            .setFileAndLine("<string>", 1)
            .setIsRunOnce(true)
            .setNoScriptRval(true);
     RootedScript script(cx);
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
     bool ok = JS_CompileUCScript(cx, chars, scriptContents->length(), options, &script);
     args.rval().setUndefined();
     return ok;
 }
 
 static bool
 ParseModule(JSContext* cx, unsigned argc, Value* vp)
 {
@@ -3976,17 +3976,17 @@ ParseModule(JSContext* cx, unsigned argc
     } else {
         options.setFileAndLine("<string>", 1);
     }
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, scriptContents))
         return false;
 
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
     SourceBufferHolder srcBuf(chars, scriptContents->length(),
                               SourceBufferHolder::NoOwnership);
 
     RootedObject module(cx, frontend::CompileModule(cx, options, srcBuf));
     if (!module)
         return false;
 
     args.rval().setObject(*module);
@@ -4046,17 +4046,17 @@ Parse(JSContext* cx, unsigned argc, Valu
     if (!scriptContents)
         return false;
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, scriptContents))
         return false;
 
     size_t length = scriptContents->length();
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
 
     CompileOptions options(cx);
     options.setIntroductionType("js shell parse")
            .setFileAndLine("<string>", 1);
     UsedNameTracker usedNames(cx);
     if (!usedNames.init())
         return false;
     Parser<FullParseHandler> parser(cx, cx->tempLifoAlloc(), options, chars, length,
@@ -4099,17 +4099,17 @@ SyntaxParse(JSContext* cx, unsigned argc
     CompileOptions options(cx);
     options.setIntroductionType("js shell syntaxParse")
            .setFileAndLine("<string>", 1);
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, scriptContents))
         return false;
 
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
     size_t length = scriptContents->length();
     UsedNameTracker usedNames(cx);
     if (!usedNames.init())
         return false;
     Parser<frontend::SyntaxParseHandler> parser(cx, cx->tempLifoAlloc(),
                                                 options, chars, length, false,
                                                 usedNames, nullptr, nullptr);
     if (!parser.checkOptions())
@@ -4184,17 +4184,17 @@ OffThreadCompileScript(JSContext* cx, un
     options.forceAsync = true;
 
     JSString* scriptContents = args[0].toString();
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, scriptContents))
         return false;
 
     size_t length = scriptContents->length();
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
 
     // Make sure we own the string's chars, so that they are not freed before
     // the compilation is finished.
     ScopedJSFreePtr<char16_t> ownedChars;
     if (stableChars.maybeGiveOwnershipToCaller()) {
         ownedChars = const_cast<char16_t*>(chars);
     } else {
         char16_t* copy = cx->pod_malloc<char16_t>(length);
@@ -4271,17 +4271,17 @@ OffThreadCompileModule(JSContext* cx, un
     options.forceAsync = true;
 
     JSString* scriptContents = args[0].toString();
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, scriptContents))
         return false;
 
     size_t length = scriptContents->length();
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
 
     // Make sure we own the string's chars, so that they are not freed before
     // the compilation is finished.
     ScopedJSFreePtr<char16_t> ownedChars;
     if (stableChars.maybeGiveOwnershipToCaller()) {
         ownedChars = const_cast<char16_t*>(chars);
     } else {
         char16_t* copy = cx->pod_malloc<char16_t>(length);
@@ -5554,17 +5554,17 @@ EntryPoints(JSContext* cx, unsigned argc
         if (!code.isUndefined()) {
             RootedString codeString(cx, ToString(cx, code));
             if (!codeString || !codeString->ensureFlat(cx))
                 return false;
 
             AutoStableStringChars stableChars(cx);
             if (!stableChars.initTwoByte(cx, codeString))
                 return false;
-            const char16_t* chars = stableChars.twoByteRange().start().get();
+            const char16_t* chars = stableChars.twoByteRange().begin().get();
             size_t length = codeString->length();
 
             CompileOptions options(cx);
             options.setIntroductionType("entryPoint eval")
                    .setFileAndLine("entryPoint eval", 1);
 
             js::shell::ShellAutoEntryMonitor sarep(cx);
             if (!JS::Evaluate(cx, options, chars, length, &dummy))
--- a/js/src/vm/CharacterEncoding.cpp
+++ b/js/src/vm/CharacterEncoding.cpp
@@ -151,17 +151,17 @@ JS::DeflateStringToUTF8Buffer(JSFlatStri
                                          dstlenp, numcharsp);
 }
 
 template <typename CharT>
 UTF8CharsZ
 JS::CharsToNewUTF8CharsZ(js::ExclusiveContext* maybeCx, const mozilla::Range<CharT> chars)
 {
     /* Get required buffer size. */
-    const CharT* str = chars.start().get();
+    const CharT* str = chars.begin().get();
     size_t len = ::GetDeflatedUTF8StringLength(str, chars.length());
 
     /* Allocate buffer. */
     char* utf8;
     if (maybeCx)
         utf8 = maybeCx->pod_malloc<char>(len + 1);
     else
         utf8 = js_pod_malloc<char>(len + 1);
--- a/js/src/vm/Debugger.cpp
+++ b/js/src/vm/Debugger.cpp
@@ -7450,17 +7450,17 @@ EvaluateInEnv(JSContext* cx, Handle<Env*
     CompileOptions options(cx);
     options.setIsRunOnce(true)
            .setNoScriptRval(false)
            .setFileAndLine(filename, lineno)
            .setCanLazilyParse(false)
            .setIntroductionType("debugger eval")
            .maybeMakeStrictMode(frame ? frame.script()->strict() : false);
     RootedScript callerScript(cx, frame ? frame.script() : nullptr);
-    SourceBufferHolder srcBuf(chars.start().get(), chars.length(), SourceBufferHolder::NoOwnership);
+    SourceBufferHolder srcBuf(chars.begin().get(), chars.length(), SourceBufferHolder::NoOwnership);
     RootedScript script(cx);
 
     ScopeKind scopeKind;
     if (IsGlobalLexicalEnvironment(env))
         scopeKind = ScopeKind::Global;
     else
         scopeKind = ScopeKind::NonSyntactic;
 
--- a/js/src/vm/JSONParser.h
+++ b/js/src/vm/JSONParser.h
@@ -200,17 +200,17 @@ class MOZ_STACK_CLASS JSONParser : publi
 
   public:
     /* Public API */
 
     /* Create a parser for the provided JSON data. */
     JSONParser(JSContext* cx, mozilla::Range<const CharT> data,
                ErrorHandling errorHandling = RaiseError)
       : JSONParserBase(cx, errorHandling),
-        current(data.start()),
+        current(data.begin()),
         begin(current),
         end(data.end())
     {
         MOZ_ASSERT(current <= end);
     }
 
     /* Allow move construction for use with Rooted. */
     JSONParser(JSONParser&& other)
--- a/js/src/vm/RegExpObject.cpp
+++ b/js/src/vm/RegExpObject.cpp
@@ -1131,20 +1131,20 @@ RegExpShared::execute(JSContext* cx, Han
     AutoTraceLog logInterpreter(logger, TraceLogger_IrregexpExecute);
 
     AutoStableStringChars inputChars(cx);
     if (!inputChars.init(cx, input))
         return RegExpRunStatus_Error;
 
     RegExpRunStatus result;
     if (inputChars.isLatin1()) {
-        const Latin1Char* chars = inputChars.latin1Range().start().get();
+        const Latin1Char* chars = inputChars.latin1Range().begin().get();
         result = irregexp::InterpretCode(cx, byteCode, chars, start, length, matches, endIndex);
     } else {
-        const char16_t* chars = inputChars.twoByteRange().start().get();
+        const char16_t* chars = inputChars.twoByteRange().begin().get();
         result = irregexp::InterpretCode(cx, byteCode, chars, start, length, matches, endIndex);
     }
 
     if (result == RegExpRunStatus_Success && matches)
         matches->checkAgainst(length);
     return result;
 }
 
--- a/js/src/vm/Runtime.cpp
+++ b/js/src/vm/Runtime.cpp
@@ -576,17 +576,17 @@ InvokeInterruptCallback(JSContext* cx)
     // No need to set aside any pending exception here: ComputeStackString
     // already does that.
     JSString* stack = ComputeStackString(cx);
     JSFlatString* flat = stack ? stack->ensureFlat(cx) : nullptr;
 
     const char16_t* chars;
     AutoStableStringChars stableChars(cx);
     if (flat && stableChars.initTwoByte(cx, flat))
-        chars = stableChars.twoByteRange().start().get();
+        chars = stableChars.twoByteRange().begin().get();
     else
         chars = u"(stack not available)";
     JS_ReportErrorFlagsAndNumberUC(cx, JSREPORT_WARNING, GetErrorMessage, nullptr,
                                    JSMSG_TERMINATED, chars);
 
     return false;
 }
 
--- a/js/src/vm/SelfHosting.cpp
+++ b/js/src/vm/SelfHosting.cpp
@@ -2849,18 +2849,18 @@ CloneString(JSContext* cx, JSFlatString*
             return clone;
     }
 
     AutoStableStringChars chars(cx);
     if (!chars.init(cx, selfHostedString))
         return nullptr;
 
     return chars.isLatin1()
-           ? NewStringCopyN<CanGC>(cx, chars.latin1Range().start().get(), len)
-           : NewStringCopyNDontDeflate<CanGC>(cx, chars.twoByteRange().start().get(), len);
+           ? NewStringCopyN<CanGC>(cx, chars.latin1Range().begin().get(), len)
+           : NewStringCopyNDontDeflate<CanGC>(cx, chars.twoByteRange().begin().get(), len);
 }
 
 static JSObject*
 CloneObject(JSContext* cx, HandleNativeObject selfHostedObject)
 {
 #ifdef DEBUG
     // Object hash identities are owned by the hashed object, which may be on a
     // different thread than the clone target. In theory, these objects are all
--- a/js/src/vm/String-inl.h
+++ b/js/src/vm/String-inl.h
@@ -52,17 +52,17 @@ NewInlineString(ExclusiveContext* cx, mo
      */
 
     size_t len = chars.length();
     CharT* storage;
     JSInlineString* str = AllocateInlineString<allowGC>(cx, len, &storage);
     if (!str)
         return nullptr;
 
-    mozilla::PodCopy(storage, chars.start().get(), len);
+    mozilla::PodCopy(storage, chars.begin().get(), len);
     storage[len] = 0;
     return str;
 }
 
 // Create a thin inline string if possible, and a fat inline string if not.
 template <typename CharT>
 static MOZ_ALWAYS_INLINE JSInlineString*
 NewInlineString(ExclusiveContext* cx, HandleLinearString base, size_t start, size_t length)
--- a/js/src/vm/String.cpp
+++ b/js/src/vm/String.cpp
@@ -1321,17 +1321,17 @@ NewStringCopyN<NoGC>(ExclusiveContext* c
 
 
 template <js::AllowGC allowGC>
 JSFlatString*
 NewStringCopyUTF8N(JSContext* cx, const JS::UTF8Chars utf8)
 {
     JS::SmallestEncoding encoding = JS::FindSmallestEncoding(utf8);
     if (encoding == JS::SmallestEncoding::ASCII)
-        return NewStringCopyN<allowGC>(cx, utf8.start().get(), utf8.length());
+        return NewStringCopyN<allowGC>(cx, utf8.begin().get(), utf8.length());
 
     size_t length;
     if (encoding == JS::SmallestEncoding::Latin1) {
         Latin1Char* latin1 = UTF8CharsToNewLatin1CharsZ(cx, utf8, &length).get();
         if (!latin1)
             return nullptr;
 
         JSFlatString* result = NewString<allowGC>(cx, latin1, length);
--- a/js/src/wasm/AsmJS.cpp
+++ b/js/src/wasm/AsmJS.cpp
@@ -8097,17 +8097,17 @@ HandleInstantiationFailure(JSContext* cx
     // also inherited it somehow.
     if (metadata.strict)
         options.strictOption = true;
 
     AutoStableStringChars stableChars(cx);
     if (!stableChars.initTwoByte(cx, src))
         return false;
 
-    const char16_t* chars = stableChars.twoByteRange().start().get();
+    const char16_t* chars = stableChars.twoByteRange().begin().get();
     SourceBufferHolder::Ownership ownership = stableChars.maybeGiveOwnershipToCaller()
                                               ? SourceBufferHolder::GiveOwnership
                                               : SourceBufferHolder::NoOwnership;
     SourceBufferHolder srcBuf(chars, end - begin, ownership);
     if (!frontend::CompileFunctionBody(cx, &fun, options, formals, srcBuf))
         return false;
 
     // Call the function we just recompiled.
--- a/media/libcubeb/README.md
+++ b/media/libcubeb/README.md
@@ -1,5 +1,6 @@
 [![Build Status](https://travis-ci.org/kinetiknz/cubeb.svg?branch=master)](https://travis-ci.org/kinetiknz/cubeb)
+[![Build status](https://ci.appveyor.com/api/projects/status/osv2r0m1j1nt9csr/branch/master?svg=true)](https://ci.appveyor.com/project/kinetiknz/cubeb/branch/master)
 
 See INSTALL.md for build instructions.
 
 Licensed under an ISC-style license.  See LICENSE for details.
--- a/media/libcubeb/README_MOZILLA
+++ b/media/libcubeb/README_MOZILLA
@@ -1,8 +1,8 @@
 The source from this directory was copied from the cubeb 
 git repository using the update.sh script.  The only changes
 made were those applied by update.sh and the addition of
 Makefile.in build files for the Mozilla build system.
 
 The cubeb git repository is: git://github.com/kinetiknz/cubeb.git
 
-The git commit ID used was 352c0bed012a770ef65aee1e507704922ea80b0e.
+The git commit ID used was 98b189d2aad06bef758a5ae76fb758fa4dfa9bba.
--- a/media/libcubeb/src/cubeb.c
+++ b/media/libcubeb/src/cubeb.c
@@ -379,28 +379,124 @@ int cubeb_stream_register_device_changed
 
   if (!stream->context->ops->stream_register_device_changed_callback) {
     return CUBEB_ERROR_NOT_SUPPORTED;
   }
 
   return stream->context->ops->stream_register_device_changed_callback(stream, device_changed_callback);
 }
 
+static
+void log_device(cubeb_device_info * device_info)
+{
+  char devfmts[128] = "";
+  const char * devtype, * devstate, * devdeffmt;
+
+  switch (device_info->type) {
+    case CUBEB_DEVICE_TYPE_INPUT:
+      devtype = "input";
+      break;
+    case CUBEB_DEVICE_TYPE_OUTPUT:
+      devtype = "output";
+      break;
+    case CUBEB_DEVICE_TYPE_UNKNOWN:
+    default:
+      devtype = "unknown?";
+      break;
+  };
+
+  switch (device_info->state) {
+    case CUBEB_DEVICE_STATE_DISABLED:
+      devstate = "disabled";
+      break;
+    case CUBEB_DEVICE_STATE_UNPLUGGED:
+      devstate = "unplugged";
+      break;
+    case CUBEB_DEVICE_STATE_ENABLED:
+      devstate = "enabled";
+      break;
+    default:
+      devstate = "unknown?";
+      break;
+  };
+
+  switch (device_info->default_format) {
+    case CUBEB_DEVICE_FMT_S16LE:
+      devdeffmt = "S16LE";
+      break;
+    case CUBEB_DEVICE_FMT_S16BE:
+      devdeffmt = "S16BE";
+      break;
+    case CUBEB_DEVICE_FMT_F32LE:
+      devdeffmt = "F32LE";
+      break;
+    case CUBEB_DEVICE_FMT_F32BE:
+      devdeffmt = "F32BE";
+      break;
+    default:
+      devdeffmt = "unknown?";
+      break;
+  };
+
+  if (device_info->format & CUBEB_DEVICE_FMT_S16LE) {
+    strcat(devfmts, " S16LE");
+  }
+  if (device_info->format & CUBEB_DEVICE_FMT_S16BE) {
+    strcat(devfmts, " S16BE");
+  }
+  if (device_info->format & CUBEB_DEVICE_FMT_F32LE) {
+    strcat(devfmts, " F32LE");
+  }
+  if (device_info->format & CUBEB_DEVICE_FMT_F32BE) {
+    strcat(devfmts, " F32BE");
+  }
+
+  LOG("DeviceID: \"%s\"%s\n"
+      "\tName:\t\"%s\"\n"
+      "\tGroup:\t\"%s\"\n"
+      "\tVendor:\t\"%s\"\n"
+      "\tType:\t%s\n"
+      "\tState:\t%s\n"
+      "\tMaximum channels:\t%u\n"
+      "\tFormat:\t%s (0x%x) (default: %s)\n"
+      "\tRate:\t[%u, %u] (default: %u)\n"
+      "\tLatency: lo %u frames, hi %u frames",
+      device_info->device_id, device_info->preferred ? " (PREFERRED)" : "",
+      device_info->friendly_name,
+      device_info->group_id,
+      device_info->vendor_name,
+      devtype,
+      devstate,
+      device_info->max_channels,
+      (devfmts[0] == '\0') ? devfmts : devfmts + 1, (unsigned int)device_info->format, devdeffmt,
+      device_info->min_rate, device_info->max_rate, device_info->default_rate,
+      device_info->latency_lo, device_info->latency_hi);
+}
+
 int cubeb_enumerate_devices(cubeb * context,
                             cubeb_device_type devtype,
                             cubeb_device_collection ** collection)
 {
+  int rv;
   if ((devtype & (CUBEB_DEVICE_TYPE_INPUT | CUBEB_DEVICE_TYPE_OUTPUT)) == 0)
     return CUBEB_ERROR_INVALID_PARAMETER;
   if (collection == NULL)
     return CUBEB_ERROR_INVALID_PARAMETER;
   if (!context->ops->enumerate_devices)
     return CUBEB_ERROR_NOT_SUPPORTED;
 
-  return context->ops->enumerate_devices(context, devtype, collection);
+  rv = context->ops->enumerate_devices(context, devtype, collection);
+
+  if (g_log_callback) {
+    for (uint32_t i = 0; i < (*collection)->count; i++) {
+      log_device((*collection)->device[i]);
+    }
+  }
+
+  return rv;
 }
 
 int cubeb_device_collection_destroy(cubeb_device_collection * collection)
 {
   uint32_t i;
 
   if (collection == NULL)
     return CUBEB_ERROR_INVALID_PARAMETER;
--- a/media/libcubeb/src/cubeb_audiounit.cpp
+++ b/media/libcubeb/src/cubeb_audiounit.cpp
@@ -289,18 +289,18 @@ audiounit_render_input(cubeb_stream * st
     audiounit_make_silent(&input_buffer_list.mBuffers[0]);
     return r;
   }
 
   /* Copy input data in linear buffer. */
   stm->input_linear_buffer->push(input_buffer_list.mBuffers[0].mData,
                                  input_frames * stm->input_desc.mChannelsPerFrame);
 
-  LOGV("input:  buffers %d, size %d, channels %d, frames %d.",
-       input_buffer_list.mNumberBuffers,
+  LOGV("(%p) input:  buffers %d, size %d, channels %d, frames %d.",
+       stm, input_buffer_list.mNumberBuffers,
        input_buffer_list.mBuffers[0].mDataByteSize,
        input_buffer_list.mBuffers[0].mNumberChannels,
        input_frames);
 
   /* Advance input frame counter. */
   assert(input_frames > 0);
   stm->frames_read += input_frames;
 
@@ -308,26 +308,26 @@ audiounit_render_input(cubeb_stream * st
 }
 
 static OSStatus
 audiounit_input_callback(void * user_ptr,
                          AudioUnitRenderActionFlags * flags,
                          AudioTimeStamp const * tstamp,
                          UInt32 bus,
                          UInt32 input_frames,
-                         AudioBufferList * bufs)
+                         AudioBufferList * /* bufs */)
 {
   cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr);
-  long outframes, frames;
+  long outframes;
 
   assert(stm->input_unit != NULL);
   assert(AU_IN_BUS == bus);
 
   if (stm->shutdown) {
-    LOG("input shutdown");
+    LOG("(%p) input shutdown", stm);
     return noErr;
   }
 
   OSStatus r = audiounit_render_input(stm, flags, tstamp, bus, input_frames);
   if (r != noErr) {
     return r;
   }
 
@@ -365,38 +365,39 @@ audiounit_input_callback(void * user_ptr
     return noErr;
   }
 
   return noErr;
 }
 
 static OSStatus
 audiounit_output_callback(void * user_ptr,
-                          AudioUnitRenderActionFlags * flags,
+                          AudioUnitRenderActionFlags * /* flags */,
                           AudioTimeStamp const * tstamp,
                           UInt32 bus,
                           UInt32 output_frames,
                           AudioBufferList * outBufferList)
 {
   assert(AU_OUT_BUS == bus);
   assert(outBufferList->mNumberBuffers == 1);
 
   cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr);
 
   stm->output_callback_in_a_row++;
 
-  LOGV("output(%p): buffers %d, size %d, channels %d, frames %d.", stm,
-       outBufferList->mNumberBuffers, outBufferList->mBuffers[0].mDataByteSize,
+  LOGV("(%p) output: buffers %d, size %d, channels %d, frames %d.",
+       stm, outBufferList->mNumberBuffers,
+       outBufferList->mBuffers[0].mDataByteSize,
        outBufferList->mBuffers[0].mNumberChannels, output_frames);
 
   long outframes = 0, input_frames = 0;
   void * output_buffer = NULL, * input_buffer = NULL;
 
   if (stm->shutdown) {
-    LOG("output shutdown.");
+    LOG("(%p) output shutdown.", stm);
     audiounit_make_silent(&outBufferList->mBuffers[0]);
     return noErr;
   }
 
   stm->current_latency_frames = audiotimestamp_to_latency(tstamp, stm);
   if (stm->draining) {
     OSStatus r = AudioOutputUnitStop(stm->output_unit);
     assert(r == 0);
@@ -415,17 +416,17 @@ audiounit_output_callback(void * user_pt
     /* If the output callback came first and this is a duplex stream, we need to
      * fill in some additional silence in the resampler.
      * Otherwise, if we had more than two callback in a row, or we're currently
      * switching, we add some silence as well to compensate for the fact that
      * we're lacking some input data. */
     if (stm->frames_read == 0 ||
         (stm->input_linear_buffer->length() == 0 &&
         (stm->output_callback_in_a_row > 2 || stm->switching_device))) {
-      LOG("Output callback came first send silent.");
+      LOG("(%p) Output callback came first send silent.", stm);
       stm->input_linear_buffer->push_silence(stm->input_buffer_frames *
                                              stm->input_desc.mChannelsPerFrame);
     }
     // The input buffer
     input_buffer = stm->input_linear_buffer->data();
     // Number of input frames in the buffer
     input_frames = stm->input_linear_buffer->length() / stm->input_desc.mChannelsPerFrame;
   }
@@ -468,17 +469,17 @@ audiounit_output_callback(void * user_pt
       cubeb_pan_stereo_buffer_int((short*)output_buffer, outframes, panning);
     }
   }
   return noErr;
 }
 
 extern "C" {
 int
-audiounit_init(cubeb ** context, char const * context_name)
+audiounit_init(cubeb ** context, char const * /* context_name */)
 {
   cubeb * ctx;
 
   *context = NULL;
 
   ctx = (cubeb *)calloc(1, sizeof(cubeb));
   assert(ctx);
   // Placement new to call the ctors of cubeb members.
@@ -495,17 +496,17 @@ audiounit_init(cubeb ** context, char co
 
   *context = ctx;
 
   return CUBEB_OK;
 }
 }
 
 static char const *
-audiounit_get_backend_id(cubeb * ctx)
+audiounit_get_backend_id(cubeb * /* ctx */)
 {
   return "audiounit";
 }
 
 #if !TARGET_OS_IPHONE
 static int
 audiounit_get_output_device_id(AudioDeviceID * device_id)
 {
@@ -555,41 +556,41 @@ audiounit_get_input_device_id(AudioDevic
   if (r != noErr) {
     return CUBEB_ERROR;
   }
 
   return CUBEB_OK;
 }
 
 static OSStatus
-audiounit_property_listener_callback(AudioObjectID id, UInt32 address_count,
+audiounit_property_listener_callback(AudioObjectID /* id */, UInt32 address_count,
                                      const AudioObjectPropertyAddress * addresses,
                                      void * user)
 {
   cubeb_stream * stm = (cubeb_stream*) user;
   int rv;
   bool was_running = false;
 
   stm->switching_device = true;
 
   // Note if the stream was running or not
   was_running = !stm->shutdown;
 
-  LOG("Audio device changed, %d events.", address_count);
+  LOG("(%p) Audio device changed, %d events.", stm, address_count);
   if (g_log_level) {
     for (UInt32 i = 0; i < address_count; i++) {
       switch(addresses[i].mSelector) {
         case kAudioHardwarePropertyDefaultOutputDevice:
-          LOG("%d mSelector == kAudioHardwarePropertyDefaultOutputDevice", i);
+          LOG("(%p) %d mSelector == kAudioHardwarePropertyDefaultOutputDevice", stm, i);
           break;
         case kAudioHardwarePropertyDefaultInputDevice:
-          LOG("%d mSelector == kAudioHardwarePropertyDefaultInputDevice", i);
+          LOG("(%p) %d mSelector == kAudioHardwarePropertyDefaultInputDevice", stm, i);
           break;
         case kAudioDevicePropertyDataSource:
-          LOG("%d mSelector == kAudioHardwarePropertyDataSource", i);
+          LOG("(%p) %d mSelector == kAudioHardwarePropertyDataSource", stm, i);
           break;
       }
     }
   }
 
   for (UInt32 i = 0; i < address_count; i++) {
     switch(addresses[i].mSelector) {
     case kAudioHardwarePropertyDefaultOutputDevice:
@@ -608,17 +609,17 @@ audiounit_property_listener_callback(Aud
   // This means the callback won't be called again.
   audiounit_stream_stop_internal(stm);
 
   {
     auto_lock lock(stm->mutex);
     close_audiounit_stream(stm);
     rv = setup_audiounit_stream(stm);
     if (rv != CUBEB_OK) {
-      LOG("Could not reopen a stream after switching.");
+      LOG("(%p) Could not reopen a stream after switching.", stm);
       stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_STOPPED);
       return noErr;
     }
 
     stm->frames_read = 0;
 
     // If the stream was running, start it again.
     if (was_running) {
@@ -859,17 +860,19 @@ audiounit_get_max_channel_count(cubeb * 
   }
 
   *max_channels = stream_format.mChannelsPerFrame;
 #endif
   return CUBEB_OK;
 }
 
 static int
-audiounit_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_frames)
+audiounit_get_min_latency(cubeb * /* ctx */,
+                          cubeb_stream_params /* params */,
+                          uint32_t * latency_frames)
 {
 #if TARGET_OS_IPHONE
   //TODO: [[AVAudioSession sharedInstance] inputLatency]
   return CUBEB_ERROR_NOT_SUPPORTED;
 #else
   AudioValueRange latency_range;
   if (audiounit_get_acceptable_latency_range(&latency_range) != CUBEB_OK) {
     LOG("Could not get acceptable latency range.");
@@ -879,17 +882,17 @@ audiounit_get_min_latency(cubeb * ctx, c
   *latency_frames = std::max<uint32_t>(latency_range.mMinimum,
                                        SAFE_MIN_LATENCY_FRAMES);
 #endif
 
   return CUBEB_OK;
 }
 
 static int
-audiounit_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate)
+audiounit_get_preferred_sample_rate(cubeb * /* ctx */, uint32_t * rate)
 {
 #if TARGET_OS_IPHONE
   //TODO
   return CUBEB_ERROR_NOT_SUPPORTED;
 #else
   UInt32 size;
   OSStatus r;
   Float64 fsamplerate;
@@ -980,17 +983,17 @@ audio_stream_desc_init(AudioStreamBasicD
   ss->mReserved = 0;
 
   return CUBEB_OK;
 }
 
 static int
 audiounit_create_unit(AudioUnit * unit,
                       bool is_input,
-                      const cubeb_stream_params * stream_params,
+                      const cubeb_stream_params * /* stream_params */,
                       cubeb_devid device)
 {
   AudioComponentDescription desc;
   AudioComponent comp;
   UInt32 enable;
   AudioDeviceID devid;
   OSStatus rv;
 
@@ -1023,55 +1026,55 @@ audiounit_create_unit(AudioUnit * unit,
   if (rv != noErr) {
     PRINT_ERROR_CODE("AudioComponentInstanceNew", rv);
     return CUBEB_ERROR;
   }
 
   if (!use_default_output) {
     enable = 1;
     rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
-			      is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output,
-			      is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32));
+                              is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output,
+                              is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32));
     if (rv != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
       return CUBEB_ERROR;
     }
 
     enable = 0;
     rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO,
-			      is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input,
-			      is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32));
+                              is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input,
+                              is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32));
     if (rv != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv);
       return CUBEB_ERROR;
     }
 
     if (device == NULL) {
       assert(is_input);
       devid = audiounit_get_default_device_id(CUBEB_DEVICE_TYPE_INPUT);
     } else {
       devid = reinterpret_cast<intptr_t>(device);
     }
     int err = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_CurrentDevice,
-				   kAudioUnitScope_Global,
-				   is_input ? AU_IN_BUS : AU_OUT_BUS,
-				   &devid, sizeof(AudioDeviceID));
+                                   kAudioUnitScope_Global,
+                                   is_input ? AU_IN_BUS : AU_OUT_BUS,
+                                   &devid, sizeof(AudioDeviceID));
     if (err != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_CurrentDevice", rv);
       return CUBEB_ERROR;
     }
   }
 
   return CUBEB_OK;
 }
 
 static int
 audiounit_init_input_linear_buffer(cubeb_stream * stream, uint32_t capacity)
 {
-  if (stream->input_desc.mFormatFlags == kAudioFormatFlagIsSignedInteger) {
+  if (stream->input_desc.mFormatFlags & kAudioFormatFlagIsSignedInteger) {
     stream->input_linear_buffer = new auto_array_wrapper(
         new auto_array<short>(capacity *
                               stream->input_buffer_frames *
                               stream->input_desc.mChannelsPerFrame) );
   } else {
     stream->input_linear_buffer = new auto_array_wrapper(
         new auto_array<float>(capacity *
                               stream->input_buffer_frames *
@@ -1167,39 +1170,39 @@ audiounit_clamp_latency(cubeb_stream * s
                   SAFE_MIN_LATENCY_FRAMES);
 }
 
 static int
 setup_audiounit_stream(cubeb_stream * stm)
 {
   stm->mutex.assert_current_thread_owns();
 
-  AudioUnit input_unit;
-  AudioUnit output_unit;
   int r;
   AURenderCallbackStruct aurcbs_in;
   AURenderCallbackStruct aurcbs_out;
   UInt32 size;
 
   if (has_input(stm)) {
+    LOG("(%p) Opening input side, rate: %u", stm, stm->input_stream_params.rate);
     r = audiounit_create_unit(&stm->input_unit, true,
                               &stm->input_stream_params,
                               stm->input_device);
     if (r != CUBEB_OK) {
-      LOG("AudioUnit creation for input failed.");
+      LOG("(%p) AudioUnit creation for input failed.", stm);
       return r;
     }
   }
 
   if (has_output(stm)) {
+    LOG("(%p) Opening output side, rate: %u", stm, stm->input_stream_params.rate);
     r = audiounit_create_unit(&stm->output_unit, false,
                               &stm->output_stream_params,
                               stm->output_device);
     if (r != CUBEB_OK) {
-      LOG("AudioUnit creation for output failed.");
+      LOG("(%p) AudioUnit creation for output failed.", stm);
       return r;
     }
   }
 
   /* Setup Input Stream! */
   if (has_input(stm)) {
     /* Get input device sample rate. */
     AudioStreamBasicDescription input_hw_desc;
@@ -1214,23 +1217,23 @@ setup_audiounit_stream(cubeb_stream * st
       PRINT_ERROR_CODE("AudioUnitGetProperty/input/kAudioUnitProperty_StreamFormat", r);
       return CUBEB_ERROR;
     }
     stm->input_hw_rate = input_hw_desc.mSampleRate;
 
     /* Set format description according to the input params. */
     r = audio_stream_desc_init(&stm->input_desc, &stm->input_stream_params);
     if (r != CUBEB_OK) {
-      LOG("Setting format description for input failed.");
+      LOG("(%p) Setting format description for input failed.", stm);
       return r;
     }
 
     // Use latency to set buffer size
     stm->input_buffer_frames = stm->latency_frames;
-    LOG("Input buffer frame count %u.", unsigned(stm->input_buffer_frames));
+    LOG("(%p) Input buffer frame count %u.", stm, unsigned(stm->input_buffer_frames));
     r = AudioUnitSetProperty(stm->input_unit,
                              kAudioDevicePropertyBufferFrameSize,
                              kAudioUnitScope_Output,
                              AU_IN_BUS,
                              &stm->input_buffer_frames,
                              sizeof(UInt32));
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/input/kAudioDevicePropertyBufferFrameSize", r);
@@ -1284,24 +1287,24 @@ setup_audiounit_stream(cubeb_stream * st
                              kAudioUnitScope_Global,
                              AU_OUT_BUS,
                              &aurcbs_in,
                              sizeof(aurcbs_in));
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/input/kAudioOutputUnitProperty_SetInputCallback", r);
       return CUBEB_ERROR;
     }
-    LOG("Input audiounit init successfully.");
+    LOG("(%p) Input audiounit init successfully.", stm);
   }
 
   /* Setup Output Stream! */
   if (has_output(stm)) {
     r = audio_stream_desc_init(&stm->output_desc, &stm->output_stream_params);
     if (r != CUBEB_OK) {
-      LOG("Could not initialize the audio stream description.");
+      LOG("(%p) Could not initialize the audio stream description.", stm);
       return r;
     }
 
     /* Get output device sample rate. */
     AudioStreamBasicDescription output_hw_desc;
     size = sizeof(AudioStreamBasicDescription);
     memset(&output_hw_desc, 0, size);
     r = AudioUnitGetProperty(stm->output_unit,
@@ -1323,17 +1326,17 @@ setup_audiounit_stream(cubeb_stream * st
                              sizeof(AudioStreamBasicDescription));
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/output/kAudioUnitProperty_StreamFormat", r);
       return CUBEB_ERROR;
     }
 
     // Use latency to calculate buffer size
     uint32_t output_buffer_frames = stm->latency_frames;
-    LOG("Output buffer frame count %u.", output_buffer_frames);
+    LOG("(%p) Output buffer frame count %u.", stm, output_buffer_frames);
     r = AudioUnitSetProperty(stm->output_unit,
                              kAudioDevicePropertyBufferFrameSize,
                              kAudioUnitScope_Input,
                              AU_OUT_BUS,
                              &output_buffer_frames,
                              sizeof(output_buffer_frames));
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/output/kAudioDevicePropertyBufferFrameSize", r);
@@ -1348,17 +1351,17 @@ setup_audiounit_stream(cubeb_stream * st
                              kAudioUnitScope_Global,
                              AU_OUT_BUS,
                              &aurcbs_out,
                              sizeof(aurcbs_out));
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitSetProperty/output/kAudioUnitProperty_SetRenderCallback", r);
       return CUBEB_ERROR;
     }
-    LOG("Output audiounit init successfully.");
+    LOG("(%p) Output audiounit init successfully.", stm);
   }
 
   // Setting the latency doesn't work well for USB headsets (eg. plantronics).
   // Keep the default latency for now.
 #if 0
   buffer_size = latency;
 
   /* Get the range of latency this particular device can work with, and clamp
@@ -1422,17 +1425,17 @@ setup_audiounit_stream(cubeb_stream * st
   stm->resampler = cubeb_resampler_create(stm,
                                           has_input(stm) ? &input_unconverted_params : NULL,
                                           has_output(stm) ? &stm->output_stream_params : NULL,
                                           target_sample_rate,
                                           stm->data_callback,
                                           stm->user_ptr,
                                           CUBEB_RESAMPLER_QUALITY_DESKTOP);
   if (!stm->resampler) {
-    LOG("Could not create resampler.");
+    LOG("(%p) Could not create resampler.", stm);
     return CUBEB_ERROR;
   }
 
   if (stm->input_unit != NULL) {
     r = AudioUnitInitialize(stm->input_unit);
     if (r != noErr) {
       PRINT_ERROR_CODE("AudioUnitInitialize/input", r);
       return CUBEB_ERROR;
@@ -1447,17 +1450,17 @@ setup_audiounit_stream(cubeb_stream * st
     }
   }
   return CUBEB_OK;
 }
 
 static int
 audiounit_stream_init(cubeb * context,
                       cubeb_stream ** stream,
-                      char const * stream_name,
+                      char const * /* stream_name */,
                       cubeb_devid input_device,
                       cubeb_stream_params * input_stream_params,
                       cubeb_devid output_device,
                       cubeb_stream_params * output_stream_params,
                       unsigned int latency_frames,
                       cubeb_data_callback data_callback,
                       cubeb_state_callback state_callback,
                       void * user_ptr)
@@ -1510,24 +1513,24 @@ audiounit_stream_init(cubeb * context,
     // It's not critical to lock here, because no other thread has been started
     // yet, but it allows to assert that the lock has been taken in
     // `setup_audiounit_stream`.
     auto_lock lock(stm->mutex);
     r = setup_audiounit_stream(stm);
   }
 
   if (r != CUBEB_OK) {
-    LOG("Could not setup the audiounit stream.");
+    LOG("(%p) Could not setup the audiounit stream.", stm);
     audiounit_stream_destroy(stm);
     return r;
   }
 
   r = audiounit_install_device_changed_callback(stm);
   if (r != CUBEB_OK) {
-    LOG("Could not install the device change callback.");
+    LOG("(%p) Could not install the device change callback.", stm);
     return r;
   }
 
   *stream = stm;
   LOG("Cubeb stream (%p) init successful.", stm);
   return CUBEB_OK;
 }
 
@@ -1560,17 +1563,17 @@ audiounit_stream_destroy(cubeb_stream * 
   {
     auto_lock lock(stm->mutex);
     close_audiounit_stream(stm);
   }
 
 #if !TARGET_OS_IPHONE
   int r = audiounit_uninstall_device_changed_callback(stm);
   if (r != CUBEB_OK) {
-    LOG("Could not uninstall the device changed callback");
+    LOG("(%p) Could not uninstall the device changed callback", stm);
   }
 #endif
 
   assert(stm->context->active_streams >= 1);
   stm->context->active_streams -= 1;
 
   stm->~cubeb_stream();
   free(stm);
@@ -1809,17 +1812,17 @@ int audiounit_stream_get_current_device(
 
   if (audiounit_get_input_device_id(&input_device_id) != CUBEB_OK) {
     return CUBEB_ERROR;
   }
 
   size = sizeof(UInt32);
   r = AudioObjectGetPropertyData(input_device_id, &datasource_address_input, 0, NULL, &size, &data);
   if (r != noErr) {
-    LOG("Error when getting device !");
+    LOG("(%p) Error when getting device !", stm);
     size = 0;
     data = 0;
   }
 
   (*device)->input_name = new char[size + 1];
   if (!(*device)->input_name) {
     return CUBEB_ERROR;
   }
@@ -1832,17 +1835,17 @@ int audiounit_stream_get_current_device(
 
   memcpy((*device)->input_name, strdata, size);
   (*device)->input_name[size] = '\0';
 
   return CUBEB_OK;
 #endif
 }
 
-int audiounit_stream_device_destroy(cubeb_stream * stream,
+int audiounit_stream_device_destroy(cubeb_stream * /* stream */,
                                     cubeb_device * device)
 {
   delete [] device->output_name;
   delete [] device->input_name;
   delete device;
   return CUBEB_OK;
 }
 
@@ -1901,20 +1904,20 @@ audiounit_strref_to_cstr_utf8(CFStringRe
   CFIndex len, size;
   char * ret;
   if (strref == NULL) {
     return NULL;
   }
 
   len = CFStringGetLength(strref);
   size = CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8);
-  ret = new char[size];
+  ret = static_cast<char *>(malloc(size));
 
   if (!CFStringGetCString(strref, ret, size, kCFStringEncodingUTF8)) {
-    delete [] ret;
+    free(ret);
     ret = NULL;
   }
 
   return ret;
 }
 
 static uint32_t
 audiounit_get_channel_count(AudioObjectID devid, AudioObjectPropertyScope scope)
@@ -2094,17 +2097,17 @@ audiounit_create_device_from_hwdev(Audio
     ret->latency_lo = 10 * ret->default_rate / 1000;  /* Default to  10ms */
     ret->latency_hi = 100 * ret->default_rate / 1000; /* Default to 100ms */
   }
 
   return ret;
 }
 
 static int
-audiounit_enumerate_devices(cubeb * context, cubeb_device_type type,
+audiounit_enumerate_devices(cubeb * /* context */, cubeb_device_type type,
                             cubeb_device_collection ** collection)
 {
   AudioObjectID * hwdevs = NULL;
   uint32_t i, hwdevcount = 0;
   OSStatus err;
 
   if ((err = audiounit_get_devices(&hwdevs, &hwdevcount)) != noErr) {
     return CUBEB_ERROR;
@@ -2186,17 +2189,17 @@ audiounit_get_devices_of_type(cubeb_devi
     /* For device in the given scope channel must be > 0. */
     if (audiounit_get_channel_count(devices[i], scope) > 0) {
       devices_in_scope[dev_count] = devices[i];
       ++dev_count;
     }
   }
 
   if (devid_array && dev_count > 0) {
-    *devid_array = static_cast<AudioObjectID *>(calloc(dev_count, sizeof(AudioObjectID)));
+    *devid_array = new AudioObjectID[dev_count];
     assert(*devid_array);
     memcpy(*devid_array, &devices_in_scope, dev_count * sizeof(AudioObjectID));
   }
   return dev_count;
 }
 
 static uint32_t
 audiounit_equal_arrays(AudioObjectID * left, AudioObjectID * right, uint32_t size)
@@ -2206,19 +2209,19 @@ audiounit_equal_arrays(AudioObjectID * l
     if (left[i] != right[i]) {
       return 0;
     }
   }
   return 1;
 }
 
 static OSStatus
-audiounit_collection_changed_callback(AudioObjectID inObjectID,
-                                      UInt32 inNumberAddresses,
-                                      const AudioObjectPropertyAddress * inAddresses,
+audiounit_collection_changed_callback(AudioObjectID /* inObjectID */,
+                                      UInt32 /* inNumberAddresses */,
+                                      const AudioObjectPropertyAddress * /* inAddresses */,
                                       void * inClientData)
 {
   cubeb * context = static_cast<cubeb *>(inClientData);
   auto_lock lock(context->mutex);
 
   if (context->collection_changed_callback == NULL) {
     /* Listener removed while waiting in mutex, abort. */
     return noErr;
--- a/media/libcubeb/src/cubeb_log.h
+++ b/media/libcubeb/src/cubeb_log.h
@@ -7,18 +7,24 @@
 
 #ifndef CUBEB_LOG
 #define CUBEB_LOG
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#if defined(__GNUC__) || defined(__clang__)
+#define PRINTF_FORMAT(fmt, args) __attribute__((format(printf, fmt, args)))
+#else
+#define PRINTF_FORMAT(fmt, args)
+#endif
+
 extern cubeb_log_level g_log_level;
-extern cubeb_log_callback g_log_callback;
+extern cubeb_log_callback g_log_callback PRINTF_FORMAT(1, 2);
 
 #ifdef __cplusplus
 }
 #endif
 
 #define LOGV(msg, ...) LOG_INTERNAL(CUBEB_LOG_VERBOSE, msg, ##__VA_ARGS__)
 #define LOG(msg, ...) LOG_INTERNAL(CUBEB_LOG_NORMAL, msg, ##__VA_ARGS__)
 
--- a/media/libcubeb/src/cubeb_utils.h
+++ b/media/libcubeb/src/cubeb_utils.h
@@ -207,23 +207,9 @@ struct auto_lock {
   ~auto_lock()
   {
     lock.leave();
   }
 private:
   owned_critical_section & lock;
 };
 
-struct auto_unlock {
-  explicit auto_unlock(owned_critical_section & lock)
-    : lock(lock)
-  {
-    lock.leave();
-  }
-  ~auto_unlock()
-  {
-    lock.enter();
-  }
-private:
-  owned_critical_section & lock;
-};
-
 #endif /* CUBEB_UTILS */
--- a/media/libcubeb/src/cubeb_wasapi.cpp
+++ b/media/libcubeb/src/cubeb_wasapi.cpp
@@ -101,17 +101,17 @@ typedef BOOL (WINAPI *revert_mm_thread_c
 
 extern cubeb_ops const wasapi_ops;
 
 int wasapi_stream_stop(cubeb_stream * stm);
 int wasapi_stream_start(cubeb_stream * stm);
 void close_wasapi_stream(cubeb_stream * stm);
 int setup_wasapi_stream(cubeb_stream * stm);
 static char * wstr_to_utf8(const wchar_t * str);
-static const wchar_t * utf8_to_wstr(char* str);
+static std::unique_ptr<const wchar_t[]> utf8_to_wstr(char* str);
 
 }
 
 struct cubeb
 {
   cubeb_ops const * ops;
   /* Library dynamically opened to increase the render thread priority, and
      the two function pointers we need. */
@@ -614,19 +614,21 @@ bool get_output_buffer(cubeb_stream * st
   if (FAILED(hr)) {
     LOG("Failed to get padding: %x", hr);
     return false;
   }
   XASSERT(padding_out <= stm->output_buffer_frame_count);
 
   if (stm->draining) {
     if (padding_out == 0) {
+      LOG("Draining finished.");
       stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_DRAINED);
       return false;
     }
+    LOG("Draining.");
     return true;
   }
 
   frame_count = stm->output_buffer_frame_count - padding_out;
   BYTE * output_buffer;
 
   hr = stm->render_client->GetBuffer(frame_count, &output_buffer);
   if (FAILED(hr)) {
@@ -679,16 +681,19 @@ refill_callback_duplex(cubeb_stream * st
   double output_duration = double(output_frames) / stm->output_mix_params.rate;
   double input_duration = double(stm->linear_input_buffer.length() / stm->input_stream_params.channels) / stm->input_mix_params.rate;
   if (input_duration < output_duration) {
     size_t padding = size_t(round((output_duration - input_duration) * stm->input_mix_params.rate));
     LOG("padding silence: out=%f in=%f pad=%u", output_duration, input_duration, padding);
     stm->linear_input_buffer.push_front_silence(padding * stm->input_stream_params.channels);
   }
 
+  LOGV("Duplex callback: input frames: %zu, output frames: %zu",
+       stm->linear_input_buffer.length(), output_frames);
+
   refill(stm,
          stm->linear_input_buffer.data(),
          stm->linear_input_buffer.length(),
          output_buffer,
          output_frames);
 
   stm->linear_input_buffer.clear();
 
@@ -712,16 +717,18 @@ refill_callback_input(cubeb_stream * stm
     return rv;
   }
 
   // This can happen at the very beginning of the stream.
   if (!stm->linear_input_buffer.length()) {
     return true;
   }
 
+  LOGV("Input callback: input frames: %zu", stm->linear_input_buffer.length());
+
   long read = refill(stm,
                      stm->linear_input_buffer.data(),
                      stm->linear_input_buffer.length(),
                      nullptr,
                      0);
 
   consumed_all_buffer = read == stm->linear_input_buffer.length();
 
@@ -749,16 +756,20 @@ refill_callback_output(cubeb_stream * st
     return true;
   }
 
   long got = refill(stm,
                     nullptr,
                     0,
                     output_buffer,
                     output_frames);
+
+  LOGV("Output callback: output frames requested: %zu, got %ld",
+       output_frames, got);
+
   XASSERT(got >= 0);
   XASSERT(got == output_frames || stm->draining);
 
   hr = stm->render_client->ReleaseBuffer(got, 0);
   if (FAILED(hr)) {
     LOG("failed to release buffer: %x", hr);
     return false;
   }
@@ -819,58 +830,67 @@ wasapi_stream_render_loop(LPVOID stream)
          shutdown. */
       if (stm->draining) {
         stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_DRAINED);
       }
       continue;
     }
     case WAIT_OBJECT_0 + 1: { /* reconfigure */
       XASSERT(stm->output_client || stm->input_client);
+      LOG("Reconfiguring the stream");
       /* Close the stream */
       if (stm->output_client) {
         stm->output_client->Stop();
+        LOG("Output stopped.");
       }
       if (stm->input_client) {
         stm->input_client->Stop();
+        LOG("Input stopped.");
       }
       {
         auto_lock lock(stm->stream_reset_lock);
         close_wasapi_stream(stm);
+        LOG("Stream closed.");
         /* Reopen a stream and start it immediately. This will automatically pick the
            new default device for this role. */
         int r = setup_wasapi_stream(stm);
         if (r != CUBEB_OK) {
+          LOG("Error setting up the stream during reconfigure.");
           /* Don't destroy the stream here, since we expect the caller to do
              so after the error has propagated via the state callback. */
           is_playing = false;
           hr = E_FAIL;
           continue;
         }
+        LOG("Stream setup successfuly.");
       }
       XASSERT(stm->output_client || stm->input_client);
       if (stm->output_client) {
         stm->output_client->Start();
+        LOG("Output started after reconfigure.");
       }
       if (stm->input_client) {
         stm->input_client->Start();
+        LOG("Input started after reconfigure.");
       }
       break;
     }
     case WAIT_OBJECT_0 + 2:  /* refill */
       XASSERT(has_input(stm) && has_output(stm) ||
               !has_input(stm) && has_output(stm));
       is_playing = stm->refill_callback(stm);
       break;
     case WAIT_OBJECT_0 + 3: /* input available */
       if (has_input(stm) && has_output(stm)) { continue; }
       is_playing = stm->refill_callback(stm);
       break;
     case WAIT_TIMEOUT:
       XASSERT(stm->shutdown_event == wait_array[0]);
       if (++timeout_count >= timeout_limit) {
+        LOG("Render loop reached the timeout limit.");
         is_playing = false;
         hr = E_FAIL;
       }
       break;
     default:
       LOG("case %d not handled in render loop.", waitResult);
       abort();
     }
@@ -1111,17 +1131,19 @@ int wasapi_init(cubeb ** context, char c
 
   return CUBEB_OK;
 }
 }
 
 namespace {
 void stop_and_join_render_thread(cubeb_stream * stm)
 {
+  LOG("Stop and join render thread.");
   if (!stm->thread) {
+    LOG("No thread present.");
     return;
   }
 
   BOOL ok = SetEvent(stm->shutdown_event);
   if (!ok) {
     LOG("Destroy SetEvent failed: %d", GetLastError());
   }
 
@@ -1133,16 +1155,18 @@ void stop_and_join_render_thread(cubeb_s
      * process. */
     LOG("Destroy WaitForSingleObject on thread timed out,"
         " leaking the thread: %d", GetLastError());
   }
   if (r == WAIT_FAILED) {
     LOG("Destroy WaitForSingleObject on thread failed: %d", GetLastError());
   }
 
+  LOG("Closing thread.");
+
   CloseHandle(stm->thread);
   stm->thread = NULL;
 
   CloseHandle(stm->shutdown_event);
   stm->shutdown_event = 0;
 }
 
 void wasapi_destroy(cubeb * context)
@@ -1241,16 +1265,18 @@ wasapi_get_min_latency(cubeb * ctx, cube
   LOG("default device period: %lld", default_period);
 
   /* According to the docs, the best latency we can achieve is by synchronizing
      the stream and the engine.
      http://msdn.microsoft.com/en-us/library/windows/desktop/dd370871%28v=vs.85%29.aspx */
 
   *latency_frames = hns_to_frames(params.rate, default_period);
 
+  LOG("Minimum latency in frames: %u", *latency_frames);
+
   SafeRelease(client);
 
   return CUBEB_OK;
 }
 
 int
 wasapi_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate)
 {
@@ -1279,16 +1305,18 @@ wasapi_get_preferred_sample_rate(cubeb *
   hr = client->GetMixFormat(&mix_format);
   if (FAILED(hr)) {
     SafeRelease(client);
     return CUBEB_ERROR;
   }
 
   *rate = mix_format->nSamplesPerSec;
 
+  LOG("Preferred sample rate for output: %u", *rate);
+
   CoTaskMemFree(mix_format);
   SafeRelease(client);
 
   return CUBEB_OK;
 }
 
 void wasapi_stream_destroy(cubeb_stream * stm);
 
@@ -1381,18 +1409,17 @@ int setup_wasapi_stream_one_side(cubeb_s
   HRESULT hr;
 
   stm->stream_reset_lock.assert_current_thread_owns();
   bool try_again = false;
   // This loops until we find a device that works, or we've exhausted all
   // possibilities.
   do {
     if (devid) {
-      std::unique_ptr<const wchar_t> id;
-      id.reset(utf8_to_wstr(reinterpret_cast<char*>(devid)));
+      std::unique_ptr<const wchar_t[]> id(utf8_to_wstr(reinterpret_cast<char*>(devid)));
       hr = get_endpoint(&device, id.get());
       if (FAILED(hr)) {
         LOG("Could not get %s endpoint, error: %x\n", DIRECTION_NAME, hr);
         return CUBEB_ERROR;
       }
     }
     else {
       hr = get_default_endpoint(&device, direction);
@@ -1495,16 +1522,17 @@ int setup_wasapi_stream(cubeb_stream * s
 {
   HRESULT hr;
   int rv;
 
   stm->stream_reset_lock.assert_current_thread_owns();
 
   auto_com com;
   if (!com.ok()) {
+    LOG("Failure to initialize COM.");
     return CUBEB_ERROR;
   }
 
   XASSERT((!stm->output_client || !stm->input_client) && "WASAPI stream already setup, close it first.");
 
   if (has_input(stm)) {
     LOG("Setup capture: device=%x", (int)stm->input_device);
     rv = setup_wasapi_stream_one_side(stm,
@@ -1513,16 +1541,17 @@ int setup_wasapi_stream(cubeb_stream * s
                                       eCapture,
                                       __uuidof(IAudioCaptureClient),
                                       &stm->input_client,
                                       &stm->input_buffer_frame_count,
                                       stm->input_available_event,
                                       &stm->capture_client,
                                       &stm->input_mix_params);
     if (rv != CUBEB_OK) {
+      LOG("Failure to open the input side.");
       return rv;
     }
   }
 
   if (has_output(stm)) {
     LOG("Setup render: device=%x", (int)stm->output_device);
     rv = setup_wasapi_stream_one_side(stm,
                                       &stm->output_stream_params,
@@ -1530,16 +1559,17 @@ int setup_wasapi_stream(cubeb_stream * s
                                       eRender,
                                       __uuidof(IAudioRenderClient),
                                       &stm->output_client,
                                       &stm->output_buffer_frame_count,
                                       stm->refill_event,
                                       &stm->render_client,
                                       &stm->output_mix_params);
     if (rv != CUBEB_OK) {
+      LOG("Failure to open the output side.");
       return rv;
     }
 
     hr = stm->output_client->GetService(__uuidof(IAudioStreamVolume),
                                         (void **)&stm->audio_stream_volume);
     if (FAILED(hr)) {
       LOG("Could not get the IAudioStreamVolume: %x", hr);
       return CUBEB_ERROR;
@@ -1550,16 +1580,17 @@ int setup_wasapi_stream(cubeb_stream * s
                                         (void **)&stm->audio_clock);
     if (FAILED(hr)) {
       LOG("Could not get the IAudioClock: %x", hr);
       return CUBEB_ERROR;
     }
 
     /* Restore the stream volume over a device change. */
     if (stream_set_volume(stm, stm->volume) != CUBEB_OK) {
+      LOG("Could not set the volume.");
       return CUBEB_ERROR;
     }
   }
 
   /* If we have both input and output, we resample to
    * the highest sample rate available. */
   int32_t target_sample_rate;
   if (has_input(stm) && has_output(stm)) {
@@ -1567,16 +1598,18 @@ int setup_wasapi_stream(cubeb_stream * s
     target_sample_rate = stm->input_stream_params.rate;
   } else if (has_input(stm)) {
     target_sample_rate = stm->input_stream_params.rate;
   } else {
     XASSERT(has_output(stm));
     target_sample_rate = stm->output_stream_params.rate;
   }
 
+  LOG("Target sample rate: %d", target_sample_rate);
+
   /* If we are playing/capturing a mono stream, we only resample one channel,
    and copy it over, so we are always resampling the number
    of channels of the stream, not the number of channels
    that WASAPI wants. */
   cubeb_stream_params input_params = stm->input_mix_params;
   input_params.channels = stm->input_stream_params.channels;
   cubeb_stream_params output_params = stm->output_mix_params;
   output_params.channels = stm->output_stream_params.channels;
@@ -1623,16 +1656,20 @@ wasapi_stream_init(cubeb * context, cube
   if (!com.ok()) {
     return CUBEB_ERROR;
   }
 
   XASSERT(context && stream && (input_stream_params || output_stream_params));
 
   if (output_stream_params && output_stream_params->format != CUBEB_SAMPLE_FLOAT32NE ||
       input_stream_params && input_stream_params->format != CUBEB_SAMPLE_FLOAT32NE) {
+    LOG("Invalid format, %p %p %d %d",
+        output_stream_params, input_stream_params,
+        output_stream_params && output_stream_params->format,
+        input_stream_params && input_stream_params->format);
     return CUBEB_ERROR_INVALID_FORMAT;
   }
 
   cubeb_stream * stm = (cubeb_stream *)calloc(1, sizeof(cubeb_stream));
 
   XASSERT(stm);
 
   stm->context = context;
@@ -1706,21 +1743,24 @@ void close_wasapi_stream(cubeb_stream * 
 {
   XASSERT(stm);
 
   stm->stream_reset_lock.assert_current_thread_owns();
 
   SafeRelease(stm->output_client);
   stm->output_client = NULL;
   SafeRelease(stm->input_client);
-  stm->capture_client = NULL;
+  stm->input_client = NULL;
 
   SafeRelease(stm->render_client);
   stm->render_client = NULL;
 
+  SafeRelease(stm->capture_client);
+  stm->capture_client = NULL;
+
   SafeRelease(stm->audio_stream_volume);
   stm->audio_stream_volume = NULL;
 
   SafeRelease(stm->audio_clock);
   stm->audio_clock = NULL;
   stm->total_frames_written += static_cast<UINT64>(round(stm->frames_written * stream_to_mix_samplerate_ratio(stm->output_stream_params, stm->output_mix_params)));
   stm->frames_written = 0;
 
@@ -1945,36 +1985,36 @@ int wasapi_stream_set_volume(cubeb_strea
 static char *
 wstr_to_utf8(LPCWSTR str)
 {
   char * ret = NULL;
   int size;
 
   size = ::WideCharToMultiByte(CP_UTF8, 0, str, -1, ret, 0, NULL, NULL);
   if (size > 0) {
-    ret =  new char[size];
+    ret = static_cast<char *>(malloc(size));
     ::WideCharToMultiByte(CP_UTF8, 0, str, -1, ret, size, NULL, NULL);
   }
 
   return ret;
 }
 
-static const wchar_t *
+static std::unique_ptr<const wchar_t[]>
 utf8_to_wstr(char* str)
 {
-  wchar_t * ret = nullptr;
+  std::unique_ptr<wchar_t[]> ret;
   int size;
 
-  size = ::MultiByteToWideChar(CP_UTF8, 0, str, -1, ret, 0);
+  size = ::MultiByteToWideChar(CP_UTF8, 0, str, -1, nullptr, 0);
   if (size > 0) {
-    ret = new wchar_t[size];
-    ::MultiByteToWideChar(CP_UTF8, 0, str, -1, ret, size);
+    ret.reset(new wchar_t[size]);
+    ::MultiByteToWideChar(CP_UTF8, 0, str, -1, ret.get(), size);
   }
 
-  return ret;
+  return std::move(ret);
 }
 
 static IMMDevice *
 wasapi_get_device_node(IMMDeviceEnumerator * enumerator, IMMDevice * dev)
 {
   IMMDevice * ret = NULL;
   IDeviceTopology * devtopo = NULL;
   IConnector * connector = NULL;
--- a/media/libcubeb/tests/test_sanity.cpp
+++ b/media/libcubeb/tests/test_sanity.cpp
@@ -466,16 +466,31 @@ test_stream_position(void)
     r = cubeb_stream_get_position(stream, &position);
     assert(r == 0);
     assert(position >= last_position);
     assert(position <= total_frames_written);
     last_position = position;
     delay(500);
   }
 
+  /* test that the position is valid even when starting and
+   * stopping the stream.  */
+  for (i = 0; i < 5; ++i) {
+    r = cubeb_stream_stop(stream);
+    assert(r == 0);
+    r = cubeb_stream_get_position(stream, &position);
+    assert(r == 0);
+    assert(last_position < position);
+    last_position = position;
+    delay(500);
+    r = cubeb_stream_start(stream);
+    assert(r == 0);
+    delay(500);
+  }
+
   assert(last_position != 0);
 
   /* stream position should not advance after stopping playback */
   r = cubeb_stream_stop(stream);
   assert(r == 0);
 
   /* XXX allow stream to settle */
   delay(500);
--- a/mfbt/Range.h
+++ b/mfbt/Range.h
@@ -30,17 +30,17 @@ public:
     : mStart(aStart.get(), aStart.get(), aEnd.get()),
       mEnd(aEnd.get(), aStart.get(), aEnd.get())
   {
     // Only accept two RangedPtrs within the same range.
     aStart.checkIdenticalRange(aEnd);
     MOZ_ASSERT(aStart <= aEnd);
   }
 
-  RangedPtr<T> start() const { return mStart; }
+  RangedPtr<T> begin() const { return mStart; }
   RangedPtr<T> end() const { return mEnd; }
   size_t length() const { return mEnd - mStart; }
 
   T& operator[](size_t aOffset) const { return mStart[aOffset]; }
 
   explicit operator bool() const { return mStart != nullptr; }
 };
 
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1159,9 +1159,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 = 463;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1486818221888000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1486909219012000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -13,16 +13,17 @@ 123plons.nl: [Exception... "Component re
 12vpnchina.com: could not connect to host
 18f.gsa.gov: did not receive HSTS header
 1a-jva.de: did not receive HSTS header
 1p.ro: could not connect to host
 1password.com: did not receive HSTS header
 1px.tv: could not connect to host
 1whw.co.uk: could not connect to host
 206rc.net: max-age too low: 2592000
+20hs.cn: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 24hourpaint.com: did not receive HSTS header
 25daysof.io: could not connect to host
 2859cc.com: could not connect to host
 2or3.tk: could not connect to host
 300651.ru: did not receive HSTS header
 302.nyc: could not connect to host
 360ds.co.in: could not connect to host
 360gradus.com: did not receive HSTS header
@@ -32,17 +33,16 @@ 420dongstorm.com: could not connect to h
 42ms.org: could not connect to host
 4455software.com: did not receive HSTS header
 4679.space: could not connect to host
 47ronin.com: did not receive HSTS header
 4elements.com: did not receive HSTS header
 4eyes.ch: did not receive HSTS header
 4mm.org: could not connect to host
 4sqsu.eu: could not connect to host
-4vf.de: did not receive HSTS header
 50millionablaze.org: did not receive HSTS header
 56ct.com: could not connect to host
 60ych.net: did not receive HSTS header
 7kovrikov.ru: did not receive HSTS header
 808.lv: could not connect to host
 83i.net: could not connect to host
 8ack.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 911911.pw: could not connect to host
@@ -58,17 +58,16 @@ abilitylist.org: did not receive HSTS he
 abioniere.de: could not connect to host
 about.ge: could not connect to host
 aboutyou-deals.de: did not receive HSTS header
 abtom.de: did not receive HSTS header
 abury.fr: did not receive HSTS header
 abury.me: did not receive HSTS header
 accelerole.com: did not receive HSTS header
 accountradar.com: could not connect to host
-accounts-p.com: could not connect to host
 accuenergy.com: max-age too low: 0
 acisonline.net: could not connect to host
 acorns.com: did not receive HSTS header
 acr.im: could not connect to host
 acslimited.co.uk: did not receive HSTS header
 activeweb.top: could not connect to host
 activiti.alfresco.com: did not receive HSTS header
 acuve.jp: could not connect to host
@@ -106,16 +105,17 @@ afrodigital.uk: could not connect to hos
 agbremen.de: did not receive HSTS header
 agevio.com: could not connect to host
 agilebits.net: could not connect to host
 agrimap.com: did not receive HSTS header
 agrios.de: could not connect to host
 agro-id.gov.ua: could not connect to host
 ahabingo.com: did not receive HSTS header
 ahri.ovh: could not connect to host
+aidanmontare.net: could not connect to host
 airbnb.com: did not receive HSTS header
 aircomms.com: did not receive HSTS header
 aishnair.com: could not connect to host
 aiticon.de: did not receive HSTS header
 aiw-thkoeln.online: could not connect to host
 ajmahal.com: could not connect to host
 akclinics.org: did not receive HSTS header
 akostecki.de: did not receive HSTS header
@@ -129,16 +129,17 @@ alanrickmanflipstable.com: could not con
 alariel.de: did not receive HSTS header
 alarmsystemreviews.com: did not receive HSTS header
 albertopimienta.com: did not receive HSTS header
 alcazaar.com: could not connect to host
 alecvannoten.be: did not receive HSTS header
 alessandro.pw: did not receive HSTS header
 alethearose.com: did not receive HSTS header
 alexandre.sh: did not receive HSTS header
+alexhaydock.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 alexisabarca.com: did not receive HSTS header
 alexismeza.com: could not connect to host
 alexismeza.com.mx: could not connect to host
 alexismeza.dk: could not connect to host
 alfredxing.com: did not receive HSTS header
 alkami.com: did not receive HSTS header
 all-subtitles.com: did not receive HSTS header
 allforyou.at: could not connect to host
@@ -189,17 +190,17 @@ annabellaw.com: max-age too low: 0
 anomaly.ws: did not receive HSTS header
 anonboards.com: did not receive HSTS header
 anook.com: max-age too low: 0
 ant.land: could not connect to host
 anthenor.co.uk: could not connect to host
 antimine.kr: could not connect to host
 antocom.com: did not receive HSTS header
 antoniomarques.eu: did not receive HSTS header
-antoniorequena.com.ve: max-age too low: 0
+antoniorequena.com.ve: could not connect to host
 antscript.com: did not receive HSTS header
 any.pm: could not connect to host
 anycoin.me: could not connect to host
 aojiao.org: did not receive HSTS header
 apachelounge.com: did not receive HSTS header
 apeasternpower.com: max-age too low: 0
 api.lookout.com: could not connect to host
 api.mega.co.nz: could not connect to host
@@ -247,17 +248,16 @@ atavio.at: could not connect to host
 atavio.ch: could not connect to host
 atavio.de: did not receive HSTS header
 atbeckett.com: did not receive HSTS header
 athenelive.com: could not connect to host
 athul.xyz: did not receive HSTS header
 atlex.nl: did not receive HSTS header
 atomik.pro: could not connect to host
 atop.io: could not connect to host
-attilagyorffy.com: could not connect to host
 attimidesigns.com: did not receive HSTS header
 au.search.yahoo.com: max-age too low: 172800
 aubiosales.com: did not receive HSTS header
 auditmatrix.com: did not receive HSTS header
 aujapan.ru: could not connect to host
 aurainfosec.com.au: could not connect to host
 ausnah.me: could not connect to host
 auszeit.bio: did not receive HSTS header
@@ -286,20 +286,22 @@ baby-click.de: could not connect to host
 babybic.hu: did not receive HSTS header
 babyhouse.xyz: could not connect to host
 babysaying.me: could not connect to host
 back-bone.nl: did not receive HSTS header
 bacon-monitoring.org: could not connect to host
 badcronjob.com: could not connect to host
 baff.lu: did not receive HSTS header
 baiduaccount.com: could not connect to host
+bakaweb.fr: could not connect to host
 bakkerdesignandbuild.com: did not receive HSTS header
 balcan-underground.net: could not connect to host
 baldwinkoo.com: could not connect to host
 bandb.xyz: could not connect to host
+bannisbierblog.de: could not connect to host
 barely.sexy: did not receive HSTS header
 bashc.at: could not connect to host
 bashcode.ninja: could not connect to host
 basicsolutionsus.com: did not receive HSTS header
 bassh.net: did not receive HSTS header
 baumstark.ca: did not receive HSTS header
 bazarstupava.sk: did not receive HSTS header
 bcbsmagentprofile.com: could not connect to host
@@ -320,20 +322,20 @@ bedreid.dk: did not receive HSTS header
 bedrijvenadministratie.nl: did not receive HSTS header
 beholdthehurricane.com: could not connect to host
 beier.io: could not connect to host
 belairsewvac.com: did not receive HSTS header
 belics.com: did not receive HSTS header
 belliash.eu.org: could not connect to host
 belltower.io: could not connect to host
 beneffy.com: did not receive HSTS header
+benjamin.pe: could not connect to host
 benjaminblack.net: did not receive HSTS header
 benk.press: could not connect to host
 benny003.de: did not receive HSTS header
-bentertain.de: could not connect to host
 benzkosmetik.de: could not connect to host
 bermytraq.bm: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 berrymark.be: max-age too low: 0
 besixdouze.world: could not connect to host
 betafive.net: could not connect to host
 betnet.fr: could not connect to host
 betplanning.it: did not receive HSTS header
 bets.de: did not receive HSTS header
@@ -432,30 +434,31 @@ brainvation.de: did not receive HSTS hea
 bran.cc: could not connect to host
 branchtrack.com: did not receive HSTS header
 brandon.so: could not connect to host
 brianmwaters.net: could not connect to host
 brickoo.com: could not connect to host
 brideandgroomdirect.ie: did not receive HSTS header
 brks.xyz: could not connect to host
 broken-oak.com: could not connect to host
-brokenhands.io: could not connect to host
+brokenhands.io: did not receive HSTS header
 brookechase.com: did not receive HSTS header
 browserid.org: did not receive HSTS header
 brunix.net: did not receive HSTS header
 brunoramos.com: could not connect to host
 brunoramos.org: could not connect to host
 bsagan.fr: could not connect to host
 bsalyzer.com: could not connect to host
 bsdtips.com: could not connect to host
 btcdlc.com: could not connect to host
 buch-cuber.de: could not connect to host
 buchheld.at: did not receive HSTS header
 budgetthostels.nl: did not receive HSTS header
 budskap.eu: did not receive HSTS header
+bugtrack.io: did not receive HSTS header
 buhler.pro: did not receive HSTS header
 buildsaver.co.za: did not receive HSTS header
 built.by: did not receive HSTS header
 bulletpoint.cz: did not receive HSTS header
 bumarkamoda.com: could not connect to host
 bunaken.asia: could not connect to host
 burian-server.cz: could not connect to host
 burrow.ovh: could not connect to host
@@ -483,17 +486,19 @@ caconnect.org: could not connect to host
 cadao.me: did not receive HSTS header
 cadusilva.com: did not receive HSTS header
 cafe-scientifique.org.ec: could not connect to host
 caim.cz: did not receive HSTS header
 cajapopcorn.com: did not receive HSTS header
 cake.care: could not connect to host
 calgaryconstructionjobs.com: could not connect to host
 calix.com: max-age too low: 0
+call.me: did not receive HSTS header
 calltrackingreports.com: could not connect to host
+calories.org: could not connect to host
 calvin.me: max-age too low: 2592000
 calvinallen.net: could not connect to host
 calyxinstitute.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 canadiangamblingchoice.com: did not receive HSTS header
 cancelmyprofile.com: did not receive HSTS header
 candicontrols.com: did not receive HSTS header
 candratech.com: could not connect to host
 candylion.rocks: could not connect to host
@@ -554,17 +559,17 @@ chateauconstellation.ch: did not receive
 chatup.cf: could not connect to host
 chaulootz.com: could not connect to host
 chebedara.com: could not connect to host
 checkout.google.com: did not receive HSTS header (error ignored - included regardless)
 cheerflow.com: could not connect to host
 cheesetart.my: could not connect to host
 chejianer.cn: did not receive HSTS header
 cherysunzhang.com: max-age too low: 7776000
-chestnut.cf: did not receive HSTS header
+chestnut.cf: could not connect to host
 chihiro.xyz: could not connect to host
 chijiokeindustries.co.uk: did not receive HSTS header
 childcaresolutionscny.org: did not receive HSTS header
 chirgui.eu: could not connect to host
 chm.vn: did not receive HSTS header
 chontalpa.pw: could not connect to host
 chotu.net: could not connect to host
 chris-web.info: could not connect to host
@@ -573,16 +578,17 @@ christiaandruif.nl: could not connect to
 christianbargon.de: could not connect to host
 christianbro.gq: could not connect to host
 christophheich.me: could not connect to host
 chrisupjohn.com: could not connect to host
 chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chrome.google.com: did not receive HSTS header (error ignored - included regardless)
 chroniclesofgeorge.com: did not receive HSTS header
 chua.cf: could not connect to host
+cianmawhinney.xyz: could not connect to host
 cidr.ml: could not connect to host
 cigarblogs.net: could not connect to host
 cip.md: did not receive HSTS header
 ciplanutrition.com: did not receive HSTS header
 citiagent.cz: could not connect to host
 cityoflaurel.org: did not receive HSTS header
 clara-baumert.de: could not connect to host
 classicspublishing.com: could not connect to host
@@ -612,50 +618,53 @@ cmc-versand.de: did not receive HSTS hea
 cmci.dk: did not receive HSTS header
 cmlachapelle.ch: did not receive HSTS header
 cmlancy.ch: did not receive HSTS header
 cmlignon.ch: did not receive HSTS header
 cmplainpalais.ch: did not receive HSTS header
 cmsbattle.com: could not connect to host
 cmscafe.ru: did not receive HSTS header
 cn.search.yahoo.com: did not receive HSTS header
-co50.com: could not connect to host
+co50.com: did not receive HSTS header
 cocaine-import.agency: could not connect to host
+cocktailfuture.fr: did not receive HSTS header
 codabix.com: did not receive HSTS header
 codabix.de: could not connect to host
 codabix.net: could not connect to host
 code.fm: could not connect to host
 code.google.com: did not receive HSTS header (error ignored - included regardless)
 codeco.pw: could not connect to host
 codeforce.io: did not receive HSTS header
 codepx.com: did not receive HSTS header
 codewiththepros.org: could not connect to host
 codiva.io: max-age too low: 2592000
 coffeeetc.co.uk: did not receive HSTS header
 coffeestrategies.com: max-age too low: 2592000
 coiffeurschnittstelle.ch: did not receive HSTS header
 coindam.com: could not connect to host
 colisfrais.com: did not receive HSTS header
+collectosaurus.com: did not receive HSTS header
 collies.eu: did not receive HSTS header
 collins.kg: did not receive HSTS header
 colmexpro.com: did not receive HSTS header
+colo-tech.com: could not connect to host
 colognegaming.net: could not connect to host
 coloradocomputernetworking.net: could not connect to host
 colorbrush.ru: did not receive HSTS header
 comfortticket.de: did not receive HSTS header
 comicspines.com: could not connect to host
 compalytics.com: could not connect to host
 comparejewelleryprices.co.uk: could not connect to host
+compiledworks.com: could not connect to host
 completionist.audio: could not connect to host
 computeremergency.com.au: did not receive HSTS header
 concord-group.co.jp: did not receive HSTS header
 condesaelectronics.com: max-age too low: 0
 confirm365.com: could not connect to host
 conformal.com: could not connect to host
-confucio.cl: did not receive HSTS header
 conrad-kostecki.de: did not receive HSTS header
 consciousandglamorous.com: could not connect to host
 console.python.org: did not receive HSTS header
 constructionjobs.com: did not receive HSTS header
 content-api-dev.azurewebsites.net: could not connect to host
 continuumgaming.com: could not connect to host
 controlcenter.gigahost.dk: did not receive HSTS header
 coolchevy.org.ua: could not connect to host
@@ -679,17 +688,17 @@ coursdeprogrammation.com: could not conn
 coursella.com: did not receive HSTS header
 covenantbank.net: could not connect to host
 coverduck.ru: could not connect to host
 cr.search.yahoo.com: did not receive HSTS header
 cracking.org: did not receive HSTS header
 craftbeerbarn.co.uk: could not connect to host
 craftedge.xyz: could not connect to host
 crate.io: did not receive HSTS header
-cravelyrics.com: could not connect to host
+cravelyrics.com: did not receive HSTS header
 crazycen.com: did not receive HSTS header
 crazyhotseeds.com: did not receive HSTS header
 creativephysics.ml: could not connect to host
 creativeplayuk.com: did not receive HSTS header
 crendontech.com: could not connect to host
 crestoncottage.com: could not connect to host
 criena.net: could not connect to host
 crizk.com: could not connect to host
@@ -721,17 +730,16 @@ cthulhuden.com: could not connect to hos
 cubeserver.eu: could not connect to host
 cubewano.com: could not connect to host
 cujanovic.com: did not receive HSTS header
 cupidmentor.com: did not receive HSTS header
 curroapp.com: could not connect to host
 custe.rs: could not connect to host
 cuvva.insure: did not receive HSTS header
 cyanogenmod.xxx: could not connect to host
-cyberlab.kiev.ua: could not connect to host
 cyberpunk.ca: could not connect to host
 cybershambles.com: could not connect to host
 cycleluxembourg.lu: did not receive HSTS header
 cydia-search.io: could not connect to host
 cyphertite.com: could not connect to host
 dad256.tk: could not connect to host
 dah5.com: did not receive HSTS header
 dailystormerpodcasts.com: did not receive HSTS header
@@ -755,33 +763,33 @@ darknebula.space: could not connect to h
 darknode.in: could not connect to host
 dashburst.com: did not receive HSTS header
 dashnimorad.com: did not receive HSTS header
 data-abundance.com: could not connect to host
 datahove.no: did not receive HSTS header
 datarank.com: max-age too low: 0
 dataretention.solutions: could not connect to host
 datenkeks.de: did not receive HSTS header
-dateno1.com: could not connect to host
+dateno1.com: max-age too low: 2592000
 datenreiter.cf: could not connect to host
 datenreiter.gq: could not connect to host
 datenreiter.ml: could not connect to host
 datenreiter.tk: could not connect to host
 datewon.net: did not receive HSTS header
 david-schiffmann.de: did not receive HSTS header
 davidhunter.scot: did not receive HSTS header
 davidreinhardt.de: could not connect to host
 davidscherzer.at: could not connect to host
 daylightcompany.com: did not receive HSTS header
 db.gy: could not connect to host
 dbx.ovh: did not receive HSTS header
-dc585.info: could not connect to host
+dc585.info: did not receive HSTS header
 dccode.gov: could not connect to host
 dcurt.is: did not receive HSTS header
-ddatsh.com: could not connect to host
+ddatsh.com: did not receive HSTS header
 dden.ca: could not connect to host
 debank.tv: did not receive HSTS header
 debtkit.co.uk: did not receive HSTS header
 decafu.co: could not connect to host
 decibelios.li: could not connect to host
 deco.me: could not connect to host
 dedicatutiempo.es: could not connect to host
 deepcovelabs.net: could not connect to host
@@ -877,18 +885,19 @@ dreamlinehost.com: did not receive HSTS 
 drishti.guru: could not connect to host
 drive.google.com: did not receive HSTS header (error ignored - included regardless)
 driving-lessons.co.uk: did not receive HSTS header
 droidboss.com: could not connect to host
 dropcam.com: did not receive HSTS header
 drtroyhendrickson.com: could not connect to host
 drumbandesperanto.nl: could not connect to host
 dshiv.io: could not connect to host
+dubrovskiy.net: could not connect to host
+dubrovskiy.pro: could not connect to host
 duesee.org: could not connect to host
-dullsir.com: did not receive HSTS header
 duria.de: max-age too low: 3600
 dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 dycontrol.de: could not connect to host
 dylanscott.com.au: did not receive HSTS header
 dynamize.solutions: could not connect to host
 dzimejl.sk: did not receive HSTS header
 dzlibs.io: could not connect to host
 e-aut.net: could not connect to host
@@ -929,19 +938,18 @@ eicfood.com: could not connect to host
 ekostecki.de: did not receive HSTS header
 elaintehtaat.fi: did not receive HSTS header
 elanguest.pl: could not connect to host
 electricianforum.co.uk: could not connect to host
 electromc.com: could not connect to host
 elektronring.com: could not connect to host
 elemprendedor.com.ve: could not connect to host
 elenag.ga: could not connect to host
-elenagherta.ga: could not connect to host
 elenoon.ir: did not receive HSTS header
-elgacien.de: max-age too low: 0
+elgacien.de: could not connect to host
 elimdengelen.com: did not receive HSTS header
 elisabeth-kostecki.de: did not receive HSTS header
 elisabethkostecki.de: did not receive HSTS header
 elitefishtank.com: could not connect to host
 elnutricionista.es: did not receive HSTS header
 elpo.xyz: could not connect to host
 elsamakhin.com: could not connect to host
 elsitar.com: could not connect to host
@@ -981,18 +989,19 @@ eressea.xyz: could not connect to host
 ericyl.com: did not receive HSTS header
 eromixx.com: did not receive HSTS header
 erotalia.es: could not connect to host
 eroticen.com: did not receive HSTS header
 erotische-aanbiedingen.nl: could not connect to host
 errlytics.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 errolz.com: could not connect to host
 errors.zenpayroll.com: could not connect to host
+ersindemirtas.com: did not receive HSTS header
 esclear.de: did not receive HSTS header
-escotour.com: did not receive HSTS header
+escotour.com: could not connect to host
 esec.rs: did not receive HSTS header
 espra.com: could not connect to host
 essexcosmeticdentists.co.uk: did not receive HSTS header
 essexghosthunters.co.uk: did not receive HSTS header
 estan.cn: did not receive HSTS header
 estilosapeca.com: could not connect to host
 et-buchholz.de: could not connect to host
 etdonline.co.uk: could not connect to host
@@ -1053,17 +1062,16 @@ familie-zimmermann.at: could not connect
 fanyl.cn: could not connect to host
 fashioncare.cz: did not receive HSTS header
 fasset.jp: could not connect to host
 fastopen.ml: could not connect to host
 fatgeekflix.net: could not connect to host
 fatherhood.gov: did not receive HSTS header
 fatox.de: could not connect to host
 fatwin.pw: could not connect to host
-fawkex.me: did not receive HSTS header
 fayolle.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 fbox.li: could not connect to host
 fdj.im: could not connect to host
 feard.space: could not connect to host
 fedux.com.ar: could not connect to host
 feezmodo.com: max-age too low: 0
 felisslovakia.sk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 feliwyn.fr: did not receive HSTS header
@@ -1105,32 +1113,34 @@ flamewall.net: could not connect to host
 flawcheck.com: did not receive HSTS header
 fliexer.com: did not receive HSTS header
 floless.co.uk: did not receive HSTS header
 florian-lillpopp.de: max-age too low: 10
 florianlillpopp.de: max-age too low: 10
 floridaescapes.co.uk: did not receive HSTS header
 florisvdk.net: did not receive HSTS header
 flouartistique.ch: could not connect to host
+flow.su: could not connect to host
 flowersandclouds.com: could not connect to host
 flushstudios.com: did not receive HSTS header
 fly.moe: could not connect to host
 flyaces.com: did not receive HSTS header
 flyss.net: did not receive HSTS header
 fm83.nl: did not receive HSTS header
 fndout.com: did not receive HSTS header
 fnvsecurity.com: could not connect to host
 fonetiq.io: could not connect to host
 food4health.guide: could not connect to host
 footballmapped.com: could not connect to host
 foraje-profesionale.ro: did not receive HSTS header
 forbook.net: could not connect to host
 foreignexchangeresource.com: did not receive HSTS header
 foreveralone.io: could not connect to host
 forex-dan.com: did not receive HSTS header
+formbetter.com: could not connect to host
 formini.dz: did not receive HSTS header
 formula.cf: could not connect to host
 forodeespanol.com: could not connect to host
 fotiu.com: could not connect to host
 fotm.net: did not receive HSTS header
 fotografosexpertos.com: did not receive HSTS header
 fotopasja.info: could not connect to host
 fourchin.net: could not connect to host
@@ -1140,55 +1150,57 @@ foxtrot.pw: could not connect to host
 fr33d0m.link: could not connect to host
 francevpn.xyz: could not connect to host
 frangor.info: did not receive HSTS header
 fransallen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 franzt.de: could not connect to host
 frasys.io: did not receive HSTS header
 freeflow.tv: could not connect to host
 freekdevries.nl: could not connect to host
-freematthale.net: did not receive HSTS header
+freematthale.net: could not connect to host
 freemedforms.com: did not receive HSTS header
 freethought.org.au: could not connect to host
 freeutopia.org: did not receive HSTS header
 freezion.com: could not connect to host
 freshfind.xyz: could not connect to host
 frezbo.com: did not receive HSTS header
 friendica.ch: could not connect to host
 frizo.com: did not receive HSTS header
 froggstack.de: could not connect to host
 frontmin.com: did not receive HSTS header
 frost-ci.xyz: could not connect to host
 fruitusers.com: could not connect to host
 frusky.net: could not connect to host
 ftctele.com: did not receive HSTS header
 fukushima-web.com: did not receive HSTS header
+fundingempire.com: could not connect to host
 funkyweddingideas.com.au: could not connect to host
 funrun.com: did not receive HSTS header
 furiffic.com: did not receive HSTS header
 furry.be: max-age too low: 86400
 fusionmate.com: could not connect to host
 futbol11.com: did not receive HSTS header
 futuretechnologi.es: could not connect to host
 fx-rk.com: did not receive HSTS header
 fxtalk.cn: could not connect to host
 fyfywka.com: could not connect to host
 fysiohaenraets.nl: did not receive HSTS header
 fzn.io: could not connect to host
 g2a.co: did not receive HSTS header
 g2g.com: did not receive HSTS header
 g4w.co: did not receive HSTS header (error ignored - included regardless)
 gabber.scot: could not connect to host
-gaelleetarnaud.com: did not receive HSTS header
+gaelleetarnaud.com: could not connect to host
 gaestehaus-monika.com: could not connect to host
 gafachi.com: could not connect to host
 gakkainavi4.com: could not connect to host
 galenskap.eu: did not receive HSTS header
 gallery44.org: did not receive HSTS header
 galoisvpn.xyz: could not connect to host
+game.yt: did not receive HSTS header
 gamecave.de: could not connect to host
 gamechasm.com: could not connect to host
 gamehacks.me: could not connect to host
 gameink.net: max-age too low: 0
 gamenected.com: could not connect to host
 gamenected.de: could not connect to host
 gamerslair.org: did not receive HSTS header
 gamesdepartment.co.uk: max-age too low: 0
@@ -1203,34 +1215,35 @@ geekcast.co.uk: could not connect to hos
 geli-graphics.com: did not receive HSTS header
 gem-indonesia.net: could not connect to host
 genuu.com: could not connect to host
 genuxation.com: could not connect to host
 genyaa.com: could not connect to host
 gerencianet.com.br: did not receive HSTS header
 get.zenpayroll.com: did not receive HSTS header
 getable.com: did not receive HSTS header
+getblys.com.au: did not receive HSTS header
 getbooks.co.il: did not receive HSTS header
 getcarefirst.com: did not receive HSTS header
 getcolor.com: did not receive HSTS header
 getinternet.de: max-age too low: 0
 getlantern.org: did not receive HSTS header
 getlifti.com: did not receive HSTS header
 getlolaccount.com: could not connect to host
 getmassage.com.ng: did not receive HSTS header
 getsello.com: did not receive HSTS header
 getwashdaddy.com: could not connect to host
 gfhgiro.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 gfm.tech: could not connect to host
 gfournier.ca: could not connect to host
 gfwsb.ml: could not connect to host
-gheorghe-sarcov.ga: could not connect to host
 gheorghesarcov.ga: could not connect to host
 gheorghesarcov.tk: could not connect to host
 ghostblog.info: could not connect to host
+giakki.eu: could not connect to host
 gigacloud.org: did not receive HSTS header
 gilgaz.com: did not receive HSTS header
 gilly.berlin: did not receive HSTS header
 gingali.de: did not receive HSTS header
 gintenreiter-photography.com: could not connect to host
 gipsamsfashion.com: could not connect to host
 gistfy.com: could not connect to host
 github.party: could not connect to host
@@ -1267,17 +1280,16 @@ gold24.in: did not receive HSTS header
 goldendata.io: could not connect to host
 golocal-media.de: did not receive HSTS header
 gonzalosanchez.mx: did not receive HSTS header
 goodenough.nz: did not receive HSTS header
 goodwin43.ru: did not receive HSTS header
 google: could not connect to host (error ignored - included regardless)
 googlemail.com: did not receive HSTS header (error ignored - included regardless)
 googleplex.com: could not connect to host (error ignored - included regardless)
-goolok.com: did not receive HSTS header
 gorilla-gym.site: could not connect to host
 goto.google.com: did not receive HSTS header (error ignored - included regardless)
 gottcode.org: did not receive HSTS header
 govillemo.ca: did not receive HSTS header
 gowe.wang: could not connect to host
 gparent.org: did not receive HSTS header
 gpsfix.cz: could not connect to host
 gpstuner.com: did not receive HSTS header
@@ -1286,16 +1298,17 @@ grandmascookieblog.com: did not receive 
 grantedby.me: did not receive HSTS header
 graph.no: did not receive HSTS header
 gravity-net.de: could not connect to host
 graycell.net: could not connect to host
 grazetech.com: could not connect to host
 greenhillantiques.co.uk: did not receive HSTS header
 greenvines.com.tw: did not receive HSTS header
 gregorytlee.me: did not receive HSTS header
+gremots.com: did not receive HSTS header
 greplin.com: could not connect to host
 grigalanzsoftware.com: could not connect to host
 groups.google.com: did not receive HSTS header (error ignored - included regardless)
 grunex.com: did not receive HSTS header
 gryffin.ga: could not connect to host
 gryffin.ml: could not connect to host
 gryffin.tk: could not connect to host
 gsm-map.com: could not connect to host
@@ -1327,16 +1340,17 @@ hackerone-ext-adroll.com: could not conn
 hackerpoints.com: could not connect to host
 hackit.im: could not connect to host
 hadzic.co: could not connect to host
 hahayidu.org: could not connect to host
 haitschi.com: could not connect to host
 haitschi.de: could not connect to host
 haitschi.net: could not connect to host
 haitschi.org: could not connect to host
+hajnzic.at: could not connect to host
 haktec.de: could not connect to host
 haku.moe: could not connect to host
 hakugin.org: could not connect to host
 halo.red: did not receive HSTS header
 hancc.net: did not receive HSTS header
 hannover-banditen.de: did not receive HSTS header
 hao2taiwan.com: max-age too low: 0
 happyfabric.me: did not receive HSTS header
@@ -1376,29 +1390,27 @@ helpium.de: [Exception... "Component ret
 helpmebuild.com: did not receive HSTS header
 hemdal.se: could not connect to host
 hencagon.com: could not connect to host
 henriknoerr.com: could not connect to host
 hepteract.us: could not connect to host
 hermes-net.de: did not receive HSTS header
 herpaderp.net: did not receive HSTS header
 herzbotschaft.de: did not receive HSTS header
-hethely.ch: could not connect to host
 hex2013.com: did not receive HSTS header
 hibilog.com: could not connect to host
 hicn.gq: could not connect to host
 hiddendepth.ie: max-age too low: 0
 hiddenmail.xyz: could not connect to host
 highseer.com: did not receive HSTS header
 highsurf-miyazaki.com: did not receive HSTS header
 hiitcentre.com: did not receive HSTS header
 hikariempire.com: could not connect to host
 hillcity.org.nz: did not receive HSTS header
 hiphopconvention.nl: could not connect to host
-hipstercat.fr: could not connect to host
 hitoy.org: did not receive HSTS header
 hittipps.com: did not receive HSTS header
 hjw-kunstwerk.de: could not connect to host
 hmm.nyc: could not connect to host
 hn.search.yahoo.com: did not receive HSTS header
 hoerbuecher-und-hoerspiele.de: could not connect to host
 hogar123.es: could not connect to host
 hohm.in: could not connect to host
@@ -1424,46 +1436,48 @@ houkago-step.com: did not receive HSTS h
 housemaadiah.org: did not receive HSTS header
 housingstudents.org.uk: could not connect to host
 howrandom.org: could not connect to host
 hr-intranet.com: did not receive HSTS header
 hsir.me: could not connect to host
 hsts.date: could not connect to host
 http418.xyz: could not connect to host
 httpstatuscode418.xyz: could not connect to host
+httpswatch.com: could not connect to host
 hu.search.yahoo.com: did not receive HSTS header
 huarongdao.com: did not receive HSTS header
 hugosleep.com.au: did not receive HSTS header
 humblefinances.com: could not connect to host
 humeurs.net: could not connect to host
 humpteedumptee.in: did not receive HSTS header
 hurricanelabs.com: did not receive HSTS header
 hydra.ws: could not connect to host
 hyper69.com: did not receive HSTS header
 i-jp.net: could not connect to host
 i-partners.sk: did not receive HSTS header
 iamokay.nl: did not receive HSTS header
+iamusingtheinter.net: could not connect to host
 iamveto.com: could not connect to host
 iapws.com: did not receive HSTS header
 iban.is: could not connect to host
 iceloch.com: could not connect to host
 icewoman.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 ichnichtskaufmann.de: could not connect to host
-icij.org: did not receive HSTS header
 icreative.nl: did not receive HSTS header
 ictual.com: max-age too low: 0
 icusignature.com: did not receive HSTS header
 id-co.in: could not connect to host
 id-conf.com: could not connect to host
 idacmedia.com: max-age too low: 5184000
 ideal-envelopes.co.uk: did not receive HSTS header
 ideasmeetingpoint.com: could not connect to host
 ideation-inc.co.jp: did not receive HSTS header
 identitylabs.uk: did not receive HSTS header
 idgsupply.com: could not connect to host
+idlekernel.com: could not connect to host
 ie.search.yahoo.com: did not receive HSTS header
 ies-italia.it: did not receive HSTS header
 ies.id.lv: could not connect to host
 ifad.org: did not receive HSTS header
 ifleurs.com: could not connect to host
 ignatisd.gr: did not receive HSTS header
 igule.net: could not connect to host
 ihrlotto.de: could not connect to host
@@ -1590,24 +1604,23 @@ jamesbradach.com: did not receive HSTS h
 jamesburton.london: could not connect to host
 jamesbywater.me: could not connect to host
 jamesbywater.me.uk: could not connect to host
 jamesconroyfinn.com: did not receive HSTS header
 jamesdoell.com: could not connect to host
 jamesdoylephoto.com: did not receive HSTS header
 jamesmorrison.me: did not receive HSTS header
 jamourtney.com: could not connect to host
-jan27.org: did not receive HSTS header
+jan27.org: could not connect to host
 janario.me: could not connect to host
 janbrodda.de: max-age too low: 2592000
 jannyrijneveld.nl: did not receive HSTS header
 janus-engineering.de: did not receive HSTS header
 japlex.com: could not connect to host
 jaqen.ch: could not connect to host
-jardins-utopie.net: did not receive HSTS header
 jaredeberle.org: did not receive HSTS header
 jaroslavtrsek.cz: did not receive HSTS header
 jartza.org: could not connect to host
 jasmineconseil.com: did not receive HSTS header
 jasonrobinson.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 jasonroe.me: did not receive HSTS header
 jastoria.pl: did not receive HSTS header
 jayblock.com: did not receive HSTS header
@@ -1633,29 +1646,28 @@ jeugdkans.nl: did not receive HSTS heade
 jf.duckdns.org: could not connect to host
 jfmel.com: did not receive HSTS header
 jh-media.eu: could not connect to host
 jhburton.uk: could not connect to host
 jhejderup.me: could not connect to host
 jikken.de: could not connect to host
 jimas.eu: did not receive HSTS header
 jimmycai.org: max-age too low: 10368000
-jinbo123.com: did not receive HSTS header
+jinbo123.com: could not connect to host
 jkb.pics: could not connect to host
 jkbuster.com: could not connect to host
 jmdekker.it: could not connect to host
 joakimalgroy.com: could not connect to host
 jobmedic.com: did not receive HSTS header
 joedavison.me: could not connect to host
 johnbrownphotography.ch: did not receive HSTS header
 johners.me: could not connect to host
 johners.tech: did not receive HSTS header
 johnrom.com: did not receive HSTS header
 jonas-keidel.de: did not receive HSTS header
-jonas-thelemann.de: did not receive HSTS header
 jonasgroth.se: max-age too low: 2592000
 jonathan.ir: could not connect to host
 jonathancarter.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 jonn.me: could not connect to host
 joostbovee.nl: did not receive HSTS header
 joretapo.fr: could not connect to host
 josahrens.me: could not connect to host
 joshstroup.me: could not connect to host
@@ -1681,25 +1693,27 @@ justudin.com: did not receive HSTS heade
 juwairen.cn: could not connect to host
 jvoice.net: could not connect to host
 jwilsson.me: could not connect to host
 jxm.in: could not connect to host
 k-dev.de: could not connect to host
 ka-clan.com: could not connect to host
 kabuabc.com: did not receive HSTS header
 kabus.org: could not connect to host
+kachlikova2.cz: could not connect to host
 kadioglumakina.com.tr: did not receive HSTS header
 kahopoon.net: could not connect to host
 kaisers.de: did not receive HSTS header
 kalami.nl: did not receive HSTS header
 kamikano.com: could not connect to host
 kaplatz.is: could not connect to host
 kapucini.si: max-age too low: 0
 karaoketonight.com: could not connect to host
 katiaetdavid.fr: could not connect to host
+katka.info: could not connect to host
 katproxy.online: could not connect to host
 katproxy.site: could not connect to host
 katproxy.tech: could not connect to host
 kaufkraftkiel.de: could not connect to host
 kausch.at: could not connect to host
 kawaii.io: max-age too low: 2592000
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
@@ -1716,27 +1730,26 @@ kermadec.net: could not connect to host
 kernl.us: did not receive HSTS header
 kevinapease.com: could not connect to host
 keymaster.lookout.com: did not receive HSTS header
 kg-rating.com: did not receive HSTS header
 kgxtech.com: max-age too low: 2592000
 kickass.al: could not connect to host
 kid-dachau.de: did not receive HSTS header
 kiel-media.de: did not receive HSTS header
-kilianvalkhof.com: did not receive HSTS header
 kimpost.org: could not connect to host
 kinderwagen-test24.de: could not connect to host
 kingmanhall.org: could not connect to host
 kinnon.enterprises: could not connect to host
 kinogb.net: max-age too low: 0
-kiocloud.com: did not receive HSTS header
 kionetworks.com: did not receive HSTS header
 kirkforcongress.com: could not connect to host
 kirkforsenate.com: did not receive HSTS header
 kirkpatrickdavis.com: could not connect to host
+kisalt.im: did not receive HSTS header
 kissart.net: did not receive HSTS header
 kitakemon.com: could not connect to host
 kitchenpunx.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 kitk.at: could not connect to host
 kitsta.com: could not connect to host
 kiwiirc.com: max-age too low: 5256000
 kizil.net: could not connect to host
 kjaermaxi.me: did not receive HSTS header
@@ -1779,16 +1792,17 @@ kueulangtahunanak.net: could not connect
 kukal.cz: could not connect to host
 kummerlaender.eu: did not receive HSTS header
 kuppingercole.com: did not receive HSTS header
 kura.io: could not connect to host
 kurehun.org: could not connect to host
 kurz.pw: did not receive HSTS header
 kusaka-abacus.jp: max-age too low: 0
 kuschku.de: did not receive HSTS header
+kwbresidential.com: could not connect to host
 kweddingplanning.com: did not receive HSTS header
 kwok.tv: did not receive HSTS header
 kyanite.co: could not connect to host
 kylinj.com: could not connect to host
 kz.search.yahoo.com: did not receive HSTS header
 labaia.info: could not connect to host
 labina.com.tr: did not receive HSTS header
 laboiteapc.fr: did not receive HSTS header
@@ -1834,17 +1848,16 @@ lemp.io: did not receive HSTS header
 lenovogaming.com: did not receive HSTS header
 lentri.com: did not receive HSTS header
 leolana.com: could not connect to host
 leon-jaekel.com: could not connect to host
 leopold.email: could not connect to host
 leopoldina.net: did not receive HSTS header
 leopotamgroup.com: could not connect to host
 leovanna.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
-lepont.pl: could not connect to host
 lerner.moscow: did not receive HSTS header
 les-corsaires.net: could not connect to host
 lesdouceursdeliyana.com: could not connect to host
 letras.mus.br: did not receive HSTS header
 letustravel.tk: could not connect to host
 lfullerdesign.com: did not receive HSTS header
 lgiswa.com.au: did not receive HSTS header
 lgrs.com.au: did not receive HSTS header
@@ -1900,16 +1913,17 @@ lookzook.com: did not receive HSTS heade
 loophost.com.br: did not receive HSTS header
 lordjevington.co.uk: could not connect to host
 lostinsecurity.com: could not connect to host
 lothai.re: could not connect to host
 lotsencafe.de: did not receive HSTS header
 lovelifelovelive.com: could not connect to host
 lovelycorral.com: did not receive HSTS header
 loveto.at: could not connect to host
+loxis.be: could not connect to host
 lpak.nl: could not connect to host
 lrhsclubs.com: could not connect to host
 lrhstsa.com: could not connect to host
 ls-a.org: did not receive HSTS header
 lsky.cn: did not receive HSTS header
 lsp-sports.de: did not receive HSTS header
 lt.search.yahoo.com: did not receive HSTS header
 ltbytes.com: could not connect to host
@@ -1936,17 +1950,16 @@ m-ali.xyz: did not receive HSTS header
 m.gparent.org: could not connect to host
 m3-gmbh.de: did not receive HSTS header
 m82labs.com: did not receive HSTS header
 maarten.nyc: did not receive HSTS header
 maartenvandekamp.nl: did not receive HSTS header
 macbolo.com: could not connect to host
 macchaberrycream.com: could not connect to host
 macchedil.com: did not receive HSTS header
-macker.io: could not connect to host
 madars.org: did not receive HSTS header
 maddin.ga: could not connect to host
 madebymagnitude.com: did not receive HSTS header
 maderwin.com: did not receive HSTS header
 madusecurity.com: could not connect to host
 mafamane.com: could not connect to host
 mafiareturns.com: max-age too low: 2592000
 magenx.com: did not receive HSTS header
@@ -2027,40 +2040,41 @@ mein-gesundheitsmanager.com: did not rec
 meincenter-meinemeinung.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 meinebo.it: could not connect to host
 meizufans.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 melted.pw: could not connect to host
 members.mayfirst.org: did not receive HSTS header
 mensmaximus.de: did not receive HSTS header
 menthix.net: could not connect to host
 mereckas.com: did not receive HSTS header
+meredithkm.info: could not connect to host
 meritz.rocks: could not connect to host
 merson.me: could not connect to host
 meshok.ru: did not receive HSTS header
 mesmoque.com: did not receive HSTS header
 meta-db.com: could not connect to host
 metagrader.com: could not connect to host
 metebalci.com: could not connect to host
 meteosherbrooke.com: could not connect to host
 meteosky.net: could not connect to host
 metin2blog.de: did not receive HSTS header
 metis.pw: could not connect to host
 meuemail.pro: could not connect to host
 mexbt.com: could not connect to host
 mexicansbook.ru: could not connect to host
 mhict.nl: max-age too low: 0
 mia.to: could not connect to host
-michaelcullen.name: could not connect to host
 michaelfitzpatrickruth.com: could not connect to host
 michal-kral.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 michalborka.cz: could not connect to host
 micro-dv.ru: could not connect to host
 micro-rain-systems.com: did not receive HSTS header
 microme.ga: could not connect to host
 micropple.net: could not connect to host
+microvb.com: did not receive HSTS header
 midwestwomenworkers.org: did not receive HSTS header
 mightydicks.io: could not connect to host
 mightydicks.tech: could not connect to host
 mightysounds.cz: max-age too low: 0
 mijcorijneveld.nl: did not receive HSTS header
 mijn-email.org: could not connect to host
 mikaelemilsson.net: did not receive HSTS header
 mikeburns.com: did not receive HSTS header
@@ -2114,32 +2128,29 @@ mondopoint.com: could not connect to hos
 monitman.com: could not connect to host
 moon.lc: could not connect to host
 moparisthebest.biz: could not connect to host
 moparisthebest.info: could not connect to host
 moparscape.org: did not receive HSTS header
 mor.gl: could not connect to host
 morbitzer.de: did not receive HSTS header
 morethanadream.lv: could not connect to host
-morganino.it: could not connect to host
-moritz-baestlein.de: could not connect to host
 moriz.net: could not connect to host
 morningcalculation.com: could not connect to host
 morotech.com.br: max-age too low: 2592000
 morpork.xyz: could not connect to host
 mortgagecentersmo.com: did not receive HSTS header
 mostwuat.com: could not connect to host
 motherbase.io: could not connect to host
 motionpicturesolutions.com: could not connect to host
 motocyklovedily.cz: did not receive HSTS header
 motoryz.com: could not connect to host
 motoryz.nl: could not connect to host
 mottvd.com: could not connect to host
 moula.com.au: did not receive HSTS header
-mountainadventureseminars.com: did not receive HSTS header
 mountainmusicpromotions.com: did not receive HSTS header
 moviesabout.net: could not connect to host
 moy.cat: could not connect to host
 mozoa.net: did not receive HSTS header
 mp3juices.is: could not connect to host
 mqas.net: could not connect to host
 mrnonz.com: max-age too low: 0
 mrpopat.in: did not receive HSTS header
@@ -2193,46 +2204,45 @@ nagelfam.com: could not connect to host
 naiharngym.com: did not receive HSTS header
 najedlo.sk: did not receive HSTS header
 nakliyatsirketi.biz: could not connect to host
 nalifornia.com: did not receive HSTS header
 nametaken-cloud.duckdns.org: could not connect to host
 nanogeneinc.com: could not connect to host
 nargileh.nl: could not connect to host
 natalia.io: could not connect to host
-natalt.org: did not receive HSTS header
+natalt.org: could not connect to host
 nathanmfarrugia.com: did not receive HSTS header
 naturesystems.cz: max-age too low: 0
 natuurbehangnederland.nl: could not connect to host
 nauck.org: did not receive HSTS header
 nav.jobs: could not connect to host
 naval.tf: could not connect to host
 navigate-it-services.de: max-age too low: 0
 navjobs.com: did not receive HSTS header
 nbb.io: could not connect to host
 nbg-ha.de: could not connect to host
 ncc60205.info: could not connect to host
 nct.org.uk: max-age too low: 1
 nctx.co.uk: did not receive HSTS header
 near.st: did not receive HSTS header
 neel.ch: could not connect to host
-neer.io: could not connect to host
 neftaly.com: did not receive HSTS header
 neilgreen.net: did not receive HSTS header
 neko-system.com: did not receive HSTS header
 nemno.de: could not connect to host
 nemovement.org: did not receive HSTS header
 neonisi.com: could not connect to host
 nepustil.net: did not receive HSTS header
 neris.io: could not connect to host
 nerven.se: could not connect to host
 nestedquotes.ca: could not connect to host
 netbox.cc: could not connect to host
 netherwind.eu: could not connect to host
-netlilo.com: could not connect to host
+netlilo.com: did not receive HSTS header
 netsight.org: could not connect to host
 netsystems.pro: could not connect to host
 netzbit.de: could not connect to host
 netzpolitik.org: did not receive HSTS header
 netztest.at: did not receive HSTS header
 neueonlinecasino2016.com: could not connect to host
 neuralgic.net: could not connect to host
 neutralox.com: max-age too low: 3600
@@ -2253,23 +2263,25 @@ nibiisclaim.com: could not connect to ho
 nicestresser.fr: could not connect to host
 nicky.io: did not receive HSTS header
 nicolasbettag.me: did not receive HSTS header
 niconiconi.xyz: could not connect to host
 niconode.com: did not receive HSTS header
 nien.chat: could not connect to host
 nightx.uk: could not connect to host
 niho.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
+nikksno.io: could not connect to host
 nikomo.fi: could not connect to host
 ninchisho-online.com: did not receive HSTS header
 ninhs.org: could not connect to host
+ninux.ch: could not connect to host
 nippler.org: did not receive HSTS header
 nippombashi.net: did not receive HSTS header
 nipponcareers.com: did not receive HSTS header
-nkinka.de: could not connect to host
+nkinka.de: did not receive HSTS header
 nmctest.net: could not connect to host
 nnya.cat: did not receive HSTS header
 no17sifangjie.cc: could not connect to host
 nocallaghan.com: could not connect to host
 nodebrewery.com: could not connect to host
 nodetemple.com: could not connect to host
 noexpect.org: could not connect to host
 noima.com: did not receive HSTS header
@@ -2277,16 +2289,17 @@ nolatepayments.com: [Exception... "Compo
 nolte.work: could not connect to host
 nomorebytes.de: did not receive HSTS header
 nope.website: could not connect to host
 nopex.no: could not connect to host
 nopol.de: did not receive HSTS header
 norb.at: could not connect to host
 nosecretshop.com: did not receive HSTS header
 nossasenhoradaconceicao.com.br: could not connect to host
+notjustbitchy.com: could not connect to host
 nouvelle-vague-saint-cast.fr: did not receive HSTS header
 novacoast.com: did not receive HSTS header
 novatrucking.de: could not connect to host
 nowak.ninja: did not receive HSTS header
 noworrywp.com: could not connect to host
 np.search.yahoo.com: did not receive HSTS header
 npol.de: did not receive HSTS header
 ntbs.pro: could not connect to host
@@ -2335,16 +2348,17 @@ okutama.in.th: could not connect to host
 oliver-pietsch.de: did not receive HSTS header
 oliverdunk.com: did not receive HSTS header
 ollehbizev.co.kr: could not connect to host
 ollie.io: did not receive HSTS header
 omgaanmetidealen.com: could not connect to host
 ominto.com: max-age too low: 0
 omniti.com: max-age too low: 1
 omquote.gq: could not connect to host
+ondrej.org: could not connect to host
 oneb4nk.com: could not connect to host
 onefour.co: could not connect to host
 oneminute.io: did not receive HSTS header
 onepluscamps.com: did not receive HSTS header
 onespiritinc.com: did not receive HSTS header
 onet.space: could not connect to host
 onewpst.com: could not connect to host
 oniichan.us: did not receive HSTS header
@@ -2379,16 +2393,17 @@ oprbox.com: could not connect to host
 opsbears.com: did not receive HSTS header
 optenhoefel.de: could not connect to host
 optometriepunt.nl: did not receive HSTS header
 optumrxhealthstore.com: did not receive HSTS header
 oracaodocredo.com.br: could not connect to host
 orbiosales.com: could not connect to host
 orbitcom.de: max-age too low: 0
 orbograph-hrcm.com: did not receive HSTS header
+ordr.mobi: could not connect to host
 orioncustompcs.com: could not connect to host
 orionfcu.com: did not receive HSTS header
 orleika.ml: could not connect to host
 osaiyuwu.com: could not connect to host
 oshell.me: did not receive HSTS header
 oslfoundation.org: could not connect to host
 ossan-kobe-gourmet.com: did not receive HSTS header
 ossbinaries.com: could not connect to host
@@ -2413,30 +2428,33 @@ ownmovies.fr: could not connect to host
 oxygenabsorbers.com: did not receive HSTS header
 oxynux.fr: could not connect to host
 p.linode.com: could not connect to host
 p8r.de: did not receive HSTS header
 pa.search.yahoo.com: did not receive HSTS header
 packlane.com: did not receive HSTS header
 pader-deko.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 paestbin.com: could not connect to host
+pagerate.io: did not receive HSTS header
 pagetoimage.com: could not connect to host
 paisaone.com: did not receive HSTS header
 paku.me: could not connect to host
 pamsoft.pl: max-age too low: 0
 panaceallc.net: could not connect to host
 panelomix.net: could not connect to host
 pantsu.cat: did not receive HSTS header
 papeda.net: did not receive HSTS header
 papercard.co.uk: did not receive HSTS header
+paperwork.co.za: could not connect to host
 papierniak.net: could not connect to host
 parent5446.us: could not connect to host
 parentmail.co.uk: did not receive HSTS header
 particonpsplus.it: could not connect to host
 partijtjevoordevrijheid.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
+partirkyoto.jp: did not receive HSTS header
 partyvan.it: could not connect to host
 partyvan.moe: could not connect to host
 partyvan.nl: could not connect to host
 partyvan.se: could not connect to host
 passwordbox.com: did not receive HSTS header
 passwordrevelator.net: did not receive HSTS header
 passwords.google.com: did not receive HSTS header (error ignored - included regardless)
 pastaf.com: could not connect to host
@@ -2493,16 +2511,17 @@ piligrimname.com: could not connect to h
 pinesandneedles.com: did not receive HSTS header
 pippen.io: could not connect to host
 pir9.com: max-age too low: 2592000
 piratedb.com: could not connect to host
 piratedot.com: could not connect to host
 piratenlogin.de: could not connect to host
 pirati.cz: max-age too low: 604800
 pirlitu.com: did not receive HSTS header
+pisexy.me: did not receive HSTS header
 pisidia.de: could not connect to host
 pittonpreschool.com: did not receive HSTS header
 pixel.google.com: did not receive HSTS header (error ignored - included regardless)
 pixelcode.com.au: max-age too low: 0
 pixelhero.co.uk: did not receive HSTS header
 pixi.me: could not connect to host
 pj83.duckdns.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 pk.search.yahoo.com: did not receive HSTS header
@@ -2510,39 +2529,41 @@ placollection.org: could not connect to 
 platform.lookout.com: could not connect to host
 play.google.com: did not receive HSTS header (error ignored - included regardless)
 playmaker.io: could not connect to host
 playnation.io: did not receive HSTS header
 plogable.co: could not connect to host
 plothost.com: did not receive HSTS header
 ploup.net: could not connect to host
 pmnts.io: could not connect to host
-po.gl: could not connect to host
+po.gl: did not receive HSTS header
 poiema.com.sg: did not receive HSTS header
 pol.in.th: could not connect to host
 poleartschool.com: could not connect to host
 polimat.org: could not connect to host
 politically-incorrect.xyz: could not connect to host
 politologos.org: could not connect to host
 polypho.nyc: could not connect to host
 pompompoes.com: could not connect to host
 pontokay.com.br: did not receive HSTS header
 pontualcomp.com: max-age too low: 2592000
 poolsandstuff.com: did not receive HSTS header
 poris.web.id: did not receive HSTS header
 portalplatform.net: did not receive HSTS header
+postcodewise.co.uk: did not receive HSTS header
 posterspy.com: did not receive HSTS header
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
-powerplannerapp.com: did not receive HSTS header
+powerplannerapp.com: could not connect to host
 powerxequality.com: could not connect to host
 ppr-truby.ru: could not connect to host
 pr.search.yahoo.com: did not receive HSTS header
+praguepsychology.cz: did not receive HSTS header
 prefontaine.name: could not connect to host
 prego-shop.de: did not receive HSTS header
 preissler.co.uk: could not connect to host
 prelist.org: did not receive HSTS header
 pressfreedomfoundation.org: did not receive HSTS header
 preworkout.me: could not connect to host
 prezola.com: did not receive HSTS header
 priolkar.com: did not receive HSTS header
@@ -2588,18 +2609,20 @@ py.search.yahoo.com: did not receive HST
 pypi-mirrors.org: could not connect to host
 pypi-status.org: could not connect to host
 pyplo.org: did not receive HSTS header
 pypt.lt: did not receive HSTS header
 q2.si: could not connect to host
 qingxuan.info: max-age too low: 864000
 qinxi1992.com: did not receive HSTS header
 qiwi.be: did not receive HSTS header
+qorm.co.uk: did not receive HSTS header
 qrara.net: did not receive HSTS header
 qrlending.com: did not receive HSTS header
+qtxh.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 quail.solutions: could not connect to host
 quantacloud.ch: could not connect to host
 quantumcourse.org: did not receive HSTS header
 queercoders.com: did not receive HSTS header
 quemmeliga.com: could not connect to host
 questsandrewards.com: could not connect to host
 quranserver.net: could not connect to host
 qvi.st: did not receive HSTS header
@@ -2656,17 +2679,16 @@ renteater.com: could not connect to host
 replacemychina.com: did not receive HSTS header
 reprolife.co.uk: max-age too low: 0
 res-rheingau.de: did not receive HSTS header
 res42.com: did not receive HSTS header
 reserve-online.net: did not receive HSTS header
 respice.xyz: could not connect to host
 restchart.com: did not receive HSTS header
 revello.org: did not receive HSTS header
-revensoftware.com: could not connect to host
 reverie.pw: could not connect to host
 reviews.anime.my: could not connect to host
 revtut.net: did not receive HSTS header
 rewardstock.com: max-age too low: 0
 rewrite3.com: could not connect to host
 rgavmf.ru: did not receive HSTS header
 rhapsodhy.hu: could not connect to host
 rhdigital.pro: could not connect to host
@@ -2730,17 +2752,16 @@ runawebinar.nl: could not connect to hos
 runementors.com: could not connect to host
 runtondev.com: did not receive HSTS header
 ruqu.nl: could not connect to host
 rusadmin.biz: did not receive HSTS header
 rusl.me: could not connect to host
 russmarshall.com: could not connect to host
 ruxit.com: did not receive HSTS header
 rw.search.yahoo.com: did not receive HSTS header
-rxbusiness.com: could not connect to host
 rxprep.com: did not receive HSTS header
 rxv.cc: could not connect to host
 ryansmithphotography.com: did not receive HSTS header
 ryanteck.uk: did not receive HSTS header
 saba-piserver.info: could not connect to host
 safematix.com: could not connect to host
 sageth.com: max-age too low: 0
 sah3.net: could not connect to host
@@ -2785,26 +2806,28 @@ scooshonline.co.uk: did not receive HSTS
 scotbirchfield.com: did not receive HSTS header
 scrambl.is: could not connect to host
 scrambler.in: could not connect to host
 scrapings.net: could not connect to host
 screenresolution.space: could not connect to host
 scribe.systems: could not connect to host
 script.google.com: did not receive HSTS header (error ignored - included regardless)
 scriptict.nl: could not connect to host
+scrumstack.co.uk: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: did not receive HSTS header
 sdsl-speedtest.de: could not connect to host
 search-one.de: did not receive HSTS header
 sebster.com: did not receive HSTS header
 secandtech.com: could not connect to host
 sectia22.ro: could not connect to host
 secure-games.us: could not connect to host
 secureradio.net: could not connect to host
 securesuisse.ch: could not connect to host
+securetronic.ch: could not connect to host
 security.google.com: did not receive HSTS header (error ignored - included regardless)
 securityinet.biz: did not receive HSTS header
 securityinet.net: did not receive HSTS header
 securityinet.org.il: did not receive HSTS header
 securitysoapbox.com: could not connect to host
 securiviera.ch: did not receive HSTS header
 seedbox.fr: did not receive HSTS header
 seedboxers.net: could not connect to host
@@ -2842,25 +2865,24 @@ setuid.de: could not connect to host
 setuid.io: did not receive HSTS header
 seyahatsagliksigortalari.com: could not connect to host
 shadoom.com: did not receive HSTS header
 shadowmorph.info: did not receive HSTS header
 shadowsocks.net: could not connect to host
 shakepeers.org: did not receive HSTS header
 shakespearesolutions.com.au: did not receive HSTS header
 shanesage.com: could not connect to host
-shansing.com: did not receive HSTS header
-shansing.space: did not receive HSTS header
 shaobin.wang: could not connect to host
 sharescope.co.uk: max-age too low: 14400
 shareworx.net: could not connect to host
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shawnh.net: could not connect to host
 shellsec.pw: did not receive HSTS header
+shemissed.me: could not connect to host
 shibe.club: could not connect to host
 shiftins.com: did not receive HSTS header
 shiinko.com: could not connect to host
 shinebijoux.com.br: could not connect to host
 shinju.moe: could not connect to host
 shiona.xyz: did not receive HSTS header
 shocksrv.com: did not receive HSTS header
 shooshosha.com: did not receive HSTS header
@@ -2870,17 +2892,16 @@ shops.neonisi.com: could not connect to 
 shortr.li: could not connect to host
 showkeeper.tv: did not receive HSTS header
 shukatsu-note.com: could not connect to host
 shv25.se: could not connect to host
 shwongacc.com: could not connect to host
 siammedia.co: could not connect to host
 siddhant.me: could not connect to host
 sifls.com: could not connect to host
-silaslova-ekb.ru: could not connect to host
 silentcircle.org: could not connect to host
 silentundo.org: could not connect to host
 silicagelpackets.ca: did not receive HSTS header
 silver-drachenkrieger.de: did not receive HSTS header
 silverhome.ninja: could not connect to host
 silverpvp.com: could not connect to host
 silverwind.io: did not receive HSTS header
 simbast.com: could not connect to host
@@ -2943,17 +2964,17 @@ soccergif.com: could not connect to host
 soci.ml: did not receive HSTS header
 socialbillboard.com: could not connect to host
 socialdevelop.biz: did not receive HSTS header
 socialhams.net: did not receive HSTS header
 socialhead.io: could not connect to host
 socialspirit.com.br: did not receive HSTS header
 sockeye.cc: could not connect to host
 socomponents.co.uk: did not receive HSTS header
-sogeek.me: could not connect to host
+sogeek.me: did not receive HSTS header
 solidfuelappliancespares.co.uk: did not receive HSTS header
 solinter.com.br: did not receive HSTS header
 soll-i.ch: did not receive HSTS header
 solsystems.ru: could not connect to host
 someshit.xyz: could not connect to host
 somethingnew.xyz: did not receive HSTS header
 songzhuolun.com: did not receive HSTS header
 sonic.sk: max-age too low: 0
@@ -3046,17 +3067,16 @@ str0.at: did not receive HSTS header
 strasweb.fr: did not receive HSTS header
 streamingmagazin.de: could not connect to host
 streams.dyndns.org: could not connect to host
 strictlysudo.com: could not connect to host
 stroeercrm.de: could not connect to host
 strongest-privacy.com: could not connect to host
 stuartbaxter.co: could not connect to host
 student-scientist.org: did not receive HSTS header
-student.andover.edu: did not receive HSTS header
 studentresearcher.org: did not receive HSTS header
 studentskydenik.cz: could not connect to host
 studenttravel.cz: did not receive HSTS header
 studybay.com: did not receive HSTS header
 studydrive.net: did not receive HSTS header
 stugb.de: did not receive HSTS header
 stupendous.net: could not connect to host
 stw-group.at: could not connect to host
@@ -3147,23 +3167,21 @@ techpointed.com: could not connect to ho
 techvalue.gr: did not receive HSTS header
 tegelsensanitaironline.nl: did not receive HSTS header
 tekshrek.com: max-age too low: 0
 temehu.com: did not receive HSTS header
 tempcraft.net: could not connect to host
 tendertool.nl: could not connect to host
 tenni.xyz: could not connect to host
 tensionup.com: could not connect to host
-tepid.org: could not connect to host
 terrax.berlin: could not connect to host
 terrax.info: could not connect to host
 testandroid.xyz: could not connect to host
 testbawks.com: did not receive HSTS header
 testnode.xyz: could not connect to host
-teunstuinposters.nl: did not receive HSTS header
 textoplano.xyz: could not connect to host
 textracer.dk: could not connect to host
 tezcam.tk: could not connect to host
 tfcoms-sp-tracker-client.azurewebsites.net: could not connect to host
 tffans.com: did not receive HSTS header
 tfl.lu: did not receive HSTS header
 tgr.re: could not connect to host
 thai.land: could not connect to host
@@ -3181,17 +3199,17 @@ thehiddenbay.net: could not connect to h
 thehistory.me: could not connect to host
 thehonorguard.org: did not receive HSTS header
 theinvisibletrailer.com: could not connect to host
 themarble.co: could not connect to host
 themerchandiser.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 themicrocapital.com: could not connect to host
 themillerslive.com: could not connect to host
 theodorejones.info: could not connect to host
-theojones.name: could not connect to host
+theojones.name: did not receive HSTS header
 thepartywarehouse.co.uk: did not receive HSTS header
 thepiratebay.al: could not connect to host
 thepiratebay.tech: could not connect to host
 therapyportal.com: did not receive HSTS header
 therewill.be: could not connect to host
 thestack.xyz: could not connect to host
 thestagchorleywood.co.uk: did not receive HSTS header
 thetomharling.com: max-age too low: 86400
@@ -3233,16 +3251,17 @@ tkarstens.de: did not receive HSTS heade
 tlo.hosting: could not connect to host
 tlo.network: could not connect to host
 tls.li: could not connect to host
 tm-solutions.eu: could not connect to host
 tmitchell.io: could not connect to host
 tmprod.com: did not receive HSTS header
 tncnanet.com.br: could not connect to host
 tnrsca.jp: did not receive HSTS header
+toast.al: could not connect to host
 tobiasmathes.com: could not connect to host
 tobiasmathes.name: could not connect to host
 tobiasofficial.at: could not connect to host
 todo.is: did not receive HSTS header
 todobazar.es: could not connect to host
 tokyopopline.com: did not receive HSTS header
 tollmanz.com: did not receive HSTS header
 tomeara.net: could not connect to host
@@ -3268,16 +3287,17 @@ toucedo.de: could not connect to host
 tourpeer.com: did not receive HSTS header
 toxme.se: did not receive HSTS header
 tpbcdn.com: could not connect to host
 tpe-edu.com: could not connect to host
 track.plus: could not connect to host
 tracktivity.com.au: did not receive HSTS header
 tradingcentre.com.au: did not receive HSTS header
 tradinghope.com: could not connect to host
+traeningsprojekt.dk: did not receive HSTS header
 translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
 transportal.sk: did not receive HSTS header
 trendberry.ru: did not receive HSTS header
 trinityaffirmations.com: max-age too low: 0
 trinitycore.org: max-age too low: 2592000
 tripdelta.com: did not receive HSTS header
 trixies-wish.nz: could not connect to host
 trusitio.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
@@ -3307,23 +3327,25 @@ twinkseason.xyz: could not connect to ho
 twist.party: could not connect to host
 twogo.com: did not receive HSTS header
 twolinepassbrewing.com: could not connect to host
 tx041cap.org: could not connect to host
 txclimbers.com: could not connect to host
 txf.pw: could not connect to host
 ty2u.com: did not receive HSTS header
 tylian.net: max-age too low: 0
+typingrevolution.com: did not receive HSTS header
 tyrelius.com: did not receive HSTS header
 tyroproducts.eu: did not receive HSTS header
 tzappa.net: could not connect to host
 u-blox.com: did not receive HSTS header
 ua.search.yahoo.com: did not receive HSTS header
 ubicloud.de: could not connect to host
 ublox.com: did not receive HSTS header
+ubtce.com: could not connect to host
 ubuntuhot.com: did not receive HSTS header
 uega.net: did not receive HSTS header
 ufotable.uk: could not connect to host
 ui8.net: did not receive HSTS header
 ukas.com: did not receive HSTS header
 ukrgadget.com: could not connect to host
 ulmo.dk: could not connect to host
 ultros.io: did not receive HSTS header
@@ -3357,16 +3379,17 @@ upr.com.ua: could not connect to host
 uprotect.it: could not connect to host
 upstats.eu: could not connect to host
 urandom.eu.org: did not receive HSTS header
 url.rw: could not connect to host
 urphp.com: could not connect to host
 us-immigration.com: did not receive HSTS header
 usaa.com: did not receive HSTS header
 uscitizenship.info: did not receive HSTS header
+use.be: did not receive HSTS header
 used-in.jp: did not receive HSTS header
 usercare.com: did not receive HSTS header
 ustr.gov: max-age too low: 86400
 utumno.ch: could not connect to host
 uy.search.yahoo.com: did not receive HSTS header
 uz.search.yahoo.com: did not receive HSTS header
 uzmandroid.com: did not receive HSTS header
 uzmandroid.net: did not receive HSTS header
@@ -3402,24 +3425,24 @@ veryhax.de: could not connect to host
 vfree.org: could not connect to host
 vglimg.com: could not connect to host
 vhost.co.id: could not connect to host
 viadeux.com: could not connect to host
 videnskabsklubben.dk: did not receive HSTS header
 videomuz.com: did not receive HSTS header
 vidz.ga: could not connect to host
 vieaw.com: could not connect to host
-viewsea.com: did not receive HSTS header
 viktorsvantesson.net: did not receive HSTS header
 vincentkooijman.at: did not receive HSTS header
 vincentkooijman.nl: did not receive HSTS header
 vintageheartcoffee.com: did not receive HSTS header
 vio.no: did not receive HSTS header
 viperdns.com: could not connect to host
 vipmusic.ga: could not connect to host
+vipnettikasinoklubi.com: could not connect to host
 vissanum.com: did not receive HSTS header
 vistarait.com: did not receive HSTS header
 viva-french.com: did not receive HSTS header
 vlora.city: could not connect to host
 vm0.eu: did not receive HSTS header
 vmrdev.com: could not connect to host
 voceinveste.com: did not receive HSTS header
 voicesuk.co.uk: did not receive HSTS header
@@ -3449,17 +3472,17 @@ wallsblog.dk: could not connect to host
 walnutgaming.co.uk: could not connect to host
 wanban.io: could not connect to host
 wangqiliang.xn--fiqs8s: did not receive HSTS header
 wangzuan168.cc: did not receive HSTS header
 wapjt.cn: could not connect to host
 warandpeace.xyz: could not connect to host
 warhistoryonline.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 warmlyyours.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
-warped.com: did not receive HSTS header
+warped.com: could not connect to host
 wassim.is: could not connect to host
 watchium.com: did not receive HSTS header
 watsonhall.uk: could not connect to host
 wave.is: could not connect to host
 wavefrontsystemstech.com: could not connect to host
 wealthfactory.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 wear2work.nl: did not receive HSTS header
 weaverhairextensions.nl: could not connect to host
@@ -3495,32 +3518,32 @@ westendzone.com: max-age too low: 0
 westerhoud.nl: did not receive HSTS header
 wettbuero.de: did not receive HSTS header
 wetten.eu: did not receive HSTS header
 wettertoertchen.com: did not receive HSTS header
 wetttipps.com: did not receive HSTS header
 wetttipps.de: did not receive HSTS header
 wevahoo.com: could not connect to host
 wftda.com: did not receive HSTS header
-whats.io: could not connect to host
+whatnext.limited: did not receive HSTS header
+whats.io: did not receive HSTS header
 whatsstalk.me: could not connect to host
 when-release.com: did not receive HSTS header
 whereisjason.com: could not connect to host
 whiterabbitcakery.com: could not connect to host
-whitestagforge.com: could not connect to host
+whitestagforge.com: did not receive HSTS header
 whoclicks.net: could not connect to host
 whoisapi.online: could not connect to host
 wholebites.com: did not receive HSTS header
 whoshotya.de: did not receive HSTS header
 whysuck.com: could not connect to host
 whyworldhot.com: could not connect to host
 wienholding.at: max-age too low: 0
 wieninternational.at: could not connect to host
 wiire.me: could not connect to host
-wikiclash.info: could not connect to host
 wikidsystems.com: could not connect to host
 wilf1rst.com: could not connect to host
 william.si: did not receive HSTS header
 willosagiede.com: did not receive HSTS header
 winclient.cn: did not receive HSTS header
 windhaven.nl: could not connect to host
 winecodeavocado.com: did not receive HSTS header
 winghill.com: could not connect to host
@@ -3582,32 +3605,34 @@ www.neonisi.com: could not connect to ho
 www.paycheckrecords.com: did not receive HSTS header
 www.rme.li: did not receive HSTS header
 www.sandbox.mydigipass.com: could not connect to host
 www.surfeasy.com: did not receive HSTS header
 www.zenpayroll.com: did not receive HSTS header
 www3.info: did not receive HSTS header
 wxukang.cn: could not connect to host
 wzrd.in: could not connect to host
+x.st: could not connect to host
 x2w.io: could not connect to host
 xa.search.yahoo.com: did not receive HSTS header
 xandocs.com: could not connect to host
 xatr0z.org: could not connect to host
 xavierbarroso.com: could not connect to host
 xcoop.me: could not connect to host
 xellos.ga: could not connect to host
 xellos.ml: could not connect to host
 xenesisziarovky.sk: could not connect to host
 xett.com: did not receive HSTS header
 xf-liam.com: could not connect to host
 xfive.de: did not receive HSTS header
 xho.me: could not connect to host
 xiaody.me: could not connect to host
 xiaolvmu.me: could not connect to host
 xiaoxiao.im: did not receive HSTS header
+xinbiji.cn: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 xisa.it: could not connect to host
 xiyu.moe: could not connect to host
 xmr.my: could not connect to host
 xn--4dbjwf8c.cf: could not connect to host
 xn--4dbjwf8c.ga: could not connect to host
 xn--4dbjwf8c.gq: could not connect to host
 xn--4dbjwf8c.tk: could not connect to host
 xn--79q87uvkclvgd56ahq5a.net: did not receive HSTS header
@@ -3660,16 +3685,17 @@ yoloprod.fr: could not connect to host
 yoloseo.com: could not connect to host
 youcontrol.ru: could not connect to host
 yourstrongbox.com: could not connect to host
 yout.com: max-age too low: 60000
 ypiresia.fr: could not connect to host
 yu.gg: did not receive HSTS header
 yuan.ga: did not receive HSTS header
 yuhen.ru: did not receive HSTS header
+yukontec.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 yunzhu.li: did not receive HSTS header
 yunzhu.org: could not connect to host
 yzal.io: could not connect to host
 z33.ch: did not receive HSTS header
 z3liff.com: could not connect to host
 z3liff.net: could not connect to host
 za.search.yahoo.com: did not receive HSTS header
 zadieheimlich.com: did not receive HSTS header
@@ -3705,12 +3731,11 @@ zoneminder.com: did not receive HSTS hea
 zoo24.de: did not receive HSTS header
 zoomingin.net: max-age too low: 2592000
 zoznamrealit.sk: did not receive HSTS header
 zqhong.com: could not connect to host
 zrn.in: did not receive HSTS header
 zscales.com: could not connect to host
 ztan.tk: could not connect to host
 zten.org: could not connect to host
-zulu7.com: could not connect to host
 zvncloud.com: did not receive HSTS header
 zwy.me: did not receive HSTS header
 zyf.pw: could not connect to host
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * 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(1489237412947000);
+const PRTime gPreloadListExpirationTime = INT64_C(1489328410522000);
 
 static const char kSTSHostTable[] = {
   /* "007sascha.de", true */ '0', '0', '7', 's', 'a', 's', 'c', 'h', 'a', '.', 'd', 'e', '\0',
   /* "00f.net", true */ '0', '0', 'f', '.', 'n', 'e', 't', '\0',
   /* "01electronica.com.ar", true */ '0', '1', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 'a', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "01seguridad.com.ar", true */ '0', '1', 's', 'e', 'g', 'u', 'r', 'i', 'd', 'a', 'd', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "050media.nl", true */ '0', '5', '0', 'm', 'e', 'd', 'i', 'a', '.', 'n', 'l', '\0',
   /* "0513c.com", true */ '0', '5', '1', '3', 'c', '.', 'c', 'o', 'm', '\0',
@@ -84,17 +84,16 @@ static const char kSTSHostTable[] = {
   /* "1stcapital.com.sg", true */ '1', 's', 't', 'c', 'a', 'p', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "1ststop.co.uk", true */ '1', 's', 't', 's', 't', 'o', 'p', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "1three1.net", true */ '1', 't', 'h', 'r', 'e', 'e', '1', '.', 'n', 'e', 't', '\0',
   /* "1xcess.com", true */ '1', 'x', 'c', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "1years.cc", true */ '1', 'y', 'e', 'a', 'r', 's', '.', 'c', 'c', '\0',
   /* "2-cpu.de", true */ '2', '-', 'c', 'p', 'u', '.', 'd', 'e', '\0',
   /* "2.wtf", true */ '2', '.', 'w', 't', 'f', '\0',
   /* "2048game.co.uk", true */ '2', '0', '4', '8', 'g', 'a', 'm', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
-  /* "20hs.cn", true */ '2', '0', 'h', 's', '.', 'c', 'n', '\0',
   /* "21.co.uk", true */ '2', '1', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "247healthshop.com", true */ '2', '4', '7', 'h', 'e', 'a', 'l', 't', 'h', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "247loan.com", true */ '2', '4', '7', 'l', 'o', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "24ip.com", true */ '2', '4', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "24ip.de", true */ '2', '4', 'i', 'p', '.', 'd', 'e', '\0',
   /* "24ip.fr", true */ '2', '4', 'i', 'p', '.', 'f', 'r', '\0',
   /* "2600hq.com", true */ '2', '6', '0', '0', 'h', 'q', '.', 'c', 'o', 'm', '\0',
   /* "28spots.net", true */ '2', '8', 's', 'p', 'o', 't', 's', '.', 'n', 'e', 't', '\0',
@@ -143,16 +142,17 @@ static const char kSTSHostTable[] = {
   /* "4500.co.il", true */ '4', '5', '0', '0', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "4cclothing.com", true */ '4', 'c', 'c', 'l', 'o', 't', 'h', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "4d2.xyz", true */ '4', 'd', '2', '.', 'x', 'y', 'z', '\0',
   /* "4g-server.eu", false */ '4', 'g', '-', 's', 'e', 'r', 'v', 'e', 'r', '.', 'e', 'u', '\0',
   /* "4loc.us", true */ '4', 'l', 'o', 'c', '.', 'u', 's', '\0',
   /* "4ourty2.org", true */ '4', 'o', 'u', 'r', 't', 'y', '2', '.', 'o', 'r', 'g', '\0',
   /* "4project.co.il", true */ '4', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "4th-ave-studio.com", true */ '4', 't', 'h', '-', 'a', 'v', 'e', '-', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
+  /* "4vf.de", true */ '4', 'v', 'f', '.', 'd', 'e', '\0',
   /* "4w-performers.link", false */ '4', 'w', '-', 'p', 'e', 'r', 'f', 'o', 'r', 'm', 'e', 'r', 's', '.', 'l', 'i', 'n', 'k', '\0',
   /* "4winds.pt", true */ '4', 'w', 'i', 'n', 'd', 's', '.', 'p', 't', '\0',
   /* "4x.fi", true */ '4', 'x', '.', 'f', 'i', '\0',
   /* "500p.xyz", true */ '5', '0', '0', 'p', '.', 'x', 'y', 'z', '\0',
   /* "50plusnet.nl", true */ '5', '0', 'p', 'l', 'u', 's', 'n', 'e', 't', '.', 'n', 'l', '\0',
   /* "540.co", false */ '5', '4', '0', '.', 'c', 'o', '\0',
   /* "54below.com", true */ '5', '4', 'b', 'e', 'l', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "54bf.com", true */ '5', '4', 'b', 'f', '.', 'c', 'o', 'm', '\0',
@@ -232,16 +232,17 @@ static const char kSTSHostTable[] = {
   /* "abuse.io", true */ 'a', 'b', 'u', 's', 'e', '.', 'i', 'o', '\0',
   /* "abyssproject.net", true */ 'a', 'b', 'y', 's', 's', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'n', 'e', 't', '\0',
   /* "ac-town.com", true */ 'a', 'c', '-', 't', 'o', 'w', 'n', '.', 'c', 'o', 'm', '\0',
   /* "acabadosboston.com", true */ 'a', 'c', 'a', 'b', 'a', 'd', 'o', 's', 'b', 'o', 's', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "academialowcost.com.br", true */ 'a', 'c', 'a', 'd', 'e', 'm', 'i', 'a', 'l', 'o', 'w', 'c', 'o', 's', 't', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "accelight.co.jp", true */ 'a', 'c', 'c', 'e', 'l', 'i', 'g', 'h', 't', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "access-sofia.org", true */ 'a', 'c', 'c', 'e', 's', 's', '-', 's', 'o', 'f', 'i', 'a', '.', 'o', 'r', 'g', '\0',
   /* "accessacademies.org", true */ 'a', 'c', 'c', 'e', 's', 's', 'a', 'c', 'a', 'd', 'e', 'm', 'i', 'e', 's', '.', 'o', 'r', 'g', '\0',
+  /* "accounts-p.com", true */ 'a', 'c', 'c', 'o', 'u', 'n', 't', 's', '-', 'p', '.', 'c', 'o', 'm', '\0',
   /* "accounts.firefox.com", true */ 'a', 'c', 'c', 'o', 'u', 'n', 't', 's', '.', 'f', 'i', 'r', 'e', 'f', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "accounts.google.com", true */ 'a', 'c', 'c', 'o', 'u', 'n', 't', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "accwing.com", true */ 'a', 'c', 'c', 'w', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "acelpb.com", true */ 'a', 'c', 'e', 'l', 'p', 'b', '.', 'c', 'o', 'm', '\0',
   /* "acg.sb", true */ 'a', 'c', 'g', '.', 's', 'b', '\0',
   /* "acgmoon.org", true */ 'a', 'c', 'g', 'm', 'o', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "acheconcursos.com.br", true */ 'a', 'c', 'h', 'e', 'c', 'o', 'n', 'c', 'u', 'r', 's', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "achenar.net", true */ 'a', 'c', 'h', 'e', 'n', 'a', 'r', '.', 'n', 'e', 't', '\0',
@@ -378,17 +379,16 @@ static const char kSTSHostTable[] = {
   /* "ahero4all.org", true */ 'a', 'h', 'e', 'r', 'o', '4', 'a', 'l', 'l', '.', 'o', 'r', 'g', '\0',
   /* "ahkubiak.ovh", true */ 'a', 'h', 'k', 'u', 'b', 'i', 'a', 'k', '.', 'o', 'v', 'h', '\0',
   /* "ahmad.works", true */ 'a', 'h', 'm', 'a', 'd', '.', 'w', 'o', 'r', 'k', 's', '\0',
   /* "ahmerjamilkhan.org", true */ 'a', 'h', 'm', 'e', 'r', 'j', 'a', 'm', 'i', 'l', 'k', 'h', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "ahoyconference.com", true */ 'a', 'h', 'o', 'y', 'c', 'o', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ahwatukeefoothillsmontessori.com", true */ 'a', 'h', 'w', 'a', 't', 'u', 'k', 'e', 'e', 'f', 'o', 'o', 't', 'h', 'i', 'l', 'l', 's', 'm', 'o', 'n', 't', 'e', 's', 's', 'o', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "ahxxm.com", true */ 'a', 'h', 'x', 'x', 'm', '.', 'c', 'o', 'm', '\0',
   /* "aia.de", true */ 'a', 'i', 'a', '.', 'd', 'e', '\0',
-  /* "aidanmontare.net", true */ 'a', 'i', 'd', 'a', 'n', 'm', 'o', 'n', 't', 'a', 'r', 'e', '.', 'n', 'e', 't', '\0',
   /* "aidanwoods.com", true */ 'a', 'i', 'd', 'a', 'n', 'w', 'o', 'o', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "aids.gov", true */ 'a', 'i', 'd', 's', '.', 'g', 'o', 'v', '\0',
   /* "aie.de", true */ 'a', 'i', 'e', '.', 'd', 'e', '\0',
   /* "aiesecarad.ro", true */ 'a', 'i', 'e', 's', 'e', 'c', 'a', 'r', 'a', 'd', '.', 'r', 'o', '\0',
   /* "aify.eu", true */ 'a', 'i', 'f', 'y', '.', 'e', 'u', '\0',
   /* "aigcev.org", true */ 'a', 'i', 'g', 'c', 'e', 'v', '.', 'o', 'r', 'g', '\0',
   /* "aikido-linz.at", true */ 'a', 'i', 'k', 'i', 'd', 'o', '-', 'l', 'i', 'n', 'z', '.', 'a', 't', '\0',
   /* "aikido-wels.at", true */ 'a', 'i', 'k', 'i', 'd', 'o', '-', 'w', 'e', 'l', 's', '.', 'a', 't', '\0',
@@ -454,17 +454,16 @@ static const char kSTSHostTable[] = {
   /* "alertwire.com", true */ 'a', 'l', 'e', 'r', 't', 'w', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "alex-ross.co.uk", true */ 'a', 'l', 'e', 'x', '-', 'r', 'o', 's', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "alexanderschimpf.de", true */ 'a', 'l', 'e', 'x', 'a', 'n', 'd', 'e', 'r', 's', 'c', 'h', 'i', 'm', 'p', 'f', '.', 'd', 'e', '\0',
   /* "alexandra-schulze.de", true */ 'a', 'l', 'e', 'x', 'a', 'n', 'd', 'r', 'a', '-', 's', 'c', 'h', 'u', 'l', 'z', 'e', '.', 'd', 'e', '\0',
   /* "alexbaker.org", true */ 'a', 'l', 'e', 'x', 'b', 'a', 'k', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "alexberts.ch", true */ 'a', 'l', 'e', 'x', 'b', 'e', 'r', 't', 's', '.', 'c', 'h', '\0',
   /* "alexei.su", true */ 'a', 'l', 'e', 'x', 'e', 'i', '.', 's', 'u', '\0',
   /* "alexgaynor.net", true */ 'a', 'l', 'e', 'x', 'g', 'a', 'y', 'n', 'o', 'r', '.', 'n', 'e', 't', '\0',
-  /* "alexhaydock.co.uk", true */ 'a', 'l', 'e', 'x', 'h', 'a', 'y', 'd', 'o', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "alexhd.de", true */ 'a', 'l', 'e', 'x', 'h', 'd', '.', 'd', 'e', '\0',
   /* "alexmerkel.com", true */ 'a', 'l', 'e', 'x', 'm', 'e', 'r', 'k', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "alexmerkel.me", true */ 'a', 'l', 'e', 'x', 'm', 'e', 'r', 'k', 'e', 'l', '.', 'm', 'e', '\0',
   /* "alexmerkel.xyz", true */ 'a', 'l', 'e', 'x', 'm', 'e', 'r', 'k', 'e', 'l', '.', 'x', 'y', 'z', '\0',
   /* "alexn.org", true */ 'a', 'l', 'e', 'x', 'n', '.', 'o', 'r', 'g', '\0',
   /* "alexpavel.com", true */ 'a', 'l', 'e', 'x', 'p', 'a', 'v', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "alexsergeyev.com", true */ 'a', 'l', 'e', 'x', 's', 'e', 'r', 'g', 'e', 'y', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "alexsexton.com", true */ 'a', 'l', 'e', 'x', 's', 'e', 'x', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
@@ -877,16 +876,17 @@ static const char kSTSHostTable[] = {
   /* "atletika.hu", true */ 'a', 't', 'l', 'e', 't', 'i', 'k', 'a', '.', 'h', 'u', '\0',
   /* "atnis.com", true */ 'a', 't', 'n', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "atolm.net", true */ 'a', 't', 'o', 'l', 'm', '.', 'n', 'e', 't', '\0',
   /* "atom-china.org", true */ 'a', 't', 'o', 'm', '-', 'c', 'h', 'i', 'n', 'a', '.', 'o', 'r', 'g', '\0',
   /* "atom.solutions", true */ 'a', 't', 'o', 'm', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
   /* "atrinik.org", true */ 'a', 't', 'r', 'i', 'n', 'i', 'k', '.', 'o', 'r', 'g', '\0',
   /* "atte.fi", true */ 'a', 't', 't', 'e', '.', 'f', 'i', '\0',
   /* "attic118.com", true */ 'a', 't', 't', 'i', 'c', '1', '1', '8', '.', 'c', 'o', 'm', '\0',
+  /* "attilagyorffy.com", true */ 'a', 't', 't', 'i', 'l', 'a', 'g', 'y', 'o', 'r', 'f', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "attogproductions.com", true */ 'a', 't', 't', 'o', 'g', 'p', 'r', 'o', 'd', 'u', 'c', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "attogtech.com", true */ 'a', 't', 't', 'o', 'g', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "attorney.org.il", true */ 'a', 't', 't', 'o', 'r', 'n', 'e', 'y', '.', 'o', 'r', 'g', '.', 'i', 'l', '\0',
   /* "au2pb.net", true */ 'a', 'u', '2', 'p', 'b', '.', 'n', 'e', 't', '\0',
   /* "aucubin.moe", true */ 'a', 'u', 'c', 'u', 'b', 'i', 'n', '.', 'm', 'o', 'e', '\0',
   /* "audiense.com", true */ 'a', 'u', 'd', 'i', 'e', 'n', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "audio-detector.com", true */ 'a', 'u', 'd', 'i', 'o', '-', 'd', 'e', 't', 'e', 'c', 't', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "audiovisualdevices.com.au", true */ 'a', 'u', 'd', 'i', 'o', 'v', 'i', 's', 'u', 'a', 'l', 'd', 'e', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
@@ -1007,17 +1007,16 @@ static const char kSTSHostTable[] = {
   /* "bagheera.me.uk", true */ 'b', 'a', 'g', 'h', 'e', 'e', 'r', 'a', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "bah.im", true */ 'b', 'a', 'h', '.', 'i', 'm', '\0',
   /* "baifubao.com", true */ 'b', 'a', 'i', 'f', 'u', 'b', 'a', 'o', '.', 'c', 'o', 'm', '\0',
   /* "baiker.info", true */ 'b', 'a', 'i', 'k', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "bair.io", true */ 'b', 'a', 'i', 'r', '.', 'i', 'o', '\0',
   /* "baiyangliu.com", true */ 'b', 'a', 'i', 'y', 'a', 'n', 'g', 'l', 'i', 'u', '.', 'c', 'o', 'm', '\0',
   /* "bajic.ch", true */ 'b', 'a', 'j', 'i', 'c', '.', 'c', 'h', '\0',
   /* "bakabt.info", true */ 'b', 'a', 'k', 'a', 'b', 't', '.', 'i', 'n', 'f', 'o', '\0',
-  /* "bakaweb.fr", true */ 'b', 'a', 'k', 'a', 'w', 'e', 'b', '.', 'f', 'r', '\0',
   /* "balboa.io", true */ 'b', 'a', 'l', 'b', 'o', 'a', '.', 'i', 'o', '\0',
   /* "baleares.party", true */ 'b', 'a', 'l', 'e', 'a', 'r', 'e', 's', '.', 'p', 'a', 'r', 't', 'y', '\0',
   /* "balikonos.cz", true */ 'b', 'a', 'l', 'i', 'k', 'o', 'n', 'o', 's', '.', 'c', 'z', '\0',
   /* "balist.es", true */ 'b', 'a', 'l', 'i', 's', 't', '.', 'e', 's', '\0',
   /* "baliyano.com", true */ 'b', 'a', 'l', 'i', 'y', 'a', 'n', 'o', '.', 'c', 'o', 'm', '\0',
   /* "balkonien.org", true */ 'b', 'a', 'l', 'k', 'o', 'n', 'i', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "ball.holdings", true */ 'b', 'a', 'l', 'l', '.', 'h', 'o', 'l', 'd', 'i', 'n', 'g', 's', '\0',
   /* "ballarin.cc", true */ 'b', 'a', 'l', 'l', 'a', 'r', 'i', 'n', '.', 'c', 'c', '\0',
@@ -1034,17 +1033,16 @@ static const char kSTSHostTable[] = {
   /* "bangzafran.com", true */ 'b', 'a', 'n', 'g', 'z', 'a', 'f', 'r', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "bank.simple.com", false */ 'b', 'a', 'n', 'k', '.', 's', 'i', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bankcardoffer.com", true */ 'b', 'a', 'n', 'k', 'c', 'a', 'r', 'd', 'o', 'f', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "bankcircle.co.in", true */ 'b', 'a', 'n', 'k', 'c', 'i', 'r', 'c', 'l', 'e', '.', 'c', 'o', '.', 'i', 'n', '\0',
   /* "bankersonline.com", true */ 'b', 'a', 'n', 'k', 'e', 'r', 's', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bankin.com", true */ 'b', 'a', 'n', 'k', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "bankinter.pt", true */ 'b', 'a', 'n', 'k', 'i', 'n', 't', 'e', 'r', '.', 'p', 't', '\0',
   /* "bankofdenton.com", true */ 'b', 'a', 'n', 'k', 'o', 'f', 'd', 'e', 'n', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
-  /* "bannisbierblog.de", true */ 'b', 'a', 'n', 'n', 'i', 's', 'b', 'i', 'e', 'r', 'b', 'l', 'o', 'g', '.', 'd', 'e', '\0',
   /* "banqingdiao.com", false */ 'b', 'a', 'n', 'q', 'i', 'n', 'g', 'd', 'i', 'a', 'o', '.', 'c', 'o', 'm', '\0',
   /* "baofengtech.com", true */ 'b', 'a', 'o', 'f', 'e', 'n', 'g', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "baptiste-peugnez.fr", true */ 'b', 'a', 'p', 't', 'i', 's', 't', 'e', '-', 'p', 'e', 'u', 'g', 'n', 'e', 'z', '.', 'f', 'r', '\0',
   /* "barbarians.com", true */ 'b', 'a', 'r', 'b', 'a', 'r', 'i', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "barbaros.info", true */ 'b', 'a', 'r', 'b', 'a', 'r', 'o', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "barbate.fr", true */ 'b', 'a', 'r', 'b', 'a', 't', 'e', '.', 'f', 'r', '\0',
   /* "barbosha.ru", true */ 'b', 'a', 'r', 'b', 'o', 's', 'h', 'a', '.', 'r', 'u', '\0',
   /* "barbu.family", true */ 'b', 'a', 'r', 'b', 'u', '.', 'f', 'a', 'm', 'i', 'l', 'y', '\0',
@@ -1158,25 +1156,25 @@ static const char kSTSHostTable[] = {
   /* "benchling.com", true */ 'b', 'e', 'n', 'c', 'h', 'l', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "benchmarkmonument.com", true */ 'b', 'e', 'n', 'c', 'h', 'm', 'a', 'r', 'k', 'm', 'o', 'n', 'u', 'm', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "bendechrai.com", true */ 'b', 'e', 'n', 'd', 'e', 'c', 'h', 'r', 'a', 'i', '.', 'c', 'o', 'm', '\0',
   /* "bendemaree.com", true */ 'b', 'e', 'n', 'd', 'e', 'm', 'a', 'r', 'e', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bendingtheending.com", true */ 'b', 'e', 'n', 'd', 'i', 'n', 'g', 't', 'h', 'e', 'e', 'n', 'd', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "bendix.co", true */ 'b', 'e', 'n', 'd', 'i', 'x', '.', 'c', 'o', '\0',
   /* "beneathvt.com", true */ 'b', 'e', 'n', 'e', 'a', 't', 'h', 'v', 't', '.', 'c', 'o', 'm', '\0',
   /* "benhartmann.de", true */ 'b', 'e', 'n', 'h', 'a', 'r', 't', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
-  /* "benjamin.pe", true */ 'b', 'e', 'n', 'j', 'a', 'm', 'i', 'n', '.', 'p', 'e', '\0',
   /* "benjaminjurke.net", true */ 'b', 'e', 'n', 'j', 'a', 'm', 'i', 'n', 'j', 'u', 'r', 'k', 'e', '.', 'n', 'e', 't', '\0',
   /* "benjamins.com", true */ 'b', 'e', 'n', 'j', 'a', 'm', 'i', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "benmatthews.com.au", true */ 'b', 'e', 'n', 'm', 'a', 't', 't', 'h', 'e', 'w', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "benmillett.us", true */ 'b', 'e', 'n', 'm', 'i', 'l', 'l', 'e', 't', 't', '.', 'u', 's', '\0',
   /* "benni1.eu", true */ 'b', 'e', 'n', 'n', 'i', '1', '.', 'e', 'u', '\0',
   /* "benno.frl", true */ 'b', 'e', 'n', 'n', 'o', '.', 'f', 'r', 'l', '\0',
   /* "benohead.com", true */ 'b', 'e', 'n', 'o', 'h', 'e', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "benschnarr.com", true */ 'b', 'e', 'n', 's', 'c', 'h', 'n', 'a', 'r', 'r', '.', 'c', 'o', 'm', '\0',
+  /* "bentertain.de", true */ 'b', 'e', 'n', 't', 'e', 'r', 't', 'a', 'i', 'n', '.', 'd', 'e', '\0',
   /* "bentley.link", true */ 'b', 'e', 'n', 't', 'l', 'e', 'y', '.', 'l', 'i', 'n', 'k', '\0',
   /* "bentrask.com", true */ 'b', 'e', 'n', 't', 'r', 'a', 's', 'k', '.', 'c', 'o', 'm', '\0',
   /* "benzou-space.com", true */ 'b', 'e', 'n', 'z', 'o', 'u', '-', 's', 'p', 'a', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "beourvictim.com", true */ 'b', 'e', 'o', 'u', 'r', 'v', 'i', 'c', 't', 'i', 'm', '.', 'c', 'o', 'm', '\0',
   /* "beranovi.com", true */ 'b', 'e', 'r', 'a', 'n', 'o', 'v', 'i', '.', 'c', 'o', 'm', '\0',
   /* "berasavocate.com", true */ 'b', 'e', 'r', 'a', 's', 'a', 'v', 'o', 'c', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "berger.work", true */ 'b', 'e', 'r', 'g', 'e', 'r', '.', 'w', 'o', 'r', 'k', '\0',
   /* "bergstoneware.com", true */ 'b', 'e', 'r', 'g', 's', 't', 'o', 'n', 'e', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
@@ -1641,17 +1639,16 @@ static const char kSTSHostTable[] = {
   /* "buettgens.net", true */ 'b', 'u', 'e', 't', 't', 'g', 'e', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "buffaloautomation.com", true */ 'b', 'u', 'f', 'f', 'a', 'l', 'o', 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "buffalodrinkinggame.beer", true */ 'b', 'u', 'f', 'f', 'a', 'l', 'o', 'd', 'r', 'i', 'n', 'k', 'i', 'n', 'g', 'g', 'a', 'm', 'e', '.', 'b', 'e', 'e', 'r', '\0',
   /* "buffhack.com", true */ 'b', 'u', 'f', 'f', 'h', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "bugcrowd.com", true */ 'b', 'u', 'g', 'c', 'r', 'o', 'w', 'd', '.', 'c', 'o', 'm', '\0',
   /* "bugginslab.co.uk", true */ 'b', 'u', 'g', 'g', 'i', 'n', 's', 'l', 'a', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bugs.chromium.org", true */ 'b', 'u', 'g', 's', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "bugtrack.co.uk", true */ 'b', 'u', 'g', 't', 'r', 'a', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
-  /* "bugtrack.io", true */ 'b', 'u', 'g', 't', 'r', 'a', 'c', 'k', '.', 'i', 'o', '\0',
   /* "bugzil.la", true */ 'b', 'u', 'g', 'z', 'i', 'l', '.', 'l', 'a', '\0',
   /* "bugzilla.mozilla.org", true */ 'b', 'u', 'g', 'z', 'i', 'l', 'l', 'a', '.', 'm', 'o', 'z', 'i', 'l', 'l', 'a', '.', 'o', 'r', 'g', '\0',
   /* "buiko.com", true */ 'b', 'u', 'i', 'k', 'o', '.', 'c', 'o', 'm', '\0',
   /* "build.chromium.org", false */ 'b', 'u', 'i', 'l', 'd', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "buildbox.io", true */ 'b', 'u', 'i', 'l', 'd', 'b', 'o', 'x', '.', 'i', 'o', '\0',
   /* "building-cost-estimators.com", true */ 'b', 'u', 'i', 'l', 'd', 'i', 'n', 'g', '-', 'c', 'o', 's', 't', '-', 'e', 's', 't', 'i', 'm', 'a', 't', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "builditsolutions.net", true */ 'b', 'u', 'i', 'l', 'd', 'i', 't', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "buildkite.com", true */ 'b', 'u', 'i', 'l', 'd', 'k', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0',
@@ -1768,24 +1765,22 @@ static const char kSTSHostTable[] = {
   /* "calaborlawnews.com", true */ 'c', 'a', 'l', 'a', 'b', 'o', 'r', 'l', 'a', 'w', 'n', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "calc.pw", true */ 'c', 'a', 'l', 'c', '.', 'p', 'w', '\0',
   /* "calculator-imt.com", true */ 'c', 'a', 'l', 'c', 'u', 'l', 'a', 't', 'o', 'r', '-', 'i', 'm', 't', '.', 'c', 'o', 'm', '\0',
   /* "calculator.tf", true */ 'c', 'a', 'l', 'c', 'u', 'l', 'a', 't', 'o', 'r', '.', 't', 'f', '\0',
   /* "calebmorris.com", false */ 'c', 'a', 'l', 'e', 'b', 'm', 'o', 'r', 'r', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "calgoty.com", true */ 'c', 'a', 'l', 'g', 'o', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "calibreapp.com", false */ 'c', 'a', 'l', 'i', 'b', 'r', 'e', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "calibso.net", true */ 'c', 'a', 'l', 'i', 'b', 's', 'o', '.', 'n', 'e', 't', '\0',
-  /* "call.me", false */ 'c', 'a', 'l', 'l', '.', 'm', 'e', '\0',
   /* "callcap.com", false */ 'c', 'a', 'l', 'l', 'c', 'a', 'p', '.', 'c', 'o', 'm', '\0',
   /* "callear.org", true */ 'c', 'a', 'l', 'l', 'e', 'a', 'r', '.', 'o', 'r', 'g', '\0',
   /* "callhub.io", true */ 'c', 'a', 'l', 'l', 'h', 'u', 'b', '.', 'i', 'o', '\0',
   /* "callision.com", true */ 'c', 'a', 'l', 'l', 'i', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "callsigns.ca", true */ 'c', 'a', 'l', 'l', 's', 'i', 'g', 'n', 's', '.', 'c', 'a', '\0',
   /* "calomel.org", true */ 'c', 'a', 'l', 'o', 'm', 'e', 'l', '.', 'o', 'r', 'g', '\0',
-  /* "calories.org", true */ 'c', 'a', 'l', 'o', 'r', 'i', 'e', 's', '.', 'o', 'r', 'g', '\0',
   /* "caltonnutrition.com", true */ 'c', 'a', 'l', 't', 'o', 'n', 'n', 'u', 't', 'r', 'i', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "calvin.my", true */ 'c', 'a', 'l', 'v', 'i', 'n', '.', 'm', 'y', '\0',
   /* "calyxengineers.com", true */ 'c', 'a', 'l', 'y', 'x', 'e', 'n', 'g', 'i', 'n', 'e', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "camaya.net", true */ 'c', 'a', 'm', 'a', 'y', 'a', '.', 'n', 'e', 't', '\0',
   /* "cambier.org", true */ 'c', 'a', 'm', 'b', 'i', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "cambridgeanalytica.net", true */ 'c', 'a', 'm', 'b', 'r', 'i', 'd', 'g', 'e', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 'a', '.', 'n', 'e', 't', '\0',
   /* "cambridgeanalytica.org", true */ 'c', 'a', 'm', 'b', 'r', 'i', 'd', 'g', 'e', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 'a', '.', 'o', 'r', 'g', '\0',
   /* "camconn.cc", true */ 'c', 'a', 'm', 'c', 'o', 'n', 'n', '.', 'c', 'c', '\0',
@@ -2076,17 +2071,16 @@ static const char kSTSHostTable[] = {
   /* "chronoshop.cz", true */ 'c', 'h', 'r', 'o', 'n', 'o', 's', 'h', 'o', 'p', '.', 'c', 'z', '\0',
   /* "chrst.ph", true */ 'c', 'h', 'r', 's', 't', '.', 'p', 'h', '\0',
   /* "chsterz.de", true */ 'c', 'h', 's', 't', 'e', 'r', 'z', '.', 'd', 'e', '\0',
   /* "chuckame.fr", true */ 'c', 'h', 'u', 'c', 'k', 'a', 'm', 'e', '.', 'f', 'r', '\0',
   /* "chulado.com", true */ 'c', 'h', 'u', 'l', 'a', 'd', 'o', '.', 'c', 'o', 'm', '\0',
   /* "chun.pro", true */ 'c', 'h', 'u', 'n', '.', 'p', 'r', 'o', '\0',
   /* "chunche.net", true */ 'c', 'h', 'u', 'n', 'c', 'h', 'e', '.', 'n', 'e', 't', '\0',
   /* "churchthemes.com", true */ 'c', 'h', 'u', 'r', 'c', 'h', 't', 'h', 'e', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
-  /* "cianmawhinney.xyz", true */ 'c', 'i', 'a', 'n', 'm', 'a', 'w', 'h', 'i', 'n', 'n', 'e', 'y', '.', 'x', 'y', 'z', '\0',
   /* "ciat.no", false */ 'c', 'i', 'a', 't', '.', 'n', 'o', '\0',
   /* "cidbot.com", true */ 'c', 'i', 'd', 'b', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "cienbeaute-lidl.fr", true */ 'c', 'i', 'e', 'n', 'b', 'e', 'a', 'u', 't', 'e', '-', 'l', 'i', 'd', 'l', '.', 'f', 'r', '\0',
   /* "cig-dem.com", true */ 'c', 'i', 'g', '-', 'd', 'e', 'm', '.', 'c', 'o', 'm', '\0',
   /* "cigarterminal.com", false */ 'c', 'i', 'g', 'a', 'r', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cigi.site", true */ 'c', 'i', 'g', 'i', '.', 's', 'i', 't', 'e', '\0',
   /* "cigoteket.se", true */ 'c', 'i', 'g', 'o', 't', 'e', 'k', 'e', 't', '.', 's', 'e', '\0',
   /* "cim2b.de", true */ 'c', 'i', 'm', '2', 'b', '.', 'd', 'e', '\0',
@@ -2221,17 +2215,16 @@ static const char kSTSHostTable[] = {
   /* "cnlic.com", true */ 'c', 'n', 'l', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "co.search.yahoo.com", false */ 'c', 'o', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "coachingconsultancy.com", true */ 'c', 'o', 'a', 'c', 'h', 'i', 'n', 'g', 'c', 'o', 'n', 's', 'u', 'l', 't', 'a', 'n', 'c', 'y', '.', 'c', 'o', 'm', '\0',
   /* "coalpointcottage.com", true */ 'c', 'o', 'a', 'l', 'p', 'o', 'i', 'n', 't', 'c', 'o', 't', 't', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "coam.co", true */ 'c', 'o', 'a', 'm', '.', 'c', 'o', '\0',
   /* "cobalt.io", true */ 'c', 'o', 'b', 'a', 'l', 't', '.', 'i', 'o', '\0',
   /* "cocaine.ninja", true */ 'c', 'o', 'c', 'a', 'i', 'n', 'e', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "cocker.cc", false */ 'c', 'o', 'c', 'k', 'e', 'r', '.', 'c', 'c', '\0',
-  /* "cocktailfuture.fr", true */ 'c', 'o', 'c', 'k', 't', 'a', 'i', 'l', 'f', 'u', 't', 'u', 'r', 'e', '.', 'f', 'r', '\0',
   /* "cocoaheads.at", false */ 'c', 'o', 'c', 'o', 'a', 'h', 'e', 'a', 'd', 's', '.', 'a', 't', '\0',
   /* "cocolovesdaddy.com", true */ 'c', 'o', 'c', 'o', 'l', 'o', 'v', 'e', 's', 'd', 'a', 'd', 'd', 'y', '.', 'c', 'o', 'm', '\0',
   /* "code-poets.co.uk", true */ 'c', 'o', 'd', 'e', '-', 'p', 'o', 'e', 't', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "code-well.com", true */ 'c', 'o', 'd', 'e', '-', 'w', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "code.facebook.com", false */ 'c', 'o', 'd', 'e', '.', 'f', 'a', 'c', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "code.google.com", true */ 'c', 'o', 'd', 'e', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "code67.com", true */ 'c', 'o', 'd', 'e', '6', '7', '.', 'c', 'o', 'm', '\0',
   /* "codeferm.com", true */ 'c', 'o', 'd', 'e', 'f', 'e', 'r', 'm', '.', 'c', 'o', 'm', '\0',
@@ -2281,23 +2274,21 @@ static const char kSTSHostTable[] = {
   /* "colinstark.ca", true */ 'c', 'o', 'l', 'i', 'n', 's', 't', 'a', 'r', 'k', '.', 'c', 'a', '\0',
   /* "colinwolff.com", true */ 'c', 'o', 'l', 'i', 'n', 'w', 'o', 'l', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "collabornation.net", true */ 'c', 'o', 'l', 'l', 'a', 'b', 'o', 'r', 'n', 'a', 't', 'i', 'o', 'n', '.', 'n', 'e', 't', '\0',
   /* "collabra.email", true */ 'c', 'o', 'l', 'l', 'a', 'b', 'r', 'a', '.', 'e', 'm', 'a', 'i', 'l', '\0',
   /* "collaction.hk", true */ 'c', 'o', 'l', 'l', 'a', 'c', 't', 'i', 'o', 'n', '.', 'h', 'k', '\0',
   /* "collada.org", true */ 'c', 'o', 'l', 'l', 'a', 'd', 'a', '.', 'o', 'r', 'g', '\0',
   /* "collectfood.com", true */ 'c', 'o', 'l', 'l', 'e', 'c', 't', 'f', 'o', 'o', 'd', '.', 'c', 'o', 'm', '\0',
   /* "collectiblebeans.com", true */ 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'b', 'l', 'e', 'b', 'e', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
-  /* "collectosaurus.com", true */ 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 's', 'a', 'u', 'r', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "collegepulse.org", true */ 'c', 'o', 'l', 'l', 'e', 'g', 'e', 'p', 'u', 'l', 's', 'e', '.', 'o', 'r', 'g', '\0',
   /* "collinghammethodist.org.uk", true */ 'c', 'o', 'l', 'l', 'i', 'n', 'g', 'h', 'a', 'm', 'm', 'e', 't', 'h', 'o', 'd', 'i', 's', 't', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "collinmbarrett.com", false */ 'c', 'o', 'l', 'l', 'i', 'n', 'm', 'b', 'a', 'r', 'r', 'e', 't', 't', '.', 'c', 'o', 'm', '\0',
   /* "collins.press", true */ 'c', 'o', 'l', 'l', 'i', 'n', 's', '.', 'p', 'r', 'e', 's', 's', '\0',
   /* "collinsartworks.com", true */ 'c', 'o', 'l', 'l', 'i', 'n', 's', 'a', 'r', 't', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
-  /* "colo-tech.com", true */ 'c', 'o', 'l', 'o', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "coloradolottery.com", true */ 'c', 'o', 'l', 'o', 'r', 'a', 'd', 'o', 'l', 'o', 't', 't', 'e', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "coloraid.net", true */ 'c', 'o', 'l', 'o', 'r', 'a', 'i', 'd', '.', 'n', 'e', 't', '\0',
   /* "colorcodedlyrics.com", true */ 'c', 'o', 'l', 'o', 'r', 'c', 'o', 'd', 'e', 'd', 'l', 'y', 'r', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "coloringnotebook.com", true */ 'c', 'o', 'l', 'o', 'r', 'i', 'n', 'g', 'n', 'o', 't', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "colorlib.com", true */ 'c', 'o', 'l', 'o', 'r', 'l', 'i', 'b', '.', 'c', 'o', 'm', '\0',
   /* "com.cc", true */ 'c', 'o', 'm', '.', 'c', 'c', '\0',
   /* "comalia.com", true */ 'c', 'o', 'm', 'a', 'l', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "comarkinstruments.net", true */ 'c', 'o', 'm', 'a', 'r', 'k', 'i', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', '.', 'n', 'e', 't', '\0',
@@ -2321,17 +2312,16 @@ static const char kSTSHostTable[] = {
   /* "compagnia-buffo.de", true */ 'c', 'o', 'm', 'p', 'a', 'g', 'n', 'i', 'a', '-', 'b', 'u', 'f', 'f', 'o', '.', 'd', 'e', '\0',
   /* "comparamejor.com", true */ 'c', 'o', 'm', 'p', 'a', 'r', 'a', 'm', 'e', 'j', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "compareandrecycle.co.uk", false */ 'c', 'o', 'm', 'p', 'a', 'r', 'e', 'a', 'n', 'd', 'r', 'e', 'c', 'y', 'c', 'l', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "compareandrecycle.com", false */ 'c', 'o', 'm', 'p', 'a', 'r', 'e', 'a', 'n', 'd', 'r', 'e', 'c', 'y', 'c', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "compareinsurance.com.au", true */ 'c', 'o', 'm', 'p', 'a', 'r', 'e', 'i', 'n', 's', 'u', 'r', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "comparetravelinsurance.com.au", true */ 'c', 'o', 'm', 'p', 'a', 'r', 'e', 't', 'r', 'a', 'v', 'e', 'l', 'i', 'n', 's', 'u', 'r', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "comparexcloudcenter.com", true */ 'c', 'o', 'm', 'p', 'a', 'r', 'e', 'x', 'c', 'l', 'o', 'u', 'd', 'c', 'e', 'n', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "compeuphoria.com", true */ 'c', 'o', 'm', 'p', 'e', 'u', 'p', 'h', 'o', 'r', 'i', 'a', '.', 'c', 'o', 'm', '\0',
-  /* "compiledworks.com", true */ 'c', 'o', 'm', 'p', 'i', 'l', 'e', 'd', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "completeid.com", true */ 'c', 'o', 'm', 'p', 'l', 'e', 't', 'e', 'i', 'd', '.', 'c', 'o', 'm', '\0',
   /* "completionist.me", true */ 'c', 'o', 'm', 'p', 'l', 'e', 't', 'i', 'o', 'n', 'i', 's', 't', '.', 'm', 'e', '\0',
   /* "complexart.ro", true */ 'c', 'o', 'm', 'p', 'l', 'e', 'x', 'a', 'r', 't', '.', 'r', 'o', '\0',
   /* "compliance-systeme.de", true */ 'c', 'o', 'm', 'p', 'l', 'i', 'a', 'n', 'c', 'e', '-', 's', 'y', 's', 't', 'e', 'm', 'e', '.', 'd', 'e', '\0',
   /* "compliancedictionary.com", true */ 'c', 'o', 'm', 'p', 'l', 'i', 'a', 'n', 'c', 'e', 'd', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "complymd.com", true */ 'c', 'o', 'm', 'p', 'l', 'y', 'm', 'd', '.', 'c', 'o', 'm', '\0',
   /* "compucorner.com.mx", true */ 'c', 'o', 'm', 'p', 'u', 'c', 'o', 'r', 'n', 'e', 'r', '.', 'c', 'o', 'm', '.', 'm', 'x', '\0',
   /* "compucorner.mx", true */ 'c', 'o', 'm', 'p', 'u', 'c', 'o', 'r', 'n', 'e', 'r', '.', 'm', 'x', '\0',
@@ -2341,16 +2331,17 @@ static const char kSTSHostTable[] = {
   /* "concentrade.de", true */ 'c', 'o', 'n', 'c', 'e', 'n', 't', 'r', 'a', 'd', 'e', '.', 'd', 'e', '\0',
   /* "conclave.global", true */ 'c', 'o', 'n', 'c', 'l', 'a', 'v', 'e', '.', 'g', 'l', 'o', 'b', 'a', 'l', '\0',
   /* "condepenalba.com", true */ 'c', 'o', 'n', 'd', 'e', 'p', 'e', 'n', 'a', 'l', 'b', 'a', '.', 'c', 'o', 'm', '\0',
   /* "condosforcash.com", true */ 'c', 'o', 'n', 'd', 'o', 's', 'f', 'o', 'r', 'c', 'a', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "confiancefoundation.org", true */ 'c', 'o', 'n', 'f', 'i', 'a', 'n', 'c', 'e', 'f', 'o', 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "config.schokokeks.org", false */ 'c', 'o', 'n', 'f', 'i', 'g', '.', 's', 'c', 'h', 'o', 'k', 'o', 'k', 'e', 'k', 's', '.', 'o', 'r', 'g', '\0',
   /* "confiwall.de", true */ 'c', 'o', 'n', 'f', 'i', 'w', 'a', 'l', 'l', '.', 'd', 'e', '\0',
   /* "conflux.tw", true */ 'c', 'o', 'n', 'f', 'l', 'u', 'x', '.', 't', 'w', '\0',
+  /* "confucio.cl", true */ 'c', 'o', 'n', 'f', 'u', 'c', 'i', 'o', '.', 'c', 'l', '\0',
   /* "connect.dating", true */ 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "connect.ua", false */ 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'u', 'a', '\0',
   /* "connected-verhuurservice.nl", true */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'e', 'd', '-', 'v', 'e', 'r', 'h', 'u', 'u', 'r', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'n', 'l', '\0',
   /* "connectfss.com", true */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'f', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "connectingconcepts.com", true */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'n', 'g', 'c', 'o', 'n', 'c', 'e', 'p', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "connectum.eu", true */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'u', 'm', '.', 'e', 'u', '\0',
   /* "connext.de", true */ 'c', 'o', 'n', 'n', 'e', 'x', 't', '.', 'd', 'e', '\0',
   /* "connyduck.at", true */ 'c', 'o', 'n', 'n', 'y', 'd', 'u', 'c', 'k', '.', 'a', 't', '\0',
@@ -2590,16 +2581,17 @@ static const char kSTSHostTable[] = {
   /* "cvursache.com", true */ 'c', 'v', 'u', 'r', 's', 'a', 'c', 'h', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cwagner.me", true */ 'c', 'w', 'a', 'g', 'n', 'e', 'r', '.', 'm', 'e', '\0',
   /* "cyberfrancais.ro", true */ 'c', 'y', 'b', 'e', 'r', 'f', 'r', 'a', 'n', 'c', 'a', 'i', 's', '.', 'r', 'o', '\0',
   /* "cyberguerrilla.info", true */ 'c', 'y', 'b', 'e', 'r', 'g', 'u', 'e', 'r', 'r', 'i', 'l', 'l', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "cyberguerrilla.org", true */ 'c', 'y', 'b', 'e', 'r', 'g', 'u', 'e', 'r', 'r', 'i', 'l', 'l', 'a', '.', 'o', 'r', 'g', '\0',
   /* "cyberhouse.at", true */ 'c', 'y', 'b', 'e', 'r', 'h', 'o', 'u', 's', 'e', '.', 'a', 't', '\0',
   /* "cyberianhusky.com", true */ 'c', 'y', 'b', 'e', 'r', 'i', 'a', 'n', 'h', 'u', 's', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "cyberkov.com", true */ 'c', 'y', 'b', 'e', 'r', 'k', 'o', 'v', '.', 'c', 'o', 'm', '\0',
+  /* "cyberlab.kiev.ua", true */ 'c', 'y', 'b', 'e', 'r', 'l', 'a', 'b', '.', 'k', 'i', 'e', 'v', '.', 'u', 'a', '\0',
   /* "cyberoptic.de", true */ 'c', 'y', 'b', 'e', 'r', 'o', 'p', 't', 'i', 'c', '.', 'd', 'e', '\0',
   /* "cybersecuritychallenge.be", true */ 'c', 'y', 'b', 'e', 'r', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e', '.', 'b', 'e', '\0',
   /* "cyberspect.com", true */ 'c', 'y', 'b', 'e', 'r', 's', 'p', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "cyberspect.io", true */ 'c', 'y', 'b', 'e', 'r', 's', 'p', 'e', 'c', 't', '.', 'i', 'o', '\0',
   /* "cybertu.be", true */ 'c', 'y', 'b', 'e', 'r', 't', 'u', '.', 'b', 'e', '\0',
   /* "cyberwire.nl", true */ 'c', 'y', 'b', 'e', 'r', 'w', 'i', 'r', 'e', '.', 'n', 'l', '\0',
   /* "cybozu.cn", true */ 'c', 'y', 'b', 'o', 'z', 'u', '.', 'c', 'n', '\0',
   /* "cybozu.com", true */ 'c', 'y', 'b', 'o', 'z', 'u', '.', 'c', 'o', 'm', '\0',
@@ -3237,30 +3229,29 @@ static const char kSTSHostTable[] = {
   /* "drweissbrot.net", true */ 'd', 'r', 'w', 'e', 'i', 's', 's', 'b', 'r', 'o', 't', '.', 'n', 'e', 't', '\0',
   /* "drycreekphoto.com", true */ 'd', 'r', 'y', 'c', 'r', 'e', 'e', 'k', 'p', 'h', 'o', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "ds-christiansen.de", true */ 'd', 's', '-', 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 's', 'e', 'n', '.', 'd', 'e', '\0',
   /* "dsbrowser.com", true */ 'd', 's', 'b', 'r', 'o', 'w', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "dsebastien.net", true */ 'd', 's', 'e', 'b', 'a', 's', 't', 'i', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "dsol.hu", true */ 'd', 's', 'o', 'l', '.', 'h', 'u', '\0',
   /* "dt27.org", true */ 'd', 't', '2', '7', '.', 'o', 'r', 'g', '\0',
   /* "dubaieveningsafari.com", true */ 'd', 'u', 'b', 'a', 'i', 'e', 'v', 'e', 'n', 'i', 'n', 'g', 's', 'a', 'f', 'a', 'r', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "dubrovskiy.net", true */ 'd', 'u', 'b', 'r', 'o', 'v', 's', 'k', 'i', 'y', '.', 'n', 'e', 't', '\0',
-  /* "dubrovskiy.pro", true */ 'd', 'u', 'b', 'r', 'o', 'v', 's', 'k', 'i', 'y', '.', 'p', 'r', 'o', '\0',
   /* "duch.cloud", true */ 'd', 'u', 'c', 'h', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "duckasylum.com", true */ 'd', 'u', 'c', 'k', 'a', 's', 'y', 'l', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "duckduckstart.com", true */ 'd', 'u', 'c', 'k', 'd', 'u', 'c', 'k', 's', 't', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "duckinc.net", true */ 'd', 'u', 'c', 'k', 'i', 'n', 'c', '.', 'n', 'e', 't', '\0',
   /* "ducohosting.com", true */ 'd', 'u', 'c', 'o', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "duelysthub.com", true */ 'd', 'u', 'e', 'l', 'y', 's', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "duernberg.at", true */ 'd', 'u', 'e', 'r', 'n', 'b', 'e', 'r', 'g', '.', 'a', 't', '\0',
   /* "duijf.info", true */ 'd', 'u', 'i', 'j', 'f', '.', 'i', 'n', 'f', 'o', '\0',
   /* "duijfathome.nl", true */ 'd', 'u', 'i', 'j', 'f', 'a', 't', 'h', 'o', 'm', 'e', '.', 'n', 'l', '\0',
   /* "dukan-recepty.ru", true */ 'd', 'u', 'k', 'a', 'n', '-', 'r', 'e', 'c', 'e', 'p', 't', 'y', '.', 'r', 'u', '\0',
   /* "dukegat.de", true */ 'd', 'u', 'k', 'e', 'g', 'a', 't', '.', 'd', 'e', '\0',
   /* "dukun.de", true */ 'd', 'u', 'k', 'u', 'n', '.', 'd', 'e', '\0',
+  /* "dullsir.com", true */ 'd', 'u', 'l', 'l', 's', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "dumbeartech.com", true */ 'd', 'u', 'm', 'b', 'e', 'a', 'r', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "dumino.bg", true */ 'd', 'u', 'm', 'i', 'n', 'o', '.', 'b', 'g', '\0',
   /* "duncancmt.com", true */ 'd', 'u', 'n', 'c', 'a', 'n', 'c', 'm', 't', '.', 'c', 'o', 'm', '\0',
   /* "dune.io", true */ 'd', 'u', 'n', 'e', '.', 'i', 'o', '\0',
   /* "dunea.nl", true */ 'd', 'u', 'n', 'e', 'a', '.', 'n', 'l', '\0',
   /* "duo.money", true */ 'd', 'u', 'o', '.', 'm', 'o', 'n', 'e', 'y', '\0',
   /* "durangoenergyllc.com", true */ 'd', 'u', 'r', 'a', 'n', 'g', 'o', 'e', 'n', 'e', 'r', 'g', 'y', 'l', 'l', 'c', '.', 'c', 'o', 'm', '\0',
   /* "durys.be", true */ 'd', 'u', 'r', 'y', 's', '.', 'b', 'e', '\0',
@@ -3457,16 +3448,17 @@ static const char kSTSHostTable[] = {
   /* "elefantevoador.com", true */ 'e', 'l', 'e', 'f', 'a', 'n', 't', 'e', 'v', 'o', 'a', 'd', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "eleicoes2016.com.br", true */ 'e', 'l', 'e', 'i', 'c', 'o', 'e', 's', '2', '0', '1', '6', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "elektropost.org", true */ 'e', 'l', 'e', 'k', 't', 'r', 'o', 'p', 'o', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "element-43.com", true */ 'e', 'l', 'e', 'm', 'e', 'n', 't', '-', '4', '3', '.', 'c', 'o', 'm', '\0',
   /* "elemental.software", true */ 'e', 'l', 'e', 'm', 'e', 'n', 't', 'a', 'l', '.', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '\0',
   /* "elementalrobotics.com", true */ 'e', 'l', 'e', 'm', 'e', 'n', 't', 'a', 'l', 'r', 'o', 'b', 'o', 't', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "elemenx.com", true */ 'e', 'l', 'e', 'm', 'e', 'n', 'x', '.', 'c', 'o', 'm', '\0',
   /* "elena-baykova.ru", true */ 'e', 'l', 'e', 'n', 'a', '-', 'b', 'a', 'y', 'k', 'o', 'v', 'a', '.', 'r', 'u', '\0',
+  /* "elenagherta.ga", true */ 'e', 'l', 'e', 'n', 'a', 'g', 'h', 'e', 'r', 't', 'a', '.', 'g', 'a', '\0',
   /* "elenorsmadness.org", true */ 'e', 'l', 'e', 'n', 'o', 'r', 's', 'm', 'a', 'd', 'n', 'e', 's', 's', '.', 'o', 'r', 'g', '\0',
   /* "elephpant.cz", true */ 'e', 'l', 'e', 'p', 'h', 'p', 'a', 'n', 't', '.', 'c', 'z', '\0',
   /* "elglobo.com.mx", true */ 'e', 'l', 'g', 'l', 'o', 'b', 'o', '.', 'c', 'o', 'm', '.', 'm', 'x', '\0',
   /* "elgosblanc.com", true */ 'e', 'l', 'g', 'o', 's', 'b', 'l', 'a', 'n', 'c', '.', 'c', 'o', 'm', '\0',
   /* "eligible.com", true */ 'e', 'l', 'i', 'g', 'i', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "eligibleapi.com", true */ 'e', 'l', 'i', 'g', 'i', 'b', 'l', 'e', 'a', 'p', 'i', '.', 'c', 'o', 'm', '\0',
   /* "eligrey.com", true */ 'e', 'l', 'i', 'g', 'r', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "eliolita.com", true */ 'e', 'l', 'i', 'o', 'l', 'i', 't', 'a', '.', 'c', 'o', 'm', '\0',
@@ -3629,17 +3621,16 @@ static const char kSTSHostTable[] = {
   /* "eriner.me", true */ 'e', 'r', 'i', 'n', 'e', 'r', '.', 'm', 'e', '\0',
   /* "erisrenee.com", true */ 'e', 'r', 'i', 's', 'r', 'e', 'n', 'e', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ernest.ly", true */ 'e', 'r', 'n', 'e', 's', 't', '.', 'l', 'y', '\0',
   /* "ernesto.at", true */ 'e', 'r', 'n', 'e', 's', 't', 'o', '.', 'a', 't', '\0',
   /* "erp-band.ru", true */ 'e', 'r', 'p', '-', 'b', 'a', 'n', 'd', '.', 'r', 'u', '\0',
   /* "erp.band", true */ 'e', 'r', 'p', '.', 'b', 'a', 'n', 'd', '\0',
   /* "erpband.ru", true */ 'e', 'r', 'p', 'b', 'a', 'n', 'd', '.', 'r', 'u', '\0',
   /* "erpcargo.com", false */ 'e', 'r', 'p', 'c', 'a', 'r', 'g', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "ersindemirtas.com", true */ 'e', 'r', 's', 'i', 'n', 'd', 'e', 'm', 'i', 'r', 't', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "eru.me", true */ 'e', 'r', 'u', '.', 'm', 'e', '\0',
   /* "erudikum.cz", true */ 'e', 'r', 'u', 'd', 'i', 'k', 'u', 'm', '.', 'c', 'z', '\0',
   /* "erwanlepape.com", true */ 'e', 'r', 'w', 'a', 'n', 'l', 'e', 'p', 'a', 'p', 'e', '.', 'c', 'o', 'm', '\0',
   /* "erwinwensveen.nl", true */ 'e', 'r', 'w', 'i', 'n', 'w', 'e', 'n', 's', 'v', 'e', 'e', 'n', '.', 'n', 'l', '\0',
   /* "es-geenen.de", true */ 'e', 's', '-', 'g', 'e', 'e', 'n', 'e', 'n', '.', 'd', 'e', '\0',
   /* "es.search.yahoo.com", false */ 'e', 's', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "escalate.eu", true */ 'e', 's', 'c', 'a', 'l', 'a', 't', 'e', '.', 'e', 'u', '\0',
   /* "escapees.com", true */ 'e', 's', 'c', 'a', 'p', 'e', 'e', 's', '.', 'c', 'o', 'm', '\0',
@@ -3875,16 +3866,17 @@ static const char kSTSHostTable[] = {
   /* "fassadenverkleidung24.de", true */ 'f', 'a', 's', 's', 'a', 'd', 'e', 'n', 'v', 'e', 'r', 'k', 'l', 'e', 'i', 'd', 'u', 'n', 'g', '2', '4', '.', 'd', 'e', '\0',
   /* "fastaim.de", true */ 'f', 'a', 's', 't', 'a', 'i', 'm', '.', 'd', 'e', '\0',
   /* "fastcomcorp.com", true */ 'f', 'a', 's', 't', 'c', 'o', 'm', 'c', 'o', 'r', 'p', '.', 'c', 'o', 'm', '\0',
   /* "fastcomcorp.net", true */ 'f', 'a', 's', 't', 'c', 'o', 'm', 'c', 'o', 'r', 'p', '.', 'n', 'e', 't', '\0',
   /* "fastmail.com", false */ 'f', 'a', 's', 't', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "fatlossguide.xyz", true */ 'f', 'a', 't', 'l', 'o', 's', 's', 'g', 'u', 'i', 'd', 'e', '.', 'x', 'y', 'z', '\0',
   /* "fatzebra.com.au", false */ 'f', 'a', 't', 'z', 'e', 'b', 'r', 'a', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "faucetbox.com", true */ 'f', 'a', 'u', 'c', 'e', 't', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
+  /* "fawkex.me", true */ 'f', 'a', 'w', 'k', 'e', 'x', '.', 'm', 'e', '\0',
   /* "fawong.com", true */ 'f', 'a', 'w', 'o', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "faxreader.net", true */ 'f', 'a', 'x', 'r', 'e', 'a', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "fca-tools.com", true */ 'f', 'c', 'a', '-', 't', 'o', 'o', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "fcburk.de", true */ 'f', 'c', 'b', 'u', 'r', 'k', '.', 'd', 'e', '\0',
   /* "fdsys.gov", false */ 'f', 'd', 's', 'y', 's', '.', 'g', 'o', 'v', '\0',
   /* "fdt.name", false */ 'f', 'd', 't', '.', 'n', 'a', 'm', 'e', '\0',
   /* "fearsomegaming.com", true */ 'f', 'e', 'a', 'r', 's', 'o', 'm', 'e', 'g', 'a', 'm', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "feastr.de", true */ 'f', 'e', 'a', 's', 't', 'r', '.', 'd', 'e', '\0',
@@ -4053,17 +4045,16 @@ static const char kSTSHostTable[] = {
   /* "florian-thie.de", true */ 'f', 'l', 'o', 'r', 'i', 'a', 'n', '-', 't', 'h', 'i', 'e', '.', 'd', 'e', '\0',
   /* "floriankeller.de", true */ 'f', 'l', 'o', 'r', 'i', 'a', 'n', 'k', 'e', 'l', 'l', 'e', 'r', '.', 'd', 'e', '\0',
   /* "florianmitrea.uk", true */ 'f', 'l', 'o', 'r', 'i', 'a', 'n', 'm', 'i', 't', 'r', 'e', 'a', '.', 'u', 'k', '\0',
   /* "floridafieros.org", true */ 'f', 'l', 'o', 'r', 'i', 'd', 'a', 'f', 'i', 'e', 'r', 'o', 's', '.', 'o', 'r', 'g', '\0',
   /* "florismoo.nl", true */ 'f', 'l', 'o', 'r', 'i', 's', 'm', 'o', 'o', '.', 'n', 'l', '\0',
   /* "florismouwen.com", true */ 'f', 'l', 'o', 'r', 'i', 's', 'm', 'o', 'u', 'w', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "floskelwolke.de", true */ 'f', 'l', 'o', 's', 'k', 'e', 'l', 'w', 'o', 'l', 'k', 'e', '.', 'd', 'e', '\0',
   /* "flow.pe", true */ 'f', 'l', 'o', 'w', '.', 'p', 'e', '\0',
-  /* "flow.su", true */ 'f', 'l', 'o', 'w', '.', 's', 'u', '\0',
   /* "floweslawncare.com", true */ 'f', 'l', 'o', 'w', 'e', 's', 'l', 'a', 'w', 'n', 'c', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "flowlo.me", true */ 'f', 'l', 'o', 'w', 'l', 'o', '.', 'm', 'e', '\0',
   /* "flox.io", true */ 'f', 'l', 'o', 'x', '.', 'i', 'o', '\0',
   /* "flra.gov", true */ 'f', 'l', 'r', 'a', '.', 'g', 'o', 'v', '\0',
   /* "fluidojobs.com", true */ 'f', 'l', 'u', 'i', 'd', 'o', 'j', 'o', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "flukethoughts.com", true */ 'f', 'l', 'u', 'k', 'e', 't', 'h', 'o', 'u', 'g', 'h', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "fluxent.de", false */ 'f', 'l', 'u', 'x', 'e', 'n', 't', '.', 'd', 'e', '\0',
   /* "fluxfingers.net", true */ 'f', 'l', 'u', 'x', 'f', 'i', 'n', 'g', 'e', 'r', 's', '.', 'n', 'e', 't', '\0',
@@ -4101,17 +4092,16 @@ static const char kSTSHostTable[] = {
   /* "fordbydesign.com", true */ 'f', 'o', 'r', 'd', 'b', 'y', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "forewordreviews.com", true */ 'f', 'o', 'r', 'e', 'w', 'o', 'r', 'd', 'r', 'e', 'v', 'i', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "forex.ee", true */ 'f', 'o', 'r', 'e', 'x', '.', 'e', 'e', '\0',
   /* "forextimes.ru", true */ 'f', 'o', 'r', 'e', 'x', 't', 'i', 'm', 'e', 's', '.', 'r', 'u', '\0',
   /* "forgix.com", true */ 'f', 'o', 'r', 'g', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "formationseeker.com", true */ 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 's', 'e', 'e', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "formationsfactory.co.uk", false */ 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 's', 'f', 'a', 'c', 't', 'o', 'r', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "formazioneopen.it", true */ 'f', 'o', 'r', 'm', 'a', 'z', 'i', 'o', 'n', 'e', 'o', 'p', 'e', 'n', '.', 'i', 't', '\0',
-  /* "formbetter.com", true */ 'f', 'o', 'r', 'm', 'b', 'e', 't', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "foro.io", false */ 'f', 'o', 'r', 'o', '.', 'i', 'o', '\0',
   /* "forplanetsake.com", true */ 'f', 'o', 'r', 'p', 'l', 'a', 'n', 'e', 't', 's', 'a', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "forsakringsarkivet.se", true */ 'f', 'o', 'r', 's', 'a', 'k', 'r', 'i', 'n', 'g', 's', 'a', 'r', 'k', 'i', 'v', 'e', 't', '.', 's', 'e', '\0',
   /* "forschbach-janssen.de", true */ 'f', 'o', 'r', 's', 'c', 'h', 'b', 'a', 'c', 'h', '-', 'j', 'a', 'n', 's', 's', 'e', 'n', '.', 'd', 'e', '\0',
   /* "fortesanshop.it", true */ 'f', 'o', 'r', 't', 'e', 's', 'a', 'n', 's', 'h', 'o', 'p', '.', 'i', 't', '\0',
   /* "fortnine.ca", true */ 'f', 'o', 'r', 't', 'n', 'i', 'n', 'e', '.', 'c', 'a', '\0',
   /* "fortress.sk", true */ 'f', 'o', 'r', 't', 'r', 'e', 's', 's', '.', 's', 'k', '\0',
   /* "fortuna-s.com", true */ 'f', 'o', 'r', 't', 'u', 'n', 'a', '-', 's', '.', 'c', 'o', 'm', '\0',
@@ -4247,17 +4237,16 @@ static const char kSTSHostTable[] = {
   /* "fumblers.ca", true */ 'f', 'u', 'm', 'b', 'l', 'e', 'r', 's', '.', 'c', 'a', '\0',
   /* "fumiware.com", true */ 'f', 'u', 'm', 'i', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fumo.se", true */ 'f', 'u', 'm', 'o', '.', 's', 'e', '\0',
   /* "funchestra.at", false */ 'f', 'u', 'n', 'c', 'h', 'e', 's', 't', 'r', 'a', '.', 'a', 't', '\0',
   /* "functions-online.com", true */ 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fundacionhijosdelsol.org", true */ 'f', 'u', 'n', 'd', 'a', 'c', 'i', 'o', 'n', 'h', 'i', 'j', 'o', 's', 'd', 'e', 'l', 's', 'o', 'l', '.', 'o', 'r', 'g', '\0',
   /* "fundays.nl", true */ 'f', 'u', 'n', 'd', 'a', 'y', 's', '.', 'n', 'l', '\0',
   /* "funderburg.me", true */ 'f', 'u', 'n', 'd', 'e', 'r', 'b', 'u', 'r', 'g', '.', 'm', 'e', '\0',
-  /* "fundingempire.com", true */ 'f', 'u', 'n', 'd', 'i', 'n', 'g', 'e', 'm', 'p', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "funi4u.com", true */ 'f', 'u', 'n', 'i', '4', 'u', '.', 'c', 'o', 'm', '\0',
   /* "funktionel.co", true */ 'f', 'u', 'n', 'k', 't', 'i', 'o', 'n', 'e', 'l', '.', 'c', 'o', '\0',
   /* "funnyang.com", true */ 'f', 'u', 'n', 'n', 'y', 'a', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "furgo.love", true */ 'f', 'u', 'r', 'g', 'o', '.', 'l', 'o', 'v', 'e', '\0',
   /* "furkancaliskan.com", true */ 'f', 'u', 'r', 'k', 'a', 'n', 'c', 'a', 'l', 'i', 's', 'k', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "furnation.com", true */ 'f', 'u', 'r', 'n', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "furry.dk", true */ 'f', 'u', 'r', 'r', 'y', '.', 'd', 'k', '\0',
   /* "fusedrops.com", true */ 'f', 'u', 's', 'e', 'd', 'r', 'o', 'p', 's', '.', 'c', 'o', 'm', '\0',
@@ -4313,17 +4302,16 @@ static const char kSTSHostTable[] = {
   /* "gambetti.fr", true */ 'g', 'a', 'm', 'b', 'e', 't', 't', 'i', '.', 'f', 'r', '\0',
   /* "gambit.pro", true */ 'g', 'a', 'm', 'b', 'i', 't', '.', 'p', 'r', 'o', '\0',
   /* "gambitcloud.net", true */ 'g', 'a', 'm', 'b', 'i', 't', 'c', 'l', 'o', 'u', 'd', '.', 'n', 'e', 't', '\0',
   /* "gambitnash.co.uk", true */ 'g', 'a', 'm', 'b', 'i', 't', 'n', 'a', 's', 'h', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "gambitnash.com", true */ 'g', 'a', 'm', 'b', 'i', 't', 'n', 'a', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "gambitprint.com", true */ 'g', 'a', 'm', 'b', 'i', 't', 'p', 'r', 'i', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "game-files.net", true */ 'g', 'a', 'm', 'e', '-', 'f', 'i', 'l', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "game-gentle.com", true */ 'g', 'a', 'm', 'e', '-', 'g', 'e', 'n', 't', 'l', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "game.yt", true */ 'g', 'a', 'm', 'e', '.', 'y', 't', '\0',
   /* "game7.de", true */ 'g', 'a', 'm', 'e', '7', '.', 'd', 'e', '\0',
   /* "gamecard-shop.nl", true */ 'g', 'a', 'm', 'e', 'c', 'a', 'r', 'd', '-', 's', 'h', 'o', 'p', '.', 'n', 'l', '\0',
   /* "gamecollector.be", true */ 'g', 'a', 'm', 'e', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'o', 'r', '.', 'b', 'e', '\0',
   /* "gamedevelopers.pl", true */ 'g', 'a', 'm', 'e', 'd', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'r', 's', '.', 'p', 'l', '\0',
   /* "gamegix.com", true */ 'g', 'a', 'm', 'e', 'g', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "gameguardian.net", true */ 'g', 'a', 'm', 'e', 'g', 'u', 'a', 'r', 'd', 'i', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "gameisbest.jp", true */ 'g', 'a', 'm', 'e', 'i', 's', 'b', 'e', 's', 't', '.', 'j', 'p', '\0',
   /* "gameofbay.org", true */ 'g', 'a', 'm', 'e', 'o', 'f', 'b', 'a', 'y', '.', 'o', 'r', 'g', '\0',
@@ -4440,17 +4428,16 @@ static const char kSTSHostTable[] = {
   /* "gersting.net", true */ 'g', 'e', 'r', 's', 't', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0',
   /* "gerwinvanderkamp.nl", true */ 'g', 'e', 'r', 'w', 'i', 'n', 'v', 'a', 'n', 'd', 'e', 'r', 'k', 'a', 'm', 'p', '.', 'n', 'l', '\0',
   /* "ges-bo.de", true */ 'g', 'e', 's', '-', 'b', 'o', '.', 'd', 'e', '\0',
   /* "geschwinder.net", true */ 'g', 'e', 's', 'c', 'h', 'w', 'i', 'n', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "gesiwista.net", true */ 'g', 'e', 's', 'i', 'w', 'i', 's', 't', 'a', '.', 'n', 'e', 't', '\0',
   /* "get-asterisk.ru", true */ 'g', 'e', 't', '-', 'a', 's', 't', 'e', 'r', 'i', 's', 'k', '.', 'r', 'u', '\0',
   /* "get-erp.ru", true */ 'g', 'e', 't', '-', 'e', 'r', 'p', '.', 'r', 'u', '\0',
   /* "get4x.com", true */ 'g', 'e', 't', '4', 'x', '.', 'c', 'o', 'm', '\0',
-  /* "getblys.com.au", true */ 'g', 'e', 't', 'b', 'l', 'y', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "getbox.me", true */ 'g', 'e', 't', 'b', 'o', 'x', '.', 'm', 'e', '\0',
   /* "getbutterfly.com", true */ 'g', 'e', 't', 'b', 'u', 't', 't', 'e', 'r', 'f', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "getcarina.com", true */ 'g', 'e', 't', 'c', 'a', 'r', 'i', 'n', 'a', '.', 'c', 'o', 'm', '\0',
   /* "getcloak.com", false */ 'g', 'e', 't', 'c', 'l', 'o', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "getcolq.com", true */ 'g', 'e', 't', 'c', 'o', 'l', 'q', '.', 'c', 'o', 'm', '\0',
   /* "getdash.io", true */ 'g', 'e', 't', 'd', 'a', 's', 'h', '.', 'i', 'o', '\0',
   /* "getdigitized.net", true */ 'g', 'e', 't', 'd', 'i', 'g', 'i', 't', 'i', 'z', 'e', 'd', '.', 'n', 'e', 't', '\0',
   /* "geterp.ru", true */ 'g', 'e', 't', 'e', 'r', 'p', '.', 'r', 'u', '\0',
@@ -4482,22 +4469,22 @@ static const char kSTSHostTable[] = {
   /* "ggp2.com", true */ 'g', 'g', 'p', '2', '.', 'c', 'o', 'm', '\0',
   /* "ggservers.com", true */ 'g', 'g', 's', 'e', 'r', 'v', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "ggss.cf", true */ 'g', 'g', 's', 's', '.', 'c', 'f', '\0',
   /* "ggss.ml", true */ 'g', 'g', 's', 's', '.', 'm', 'l', '\0',
   /* "ggx.us", true */ 'g', 'g', 'x', '.', 'u', 's', '\0',
   /* "gh16.com.ar", true */ 'g', 'h', '1', '6', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "gha.st", true */ 'g', 'h', 'a', '.', 's', 't', '\0',
   /* "ghcif.de", true */ 'g', 'h', 'c', 'i', 'f', '.', 'd', 'e', '\0',
+  /* "gheorghe-sarcov.ga", true */ 'g', 'h', 'e', 'o', 'r', 'g', 'h', 'e', '-', 's', 'a', 'r', 'c', 'o', 'v', '.', 'g', 'a', '\0',
   /* "ghostwritershigh.com", true */ 'g', 'h', 'o', 's', 't', 'w', 'r', 'i', 't', 'e', 'r', 's', 'h', 'i', 'g', 'h', '.', 'c', 'o', 'm', '\0',
   /* "ghrelinblocker.info", true */ 'g', 'h', 'r', 'e', 'l', 'i', 'n', 'b', 'l', 'o', 'c', 'k', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "giacomodrago.com", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'd', 'r', 'a', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "giacomodrago.it", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'd', 'r', 'a', 'g', 'o', '.', 'i', 't', '\0',
   /* "giacomopelagatti.it", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'p', 'e', 'l', 'a', 'g', 'a', 't', 't', 'i', '.', 'i', 't', '\0',
-  /* "giakki.eu", true */ 'g', 'i', 'a', 'k', 'k', 'i', '.', 'e', 'u', '\0',
   /* "gianproperties.com", true */ 'g', 'i', 'a', 'n', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "giant-powerfit.co.uk", true */ 'g', 'i', 'a', 'n', 't', '-', 'p', 'o', 'w', 'e', 'r', 'f', 'i', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "gianttree.de", true */ 'g', 'i', 'a', 'n', 't', 't', 'r', 'e', 'e', '.', 'd', 'e', '\0',
   /* "giftgofers.com", true */ 'g', 'i', 'f', 't', 'g', 'o', 'f', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "giftservices.nl", true */ 'g', 'i', 'f', 't', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'n', 'l', '\0',
   /* "giftsn.com.sg", false */ 'g', 'i', 'f', 't', 's', 'n', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "gifzilla.net", false */ 'g', 'i', 'f', 'z', 'i', 'l', 'l', 'a', '.', 'n', 'e', 't', '\0',
   /* "gig.ru", false */ 'g', 'i', 'g', '.', 'r', 'u', '\0',
@@ -4595,16 +4582,17 @@ static const char kSTSHostTable[] = {
   /* "gong8.win", true */ 'g', 'o', 'n', 'g', '8', '.', 'w', 'i', 'n', '\0',
   /* "gooby.co", true */ 'g', 'o', 'o', 'b', 'y', '.', 'c', 'o', '\0',
   /* "goodmengroup.de", true */ 'g', 'o', 'o', 'd', 'm', 'e', 'n', 'g', 'r', 'o', 'u', 'p', '.', 'd', 'e', '\0',
   /* "google", true */ 'g', 'o', 'o', 'g', 'l', 'e', '\0',
   /* "google-analytics.com", true */ 'g', 'o', 'o', 'g', 'l', 'e', '-', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "googlemail.com", false */ 'g', 'o', 'o', 'g', 'l', 'e', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "googleplex.com", true */ 'g', 'o', 'o', 'g', 'l', 'e', 'p', 'l', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "googlesource.com", true */ 'g', 'o', 'o', 'g', 'l', 'e', 's', 'o', 'u', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "goolok.com", true */ 'g', 'o', 'o', 'l', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "goozz.nl", true */ 'g', 'o', 'o', 'z', 'z', '.', 'n', 'l', '\0',
   /* "gopay.cz", true */ 'g', 'o', 'p', 'a', 'y', '.', 'c', 'z', '\0',
   /* "gopokego.cz", true */ 'g', 'o', 'p', 'o', 'k', 'e', 'g', 'o', '.', 'c', 'z', '\0',
   /* "gordonobrecht.com", true */ 'g', 'o', 'r', 'd', 'o', 'n', 'o', 'b', 'r', 'e', 'c', 'h', 't', '.', 'c', 'o', 'm', '\0',
   /* "gorf.chat", true */ 'g', 'o', 'r', 'f', '.', 'c', 'h', 'a', 't', '\0',
   /* "gorgiaxx.com", true */ 'g', 'o', 'r', 'g', 'i', 'a', 'x', 'x', '.', 'c', 'o', 'm', '\0',
   /* "gorod74.ru", true */ 'g', 'o', 'r', 'o', 'd', '7', '4', '.', 'r', 'u', '\0',
   /* "gorschenin.com", true */ 'g', 'o', 'r', 's', 'c', 'h', 'e', 'n', 'i', 'n', '.', 'c', 'o', 'm', '\0',
@@ -4689,17 +4677,16 @@ static const char kSTSHostTable[] = {
   /* "greensolid.biz", true */ 'g', 'r', 'e', 'e', 'n', 's', 'o', 'l', 'i', 'd', '.', 'b', 'i', 'z', '\0',
   /* "greenteamtwente.nl", true */ 'g', 'r', 'e', 'e', 'n', 't', 'e', 'a', 'm', 't', 'w', 'e', 'n', 't', 'e', '.', 'n', 'l', '\0',
   /* "greg.red", true */ 'g', 'r', 'e', 'g', '.', 'r', 'e', 'd', '\0',
   /* "gregmilton.com", true */ 'g', 'r', 'e', 'g', 'm', 'i', 'l', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "gregmilton.org", true */ 'g', 'r', 'e', 'g', 'm', 'i', 'l', 't', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "gregorians.org", true */ 'g', 'r', 'e', 'g', 'o', 'r', 'i', 'a', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "gregorywiest.com", true */ 'g', 'r', 'e', 'g', 'o', 'r', 'y', 'w', 'i', 'e', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "greiners.net", true */ 'g', 'r', 'e', 'i', 'n', 'e', 'r', 's', '.', 'n', 'e', 't', '\0',
-  /* "gremots.com", true */ 'g', 'r', 'e', 'm', 'o', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "grepular.com", true */ 'g', 'r', 'e', 'p', 'u', 'l', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "gresak.io", true */ 'g', 'r', 'e', 's', 'a', 'k', '.', 'i', 'o', '\0',
   /* "gresb.com", true */ 'g', 'r', 'e', 's', 'b', '.', 'c', 'o', 'm', '\0',
   /* "gretchelizartistry.com", true */ 'g', 'r', 'e', 't', 'c', 'h', 'e', 'l', 'i', 'z', 'a', 'r', 't', 'i', 's', 't', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "grey.house", true */ 'g', 'r', 'e', 'y', '.', 'h', 'o', 'u', 's', 'e', '\0',
   /* "greysolutions.it", true */ 'g', 'r', 'e', 'y', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'i', 't', '\0',
   /* "greywizard.com", true */ 'g', 'r', 'e', 'y', 'w', 'i', 'z', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "grh.am", true */ 'g', 'r', 'h', '.', 'a', 'm', '\0',
@@ -4830,17 +4817,16 @@ static const char kSTSHostTable[] = {
   /* "hadaf.pro", true */ 'h', 'a', 'd', 'a', 'f', '.', 'p', 'r', 'o', '\0',
   /* "hadleighswimmingclub.co.uk", true */ 'h', 'a', 'd', 'l', 'e', 'i', 'g', 'h', 's', 'w', 'i', 'm', 'm', 'i', 'n', 'g', 'c', 'l', 'u', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "haeckdesign.com", true */ 'h', 'a', 'e', 'c', 'k', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "haeckl.eu", true */ 'h', 'a', 'e', 'c', 'k', 'l', '.', 'e', 'u', '\0',
   /* "hafniatimes.com", true */ 'h', 'a', 'f', 'n', 'i', 'a', 't', 'i', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "hail2u.net", true */ 'h', 'a', 'i', 'l', '2', 'u', '.', 'n', 'e', 't', '\0',
   /* "hailer.com", true */ 'h', 'a', 'i', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "haircrazy.com", true */ 'h', 'a', 'i', 'r', 'c', 'r', 'a', 'z', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "hajnzic.at", true */ 'h', 'a', 'j', 'n', 'z', 'i', 'c', '.', 'a', 't', '\0',
   /* "hakase.kr", true */ 'h', 'a', 'k', 'a', 's', 'e', '.', 'k', 'r', '\0',
   /* "hakatabijin-mind.com", true */ 'h', 'a', 'k', 'a', 't', 'a', 'b', 'i', 'j', 'i', 'n', '-', 'm', 'i', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "hake.me", true */ 'h', 'a', 'k', 'e', '.', 'm', 'e', '\0',
   /* "halkyon.net", true */ 'h', 'a', 'l', 'k', 'y', 'o', 'n', '.', 'n', 'e', 't', '\0',
   /* "hallelujahsoftware.com", true */ 'h', 'a', 'l', 'l', 'e', 'l', 'u', 'j', 'a', 'h', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hallmarkestates.ca", true */ 'h', 'a', 'l', 'l', 'm', 'a', 'r', 'k', 'e', 's', 't', 'a', 't', 'e', 's', '.', 'c', 'a', '\0',
   /* "halo.fr", true */ 'h', 'a', 'l', 'o', '.', 'f', 'r', '\0',
   /* "hamali.bg", true */ 'h', 'a', 'm', 'a', 'l', 'i', '.', 'b', 'g', '\0',
@@ -5003,16 +4989,17 @@ static const char kSTSHostTable[] = {
   /* "herds.eu", true */ 'h', 'e', 'r', 'd', 's', '.', 'e', 'u', '\0',
   /* "heritagedentistry.ca", true */ 'h', 'e', 'r', 'i', 't', 'a', 'g', 'e', 'd', 'e', 'n', 't', 'i', 's', 't', 'r', 'y', '.', 'c', 'a', '\0',
   /* "herocentral.de", true */ 'h', 'e', 'r', 'o', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'd', 'e', '\0',
   /* "herr-webdesign.de", true */ 'h', 'e', 'r', 'r', '-', 'w', 'e', 'b', 'd', 'e', 's', 'i', 'g', 'n', '.', 'd', 'e', '\0',
   /* "herrenfahrt.com", true */ 'h', 'e', 'r', 'r', 'e', 'n', 'f', 'a', 'h', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "herringsresidence.be", true */ 'h', 'e', 'r', 'r', 'i', 'n', 'g', 's', 'r', 'e', 's', 'i', 'd', 'e', 'n', 'c', 'e', '.', 'b', 'e', '\0',
   /* "herrsmith.com", true */ 'h', 'e', 'r', 'r', 's', 'm', 'i', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "hesaplama.net", true */ 'h', 'e', 's', 'a', 'p', 'l', 'a', 'm', 'a', '.', 'n', 'e', 't', '\0',
+  /* "hethely.ch", true */ 'h', 'e', 't', 'h', 'e', 'l', 'y', '.', 'c', 'h', '\0',
   /* "hetmer.com", true */ 'h', 'e', 't', 'm', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "heute-kaufen.de", true */ 'h', 'e', 'u', 't', 'e', '-', 'k', 'a', 'u', 'f', 'e', 'n', '.', 'd', 'e', '\0',
   /* "heutger.net", true */ 'h', 'e', 'u', 't', 'g', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "hexacon.io", true */ 'h', 'e', 'x', 'a', 'c', 'o', 'n', '.', 'i', 'o', '\0',
   /* "hexagon-e.com", true */ 'h', 'e', 'x', 'a', 'g', 'o', 'n', '-', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hexed.it", true */ 'h', 'e', 'x', 'e', 'd', '.', 'i', 't', '\0',
   /* "hexicurity.com", true */ 'h', 'e', 'x', 'i', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "hexid.me", true */ 'h', 'e', 'x', 'i', 'd', '.', 'm', 'e', '\0',
@@ -5037,16 +5024,17 @@ static const char kSTSHostTable[] = {
   /* "hilaolu.com", true */ 'h', 'i', 'l', 'a', 'o', 'l', 'u', '.', 'c', 'o', 'm', '\0',
   /* "hilnu.com", true */ 'h', 'i', 'l', 'n', 'u', '.', 'c', 'o', 'm', '\0',
   /* "hilti.ee", false */ 'h', 'i', 'l', 't', 'i', '.', 'e', 'e', '\0',
   /* "hilti.kz", false */ 'h', 'i', 'l', 't', 'i', '.', 'k', 'z', '\0',
   /* "hilti.lv", false */ 'h', 'i', 'l', 't', 'i', '.', 'l', 'v', '\0',
   /* "hintergedanken.com", true */ 'h', 'i', 'n', 't', 'e', 'r', 'g', 'e', 'd', 'a', 'n', 'k', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hintergrundbewegung.de", true */ 'h', 'i', 'n', 't', 'e', 'r', 'g', 'r', 'u', 'n', 'd', 'b', 'e', 'w', 'e', 'g', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "hippies.com.br", true */ 'h', 'i', 'p', 'p', 'i', 'e', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
+  /* "hipstercat.fr", true */ 'h', 'i', 'p', 's', 't', 'e', 'r', 'c', 'a', 't', '.', 'f', 'r', '\0',
   /* "hiqhub.co.uk", true */ 'h', 'i', 'q', 'h', 'u', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hiqonline.co.uk", true */ 'h', 'i', 'q', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hirake55.com", true */ 'h', 'i', 'r', 'a', 'k', 'e', '5', '5', '.', 'c', 'o', 'm', '\0',
   /* "hisbrucker.net", true */ 'h', 'i', 's', 'b', 'r', 'u', 'c', 'k', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "hispanic.dating", true */ 'h', 'i', 's', 'p', 'a', 'n', 'i', 'c', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "history.google.com", false */ 'h', 'i', 's', 't', 'o', 'r', 'y', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hititgunesi-tr.com", true */ 'h', 'i', 't', 'i', 't', 'g', 'u', 'n', 'e', 's', 'i', '-', 't', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hiv.gov", true */ 'h', 'i', 'v', '.', 'g', 'o', 'v', '\0',
@@ -5181,17 +5169,16 @@ static const char kSTSHostTable[] = {
   /* "hszhyy120.com", true */ 'h', 's', 'z', 'h', 'y', 'y', '1', '2', '0', '.', 'c', 'o', 'm', '\0',
   /* "htaccessbook.com", true */ 'h', 't', 'a', 'c', 'c', 'e', 's', 's', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "html-lab.tk", true */ 'h', 't', 'm', 'l', '-', 'l', 'a', 'b', '.', 't', 'k', '\0',
   /* "html5.org", true */ 'h', 't', 'm', 'l', '5', '.', 'o', 'r', 'g', '\0',
   /* "htmlacademy.ru", true */ 'h', 't', 'm', 'l', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'r', 'u', '\0',
   /* "htmue.org", true */ 'h', 't', 'm', 'u', 'e', '.', 'o', 'r', 'g', '\0',
   /* "httpsecurityreport.com", true */ 'h', 't', 't', 'p', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'r', 'e', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "httpswatch.ca", true */ 'h', 't', 't', 'p', 's', 'w', 'a', 't', 'c', 'h', '.', 'c', 'a', '\0',
-  /* "httpswatch.com", true */ 'h', 't', 't', 'p', 's', 'w', 'a', 't', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "huagati.com", true */ 'h', 'u', 'a', 'g', 'a', 't', 'i', '.', 'c', 'o', 'm', '\0',
   /* "huang.nu", true */ 'h', 'u', 'a', 'n', 'g', '.', 'n', 'u', '\0',
   /* "huaxueba.com", true */ 'h', 'u', 'a', 'x', 'u', 'e', 'b', 'a', '.', 'c', 'o', 'm', '\0',
   /* "hubert.systems", true */ 'h', 'u', 'b', 'e', 'r', 't', '.', 's', 'y', 's', 't', 'e', 'm', 's', '\0',
   /* "hudingyuan.cn", true */ 'h', 'u', 'd', 'i', 'n', 'g', 'y', 'u', 'a', 'n', '.', 'c', 'n', '\0',
   /* "huersch.com", true */ 'h', 'u', 'e', 'r', 's', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "huffduffer.com", true */ 'h', 'u', 'f', 'f', 'd', 'u', 'f', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hugocollignon.fr", false */ 'h', 'u', 'g', 'o', 'c', 'o', 'l', 'l', 'i', 'g', 'n', 'o', 'n', '.', 'f', 'r', '\0',
@@ -5231,17 +5218,16 @@ static const char kSTSHostTable[] = {
   /* "i-stats.net", true */ 'i', '-', 's', 't', 'a', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "i10z.com", false */ 'i', '1', '0', 'z', '.', 'c', 'o', 'm', '\0',
   /* "i1314.gdn", true */ 'i', '1', '3', '1', '4', '.', 'g', 'd', 'n', '\0',
   /* "i5y.co.uk", true */ 'i', '5', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "i95.me", false */ 'i', '9', '5', '.', 'm', 'e', '\0',
   /* "iactu.info", true */ 'i', 'a', 'c', 't', 'u', '.', 'i', 'n', 'f', 'o', '\0',
   /* "iainsimms.me", true */ 'i', 'a', 'i', 'n', 's', 'i', 'm', 'm', 's', '.', 'm', 'e', '\0',
   /* "iamcarrico.com", true */ 'i', 'a', 'm', 'c', 'a', 'r', 'r', 'i', 'c', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "iamusingtheinter.net", true */ 'i', 'a', 'm', 'u', 's', 'i', 'n', 'g', 't', 'h', 'e', 'i', 'n', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "ian.sh", true */ 'i', 'a', 'n', '.', 's', 'h', '\0',
   /* "iandouglasscott.com", true */ 'i', 'a', 'n', 'd', 'o', 'u', 'g', 'l', 'a', 's', 's', 'c', 'o', 't', 't', '.', 'c', 'o', 'm', '\0',
   /* "ianix.com", true */ 'i', 'a', 'n', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "iavian.com", true */ 'i', 'a', 'v', 'i', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ib-wedler.de", true */ 'i', 'b', '-', 'w', 'e', 'd', 'l', 'e', 'r', '.', 'd', 'e', '\0',
   /* "iba.community", true */ 'i', 'b', 'a', '.', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '\0',
   /* "ibarf.nl", true */ 'i', 'b', 'a', 'r', 'f', '.', 'n', 'l', '\0',
   /* "ibnuwebhost.com", true */ 'i', 'b', 'n', 'u', 'w', 'e', 'b', 'h', 'o', 's', 't', '.', 'c', 'o', 'm', '\0',
@@ -5250,16 +5236,17 @@ static const char kSTSHostTable[] = {
   /* "ic3.gov", true */ 'i', 'c', '3', '.', 'g', 'o', 'v', '\0',
   /* "icarlos.net", true */ 'i', 'c', 'a', 'r', 'l', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "ice.yt", true */ 'i', 'c', 'e', '.', 'y', 't', '\0',
   /* "icebat.dyndns.org", true */ 'i', 'c', 'e', 'b', 'a', 't', '.', 'd', 'y', 'n', 'd', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "icfl.com.br", true */ 'i', 'c', 'f', 'l', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "ich-tanke.de", true */ 'i', 'c', 'h', '-', 't', 'a', 'n', 'k', 'e', '.', 'd', 'e', '\0',
   /* "ichoosebtec.com", true */ 'i', 'c', 'h', 'o', 'o', 's', 'e', 'b', 't', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "ichronos.net", true */ 'i', 'c', 'h', 'r', 'o', 'n', 'o', 's', '.', 'n', 'e', 't', '\0',
+  /* "icij.org", true */ 'i', 'c', 'i', 'j', '.', 'o', 'r', 'g', '\0',
   /* "icity.ly", true */ 'i', 'c', 'i', 't', 'y', '.', 'l', 'y', '\0',
   /* "icloud.net", true */ 'i', 'c', 'l', 'o', 'u', 'd', '.', 'n', 'e', 't', '\0',
   /* "icntorrent.download", true */ 'i', 'c', 'n', 't', 'o', 'r', 'r', 'e', 'n', 't', '.', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', '\0',
   /* "icpc2016.in.th", true */ 'i', 'c', 'p', 'c', '2', '0', '1', '6', '.', 'i', 'n', '.', 't', 'h', '\0',
   /* "icq-project.net", true */ 'i', 'c', 'q', '-', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'n', 'e', 't', '\0',
   /* "ict-concept.nl", false */ 'i', 'c', 't', '-', 'c', 'o', 'n', 'c', 'e', 'p', 't', '.', 'n', 'l', '\0',
   /* "ictinforensics.org", true */ 'i', 'c', 't', 'i', 'n', 'f', 'o', 'r', 'e', 'n', 's', 'i', 'c', 's', '.', 'o', 'r', 'g', '\0',
   /* "icymint.me", true */ 'i', 'c', 'y', 'm', 'i', 'n', 't', '.', 'm', 'e', '\0',
@@ -5276,17 +5263,16 @@ static const char kSTSHostTable[] = {
   /* "ideaweb.de", true */ 'i', 'd', 'e', 'a', 'w', 'e', 'b', '.', 'd', 'e', '\0',
   /* "idedr.com", true */ 'i', 'd', 'e', 'd', 'r', '.', 'c', 'o', 'm', '\0',
   /* "idemo.in", true */ 'i', 'd', 'e', 'm', 'o', '.', 'i', 'n', '\0',
   /* "idensys.nl", true */ 'i', 'd', 'e', 'n', 's', 'y', 's', '.', 'n', 'l', '\0',
   /* "identitytheft.gov", true */ 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', 't', 'h', 'e', 'f', 't', '.', 'g', 'o', 'v', '\0',
   /* "idexxpublicationportal.com", true */ 'i', 'd', 'e', 'x', 'x', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'p', 'o', 'r', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "idgard.de", true */ 'i', 'd', 'g', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "idiopolis.org", true */ 'i', 'd', 'i', 'o', 'p', 'o', 'l', 'i', 's', '.', 'o', 'r', 'g', '\0',
-  /* "idlekernel.com", true */ 'i', 'd', 'l', 'e', 'k', 'e', 'r', 'n', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "idmobile.co.uk", true */ 'i', 'd', 'm', 'o', 'b', 'i', 'l', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "idndx.com", true */ 'i', 'd', 'n', 'd', 'x', '.', 'c', 'o', 'm', '\0',
   /* "idoc24.com", true */ 'i', 'd', 'o', 'c', '2', '4', '.', 'c', 'o', 'm', '\0',
   /* "idolf.dk", true */ 'i', 'd', 'o', 'l', 'f', '.', 'd', 'k', '\0',
   /* "idontexist.me", true */ 'i', 'd', 'o', 'n', 't', 'e', 'x', 'i', 's', 't', '.', 'm', 'e', '\0',
   /* "idontplaydarts.com", true */ 'i', 'd', 'o', 'n', 't', 'p', 'l', 'a', 'y', 'd', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "idsafe.co.za", true */ 'i', 'd', 's', 'a', 'f', 'e', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "idubaj.cz", true */ 'i', 'd', 'u', 'b', 'a', 'j', '.', 'c', 'z', '\0',
@@ -5744,16 +5730,17 @@ static const char kSTSHostTable[] = {
   /* "janoberst.com", true */ 'j', 'a', 'n', 'o', 'b', 'e', 'r', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "janokacer.sk", true */ 'j', 'a', 'n', 'o', 'k', 'a', 'c', 'e', 'r', '.', 's', 'k', '\0',
   /* "janosh.com", true */ 'j', 'a', 'n', 'o', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "janverlaan.nl", true */ 'j', 'a', 'n', 'v', 'e', 'r', 'l', 'a', 'a', 'n', '.', 'n', 'l', '\0',
   /* "jaot.info", true */ 'j', 'a', 'o', 't', '.', 'i', 'n', 'f', 'o', '\0',
   /* "japan-foods.co.uk", true */ 'j', 'a', 'p', 'a', 'n', '-', 'f', 'o', 'o', 'd', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "japan4you.org", true */ 'j', 'a', 'p', 'a', 'n', '4', 'y', 'o', 'u', '.', 'o', 'r', 'g', '\0',
   /* "japaniac.de", true */ 'j', 'a', 'p', 'a', 'n', 'i', 'a', 'c', '.', 'd', 'e', '\0',
+  /* "jardins-utopie.net", true */ 'j', 'a', 'r', 'd', 'i', 'n', 's', '-', 'u', 't', 'o', 'p', 'i', 'e', '.', 'n', 'e', 't', '\0',
   /* "jaredbates.net", false */ 'j', 'a', 'r', 'e', 'd', 'b', 'a', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "jaredfernandez.com", true */ 'j', 'a', 'r', 'e', 'd', 'f', 'e', 'r', 'n', 'a', 'n', 'd', 'e', 'z', '.', 'c', 'o', 'm', '\0',
   /* "jarsater.com", true */ 'j', 'a', 'r', 's', 'a', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "jasonamorrow.com", true */ 'j', 'a', 's', 'o', 'n', 'a', 'm', 'o', 'r', 'r', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "jasonsansone.com", true */ 'j', 'a', 's', 'o', 'n', 's', 'a', 'n', 's', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "jasperespejo.com", true */ 'j', 'a', 's', 'p', 'e', 'r', 'e', 's', 'p', 'e', 'j', 'o', '.', 'c', 'o', 'm', '\0',
   /* "jasperhammink.com", true */ 'j', 'a', 's', 'p', 'e', 'r', 'h', 'a', 'm', 'm', 'i', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "jasperhuttenmedia.com", true */ 'j', 'a', 's', 'p', 'e', 'r', 'h', 'u', 't', 't', 'e', 'n', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
@@ -5880,16 +5867,17 @@ static const char kSTSHostTable[] = {
   /* "johnmichel.org", true */ 'j', 'o', 'h', 'n', 'm', 'i', 'c', 'h', 'e', 'l', '.', 'o', 'r', 'g', '\0',
   /* "johnnybet.com", true */ 'j', 'o', 'h', 'n', 'n', 'y', 'b', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "johnroach.io", true */ 'j', 'o', 'h', 'n', 'r', 'o', 'a', 'c', 'h', '.', 'i', 'o', '\0',
   /* "johnverkerk.com", true */ 'j', 'o', 'h', 'n', 'v', 'e', 'r', 'k', 'e', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "jointoweb.com", true */ 'j', 'o', 'i', 'n', 't', 'o', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
   /* "jokewignand.nl", true */ 'j', 'o', 'k', 'e', 'w', 'i', 'g', 'n', 'a', 'n', 'd', '.', 'n', 'l', '\0',
   /* "jollausers.de", true */ 'j', 'o', 'l', 'l', 'a', 'u', 's', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "jonarcher.info", true */ 'j', 'o', 'n', 'a', 'r', 'c', 'h', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
+  /* "jonas-thelemann.de", true */ 'j', 'o', 'n', 'a', 's', '-', 't', 'h', 'e', 'l', 'e', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "jonaskjodt.com", true */ 'j', 'o', 'n', 'a', 's', 'k', 'j', 'o', 'd', 't', '.', 'c', 'o', 'm', '\0',
   /* "jonaswitmer.ch", true */ 'j', 'o', 'n', 'a', 's', 'w', 'i', 't', 'm', 'e', 'r', '.', 'c', 'h', '\0',
   /* "jonathan-apps.com", true */ 'j', 'o', 'n', 'a', 't', 'h', 'a', 'n', '-', 'a', 'p', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "jonathandowning.uk", true */ 'j', 'o', 'n', 'a', 't', 'h', 'a', 'n', 'd', 'o', 'w', 'n', 'i', 'n', 'g', '.', 'u', 'k', '\0',
   /* "jondarby.com", true */ 'j', 'o', 'n', 'd', 'a', 'r', 'b', 'y', '.', 'c', 'o', 'm', '\0',
   /* "jondevin.com", true */ 'j', 'o', 'n', 'd', 'e', 'v', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "jonesborostatebank.com", true */ 'j', 'o', 'n', 'e', 's', 'b', 'o', 'r', 'o', 's', 't', 'a', 't', 'e', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "jonferwerda.net", true */ 'j', 'o', 'n', 'f', 'e', 'r', 'w', 'e', 'r', 'd', 'a', '.', 'n', 'e', 't', '\0',
@@ -5990,17 +5978,16 @@ static const char kSTSHostTable[] = {
   /* "k-netz.de", true */ 'k', '-', 'n', 'e', 't', 'z', '.', 'd', 'e', '\0',
   /* "k-tube.com", true */ 'k', '-', 't', 'u', 'b', 'e', '.', 'c', 'o', 'm', '\0',
   /* "k2mts.org", true */ 'k', '2', 'm', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "kaangenc.me", true */ 'k', 'a', 'a', 'n', 'g', 'e', 'n', 'c', '.', 'm', 'e', '\0',
   /* "kaasbijwijn.nl", true */ 'k', 'a', 'a', 's', 'b', 'i', 'j', 'w', 'i', 'j', 'n', '.', 'n', 'l', '\0',
   /* "kab-s.de", true */ 'k', 'a', 'b', '-', 's', '.', 'd', 'e', '\0',
   /* "kabat-fans.cz", true */ 'k', 'a', 'b', 'a', 't', '-', 'f', 'a', 'n', 's', '.', 'c', 'z', '\0',
   /* "kabeuchi.com", true */ 'k', 'a', 'b', 'e', 'u', 'c', 'h', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "kachlikova2.cz", true */ 'k', 'a', 'c', 'h', 'l', 'i', 'k', 'o', 'v', 'a', '2', '.', 'c', 'z', '\0',
   /* "kackscharf.de", true */ 'k', 'a', 'c', 'k', 's', 'c', 'h', 'a', 'r', 'f', '.', 'd', 'e', '\0',
   /* "kadmec.com", true */ 'k', 'a', 'd', 'm', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "kaela.design", true */ 'k', 'a', 'e', 'l', 'a', '.', 'd', 'e', 's', 'i', 'g', 'n', '\0',
   /* "kaheim.de", false */ 'k', 'a', 'h', 'e', 'i', 'm', '.', 'd', 'e', '\0',
   /* "kaileymslusser.com", true */ 'k', 'a', 'i', 'l', 'e', 'y', 'm', 's', 'l', 'u', 's', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kainz.bayern", true */ 'k', 'a', 'i', 'n', 'z', '.', 'b', 'a', 'y', 'e', 'r', 'n', '\0',
   /* "kainz.be", true */ 'k', 'a', 'i', 'n', 'z', '.', 'b', 'e', '\0',
   /* "kairion.de", true */ 'k', 'a', 'i', 'r', 'i', 'o', 'n', '.', 'd', 'e', '\0',
@@ -6064,17 +6051,16 @@ static const char kSTSHostTable[] = {
   /* "kasilag.me", true */ 'k', 'a', 's', 'i', 'l', 'a', 'g', '.', 'm', 'e', '\0',
   /* "kasko.io", true */ 'k', 'a', 's', 'k', 'o', '.', 'i', 'o', '\0',
   /* "kassa.at", true */ 'k', 'a', 's', 's', 'a', '.', 'a', 't', '\0',
   /* "kat.al", true */ 'k', 'a', 't', '.', 'a', 'l', '\0',
   /* "kateduggan.net", true */ 'k', 'a', 't', 'e', 'd', 'u', 'g', 'g', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "katekligys.com", true */ 'k', 'a', 't', 'e', 'k', 'l', 'i', 'g', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "katericke.com", true */ 'k', 'a', 't', 'e', 'r', 'i', 'c', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kati-raumplaner.de", true */ 'k', 'a', 't', 'i', '-', 'r', 'a', 'u', 'm', 'p', 'l', 'a', 'n', 'e', 'r', '.', 'd', 'e', '\0',
-  /* "katka.info", true */ 'k', 'a', 't', 'k', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "katnunn.co.uk", true */ 'k', 'a', 't', 'n', 'u', 'n', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "katproxy.al", true */ 'k', 'a', 't', 'p', 'r', 'o', 'x', 'y', '.', 'a', 'l', '\0',
   /* "katproxy.top", true */ 'k', 'a', 't', 'p', 'r', 'o', 'x', 'y', '.', 't', 'o', 'p', '\0',
   /* "kattelans.eu", true */ 'k', 'a', 't', 't', 'e', 'l', 'a', 'n', 's', '.', 'e', 'u', '\0',
   /* "katyl.info", true */ 'k', 'a', 't', 'y', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "kau-boys.com", true */ 'k', 'a', 'u', '-', 'b', 'o', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "kau-boys.de", true */ 'k', 'a', 'u', '-', 'b', 'o', 'y', 's', '.', 'd', 'e', '\0',
   /* "kaufberatung.community", true */ 'k', 'a', 'u', 'f', 'b', 'e', 'r', 'a', 't', 'u', 'n', 'g', '.', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '\0',
@@ -6169,16 +6155,17 @@ static const char kSTSHostTable[] = {
   /* "kiedys.net", true */ 'k', 'i', 'e', 'd', 'y', 's', '.', 'n', 'e', 't', '\0',
   /* "kiekin.org", true */ 'k', 'i', 'e', 'k', 'i', 'n', '.', 'o', 'r', 'g', '\0',
   /* "kielderweather.org.uk", true */ 'k', 'i', 'e', 'l', 'd', 'e', 'r', 'w', 'e', 'a', 't', 'h', 'e', 'r', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "kienlen.org", true */ 'k', 'i', 'e', 'n', 'l', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "kiffmarks.com", true */ 'k', 'i', 'f', 'f', 'm', 'a', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "kigmbh.com", true */ 'k', 'i', 'g', 'm', 'b', 'h', '.', 'c', 'o', 'm', '\0',
   /* "kikuzuki.org", false */ 'k', 'i', 'k', 'u', 'z', 'u', 'k', 'i', '.', 'o', 'r', 'g', '\0',
   /* "kilerd.me", true */ 'k', 'i', 'l', 'e', 'r', 'd', '.', 'm', 'e', '\0',
+  /* "kilianvalkhof.com", true */ 'k', 'i', 'l', 'i', 'a', 'n', 'v', 'a', 'l', 'k', 'h', 'o', 'f', '.', 'c', 'o', 'm', '\0',
   /* "killerrobots.com", true */ 'k', 'i', 'l', 'l', 'e', 'r', 'r', 'o', 'b', 'o', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "kilobyte22.de", true */ 'k', 'i', 'l', 'o', 'b', 'y', 't', 'e', '2', '2', '.', 'd', 'e', '\0',
   /* "kilogram.nl", true */ 'k', 'i', 'l', 'o', 'g', 'r', 'a', 'm', '.', 'n', 'l', '\0',
   /* "kilometertje.nl", true */ 'k', 'i', 'l', 'o', 'm', 'e', 't', 'e', 'r', 't', 'j', 'e', '.', 'n', 'l', '\0',
   /* "kimberg.co.uk", true */ 'k', 'i', 'm', 'b', 'e', 'r', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "kimmel.com", true */ 'k', 'i', 'm', 'm', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "kimmel.in", true */ 'k', 'i', 'm', 'm', 'e', 'l', '.', 'i', 'n', '\0',
   /* "kinderbasar-luhe.de", true */ 'k', 'i', 'n', 'd', 'e', 'r', 'b', 'a', 's', 'a', 'r', '-', 'l', 'u', 'h', 'e', '.', 'd', 'e', '\0',
@@ -6197,31 +6184,31 @@ static const char kSTSHostTable[] = {
   /* "kinomoto.me", true */ 'k', 'i', 'n', 'o', 'm', 'o', 't', 'o', '.', 'm', 'e', '\0',
   /* "kinomoto.ovh", true */ 'k', 'i', 'n', 'o', 'm', 'o', 't', 'o', '.', 'o', 'v', 'h', '\0',
   /* "kinsights.com", false */ 'k', 'i', 'n', 's', 'i', 'g', 'h', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "kintawifi.com", true */ 'k', 'i', 'n', 't', 'a', 'w', 'i', 'f', 'i', '.', 'c', 'o', 'm', '\0',
   /* "kintone.com", true */ 'k', 'i', 'n', 't', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kintore.tv", true */ 'k', 'i', 'n', 't', 'o', 'r', 'e', '.', 't', 'v', '\0',
   /* "kintrip.com", true */ 'k', 'i', 'n', 't', 'r', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "kintzingerfilm.de", true */ 'k', 'i', 'n', 't', 'z', 'i', 'n', 'g', 'e', 'r', 'f', 'i', 'l', 'm', '.', 'd', 'e', '\0',
+  /* "kiocloud.com", true */ 'k', 'i', 'o', 'c', 'l', 'o', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "kionetworks.es", true */ 'k', 'i', 'o', 'n', 'e', 't', 'w', 'o', 'r', 'k', 's', '.', 'e', 's', '\0',
   /* "kipira.com", true */ 'k', 'i', 'p', 'i', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "kirara.eu", true */ 'k', 'i', 'r', 'a', 'r', 'a', '.', 'e', 'u', '\0',
   /* "kirbear.com", true */ 'k', 'i', 'r', 'b', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kircp.com", true */ 'k', 'i', 'r', 'c', 'p', '.', 'c', 'o', 'm', '\0',
   /* "kirei.se", true */ 'k', 'i', 'r', 'e', 'i', '.', 's', 'e', '\0',
   /* "kirinas.com", true */ 'k', 'i', 'r', 'i', 'n', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "kirkovsky.com", true */ 'k', 'i', 'r', 'k', 'o', 'v', 's', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "kirsch-gestaltung.de", true */ 'k', 'i', 'r', 's', 'c', 'h', '-', 'g', 'e', 's', 't', 'a', 'l', 't', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "kirschbaum.me", true */ 'k', 'i', 'r', 's', 'c', 'h', 'b', 'a', 'u', 'm', '.', 'm', 'e', '\0',
   /* "kirstenbos.ca", true */ 'k', 'i', 'r', 's', 't', 'e', 'n', 'b', 'o', 's', '.', 'c', 'a', '\0',
   /* "kirstin-peters.de", true */ 'k', 'i', 'r', 's', 't', 'i', 'n', '-', 'p', 'e', 't', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "kis-toitoidixi.de", true */ 'k', 'i', 's', '-', 't', 'o', 'i', 't', 'o', 'i', 'd', 'i', 'x', 'i', '.', 'd', 'e', '\0',
   /* "kisa.io", true */ 'k', 'i', 's', 'a', '.', 'i', 'o', '\0',
-  /* "kisalt.im", true */ 'k', 'i', 's', 'a', 'l', 't', '.', 'i', 'm', '\0',
   /* "kissflow.com", true */ 'k', 'i', 's', 's', 'f', 'l', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "kisskiss.ch", true */ 'k', 'i', 's', 's', 'k', 'i', 's', 's', '.', 'c', 'h', '\0',
   /* "kisstyle.ru", true */ 'k', 'i', 's', 's', 't', 'y', 'l', 'e', '.', 'r', 'u', '\0',
   /* "kisun.co.jp", true */ 'k', 'i', 's', 'u', 'n', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "kita.id", true */ 'k', 'i', 't', 'a', '.', 'i', 'd', '\0',
   /* "kitabgaul.com", true */ 'k', 'i', 't', 'a', 'b', 'g', 'a', 'u', 'l', '.', 'c', 'o', 'm', '\0',
   /* "kitsostech.com", true */ 'k', 'i', 't', 's', 'o', 's', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "kittmedia.com", true */ 'k', 'i', 't', 't', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
@@ -6411,17 +6398,16 @@ static const char kSTSHostTable[] = {
   /* "kupschke.net", true */ 'k', 'u', 'p', 's', 'c', 'h', 'k', 'e', '.', 'n', 'e', 't', '\0',
   /* "kurofuku.me", true */ 'k', 'u', 'r', 'o', 'f', 'u', 'k', 'u', '.', 'm', 'e', '\0',
   /* "kurswahl-online.de", true */ 'k', 'u', 'r', 's', 'w', 'a', 'h', 'l', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'd', 'e', '\0',
   /* "kurtmclester.com", true */ 'k', 'u', 'r', 't', 'm', 'c', 'l', 'e', 's', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kuschelmikroben.de", true */ 'k', 'u', 's', 'c', 'h', 'e', 'l', 'm', 'i', 'k', 'r', 'o', 'b', 'e', 'n', '.', 'd', 'e', '\0',
   /* "kutukupret.com", true */ 'k', 'u', 't', 'u', 'k', 'u', 'p', 'r', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "kuwago.io", true */ 'k', 'u', 'w', 'a', 'g', 'o', '.', 'i', 'o', '\0',
   /* "kvalita-1a.cz", true */ 'k', 'v', 'a', 'l', 'i', 't', 'a', '-', '1', 'a', '.', 'c', 'z', '\0',
-  /* "kwbresidential.com", true */ 'k', 'w', 'b', 'r', 'e', 's', 'i', 'd', 'e', 'n', 't', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "kwidz.fr", true */ 'k', 'w', 'i', 'd', 'z', '.', 'f', 'r', '\0',
   /* "kwikmed.eu", false */ 'k', 'w', 'i', 'k', 'm', 'e', 'd', '.', 'e', 'u', '\0',
   /* "kwmr.me", true */ 'k', 'w', 'm', 'r', '.', 'm', 'e', '\0',
   /* "kwok.cc", true */ 'k', 'w', 'o', 'k', '.', 'c', 'c', '\0',
   /* "kybi.sk", true */ 'k', 'y', 'b', 'i', '.', 's', 'k', '\0',
   /* "kykoonn.net", true */ 'k', 'y', 'k', 'o', 'o', 'n', 'n', '.', 'n', 'e', 't', '\0',
   /* "kylapps.com", true */ 'k', 'y', 'l', 'a', 'p', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "kylelaker.com", true */ 'k', 'y', 'l', 'e', 'l', 'a', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
@@ -6597,16 +6583,17 @@ static const char kSTSHostTable[] = {
   /* "lenzw.de", true */ 'l', 'e', 'n', 'z', 'w', '.', 'd', 'e', '\0',
   /* "leob.in", true */ 'l', 'e', 'o', 'b', '.', 'i', 'n', '\0',
   /* "leominstercu.com", false */ 'l', 'e', 'o', 'm', 'i', 'n', 's', 't', 'e', 'r', 'c', 'u', '.', 'c', 'o', 'm', '\0',
   /* "leonard.io", true */ 'l', 'e', 'o', 'n', 'a', 'r', 'd', '.', 'i', 'o', '\0',
   /* "leonardcamacho.me", true */ 'l', 'e', 'o', 'n', 'a', 'r', 'd', 'c', 'a', 'm', 'a', 'c', 'h', 'o', '.', 'm', 'e', '\0',
   /* "leonax.net", true */ 'l', 'e', 'o', 'n', 'a', 'x', '.', 'n', 'e', 't', '\0',
   /* "leonklingele.de", true */ 'l', 'e', 'o', 'n', 'k', 'l', 'i', 'n', 'g', 'e', 'l', 'e', '.', 'd', 'e', '\0',
   /* "leonmahler.consulting", true */ 'l', 'e', 'o', 'n', 'm', 'a', 'h', 'l', 'e', 'r', '.', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '\0',
+  /* "lepont.pl", true */ 'l', 'e', 'p', 'o', 'n', 't', '.', 'p', 'l', '\0',
   /* "leppis-it.de", true */ 'l', 'e', 'p', 'p', 'i', 's', '-', 'i', 't', '.', 'd', 'e', '\0',
   /* "leprado.com", true */ 'l', 'e', 'p', 'r', 'a', 'd', 'o', '.', 'c', 'o', 'm', '\0',
   /* "lerasenglish.com", true */ 'l', 'e', 'r', 'a', 's', 'e', 'n', 'g', 'l', 'i', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "lerku.com", true */ 'l', 'e', 'r', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "lernorteuropa.com", true */ 'l', 'e', 'r', 'n', 'o', 'r', 't', 'e', 'u', 'r', 'o', 'p', 'a', '.', 'c', 'o', 'm', '\0',
   /* "lernorteuropa.de", true */ 'l', 'e', 'r', 'n', 'o', 'r', 't', 'e', 'u', 'r', 'o', 'p', 'a', '.', 'd', 'e', '\0',
   /* "lernorteuropa.eu", true */ 'l', 'e', 'r', 'n', 'o', 'r', 't', 'e', 'u', 'r', 'o', 'p', 'a', '.', 'e', 'u', '\0',
   /* "lerp.me", true */ 'l', 'e', 'r', 'p', '.', 'm', 'e', '\0',
@@ -6721,17 +6708,17 @@ static const char kSTSHostTable[] = {
   /* "lister-kirchweg.de", true */ 'l', 'i', 's', 't', 'e', 'r', '-', 'k', 'i', 'r', 'c', 'h', 'w', 'e', 'g', '.', 'd', 'e', '\0',
   /* "listminut.be", true */ 'l', 'i', 's', 't', 'm', 'i', 'n', 'u', 't', '.', 'b', 'e', '\0',
   /* "lists.fedoraproject.org", true */ 'l', 'i', 's', 't', 's', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "lists.mayfirst.org", false */ 'l', 'i', 's', 't', 's', '.', 'm', 'a', 'y', 'f', 'i', 'r', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "lists.stg.fedoraproject.org", true */ 'l', 'i', 's', 't', 's', '.', 's', 't', 'g', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "litchidova.nl", true */ 'l', 'i', 't', 'c', 'h', 'i', 'd', 'o', 'v', 'a', '.', 'n', 'l', '\0',
   /* "litevault.net", true */ 'l', 'i', 't', 'e', 'v', 'a', 'u', 'l', 't', '.', 'n', 'e', 't', '\0',
   /* "litfin.name", true */ 'l', 'i', 't', 'f', 'i', 'n', '.', 'n', 'a', 'm', 'e', '\0',
-  /* "lithesalar.se", true */ 'l', 'i', 't', 'h', 'e', 's', 'a', 'l', 'a', 'r', '.', 's', 'e', '\0',
+  /* "lithesalar.se", false */ 'l', 'i', 't', 'h', 'e', 's', 'a', 'l', 'a', 'r', '.', 's', 'e', '\0',
   /* "little.pw", true */ 'l', 'i', 't', 't', 'l', 'e', '.', 'p', 'w', '\0',
   /* "littlefreelibrary.org", true */ 'l', 'i', 't', 't', 'l', 'e', 'f', 'r', 'e', 'e', 'l', 'i', 'b', 'r', 'a', 'r', 'y', '.', 'o', 'r', 'g', '\0',
   /* "litvideoserver.de", true */ 'l', 'i', 't', 'v', 'i', 'd', 'e', 'o', 's', 'e', 'r', 'v', 'e', 'r', '.', 'd', 'e', '\0',
   /* "liud.im", true */ 'l', 'i', 'u', 'd', '.', 'i', 'm', '\0',
   /* "liudon.org", true */ 'l', 'i', 'u', 'd', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "livecards.co.uk", true */ 'l', 'i', 'v', 'e', 'c', 'a', 'r', 'd', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "livedesign.at", true */ 'l', 'i', 'v', 'e', 'd', 'e', 's', 'i', 'g', 'n', '.', 'a', 't', '\0',
   /* "liveforspeed.se", true */ 'l', 'i', 'v', 'e', 'f', 'o', 'r', 's', 'p', 'e', 'e', 'd', '.', 's', 'e', '\0',
@@ -6858,17 +6845,16 @@ static const char kSTSHostTable[] = {
   /* "lover-bg.com", true */ 'l', 'o', 'v', 'e', 'r', '-', 'b', 'g', '.', 'c', 'o', 'm', '\0',
   /* "loveyounastya.com", true */ 'l', 'o', 'v', 'e', 'y', 'o', 'u', 'n', 'a', 's', 't', 'y', 'a', '.', 'c', 'o', 'm', '\0',
   /* "lovingearth.co", true */ 'l', 'o', 'v', 'i', 'n', 'g', 'e', 'a', 'r', 't', 'h', '.', 'c', 'o', '\0',
   /* "lovingearth.net", true */ 'l', 'o', 'v', 'i', 'n', 'g', 'e', 'a', 'r', 't', 'h', '.', 'n', 'e', 't', '\0',
   /* "lovizaim.ru", true */ 'l', 'o', 'v', 'i', 'z', 'a', 'i', 'm', '.', 'r', 'u', '\0',
   /* "lowhangingfruitgrabber.com", true */ 'l', 'o', 'w', 'h', 'a', 'n', 'g', 'i', 'n', 'g', 'f', 'r', 'u', 'i', 't', 'g', 'r', 'a', 'b', 'b', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "lowmagnitude.com", true */ 'l', 'o', 'w', 'm', 'a', 'g', 'n', 'i', 't', 'u', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "lowsidetna.com", true */ 'l', 'o', 'w', 's', 'i', 'd', 'e', 't', 'n', 'a', '.', 'c', 'o', 'm', '\0',
-  /* "loxis.be", true */ 'l', 'o', 'x', 'i', 's', '.', 'b', 'e', '\0',
   /* "lpbk-bethel.de", false */ 'l', 'p', 'b', 'k', '-', 'b', 'e', 't', 'h', 'e', 'l', '.', 'd', 'e', '\0',
   /* "lpm-uk.com", true */ 'l', 'p', 'm', '-', 'u', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ls-alarm.de", true */ 'l', 's', '-', 'a', 'l', 'a', 'r', 'm', '.', 'd', 'e', '\0',
   /* "ltba.org", true */ 'l', 't', 'b', 'a', '.', 'o', 'r', 'g', '\0',
   /* "ltn-tom-morel.fr", true */ 'l', 't', 'n', '-', 't', 'o', 'm', '-', 'm', 'o', 'r', 'e', 'l', '.', 'f', 'r', '\0',
   /* "lubot.net", false */ 'l', 'u', 'b', 'o', 't', '.', 'n', 'e', 't', '\0',
   /* "lucaterzini.com", true */ 'l', 'u', 'c', 'a', 't', 'e', 'r', 'z', 'i', 'n', 'i', '.', 'c', 'o', 'm', '\0',
   /* "luce.life", true */ 'l', 'u', 'c', 'e', '.', 'l', 'i', 'f', 'e', '\0',
@@ -6948,16 +6934,17 @@ static const char kSTSHostTable[] = {
   /* "macaque.io", false */ 'm', 'a', 'c', 'a', 'q', 'u', 'e', '.', 'i', 'o', '\0',
   /* "macdj.tk", true */ 'm', 'a', 'c', 'd', 'j', '.', 't', 'k', '\0',
   /* "macgeneral.de", true */ 'm', 'a', 'c', 'g', 'e', 'n', 'e', 'r', 'a', 'l', '.', 'd', 'e', '\0',
   /* "mach-politik.ch", true */ 'm', 'a', 'c', 'h', '-', 'p', 'o', 'l', 'i', 't', 'i', 'k', '.', 'c', 'h', '\0',
   /* "machbach.com", true */ 'm', 'a', 'c', 'h', 'b', 'a', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "machon.biz", false */ 'm', 'a', 'c', 'h', 'o', 'n', '.', 'b', 'i', 'z', '\0',
   /* "machtweb.de", true */ 'm', 'a', 'c', 'h', 't', 'w', 'e', 'b', '.', 'd', 'e', '\0',
   /* "macinyasha.net", true */ 'm', 'a', 'c', 'i', 'n', 'y', 'a', 's', 'h', 'a', '.', 'n', 'e', 't', '\0',
+  /* "macker.io", true */ 'm', 'a', 'c', 'k', 'e', 'r', '.', 'i', 'o', '\0',
   /* "maclemon.at", true */ 'm', 'a', 'c', 'l', 'e', 'm', 'o', 'n', '.', 'a', 't', '\0',
   /* "macleod.io", true */ 'm', 'a', 'c', 'l', 'e', 'o', 'd', '.', 'i', 'o', '\0',
   /* "macnemo.de", true */ 'm', 'a', 'c', 'n', 'e', 'm', 'o', '.', 'd', 'e', '\0',
   /* "maco.org.uk", true */ 'm', 'a', 'c', 'o', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "macosxfilerecovery.com", true */ 'm', 'a', 'c', 'o', 's', 'x', 'f', 'i', 'l', 'e', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "maddi.biz", true */ 'm', 'a', 'd', 'd', 'i', '.', 'b', 'i', 'z', '\0',
   /* "madebyshore.com", true */ 'm', 'a', 'd', 'e', 'b', 'y', 's', 'h', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "madeglobal.com", true */ 'm', 'a', 'd', 'e', 'g', 'l', 'o', 'b', 'a', 'l', '.', 'c', 'o', 'm', '\0',
@@ -7322,17 +7309,16 @@ static const char kSTSHostTable[] = {
   /* "menzel-motors.com", true */ 'm', 'e', 'n', 'z', 'e', 'l', '-', 'm', 'o', 't', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "menzietti.it", true */ 'm', 'e', 'n', 'z', 'i', 'e', 't', 't', 'i', '.', 'i', 't', '\0',
   /* "meozcraft.com", false */ 'm', 'e', 'o', 'z', 'c', 'r', 'a', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "mercadobitcoin.com.br", true */ 'm', 'e', 'r', 'c', 'a', 'd', 'o', 'b', 'i', 't', 'c', 'o', 'i', 'n', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "mercadobitcoin.net", true */ 'm', 'e', 'r', 'c', 'a', 'd', 'o', 'b', 'i', 't', 'c', 'o', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "mercamaris.es", true */ 'm', 'e', 'r', 'c', 'a', 'm', 'a', 'r', 'i', 's', '.', 'e', 's', '\0',
   /* "merccorp.de", true */ 'm', 'e', 'r', 'c', 'c', 'o', 'r', 'p', '.', 'd', 'e', '\0',
   /* "mercuryamericas.com", false */ 'm', 'e', 'r', 'c', 'u', 'r', 'y', 'a', 'm', 'e', 'r', 'i', 'c', 'a', 's', '.', 'c', 'o', 'm', '\0',
-  /* "meredithkm.info", true */ 'm', 'e', 'r', 'e', 'd', 'i', 't', 'h', 'k', 'm', '.', 'i', 'n', 'f', 'o', '\0',
   /* "merkel.me", true */ 'm', 'e', 'r', 'k', 'e', 'l', '.', 'm', 'e', '\0',
   /* "meronberry.jp", true */ 'm', 'e', 'r', 'o', 'n', 'b', 'e', 'r', 'r', 'y', '.', 'j', 'p', '\0',
   /* "mersinunivercity.com", true */ 'm', 'e', 'r', 's', 'i', 'n', 'u', 'n', 'i', 'v', 'e', 'r', 'c', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "mertcangokgoz.com", true */ 'm', 'e', 'r', 't', 'c', 'a', 'n', 'g', 'o', 'k', 'g', 'o', 'z', '.', 'c', 'o', 'm', '\0',
   /* "mesicka.com", true */ 'm', 'e', 's', 'i', 'c', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "mesvt.com", true */ 'm', 'e', 's', 'v', 't', '.', 'c', 'o', 'm', '\0',
   /* "meta.sc", true */ 'm', 'e', 't', 'a', '.', 's', 'c', '\0',
   /* "metaether.net", true */ 'm', 'e', 't', 'a', 'e', 't', 'h', 'e', 'r', '.', 'n', 'e', 't', '\0',
@@ -7364,16 +7350,17 @@ static const char kSTSHostTable[] = {
   /* "mhealthdemocamp.com", true */ 'm', 'h', 'e', 'a', 'l', 't', 'h', 'd', 'e', 'm', 'o', 'c', 'a', 'm', 'p', '.', 'c', 'o', 'm', '\0',
   /* "mheistermann.de", true */ 'm', 'h', 'e', 'i', 's', 't', 'e', 'r', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "mhertel.com", false */ 'm', 'h', 'e', 'r', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "mhx.pw", true */ 'm', 'h', 'x', '.', 'p', 'w', '\0',
   /* "miagexport.com", true */ 'm', 'i', 'a', 'g', 'e', 'x', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "miasarafina.de", true */ 'm', 'i', 'a', 's', 'a', 'r', 'a', 'f', 'i', 'n', 'a', '.', 'd', 'e', '\0',
   /* "micbase.com", true */ 'm', 'i', 'c', 'b', 'a', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "michael-rigart.be", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', '-', 'r', 'i', 'g', 'a', 'r', 't', '.', 'b', 'e', '\0',
+  /* "michaelcullen.name", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'c', 'u', 'l', 'l', 'e', 'n', '.', 'n', 'a', 'm', 'e', '\0',
   /* "michaelleibundgut.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'l', 'e', 'i', 'b', 'u', 'n', 'd', 'g', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "michaelmorpurgo.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'm', 'o', 'r', 'p', 'u', 'r', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "michaelrigart.be", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'r', 'i', 'g', 'a', 'r', 't', '.', 'b', 'e', '\0',
   /* "michaelscrivo.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 's', 'c', 'r', 'i', 'v', 'o', '.', 'c', 'o', 'm', '\0',
   /* "michaeltroger.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 't', 'r', 'o', 'g', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "michaelwaite.org", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'w', 'a', 'i', 't', 'e', '.', 'o', 'r', 'g', '\0',
   /* "michalkral.tk", true */ 'm', 'i', 'c', 'h', 'a', 'l', 'k', 'r', 'a', 'l', '.', 't', 'k', '\0',
   /* "michalspacek.cz", true */ 'm', 'i', 'c', 'h', 'a', 'l', 's', 'p', 'a', 'c', 'e', 'k', '.', 'c', 'z', '\0',
@@ -7383,17 +7370,16 @@ static const char kSTSHostTable[] = {
   /* "michelchouinard.ca", true */ 'm', 'i', 'c', 'h', 'e', 'l', 'c', 'h', 'o', 'u', 'i', 'n', 'a', 'r', 'd', '.', 'c', 'a', '\0',
   /* "michiganunionoptout.com", true */ 'm', 'i', 'c', 'h', 'i', 'g', 'a', 'n', 'u', 'n', 'i', 'o', 'n', 'o', 'p', 't', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "miconcinemas.com", true */ 'm', 'i', 'c', 'o', 'n', 'c', 'i', 'n', 'e', 'm', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "miconware.de", true */ 'm', 'i', 'c', 'o', 'n', 'w', 'a', 'r', 'e', '.', 'd', 'e', '\0',
   /* "microco.sm", true */ 'm', 'i', 'c', 'r', 'o', 'c', 'o', '.', 's', 'm', '\0',
   /* "microdots.de", true */ 'm', 'i', 'c', 'r', 'o', 'd', 'o', 't', 's', '.', 'd', 'e', '\0',
   /* "microlog.org", true */ 'm', 'i', 'c', 'r', 'o', 'l', 'o', 'g', '.', 'o', 'r', 'g', '\0',
   /* "microtalk.org", true */ 'm', 'i', 'c', 'r', 'o', 't', 'a', 'l', 'k', '.', 'o', 'r', 'g', '\0',
-  /* "microvb.com", true */ 'm', 'i', 'c', 'r', 'o', 'v', 'b', '.', 'c', 'o', 'm', '\0',
   /* "midair.io", true */ 'm', 'i', 'd', 'a', 'i', 'r', '.', 'i', 'o', '\0',
   /* "midirs.org", true */ 'm', 'i', 'd', 'i', 'r', 's', '.', 'o', 'r', 'g', '\0',
   /* "midlgx.com", true */ 'm', 'i', 'd', 'l', 'g', 'x', '.', 'c', 'o', 'm', '\0',
   /* "midonet.org", true */ 'm', 'i', 'd', 'o', 'n', 'e', 't', '.', 'o', 'r', 'g', '\0',
   /* "miegl.cz", true */ 'm', 'i', 'e', 'g', 'l', '.', 'c', 'z', '\0',
   /* "mig5.net", true */ 'm', 'i', 'g', '5', '.', 'n', 'e', 't', '\0',
   /* "migeeks.de", true */ 'm', 'i', 'g', 'e', 'e', 'k', 's', '.', 'd', 'e', '\0',
   /* "mightymillionsraffle.com", true */ 'm', 'i', 'g', 'h', 't', 'y', 'm', 'i', 'l', 'l', 'i', 'o', 'n', 's', 'r', 'a', 'f', 'f', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -7612,28 +7598,31 @@ static const char kSTSHostTable[] = {
   /* "moparscape.net", true */ 'm', 'o', 'p', 'a', 'r', 's', 'c', 'a', 'p', 'e', '.', 'n', 'e', 't', '\0',
   /* "mor.cloud", true */ 'm', 'o', 'r', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "morbatex.com", true */ 'm', 'o', 'r', 'b', 'a', 't', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "moreapp.co.uk", true */ 'm', 'o', 'r', 'e', 'a', 'p', 'p', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "morenci.ch", true */ 'm', 'o', 'r', 'e', 'n', 'c', 'i', '.', 'c', 'h', '\0',
   /* "morfitronik.pl", true */ 'm', 'o', 'r', 'f', 'i', 't', 'r', 'o', 'n', 'i', 'k', '.', 'p', 'l', '\0',
   /* "morganestes.com", true */ 'm', 'o', 'r', 'g', 'a', 'n', 'e', 's', 't', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "morganino.eu", true */ 'm', 'o', 'r', 'g', 'a', 'n', 'i', 'n', 'o', '.', 'e', 'u', '\0',
+  /* "morganino.it", true */ 'm', 'o', 'r', 'g', 'a', 'n', 'i', 'n', 'o', '.', 'i', 't', '\0',
+  /* "moritz-baestlein.de", true */ 'm', 'o', 'r', 'i', 't', 'z', '-', 'b', 'a', 'e', 's', 't', 'l', 'e', 'i', 'n', '.', 'd', 'e', '\0',
   /* "moriz.de", true */ 'm', 'o', 'r', 'i', 'z', '.', 'd', 'e', '\0',
   /* "morninglory.com", true */ 'm', 'o', 'r', 'n', 'i', 'n', 'g', 'l', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "mornings.com", true */ 'm', 'o', 'r', 'n', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0',
   /* "morteruelo.net", true */ 'm', 'o', 'r', 't', 'e', 'r', 'u', 'e', 'l', 'o', '.', 'n', 'e', 't', '\0',
   /* "morz.org", true */ 'm', 'o', 'r', 'z', '.', 'o', 'r', 'g', '\0',
   /* "mosstier.com", true */ 'm', 'o', 's', 's', 't', 'i', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mostlyharmless.at", true */ 'm', 'o', 's', 't', 'l', 'y', 'h', 'a', 'r', 'm', 'l', 'e', 's', 's', '.', 'a', 't', '\0',
   /* "motd.ch", true */ 'm', 'o', 't', 'd', '.', 'c', 'h', '\0',
   /* "mothereff.in", true */ 'm', 'o', 't', 'h', 'e', 'r', 'e', 'f', 'f', '.', 'i', 'n', '\0',
   /* "motionfreight.com", true */ 'm', 'o', 't', 'i', 'o', 'n', 'f', 'r', 'e', 'i', 'g', 'h', 't', '.', 'c', 'o', 'm', '\0',
   /* "moulinaparoles.ca", true */ 'm', 'o', 'u', 'l', 'i', 'n', 'a', 'p', 'a', 'r', 'o', 'l', 'e', 's', '.', 'c', 'a', '\0',
   /* "mountainactivitysection.org.uk", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'a', 'c', 't', 'i', 'v', 'i', 't', 'y', 's', 'e', 'c', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
+  /* "mountainadventureseminars.com", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'a', 'd', 'v', 'e', 'n', 't', 'u', 'r', 'e', 's', 'e', 'm', 'i', 'n', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "mountainroseherbs.com", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'r', 'o', 's', 'e', 'h', 'e', 'r', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "movabletype.net", true */ 'm', 'o', 'v', 'a', 'b', 'l', 'e', 't', 'y', 'p', 'e', '.', 'n', 'e', 't', '\0',
   /* "moveek.com", true */ 'm', 'o', 'v', 'e', 'e', 'k', '.', 'c', 'o', 'm', '\0',
   /* "movember.com", false */ 'm', 'o', 'v', 'e', 'm', 'b', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "movepin.com", true */ 'm', 'o', 'v', 'e', 'p', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "movie4kto.site", true */ 'm', 'o', 'v', 'i', 'e', '4', 'k', 't', 'o', '.', 's', 'i', 't', 'e', '\0',
   /* "moviedollars.com", true */ 'm', 'o', 'v', 'i', 'e', 'd', 'o', 'l', 'l', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "movinglogistics.nl", false */ 'm', 'o', 'v', 'i', 'n', 'g', 'l', 'o', 'g', 'i', 's', 't', 'i', 'c', 's', '.', 'n', 'l', '\0',
@@ -7905,16 +7894,17 @@ static const char kSTSHostTable[] = {
   /* "nearby.in.th", true */ 'n', 'e', 'a', 'r', 'b', 'y', '.', 'i', 'n', '.', 't', 'h', '\0',
   /* "nebra.io", true */ 'n', 'e', 'b', 'r', 'a', '.', 'i', 'o', '\0',
   /* "nebulousenhanced.com", true */ 'n', 'e', 'b', 'u', 'l', 'o', 'u', 's', 'e', 'n', 'h', 'a', 'n', 'c', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "necesitodinero.org", true */ 'n', 'e', 'c', 'e', 's', 'i', 't', 'o', 'd', 'i', 'n', 'e', 'r', 'o', '.', 'o', 'r', 'g', '\0',
   /* "necormansir.com", true */ 'n', 'e', 'c', 'o', 'r', 'm', 'a', 'n', 's', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "nectarleaf.com", true */ 'n', 'e', 'c', 't', 'a', 'r', 'l', 'e', 'a', 'f', '.', 'c', 'o', 'm', '\0',
   /* "nedcdata.org", true */ 'n', 'e', 'd', 'c', 'd', 'a', 't', 'a', '.', 'o', 'r', 'g', '\0',
   /* "nedraconsult.ru", true */ 'n', 'e', 'd', 'r', 'a', 'c', 'o', 'n', 's', 'u', 'l', 't', '.', 'r', 'u', '\0',
+  /* "neer.io", true */ 'n', 'e', 'e', 'r', '.', 'i', 'o', '\0',
   /* "nefertitis.cz", true */ 'n', 'e', 'f', 'e', 'r', 't', 'i', 't', 'i', 's', '.', 'c', 'z', '\0',
   /* "neftebitum-kngk.ru", true */ 'n', 'e', 'f', 't', 'e', 'b', 'i', 't', 'u', 'm', '-', 'k', 'n', 'g', 'k', '.', 'r', 'u', '\0',
   /* "neg9.org", false */ 'n', 'e', 'g', '9', '.', 'o', 'r', 'g', '\0',
   /* "negai.moe", true */ 'n', 'e', 'g', 'a', 'i', '.', 'm', 'o', 'e', '\0',
   /* "negativecurvature.net", true */ 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', 'c', 'u', 'r', 'v', 'a', 't', 'u', 'r', 'e', '.', 'n', 'e', 't', '\0',
   /* "neglecteddiseases.gov", true */ 'n', 'e', 'g', 'l', 'e', 'c', 't', 'e', 'd', 'd', 'i', 's', 'e', 'a', 's', 'e', 's', '.', 'g', 'o', 'v', '\0',
   /* "neillans.co.uk", true */ 'n', 'e', 'i', 'l', 'l', 'a', 'n', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "neillans.com", true */ 'n', 'e', 'i', 'l', 'l', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
@@ -8081,31 +8071,29 @@ static const char kSTSHostTable[] = {
   /* "nightfirecat.com", true */ 'n', 'i', 'g', 'h', 't', 'f', 'i', 'r', 'e', 'c', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "nightsnack.cf", true */ 'n', 'i', 'g', 'h', 't', 's', 'n', 'a', 'c', 'k', '.', 'c', 'f', '\0',
   /* "nightwinds.tk", true */ 'n', 'i', 'g', 'h', 't', 'w', 'i', 'n', 'd', 's', '.', 't', 'k', '\0',
   /* "nijiero-ch.com", false */ 'n', 'i', 'j', 'i', 'e', 'r', 'o', '-', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "nijm.nl", true */ 'n', 'i', 'j', 'm', '.', 'n', 'l', '\0',
   /* "nikao-tech.com", true */ 'n', 'i', 'k', 'a', 'o', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "nikcub.com", true */ 'n', 'i', 'k', 'c', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "nikklassen.ca", true */ 'n', 'i', 'k', 'k', 'l', 'a', 's', 's', 'e', 'n', '.', 'c', 'a', '\0',
-  /* "nikksno.io", true */ 'n', 'i', 'k', 'k', 's', 'n', 'o', '.', 'i', 'o', '\0',
   /* "niklaslindblad.se", true */ 'n', 'i', 'k', 'l', 'a', 's', 'l', 'i', 'n', 'd', 'b', 'l', 'a', 'd', '.', 's', 'e', '\0',
   /* "nikobradshaw.com", true */ 'n', 'i', 'k', 'o', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolasbradshaw.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolasgrottendieck.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'g', 'r', 'o', 't', 't', 'e', 'n', 'd', 'i', 'e', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "nil.gs", true */ 'n', 'i', 'l', '.', 'g', 's', '\0',
   /* "niloxy.com", true */ 'n', 'i', 'l', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
   /* "nilrem.org", true */ 'n', 'i', 'l', 'r', 'e', 'm', '.', 'o', 'r', 'g', '\0',
   /* "nimeshjm.com", true */ 'n', 'i', 'm', 'e', 's', 'h', 'j', 'm', '.', 'c', 'o', 'm', '\0',
   /* "ninchat.com", true */ 'n', 'i', 'n', 'c', 'h', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "nine-hells.net", false */ 'n', 'i', 'n', 'e', '-', 'h', 'e', 'l', 'l', 's', '.', 'n', 'e', 't', '\0',
   /* "ninespec.com", true */ 'n', 'i', 'n', 'e', 's', 'p', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "ninjan.co", true */ 'n', 'i', 'n', 'j', 'a', 'n', '.', 'c', 'o', '\0',
   /* "ninthfloor.org", true */ 'n', 'i', 'n', 't', 'h', 'f', 'l', 'o', 'o', 'r', '.', 'o', 'r', 'g', '\0',
-  /* "ninux.ch", false */ 'n', 'i', 'n', 'u', 'x', '.', 'c', 'h', '\0',
   /* "niouininon.eu", true */ 'n', 'i', 'o', 'u', 'i', 'n', 'i', 'n', 'o', 'n', '.', 'e', 'u', '\0',
   /* "nippon-oku.com", true */ 'n', 'i', 'p', 'p', 'o', 'n', '-', 'o', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "nippon.fr", true */ 'n', 'i', 'p', 'p', 'o', 'n', '.', 'f', 'r', '\0',
   /* "nirada.info", true */ 'n', 'i', 'r', 'a', 'd', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "nitrix.me", true */ 'n', 'i', 't', 'r', 'i', 'x', '.', 'm', 'e', '\0',
   /* "nitropur.com", true */ 'n', 'i', 't', 'r', 'o', 'p', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "nitropur.de", true */ 'n', 'i', 't', 'r', 'o', 'p', 'u', 'r', '.', 'd', 'e', '\0',
   /* "nivi.ca", true */ 'n', 'i', 'v', 'i', '.', 'c', 'a', '\0',
@@ -8169,17 +8157,16 @@ static const char kSTSHostTable[] = {
   /* "notabug.org", true */ 'n', 'o', 't', 'a', 'b', 'u', 'g', '.', 'o', 'r', 'g', '\0',
   /* "notadd.com", true */ 'n', 'o', 't', 'a', 'd', 'd', '.', 'c', 'o', 'm', '\0',
   /* "notalone.gov", true */ 'n', 'o', 't', 'a', 'l', 'o', 'n', 'e', '.', 'g', 'o', 'v', '\0',
   /* "notbolaget.se", true */ 'n', 'o', 't', 'b', 'o', 'l', 'a', 'g', 'e', 't', '.', 's', 'e', '\0',
   /* "notenoughtime.de", true */ 'n', 'o', 't', 'e', 'n', 'o', 'u', 'g', 'h', 't', 'i', 'm', 'e', '.', 'd', 'e', '\0',
   /* "nothing.net.nz", true */ 'n', 'o', 't', 'h', 'i', 'n', 'g', '.', 'n', 'e', 't', '.', 'n', 'z', '\0',
   /* "notificami.com", true */ 'n', 'o', 't', 'i', 'f', 'i', 'c', 'a', 'm', 'i', '.', 'c', 'o', 'm', '\0',
   /* "notify.moe", true */ 'n', 'o', 't', 'i', 'f', 'y', '.', 'm', 'o', 'e', '\0',
-  /* "notjustbitchy.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'b', 'i', 't', 'c', 'h', 'y', '.', 'c', 'o', 'm', '\0',
   /* "notjustvacs.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'v', 'a', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "notnize.net", true */ 'n', 'o', 't', 'n', 'i', 'z', 'e', '.', 'n', 'e', 't', '\0',
   /* "notnl.com", true */ 'n', 'o', 't', 'n', 'l', '.', 'c', 'o', 'm', '\0',
   /* "notoriousdev.com", true */ 'n', 'o', 't', 'o', 'r', 'i', 'o', 'u', 's', 'd', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "nottheonion.net", true */ 'n', 'o', 't', 't', 'h', 'e', 'o', 'n', 'i', 'o', 'n', '.', 'n', 'e', 't', '\0',
   /* "nottres.com", true */ 'n', 'o', 't', 't', 'r', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "notypiesni.sk", false */ 'n', 'o', 't', 'y', 'p', 'i', 'e', 's', 'n', 'i', '.', 's', 'k', '\0',
   /* "novabench.com", true */ 'n', 'o', 'v', 'a', 'b', 'e', 'n', 'c', 'h', '.', 'c', 'o', 'm', '\0',
@@ -8321,17 +8308,16 @@ static const char kSTSHostTable[] = {
   /* "omitech.co.uk", true */ 'o', 'm', 'i', 't', 'e', 'c', 'h', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "omniasl.com", true */ 'o', 'm', 'n', 'i', 'a', 's', 'l', '.', 'c', 'o', 'm', '\0',
   /* "omnienviro.com", true */ 'o', 'm', 'n', 'i', 'e', 'n', 'v', 'i', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "omnienviro.com.au", true */ 'o', 'm', 'n', 'i', 'e', 'n', 'v', 'i', 'r', 'o', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "omniverse.ru", true */ 'o', 'm', 'n', 'i', 'v', 'e', 'r', 's', 'e', '.', 'r', 'u', '\0',
   /* "omskit.ru", true */ 'o', 'm', 's', 'k', 'i', 't', '.', 'r', 'u', '\0',
   /* "onaboat.se", true */ 'o', 'n', 'a', 'b', 'o', 'a', 't', '.', 's', 'e', '\0',
   /* "onarto.com", true */ 'o', 'n', 'a', 'r', 't', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "ondrej.org", true */ 'o', 'n', 'd', 'r', 'e', 'j', '.', 'o', 'r', 'g', '\0',
   /* "one---line.com", true */ 'o', 'n', 'e', '-', '-', '-', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "onearth.one", true */ 'o', 'n', 'e', 'a', 'r', 't', 'h', '.', 'o', 'n', 'e', '\0',
   /* "oneazcu.com", false */ 'o', 'n', 'e', 'a', 'z', 'c', 'u', '.', 'c', 'o', 'm', '\0',
   /* "oneclickloan.com", true */ 'o', 'n', 'e', 'c', 'l', 'i', 'c', 'k', 'l', 'o', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "onecycling.my", true */ 'o', 'n', 'e', 'c', 'y', 'c', 'l', 'i', 'n', 'g', '.', 'm', 'y', '\0',
   /* "onecycling.world", true */ 'o', 'n', 'e', 'c', 'y', 'c', 'l', 'i', 'n', 'g', '.', 'w', 'o', 'r', 'l', 'd', '\0',
   /* "onedot.nl", true */ 'o', 'n', 'e', 'd', 'o', 't', '.', 'n', 'l', '\0',
   /* "onedrive.com", true */ 'o', 'n', 'e', 'd', 'r', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
@@ -8423,17 +8409,16 @@ static const char kSTSHostTable[] = {
   /* "opus-codium.fr", true */ 'o', 'p', 'u', 's', '-', 'c', 'o', 'd', 'i', 'u', 'm', '.', 'f', 'r', '\0',
   /* "orangefinanse.com.pl", true */ 'o', 'r', 'a', 'n', 'g', 'e', 'f', 'i', 'n', 'a', 'n', 's', 'e', '.', 'c', 'o', 'm', '.', 'p', 'l', '\0',
   /* "orangutan-appeal.org.uk", true */ 'o', 'r', 'a', 'n', 'g', 'u', 't', 'a', 'n', '-', 'a', 'p', 'p', 'e', 'a', 'l', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "orbitsoft.com", true */ 'o', 'r', 'b', 'i', 't', 's', 'o', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "orcahq.com", true */ 'o', 'r', 'c', 'a', 'h', 'q', '.', 'c', 'o', 'm', '\0',
   /* "orcamoney.com", true */ 'o', 'r', 'c', 'a', 'm', 'o', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "ordereat.fr", true */ 'o', 'r', 'd', 'e', 'r', 'e', 'a', 't', '.', 'f', 'r', '\0',
   /* "orderswift.com", true */ 'o', 'r', 'd', 'e', 'r', 's', 'w', 'i', 'f', 't', '.', 'c', 'o', 'm', '\0',
-  /* "ordr.mobi", true */ 'o', 'r', 'd', 'r', '.', 'm', 'o', 'b', 'i', '\0',
   /* "orf-digitalsatkarte.at", true */ 'o', 'r', 'f', '-', 'd', 'i', 'g', 'i', 't', 'a', 'l', 's', 'a', 't', 'k', 'a', 'r', 't', 'e', '.', 'a', 't', '\0',
   /* "orf-kartentausch.at", true */ 'o', 'r', 'f', '-', 'k', 'a', 'r', 't', 'e', 'n', 't', 'a', 'u', 's', 'c', 'h', '.', 'a', 't', '\0',
   /* "organic-superfood.net", true */ 'o', 'r', 'g', 'a', 'n', 'i', 'c', '-', 's', 'u', 'p', 'e', 'r', 'f', 'o', 'o', 'd', '.', 'n', 'e', 't', '\0',
   /* "organicae.com", true */ 'o', 'r', 'g', 'a', 'n', 'i', 'c', 'a', 'e', '.', 'c', 'o', 'm', '\0',
   /* "orhideous.name", true */ 'o', 'r', 'h', 'i', 'd', 'e', 'o', 'u', 's', '.', 'n', 'a', 'm', 'e', '\0',
   /* "oricejoc.com", false */ 'o', 'r', 'i', 'c', 'e', 'j', 'o', 'c', '.', 'c', 'o', 'm', '\0',
   /* "orientalart.nl", true */ 'o', 'r', 'i', 'e', 'n', 't', 'a', 'l', 'a', 'r', 't', '.', 'n', 'l', '\0',
   /* "origami.to", true */ 'o', 'r', 'i', 'g', 'a', 'm', 'i', '.', 't', 'o', '\0',
@@ -8500,17 +8485,16 @@ static const char kSTSHostTable[] = {
   /* "p3in.com", true */ 'p', '3', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "pa-w.de", true */ 'p', 'a', '-', 'w', '.', 'd', 'e', '\0',
   /* "pace.car", true */ 'p', 'a', 'c', 'e', '.', 'c', 'a', 'r', '\0',
   /* "pacelink.de", true */ 'p', 'a', 'c', 'e', 'l', 'i', 'n', 'k', '.', 'd', 'e', '\0',
   /* "packagist.org", false */ 'p', 'a', 'c', 'k', 'a', 'g', 'i', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "packer.io", true */ 'p', 'a', 'c', 'k', 'e', 'r', '.', 'i', 'o', '\0',
   /* "pacoda.de", true */ 'p', 'a', 'c', 'o', 'd', 'a', '.', 'd', 'e', '\0',
   /* "pactf.com", true */ 'p', 'a', 'c', 't', 'f', '.', 'c', 'o', 'm', '\0',
-  /* "pagerate.io", true */ 'p', 'a', 'g', 'e', 'r', 'a', 't', 'e', '.', 'i', 'o', '\0',
   /* "pagewizz.com", false */ 'p', 'a', 'g', 'e', 'w', 'i', 'z', 'z', '.', 'c', 'o', 'm', '\0',
   /* "paginapolitica.ro", true */ 'p', 'a', 'g', 'i', 'n', 'a', 'p', 'o', 'l', 'i', 't', 'i', 'c', 'a', '.', 'r', 'o', '\0',
   /* "pagure.io", true */ 'p', 'a', 'g', 'u', 'r', 'e', '.', 'i', 'o', '\0',
   /* "pagure.org", true */ 'p', 'a', 'g', 'u', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "pahae.de", true */ 'p', 'a', 'h', 'a', 'e', '.', 'd', 'e', '\0',
   /* "painosso.org", true */ 'p', 'a', 'i', 'n', 'o', 's', 's', 'o', '.', 'o', 'r', 'g', '\0',
   /* "paintingat.com", true */ 'p', 'a', 'i', 'n', 't', 'i', 'n', 'g', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "pajonzeck.de", true */ 'p', 'a', 'j', 'o', 'n', 'z', 'e', 'c', 'k', '.', 'd', 'e', '\0',
@@ -8538,17 +8522,16 @@ static const char kSTSHostTable[] = {
   /* "pantou.org", false */ 'p', 'a', 'n', 't', 'o', 'u', '.', 'o', 'r', 'g', '\0',
   /* "pants-off.xyz", true */ 'p', 'a', 'n', 't', 's', '-', 'o', 'f', 'f', '.', 'x', 'y', 'z', '\0',
   /* "pap.la", false */ 'p', 'a', 'p', '.', 'l', 'a', '\0',
   /* "papa-webzeit.de", true */ 'p', 'a', 'p', 'a', '-', 'w', 'e', 'b', 'z', 'e', 'i', 't', '.', 'd', 'e', '\0',
   /* "papayapythons.com", true */ 'p', 'a', 'p', 'a', 'y', 'a', 'p', 'y', 't', 'h', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "paper-republic.org", true */ 'p', 'a', 'p', 'e', 'r', '-', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'o', 'r', 'g', '\0',
   /* "papermasters.com", true */ 'p', 'a', 'p', 'e', 'r', 'm', 'a', 's', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "paperturn.com", true */ 'p', 'a', 'p', 'e', 'r', 't', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
-  /* "paperwork.co.za", true */ 'p', 'a', 'p', 'e', 'r', 'w', 'o', 'r', 'k', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "papygeek.com", true */ 'p', 'a', 'p', 'y', 'g', 'e', 'e', 'k', '.', 'c', 'o', 'm', '\0',
   /* "paraborsa.net", true */ 'p', 'a', 'r', 'a', 'b', 'o', 'r', 's', 'a', '.', 'n', 'e', 't', '\0',
   /* "paradiselost.com", true */ 'p', 'a', 'r', 'a', 'd', 'i', 's', 'e', 'l', 'o', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "paradoxdesigns.org", true */ 'p', 'a', 'r', 'a', 'd', 'o', 'x', 'd', 'e', 's', 'i', 'g', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "paragon.com.sg", true */ 'p', 'a', 'r', 'a', 'g', 'o', 'n', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "paragonie.com", false */ 'p', 'a', 'r', 'a', 'g', 'o', 'n', 'i', 'e', '.', 'c', 'o', 'm', '\0',
   /* "paragreen.net", true */ 'p', 'a', 'r', 'a', 'g', 'r', 'e', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "paranoxer.hu", true */ 'p', 'a', 'r', 'a', 'n', 'o', 'x', 'e', 'r', '.', 'h', 'u', '\0',
@@ -8563,17 +8546,16 @@ static const char kSTSHostTable[] = {
   /* "parkingpoint.co.uk", true */ 'p', 'a', 'r', 'k', 'i', 'n', 'g', 'p', 'o', 'i', 'n', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "parlamento.gub.uy", true */ 'p', 'a', 'r', 'l', 'a', 'm', 'e', 'n', 't', 'o', '.', 'g', 'u', 'b', '.', 'u', 'y', '\0',
   /* "parleu2016.nl", true */ 'p', 'a', 'r', 'l', 'e', 'u', '2', '0', '1', '6', '.', 'n', 'l', '\0',
   /* "parleur.net", true */ 'p', 'a', 'r', 'l', 'e', 'u', 'r', '.', 'n', 'e', 't', '\0',
   /* "parodybit.net", true */ 'p', 'a', 'r', 'o', 'd', 'y', 'b', 'i', 't', '.', 'n', 'e', 't', '\0',
   /* "parpaing-paillette.net", true */ 'p', 'a', 'r', 'p', 'a', 'i', 'n', 'g', '-', 'p', 'a', 'i', 'l', 'l', 'e', 't', 't', 'e', '.', 'n', 'e', 't', '\0',
   /* "parsemail.org", true */ 'p', 'a', 'r', 's', 'e', 'm', 'a', 'i', 'l', '.', 'o', 'r', 'g', '\0',
   /* "parser.nu", true */ 'p', 'a', 'r', 's', 'e', 'r', '.', 'n', 'u', '\0',
-  /* "partirkyoto.jp", true */ 'p', 'a', 'r', 't', 'i', 'r', 'k', 'y', 'o', 't', 'o', '.', 'j', 'p', '\0',
   /* "partnerbeam.com", true */ 'p', 'a', 'r', 't', 'n', 'e', 'r', 'b', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0',
   /* "partnercardservices.com", true */ 'p', 'a', 'r', 't', 'n', 'e', 'r', 'c', 'a', 'r', 'd', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "partnersfcu.org", true */ 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', 'f', 'c', 'u', '.', 'o', 'r', 'g', '\0',
   /* "partou.de", true */ 'p', 'a', 'r', 't', 'o', 'u', '.', 'd', 'e', '\0',
   /* "partyhaus.ovh", true */ 'p', 'a', 'r', 't', 'y', 'h', 'a', 'u', 's', '.', 'o', 'v', 'h', '\0',
   /* "partyvan.eu", true */ 'p', 'a', 'r', 't', 'y', 'v', 'a', 'n', '.', 'e', 'u', '\0',
   /* "partyvan.io", true */ 'p', 'a', 'r', 't', 'y', 'v', 'a', 'n', '.', 'i', 'o', '\0',
   /* "pasadenapooch.org", true */ 'p', 'a', 's', 'a', 'd', 'e', 'n', 'a', 'p', 'o', 'o', 'c', 'h', '.', 'o', 'r', 'g', '\0',
@@ -8864,17 +8846,16 @@ static const char kSTSHostTable[] = {
   /* "pirateproxy.pl", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 'p', 'l', '\0',
   /* "pirateproxy.pw", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 'p', 'w', '\0',
   /* "pirateproxy.red", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 'r', 'e', 'd', '\0',
   /* "pirateproxy.sx", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 's', 'x', '\0',
   /* "pirateproxy.tf", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 't', 'f', '\0',
   /* "pirateproxy.tv", true */ 'p', 'i', 'r', 'a', 't', 'e', 'p', 'r', 'o', 'x', 'y', '.', 't', 'v', '\0',
   /* "pirman.es", true */ 'p', 'i', 'r', 'm', 'a', 'n', '.', 'e', 's', '\0',
   /* "pirxpilot.me", true */ 'p', 'i', 'r', 'x', 'p', 'i', 'l', 'o', 't', '.', 'm', 'e', '\0',
-  /* "pisexy.me", true */ 'p', 'i', 's', 'e', 'x', 'y', '.', 'm', 'e', '\0',
   /* "pisupp.ly", true */ 'p', 'i', 's', 'u', 'p', 'p', '.', 'l', 'y', '\0',
   /* "pitchup.com", true */ 'p', 'i', 't', 'c', 'h', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "pitfire.io", false */ 'p', 'i', 't', 'f', 'i', 'r', 'e', '.', 'i', 'o', '\0',
   /* "pitonarms.com", true */ 'p', 'i', 't', 'o', 'n', 'a', 'r', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "piwko.co", true */ 'p', 'i', 'w', 'k', 'o', '.', 'c', 'o', '\0',
   /* "pixel.facebook.com", false */ 'p', 'i', 'x', 'e', 'l', '.', 'f', 'a', 'c', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "pixel.google.com", true */ 'p', 'i', 'x', 'e', 'l', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "pixelbash.de", true */ 'p', 'i', 'x', 'e', 'l', 'b', 'a', 's', 'h', '.', 'd', 'e', '\0',
@@ -9000,17 +8981,16 @@ static const char kSTSHostTable[] = {
   /* "poshpak.com", true */ 'p', 'o', 's', 'h', 'p', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "positivesobrietyinstitute.com", true */ 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 's', 'o', 'b', 'r', 'i', 'e', 't', 'y', 'i', 'n', 's', 't', 'i', 't', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "posobota.cz", true */ 'p', 'o', 's', 'o', 'b', 'o', 't', 'a', '.', 'c', 'z', '\0',
   /* "post4me.at", true */ 'p', 'o', 's', 't', '4', 'm', 'e', '.', 'a', 't', '\0',
   /* "postal.dk", true */ 'p', 'o', 's', 't', 'a', 'l', '.', 'd', 'k', '\0',
   /* "postblue.info", true */ 'p', 'o', 's', 't', 'b', 'l', 'u', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "postbox.life", true */ 'p', 'o', 's', 't', 'b', 'o', 'x', '.', 'l', 'i', 'f', 'e', '\0',
   /* "postcodegarant.nl", true */ 'p', 'o', 's', 't', 'c', 'o', 'd', 'e', 'g', 'a', 'r', 'a', 'n', 't', '.', 'n', 'l', '\0',
-  /* "postcodewise.co.uk", true */ 'p', 'o', 's', 't', 'c', 'o', 'd', 'e', 'w', 'i', 's', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "posteo.de", false */ 'p', 'o', 's', 't', 'e', 'o', '.', 'd', 'e', '\0',
   /* "postfinance.ch", true */ 'p', 'o', 's', 't', 'f', 'i', 'n', 'a', 'n', 'c', 'e', '.', 'c', 'h', '\0',
   /* "postn.eu", true */ 'p', 'o', 's', 't', 'n', '.', 'e', 'u', '\0',
   /* "posttigo.com", true */ 'p', 'o', 's', 't', 't', 'i', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "potatofrom.space", false */ 'p', 'o', 't', 'a', 't', 'o', 'f', 'r', 'o', 'm', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "potatoheads.net", true */ 'p', 'o', 't', 'a', 't', 'o', 'h', 'e', 'a', 'd', 's', '.', 'n', 'e', 't', '\0',
   /* "potbar.com", true */ 'p', 'o', 't', 'b', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "potbox.com", true */ 'p', 'o', 't', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
@@ -9036,17 +9016,16 @@ static const char kSTSHostTable[] = {
   /* "ppro.com", true */ 'p', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "ppuu.org", false */ 'p', 'p', 'u', 'u', '.', 'o', 'r', 'g', '\0',
   /* "ppy3.com", true */ 'p', 'p', 'y', '3', '.', 'c', 'o', 'm', '\0',
   /* "pr1sm.com", true */ 'p', 'r', '1', 's', 'm', '.', 'c', 'o', 'm', '\0',
   /* "pr2studio.com", true */ 'p', 'r', '2', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "practicallabs.com", true */ 'p', 'r', 'a', 'c', 't', 'i', 'c', 'a', 'l', 'l', 'a', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "prado.it", true */ 'p', 'r', 'a', 'd', 'o', '.', 'i', 't', '\0',
   /* "praguepsychology.com", true */ 'p', 'r', 'a', 'g', 'u', 'e', 'p', 's', 'y', 'c', 'h', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "praguepsychology.cz", true */ 'p', 'r', 'a', 'g', 'u', 'e', 'p', 's', 'y', 'c', 'h', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'z', '\0',
   /* "prakharprasad.com", true */ 'p', 'r', 'a', 'k', 'h', 'a', 'r', 'p', 'r', 'a', 's', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "prattpokemon.com", true */ 'p', 'r', 'a', 't', 't', 'p', 'o', 'k', 'e', 'm', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "praxis-research.info", true */ 'p', 'r', 'a', 'x', 'i', 's', '-', 'r', 'e', 's', 'e', 'a', 'r', 'c', 'h', '.', 'i', 'n', 'f', 'o', '\0',
   /* "prayerrequest.com", true */ 'p', 'r', 'a', 'y', 'e', 'r', 'r', 'e', 'q', 'u', 'e', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "prazynka.pl", true */ 'p', 'r', 'a', 'z', 'y', 'n', 'k', 'a', '.', 'p', 'l', '\0',
   /* "precedecaritas.com.br", true */ 'p', 'r', 'e', 'c', 'e', 'd', 'e', 'c', 'a', 'r', 'i', 't', 'a', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "prediksisydney.com", false */ 'p', 'r', 'e', 'd', 'i', 'k', 's', 'i', 's', 'y', 'd', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "predoiu.ro", true */ 'p', 'r', 'e', 'd', 'o', 'i', 'u', '.', 'r', 'o', '\0',
@@ -9274,28 +9253,26 @@ static const char kSTSHostTable[] = {
   /* "qkka.org", true */ 'q', 'k', 'k', 'a', '.', 'o', 'r', 'g', '\0',
   /* "qldconservation.org", true */ 'q', 'l', 'd', 'c', 'o', 'n', 's', 'e', 'r', 'v', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "qldconservation.org.au", true */ 'q', 'l', 'd', 'c', 'o', 'n', 's', 'e', 'r', 'v', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '.', 'a', 'u', '\0',
   /* "qldformulaford.org", true */ 'q', 'l', 'd', 'f', 'o', 'r', 'm', 'u', 'l', 'a', 'f', 'o', 'r', 'd', '.', 'o', 'r', 'g', '\0',
   /* "qlrace.com", false */ 'q', 'l', 'r', 'a', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "qm-marzahnnordwest.de", true */ 'q', 'm', '-', 'm', 'a', 'r', 'z', 'a', 'h', 'n', 'n', 'o', 'r', 'd', 'w', 'e', 's', 't', '.', 'd', 'e', '\0',
   /* "qonqa.de", true */ 'q', 'o', 'n', 'q', 'a', '.', 'd', 'e', '\0',
   /* "qop.io", true */ 'q', 'o', 'p', '.', 'i', 'o', '\0',
-  /* "qorm.co.uk", true */ 'q', 'o', 'r', 'm', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "qqq.gg", true */ 'q', 'q', 'q', '.', 'g', 'g', '\0',
   /* "qr-city.org", true */ 'q', 'r', '-', 'c', 'i', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "qrlfinancial.com", true */ 'q', 'r', 'l', 'f', 'i', 'n', 'a', 'n', 'c', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "qtl.me", true */ 'q', 't', 'l', '.', 'm', 'e', '\0',
   /* "qto.com", true */ 'q', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "qtpass.org", true */ 'q', 't', 'p', 'a', 's', 's', '.', 'o', 'r', 'g', '\0',
   /* "qtpower.co.uk", true */ 'q', 't', 'p', 'o', 'w', 'e', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "qtpower.net", true */ 'q', 't', 'p', 'o', 'w', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "qtpower.org", true */ 'q', 't', 'p', 'o', 'w', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "qtvr.com", true */ 'q', 't', 'v', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "qtxh.net", true */ 'q', 't', 'x', 'h', '.', 'n', 'e', 't', '\0',
   /* "quaedam.org", true */ 'q', 'u', 'a', 'e', 'd', 'a', 'm', '.', 'o', 'r', 'g', '\0',
   /* "quai10.org", false */ 'q', 'u', 'a', 'i', '1', '0', '.', 'o', 'r', 'g', '\0',
   /* "quakelive.dk", true */ 'q', 'u', 'a', 'k', 'e', 'l', 'i', 'v', 'e', '.', 'd', 'k', '\0',
   /* "qualityedgarsolutions.com", true */ 'q', 'u', 'a', 'l', 'i', 't', 'y', 'e', 'd', 'g', 'a', 'r', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "qualityhomesystems.com", true */ 'q', 'u', 'a', 'l', 'i', 't', 'y', 'h', 'o', 'm', 'e', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "qualityofcourse.com", true */ 'q', 'u', 'a', 'l', 'i', 't', 'y', 'o', 'f', 'c', 'o', 'u', 'r', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "qualityology.com", true */ 'q', 'u', 'a', 'l', 'i', 't', 'y', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'o', 'm', '\0',
   /* "quanglepro.com", true */ 'q', 'u', 'a', 'n', 'g', 'l', 'e', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
@@ -9579,16 +9556,17 @@ static const char kSTSHostTable[] = {
   /* "retrotracks.net", true */ 'r', 'e', 't', 'r', 'o', 't', 'r', 'a', 'c', 'k', 's', '.', 'n', 'e', 't', '\0',
   /* "reucon.com", true */ 'r', 'e', 'u', 'c', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "reulitz.de", true */ 'r', 'e', 'u', 'l', 'i', 't', 'z', '.', 'd', 'e', '\0',
   /* "reuter-shop.com", true */ 'r', 'e', 'u', 't', 'e', 'r', '-', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "reuter.de", true */ 'r', 'e', 'u', 't', 'e', 'r', '.', 'd', 'e', '\0',
   /* "revamed.com", false */ 'r', 'e', 'v', 'a', 'm', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "revapost.ch", true */ 'r', 'e', 'v', 'a', 'p', 'o', 's', 't', '.', 'c', 'h', '\0',
   /* "revealdata.com", true */ 'r', 'e', 'v', 'e', 'a', 'l', 'd', 'a', 't', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "revensoftware.com", true */ 'r', 'e', 'v', 'e', 'n', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "revlect.com", true */ 'r', 'e', 'v', 'l', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "revolt.tv", true */ 'r', 'e', 'v', 'o', 'l', 't', '.', 't', 'v', '\0',
   /* "revthefox.co.uk", true */ 'r', 'e', 'v', 't', 'h', 'e', 'f', 'o', 'x', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "rewardingexcellence.com", true */ 'r', 'e', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'e', 'x', 'c', 'e', 'l', 'l', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "rex.st", true */ 'r', 'e', 'x', '.', 's', 't', '\0',
   /* "rex.tc", true */ 'r', 'e', 'x', '.', 't', 'c', '\0',
   /* "rezept-planer.de", true */ 'r', 'e', 'z', 'e', 'p', 't', '-', 'p', 'l', 'a', 'n', 'e', 'r', '.', 'd', 'e', '\0',
   /* "rezexpert.com", true */ 'r', 'e', 'z', 'e', 'x', 'p', 'e', 'r', 't', '.', 'c', 'o', 'm', '\0',
@@ -9810,16 +9788,17 @@ static const char kSTSHostTable[] = {
   /* "rutgerschimmel.nl", true */ 'r', 'u', 't', 'g', 'e', 'r', 's', 'c', 'h', 'i', 'm', 'm', 'e', 'l', '.', 'n', 'l', '\0',
   /* "ruudkoot.nl", true */ 'r', 'u', 'u', 'd', 'k', 'o', 'o', 't', '.', 'n', 'l', '\0',
   /* "rva-asbestgroep.nl", true */ 'r', 'v', 'a', '-', 'a', 's', 'b', 'e', 's', 't', 'g', 'r', 'o', 'e', 'p', '.', 'n', 'l', '\0',
   /* "rwanderlust.com", false */ 'r', 'w', 'a', 'n', 'd', 'e', 'r', 'l', 'u', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "rws-vertriebsportal.de", true */ 'r', 'w', 's', '-', 'v', 'e', 'r', 't', 'r', 'i', 'e', 'b', 's', 'p', 'o', 'r', 't', 'a', 'l', '.', 'd', 'e', '\0',
   /* "rww.name", true */ 'r', 'w', 'w', '.', 'n', 'a', 'm', 'e', '\0',
   /* "rx-contact.com", true */ 'r', 'x', '-', 'c', 'o', 'n', 't', 'a', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "rxbn.de", true */ 'r', 'x', 'b', 'n', '.', 'd', 'e', '\0',
+  /* "rxbusiness.com", true */ 'r', 'x', 'b', 'u', 's', 'i', 'n', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "ryan-goldstein.com", true */ 'r', 'y', 'a', 'n', '-', 'g', 'o', 'l', 'd', 's', 't', 'e', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ryanhowell.io", true */ 'r', 'y', 'a', 'n', 'h', 'o', 'w', 'e', 'l', 'l', '.', 'i', 'o', '\0',
   /* "ryankearney.com", true */ 'r', 'y', 'a', 'n', 'k', 'e', 'a', 'r', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "ryanmcdonough.co.uk", true */ 'r', 'y', 'a', 'n', 'm', 'c', 'd', 'o', 'n', 'o', 'u', 'g', 'h', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "rylin.net", true */ 'r', 'y', 'l', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "rynekpierwotny.pl", true */ 'r', 'y', 'n', 'e', 'k', 'p', 'i', 'e', 'r', 'w', 'o', 't', 'n', 'y', '.', 'p', 'l', '\0',
   /* "s-c.se", true */ 's', '-', 'c', '.', 's', 'e', '\0',
   /* "s-cubed.net", true */ 's', '-', 'c', 'u', 'b', 'e', 'd', '.', 'n', 'e', 't', '\0',
@@ -10045,17 +10024,16 @@ static const char kSTSHostTable[] = {
   /* "scrayos.net", true */ 's', 'c', 'r', 'a', 'y', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "screencaster.io", true */ 's', 'c', 'r', 'e', 'e', 'n', 'c', 'a', 's', 't', 'e', 'r', '.', 'i', 'o', '\0',
   /* "screenlight.tv", true */ 's', 'c', 'r', 'e', 'e', 'n', 'l', 'i', 'g', 'h', 't', '.', 't', 'v', '\0',
   /* "screensaversplanet.com", true */ 's', 'c', 'r', 'e', 'e', 'n', 's', 'a', 'v', 'e', 'r', 's', 'p', 'l', 'a', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "scrion.com", true */ 's', 'c', 'r', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "script.google.com", true */ 's', 'c', 'r', 'i', 'p', 't', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "scriptjunkie.us", true */ 's', 'c', 'r', 'i', 'p', 't', 'j', 'u', 'n', 'k', 'i', 'e', '.', 'u', 's', '\0',
   /* "scrollstory.com", true */ 's', 'c', 'r', 'o', 'l', 'l', 's', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "scrumstack.co.uk", true */ 's', 'c', 'r', 'u', 'm', 's', 't', 'a', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scs-simulatoren.de", true */ 's', 'c', 's', '-', 's', 'i', 'm', 'u', 'l', 'a', 't', 'o', 'r', 'e', 'n', '.', 'd', 'e', '\0',
   /* "sculpture.support", true */ 's', 'c', 'u', 'l', 'p', 't', 'u', 'r', 'e', '.', 's', 'u', 'p', 'p', 'o', 'r', 't', '\0',
   /* "sd.af", true */ 's', 'd', '.', 'a', 'f', '\0',
   /* "sdcardrecovery.de", true */ 's', 'd', 'c', 'a', 'r', 'd', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'd', 'e', '\0',
   /* "se.search.yahoo.com", false */ 's', 'e', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "sea-godzilla.com", true */ 's', 'e', 'a', '-', 'g', 'o', 'd', 'z', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "sealbaker.com", true */ 's', 'e', 'a', 'l', 'b', 'a', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "seamless.no", true */ 's', 'e', 'a', 'm', 'l', 'e', 's', 's', '.', 'n', 'o', '\0',
@@ -10099,17 +10077,16 @@ static const char kSTSHostTable[] = {
   /* "secure.facebook.com", false */ 's', 'e', 'c', 'u', 'r', 'e', '.', 'f', 'a', 'c', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "secure.link", true */ 's', 'e', 'c', 'u', 'r', 'e', '.', 'l', 'i', 'n', 'k', '\0',
   /* "securedevelop.net", true */ 's', 'e', 'c', 'u', 'r', 'e', 'd', 'e', 'v', 'e', 'l', 'o', 'p', '.', 'n', 'e', 't', '\0',
   /* "securedrop.org", false */ 's', 'e', 'c', 'u', 'r', 'e', 'd', 'r', 'o', 'p', '.', 'o', 'r', 'g', '\0',
   /* "secureideas.com", false */ 's', 'e', 'c', 'u', 'r', 'e', 'i', 'd', 'e', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "secureobscure.com", true */ 's', 'e', 'c', 'u', 'r', 'e', 'o', 'b', 's', 'c', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "secureonline.co", true */ 's', 'e', 'c', 'u', 'r', 'e', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', '\0',
   /* "securetheorem.com", true */ 's', 'e', 'c', 'u', 'r', 'e', 't', 'h', 'e', 'o', 'r', 'e', 'm', '.', 'c', 'o', 'm', '\0',
-  /* "securetronic.ch", true */ 's', 'e', 'c', 'u', 'r', 'e', 't', 'r', 'o', 'n', 'i', 'c', '.', 'c', 'h', '\0',
   /* "securify.nl", true */ 's', 'e', 'c', 'u', 'r', 'i', 'f', 'y', '.', 'n', 'l', '\0',
   /* "security-carpet.com", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '-', 'c', 'a', 'r', 'p', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "security-taskforce.be", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '-', 't', 'a', 's', 'k', 'f', 'o', 'r', 'c', 'e', '.', 'b', 'e', '\0',
   /* "security.google.com", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "securitybsides.pl", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'b', 's', 'i', 'd', 'e', 's', '.', 'p', 'l', '\0',
   /* "securityglance.com", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'g', 'l', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "securityheaders.com", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'h', 'e', 'a', 'd', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "securityheaders.io", true */ 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'h', 'e', 'a', 'd', 'e', 'r', 's', '.', 'i', 'o', '\0',
@@ -10237,34 +10214,35 @@ static const char kSTSHostTable[] = {
   /* "shakes4u.com", true */ 's', 'h', 'a', 'k', 'e', 's', '4', 'u', '.', 'c', 'o', 'm', '\0',
   /* "shalott.org", true */ 's', 'h', 'a', 'l', 'o', 't', 't', '.', 'o', 'r', 'g', '\0',
   /* "shamariki.ru", true */ 's', 'h', 'a', 'm', 'a', 'r', 'i', 'k', 'i', '.', 'r', 'u', '\0',
   /* "shan.io", false */ 's', 'h', 'a', 'n', '.', 'i', 'o', '\0',
   /* "shanae.nl", true */ 's', 'h', 'a', 'n', 'a', 'e', '.', 'n', 'l', '\0',
   /* "shanetully.com", true */ 's', 'h', 'a', 'n', 'e', 't', 'u', 'l', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "shanewadleigh.com", true */ 's', 'h', 'a', 'n', 'e', 'w', 'a', 'd', 'l', 'e', 'i', 'g', 'h', '.', 'c', 'o', 'm', '\0',
   /* "shannoneichorn.com", true */ 's', 'h', 'a', 'n', 'n', 'o', 'n', 'e', 'i', 'c', 'h', 'o', 'r', 'n', '.', 'c', 'o', 'm', '\0',
+  /* "shansing.com", true */ 's', 'h', 'a', 'n', 's', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "shansing.net", true */ 's', 'h', 'a', 'n', 's', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0',
+  /* "shansing.space", true */ 's', 'h', 'a', 'n', 's', 'i', 'n', 'g', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "shareimg.xyz", true */ 's', 'h', 'a', 'r', 'e', 'i', 'm', 'g', '.', 'x', 'y', 'z', '\0',
   /* "sharepass.pw", true */ 's', 'h', 'a', 'r', 'e', 'p', 'a', 's', 's', '.', 'p', 'w', '\0',
   /* "sharepic.xyz", true */ 's', 'h', 'a', 'r', 'e', 'p', 'i', 'c', '.', 'x', 'y', 'z', '\0',
   /* "sharepointdrive.com", true */ 's', 'h', 'a', 'r', 'e', 'p', 'o', 'i', 'n', 't', 'd', 'r', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sharesplitter.com", true */ 's', 'h', 'a', 'r', 'e', 's', 'p', 'l', 'i', 't', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "sharevari.com", true */ 's', 'h', 'a', 'r', 'e', 'v', 'a', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "sharvey.ca", true */ 's', 'h', 'a', 'r', 'v', 'e', 'y', '.', 'c', 'a', '\0',
   /* "shasso.com", true */ 's', 'h', 'a', 's', 's', 'o', '.', 'c', 'o', 'm', '\0',
   /* "shaundanielz.com", true */ 's', 'h', 'a', 'u', 'n', 'd', 'a', 'n', 'i', 'e', 'l', 'z', '.', 'c', 'o', 'm', '\0',
   /* "shawcentral.ca", true */ 's', 'h', 'a', 'w', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'a', '\0',
   /* "shazbots.org", true */ 's', 'h', 'a', 'z', 'b', 'o', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "sheilasdrivingschool.com", true */ 's', 'h', 'e', 'i', 'l', 'a', 's', 'd', 'r', 'i', 'v', 'i', 'n', 'g', 's', 'c', 'h', 'o', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "shelfordsandstaplefordscouts.org.uk", true */ 's', 'h', 'e', 'l', 'f', 'o', 'r', 'd', 's', 'a', 'n', 'd', 's', 't', 'a', 'p', 'l', 'e', 'f', 'o', 'r', 'd', 's', 'c', 'o', 'u', 't', 's', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "shellfire.de", true */ 's', 'h', 'e', 'l', 'l', 'f', 'i', 'r', 'e', '.', 'd', 'e', '\0',
   /* "shellj.me", true */ 's', 'h', 'e', 'l', 'l', 'j', '.', 'm', 'e', '\0',
   /* "shellvatore.us", true */ 's', 'h', 'e', 'l', 'l', 'v', 'a', 't', 'o', 'r', 'e', '.', 'u', 's', '\0',
-  /* "shemissed.me", true */ 's', 'h', 'e', 'm', 'i', 's', 's', 'e', 'd', '.', 'm', 'e', '\0',
   /* "shenghaiautoparts.com", true */ 's', 'h', 'e', 'n', 'g', 'h', 'a', 'i', 'a', 'u', 't', 'o', 'p', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "shentengtu.idv.tw", true */ 's', 'h', 'e', 'n', 't', 'e', 'n', 'g', 't', 'u', '.', 'i', 'd', 'v', '.', 't', 'w', '\0',
   /* "shenyuqi.com", true */ 's', 'h', 'e', 'n', 'y', 'u', 'q', 'i', '.', 'c', 'o', 'm', '\0',
   /* "shep.co.il", true */ 's', 'h', 'e', 'p', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "sherbers.de", true */ 's', 'h', 'e', 'r', 'b', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "shft.cl", true */ 's', 'h', 'f', 't', '.', 'c', 'l', '\0',
   /* "shg-pornographieabhaengigkeit.de", true */ 's', 'h', 'g', '-', 'p', 'o', 'r', 'n', 'o', 'g', 'r', 'a', 'p', 'h', 'i', 'e', 'a', 'b', 'h', 'a', 'e', 'n', 'g', 'i', 'g', 'k', 'e', 'i', 't', '.', 'd', 'e', '\0',
   /* "shh.sh", true */ 's', 'h', 'h', '.', 's', 'h', '\0',
@@ -10330,16 +10308,17 @@ static const char kSTSHostTable[] = {
   /* "signoracle.com", true */ 's', 'i', 'g', 'n', 'o', 'r', 'a', 'c', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "signosquecombinam.com.br", true */ 's', 'i', 'g', 'n', 'o', 's', 'q', 'u', 'e', 'c', 'o', 'm', 'b', 'i', 'n', 'a', 'm', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "signslabelstapesandmore.com", false */ 's', 'i', 'g', 'n', 's', 'l', 'a', 'b', 'e', 'l', 's', 't', 'a', 'p', 'e', 's', 'a', 'n', 'd', 'm', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "signtul.com", false */ 's', 'i', 'g', 'n', 't', 'u', 'l', '.', 'c', 'o', 'm', '\0',
   /* "sigterm.no", true */ 's', 'i', 'g', 't', 'e', 'r', 'm', '.', 'n', 'o', '\0',
   /* "sigterm.sh", true */ 's', 'i', 'g', 't', 'e', 'r', 'm', '.', 's', 'h', '\0',
   /* "sikatehtaat.fi", true */ 's', 'i', 'k', 'a', 't', 'e', 'h', 't', 'a', 'a', 't', '.', 'f', 'i', '\0',
   /* "sikayetvar.com", true */ 's', 'i', 'k', 'a', 'y', 'e', 't', 'v', 'a', 'r', '.', 'c', 'o', 'm', '\0',
+  /* "silaslova-ekb.ru", true */ 's', 'i', 'l', 'a', 's', 'l', 'o', 'v', 'a', '-', 'e', 'k', 'b', '.', 'r', 'u', '\0',
   /* "silent.live", true */ 's', 'i', 'l', 'e', 'n', 't', '.', 'l', 'i', 'v', 'e', '\0',
   /* "silentcircle.com", false */ 's', 'i', 'l', 'e', 'n', 't', 'c', 'i', 'r', 'c', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "silentkernel.fr", true */ 's', 'i', 'l', 'e', 'n', 't', 'k', 'e', 'r', 'n', 'e', 'l', '.', 'f', 'r', '\0',
   /* "silentlink.io", true */ 's', 'i', 'l', 'e', 'n', 't', 'l', 'i', 'n', 'k', '.', 'i', 'o', '\0',
   /* "siliconchip.me", true */ 's', 'i', 'l', 'i', 'c', 'o', 'n', 'c', 'h', 'i', 'p', '.', 'm', 'e', '\0',
   /* "silkebaekken.no", true */ 's', 'i', 'l', 'k', 'e', 'b', 'a', 'e', 'k', 'k', 'e', 'n', '.', 'n', 'o', '\0',
   /* "sillisalaatti.fi", true */ 's', 'i', 'l', 'l', 'i', 's', 'a', 'l', 'a', 'a', 't', 't', 'i', '.', 'f', 'i', '\0',
   /* "silqueskineyeserum.com", true */ 's', 'i', 'l', 'q', 'u', 'e', 's', 'k', 'i', 'n', 'e', 'y', 'e', 's', 'e', 'r', 'u', 'm', '.', 'c', 'o', 'm', '\0',
@@ -10517,17 +10496,17 @@ static const char kSTSHostTable[] = {
   /* "smb445.com", true */ 's', 'm', 'b', '4', '4', '5', '.', 'c', 'o', 'm', '\0',
   /* "smdavis.us", true */ 's', 'm', 'd', 'a', 'v', 'i', 's', '.', 'u', 's', '\0',
   /* "smdcn.net", true */ 's', 'm', 'd', 'c', 'n', '.', 'n', 'e', 't', '\0',
   /* "smdev.fr", true */ 's', 'm', 'd', 'e', 'v', '.', 'f', 'r', '\0',
   /* "sme-gmbh.net", true */ 's', 'm', 'e', '-', 'g', 'm', 'b', 'h', '.', 'n', 'e', 't', '\0',
   /* "smiatek.name", true */ 's', 'm', 'i', 'a', 't', 'e', 'k', '.', 'n', 'a', 'm', 'e', '\0',
   /* "smipty.cn", true */ 's', 'm', 'i', 'p', 't', 'y', '.', 'c', 'n', '\0',
   /* "smipty.com", true */ 's', 'm', 'i', 'p', 't', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "smith.is", true */ 's', 'm', 'i', 't', 'h', '.', 'i', 's', '\0',
+  /* "smith.is", false */ 's', 'm', 'i', 't', 'h', '.', 'i', 's', '\0',
   /* "smithandcanova.co.uk", true */ 's', 'm', 'i', 't', 'h', 'a', 'n', 'd', 'c', 'a', 'n', 'o', 'v', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "smittix.co.uk", true */ 's', 'm', 'i', 't', 't', 'i', 'x', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "smkw.com", true */ 's', 'm', 'k', 'w', '.', 'c', 'o', 'm', '\0',
   /* "smm.im", true */ 's', 'm', 'm', '.', 'i', 'm', '\0',
   /* "smoo.st", true */ 's', 'm', 'o', 'o', '.', 's', 't', '\0',
   /* "smoothgesturesplus.com", true */ 's', 'm', 'o', 'o', 't', 'h', 'g', 'e', 's', 't', 'u', 'r', 'e', 's', 'p', 'l', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "smoothics.com", true */ 's', 'm', 'o', 'o', 't', 'h', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "smove.sg", true */ 's', 'm', 'o', 'v', 'e', '.', 's', 'g', '\0',
@@ -10943,16 +10922,17 @@ static const char kSTSHostTable[] = {
   /* "strobeltobias.de", true */ 's', 't', 'r', 'o', 'b', 'e', 'l', 't', 'o', 'b', 'i', 'a', 's', '.', 'd', 'e', '\0',
   /* "strobeto.de", true */ 's', 't', 'r', 'o', 'b', 'e', 't', 'o', '.', 'd', 'e', '\0',
   /* "strom.family", true */ 's', 't', 'r', 'o', 'm', '.', 'f', 'a', 'm', 'i', 'l', 'y', '\0',
   /* "structurally.net", true */ 's', 't', 'r', 'u', 'c', 't', 'u', 'r', 'a', 'l', 'l', 'y', '.', 'n', 'e', 't', '\0',
   /* "strugee.net", true */ 's', 't', 'r', 'u', 'g', 'e', 'e', '.', 'n', 'e', 't', '\0',
   /* "stuartbell.co.uk", true */ 's', 't', 'u', 'a', 'r', 't', 'b', 'e', 'l', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "stuco.co", true */ 's', 't', 'u', 'c', 'o', '.', 'c', 'o', '\0',
   /* "studenckiemetody.pl", true */ 's', 't', 'u', 'd', 'e', 'n', 'c', 'k', 'i', 'e', 'm', 'e', 't', 'o', 'd', 'y', '.', 'p', 'l', '\0',
+  /* "student.andover.edu", false */ 's', 't', 'u', 'd', 'e', 'n', 't', '.', 'a', 'n', 'd', 'o', 'v', 'e', 'r', '.', 'e', 'd', 'u', '\0',
   /* "studentloans.gov", true */ 's', 't', 'u', 'd', 'e', 'n', 't', 'l', 'o', 'a', 'n', 's', '.', 'g', 'o', 'v', '\0',
   /* "studer.su", true */ 's', 't', 'u', 'd', 'e', 'r', '.', 's', 'u', '\0',
   /* "studienportal.eu", true */ 's', 't', 'u', 'd', 'i', 'e', 'n', 'p', 'o', 'r', 't', 'a', 'l', '.', 'e', 'u', '\0',
   /* "studinf.xyz", true */ 's', 't', 'u', 'd', 'i', 'n', 'f', '.', 'x', 'y', 'z', '\0',
   /* "studio-panic.com", true */ 's', 't', 'u', 'd', 'i', 'o', '-', 'p', 'a', 'n', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "studiomarcella.com", true */ 's', 't', 'u', 'd', 'i', 'o', 'm', 'a', 'r', 'c', 'e', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "studiostawki.com", true */ 's', 't', 'u', 'd', 'i', 'o', 's', 't', 'a', 'w', 'k', 'i', '.', 'c', 'o', 'm', '\0',
   /* "studiostudio.net", true */ 's', 't', 'u', 'd', 'i', 'o', 's', 't', 'u', 'd', 'i', 'o', '.', 'n', 'e', 't', '\0',
@@ -11285,16 +11265,17 @@ static const char kSTSHostTable[] = {
   /* "tenshoku-hanashi.com", true */ 't', 'e', 'n', 's', 'h', 'o', 'k', 'u', '-', 'h', 'a', 'n', 'a', 's', 'h', 'i', '.', 'c', 'o', 'm', '\0',
   /* "tent.io", true */ 't', 'e', 'n', 't', '.', 'i', 'o', '\0',
   /* "tenta.com", true */ 't', 'e', 'n', 't', 'a', '.', 'c', 'o', 'm', '\0',
   /* "tentations-voyages.com", true */ 't', 'e', 'n', 't', 'a', 't', 'i', 'o', 'n', 's', '-', 'v', 'o', 'y', 'a', 'g', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "tenyx.de", true */ 't', 'e', 'n', 'y', 'x', '.', 'd', 'e', '\0',
   /* "teodio.cl", true */ 't', 'e', 'o', 'd', 'i', 'o', '.', 'c', 'l', '\0',
   /* "teos.online", true */ 't', 'e', 'o', 's', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
   /* "teoskanta.fi", true */ 't', 'e', 'o', 's', 'k', 'a', 'n', 't', 'a', '.', 'f', 'i', '\0',
+  /* "tepid.org", true */ 't', 'e', 'p', 'i', 'd', '.', 'o', 'r', 'g', '\0',
   /* "teracloud.at", true */ 't', 'e', 'r', 'a', 'c', 'l', 'o', 'u', 'd', '.', 'a', 't', '\0',
   /* "teriiphotography.com", true */ 't', 'e', 'r', 'i', 'i', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '.', 'c', 'o', 'm', '\0',
   /* "terrab.de", true */ 't', 'e', 'r', 'r', 'a', 'b', '.', 'd', 'e', '\0',
   /* "terracloud.de", true */ 't', 'e', 'r', 'r', 'a', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'e', '\0',
   /* "terraelectronica.ru", true */ 't', 'e', 'r', 'r', 'a', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 'a', '.', 'r', 'u', '\0',
   /* "terraform.io", true */ 't', 'e', 'r', 'r', 'a', 'f', 'o', 'r', 'm', '.', 'i', 'o', '\0',
   /* "terragni-sarasin.ch", true */ 't', 'e', 'r', 'r', 'a', 'g', 'n', 'i', '-', 's', 'a', 'r', 'a', 's', 'i', 'n', '.', 'c', 'h', '\0',
   /* "terrastaffinggroup.com", false */ 't', 'e', 'r', 'r', 'a', 's', 't', 'a', 'f', 'f', 'i', 'n', 'g', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
@@ -11308,16 +11289,17 @@ static const char kSTSHostTable[] = {
   /* "testadron.com", true */ 't', 'e', 's', 't', 'a', 'd', 'r', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "testingbot.com", false */ 't', 'e', 's', 't', 'i', 'n', 'g', 'b', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "testomato.com", true */ 't', 'e', 's', 't', 'o', 'm', 'a', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "testosterone-complex.com", true */ 't', 'e', 's', 't', 'o', 's', 't', 'e', 'r', 'o', 'n', 'e', '-', 'c', 'o', 'm', 'p', 'l', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "testsuite.org", true */ 't', 'e', 's', 't', 's', 'u', 'i', 't', 'e', '.', 'o', 'r', 'g', '\0',
   /* "tetrarch.co", true */ 't', 'e', 't', 'r', 'a', 'r', 'c', 'h', '.', 'c', 'o', '\0',
   /* "tetsumaki.net", true */ 't', 'e', 't', 's', 'u', 'm', 'a', 'k', 'i', '.', 'n', 'e', 't', '\0',
   /* "teuniz.nl", true */ 't', 'e', 'u', 'n', 'i', 'z', '.', 'n', 'l', '\0',
+  /* "teunstuinposters.nl", false */ 't', 'e', 'u', 'n', 's', 't', 'u', 'i', 'n', 'p', 'o', 's', 't', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "textburst.com", true */ 't', 'e', 'x', 't', 'b', 'u', 'r', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "texte-zur-taufe.de", true */ 't', 'e', 'x', 't', 'e', '-', 'z', 'u', 'r', '-', 't', 'a', 'u', 'f', 'e', '.', 'd', 'e', '\0',
   /* "texter-linz.at", true */ 't', 'e', 'x', 't', 'e', 'r', '-', 'l', 'i', 'n', 'z', '.', 'a', 't', '\0',
   /* "texterseo.at", true */ 't', 'e', 'x', 't', 'e', 'r', 's', 'e', 'o', '.', 'a', 't', '\0',
   /* "textualapp.com", true */ 't', 'e', 'x', 't', 'u', 'a', 'l', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "texy.info", true */ 't', 'e', 'x', 'y', '.', 'i', 'n', 'f', 'o', '\0',
   /* "tf-network.de", true */ 't', 'f', '-', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'd', 'e', '\0',
   /* "tf2b.com", true */ 't', 'f', '2', 'b', '.', 'c', 'o', 'm', '\0',
@@ -11571,17 +11553,16 @@ static const char kSTSHostTable[] = {
   /* "tmi-products.eu", true */ 't', 'm', 'i', '-', 'p', 'r', 'o', 'd', 'u', 'c', 't', 's', '.', 'e', 'u', '\0',
   /* "tmi-produkter.se", true */ 't', 'm', 'i', '-', 'p', 'r', 'o', 'd', 'u', 'k', 't', 'e', 'r', '.', 's', 'e', '\0',
   /* "tmm.cx", true */ 't', 'm', 'm', '.', 'c', 'x', '\0',
   /* "tmpraider.net", true */ 't', 'm', 'p', 'r', 'a', 'i', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "tmpsantos.com.br", true */ 't', 'm', 'p', 's', 'a', 'n', 't', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "tmtopup.com", true */ 't', 'm', 't', 'o', 'p', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "tnes.dk", true */ 't', 'n', 'e', 's', '.', 'd', 'k', '\0',
   /* "tno.io", true */ 't', 'n', 'o', '.', 'i', 'o', '\0',
-  /* "toast.al", true */ 't', 'o', 'a', 's', 't', '.', 'a', 'l', '\0',
   /* "tobias-bielefeld.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'b', 'i', 'e', 'l', 'e', 'f', 'e', 'l', 'd', '.', 'd', 'e', '\0',
   /* "tobias-kluge.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'k', 'l', 'u', 'g', 'e', '.', 'd', 'e', '\0',
   /* "tobias-picha.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'p', 'i', 'c', 'h', 'a', '.', 'd', 'e', '\0',
   /* "tobias-weidhase.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'w', 'e', 'i', 'd', 'h', 'a', 's', 'e', '.', 'd', 'e', '\0',
   /* "tobiasconradi.com", true */ 't', 'o', 'b', 'i', 'a', 's', 'c', 'o', 'n', 'r', 'a', 'd', 'i', '.', 'c', 'o', 'm', '\0',
   /* "tobiassachs.de", true */ 't', 'o', 'b', 'i', 'a', 's', 's', 'a', 'c', 'h', 's', '.', 'd', 'e', '\0',
   /* "tobiassattler.com", true */ 't', 'o', 'b', 'i', 'a', 's', 's', 'a', 't', 't', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tocaro.im", true */ 't', 'o', 'c', 'a', 'r', 'o', '.', 'i', 'm', '\0',
@@ -11724,17 +11705,16 @@ static const char kSTSHostTable[] = {
   /* "trackchair.com", true */ 't', 'r', 'a', 'c', 'k', 'c', 'h', 'a', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "trade-smart.ru", true */ 't', 'r', 'a', 'd', 'e', '-', 's', 'm', 'a', 'r', 't', '.', 'r', 'u', '\0',
   /* "trade.gov.uk", true */ 't', 'r', 'a', 'd', 'e', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
   /* "tradedesk.co.za", true */ 't', 'r', 'a', 'd', 'e', 'd', 'e', 's', 'k', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "tradeinvent.co.uk", true */ 't', 'r', 'a', 'd', 'e', 'i', 'n', 'v', 'e', 'n', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "trademan.ky", true */ 't', 'r', 'a', 'd', 'e', 'm', 'a', 'n', '.', 'k', 'y', '\0',
   /* "tradinews.com", true */ 't', 'r', 'a', 'd', 'i', 'n', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "tradiz.org", true */ 't', 'r', 'a', 'd', 'i', 'z', '.', 'o', 'r', 'g', '\0',
-  /* "traeningsprojekt.dk", true */ 't', 'r', 'a', 'e', 'n', 'i', 'n', 'g', 's', 'p', 'r', 'o', 'j', 'e', 'k', 't', '.', 'd', 'k', '\0',
   /* "trafficquality.org", true */ 't', 'r', 'a', 'f', 'f', 'i', 'c', 'q', 'u', 'a', 'l', 'i', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "traffixdevices.com", true */ 't', 'r', 'a', 'f', 'f', 'i', 'x', 'd', 'e', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "traindb.nl", true */ 't', 'r', 'a', 'i', 'n', 'd', 'b', '.', 'n', 'l', '\0',
   /* "trainex.org", true */ 't', 'r', 'a', 'i', 'n', 'e', 'x', '.', 'o', 'r', 'g', '\0',
   /* "trainline.de", true */ 't', 'r', 'a', 'i', 'n', 'l', 'i', 'n', 'e', '.', 'd', 'e', '\0',
   /* "trainline.es", true */ 't', 'r', 'a', 'i', 'n', 'l', 'i', 'n', 'e', '.', 'e', 's', '\0',
   /* "trainline.eu", true */ 't', 'r', 'a', 'i', 'n', 'l', 'i', 'n', 'e', '.', 'e', 'u', '\0',
   /* "trainline.fr", true */ 't', 'r', 'a', 'i', 'n', 'l', 'i', 'n', 'e', '.', 'f', 'r', '\0',
@@ -11904,17 +11884,16 @@ static const char kSTSHostTable[] = {
   /* "typeblog.net", true */ 't', 'y', 'p', 'e', 'b', 'l', 'o', 'g', '.', 'n', 'e', 't', '\0',
   /* "typecodes.com", true */ 't', 'y', 'p', 'e', 'c', 'o', 'd', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "typehub.net", true */ 't', 'y', 'p', 'e', 'h', 'u', 'b', '.', 'n', 'e', 't', '\0',
   /* "typeofweb.com", true */ 't', 'y', 'p', 'e', 'o', 'f', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
   /* "typeonejoe.com", true */ 't', 'y', 'p', 'e', 'o', 'n', 'e', 'j', 'o', 'e', '.', 'c', 'o', 'm', '\0',
   /* "typeria.net", true */ 't', 'y', 'p', 'e', 'r', 'i', 'a', '.', 'n', 'e', 't', '\0',
   /* "typewolf.com", true */ 't', 'y', 'p', 'e', 'w', 'o', 'l', 'f', '.', 'c', 'o', 'm', '\0',
   /* "typing.com", true */ 't', 'y', 'p', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
-  /* "typingrevolution.com", true */ 't', 'y', 'p', 'i', 'n', 'g', 'r', 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "typo3.com", true */ 't', 'y', 'p', 'o', '3', '.', 'c', 'o', 'm', '\0',
   /* "tysye.ca", true */ 't', 'y', 's', 'y', 'e', '.', 'c', 'a', '\0',
   /* "u5b.de", true */ 'u', '5', 'b', '.', 'd', 'e', '\0',
   /* "uadp.pw", true */ 'u', 'a', 'd', 'p', '.', 'p', 'w', '\0',
   /* "uae-company-service.com", true */ 'u', 'a', 'e', '-', 'c', 'o', 'm', 'p', 'a', 'n', 'y', '-', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "uangteman.com", true */ 'u', 'a', 'n', 'g', 't', 'e', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "uasmi.com", true */ 'u', 'a', 's', 'm', 'i', '.', 'c', 'o', 'm', '\0',
   /* "uat-activesg.com", true */ 'u', 'a', 't', '-', 'a', 'c', 't', 'i', 'v', 'e', 's', 'g', '.', 'c', 'o', 'm', '\0',
@@ -11922,17 +11901,16 @@ static const char kSTSHostTable[] = {
   /* "ubanquity.com", true */ 'u', 'b', 'a', 'n', 'q', 'u', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "uber.com.au", true */ 'u', 'b', 'e', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "uberboxen.net", true */ 'u', 'b', 'e', 'r', 'b', 'o', 'x', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "uberfunction.com", true */ 'u', 'b', 'e', 'r', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ubertt.org", true */ 'u', 'b', 'e', 'r', 't', 't', '.', 'o', 'r', 'g', '\0',
   /* "uberwald.de", true */ 'u', 'b', 'e', 'r', 'w', 'a', 'l', 'd', '.', 'd', 'e', '\0',
   /* "uberwald.ws", true */ 'u', 'b', 'e', 'r', 'w', 'a', 'l', 'd', '.', 'w', 's', '\0',
   /* "ubicv.com", true */ 'u', 'b', 'i', 'c', 'v', '.', 'c', 'o', 'm', '\0',
-  /* "ubtce.com", true */ 'u', 'b', 't', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ucfirst.nl", true */ 'u', 'c', 'f', 'i', 'r', 's', 't', '.', 'n', 'l', '\0',
   /* "udbhav.me", true */ 'u', 'd', 'b', 'h', 'a', 'v', '.', 'm', 'e', '\0',
   /* "udo-luetkemeier.de", true */ 'u', 'd', 'o', '-', 'l', 'u', 'e', 't', 'k', 'e', 'm', 'e', 'i', 'e', 'r', '.', 'd', 'e', '\0',
   /* "udomain.net", true */ 'u', 'd', 'o', 'm', 'a', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "udruga-point.hr", true */ 'u', 'd', 'r', 'u', 'g', 'a', '-', 'p', 'o', 'i', 'n', 't', '.', 'h', 'r', '\0',
   /* "uerdingen.info", true */ 'u', 'e', 'r', 'd', 'i', 'n', 'g', 'e', 'n', '.', 'i', 'n', 'f', 'o', '\0',
   /* "uesociedadlimitada.com", true */ 'u', 'e', 's', 'o', 'c', 'i', 'e', 'd', 'a', 'd', 'l', 'i', 'm', 'i', 't', 'a', 'd', 'a', '.', 'c', 'o', 'm', '\0',
   /* "ueu.me", true */ 'u', 'e', 'u', '.', 'm', 'e', '\0',
@@ -12067,17 +12045,16 @@ static const char kSTSHostTable[] = {
   /* "usabackground.com", true */ 'u', 's', 'a', 'b', 'a', 'c', 'k', 'g', 'r', 'o', 'u', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "usakitchensandflooring.com", true */ 'u', 's', 'a', 'k', 'i', 't', 'c', 'h', 'e', 'n', 's', 'a', 'n', 'd', 'f', 'l', 'o', 'o', 'r', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "usbcraft.com", true */ 'u', 's', 'b', 'c', 'r', 'a', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "usbirthcertificate.com", false */ 'u', 's', 'b', 'i', 'r', 't', 'h', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "usbtypeccompliant.com", true */ 'u', 's', 'b', 't', 'y', 'p', 'e', 'c', 'c', 'o', 'm', 'p', 'l', 'i', 'a', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "uscntalk.com", true */ 'u', 's', 'c', 'n', 't', 'a', 'l', 'k', '.', 'c', 'o', 'm', '\0',
   /* "uscurrency.gov", true */ 'u', 's', 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', '.', 'g', 'o', 'v', '\0',
   /* "usd.de", true */ 'u', 's', 'd', '.', 'd', 'e', '\0',
-  /* "use.be", true */ 'u', 's', 'e', '.', 'b', 'e', '\0',
   /* "usedesk.ru", true */ 'u', 's', 'e', 'd', 'e', 's', 'k', '.', 'r', 'u', '\0',
   /* "useresponse.com", true */ 'u', 's', 'e', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "userify.com", true */ 'u', 's', 'e', 'r', 'i', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "usetypo3.com", true */ 'u', 's', 'e', 't', 'y', 'p', 'o', '3', '.', 'c', 'o', 'm', '\0',
   /* "usgande.com", true */ 'u', 's', 'g', 'a', 'n', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ushare.ch", true */ 'u', 's', 'h', 'a', 'r', 'e', '.', 'c', 'h', '\0',
   /* "usimmigration.us", true */ 'u', 's', 'i', 'm', 'm', 'i', 'g', 'r', 'a', 't', 'i', 'o', 'n', '.', 'u', 's', '\0',
   /* "usitcolours.bg", true */ 'u', 's', 'i', 't', 'c', 'o', 'l', 'o', 'u', 'r', 's', '.', 'b', 'g', '\0',
@@ -12218,16 +12195,17 @@ static const char kSTSHostTable[] = {
   /* "videotogel.net", false */ 'v', 'i', 'd', 'e', 'o', 't', 'o', 'g', 'e', 'l', '.', 'n', 'e', 't', '\0',
   /* "vidid.net", false */ 'v', 'i', 'd', 'i', 'd', '.', 'n', 'e', 't', '\0',
   /* "vieclam24h.vn", false */ 'v', 'i', 'e', 'c', 'l', 'a', 'm', '2', '4', 'h', '.', 'v', 'n', '\0',
   /* "viemeister.com", true */ 'v', 'i', 'e', 'm', 'e', 'i', 's', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "viennan.net", true */ 'v', 'i', 'e', 'n', 'n', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "vietnamese.dating", true */ 'v', 'i', 'e', 't', 'n', 'a', 'm', 'e', 's', 'e', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "vietnamhost.vn", true */ 'v', 'i', 'e', 't', 'n', 'a', 'm', 'h', 'o', 's', 't', '.', 'v', 'n', '\0',
   /* "viewmyrecords.com", true */ 'v', 'i', 'e', 'w', 'm', 'y', 'r', 'e', 'c', 'o', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0',
+  /* "viewsea.com", true */ 'v', 'i', 'e', 'w', 's', 'e', 'a', '.', 'c', 'o', 'm', '\0',
   /* "vigilantnow.com", true */ 'v', 'i', 'g', 'i', 'l', 'a', 'n', 't', 'n', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "vigilo.cf", true */ 'v', 'i', 'g', 'i', 'l', 'o', '.', 'c', 'f', '\0',
   /* "vigilo.ga", true */ 'v', 'i', 'g', 'i', 'l', 'o', '.', 'g', 'a', '\0',
   /* "vigo-krankenversicherung.de", true */ 'v', 'i', 'g', 'o', '-', 'k', 'r', 'a', 'n', 'k', 'e', 'n', 'v', 'e', 'r', 's', 'i', 'c', 'h', 'e', 'r', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "vigo-tarife.de", true */ 'v', 'i', 'g', 'o', '-', 't', 'a', 'r', 'i', 'f', 'e', '.', 'd', 'e', '\0',
   /* "vigrey.com", true */ 'v', 'i', 'g', 'r', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "vijos.org", true */ 'v', 'i', 'j', 'o', 's', '.', 'o', 'r', 'g', '\0',
   /* "vikasbabyworld.de", false */ 'v', 'i', 'k', 'a', 's', 'b', 'a', 'b', 'y', 'w', 'o', 'r', 'l', 'd', '.', 'd', 'e', '\0',
@@ -12240,17 +12218,16 @@ static const char kSTSHostTable[] = {
   /* "vincentcox.com", false */ 'v', 'i', 'n', 'c', 'e', 'n', 't', 'c', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "vincentpancol.com", true */ 'v', 'i', 'n', 'c', 'e', 'n', 't', 'p', 'a', 'n', 'c', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "vinciconps4.it", true */ 'v', 'i', 'n', 'c', 'i', 'c', 'o', 'n', 'p', 's', '4', '.', 'i', 't', '\0',
   /* "vincitraining.com", true */ 'v', 'i', 'n', 'c', 'i', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "vinilosdecorativos.net", true */ 'v', 'i', 'n', 'i', 'l', 'o', 's', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'i', 'v', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "vinner.com.au", true */ 'v', 'i', 'n', 'n', 'e', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "vinyculture.com", true */ 'v', 'i', 'n', 'y', 'c', 'u', 'l', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "viphospitality.se", true */ 'v', 'i', 'p', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', 'i', 't', 'y', '.', 's', 'e', '\0',
-  /* "vipnettikasinoklubi.com", true */ 'v', 'i', 'p', 'n', 'e', 't', 't', 'i', 'k', 'a', 's', 'i', 'n', 'o', 'k', 'l', 'u', 'b', 'i', '.', 'c', 'o', 'm', '\0',
   /* "virginiacrimeanalysisnetwork.org", true */ 'v', 'i', 'r', 'g', 'i', 'n', 'i', 'a', 'c', 'r', 'i', 'm', 'e', 'a', 'n', 'a', 'l', 'y', 's', 'i', 's', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'o', 'r', 'g', '\0',
   /* "virtualdesignmedia.com", false */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'd', 'e', 's', 'i', 'g', 'n', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "virtuallifestyle.nl", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'l', 'i', 'f', 'e', 's', 't', 'y', 'l', 'e', '.', 'n', 'l', '\0',
   /* "virtualperez.com", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'p', 'e', 'r', 'e', 'z', '.', 'c', 'o', 'm', '\0',
   /* "virtualsanity.com", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 's', 'a', 'n', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "visalogy.com", true */ 'v', 'i', 's', 'a', 'l', 'o', 'g', 'y', '.', 'c', 'o', 'm', '\0',
   /* "viscopic.com", true */ 'v', 'i', 's', 'c', 'o', 'p', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "viserproject.com", true */ 'v', 'i', 's', 'e', 'r', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
@@ -12313,17 +12290,17 @@ static const char kSTSHostTable[] = {
   /* "vorlif.org", true */ 'v', 'o', 'r', 'l', 'i', 'f', '.', 'o', 'r', 'g', '\0',
   /* "vorm2.com", true */ 'v', 'o', 'r', 'm', '2', '.', 'c', 'o', 'm', '\0',
   /* "vorodevops.com", true */ 'v', 'o', 'r', 'o', 'd', 'e', 'v', 'o', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "voshod.org", true */ 'v', 'o', 's', 'h', 'o', 'd', '.', 'o', 'r', 'g', '\0',
   /* "vosjesweb.nl", true */ 'v', 'o', 's', 'j', 'e', 's', 'w', 'e', 'b', '.', 'n', 'l', '\0',
   /* "vostronet.com", true */ 'v', 'o', 's', 't', 'r', 'o', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "voter-info.uk", true */ 'v', 'o', 't', 'e', 'r', '-', 'i', 'n', 'f', 'o', '.', 'u', 'k', '\0',
   /* "votoot.com", true */ 'v', 'o', 't', 'o', 'o', 't', '.', 'c', 'o', 'm', '\0',
-  /* "voxographe.com", true */ 'v', 'o', 'x', 'o', 'g', 'r', 'a', 'p', 'h', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "voxographe.com", false */ 'v', 'o', 'x', 'o', 'g', 'r', 'a', 'p', 'h', 'e', '.', 'c', 'o', 'm', '\0',
   /* "vpip.net", true */ 'v', 'p', 'i', 'p', '.', 'n', 'e', 't', '\0',
   /* "vpn.ht", true */ 'v', 'p', 'n', '.', 'h', 't', '\0',
   /* "vpnhot.com", true */ 'v', 'p', 'n', 'h', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "vpnzoom.com", true */ 'v', 'p', 'n', 'z', 'o', 'o', 'm', '.', 'c', 'o', 'm', '\0',
   /* "vps-szerver-berles.hu", true */ 'v', 'p', 's', '-', 's', 'z', 'e', 'r', 'v', 'e', 'r', '-', 'b', 'e', 'r', 'l', 'e', 's', '.', 'h', 'u', '\0',
   /* "vrijgezellen-feest.com", true */ 'v', 'r', 'i', 'j', 'g', 'e', 'z', 'e', 'l', 'l', 'e', 'n', '-', 'f', 'e', 'e', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "vrobert.fr", false */ 'v', 'r', 'o', 'b', 'e', 'r', 't', '.', 'f', 'r', '\0',
   /* "vrtak-cz.net", true */ 'v', 'r', 't', 'a', 'k', '-', 'c', 'z', '.', 'n', 'e', 't', '\0',
@@ -12552,17 +12529,16 @@ static const char kSTSHostTable[] = {
   /* "wf-training-master.appspot.com", true */ 'w', 'f', '-', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '-', 'm', 'a', 's', 't', 'e', 'r', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "wf-trial-hrd.appspot.com", true */ 'w', 'f', '-', 't', 'r', 'i', 'a', 'l', '-', 'h', 'r', 'd', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "wfh.ovh", true */ 'w', 'f', 'h', '.', 'o', 'v', 'h', '\0',
   /* "wfh.se", true */ 'w', 'f', 'h', '.', 's', 'e', '\0',
   /* "wg-tools.de", true */ 'w', 'g', '-', 't', 'o', 'o', 'l', 's', '.', 'd', 'e', '\0',
   /* "wh-guide.de", true */ 'w', 'h', '-', 'g', 'u', 'i', 'd', 'e', '.', 'd', 'e', '\0',
   /* "whatanime.ga", true */ 'w', 'h', 'a', 't', 'a', 'n', 'i', 'm', 'e', '.', 'g', 'a', '\0',
   /* "whatismyipaddress.ca", true */ 'w', 'h', 'a', 't', 'i', 's', 'm', 'y', 'i', 'p', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'c', 'a', '\0',
-  /* "whatnext.limited", true */ 'w', 'h', 'a', 't', 'n', 'e', 'x', 't', '.', 'l', 'i', 'm', 'i', 't', 'e', 'd', '\0',
   /* "whatsapp.com", true */ 'w', 'h', 'a', 't', 's', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "whatsmychaincert.com", true */ 'w', 'h', 'a', 't', 's', 'm', 'y', 'c', 'h', 'a', 'i', 'n', 'c', 'e', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "whatsupgold.com.tw", true */ 'w', 'h', 'a', 't', 's', 'u', 'p', 'g', 'o', 'l', 'd', '.', 'c', 'o', 'm', '.', 't', 'w', '\0',
   /* "whatwebcando.today", true */ 'w', 'h', 'a', 't', 'w', 'e', 'b', 'c', 'a', 'n', 'd', 'o', '.', 't', 'o', 'd', 'a', 'y', '\0',
   /* "whatwg.org", true */ 'w', 'h', 'a', 't', 'w', 'g', '.', 'o', 'r', 'g', '\0',
   /* "whd-guide.de", true */ 'w', 'h', 'd', '-', 'g', 'u', 'i', 'd', 'e', '.', 'd', 'e', '\0',
   /* "wheeler.kiwi.nz", true */ 'w', 'h', 'e', 'e', 'l', 'e', 'r', '.', 'k', 'i', 'w', 'i', '.', 'n', 'z', '\0',
   /* "when-release.ru", false */ 'w', 'h', 'e', 'n', '-', 'r', 'e', 'l', 'e', 'a', 's', 'e', '.', 'r', 'u', '\0',
@@ -12595,16 +12571,17 @@ static const char kSTSHostTable[] = {
   /* "wiedu.net", true */ 'w', 'i', 'e', 'd', 'u', '.', 'n', 'e', 't', '\0',
   /* "wifimask.com", true */ 'w', 'i', 'f', 'i', 'm', 'a', 's', 'k', '.', 'c', 'o', 'm', '\0',
   /* "wifirst.net", true */ 'w', 'i', 'f', 'i', 'r', 's', 't', '.', 'n', 'e', 't', '\0',
   /* "wigle.net", true */ 'w', 'i', 'g', 'l', 'e', '.', 'n', 'e', 't', '\0',
   /* "wiimotion.de", true */ 'w', 'i', 'i', 'm', 'o', 't', 'i', 'o', 'n', '.', 'd', 'e', '\0',
   /* "wijnservices.nl", false */ 'w', 'i', 'j', 'n', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'n', 'l', '\0',
   /* "wiki.python.org", true */ 'w', 'i', 'k', 'i', '.', 'p', 'y', 't', 'h', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "wikibooks.org", true */ 'w', 'i', 'k', 'i', 'b', 'o', 'o', 'k', 's', '.', 'o', 'r', 'g', '\0',
+  /* "wikiclash.info", false */ 'w', 'i', 'k', 'i', 'c', 'l', 'a', 's', 'h', '.', 'i', 'n', 'f', 'o', '\0',
   /* "wikidata.org", true */ 'w', 'i', 'k', 'i', 'd', 'a', 't', 'a', '.', 'o', 'r', 'g', '\0',
   /* "wikileaks.com", true */ 'w', 'i', 'k', 'i', 'l', 'e', 'a', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "wikileaks.org", true */ 'w', 'i', 'k', 'i', 'l', 'e', 'a', 'k', 's', '.', 'o', 'r', 'g', '\0',
   /* "wikimedia.org", true */ 'w', 'i', 'k', 'i', 'm', 'e', 'd', 'i', 'a', '.', 'o', 'r', 'g', '\0',
   /* "wikimediafoundation.org", true */ 'w', 'i', 'k', 'i', 'm', 'e', 'd', 'i', 'a', 'f', 'o', 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "wikimilk.org", true */ 'w', 'i', 'k', 'i', 'm', 'i', 'l', 'k', '.', 'o', 'r', 'g', '\0',
   /* "wikinews.org", true */ 'w', 'i', 'k', 'i', 'n', 'e', 'w', 's', '.', 'o', 'r', 'g', '\0',
   /* "wikipedia.org", true */ 'w', 'i', 'k', 'i', 'p', 'e', 'd', 'i', 'a', '.', 'o', 'r', 'g', '\0',
@@ -12818,17 +12795,16 @@ static const char kSTSHostTable[] = {
   /* "wy6.org", true */ 'w', 'y', '6', '.', 'o', 'r', 'g', '\0',
   /* "wybmabiity.com", true */ 'w', 'y', 'b', 'm', 'a', 'b', 'i', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "wyeworks.com", true */ 'w', 'y', 'e', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "wynterhill.co.uk", true */ 'w', 'y', 'n', 't', 'e', 'r', 'h', 'i', 'l', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "wyzphoto.nl", true */ 'w', 'y', 'z', 'p', 'h', 'o', 't', 'o', '.', 'n', 'l', '\0',
   /* "wzyboy.org", true */ 'w', 'z', 'y', 'b', 'o', 'y', '.', 'o', 'r', 'g', '\0',
   /* "x-ripped-hd.com", true */ 'x', '-', 'r', 'i', 'p', 'p', 'e', 'd', '-', 'h', 'd', '.', 'c', 'o', 'm', '\0',
   /* "x.io", true */ 'x', '.', 'i', 'o', '\0',
-  /* "x.st", true */ 'x', '.', 's', 't', '\0',
   /* "x3led.com", true */ 'x', '3', 'l', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "x509.io", true */ 'x', '5', '0', '9', '.', 'i', 'o', '\0',
   /* "x64architecture.com", true */ 'x', '6', '4', 'a', 'r', 'c', 'h', 'i', 't', 'e', 'c', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "xa1.uk", true */ 'x', 'a', '1', '.', 'u', 'k', '\0',
   /* "xalqbank-online.az", true */ 'x', 'a', 'l', 'q', 'b', 'a', 'n', 'k', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'a', 'z', '\0',
   /* "xbb.hk", true */ 'x', 'b', 'b', '.', 'h', 'k', '\0',
   /* "xbb.li", true */ 'x', 'b', 'b', '.', 'l', 'i', '\0',
   /* "xbind.io", true */ 'x', 'b', 'i', 'n', 'd', '.', 'i', 'o', '\0',
@@ -12858,17 +12834,16 @@ static const char kSTSHostTable[] = {
   /* "xiaolvmu.com", true */ 'x', 'i', 'a', 'o', 'l', 'v', 'm', 'u', '.', 'c', 'o', 'm', '\0',
   /* "xichtsbuch.de", true */ 'x', 'i', 'c', 'h', 't', 's', 'b', 'u', 'c', 'h', '.', 'd', 'e', '\0',
   /* "xichuangke.com", true */ 'x', 'i', 'c', 'h', 'u', 'a', 'n', 'g', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "xicreative.net", true */ 'x', 'i', 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '.', 'n', 'e', 't', '\0',
   /* "xight.org", true */ 'x', 'i', 'g', 'h', 't', '.', 'o', 'r', 'g', '\0',
   /* "xilef.org", true */ 'x', 'i', 'l', 'e', 'f', '.', 'o', 'r', 'g', '\0',
   /* "ximage.me", false */ 'x', 'i', 'm', 'a', 'g', 'e', '.', 'm', 'e', '\0',
   /* "ximens.me", true */ 'x', 'i', 'm', 'e', 'n', 's', '.', 'm', 'e', '\0',
-  /* "xinbiji.cn", true */ 'x', 'i', 'n', 'b', 'i', 'j', 'i', '.', 'c', 'n', '\0',
   /* "xivpn.com", true */ 'x', 'i', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0',
   /* "xjoin.de", true */ 'x', 'j', 'o', 'i', 'n', '.', 'd', 'e', '\0',
   /* "xkviz.net", true */ 'x', 'k', 'v', 'i', 'z', '.', 'n', 'e', 't', '\0',
   /* "xliu.cf", true */ 'x', 'l', 'i', 'u', '.', 'c', 'f', '\0',
   /* "xmedius.com", true */ 'x', 'm', 'e', 'd', 'i', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "xmedius.eu", true */ 'x', 'm', 'e', 'd', 'i', 'u', 's', '.', 'e', 'u', '\0',
   /* "xmerak.com", true */ 'x', 'm', 'e', 'r', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "xmlbeam.org", true */ 'x', 'm', 'l', 'b', 'e', 'a', 'm', '.', 'o', 'r', 'g', '\0',
@@ -13019,17 +12994,16 @@ static const char kSTSHostTable[] = {
   /* "ys-shop.biz", true */ 'y', 's', '-', 's', 'h', 'o', 'p', '.', 'b', 'i', 'z', '\0',
   /* "ytcuber.xyz", true */ 'y', 't', 'c', 'u', 'b', 'e', 'r', '.', 'x', 'y', 'z', '\0',
   /* "ytec.ca", true */ 'y', 't', 'e', 'c', '.', 'c', 'a', '\0',
   /* "ytuquelees.net", true */ 'y', 't', 'u', 'q', 'u', 'e', 'l', 'e', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "ytvwld.de", true */ 'y', 't', 'v', 'w', 'l', 'd', '.', 'd', 'e', '\0',
   /* "yufan.me", true */ 'y', 'u', 'f', 'a', 'n', '.', 'm', 'e', '\0',
   /* "yuka.one", true */ 'y', 'u', 'k', 'a', '.', 'o', 'n', 'e', '\0',
   /* "yuko.moe", true */ 'y', 'u', 'k', 'o', '.', 'm', 'o', 'e', '\0',
-  /* "yukontec.com", true */ 'y', 'u', 'k', 'o', 'n', 't', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "yum.beer", true */ 'y', 'u', 'm', '.', 'b', 'e', 'e', 'r', '\0',
   /* "yunity.org", true */ 'y', 'u', 'n', 'i', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "yunjishou.pro", true */ 'y', 'u', 'n', 'j', 'i', 's', 'h', 'o', 'u', '.', 'p', 'r', 'o', '\0',
   /* "yunpan.blue", true */ 'y', 'u', 'n', 'p', 'a', 'n', '.', 'b', 'l', 'u', 'e', '\0',
   /* "yurikirin.me", true */ 'y', 'u', 'r', 'i', 'k', 'i', 'r', 'i', 'n', '.', 'm', 'e', '\0',
   /* "yusa.me", true */ 'y', 'u', 's', 'a', '.', 'm', 'e', '\0',
   /* "yutabon.com", false */ 'y', 'u', 't', 'a', 'b', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "yutangyun.com", true */ 'y', 'u', 't', 'a', 'n', 'g', 'y', 'u', 'n', '.', 'c', 'o', 'm', '\0',
@@ -13156,16 +13130,17 @@ static const char kSTSHostTable[] = {
   /* "zorntt.fr", true */ 'z', 'o', 'r', 'n', 't', 't', '.', 'f', 'r', '\0',
   /* "zortium.report", true */ 'z', 'o', 'r', 't', 'i', 'u', 'm', '.', 'r', 'e', 'p', 'o', 'r', 't', '\0',
   /* "zorz.info", true */ 'z', 'o', 'r', 'z', '.', 'i', 'n', 'f', 'o', '\0',
   /* "zotero.org", true */ 'z', 'o', 't', 'e', 'r', 'o', '.', 'o', 'r', 'g', '\0',
   /* "zravypapir.cz", true */ 'z', 'r', 'a', 'v', 'y', 'p', 'a', 'p', 'i', 'r', '.', 'c', 'z', '\0',
   /* "ztcaoll222.cn", true */ 'z', 't', 'c', 'a', 'o', 'l', 'l', '2', '2', '2', '.', 'c', 'n', '\0',
   /* "zubel.it", true */ 'z', 'u', 'b', 'e', 'l', '.', 'i', 't', '\0',
   /* "zulu.ro", true */ 'z', 'u', 'l', 'u', '.', 'r', 'o', '\0',
+  /* "zulu7.com", true */ 'z', 'u', 'l', 'u', '7', '.', 'c', 'o', 'm', '\0',
   /* "zund-app.com", true */ 'z', 'u', 'n', 'd', '-', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "zundapp529.nl", true */ 'z', 'u', 'n', 'd', 'a', 'p', 'p', '5', '2', '9', '.', 'n', 'l', '\0',
   /* "zundappachterhoek.nl", true */ 'z', 'u', 'n', 'd', 'a', 'p', 'p', 'a', 'c', 'h', 't', 'e', 'r', 'h', 'o', 'e', 'k', '.', 'n', 'l', '\0',
   /* "zuolan.me", true */ 'z', 'u', 'o', 'l', 'a', 'n', '.', 'm', 'e', '\0',
   /* "zup.me", true */ 'z', 'u', 'p', '.', 'm', 'e', '\0',
   /* "zuram.net", true */ 'z', 'u', 'r', 'a', 'm', '.', 'n', 'e', 't', '\0',
   /* "zvps.uk", true */ 'z', 'v', 'p', 's', '.', 'u', 'k', '\0',
   /* "zvxr.net", true */ 'z', 'v', 'x', 'r', '.', 'n', 'e', 't', '\0',
@@ -13258,13094 +13233,13069 @@ static const nsSTSPreload kSTSPreloadLis
   { 866, true },
   { 880, true },
   { 892, true },
   { 903, true },
   { 913, true },
   { 922, true },
   { 928, true },
   { 943, true },
-  { 951, true },
-  { 960, true },
-  { 978, true },
-  { 990, true },
+  { 952, true },
+  { 970, true },
+  { 982, true },
+  { 991, true },
   { 999, true },
   { 1007, true },
-  { 1015, true },
-  { 1026, true },
+  { 1018, true },
+  { 1030, true },
   { 1038, true },
-  { 1046, true },
-  { 1056, true },
-  { 1072, false },
-  { 1085, true },
-  { 1094, true },
-  { 1108, true },
-  { 1117, true },
-  { 1138, true },
-  { 1147, true },
-  { 1157, true },
-  { 1172, true },
-  { 1189, true },
-  { 1196, true },
-  { 1209, true },
-  { 1218, true },
-  { 1230, false },
+  { 1048, true },
+  { 1064, false },
+  { 1077, true },
+  { 1086, true },
+  { 1100, true },
+  { 1109, true },
+  { 1130, true },
+  { 1139, true },
+  { 1149, true },
+  { 1164, true },
+  { 1181, true },
+  { 1188, true },
+  { 1201, true },
+  { 1210, true },
+  { 1222, false },
+  { 1234, true },
   { 1242, true },
-  { 1250, true },
-  { 1261, true },
-  { 1270, true },
-  { 1279, false },
-  { 1295, true },
-  { 1308, true },
-  { 1317, true },
-  { 1336, true },
-  { 1355, true },
-  { 1367, true },
-  { 1380, true },
-  { 1396, true },
-  { 1411, true },
-  { 1424, true },
-  { 1434, true },
-  { 1448, true },
-  { 1464, true },
-  { 1478, true },
+  { 1253, true },
+  { 1262, true },
+  { 1271, false },
+  { 1287, true },
+  { 1300, true },
+  { 1309, true },
+  { 1328, true },
+  { 1347, true },
+  { 1359, true },
+  { 1372, true },
+  { 1388, true },
+  { 1403, true },
+  { 1416, true },
+  { 1426, true },
+  { 1440, true },
+  { 1456, true },
+  { 1470, true },
+  { 1485, true },
   { 1493, true },
-  { 1501, true },
-  { 1508, true },
-  { 1515, true },
-  { 1527, true },
-  { 1538, true },
-  { 1547, true },
-  { 1558, true },
-  { 1573, true },
-  { 1581, false },
+  { 1500, true },
+  { 1507, true },
+  { 1519, true },
+  { 1530, true },
+  { 1539, true },
+  { 1550, true },
+  { 1565, true },
+  { 1573, false },
+  { 1586, true },
   { 1594, true },
-  { 1602, true },
-  { 1614, true },
-  { 1629, true },
-  { 1648, false },
-  { 1667, true },
-  { 1677, true },
-  { 1683, true },
-  { 1692, true },
-  { 1705, false },
-  { 1712, true },
-  { 1724, true },
-  { 1733, true },
-  { 1746, true },
-  { 1756, true },
-  { 1764, false },
-  { 1771, true },
-  { 1782, true },
-  { 1794, true },
-  { 1802, true },
-  { 1815, true },
-  { 1822, true },
-  { 1831, true },
-  { 1843, true },
-  { 1852, true },
-  { 1873, true },
-  { 1897, true },
-  { 1908, true },
-  { 1914, true },
-  { 1927, true },
-  { 1939, true },
-  { 1951, true },
-  { 1961, true },
-  { 1978, true },
-  { 1985, true },
-  { 1994, true },
-  { 2015, false },
-  { 2028, true },
-  { 2038, true },
-  { 2049, true },
-  { 2061, true },
-  { 2070, true },
-  { 2080, true },
-  { 2091, true },
-  { 2099, true },
-  { 2111, true },
-  { 2121, true },
-  { 2140, true },
-  { 2151, true },
-  { 2163, true },
-  { 2175, true },
-  { 2187, true },
-  { 2198, true },
-  { 2207, true },
-  { 2220, true },
-  { 2240, true },
-  { 2255, true },
-  { 2263, true },
-  { 2273, true },
-  { 2290, true },
-  { 2305, true },
-  { 2312, false },
-  { 2323, true },
-  { 2338, false },
-  { 2353, true },
-  { 2372, true },
-  { 2382, true },
-  { 2393, true },
-  { 2411, true },
-  { 2425, true },
-  { 2437, true },
-  { 2453, true },
-  { 2464, false },
-  { 2480, false },
-  { 2492, true },
-  { 2505, true },
-  { 2518, false },
-  { 2526, true },
-  { 2550, true },
-  { 2565, true },
-  { 2584, true },
-  { 2597, true },
-  { 2609, true },
-  { 2620, true },
-  { 2644, true },
-  { 2657, true },
-  { 2666, true },
-  { 2683, true },
-  { 2695, true },
-  { 2714, true },
-  { 2737, true },
-  { 2753, true },
-  { 2770, true },
-  { 2790, true },
-  { 2811, true },
-  { 2831, true },
-  { 2843, true },
-  { 2854, true },
-  { 2861, true },
-  { 2873, true },
-  { 2894, true },
-  { 2906, true },
-  { 2923, true },
-  { 2936, true },
-  { 2952, true },
-  { 2964, true },
-  { 2977, false },
-  { 2986, true },
-  { 3001, true },
-  { 3018, true },
+  { 1606, true },
+  { 1621, true },
+  { 1640, true },
+  { 1647, false },
+  { 1666, true },
+  { 1676, true },
+  { 1682, true },
+  { 1691, true },
+  { 1704, false },
+  { 1711, true },
+  { 1723, true },
+  { 1732, true },
+  { 1745, true },
+  { 1755, true },
+  { 1763, false },
+  { 1770, true },
+  { 1781, true },
+  { 1793, true },
+  { 1801, true },
+  { 1814, true },
+  { 1821, true },
+  { 1830, true },
+  { 1842, true },
+  { 1851, true },
+  { 1872, true },
+  { 1896, true },
+  { 1907, true },
+  { 1913, true },
+  { 1926, true },
+  { 1938, true },
+  { 1950, true },
+  { 1960, true },
+  { 1977, true },
+  { 1984, true },
+  { 1993, true },
+  { 2014, false },
+  { 2027, true },
+  { 2037, true },
+  { 2048, true },
+  { 2060, true },
+  { 2069, true },
+  { 2079, true },
+  { 2090, true },
+  { 2098, true },
+  { 2110, true },
+  { 2120, true },
+  { 2139, true },
+  { 2150, true },
+  { 2162, true },
+  { 2174, true },
+  { 2186, true },
+  { 2197, true },
+  { 2206, true },
+  { 2219, true },
+  { 2239, true },
+  { 2254, true },
+  { 2262, true },
+  { 2272, true },
+  { 2289, true },
+  { 2304, true },
+  { 2311, false },
+  { 2322, true },
+  { 2337, false },
+  { 2352, true },
+  { 2371, true },
+  { 2381, true },
+  { 2392, true },
+  { 2410, true },
+  { 2424, true },
+  { 2436, true },
+  { 2452, true },
+  { 2463, false },
+  { 2479, false },
+  { 2491, true },
+  { 2504, true },
+  { 2517, false },
+  { 2525, true },
+  { 2549, true },
+  { 2564, true },
+  { 2583, true },
+  { 2596, true },
+  { 2608, true },
+  { 2619, true },
+  { 2643, true },
+  { 2656, true },
+  { 2665, true },
+  { 2682, true },
+  { 2694, true },
+  { 2713, true },
+  { 2736, true },
+  { 2752, true },
+  { 2769, true },
+  { 2789, true },
+  { 2804, true },
+  { 2825, true },
+  { 2845, true },
+  { 2857, true },
+  { 2868, true },
+  { 2875, true },
+  { 2887, true },
+  { 2908, true },
+  { 2920, true },
+  { 2937, true },
+  { 2950, true },
+  { 2966, true },
+  { 2978, true },
+  { 2991, false },
+  { 3000, true },
+  { 3015, true },
   { 3032, true },
-  { 3048, true },
-  { 3059, true },
-  { 3071, true },
-  { 3092, true },
-  { 3109, false },
-  { 3119, true },
-  { 3134, true },
-  { 3148, false },
-  { 3161, true },
-  { 3170, true },
+  { 3046, true },
+  { 3062, true },
+  { 3073, true },
+  { 3085, true },
+  { 3106, true },
+  { 3123, false },
+  { 3133, true },
+  { 3148, true },
+  { 3162, false },
+  { 3175, true },
   { 3184, true },
-  { 3196, true },
-  { 3211, true },
-  { 3224, true },
-  { 3236, true },
-  { 3248, true },
-  { 3260, true },
-  { 3272, true },
-  { 3284, true },
-  { 3295, true },
+  { 3198, true },
+  { 3210, true },
+  { 3225, true },
+  { 3238, true },
+  { 3250, true },
+  { 3262, true },
+  { 3274, true },
+  { 3286, true },
+  { 3298, true },
   { 3309, true },
-  { 3325, true },
-  { 3338, true },
-  { 3355, true },
-  { 3370, true },
-  { 3385, true },
-  { 3403, true },
-  { 3412, true },
-  { 3425, true },
-  { 3446, true },
-  { 3455, true },
-  { 3465, true },
-  { 3490, true },
-  { 3501, true },
-  { 3520, true },
-  { 3532, true },
-  { 3551, true },
-  { 3570, true },
-  { 3589, true },
-  { 3608, true },
-  { 3623, true },
-  { 3634, true },
-  { 3647, true },
-  { 3659, true },
-  { 3672, true },
+  { 3323, true },
+  { 3339, true },
+  { 3352, true },
+  { 3369, true },
+  { 3384, true },
+  { 3399, true },
+  { 3417, true },
+  { 3426, true },
+  { 3439, true },
+  { 3460, true },
+  { 3469, true },
+  { 3479, true },
+  { 3504, true },
+  { 3515, true },
+  { 3534, true },
+  { 3546, true },
+  { 3565, true },
+  { 3584, true },
+  { 3603, true },
+  { 3622, true },
+  { 3637, true },
+  { 3648, true },
+  { 3661, true },
+  { 3673, true },
   { 3686, true },
-  { 3697, true },
-  { 3706, true },
+  { 3700, true },
+  { 3711, true },
   { 3720, true },
-  { 3732, true },
-  { 3759, true },
-  { 3785, true },
-  { 3798, true },
-  { 3809, true },
-  { 3833, true },
-  { 3850, true },
-  { 3878, true },
-  { 3894, true },
-  { 3903, true },
-  { 3913, true },
+  { 3734, true },
+  { 3746, true },
+  { 3773, true },
+  { 3799, true },
+  { 3812, true },
+  { 3823, true },
+  { 3847, true },
+  { 3864, true },
+  { 3892, true },
+  { 3908, true },
+  { 3917, true },
   { 3927, true },
-  { 3937, true },
-  { 3951, false },
-  { 3972, true },
-  { 3990, true },
-  { 3998, true },
-  { 4007, true },
-  { 4026, true },
-  { 4045, true },
-  { 4058, true },
-  { 4069, true },
-  { 4089, true },
-  { 4107, false },
-  { 4126, true },
+  { 3941, true },
+  { 3951, true },
+  { 3965, false },
+  { 3986, true },
+  { 4004, true },
+  { 4012, true },
+  { 4021, true },
+  { 4040, true },
+  { 4059, true },
+  { 4072, true },
+  { 4083, true },
+  { 4103, true },
+  { 4121, false },
   { 4140, true },
-  { 4150, true },
-  { 4171, true },
-  { 4187, true },
-  { 4197, true },
-  { 4210, true },
-  { 4223, true },
+  { 4154, true },
+  { 4164, true },
+  { 4185, true },
+  { 4201, true },
+  { 4211, true },
+  { 4224, true },
   { 4237, true },
   { 4251, true },
-  { 4261, true },
-  { 4271, true },
-  { 4281, true },
-  { 4291, true },
-  { 4301, true },
-  { 4311, true },
-  { 4328, false },
-  { 4336, true },
-  { 4347, true },
-  { 4366, true },
-  { 4377, true },
-  { 4388, true },
-  { 4397, true },
-  { 4417, true },
-  { 4428, true },
-  { 4452, true },
+  { 4265, true },
+  { 4275, true },
+  { 4285, true },
+  { 4295, true },
+  { 4305, true },
+  { 4315, true },
+  { 4325, true },
+  { 4342, false },
+  { 4350, true },
+  { 4361, true },
+  { 4380, true },
+  { 4391, true },
+  { 4402, true },
+  { 4411, true },
+  { 4431, true },
+  { 4442, true },
   { 4466, true },
-  { 4482, true },
-  { 4494, true },
-  { 4510, true },
-  { 4521, true },
+  { 4480, true },
+  { 4496, true },
+  { 4508, true },
+  { 4524, true },
   { 4535, true },
-  { 4551, true },
-  { 4559, true },
-  { 4576, false },
-  { 4600, true },
-  { 4617, true },
-  { 4625, false },
-  { 4641, true },
-  { 4649, true },
+  { 4549, true },
+  { 4565, true },
+  { 4573, true },
+  { 4590, false },
+  { 4614, true },
+  { 4631, true },
+  { 4639, false },
+  { 4655, true },
   { 4663, true },
-  { 4675, false },
-  { 4688, true },
-  { 4700, true },
-  { 4712, true },
-  { 4724, true },
-  { 4734, true },
-  { 4742, true },
+  { 4677, true },
+  { 4689, false },
+  { 4702, true },
+  { 4714, true },
+  { 4726, true },
+  { 4738, true },
+  { 4748, true },
   { 4756, true },
-  { 4769, true },
-  { 4781, true },
-  { 4800, true },
-  { 4819, true },
-  { 4852, true },
-  { 4862, true },
-  { 4869, true },
-  { 4886, true },
-  { 4901, true },
-  { 4910, true },
-  { 4917, true },
-  { 4931, true },
-  { 4939, true },
-  { 4950, true },
-  { 4965, true },
-  { 4980, true },
-  { 4990, true },
-  { 5001, true },
-  { 5016, true },
-  { 5028, true },
-  { 5039, true },
-  { 5059, true },
-  { 5070, true },
-  { 5083, true },
-  { 5094, true },
-  { 5105, true },
-  { 5118, true },
-  { 5136, true },
-  { 5148, true },
-  { 5157, true },
-  { 5171, true },
-  { 5182, true },
-  { 5199, true },
-  { 5210, true },
-  { 5218, true },
-  { 5227, true },
-  { 5253, true },
-  { 5264, true },
-  { 5274, false },
-  { 5291, true },
-  { 5301, true },
-  { 5315, true },
-  { 5327, true },
-  { 5336, true },
-  { 5353, true },
-  { 5377, true },
-  { 5393, true },
-  { 5413, true },
-  { 5438, true },
-  { 5463, true },
-  { 5488, true },
-  { 5500, true },
-  { 5512, true },
-  { 5521, true },
-  { 5548, true },
-  { 5561, false },
-  { 5570, true },
-  { 5586, true },
-  { 5602, true },
-  { 5614, true },
-  { 5628, true },
-  { 5648, true },
-  { 5663, true },
-  { 5684, true },
-  { 5696, true },
-  { 5706, true },
-  { 5718, true },
-  { 5730, true },
-  { 5739, true },
-  { 5751, true },
-  { 5770, true },
-  { 5783, true },
-  { 5794, true },
-  { 5803, true },
-  { 5814, true },
-  { 5828, true },
-  { 5844, true },
-  { 5864, true },
-  { 5885, true },
-  { 5899, true },
-  { 5912, true },
-  { 5922, true },
-  { 5937, true },
-  { 5955, true },
-  { 5965, true },
-  { 5980, true },
-  { 5994, true },
-  { 6009, true },
-  { 6019, true },
-  { 6033, true },
-  { 6050, true },
-  { 6065, true },
-  { 6079, true },
-  { 6093, true },
-  { 6109, true },
-  { 6121, true },
-  { 6133, true },
-  { 6148, true },
-  { 6162, true },
-  { 6184, true },
-  { 6205, false },
-  { 6226, true },
-  { 6239, true },
-  { 6251, true },
-  { 6264, true },
-  { 6279, true },
-  { 6290, true },
-  { 6306, false },
-  { 6313, true },
-  { 6324, true },
-  { 6336, true },
-  { 6349, true },
+  { 4770, true },
+  { 4783, true },
+  { 4795, true },
+  { 4814, true },
+  { 4833, true },
+  { 4866, true },
+  { 4876, true },
+  { 4883, true },
+  { 4898, true },
+  { 4907, true },
+  { 4914, true },
+  { 4928, true },
+  { 4936, true },
+  { 4947, true },
+  { 4962, true },
+  { 4977, true },
+  { 4987, true },
+  { 4998, true },
+  { 5013, true },
+  { 5025, true },
+  { 5036, true },
+  { 5056, true },
+  { 5067, true },
+  { 5080, true },
+  { 5091, true },
+  { 5102, true },
+  { 5115, true },
+  { 5133, true },
+  { 5145, true },
+  { 5154, true },
+  { 5168, true },
+  { 5179, true },
+  { 5196, true },