Merge m-c to inbound, a=merge
authorWes Kocher <wkocher@mozilla.com>
Fri, 11 Aug 2017 13:25:37 -0700
changeset 374411 7970d73dfbe88473fad5b01a793a0fd0cf560ab7
parent 374410 d4fb5e7082d80d5f0469c003bb620022b1330e48 (current diff)
parent 374285 80ff3f300e05f38f96c385b03d1973a966a2bd35 (diff)
child 374412 e24e342dbd3ac091197b3191148f1df7da32872a
push id32322
push userarchaeopteryx@coole-files.de
push dateSat, 12 Aug 2017 22:54:01 +0000
treeherdermozilla-central@687810bb2143 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-c to inbound, a=merge MozReview-Commit-ID: HSkzFTcnhOy
browser/config/tooltool-manifests/win32/clang.manifest
browser/config/tooltool-manifests/win64/clang.manifest
dom/webidl/RecordErrorEvent.webidl
mobile/android/base/pocket-api-sandbox.token
taskcluster/taskgraph/actions/add-new-jobs.py
taskcluster/taskgraph/actions/test-retrigger-action.py
testing/marionette/client/marionette_driver/marionette.py
testing/marionette/driver.js
testing/marionette/harness/marionette_harness/tests/unit/test_session.py
testing/web-platform/meta/dom/nodes/MutationObserver-childList.html.ini
testing/web-platform/meta/html/semantics/forms/the-input-element/files.html.ini
testing/web-platform/meta/web-animations/interfaces/KeyframeEffect/constructor.html.ini
toolkit/components/resistfingerprinting/nsRFPService.h
toolkit/themes/shared/alert-common.css
toolkit/themes/shared/extensions/navigation.png
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1561,16 +1561,18 @@ pref("browser.tabs.crashReporting.email"
 pref("extensions.interposition.enabled", true);
 pref("extensions.interposition.prefetching", true);
 
 // But don't allow non-MPC extensions by default on Nightly
 #if defined(NIGHTLY_BUILD)
 pref("extensions.allow-non-mpc-extensions", false);
 #endif
 
+pref("extensions.legacy.enabled", false);
+
 // Enable blocking of e10s and e10s-multi for add-on users on beta/release.
 #if defined(RELEASE_OR_BETA) && !defined(MOZ_DEV_EDITION)
 pref("extensions.e10sBlocksEnabling", true);
 pref("extensions.e10sMultiBlocksEnabling", true);
 #endif
 
 // How often to check for CPOW timeouts. CPOWs are only timed out by
 // the hang monitor.
--- a/browser/base/content/abouthealthreport/abouthealth.js
+++ b/browser/base/content/abouthealthreport/abouthealth.js
@@ -100,17 +100,17 @@ var healthReportWrapper = {
     }
 
     let iframe = document.getElementById("remote-report");
     iframe.contentWindow.postMessage(data, reportUrl);
   },
 
   handleRemoteCommand(evt) {
     // Do an origin check to harden against the frame content being loaded from unexpected locations.
-    let allowedPrincipal = Services.scriptSecurityManager.getCodebasePrincipal(this._getReportURI());
+    let allowedPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(this._getReportURI(), {});
     let targetPrincipal = evt.target.nodePrincipal;
     if (!allowedPrincipal.equals(targetPrincipal)) {
       Cu.reportError(`Origin check failed for message "${evt.detail.command}": ` +
                      `target origin is "${targetPrincipal.origin}", expected "${allowedPrincipal.origin}"`);
       return;
     }
 
     switch (evt.detail.command) {
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -921,128 +921,41 @@
 
         <toolbaritem id="search-container" title="&searchItem.title;"
                      align="center" class="chromeclass-toolbar-additional panel-wide-item"
                      cui-areatype="toolbar"
                      flex="100" persist="width" removable="true">
           <searchbar id="searchbar" flex="1"/>
         </toolbaritem>
 
-        <toolbarbutton id="bookmarks-menu-button"
-                       class="toolbarbutton-1 chromeclass-toolbar-additional"
-                       removable="true"
-                       type="menu"
-                       label="&bookmarksMenuButton.label;"
-                       tooltip="dynamic-shortcut-tooltip"
-                       anchor="dropmarker"
-                       ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
-                       ondragover="PlacesMenuDNDHandler.onDragOver(event);"
-                       ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
-                       ondrop="PlacesMenuDNDHandler.onDrop(event);"
-                       cui-areatype="toolbar"
-                       oncommand="BookmarkingUI.onCommand(event);">
-          <observes element="bookmarkThisPageBroadcaster" attribute="starred"/>
-          <observes element="bookmarkThisPageBroadcaster" attribute="buttontooltiptext"/>
-          <menupopup id="BMB_bookmarksPopup"
-                     class="cui-widget-panel cui-widget-panelview cui-widget-panelWithFooter PanelUI-subView"
-                     placespopup="true"
-                     context="placesContext"
-                     openInTabs="children"
-                     oncommand="BookmarksEventHandler.onCommand(event);"
-                     onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
-                     onpopupshowing="BookmarkingUI.onPopupShowing(event);
-                                     BookmarkingUI.attachPlacesView(event, this);"
-                     tooltip="bhTooltip" popupsinherittooltip="true">
-            <menuitem id="BMB_viewBookmarksSidebar"
-                      class="subviewbutton"
-                      label="&viewBookmarksSidebar2.label;"
-                      type="checkbox"
-                      oncommand="SidebarUI.toggle('viewBookmarksSidebar');">
-              <observes element="viewBookmarksSidebar" attribute="checked"/>
-            </menuitem>
-            <!-- NB: temporary solution for bug 985024, this should go away soon. -->
-            <menuitem id="BMB_bookmarksShowAllTop"
-                      class="menuitem-iconic subviewbutton"
-                      label="&showAllBookmarks2.label;"
-                      command="Browser:ShowAllBookmarks"
-                      key="manBookmarkKb"/>
-            <menuseparator/>
-            <menuitem label="&recentBookmarks.label;"
-                      id="BMB_recentBookmarks"
-                      disabled="true"
-                      class="menuitem-iconic subviewbutton"/>
-            <menuseparator/>
-            <menu id="BMB_bookmarksToolbar"
-                  class="menu-iconic bookmark-item subviewbutton"
-                  label="&personalbarCmd.label;"
-                  container="true">
-              <menupopup id="BMB_bookmarksToolbarPopup"
-                         placespopup="true"
-                         context="placesContext"
-                         onpopupshowing="if (!this.parentNode._placesView)
-                                           new PlacesMenu(event, 'place:folder=TOOLBAR',
-                                                          PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);">
-                <menuitem id="BMB_viewBookmarksToolbar"
-                          placesanonid="view-toolbar"
-                          toolbarId="PersonalToolbar"
-                          type="checkbox"
-                          oncommand="onViewToolbarCommand(event)"
-                          label="&viewBookmarksToolbar.label;"/>
-                <menuseparator/>
-                <!-- Bookmarks toolbar items -->
-              </menupopup>
-            </menu>
-            <menu id="BMB_unsortedBookmarks"
-                  class="menu-iconic bookmark-item subviewbutton"
-                  label="&bookmarksMenuButton.other.label;"
-                  container="true">
-              <menupopup id="BMB_unsortedBookmarksPopup"
-                         placespopup="true"
-                         context="placesContext"
-                         onpopupshowing="if (!this.parentNode._placesView)
-                                           new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
-                                                          PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
-            </menu>
-            <menu id="BMB_mobileBookmarks"
-                  class="menu-iconic bookmark-item subviewbutton"
-                  label="&bookmarksMenuButton.mobile.label;"
-                  hidden="true"
-                  container="true">
-              <menupopup id="BMB_mobileBookmarksPopup"
-                         placespopup="true"
-                         context="placesContext"
-                         onpopupshowing="if (!this.parentNode._placesView)
-                                           new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
-                                                          PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
-            </menu>
-
-            <menuseparator/>
-            <!-- Bookmarks menu items will go here -->
-            <menuitem id="BMB_bookmarksShowAll"
-                      class="subviewbutton panel-subview-footer"
-                      label="&showAllBookmarks2.label;"
-                      command="Browser:ShowAllBookmarks"
-                      key="manBookmarkKb"/>
-          </menupopup>
-        </toolbarbutton>
-
         <!-- This is a placeholder for the Downloads Indicator.  It is visible
              during the customization of the toolbar, in the palette, and before
              the Downloads Indicator overlay is loaded. -->
         <toolbarbutton id="downloads-button"
                        class="toolbarbutton-1 chromeclass-toolbar-additional badged-button"
                        key="key_openDownloads"
                        oncommand="DownloadsIndicatorView.onCommand(event);"
                        ondrop="DownloadsIndicatorView.onDrop(event);"
                        ondragover="DownloadsIndicatorView.onDragOver(event);"
                        ondragenter="DownloadsIndicatorView.onDragOver(event);"
                        label="&downloads.label;"
                        removable="true"
                        cui-areatype="toolbar"
                        tooltip="dynamic-shortcut-tooltip"/>
+
+        <toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+                       removable="true"
+                       oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
+                       closemenu="none"
+                       label="&places.library.title;">
+          <box class="toolbarbutton-animatable-box">
+            <image class="toolbarbutton-animatable-image"/>
+          </box>
+        </toolbarbutton>
+
       </hbox>
 
       <toolbarbutton id="nav-bar-overflow-button"
                      class="toolbarbutton-1 chromeclass-toolbar-additional overflow-button"
                      skipintoolbarset="true"
                      tooltiptext="&navbarOverflow.label;">
         <box class="toolbarbutton-animatable-box">
           <image class="toolbarbutton-animatable-image"/>
@@ -1154,23 +1067,112 @@
                      ondragexit="newWindowButtonObserver.onDragExit(event)"/>
 
       <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
                      observes="View:FullScreen"
                      type="checkbox"
                      label="&fullScreenCmd.label;"
                      tooltip="dynamic-shortcut-tooltip"/>
 
-      <toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-                     oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
-                     closemenu="none"
-                     label="&places.library.title;">
-        <box class="toolbarbutton-animatable-box">
-          <image class="toolbarbutton-animatable-image"/>
-        </box>
+      <toolbarbutton id="bookmarks-menu-button"
+                     class="toolbarbutton-1 chromeclass-toolbar-additional"
+                     removable="true"
+                     type="menu"
+                     label="&bookmarksMenuButton.label;"
+                     tooltip="dynamic-shortcut-tooltip"
+                     anchor="dropmarker"
+                     ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
+                     ondragover="PlacesMenuDNDHandler.onDragOver(event);"
+                     ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
+                     ondrop="PlacesMenuDNDHandler.onDrop(event);"
+                     cui-areatype="toolbar"
+                     oncommand="BookmarkingUI.onCommand(event);">
+        <observes element="bookmarkThisPageBroadcaster" attribute="starred"/>
+        <observes element="bookmarkThisPageBroadcaster" attribute="buttontooltiptext"/>
+        <menupopup id="BMB_bookmarksPopup"
+                   class="cui-widget-panel cui-widget-panelview cui-widget-panelWithFooter PanelUI-subView"
+                   placespopup="true"
+                   context="placesContext"
+                   openInTabs="children"
+                   oncommand="BookmarksEventHandler.onCommand(event);"
+                   onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
+                   onpopupshowing="BookmarkingUI.onPopupShowing(event);
+                                   BookmarkingUI.attachPlacesView(event, this);"
+                   tooltip="bhTooltip" popupsinherittooltip="true">
+          <menuitem id="BMB_viewBookmarksSidebar"
+                    class="subviewbutton"
+                    label="&viewBookmarksSidebar2.label;"
+                    type="checkbox"
+                    oncommand="SidebarUI.toggle('viewBookmarksSidebar');">
+            <observes element="viewBookmarksSidebar" attribute="checked"/>
+          </menuitem>
+          <!-- NB: temporary solution for bug 985024, this should go away soon. -->
+          <menuitem id="BMB_bookmarksShowAllTop"
+                    class="menuitem-iconic subviewbutton"
+                    label="&showAllBookmarks2.label;"
+                    command="Browser:ShowAllBookmarks"
+                    key="manBookmarkKb"/>
+          <menuseparator/>
+          <menuitem label="&recentBookmarks.label;"
+                    id="BMB_recentBookmarks"
+                    disabled="true"
+                    class="menuitem-iconic subviewbutton"/>
+          <menuseparator/>
+          <menu id="BMB_bookmarksToolbar"
+                class="menu-iconic bookmark-item subviewbutton"
+                label="&personalbarCmd.label;"
+                container="true">
+            <menupopup id="BMB_bookmarksToolbarPopup"
+                       placespopup="true"
+                       context="placesContext"
+                       onpopupshowing="if (!this.parentNode._placesView)
+                                         new PlacesMenu(event, 'place:folder=TOOLBAR',
+                                                        PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);">
+              <menuitem id="BMB_viewBookmarksToolbar"
+                        placesanonid="view-toolbar"
+                        toolbarId="PersonalToolbar"
+                        type="checkbox"
+                        oncommand="onViewToolbarCommand(event)"
+                        label="&viewBookmarksToolbar.label;"/>
+              <menuseparator/>
+              <!-- Bookmarks toolbar items -->
+            </menupopup>
+          </menu>
+          <menu id="BMB_unsortedBookmarks"
+                class="menu-iconic bookmark-item subviewbutton"
+                label="&bookmarksMenuButton.other.label;"
+                container="true">
+            <menupopup id="BMB_unsortedBookmarksPopup"
+                       placespopup="true"
+                       context="placesContext"
+                       onpopupshowing="if (!this.parentNode._placesView)
+                                         new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
+                                                        PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+          </menu>
+          <menu id="BMB_mobileBookmarks"
+                class="menu-iconic bookmark-item subviewbutton"
+                label="&bookmarksMenuButton.mobile.label;"
+                hidden="true"
+                container="true">
+            <menupopup id="BMB_mobileBookmarksPopup"
+                       placespopup="true"
+                       context="placesContext"
+                       onpopupshowing="if (!this.parentNode._placesView)
+                                         new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
+                                                        PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+          </menu>
+
+          <menuseparator/>
+          <!-- Bookmarks menu items will go here -->
+          <menuitem id="BMB_bookmarksShowAll"
+                    class="subviewbutton panel-subview-footer"
+                    label="&showAllBookmarks2.label;"
+                    command="Browser:ShowAllBookmarks"
+                    key="manBookmarkKb"/>
+        </menupopup>
       </toolbarbutton>
     </toolbarpalette>
   </toolbox>
 
   <hbox id="fullscr-toggler" hidden="true"/>
 
   <deck id="content-deck" flex="1">
     <hbox flex="1" id="browser">
--- a/browser/base/content/test/alerts/browser_notification_close.js
+++ b/browser/base/content/test/alerts/browser_notification_close.js
@@ -41,17 +41,17 @@ add_task(async function test_notificatio
 
     let alertTitleLabel = alertWindow.document.getElementById("alertTitleLabel");
     is(alertTitleLabel.value, "Test title", "Title text of notification should be present");
     let alertTextLabel = alertWindow.document.getElementById("alertTextLabel");
     is(alertTextLabel.textContent, "Test body 2", "Body text of notification should be present");
     let alertIcon = alertWindow.document.getElementById("alertIcon");
     is(alertIcon.src, faviconURI.spec, "Icon of notification should be present");
 
-    let alertCloseButton = alertWindow.document.querySelector(".alertCloseButton");
+    let alertCloseButton = alertWindow.document.querySelector(".close-icon");
     is(alertCloseButton.localName, "toolbarbutton", "close button found");
     let promiseBeforeUnloadEvent =
       BrowserTestUtils.waitForEvent(alertWindow, "beforeunload");
     let closedTime = alertWindow.Date.now();
     alertCloseButton.click();
     info("Clicked on close button");
     await promiseBeforeUnloadEvent;
 
--- a/browser/base/content/test/captivePortal/browser_CaptivePortalWatcher.js
+++ b/browser/base/content/test/captivePortal/browser_CaptivePortalWatcher.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 // Bug 1318389 - This test does a lot of window and tab manipulation,
 //               causing it to take a long time on debug.
 requestLongerTimeout(2);
 
 add_task(setupPrefsAndRecentWindowBehavior);
 
--- a/browser/base/content/test/forms/browser_selectpopup.js
+++ b/browser/base/content/test/forms/browser_selectpopup.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // This test tests <select> in a child process. This is different than
 // single-process as a <menulist> is used to implement the dropdown list.
 
 requestLongerTimeout(2);
 
 const XHTML_DTD = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';
 
--- a/browser/base/content/test/general/browser_audioTabIcon.js
+++ b/browser/base/content/test/general/browser_audioTabIcon.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 const PAGE = "https://example.com/browser/browser/base/content/test/general/file_mediaPlayback.html";
 const TABATTR_REMOVAL_PREFNAME = "browser.tabs.delayHidingAudioPlayingIconMS";
 const INITIAL_TABATTR_REMOVAL_DELAY_MS = Services.prefs.getIntPref(TABATTR_REMOVAL_PREFNAME);
 
 async function wait_for_tab_playing_event(tab, expectPlaying) {
   if (tab.soundPlaying == expectPlaying) {
     ok(true, "The tab should " + (expectPlaying ? "" : "not ") + "be playing");
     return true;
--- a/browser/base/content/test/general/browser_bookmark_popup.js
+++ b/browser/base/content/test/general/browser_bookmark_popup.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 /**
  * Test opening and closing the bookmarks panel.
  */
 
 let bookmarkPanel = document.getElementById("editBookmarkPanel");
--- a/browser/base/content/test/general/browser_bug432599.js
+++ b/browser/base/content/test/general/browser_bug432599.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 function invokeUsingCtrlD(phase) {
   switch (phase) {
   case 1:
     EventUtils.synthesizeKey("d", { accelKey: true });
     break;
   case 2:
   case 4:
     EventUtils.synthesizeKey("VK_ESCAPE", {});
--- a/browser/base/content/test/general/browser_bug624734.js
+++ b/browser/base/content/test/general/browser_bug624734.js
@@ -3,27 +3,32 @@
  */
 
 // Bug 624734 - Star UI has no tooltip until bookmarked page is visited
 
 function finishTest() {
   is(BookmarkingUI.button.getAttribute("buttontooltiptext"),
      BookmarkingUI._unstarredTooltip,
      "Star icon should have the unstarred tooltip text");
+  is(BookmarkingUI.star.getAttribute("tooltiptext"),
+     BookmarkingUI._unstarredTooltip,
+     "Star icon should have the unstarred tooltip text");
 
   gBrowser.removeCurrentTab();
   finish();
 }
 
 function test() {
   waitForExplicitFinish();
 
   let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
+  CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
   BrowserTestUtils.browserLoaded(tab.linkedBrowser).then(() => {
     if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING) {
       waitForCondition(() => BookmarkingUI.status != BookmarkingUI.STATUS_UPDATING, finishTest, "BookmarkingUI was updating for too long");
     } else {
+      CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
       finishTest();
     }
   });
 
   tab.linkedBrowser.loadURI("http://example.com/browser/browser/base/content/test/general/dummy_page.html");
 }
--- a/browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js
+++ b/browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js
@@ -1,9 +1,10 @@
 /* eslint-env mozilla/frame-script */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 var gMessageManager;
 
 function frameScript() {
   addMessageListener("Test:RequestFullscreen", () => {
     content.document.body.requestFullscreen();
--- a/browser/base/content/test/general/browser_double_close_tab.js
+++ b/browser/base/content/test/general/browser_double_close_tab.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 const TEST_PAGE = "http://mochi.test:8888/browser/browser/base/content/test/general/file_double_close_tab.html";
 var testTab;
 
 SpecialPowers.pushPrefEnv({"set": [["dom.require_user_interaction_for_beforeunload", false]]});
 
 function waitForDialog(callback) {
   function onTabModalDialogLoaded(node) {
--- a/browser/base/content/test/general/browser_fullscreen-window-open.js
+++ b/browser/base/content/test/general/browser_fullscreen-window-open.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var Cc = Components.classes;
 var Ci = Components.interfaces;
 
 const PREF_DISABLE_OPEN_NEW_WINDOW = "browser.link.open_newwindow.disabled_in_fullscreen";
 const isOSX = (Services.appinfo.OS === "Darwin");
--- a/browser/base/content/test/general/browser_lastAccessedTab.js
+++ b/browser/base/content/test/general/browser_lastAccessedTab.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // gBrowser.selectedTab.lastAccessed and Date.now() called from this test can't
 // run concurrently, and therefore don't always match exactly.
 const CURRENT_TIME_TOLERANCE_MS = 15;
 
 function isCurrent(tab, msg) {
   const DIFF = Math.abs(Date.now() - tab.lastAccessed);
   ok(DIFF <= CURRENT_TIME_TOLERANCE_MS, msg + " (difference: " + DIFF + ")");
--- a/browser/base/content/test/general/browser_plainTextLinks.js
+++ b/browser/base/content/test/general/browser_plainTextLinks.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 function testExpected(expected, msg) {
   is(document.getElementById("context-openlinkincurrent").hidden, expected, msg);
 }
 
 function testLinkExpected(expected, msg) {
   is(gContextMenu.linkURL, expected, msg);
 }
 
--- a/browser/base/content/test/general/browser_star_hsts.js
+++ b/browser/base/content/test/general/browser_star_hsts.js
@@ -1,11 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 var secureURL = "https://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
 var unsecureURL = "http://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
 
 add_task(async function test_star_redirect() {
   registerCleanupFunction(function() {
     // Ensure to remove example.com from the HSTS list.
     let sss = Cc["@mozilla.org/ssservice;1"]
--- a/browser/base/content/test/general/browser_storagePressure_notification.js
+++ b/browser/base/content/test/general/browser_storagePressure_notification.js
@@ -1,11 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 function notifyStoragePressure(usage = 100) {
   let notifyPromise = TestUtils.topicObserved("QuotaManager::StoragePressure", () => true);
   let usageWrapper = Cc["@mozilla.org/supports-PRUint64;1"]
                      .createInstance(Ci.nsISupportsPRUint64);
   usageWrapper.data = usage;
   Services.obs.notifyObservers(usageWrapper, "QuotaManager::StoragePressure");
   return notifyPromise;
--- a/browser/base/content/test/general/browser_tabs_isActive.js
+++ b/browser/base/content/test/general/browser_tabs_isActive.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // Test for the docshell active state of local and remote browsers.
 
 const kTestPage = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
 
 function promiseNewTabSwitched() {
   return new Promise(resolve => {
     gBrowser.addEventListener("TabSwitchDone", function() {
--- a/browser/base/content/test/newtab/browser_newtab_reflow_load.js
+++ b/browser/base/content/test/newtab/browser_newtab_reflow_load.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 const FRAME_SCRIPT = getRootDirectory(gTestPath) + "content-reflows.js";
 const ADDITIONAL_WAIT_MS = 2000;
 
 /*
  * Ensure that loading about:newtab doesn't cause uninterruptible reflows.
--- a/browser/base/content/test/permissions/browser_temporary_permissions_expiry.js
+++ b/browser/base/content/test/permissions/browser_temporary_permissions_expiry.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 const ORIGIN = "https://example.com";
 const PERMISSIONS_PAGE = getRootDirectory(gTestPath).replace("chrome://mochitests/content", ORIGIN) + "permissions.html";
 
 const EXPIRE_TIME_MS = 100;
 const TIMEOUT_MS = 500;
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_3.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_3.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 function test() {
   waitForExplicitFinish();
 
   ok(PopupNotifications, "PopupNotifications object exists");
   ok(PopupNotifications.panel, "PopupNotifications panel exists");
 
   setup();
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js
@@ -85,17 +85,17 @@ var tests = [
       is(document.getElementById("geo-notification-icon").boxObject.width, 0,
          "geo anchor shouldn't be visible");
 
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
 
       isnot(document.getElementById("geo-notification-icon").boxObject.width, 0,
             "geo anchor should be visible");
 
-      EventUtils.synthesizeMouse(document.getElementById("geo-notification-icon"), 0, 0, {});
+      EventUtils.synthesizeMouse(document.getElementById("geo-notification-icon"), 2, 2, {});
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
--- a/browser/base/content/test/sidebar/browser_bug409481.js
+++ b/browser/base/content/test/sidebar/browser_bug409481.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 function test() {
   waitForExplicitFinish();
 
   // XXX This looks a bit odd, but is needed to avoid throwing when removing the
   // event listeners below. See bug 310955.
   document.getElementById("sidebar").addEventListener("load", delayedOpenUrl, true);
   SidebarUI.show("viewWebPanelsSidebar");
 }
--- a/browser/base/content/test/urlbar/browser_urlbarAddonIframe.js
+++ b/browser/base/content/test/urlbar/browser_urlbarAddonIframe.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 // The purpose of this test is to test the urlbar popup's add-on iframe.  It has
 // a few parts:
 //
 // (1) This file, a normal browser mochitest.
 // (2) html/js files that are loaded in the urlbar popup's add-on iframe:
 //     urlbarAddonIframe.{html,js}
--- a/browser/base/content/test/urlbar/browser_urlbarSearchSingleWordNotification.js
+++ b/browser/base/content/test/urlbar/browser_urlbarSearchSingleWordNotification.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 var notificationObserver;
 registerCleanupFunction(function() {
   Services.prefs.clearUserPref("browser.fixup.domainwhitelist.localhost");
   if (notificationObserver) {
     notificationObserver.disconnect();
   }
--- a/browser/base/content/test/urlbar/browser_urlbar_stop_pending.js
+++ b/browser/base/content/test/urlbar/browser_urlbar_stop_pending.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 const SLOW_PAGE = "http://www.example.com/browser/browser/base/content/test/urlbar/slow-page.sjs";
 const SLOW_PAGE2 = "http://mochi.test:8888/browser/browser/base/content/test/urlbar/slow-page.sjs?faster";
 
 /**
  * Check that if we:
  * 1) have a loaded page
--- a/browser/base/content/test/webextensions/browser_extension_sideloading.js
+++ b/browser/base/content/test/webextensions/browser_extension_sideloading.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 const {AddonManagerPrivate} = Cu.import("resource://gre/modules/AddonManager.jsm", {});
 
 const {AddonTestUtils} = Cu.import("resource://testing-common/AddonTestUtils.jsm", {});
 
 AddonTestUtils.initMochitest(this);
 
 async function createWebExtension(details) {
   let options = {
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -1836,47 +1836,43 @@ file, You can obtain one at http://mozil
             return;
           }
 
           this.mInput = aInput;
           aInput.controller.setInitiallySelectedIndex(this._isFirstResultHeuristic ? 0 : -1);
           this.view = aInput.controller.QueryInterface(Components.interfaces.nsITreeView);
           this._invalidate();
 
-          var rect = window.document.documentElement.getBoundingClientRect();
-          var width = rect.right - rect.left;
+          var documentRect = window.document.documentElement.getBoundingClientRect();
+          var width = documentRect.right - documentRect.left;
           this.setAttribute("width", width);
 
           // Adjust the direction of the autocomplete popup list based on the textbox direction, bug 649840
           var popupDirection = aElement.ownerGlobal.getComputedStyle(aElement).direction;
           this.style.direction = popupDirection;
 
           // Make the popup's starting margin negative so that the leading edge
           // of the popup aligns with the window border.
           let elementRect = aElement.getBoundingClientRect();
           if (popupDirection == "rtl") {
-            let offset = elementRect.right - rect.right
+            let offset = elementRect.right - documentRect.right
             this.style.marginRight = offset + "px";
           } else {
-            let offset = rect.left - elementRect.left;
+            let offset = documentRect.left - elementRect.left;
             this.style.marginLeft = offset + "px";
           }
 
           // Keep the popup items' site icons aligned with the urlbar's identity
-          // icon if it's not too far from the edge of the window.  If there are
-          // at most two toolbar buttons between the window edge and the urlbar,
-          // then consider that as "not too far."  The forward button's
-          // visibility may have changed since the last time the popup was
-          // opened, so this needs to happen now.  Do it *before* the popup
-          // opens because otherwise the items will visibly shift.
-          let nodes = [...document.getElementById("nav-bar-customization-target").childNodes];
-          let urlbarPosition = nodes.findIndex(n => n.id == "urlbar-container");
-          let alignSiteIcons = urlbarPosition <= 5 &&
-                               nodes.slice(0, urlbarPosition)
-                                    .every(n => n.localName == "toolbarbutton" || n.id == "stop-reload-button");
+          // icon if it's not too far from the edge of the window.  We define
+          // "too far" as "more than 30% of the window's width AND more than
+          // 250px"
+          let boundToCheck = popupDirection == "rtl" ? "right" : "left";
+          let inputRect = this.DOMWindowUtils.getBoundsWithoutFlushing(aInput);
+          let startOffset = Math.abs(inputRect[boundToCheck] - documentRect[boundToCheck]);
+          let alignSiteIcons = startOffset / width <= 0.3 || startOffset <= 250;
           if (alignSiteIcons) {
             let identityRect =
               document.getElementById("identity-icon").getBoundingClientRect();
             this.siteIconStart = popupDirection == "rtl" ? identityRect.right
                                                          : identityRect.left;
           } else {
             // Reset the alignment so that the site icons are positioned
             // according to whatever's in the CSS.
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -173,8 +173,13 @@ browser.jar:
 # the following files are browser-specific overrides
 *       content/browser/license.html                  (/toolkit/content/license.html)
 % override chrome://global/content/license.html chrome://browser/content/license.html
         content/browser/report-phishing-overlay.xul     (content/report-phishing-overlay.xul)
         content/browser/blockedSite.xhtml               (content/blockedSite.xhtml)
 % overlay chrome://browser/content/browser.xul chrome://browser/content/report-phishing-overlay.xul
 
 % override chrome://global/content/netError.xhtml chrome://browser/content/aboutNetError.xhtml
+
+# L10n resource overrides.
+% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
+% override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd
+% override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -52,17 +52,17 @@ const kSubviewEvents = [
   "ViewShowing",
   "ViewHiding"
 ];
 
 /**
  * The current version. We can use this to auto-add new default widgets as necessary.
  * (would be const but isn't because of testing purposes)
  */
-var kVersion = 8;
+var kVersion = 9;
 
 /**
  * Buttons removed from built-ins by version they were removed. kVersion must be
  * bumped any time a new id is added to this. Use the button id as key, and
  * version the button is removed in as the value.  e.g. "pocket-button": 5
  */
 var ObsoleteBuiltinButtons = {
   "pocket-button": 6
@@ -187,32 +187,34 @@ var CustomizableUIInternal = {
       anchor: "nav-bar-overflow-button",
     }, true);
 
     let navbarPlacements = [
       "back-button",
       "forward-button",
       "stop-reload-button",
       "home-button",
+      "spring",
       "urlbar-container",
       "search-container",
-      "bookmarks-menu-button",
+      "spring",
       "downloads-button",
+      "library-button",
       "sidebar-button",
     ];
 
     if (AppConstants.MOZ_DEV_EDITION) {
       navbarPlacements.splice(2, 0, "developer-button");
     }
 
     // Place this last, when createWidget is called for pocket, it will
     // append to the toolbar.
-    if (Services.prefs.getPrefType("extensions.pocket.enabled") != Services.prefs.PREF_INVALID &&
-        Services.prefs.getBoolPref("extensions.pocket.enabled")) {
-        navbarPlacements.push("pocket-button");
+    if (Services.prefs.getBoolPref("extensions.pocket.enabled", false) &&
+        Services.prefs.getBoolPref("extensions.pocket.disablePageAction", false)) {
+      navbarPlacements.push("pocket-button");
     }
 
     this.registerArea(CustomizableUI.AREA_NAVBAR, {
       legacy: true,
       type: CustomizableUI.TYPE_TOOLBAR,
       overflowable: true,
       defaultPlacements: navbarPlacements,
       defaultCollapsed: false,
@@ -378,16 +380,50 @@ var CustomizableUIInternal = {
           defaultPlacements.push("webcompat-reporter-button");
         }
       }
       savedPanelPlacements = savedPanelPlacements.filter(id => defaultPlacements.includes(id));
       if (savedPanelPlacements.length) {
         gSavedState.placements[this.AREA_FIXED_OVERFLOW_PANEL] = savedPanelPlacements;
       }
     }
+
+    if (currentVersion < 9 && gSavedState.placements && gSavedState.placements["nav-bar"]) {
+      let placements = gSavedState.placements["nav-bar"];
+      if (placements.includes("urlbar-container")) {
+        let urlbarIndex = placements.indexOf("urlbar-container");
+        let secondSpringIndex = urlbarIndex + 1;
+        // Insert if there isn't already a spring before the urlbar
+        if (urlbarIndex == 0 || !placements[urlbarIndex - 1].startsWith(kSpecialWidgetPfx + "spring")) {
+          placements.splice(urlbarIndex, 0, "spring");
+          // The url bar is now 1 index later, so increment the insertion point for
+          // the second spring.
+          secondSpringIndex++;
+        }
+        // If the search container is present, insert after the search container
+        // instead of after the url bar
+        let searchContainerIndex = placements.indexOf("search-container");
+        if (searchContainerIndex != -1) {
+          secondSpringIndex = searchContainerIndex + 1;
+        }
+        if (secondSpringIndex == placements.length ||
+            !placements[secondSpringIndex].startsWith(kSpecialWidgetPfx + "spring")) {
+          placements.splice(secondSpringIndex, 0, "spring");
+        }
+      }
+
+      // Finally, replace the bookmarks menu button with the library one if present
+      if (placements.includes("bookmarks-menu-button")) {
+        let bmbIndex = placements.indexOf("bookmarks-menu-button");
+        placements.splice(bmbIndex, 1);
+        let downloadButtonIndex = placements.indexOf("downloads-button");
+        let libraryIndex = downloadButtonIndex == -1 ? bmbIndex : (downloadButtonIndex + 1);
+        placements.splice(libraryIndex, 0, "library-button");
+      }
+    }
   },
 
   /**
    * _markObsoleteBuiltinButtonsSeen
    * when upgrading, ensure obsoleted buttons are in seen state.
    */
   _markObsoleteBuiltinButtonsSeen() {
     if (!gSavedState)
@@ -702,17 +738,18 @@ var CustomizableUIInternal = {
     try {
       let currentNode = container.firstChild;
       let placementsToRemove = new Set();
       for (let id of aPlacements) {
         while (currentNode && currentNode.getAttribute("skipintoolbarset") == "true") {
           currentNode = currentNode.nextSibling;
         }
 
-        if (currentNode && currentNode.id == id) {
+        if (currentNode &&
+            (currentNode.id == id || this.matchingSpecials(id, currentNode.id))) {
           currentNode = currentNode.nextSibling;
           continue;
         }
 
         if (this.isSpecialWidget(id) && areaIsPanel) {
           placementsToRemove.add(id);
           continue;
         }
@@ -1221,16 +1258,22 @@ var CustomizableUIInternal = {
 
   isSpecialWidget(aId) {
     return (aId.startsWith(kSpecialWidgetPfx) ||
             aId.startsWith("separator") ||
             aId.startsWith("spring") ||
             aId.startsWith("spacer"));
   },
 
+  matchingSpecials(aId1, aId2) {
+    return this.isSpecialWidget(aId1) &&
+           this.isSpecialWidget(aId2) &&
+           aId1.match(/spring|spacer|separator/)[0] == aId2.match(/spring|spacer|separator/)[0];
+  },
+
   ensureSpecialWidgetId(aId) {
     let nodeType = aId.match(/spring|spacer|separator/)[0];
     // If the ID we were passed isn't a generated one, generate one now:
     if (nodeType == aId) {
       // Ids are differentiated through a unique count suffix.
       return kSpecialWidgetPfx + aId + (++gNewElementCount);
     }
     return aId;
@@ -2793,17 +2836,18 @@ var CustomizableUIInternal = {
       log.debug("Checking default state for " + areaId + ":\n" + currentPlacements.join(",") +
                 "\nvs.\n" + defaultPlacements.join(","));
 
       if (currentPlacements.length != defaultPlacements.length) {
         return false;
       }
 
       for (let i = 0; i < currentPlacements.length; ++i) {
-        if (currentPlacements[i] != defaultPlacements[i]) {
+        if (currentPlacements[i] != defaultPlacements[i] &&
+            !this.matchingSpecials(currentPlacements[i], defaultPlacements[i])) {
           log.debug("Found " + currentPlacements[i] + " in " + areaId + " where " +
                     defaultPlacements[i] + " was expected!");
           return false;
         }
       }
     }
 
     if (Services.prefs.prefHasUserValue(kPrefUIDensity)) {
--- a/browser/components/customizableui/CustomizeMode.jsm
+++ b/browser/components/customizableui/CustomizeMode.jsm
@@ -437,17 +437,17 @@ CustomizeMode.prototype = {
       // And drop all area references.
       this.areas.clear();
 
       // Let everybody in this window know that we're starting to
       // exit customization mode.
       CustomizableUI.dispatchToolboxEvent("customizationending", {}, window);
 
       window.PanelUI.menuButton.disabled = false;
-      let overflowContainer = document.getElementById("widget-overflow-scroller");
+      let overflowContainer = document.getElementById("widget-overflow-mainView").firstChild;
       overflowContainer.appendChild(window.PanelUI.overflowFixedList);
       document.getElementById("nav-bar-overflow-button").disabled = false;
       let panelContextMenu = document.getElementById(kPanelItemContextMenu);
       this._previousPanelContextMenuParent.appendChild(panelContextMenu);
 
       // We need to set this._customizing to false before removing the tab
       // or the TabSelect event handler will think that we are exiting
       // customization mode for a second time.
--- a/browser/components/customizableui/PanelMultiView.jsm
+++ b/browser/components/customizableui/PanelMultiView.jsm
@@ -333,17 +333,16 @@ this.PanelMultiView = class {
     } else {
       this._clickCapturer.removeEventListener("click", this);
     }
     this._panel.removeEventListener("mousemove", this);
     this._panel.removeEventListener("popupshowing", this);
     this._panel.removeEventListener("popupshown", this);
     this._panel.removeEventListener("popuphidden", this);
     this.window.removeEventListener("keydown", this);
-    this._dispatchViewEvent(this.node, "destructed");
     this.node = this._clickCapturer = this._viewContainer = this._mainViewContainer =
       this._subViews = this._viewStack = this.__dwu = this._panelViewCache = null;
   }
 
   /**
    * Remove any child subviews into the panelViewCache, to ensure
    * they remain usable even if this panelmultiview instance is removed
    * from the DOM.
@@ -671,18 +670,18 @@ this.PanelMultiView = class {
    * @param  {String}    eventName Name of the event to dispatch.
    * @param  {DOMNode}   [anchor]  Node where the panel is anchored to. Optional.
    * @param  {Object}    [detail]  Event detail object. Optional.
    * @return {Boolean} `true` if the event was canceled by an event handler, `false`
    *                   otherwise.
    */
   _dispatchViewEvent(viewNode, eventName, anchor, detail) {
     let cancel = false;
-    if (eventName != "PanelMultiViewHidden" && eventName != "destructed") {
-      // Don't need to do this for PanelMultiViewHidden or "destructed" events
+    if (eventName != "PanelMultiViewHidden") {
+      // Don't need to do this for PanelMultiViewHidden event
       CustomizableUI.ensureSubviewListeners(viewNode);
     }
 
     let evt = new this.window.CustomEvent(eventName, {
       detail,
       bubbles: true,
       cancelable: eventName == "ViewShowing"
     });
--- a/browser/components/customizableui/content/panelUI.inc.xul
+++ b/browser/components/customizableui/content/panelUI.inc.xul
@@ -351,23 +351,21 @@
        type="arrow"
        noautofocus="true"
        position="bottomcenter topright"
        hidden="true">
   <photonpanelmultiview mainViewId="widget-overflow-mainView">
     <panelview id="widget-overflow-mainView"
                context="toolbar-context-menu">
       <vbox class="panel-subview-body">
-        <vbox id="widget-overflow-scroller">
-          <vbox id="widget-overflow-list" class="widget-overflow-list"
-                overflowfortoolbar="nav-bar"/>
-          <toolbarseparator id="widget-overflow-fixed-separator" hidden="true"/>
-          <vbox id="widget-overflow-fixed-list" class="widget-overflow-list" hidden="true"
-                emptylabel="&customizeMode.emptyOverflowList.description;"/>
-        </vbox>
+        <vbox id="widget-overflow-list" class="widget-overflow-list"
+              overflowfortoolbar="nav-bar"/>
+        <toolbarseparator id="widget-overflow-fixed-separator" hidden="true"/>
+        <vbox id="widget-overflow-fixed-list" class="widget-overflow-list" hidden="true"
+              emptylabel="&customizeMode.emptyOverflowList.description;"/>
       </vbox>
       <toolbarbutton command="cmd_CustomizeToolbars"
                       id="overflowMenu-customize-button"
                       class="subviewbutton panel-subview-footer"
                       accesskey="&overflowCustomizeToolbar.accesskey;"
                       label="&overflowCustomizeToolbar.label;"/>
     </panelview>
   </photonpanelmultiview>
--- a/browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js
+++ b/browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js
@@ -56,17 +56,17 @@ add_task(async function checkAddingToToo
   let oldNumberOfItems = previousPlacements.length;
   if (getAreaWidgetIds(area).length != oldNumberOfItems) {
     CustomizableUI.reset();
   }
 });
 
 
 add_task(async function checkDragging() {
-  let startArea = CustomizableUI.AREA_NAVBAR;
+  let startArea = CustomizableUI.AREA_TABSTRIP;
   let targetArea = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL;
   let startingToolbarPlacements = getAreaWidgetIds(startArea);
   let startingTargetPlacements = getAreaWidgetIds(targetArea);
 
   CustomizableUI.addWidgetToArea("separator", startArea);
   CustomizableUI.addWidgetToArea("spring", startArea);
   CustomizableUI.addWidgetToArea("spacer", startArea);
 
--- a/browser/components/customizableui/test/browser_1087303_button_fullscreen.js
+++ b/browser/components/customizableui/test/browser_1087303_button_fullscreen.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 add_task(async function() {
   info("Check fullscreen button existence and functionality");
 
   CustomizableUI.addWidgetToArea("fullscreen-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
   registerCleanupFunction(() => CustomizableUI.reset());
--- a/browser/components/customizableui/test/browser_1087303_button_preferences.js
+++ b/browser/components/customizableui/test/browser_1087303_button_preferences.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 var newTab = null;
 
 add_task(async function() {
   info("Check preferences button existence and functionality");
   CustomizableUI.addWidgetToArea("preferences-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
--- a/browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js
+++ b/browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 const kTimeoutInMS = 20000;
 
 // Bug 934951 - Zoom controls percentage label doesn't update when it's in the toolbar and you navigate.
 add_task(async function() {
   CustomizableUI.addWidgetToArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
--- a/browser/components/customizableui/test/browser_981418-widget-onbeforecreated-handler.js
+++ b/browser/components/customizableui/test/browser_981418-widget-onbeforecreated-handler.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 const kWidgetId = "test-981418-widget-onbeforecreated";
 
 // Should be able to add broken view widget
 add_task(async function testAddOnBeforeCreatedWidget() {
   let viewShownDeferred = Promise.defer();
   let onBeforeCreatedCalled = false;
--- a/browser/components/customizableui/test/browser_984455_bookmarks_items_reparenting.js
+++ b/browser/components/customizableui/test/browser_984455_bookmarks_items_reparenting.js
@@ -184,18 +184,20 @@ function checkNotOverflowing(aID) {
      "Item with ID " + aID + " should not have overflowedItem attribute");
 }
 
 /**
  * Test that overflowing the bookmarks menu button doesn't break the
  * context menus for the Unsorted and Bookmarks Toolbar menu items.
  */
 add_task(async function testOverflowingBookmarksButtonContextMenu() {
+  ok(CustomizableUI.inDefaultState, "Should start in default state.");
+  CustomizableUI.removeWidgetFromArea("library-button", CustomizableUI.AREA_NAVBAR);
+  CustomizableUI.addWidgetToArea(kBookmarksButton, CustomizableUI.AREA_NAVBAR);
   ok(!gNavBar.hasAttribute("overflowing"), "Should start with a non-overflowing toolbar.");
-  ok(CustomizableUI.inDefaultState, "Should start in default state.");
 
   // Open the Unsorted and Bookmarks Toolbar context menus and ensure
   // that they have views attached.
   await checkSpecialContextMenus();
 
   await overflowEverything();
   checkOverflowing(kBookmarksButton);
 
--- a/browser/components/downloads/test/browser/browser_downloads_panel_block.js
+++ b/browser/components/downloads/test/browser/browser_downloads_panel_block.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function mainTest() {
   await task_resetState();
 
   let verdicts = [
     Downloads.Error.BLOCK_VERDICT_UNCOMMON,
     Downloads.Error.BLOCK_VERDICT_MALWARE,
--- a/browser/components/downloads/test/browser/browser_first_download_panel.js
+++ b/browser/components/downloads/test/browser/browser_first_download_panel.js
@@ -1,12 +1,13 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 /**
  * Make sure the downloads panel only opens automatically on the first
  * download it notices. All subsequent downloads, even across sessions, should
  * not open the panel automatically.
  */
 add_task(async function test_first_download_panel() {
   // Clear the download panel has shown preference first as this test is used to
--- a/browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js
+++ b/browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 let scriptPage = url => `<html><head><meta charset="utf-8"><script src="${url}"></script></head><body>${url}</body></html>`;
 
 add_task(async function testBrowserActionClickCanceled() {
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
 
   // Make sure the mouse isn't hovering over the browserAction widget.
--- a/browser/components/extensions/test/browser/browser_ext_browsingData_serviceWorkers.js
+++ b/browser/components/extensions/test/browser/browser_ext_browsingData_serviceWorkers.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     set: [["dom.serviceWorkers.exemptFromPerDomainMax", true],
          ["dom.serviceWorkers.enabled", true],
          ["dom.serviceWorkers.testing.enabled", true]],
   });
--- a/browser/components/extensions/test/browser/browser_ext_popup_background.js
+++ b/browser/components/extensions/test/browser/browser_ext_popup_background.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function testPopupBackground() {
   let extension = ExtensionTestUtils.loadExtension({
     background() {
       browser.tabs.query({active: true, currentWindow: true}, tabs => {
         browser.pageAction.show(tabs[0].id);
       });
--- a/browser/components/extensions/test/browser/browser_ext_popup_sendMessage.js
+++ b/browser/components/extensions/test/browser/browser_ext_popup_sendMessage.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function test_popup_sendMessage_reply() {
   let scriptPage = url => `<html><head><meta charset="utf-8"><script src="${url}"></script></head><body>${url}</body></html>`;
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "browser_action": {
--- a/browser/components/extensions/test/browser/browser_ext_tabs_onHighlighted.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_onHighlighted.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function testTabEvents() {
   async function background() {
     /** The list of active tab ID's */
     let tabIds = [];
 
     /**
--- a/browser/components/extensions/test/browser/browser_ext_windows_size.js
+++ b/browser/components/extensions/test/browser/browser_ext_windows_size.js
@@ -1,10 +1,11 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 add_task(async function testWindowCreate() {
   let extension = ExtensionTestUtils.loadExtension({
     async background() {
       let _checkWindowPromise;
       browser.test.onMessage.addListener((msg, arg) => {
         if (msg == "checked-window") {
--- a/browser/components/extensions/test/xpcshell/test_ext_url_overrides_newtab.js
+++ b/browser/components/extensions/test/xpcshell/test_ext_url_overrides_newtab.js
@@ -15,21 +15,23 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
                                    "@mozilla.org/browser/aboutnewtab-service;1",
                                    "nsIAboutNewTabService");
 
 Cu.import("resource://testing-common/AddonTestUtils.jsm");
 
 const {
   createAppInfo,
+  promiseRestartManager,
   promiseShutdownManager,
   promiseStartupManager,
 } = AddonTestUtils;
 
 AddonTestUtils.init(this);
+AddonTestUtils.overrideCertDB();
 
 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42");
 
 function awaitEvent(eventName) {
   return new Promise(resolve => {
     Management.once(eventName, (e, ...args) => resolve(...args));
   });
 }
@@ -116,8 +118,66 @@ add_task(async function test_multiple_ex
      "Newtab url reverts to being overriden by the second extension.");
 
   await ext2.unload();
   equal(aboutNewTabService.newTabURL, "about:newtab",
      "Newtab url is reset to about:newtab");
 
   await promiseShutdownManager();
 });
+
+// Tests that we handle the upgrade/downgrade process correctly
+// when an extension is installed temporarily on top of a permanently
+// installed one.
+add_task(async function test_temporary_installation() {
+  const ID = "newtab@tests.mozilla.org";
+  const PAGE1 = "page1.html";
+  const PAGE2 = "page2.html";
+
+  equal(aboutNewTabService.newTabURL, "about:newtab",
+        "Default newtab url is about:newtab");
+
+  await promiseStartupManager();
+
+  let permanent = ExtensionTestUtils.loadExtension({
+    manifest: {
+      applications: {
+        gecko: {id: ID},
+      },
+      chrome_url_overrides: {
+        newtab: PAGE1,
+      },
+    },
+    useAddonManager: "permanent",
+  });
+
+  await permanent.startup();
+  ok(aboutNewTabService.newTabURL.endsWith(PAGE1),
+     "newtab url is overridden by permanent extension");
+
+  let temporary = ExtensionTestUtils.loadExtension({
+    manifest: {
+      applications: {
+        gecko: {id: ID},
+      },
+      chrome_url_overrides: {
+        newtab: PAGE2,
+      },
+    },
+    useAddonManager: "temporary",
+  });
+
+  await temporary.startup();
+  ok(aboutNewTabService.newTabURL.endsWith(PAGE2),
+     "newtab url is overridden by temporary extension");
+
+  await promiseRestartManager();
+  await permanent.awaitStartup();
+
+  ok(aboutNewTabService.newTabURL.endsWith(PAGE1),
+     "newtab url is back to the value set by permanent extension");
+
+  await permanent.unload();
+
+  equal(aboutNewTabService.newTabURL, "about:newtab",
+        "newtab url is back to default about:newtab");
+  await promiseShutdownManager();
+});
--- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js
@@ -2015,70 +2015,62 @@ this.PlacesPanelview = class extends Pla
     this._onPopupShowing({ originalTarget: this._rootElt });
     this._addEventListeners(window, ["unload"]);
     this._rootElt.setAttribute("context", "placesContext");
   }
 
   get events() {
     if (this._events)
       return this._events;
-    return this._events = ["command", "destructed", "dragend", "dragstart",
-      "ViewHiding", "ViewShowing", "ViewShown"];
+    return this._events = ["click", "command", "dragend", "dragstart", "ViewHiding", "ViewShown"];
   }
 
   get panel() {
     return this.panelMultiView.parentNode;
   }
 
   get panelMultiView() {
     return this._viewElt.panelMultiView;
   }
 
   handleEvent(event) {
     switch (event.type) {
+      case "click":
+        // For left and middle clicks, fall through to the command handler.
+        if (event.button >= 2) {
+          break;
+        }
       case "command":
         this._onCommand(event);
         break;
-      case "destructed":
-        this._onDestructed(event);
-        break;
       case "dragend":
         this._onDragEnd(event);
         break;
       case "dragstart":
         this._onDragStart(event);
         break;
       case "unload":
         this.uninit(event);
         break;
       case "ViewHiding":
         this._onPopupHidden(event);
         break;
-      case "ViewShowing":
-        this._onPopupShowing(event);
-        break;
       case "ViewShown":
         this._onViewShown(event);
         break;
     }
   }
 
   _onCommand(event) {
     let button = event.originalTarget;
     if (!button._placesNode)
       return;
 
     PlacesUIUtils.openNodeWithEvent(button._placesNode, event);
-  }
-
-  _onDestructed(event) {
-    // The panelmultiview is ephemeral, so let's keep an eye out when the root
-    // element is showing again.
-    this._removeEventListeners(event.target, this.events);
-    this._addEventListeners(this._viewElt, ["ViewShowing"]);
+    this.panelMultiView.closest("panel").hidePopup();
   }
 
   _onDragEnd() {
     this._draggedElt = null;
   }
 
   _onDragStart(event) {
     let draggedElt = event.originalTarget;
@@ -2090,17 +2082,16 @@ this.PlacesPanelview = class extends Pla
     this._rootElt.focus();
 
     this._controller.setDataTransfer(event);
     event.stopPropagation();
   }
 
   uninit(event) {
     this._removeEventListeners(this.panelMultiView, this.events);
-    this._removeEventListeners(this._viewElt, ["ViewShowing"]);
     this._removeEventListeners(window, ["unload"]);
     super.uninit(event);
   }
 
   _createDOMNodeForPlacesNode(placesNode) {
     this._domNodes.delete(placesNode);
 
     let element;
@@ -2172,21 +2163,19 @@ this.PlacesPanelview = class extends Pla
       if (!PlacesUtils.nodeIsFolder(placesNode) ||
           this.controller.hasCachedLivemarkInfo(placesNode)) {
         placesNode.containerOpen = false;
       }
     }
   }
 
   _onPopupShowing(event) {
-    // If the event came from the root element, this is a sign that the panelmultiview
-    // was just instantiated (see `_onDestructed` above) or this is the first time
+    // If the event came from the root element, this is the first time
     // we ever get here.
-    if (event.originalTarget == this._viewElt) {
-      this._removeEventListeners(this._viewElt, ["ViewShowing"]);
+    if (event.originalTarget == this._rootElt) {
       // Start listening for events from all panels inside the panelmultiview.
       this._addEventListeners(this.panelMultiView, this.events);
     }
     super._onPopupShowing(event);
   }
 
   _onViewShown(event) {
     if (event.originalTarget != this._viewElt)
--- a/browser/components/places/tests/browser/browser_toolbarbutton_menu_context.js
+++ b/browser/components/places/tests/browser/browser_toolbarbutton_menu_context.js
@@ -1,24 +1,26 @@
+CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 4);
 var bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
 var BMB_menuPopup = document.getElementById("BMB_bookmarksPopup");
 var BMB_showAllBookmarks = document.getElementById("BMB_bookmarksShowAll");
 var contextMenu = document.getElementById("placesContext");
 var newBookmarkItem = document.getElementById("placesContext_new:bookmark");
 
 waitForExplicitFinish();
 add_task(async function testPopup() {
   info("Checking popup context menu before moving the bookmarks button");
   await checkPopupContextMenu();
   let pos = CustomizableUI.getPlacementOfWidget("bookmarks-menu-button").position;
   let target = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL;
   CustomizableUI.addWidgetToArea("bookmarks-menu-button", target);
   CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, pos);
   info("Checking popup context menu after moving the bookmarks button");
   await checkPopupContextMenu();
+  CustomizableUI.reset();
 });
 
 async function checkPopupContextMenu() {
   let clickTarget = bookmarksMenuButton;
   BMB_menuPopup.setAttribute("style", "transition: none;");
   let popupShownPromise = onPopupEvent(BMB_menuPopup, "shown");
   EventUtils.synthesizeMouseAtCenter(clickTarget, {});
   info("Waiting for bookmarks menu to be shown.");
--- a/browser/components/places/tests/browser/browser_views_iconsupdate.js
+++ b/browser/components/places/tests/browser/browser_views_iconsupdate.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 /**
  * Tests Places views (toolbar, tree) for icons update.
  * The menu is not tested since it uses the same code as the toolbar.
  */
 
 add_task(async function() {
   const PAGE_URI = NetUtil.newURI("http://places.test/");
--- a/browser/components/preferences/in-content-new/search.xul
+++ b/browser/components/preferences/in-content-new/search.xul
@@ -80,11 +80,11 @@
                 accesskey="&removeEngine.accesskey;"
                 disabled="true"
                 />
       </hbox>
 
       <separator class="thin"/>
 
       <hbox id="addEnginesBox" pack="start">
-        <label id="addEngines" class="text-link" value="&findMoreSearchEngines.label;"/>
+        <label id="addEngines" class="text-link">&findMoreSearchEngines.label;</label>
       </hbox>
     </groupbox>
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // Test to make sure that the visited page titles do not get updated inside the
 // private browsing mode.
 "use strict";
 
 add_task(async function test() {
   const TEST_URL = "http://mochi.test:8888/browser/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.html"
   const TITLE_1 = "Title 1";
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // This test makes sure that the title of existing history entries does not
 // change inside a private window.
 
 add_task(async function test() {
   const TEST_URL = "http://mochi.test:8888/browser/browser/components/" +
                    "privatebrowsing/test/browser/title.sjs";
   let cm = Services.cookies;
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 // This test makes sure that the web pages can't register protocol handlers
 // inside the private browsing mode.
 
 add_task(async function test() {
   let notificationValue = "Protocol Registration: testprotocol";
   let testURI = "http://example.com/browser/" +
     "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler_page.html";
--- a/browser/components/search/test/browser_426329.js
+++ b/browser/components/search/test/browser_426329.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 XPCOMUtils.defineLazyModuleGetter(this, "FormHistory",
   "resource://gre/modules/FormHistory.jsm");
 
 function expectedURL(aSearchTerms) {
   const ENGINE_HTML_BASE = "http://mochi.test:8888/browser/browser/components/search/test/test.html";
   var textToSubURI = Cc["@mozilla.org/intl/texttosuburi;1"].
                      getService(Ci.nsITextToSubURI);
   var searchArg = textToSubURI.ConvertAndEscape("utf-8", aSearchTerms);
--- a/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
+++ b/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
@@ -105,16 +105,20 @@ this.RecentlyClosedTabsAndWindowsMenuUti
     *        The event when the user clicks the menu item
     */
   _undoCloseMiddleClick(aEvent) {
     if (aEvent.button != 1)
       return;
 
     aEvent.view.undoCloseTab(aEvent.originalTarget.getAttribute("value"));
     aEvent.view.gBrowser.moveTabToEnd();
+    let ancestorPanel = aEvent.target.closest("panel");
+    if (ancestorPanel) {
+      ancestorPanel.hidePopup();
+    }
   },
 };
 
 function setImage(aItem, aElement) {
   let iconURL = aItem.image;
   // don't initiate a connection just to fetch a favicon (see bug 467828)
   if (/^https?:/.test(iconURL))
     iconURL = "moz-anno:favicon:" + iconURL;
--- a/browser/components/sessionstore/test/browser_459906.js
+++ b/browser/components/sessionstore/test/browser_459906.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 function test() {
   /** Test for Bug 459906 **/
 
   waitForExplicitFinish();
 
   let testURL = "http://mochi.test:8888/browser/" +
     "browser/components/sessionstore/test/browser_459906_sample.html";
--- a/browser/components/sessionstore/test/browser_506482.js
+++ b/browser/components/sessionstore/test/browser_506482.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 function test() {
   /** Test for Bug 506482 **/
 
   // test setup
   waitForExplicitFinish();
 
   // read the sessionstore.js mtime (picked from browser_248970_a.js)
--- a/browser/components/sessionstore/test/browser_705597.js
+++ b/browser/components/sessionstore/test/browser_705597.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 var tabState = {
   entries: [{
     url: "about:robots",
     triggeringPrincipal_base64,
     children: [{url: "about:mozilla", triggeringPrincipal_base64}]}]
 };
 
--- a/browser/components/sessionstore/test/browser_707862.js
+++ b/browser/components/sessionstore/test/browser_707862.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 var tabState = {
   entries: [{
     url: "about:robots",
     triggeringPrincipal_base64,
     children: [{url: "about:mozilla", triggeringPrincipal_base64, }]}]
 };
 
--- a/browser/components/sessionstore/test/browser_frame_history.js
+++ b/browser/components/sessionstore/test/browser_frame_history.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 /**
  Ensure that frameset history works properly when restoring a tab,
  provided that the frameset is static.
  */
 
 // Loading a toplevel frameset
 add_task(async function() {
--- a/browser/components/sessionstore/test/browser_send_async_message_oom.js
+++ b/browser/components/sessionstore/test/browser_send_async_message_oom.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 const {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
 const HISTOGRAM_NAME = "FX_SESSION_RESTORE_SEND_UPDATE_CAUSED_OOM";
 
 /**
  * Test that an OOM in sendAsyncMessage in a framescript will be reported
  * to Telemetry.
--- a/browser/components/sessionstore/test/browser_undoCloseById.js
+++ b/browser/components/sessionstore/test/browser_undoCloseById.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 /**
  * This test is for the undoCloseById function.
  */
 
 Cu.import("resource:///modules/sessionstore/SessionStore.jsm");
 
--- a/browser/components/shell/test/browser_1119088.js
+++ b/browser/components/shell/test/browser_1119088.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 let NS_OSX_PICTURE_DOCUMENTS_DIR = "Pct";
 let NS_MAC_USER_LIB_DIR = "ULibDir";
 
 
 function onPageLoad() {
   gBrowser.selectedBrowser.removeEventListener("load", onPageLoad, true);
 
   let dirSvc = Cc["@mozilla.org/file/directory_service;1"].
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -1105,17 +1105,17 @@ this.UITour = {
   async _correctAnchor(aChromeWindow, aTarget) {
     // PanelMultiView's like the AppMenu might shuffle the DOM, which might result
     // in our anchor being invalidated if it was anonymous content (since the XBL
     // binding it belonged to got destroyed). We work around this by re-querying for
     // the node and stuffing it into the old anchor structure.
     let refreshedTarget = await this.getTarget(aChromeWindow, aTarget.targetName);
     let node = aTarget.node = refreshedTarget.node;
     // If the target is in the overflow panel, just return the overflow button.
-    if (node.closest("#widget-overflow-scroller")) {
+    if (node.closest("#widget-overflow-mainView")) {
       return CustomizableUI.getWidget(node.id).forWindow(aChromeWindow).anchor;
     }
     return node;
   },
 
   /**
    * @param aChromeWindow The chrome window that the highlight is in. Necessary since some targets
    *                      are in a sub-frame so the defaultView is not the same as the chrome
--- a/browser/components/uitour/test/browser_UITour.js
+++ b/browser/components/uitour/test/browser_UITour.js
@@ -13,16 +13,18 @@ Components.utils.import("resource://gre/
 
 function test() {
   UITourTest();
 }
 
 var tests = [
   function test_untrusted_host(done) {
     loadUITourTestPage(function() {
+      CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
+      registerCleanupFunction(() => CustomizableUI.removeWidgetFromArea("bookmarks-menu-button"));
       let bookmarksMenu = document.getElementById("bookmarks-menu-button");
       is(bookmarksMenu.open, false, "Bookmark menu should initially be closed");
 
       gContentAPI.showMenu("bookmarks");
       is(bookmarksMenu.open, false, "Bookmark menu should not open on a untrusted host");
 
       done();
     }, "http://mochi.test:8888/");
--- a/browser/components/uitour/test/browser_UITour2.js
+++ b/browser/components/uitour/test/browser_UITour2.js
@@ -65,16 +65,19 @@ var tests = [
               gContentAPI.hideMenu("appMenu");
             }, "Info should move to the appMenu button");
           });
         }, "Info should be shown after showInfo() for fixed menu panel items");
       });
     }).catch(Components.utils.reportError);
   },
   taskify(async function test_bookmarks_menu() {
+    CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
+    registerCleanupFunction(() => CustomizableUI.removeWidgetFromArea("bookmarks-menu-button"));
+
     let bookmarksMenuButton = document.getElementById("bookmarks-menu-button");
 
     is(bookmarksMenuButton.open, false, "Menu should initially be closed");
     gContentAPI.showMenu("bookmarks");
 
     await waitForConditionPromise(() => {
       return bookmarksMenuButton.open;
     }, "Menu should be visible after showMenu()");
--- a/browser/components/uitour/test/browser_UITour_availableTargets.js
+++ b/browser/components/uitour/test/browser_UITour_availableTargets.js
@@ -10,17 +10,16 @@ var hasQuit = AppConstants.platform != "
 requestLongerTimeout(2);
 
 function getExpectedTargets() {
   return [
     "accountStatus",
     "addons",
     "appMenu",
     "backForward",
-    "bookmarks",
     "bookmark-star-button",
     "customize",
     "devtools",
     "help",
     "home",
     "library",
     "pageActionButton",
     "pageAction-panel-bookmark",
@@ -45,22 +44,22 @@ add_UITour_task(async function test_avai
   let expecteds = getExpectedTargets();
   ok_targets(data, expecteds);
 
   ok(UITour.availableTargetsCache.has(window),
      "Targets should now be cached");
 });
 
 add_UITour_task(async function test_availableTargets_changeWidgets() {
-  CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
+  CustomizableUI.addWidgetToArea("bookmarks-menu-button", CustomizableUI.AREA_NAVBAR, 0);
   ok(!UITour.availableTargetsCache.has(window),
      "Targets should be evicted from cache after widget change");
   let data = await getConfigurationPromise("availableTargets");
   let expecteds = getExpectedTargets();
-  expecteds = expecteds.filter(target => target != "bookmarks");
+  expecteds = ["bookmarks", ...expecteds];
   ok_targets(data, expecteds);
 
   ok(UITour.availableTargetsCache.has(window),
      "Targets should now be cached again");
   CustomizableUI.reset();
   ok(!UITour.availableTargetsCache.has(window),
      "Targets should not be cached after reset");
 });
deleted file mode 100644
--- a/browser/config/tooltool-manifests/win32/clang.manifest
+++ /dev/null
@@ -1,33 +0,0 @@
-[
-  {
-    "size": 266240,
-    "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
-    "algorithm": "sha512",
-    "filename": "mozmake.exe"
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 97017057,
-    "digest": "b726645f9d26c5a3048720b3839166021c1cf91a02d2ff2f10c49adced7455c7352e18b5052084d80bf9d1c40ec1bf72d0397921b8cd23262f89fdbd10def58f",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.bz2",
-    "unpack": true
-  },
-  {
-    "version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
-    "size": 326656969,
-    "digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
-    "algorithm": "sha512",
-    "filename": "vs2015u3.zip",
-    "unpack": true
-  },
-  {
-    "version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
-    "algorithm": "sha512",
-    "visibility": "public",
-    "filename": "makecab.tar.bz2",
-    "unpack": true,
-    "digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
-    "size": 297118
-  }
-]
--- a/browser/config/tooltool-manifests/win32/releng.manifest
+++ b/browser/config/tooltool-manifests/win32/releng.manifest
@@ -24,18 +24,10 @@
   {
     "version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "makecab.tar.bz2",
     "unpack": true,
     "digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
     "size": 297118
-  },
-  {
-    "version": "clang 5.0pre/r293859",
-    "size": 309009013,
-    "digest": "cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222",
-    "algorithm": "sha512",
-    "filename": "clang.tar.bz2",
-    "unpack": true
   }
 ]
deleted file mode 100644
--- a/browser/config/tooltool-manifests/win64/clang.manifest
+++ /dev/null
@@ -1,34 +0,0 @@
-[
-  {
-    "size": 266240,
-    "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
-    "algorithm": "sha512",
-    "filename": "mozmake.exe"
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 103602526,
-    "digest": "558d2d18991ad8b250a5d6b46a55e1ffdffc50d6bdd9cb4b3a945dd3d1143836b32e47f1df612bfea97ca2c02333ed43055b6c3030ecb1632385fb6940c1d246",
-    "algorithm": "sha512",
-    "visibility": "public",
-    "filename": "rustc.tar.bz2",
-    "unpack": true
-  },
-  {
-    "version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
-    "size": 326656969,
-    "digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
-    "algorithm": "sha512",
-    "filename": "vs2015u3.zip",
-    "unpack": true
-  },
-  {
-    "version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
-    "algorithm": "sha512",
-    "visibility": "public",
-    "filename": "makecab.tar.bz2",
-    "unpack": true,
-    "digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
-    "size": 297118
-  }
-]
--- a/browser/config/tooltool-manifests/win64/releng.manifest
+++ b/browser/config/tooltool-manifests/win64/releng.manifest
@@ -25,18 +25,10 @@
   {
     "version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "makecab.tar.bz2",
     "unpack": true,
     "digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
     "size": 297118
-  },
-  {
-    "version": "clang 5.0pre/r293859",
-    "size": 313862839,
-    "digest": "44dee70d525ea93952af27f943d1cc773311970c31d971d2bc2e3437cce0c899f3a03ddd8e42e86f1b4fd9ab1c4bc1767cdb0406eb4b3934ae4fc272dab830dc",
-    "algorithm": "sha512",
-    "filename": "clang.tar.bz2",
-    "unpack": true
   }
 ]
--- a/browser/extensions/formautofill/bootstrap.js
+++ b/browser/extensions/formautofill/bootstrap.js
@@ -9,16 +9,18 @@
 const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
 const STYLESHEET_URI = "chrome://formautofill/content/formautofill.css";
 const CACHED_STYLESHEETS = new WeakMap();
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "AddonManagerPrivate",
+                                  "resource://gre/modules/AddonManager.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "FormAutofillParent",
                                   "resource://formautofill/FormAutofillParent.jsm");
 
 function insertStyleSheet(domWindow, url) {
   let doc = domWindow.document;
   let styleSheetAttr = `href="${url}" type="text/css"`;
   let styleSheet = doc.createProcessingInstruction("xml-stylesheet", styleSheetAttr);
 
@@ -36,27 +38,51 @@ function onMaybeOpenPopup(evt) {
   if (CACHED_STYLESHEETS.has(domWindow)) {
     // This window already has autofill stylesheets.
     return;
   }
 
   insertStyleSheet(domWindow, STYLESHEET_URI);
 }
 
+function addUpgradeListener(instanceID) {
+  AddonManager.addUpgradeListener(instanceID, upgrade => {
+    // don't install the upgrade by doing nothing here.
+    // The upgrade will be installed upon next restart.
+  });
+}
+
+function isAvailable() {
+  let availablePref = Services.prefs.getCharPref("extensions.formautofill.available");
+  if (availablePref == "on") {
+    return true;
+  } else if (availablePref == "detect") {
+    let locale = Services.locale.getRequestedLocale();
+    let region = Services.prefs.getCharPref("browser.search.region", "");
+    return locale == "en-US" && region == "US";
+  }
+  return false;
+}
+
 function startup(data) {
-  if (Services.prefs.getStringPref("extensions.formautofill.available") != "on") {
+  if (!isAvailable()) {
     Services.prefs.clearUserPref("dom.forms.autocomplete.formautofill");
     return;
   }
 
   if (data.hasOwnProperty("instanceID") && data.instanceID) {
-    AddonManager.addUpgradeListener(data.instanceID, (upgrade) => {
-      // don't install the upgrade by doing nothing here.
-      // The upgrade will be installed upon next restart.
-    });
+    if (AddonManagerPrivate.isDBLoaded()) {
+      addUpgradeListener(data.instanceID);
+    } else {
+      // Wait for the extension database to be loaded so we don't cause its init.
+      Services.obs.addObserver(function xpiDatabaseLoaded() {
+        Services.obs.removeObserver(xpiDatabaseLoaded, "xpi-database-loaded");
+        addUpgradeListener(data.instanceID);
+      }, "xpi-database-loaded");
+    }
   } else {
     throw Error("no instanceID passed to bootstrap startup");
   }
 
   // This pref is used for web contents to detect the autocomplete feature.
   // When it's true, "element.autocomplete" will return tokens we currently
   // support -- otherwise it'll return an empty string.
   Services.prefs.setBoolPref("dom.forms.autocomplete.formautofill", true);
--- a/browser/extensions/formautofill/test/browser/browser_first_time_use_doorhanger.js
+++ b/browser/extensions/formautofill/test/browser/browser_first_time_use_doorhanger.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
 const FTU_PREF = "extensions.formautofill.firstTimeUse";
 const ENABLED_PREF = "extensions.formautofill.addresses.enabled";
 
 add_task(async function test_first_time_save() {
   let addresses = await getAddresses();
--- a/browser/extensions/formautofill/test/browser/browser_submission_in_private_mode.js
+++ b/browser/extensions/formautofill/test/browser/browser_submission_in_private_mode.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
 
 add_task(async function test_add_address() {
   let privateWin = await BrowserTestUtils.openNewBrowserWindow({private: true});
   let addresses = await getAddresses();
 
--- a/browser/extensions/formautofill/test/browser/browser_update_doorhanger.js
+++ b/browser/extensions/formautofill/test/browser/browser_update_doorhanger.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 const FORM_URL = "http://mochi.test:8888/browser/browser/extensions/formautofill/test/browser/autocomplete_basic.html";
 
 add_task(async function test_update_address() {
   await saveAddress(TEST_ADDRESS_1);
   let addresses = await getAddresses();
   is(addresses.length, 1, "1 address in storage");
--- a/browser/extensions/formautofill/test/unit/head.js
+++ b/browser/extensions/formautofill/test/unit/head.js
@@ -1,14 +1,14 @@
 /**
  * Provides infrastructure for automated formautofill components tests.
  */
 
 /* exported getTempFile, loadFormAutofillContent, runHeuristicsTest, sinon,
- *          initProfileStorage, getSyncChangeCounter, objectMatches
+ *          initProfileStorage, getSyncChangeCounter, objectMatches, bootstrapURI
  */
 
 "use strict";
 
 var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
@@ -46,20 +46,25 @@ var sinon = require("sinon-2.3.2");
 // ================================================
 
 // Load our bootstrap extension manifest so we can access our chrome/resource URIs.
 const EXTENSION_ID = "formautofill@mozilla.org";
 let extensionDir = Services.dirsvc.get("GreD", Ci.nsIFile);
 extensionDir.append("browser");
 extensionDir.append("features");
 extensionDir.append(EXTENSION_ID);
+let bootstrapFile = extensionDir.clone();
+bootstrapFile.append("bootstrap.js");
+let bootstrapURI = Services.io.newFileURI(bootstrapFile).spec;
 // If the unpacked extension doesn't exist, use the packed version.
 if (!extensionDir.exists()) {
   extensionDir = extensionDir.parent;
   extensionDir.append(EXTENSION_ID + ".xpi");
+  let jarURI = Services.io.newFileURI(extensionDir);
+  bootstrapURI = "jar:" + jarURI.spec + "!/bootstrap.js";
 }
 Components.manager.addBootstrappedManifestLocation(extensionDir);
 
 // While the previous test file should have deleted all the temporary files it
 // used, on Windows these might still be pending deletion on the physical file
 // system.  Thus, start from a new base number every time, to make a collision
 // with a file that is still pending deletion highly unlikely.
 let gFileCounter = Math.floor(Math.random() * 1000000);
new file mode 100644
--- /dev/null
+++ b/browser/extensions/formautofill/test/unit/test_isAvailable.js
@@ -0,0 +1,32 @@
+/**
+ * Test enabling the feature in specific locales and regions.
+ */
+
+"use strict";
+
+// Load bootstrap.js into a sandbox to be able to test `isAvailable`
+let sandbox = {};
+Services.scriptloader.loadSubScript(bootstrapURI, sandbox, "utf-8");
+do_print("bootstrapURI: " + bootstrapURI);
+
+add_task(async function test_defaultTestEnvironment() {
+  do_check_true(sandbox.isAvailable());
+});
+
+add_task(async function test_unsupportedRegion() {
+  Services.prefs.setCharPref("extensions.formautofill.available", "detect");
+  Services.prefs.setCharPref("browser.search.region", "ZZ");
+  do_register_cleanup(function cleanupRegion() {
+    Services.prefs.clearUserPref("browser.search.region");
+  });
+  do_check_false(sandbox.isAvailable());
+});
+
+add_task(async function test_supportedRegion() {
+  Services.prefs.setCharPref("extensions.formautofill.available", "detect");
+  Services.prefs.setCharPref("browser.search.region", "US");
+  do_register_cleanup(function cleanupRegion() {
+    Services.prefs.clearUserPref("browser.search.region");
+  });
+  do_check_true(sandbox.isAvailable());
+});
--- a/browser/extensions/formautofill/test/unit/xpcshell.ini
+++ b/browser/extensions/formautofill/test/unit/xpcshell.ini
@@ -23,16 +23,17 @@ support-files =
 [test_creditCardRecords.js]
 [test_extractLabelStrings.js]
 [test_findLabelElements.js]
 [test_getAdaptedProfiles.js]
 [test_getCategoriesFromFieldNames.js]
 [test_getFormInputDetails.js]
 [test_getInfo.js]
 [test_getRecords.js]
+[test_isAvailable.js]
 [test_isCJKName.js]
 [test_isFieldEligibleForAutofill.js]
 [test_markAsAutofillField.js]
 [test_migrateRecords.js]
 [test_nameUtils.js]
 [test_onFormSubmitted.js]
 [test_profileAutocompleteResult.js]
 [test_phoneNumber.js]
--- a/browser/extensions/onboarding/bootstrap.js
+++ b/browser/extensions/onboarding/bootstrap.js
@@ -191,17 +191,17 @@ function observe(subject, topic, data) {
 }
 
 function install(aData, aReason) {}
 
 function uninstall(aData, aReason) {}
 
 function startup(aData, aReason) {
   // Only start Onboarding when the browser UI is ready
-  if (aReason === APP_STARTUP || aReason === ADDON_INSTALL) {
+  if (Services.startup.startingUp) {
     Services.obs.addObserver(observe, BROWSER_READY_NOTIFICATION);
     Services.obs.addObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
   } else {
     onBrowserReady();
     syncTourChecker.init();
   }
 }
 
--- a/browser/extensions/pdfjs/test/browser_pdfjs_navigation.js
+++ b/browser/extensions/pdfjs/test/browser_pdfjs_navigation.js
@@ -1,10 +1,11 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 requestLongerTimeout(2);
 
 
 const RELATIVE_DIR = "browser/extensions/pdfjs/test/";
 const TESTROOT = "http://example.com/browser/" + RELATIVE_DIR;
 
 const PDF_OUTLINE_ITEMS = 17;
--- a/browser/extensions/pocket/bootstrap.js
+++ b/browser/extensions/pocket/bootstrap.js
@@ -400,17 +400,18 @@ var PocketOverlay = {
       CustomizableUI.removeListener(this);
       CustomizableUI.destroyWidget("pocket-button");
     }
 
     for (let window of browserWindows()) {
       for (let id of ["panelMenu_pocket", "menu_pocket", "BMB_pocket",
                       "panelMenu_pocketSeparator", "menu_pocketSeparator",
                       "BMB_pocketSeparator", "appMenu-library-pocket-button"]) {
-        let element = window.document.getElementById(id);
+        let element = window.document.getElementById(id) ||
+                      window.gNavToolbox.palette.querySelector("#" + id);
         if (element)
           element.remove();
       }
       this.removeStyles(window);
       // remove script getters/objects
       delete window.Pocket;
       delete window.pktApi;
       delete window.pktUI;
@@ -460,17 +461,20 @@ var PocketOverlay = {
         "hidden": hidden
       });
       sib.parentNode.insertBefore(menu, sib);
       sib.parentNode.insertBefore(sep, sib);
     }
 
     // add to bookmarks-menu-button
     sib = document.getElementById("BMB_bookmarksToolbar");
-    if (sib && !document.getElementById("BMB_pocket")) {
+    if (!sib) {
+      sib = window.gNavToolbox.palette.querySelector("#BMB_bookmarksToolbar");
+    }
+    if (sib && !sib.parentNode.querySelector("#BMB_pocket")) {
       let menu = createElementWithAttrs(document, "menuitem", {
         "id": "BMB_pocket",
         "label": gPocketBundle.GetStringFromName("pocketMenuitem.label"),
         "class": "menuitem-iconic bookmark-item subviewbutton",
         "oncommand": "openUILink(Pocket.listURL, event);",
         "hidden": hidden
       });
       let sep = createElementWithAttrs(document, "menuseparator", {
--- a/browser/extensions/pocket/test/browser_pocket_ui_check.js
+++ b/browser/extensions/pocket/test/browser_pocket_ui_check.js
@@ -2,17 +2,18 @@
 
 function checkWindowProperties(expectPresent, l) {
   for (let name of l) {
     is(!!window.hasOwnProperty(name), expectPresent, "property " + name + (expectPresent ? " is" : " is not") + " present");
   }
 }
 function checkElements(expectPresent, l) {
   for (let id of l) {
-    is(!!document.getElementById(id), expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present");
+    let el = document.getElementById(id) || gNavToolbox.palette.querySelector("#" + id);
+    is(!!el, expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present");
   }
 }
 
 add_task(async function test_setup() {
   let clearValue = Services.prefs.prefHasUserValue("extensions.pocket.enabled");
   let enabledOnStartup = Services.prefs.getBoolPref("extensions.pocket.enabled");
   registerCleanupFunction(() => {
     if (clearValue) {
--- a/browser/extensions/screenshots/install.rdf
+++ b/browser/extensions/screenshots/install.rdf
@@ -7,14 +7,14 @@
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <!--Firefox-->
         <em:minVersion>51.0a1</em:minVersion>
         <em:maxVersion>*</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:type>2</em:type>
-    <em:version>10.10.0</em:version>
+    <em:version>10.11.0</em:version>
     <em:bootstrap>true</em:bootstrap>
     <em:homepageURL>https://pageshot.net/</em:homepageURL>
     <em:multiprocessCompatible>true</em:multiprocessCompatible>
   </Description>
 </RDF>
--- a/browser/extensions/screenshots/moz.build
+++ b/browser/extensions/screenshots/moz.build
@@ -44,16 +44,24 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["bg"] += [
   'webextension/_locales/bg/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["bn_BD"] += [
   'webextension/_locales/bn_BD/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ca"] += [
+  'webextension/_locales/ca/messages.json'
+]
+
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["cak"] += [
+  'webextension/_locales/cak/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["cs"] += [
   'webextension/_locales/cs/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["cy"] += [
   'webextension/_locales/cy/messages.json'
 ]
 
@@ -76,16 +84,20 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["en_GB"] += [
   'webextension/_locales/en_GB/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["en_US"] += [
   'webextension/_locales/en_US/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["eo"] += [
+  'webextension/_locales/eo/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["es_AR"] += [
   'webextension/_locales/es_AR/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["es_CL"] += [
   'webextension/_locales/es_CL/messages.json'
 ]
 
@@ -112,28 +124,36 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["fr"] += [
   'webextension/_locales/fr/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["fy_NL"] += [
   'webextension/_locales/fy_NL/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ga_IE"] += [
+  'webextension/_locales/ga_IE/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["gu_IN"] += [
   'webextension/_locales/gu_IN/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["he"] += [
   'webextension/_locales/he/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hi_IN"] += [
   'webextension/_locales/hi_IN/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hr"] += [
+  'webextension/_locales/hr/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hsb"] += [
   'webextension/_locales/hsb/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["hu"] += [
   'webextension/_locales/hu/messages.json'
 ]
 
@@ -148,16 +168,20 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["it"] += [
   'webextension/_locales/it/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ja"] += [
   'webextension/_locales/ja/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ka"] += [
+  'webextension/_locales/ka/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["kab"] += [
   'webextension/_locales/kab/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["kk"] += [
   'webextension/_locales/kk/messages.json'
 ]
 
@@ -176,16 +200,24 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["lo"] += [
   'webextension/_locales/lo/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["lt"] += [
   'webextension/_locales/lt/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["mk"] += [
+  'webextension/_locales/mk/messages.json'
+]
+
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["mr"] += [
+  'webextension/_locales/mr/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ms"] += [
   'webextension/_locales/ms/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["my"] += [
   'webextension/_locales/my/messages.json'
 ]
 
@@ -276,16 +308,20 @@ FINAL_TARGET_FILES.features['screenshots
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ur"] += [
   'webextension/_locales/ur/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["uz"] += [
   'webextension/_locales/uz/messages.json'
 ]
 
+FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["vi"] += [
+  'webextension/_locales/vi/messages.json'
+]
+
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["zh_CN"] += [
   'webextension/_locales/zh_CN/messages.json'
 ]
 
 FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["zh_TW"] += [
   'webextension/_locales/zh_TW/messages.json'
 ]
 
--- a/browser/extensions/screenshots/webextension/_locales/ach/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ach/messages.json
@@ -59,16 +59,19 @@
     "message": "Pe watwero mako cal me wang kio me potbuk man."
   },
   "unshootablePageErrorDetails": {
     "message": "Man pe obedo Kakube me rwom, pi meno pe watwero mako cal me wang kio ne."
   },
   "selfScreenshotErrorTitle": {
     "message": "Pe itwero mako cal me potbuk pa Firefox Screenshots!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "Yer mamegi tidi tutwal"
+  },
   "genericErrorTitle": {
     "message": "Woo! Firefox Screenshots opo oo."
   },
   "genericErrorDetails": {
     "message": "Pe wa ngeyo ngo ma otime kombedi. Iromo temo ne doki onyo mako cal pa potbuk mukene?"
   },
   "tourBodyOne": {
     "message": "Maki, gwoki, ki nywak cal me wang kio labongo weko Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/ar/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ar/messages.json
@@ -59,24 +59,33 @@
     "message": "تعذّر أخذ لقطة شاشة لهذه الصفحة."
   },
   "unshootablePageErrorDetails": {
     "message": "ليست هذه صفحة وِب قياسية، لذا لا يمكنك أخذ لقطة لها."
   },
   "selfScreenshotErrorTitle": {
     "message": "لا يمكننا أخذ لقطة لصفحة من صفحات «لقطات شاشة فَيَرفُكس»!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "التحديد صغير جدا"
+  },
+  "privateWindowErrorTitle": {
+    "message": "لقطات الشاشة معطّلة في وضع التصفح الخاص"
+  },
+  "privateWindowErrorDetails": {
+    "message": "نأسف على الإزعاج. نعمل على هذه الخاصية للإصدارات اللاحقة."
+  },
   "genericErrorTitle": {
     "message": "هناك عطل في «لقطات شاشة فَيَرفُكس»."
   },
   "genericErrorDetails": {
     "message": "لسنا متأكدين ما المشكلة. أتمانع إعادة المحاولة أو أخذ لقطة لصفحة أخرى؟"
   },
   "tourBodyOne": {
-    "message": "خذ لقطات الشاشة و احفظها و شارطها دون مغادرة فَيَرفُكس."
+    "message": "خذ لقطات الشاشة و احفظها و شاركها دون مغادرة فَيَرفُكس."
   },
   "tourHeaderTwo": {
     "message": "التقط ما تريده فقط"
   },
   "tourBodyTwo": {
     "message": "انقر و اسحب لالتقاط جزء معين من الصفحة. يمكنك أيضًا التحويم لإبراز التحديد."
   },
   "tourHeaderThree": {
--- a/browser/extensions/screenshots/webextension/_locales/az/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/az/messages.json
@@ -1,18 +1,24 @@
 {
+  "addonDescription": {
+    "message": "Web səhifələrin ekran görüntülərini alın, müvəqqəti və ya qalıcı saxlayın."
+  },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
     "message": "Ekran görüntüsü al"
   },
   "myShotsLink": {
     "message": "Ekran Görüntülərim"
   },
+  "screenshotInstructions": {
+    "message": "Səhifədə hər hansı bir yerdə sürüşdürərək və ya basaraq ərazini seçin. Ləğv etmək üçün ESC basın."
+  },
   "saveScreenshotSelectedArea": {
     "message": "Saxla"
   },
   "saveScreenshotVisibleArea": {
     "message": "Görünən ərazini saxla"
   },
   "saveScreenshotFullPage": {
     "message": "Tam səhifəni saxla"
@@ -21,27 +27,106 @@
     "message": "Ləğv et"
   },
   "downloadScreenshot": {
     "message": "Endir"
   },
   "notificationLinkCopiedTitle": {
     "message": "Keçid köçürüldü"
   },
+  "notificationLinkCopiedDetails": {
+    "message": "Ekran görüntüsünün keçidi buferə köçürüldü. Yapışdırmaq üçün $META_KEY$-V basın.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Xəta baş verdi."
+  },
+  "requestErrorDetails": {
+    "message": "Üzr istəyirik! Ekran görüntünüzü saxlaya bilmədik. Lütfən biraz sonra təkrar yoxlayın."
+  },
+  "connectionErrorTitle": {
+    "message": "Ekran görüntülərinizə qoşula bilmirik."
+  },
+  "connectionErrorDetails": {
+    "message": "Lütfən internet bağlantınızı yoxlayın. Əgər internetdə problem yoxdursa Firefox Screenshots xidmətində müvəqqəti xəta ola bilər."
+  },
+  "loginErrorDetails": {
+    "message": "Firefox Screenshots xidmətindəki müvəqqəti xəta üzündən ekran görüntünüzü saxlaya bilmədik. Lütfən biraz sonra təkrar yoxlayın."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Bu səhifənin ekran görüntüsü alına bilmir."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Bu normal Web səhifəsi deyil, bu səbəbdən ekran görüntüsünü almaq mümkün olmur."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Firefox Screenshots səhifəsinin ekran görüntüsünü ala bilməzsiz!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Seçiminiz çox balacadır"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Ekran görüntüləri Məxfi Səyahət rejimində sönülüdür"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Narahatlıq üçün üzr istəyirik. Gələcək buraxılışlarda bu özəllik üzərində işləyirik."
+  },
+  "genericErrorTitle": {
+    "message": "Off! Firefox Screenshots dəli olub."
+  },
+  "genericErrorDetails": {
+    "message": "Nə baş verdiyindən əmin deyilik. Bir daha yoxlayın və ya başqa səhifənin ekran görüntüsünü alaraq işləyib işləmədiyinə əmin olun."
+  },
+  "tourBodyOne": {
+    "message": "Firefoxu tərk etmədən ekran görüntüləri alın, saxlayın və paylaşın."
+  },
+  "tourHeaderTwo": {
+    "message": "İstədiyiniz hər şeyin görüntüsünü alın"
+  },
+  "tourBodyTwo": {
+    "message": "Səhifənin hər hansı bir hissəsini almaq üçün basın və ya sürüşdürün. Seçiminizi işıqlandırmaq üçün üzərinə gedin."
+  },
+  "tourHeaderThree": {
+    "message": "Pəncərəni və ya bütün səhifəni çəkin"
+  },
+  "tourBodyThree": {
+    "message": "Sadəcə pəncərədə görünən hissəni və ya bütün səhifəni çəkmək üçün sağ üstdəki düymələrdən birini seçin."
+  },
+  "tourHeaderFour": {
+    "message": "İstədiyiniz kimi"
+  },
+  "tourBodyFour": {
+    "message": "Kəsdiyiniz hissələri rahat paylaşmaq üçün internetdə saxlayın və ya kompüterinizə endirin. Həmçinin Ekran Görüntülərim düyməsinə basaraq çəkdiyiniz bütün ekran görüntülərini görə bilərsiz."
+  },
   "tourSkip": {
     "message": "Ötür"
   },
   "tourNext": {
     "message": "Növbəti Slayd"
   },
   "tourPrevious": {
     "message": "Əvvəlki Slayd"
   },
   "tourDone": {
     "message": "Tamamlandı"
   },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Firefox Screenshots işlədərək $TERMSANDPRIVACYNOTICETERMSLINK$ və $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ilə razılaşmış olursunuz.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
   "termsAndPrivacyNoticeTermsLink": {
     "message": "Şərtlər"
   },
   "termsAndPrivacyNoticyPrivacyLink": {
     "message": "Məxfilik Bildirişi"
   }
 }
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/be/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/be/messages.json
@@ -62,16 +62,22 @@
     "message": "Гэта не стандартная вэб-старонка, таму вы не можаце зрабіць яе скрыншот."
   },
   "selfScreenshotErrorTitle": {
     "message": "Вы не можаце зрабіць здымак старонкі Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Абраная вобласць занадта малая"
   },
+  "privateWindowErrorTitle": {
+    "message": "Здымкі экрана адключаны ў рэжыме прыватнага аглядання"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Прабачце за нязручнасць. Мы працуем над даданнем гэтай магчымасці у будучыя выпускі."
+  },
   "genericErrorTitle": {
     "message": "Вой! З Firefox Screenshots нешта не так."
   },
   "genericErrorDetails": {
     "message": "Мы не ўпэўненыя, у чым праблема. Паспрабаваць яшчэ раз, ці зрабіць здымак іншай старонкі?"
   },
   "tourBodyOne": {
     "message": "Рабіце здымкі экрана, захоўвайце і дзяліцеся імі не выходзячы з Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/bg/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/bg/messages.json
@@ -62,45 +62,51 @@
     "message": "Това не е обикновена уебстраница и за това снимка не може да ѝ бъде направена."
   },
   "selfScreenshotErrorTitle": {
     "message": "Не може да правите снимки на страницата на Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Избраната област е твърде малка"
   },
+  "privateWindowErrorTitle": {
+    "message": "Правене на снимки е изключено в поверителен режим"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Съжаляваме за неудобството. Очаквайте тази възможност в бъдещите версии."
+  },
   "genericErrorTitle": {
     "message": "Леле! Нещо се обърка с Firefox Screenshots."
   },
   "genericErrorDetails": {
     "message": "Не сме сигурни какво точно се случи. Може да опитате отново, както и да снимате друга страница."
   },
   "tourBodyOne": {
     "message": "Правете, запазвайте и споделяйте снимки на екрана без да напускате Firefox."
   },
   "tourHeaderTwo": {
     "message": "Уловете само нужното"
   },
   "tourBodyTwo": {
-    "message": "Щракнете с мишката или влачете, за да уловите части от страницата. Посочвайки елементи от страницата – те се осветяват."
+    "message": "Щракнете с мишката или влачете, за да уловите части от страницата. А когато посочите елементи от страницата – те се осветяват."
   },
   "tourHeaderThree": {
     "message": "Улавяйте прозорци и цели страници"
   },
   "tourBodyThree": {
     "message": "Използвайте бутоните в горния десен ъгъл, за да уловите само видимата част или цялата страница."
   },
   "tourHeaderFour": {
     "message": "Както ви харесва"
   },
   "tourBodyFour": {
-    "message": "Запазете снимките на страници от Мрежата за по-лесно споделяне или ги изтеглете на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
+    "message": "Запазвайте снимките на страници от Мрежата, за да ги споделяте по-лесно или ги изтегляйте на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
   },
   "tourSkip": {
-    "message": "Прескачане"
+    "message": "Пропускане"
   },
   "tourNext": {
     "message": "Напред"
   },
   "tourPrevious": {
     "message": "Назад"
   },
   "tourDone": {
--- a/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/bn_BD/messages.json
@@ -59,16 +59,25 @@
     "message": "আমার এই পেজের স্ক্রিনশট নিতে পারব না।"
   },
   "unshootablePageErrorDetails": {
     "message": "এটা কোন আদর্শ ওয়েব পেজ না, তাই আপনি এটার স্ক্রিনশট তুলতে পারবেন না।"
   },
   "selfScreenshotErrorTitle": {
     "message": "আপনি Firefox স্ক্রিনশটের পেজের শট নিতে পারেন না!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "আপনি অল্প স্থান নির্বাচন করেছেন"
+  },
+  "privateWindowErrorTitle": {
+    "message": "ব্যক্তিগত ব্রাউজিং মোডে স্ক্রিনশট নেওয়া নিস্ক্রিয় করা হয়েছে"
+  },
+  "privateWindowErrorDetails": {
+    "message": "অসুবিধার জন্য দুঃখিত। আমরা এই বৈশিষ্ট্যটি নিয়ে কাজ করছি, খুব শীঘ্রই রিলিজ করা হবে।"
+  },
   "genericErrorTitle": {
     "message": "আয় হায়! Firefox স্ক্রিনশট পাগল হয়ে গেছে।"
   },
   "genericErrorDetails": {
     "message": "এই মাত্র কি ঘটেছে আমরা নিশ্চিত নই। আপনি কি অনুগ্রহ করে পুরনায় সট নেবেন কিংবা ভিন্ন একটি পেজে চেষ্টা করবেন?"
   },
   "tourBodyOne": {
     "message": "Firefox ত্যাগ করা ছাড়াই স্ক্রিনশট তোল, সংরক্ষণ কর এবং শেয়ার কর।"
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/ca/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "Feu captures de pantalla de pàgines web i deseu-les temporalment o per sempre."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Fes una captura de pantalla"
+  },
+  "myShotsLink": {
+    "message": "Les meves captures"
+  },
+  "screenshotInstructions": {
+    "message": "Arrossegueu o feu clic a la pàgina per seleccionar una regió. Premeu ESC per cancel·lar."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Desa"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Captura la part visible"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Captura tota la pàgina"
+  },
+  "cancelScreenshot": {
+    "message": "Cancel·la"
+  },
+  "downloadScreenshot": {
+    "message": "Baixa"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "S'ha copiat l'enllaç"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "L'enllaç de la captura s'ha copiat al porta-retalls. Premeu $META_KEY$-V per enganxar-lo.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "No funciona."
+  },
+  "requestErrorDetails": {
+    "message": "Malauradament, s'ha pogut desar la vostra captura. Torneu a provar més tard."
+  },
+  "connectionErrorTitle": {
+    "message": "No s'ha pogut accedir a les vostres captures de pantalla."
+  },
+  "connectionErrorDetails": {
+    "message": "Comproveu la connexió a Internet. Si podeu connectar-vos a Internet, podria ser un problema temporal del servei del Firefox Screenshots."
+  },
+  "loginErrorDetails": {
+    "message": "No s'ha pogut desar la vostra captura perquè hi ha un problema amb el servei del Firefox Screenshots. Torneu-ho a provar més tard."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "No es pot fer una captura de pantalla d'aquesta pàgina."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "No podeu fer una captura de pantalla perquè aquesta no és una pàgina web estàndard."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "No podeu fer una captura de pantalla de la pàgina del Firefox Screenshots!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "La selecció és massa petita"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Les captures de pantalla estan desactivades en el mode de navegació privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Perdoneu les molèsties. Estem treballant en aquesta característica per a versions futures."
+  },
+  "genericErrorTitle": {
+    "message": "El Firefox Screenshots ha tingut un problema."
+  },
+  "genericErrorDetails": {
+    "message": "S'ha produït un error inesperat. Torneu-ho a provar o captureu una altra pàgina."
+  },
+  "tourBodyOne": {
+    "message": "Feu, deseu i compartiu captures de pantalla sense sortir del Firefox."
+  },
+  "tourHeaderTwo": {
+    "message": "Captureu tot allò que vulgueu"
+  },
+  "tourBodyTwo": {
+    "message": "Feu clic i arrossegueu per capturar només una part de la pàgina. També podeu moure el ratolí per sobre per ressaltar la vostra selecció."
+  },
+  "tourHeaderThree": {
+    "message": "Captureu la finestra o la pàgina sencera"
+  },
+  "tourBodyThree": {
+    "message": "Seleccioneu amb els botons de la part superior dreta si voleu capturar l'àrea visible de la finestra o la pàgina sencera."
+  },
+  "tourHeaderFour": {
+    "message": "Com vulgueu"
+  },
+  "tourBodyFour": {
+    "message": "Deseu les vostres captures al web per compartir-les fàcilment o baixeu-les a l'ordinador. També podeu fer clic al botó «Les meves captures» per veure totes les captures que heu fet."
+  },
+  "tourSkip": {
+    "message": "OMET"
+  },
+  "tourNext": {
+    "message": "Diapositiva següent"
+  },
+  "tourPrevious": {
+    "message": "Diapositiva anterior"
+  },
+  "tourDone": {
+    "message": "Fet"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Si utilitzeu el Firefox Screenshots, esteu acceptant les nostres $TERMSANDPRIVACYNOTICETERMSLINK$ i l'$TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "condicions d'ús"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "avís de privadesa"
+  }
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/cak/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "Ke'achapa' silowachib'al chuqa' chapoj wachib'äl pan Ajk'amaya'l richin ye'ayäk."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Tichap jun Chapoj Wachib'äl"
+  },
+  "myShotsLink": {
+    "message": "Taq Nuwachib'al"
+  },
+  "screenshotInstructions": {
+    "message": "Taqirirej o tapitz'a' ri ruxaq richin nacha' ri k'ojlem. Tapitz'a' ESC richin niq'at."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Tiyak"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Tiyak wachel"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Tiyak chijun ruxaq"
+  },
+  "cancelScreenshot": {
+    "message": "Tiq'at"
+  },
+  "downloadScreenshot": {
+    "message": "Tiqasäx"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Ximonel Wachib'en"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "Xwachib'ëx pa molwuj ri ruximonel awachib'al. Tapitz'a' $META_KEY$-V richin natz'äm.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Man nisamäj ta."
+  },
+  "requestErrorDetails": {
+    "message": "¡Takuyu! Man yojtikïr ta niqayäk ri awachib'al. Tatojtob'ej jumej."
+  },
+  "connectionErrorTitle": {
+    "message": "Man yojtikïr ta yojok pari taq chapoj awachib'al."
+  },
+  "connectionErrorDetails": {
+    "message": "Tanik'oj awokem pa K'amaya'l. We yatok pa K'amaya'l, rik'in jub'a' xtuya' k'ayewal pa rusamaj ri Firefox taq Chapoj Wachib'äl."
+  },
+  "loginErrorDetails": {
+    "message": "Man xkatikïr ta xtayäk ri awachib'al ruma jun ruk'ayewal toq nisamäj ri Firefox Chapoj Wachib'äl. Tatojtob'ej chik pa jun mej."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Man yojtikïr ta nichap ruwachib'al re ruxaq re'."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Re re' man pa rub'eyal ta chi ruxaq Ajk'amaya'l, ruma ri' man yojtikïr ta niqachäp ruwachib'al."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "¡Man yatikïr ta nawelesaj ruwachib'al jun ruxaq Firefox Chapoj Wachib'äl!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Yalan ko'öl ri acha'oj"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Echupun ri Chapoj taq Wachib'äl pa Ichinan Okem pa K'amaya'l"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Takuyu' chi qe ruma ri k'ayewal. Tajin niqasamajij re rub'anikil re' richin ri ch'aqa' chik taq ruwäch."
+  },
+  "genericErrorTitle": {
+    "message": "¡Itz! Itzel xe'el ri Firefox Chapoj Wachib'äl."
+  },
+  "genericErrorDetails": {
+    "message": "Man öj jikïl chi rij ri xk'ulwachitäj. ¿La nawajo' natojtob'ej chik o nachäp ruwachib'al jun chik ruxaq?"
+  },
+  "tourBodyOne": {
+    "message": "Ke'achapa', ke'ayaka', chuqa' ke'akomonij chapoj taq wachib'äl rik'in man yatel ta el pa Firefox."
+  },
+  "tourHeaderTwo": {
+    "message": "Tachapa' ri Nawajo'"
+  },
+  "tourBodyTwo": {
+    "message": "Tapitz'a' chuqa' taqirirej richin nacha' xa jun peraj ruxaq. Chuqa' yatikïr yaq'axaj richin nipe retal ri acha'oj."
+  },
+  "tourHeaderThree": {
+    "message": "Chapoj Tzuwäch o Tz'aqät taq Ruxaq"
+  },
+  "tourBodyThree": {
+    "message": "Ke'acha' ri ikim ajkiq'a' taq pitz'b'äl richin nachäp ri tz'etel ruk'ojlem tzuwäch o richin nachäp jun tz'aqät ruxaq."
+  },
+  "tourHeaderFour": {
+    "message": "Achi'el Niqa Chawäch"
+  },
+  "tourBodyFour": {
+    "message": "Ke'ayaka' ri qupin taq awachib'al pa ajk'amaya'l richin man k'ayew ta ye'akomonij o ye'aqasaj pan akematz'ib'. Chuqa' yatikïr napïtz ri Taq Nuwachib'al richin ye'awïl konojel ri taq wachib'al e'elesan."
+  },
+  "tourSkip": {
+    "message": "SKIP"
+  },
+  "tourNext": {
+    "message": "Jun chik Q'axewäch"
+  },
+  "tourPrevious": {
+    "message": "Jun kan Q'axewäch"
+  },
+  "tourDone": {
+    "message": "Xb'an"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Rik'in rokisaxik ri Firefox Chapoj Wachib'äl, nawoqaj $TERMSANDPRIVACYNOTICETERMSLINK$ chuqa' $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "Taq ojqanem"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "Rutzijol Ichinanem"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/cs/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/cs/messages.json
@@ -1,17 +1,17 @@
 {
   "addonDescription": {
     "message": "Pořizujte snímky webových stránek a ukládejte je dočasně nebo natrvalo."
   },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
-    "message": "Pořídit snímek obrazovky"
+    "message": "Pořídit snímek stránky"
   },
   "myShotsLink": {
     "message": "Mé snímky"
   },
   "screenshotInstructions": {
     "message": "Oblast vyberete kliknutím nebo tahem myší. Pro zrušení stiskněte ESC."
   },
   "saveScreenshotSelectedArea": {
@@ -62,16 +62,22 @@
     "message": "Toto není běžná webová stránka, a proto z ní nelze pořizovat žádné snímky."
   },
   "selfScreenshotErrorTitle": {
     "message": "Nelze pořizovat snímek stránky Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Vybraná oblast je moc malá"
   },
+  "privateWindowErrorTitle": {
+    "message": "Služba Firefox Screenshots je v anonymním prohlížení vypnutá"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Omlouváme se za nepříjemnosti. Na této funkci pracujeme pro některé příští vydání."
+  },
   "genericErrorTitle": {
     "message": "Jejda! Služba Firefox Screenshots přestala pracovat."
   },
   "genericErrorDetails": {
     "message": "Nejsme si jistí, co se právě stalo. Chcete to zkusit znovu, nebo zkusíte pořídit snímek na jiné stránce?"
   },
   "tourBodyOne": {
     "message": "Pořizujte, ukládejte a sdílejte snímky webových stránek bez opuštění Firefoxu."
--- a/browser/extensions/screenshots/webextension/_locales/cy/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/cy/messages.json
@@ -59,16 +59,25 @@
     "message": "Nid oes modd tynnu llun sgrin o'r dudalen."
   },
   "unshootablePageErrorDetails": {
     "message": "Nid yw hwn yn dudalen Gwe safonol, felly does dim modd tynnu llun sgrin ohono."
   },
   "selfScreenshotErrorTitle": {
     "message": "Nid oes modd cymryd llun o dudalen lluniau sgrin Firefox Screenshots!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "Mae eich dewis yn rhy fach"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Mae Screenshot wedi ei analluogi yn y Modd Pori Preifat"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Ymddiheuriadau am yr anhwylustod. Rydym yn gweithio ar y nodwedd hwn ar gyfer fersiynau'r dyfodol."
+  },
   "genericErrorTitle": {
     "message": "Www! Mae Firefox Screenshots wedi mynd yn hurt."
   },
   "genericErrorDetails": {
     "message": "Nid ydym yn gwybod beth sydd wedi ddigwydd. Ceisiwch eto neu dynnu llun o dudalen wahanol?"
   },
   "tourBodyOne": {
     "message": "Cymryd, cadw a rhannu lluniau sgrin heb adael Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/da/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/da/messages.json
@@ -28,58 +28,64 @@
   },
   "downloadScreenshot": {
     "message": "Hent"
   },
   "notificationLinkCopiedTitle": {
     "message": "Link kopieret"
   },
   "notificationLinkCopiedDetails": {
-    "message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind. ",
+    "message": "Linket til dit skærmbillede er blevet gemt i udklipsholderen. Tryk på $META_KEY$-V for at sætte ind.",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
     "message": "Ude af funktion"
   },
   "requestErrorDetails": {
     "message": "Vi kunne desværre ikke gemme dit skærmbillede. Prøv igen senere."
   },
   "connectionErrorTitle": {
     "message": "Vi kan ikke oprette forbindelse til dine skærmbilleder."
   },
   "connectionErrorDetails": {
-    "message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots. "
+    "message": "Kontroller din internet-forbindelse. Hvis du ikke kan oprette forbindelse til internettet, kan der være et midlertidigt teknisk problem med Firefox Screenshots."
   },
   "loginErrorDetails": {
-    "message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere. "
+    "message": "Vi kunne ikke gemme dit skærmbillede, fordi der er et teknisk problem med Firefox Screenshots. Prøv igen senere."
   },
   "unshootablePageErrorTitle": {
-    "message": "Vi kan ikke tage et skærmbillede af denne side. "
+    "message": "Vi kan ikke tage et skærmbillede af denne side."
   },
   "unshootablePageErrorDetails": {
-    "message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den. "
+    "message": "Dette er ikke en almindelig webside, så du kan ikke tage skærmbilleder af den."
   },
   "selfScreenshotErrorTitle": {
     "message": "Du kan ikke tage skærmbilleder af en side i Firefox Screenshots."
   },
   "emptySelectionErrorTitle": {
     "message": "Din markering er for lille"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots er deaktiveret i privat browsing-tilstand"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Vi beklager ulejligheden. Vi arbejder på at få funktionen til at virke i fremtidige udgivelser."
+  },
   "genericErrorTitle": {
     "message": "Hov! Noget gik helt galt med Firefox Screenshots."
   },
   "genericErrorDetails": {
     "message": "Vi er ikke sikre på, hvad der lige skete. Vil du prøve igen - eller vil du tage et skærmbillede af en anden side?"
   },
   "tourBodyOne": {
-    "message": "Tag, gem og del skærmbilleder uden at forlade Firefox. "
+    "message": "Tag, gem og del skærmbilleder uden at forlade Firefox."
   },
   "tourHeaderTwo": {
     "message": "Gem lige hvad du vil."
   },
   "tourBodyTwo": {
     "message": "Klik og træk for at tage et udklip af en del af en side. Du kan også holde markøren over for at fremhæve din markering."
   },
   "tourHeaderThree": {
--- a/browser/extensions/screenshots/webextension/_locales/de/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/de/messages.json
@@ -1,23 +1,23 @@
 {
   "addonDescription": {
-    "message": "Speichern Sie Ausschnitte und Bildschirmfotos von Webseiten, die Sie temporär oder dauerhaft speichern können."
+    "message": "Erstellen Sie Bildschirmfotos von vollständigen Webseiten oder Ausschnitten und speichern Sie diese temporär oder dauerhaft."
   },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
     "message": "Bildschirmfoto aufnehmen"
   },
   "myShotsLink": {
     "message": "Meine Bildschirmfotos"
   },
   "screenshotInstructions": {
-    "message": "Ziehen oder Klicken Sie auf der Seite, um einen Bereich auszuwählen. Drücken Sie ESC zum Abbrechen."
+    "message": "Ziehen oder klicken Sie auf der Seite, um einen Bereich auszuwählen. Drücken Sie ESC zum Abbrechen."
   },
   "saveScreenshotSelectedArea": {
     "message": "Speichern"
   },
   "saveScreenshotVisibleArea": {
     "message": "Sichtbaren Bereich speichern"
   },
   "saveScreenshotFullPage": {
@@ -54,24 +54,30 @@
   },
   "loginErrorDetails": {
     "message": "Ihr Bildschirmfoto konnte nicht gespeichert werden, weil ein Problem mit dem Dienst Firefox Screenshots aufgetreten ist. Bitte versuchen Sie es später erneut."
   },
   "unshootablePageErrorTitle": {
     "message": "Ein Bildschirmfoto dieser Seite ist nicht möglich."
   },
   "unshootablePageErrorDetails": {
-    "message": "Dies ist keine Standard-Webseite, daher sind keine Bildschirmfotos von ihr möglich."
+    "message": "Dies ist keine Standard-Webseite, deshalb sind keine Bildschirmfotos von ihr möglich."
   },
   "selfScreenshotErrorTitle": {
     "message": "Sie können kein Bildschirmfoto einer Firefox-Screenshots-Seite machen!"
   },
   "emptySelectionErrorTitle": {
     "message": "Ihr Auswahlbereich ist zu klein"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots ist im Privaten Modus deaktiviert"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Wir bitten um Entschuldigung für diese Unannehmlichkeiten. Wir arbeiten daran, diese Funktion in zukünftigen Versionen zur Verfügung zu stellen."
+  },
   "genericErrorTitle": {
     "message": "Firefox Screenshots funktioniert nicht richtig."
   },
   "genericErrorDetails": {
     "message": "Wir wissen auch nicht, was gerade passiert ist. Könnten Sie das Bildschirmfoto erneut oder auf einer anderen Seite aufnehmen?"
   },
   "tourBodyOne": {
     "message": "Bildschirmfotos aufnehmen, speichern und teilen, ohne Firefox zu verlassen."
--- a/browser/extensions/screenshots/webextension/_locales/dsb/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/dsb/messages.json
@@ -62,16 +62,22 @@
     "message": "To njejo standardny webbok, togodla foto wobrazowki wót njeje njejo móžne."
   },
   "selfScreenshotErrorTitle": {
     "message": "Njamóžośo wobrazowku boka Firefox Screenshots fotografěrowaś!"
   },
   "emptySelectionErrorTitle": {
     "message": "Waš wuběrk jo pśemały"
   },
+  "privateWindowErrorTitle": {
+    "message": "Firefox Screenshots jo w priwatnem modusu znjemóžnjony"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Wódajśo pšosym wobuznosći. Źěłamy na toś tej funkciji za pśichodne wersije."
+  },
   "genericErrorTitle": {
     "message": "Hopla! Firefox Screenshots njeźěła."
   },
   "genericErrorDetails": {
     "message": "Njejsmy se wěste, což jo se stało. Cośo hyšći raz wopytaś abo cośo drugi bok fotografěrowaś?"
   },
   "tourBodyOne": {
     "message": "Gótujśo, składujśo a źělśo fota wobrazowki mimo až Firefox spušćaśo."
--- a/browser/extensions/screenshots/webextension/_locales/el/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/el/messages.json
@@ -62,16 +62,22 @@
     "message": "Δεν μπορεί να γίνει λήψη στιγμιότυπου καθώς αυτή δεν είναι μια τυπική σελίδα του Διαδικτύου."
   },
   "selfScreenshotErrorTitle": {
     "message": "Δεν μπορεί να γίνει λήψη ενός στιγμιότυπου της σελίδας Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Η επιλογή σας είναι πολύ μικρή"
   },
+  "privateWindowErrorTitle": {
+    "message": "Το Screenshots είναι απενεργοποιημένο στη λειτουργία ιδιωτικής περιήγησης"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Λυπούμαστε για την ταλαιπωρία. Εργαζόμαστε πάνω σε αυτό το χαρακτηριστικό για μελλοντικές εκδόσεις."
+  },
   "genericErrorTitle": {
     "message": "Ωχ! Κάτι πήγε στραβά στην υπηρεσία Firefox Screenshots."
   },
   "genericErrorDetails": {
     "message": "Δεν είμαστε σίγουροι για το τι ακριβώς συνέβη. Προσπαθήστε ξανά ή κάντε λήψη σε μια άλλη σελίδα."
   },
   "tourBodyOne": {
     "message": "Λήψη, αποθήκευση και διαμοιρασμός στιγμιοτύπων μέσα από το Firefox."
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/eo/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "Prenu eltondaĵon aŭ faru ekrankopiojn de retpaĝoj kaj konservu ilin ĉu daŭre ĉu provizore."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Fari ekrankopion"
+  },
+  "myShotsLink": {
+    "message": "Miaj ekrankopioj"
+  },
+  "screenshotInstructions": {
+    "message": "Trenu aŭ alklaku sur la paĝo por elekti areon. Premu ESK por nuligi."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Konservi"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Konservi tion, kio videblas"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Konservi tutan paĝon"
+  },
+  "cancelScreenshot": {
+    "message": "Nuligi"
+  },
+  "downloadScreenshot": {
+    "message": "Elŝuti"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Ligilo kopiita"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "La ligilo al via ekrankopio estis kopiita al la tondujo. Premu $META_KEY$-V por alglui.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Ne funkcianta."
+  },
+  "requestErrorDetails": {
+    "message": "Bedaŭrinde ni ne povis konservi vian ekrankopion. Bonvolu klopodi denove poste."
+  },
+  "connectionErrorTitle": {
+    "message": "Ni ne povas konektiĝi al viaj ekrankopioj."
+  },
+  "connectionErrorDetails": {
+    "message": "Bonvolu kontroli vian retaliron. Se vi povas konektiĝi al la reto, eble estas provizora problemo kun la servo de Firefox Screenshots."
+  },
+  "loginErrorDetails": {
+    "message": "Ni ne povis konservi vian ekrankopion ĉar estis problemo kun la servo de Firefox Screenshots. Bonvolu klopodi denove poste."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Ni ne povas fari ekrankopion de tiu ĉi paĝo."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Tiu ĉi ne estas norma retpaĝo, do vi ne povas fari ekrankopion de ĝi."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Vi ne povas fari ekrankopion de paĝo de Firefox Screenshots!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Via elektita areo estas tro eta"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Ekrankopioj estas malaktivaj en la reĝimo de privata retumo"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Bonvolu pardoni la ĝenon. Ni prilaboras tiun ĉi trajton por venontaj eldonoj."
+  },
+  "genericErrorTitle": {
+    "message": "Ŭoo! Firefox Screenshots tute frenezis."
+  },
+  "genericErrorDetails": {
+    "message": "Ni ne tro certas, kio ĵus okazis. Ĉu vi povus klopodi denove aŭ fari ekrankopion de alia paĝo?"
+  },
+  "tourBodyOne": {
+    "message": "Faru, konservu kaj dividu ekrankopiojn sen forlasi Firefox."
+  },
+  "tourHeaderTwo": {
+    "message": "Kopiu nur tion, kion vi volas."
+  },
+  "tourBodyTwo": {
+    "message": "Alklaku kaj trenu por kopii nur parton de paĝo. Vi povas ankaŭ ŝvebi por elstarigi vian elekton."
+  },
+  "tourHeaderThree": {
+    "message": "Kapti fenestrojn aŭ tutaj paĝojn"
+  },
+  "tourBodyThree": {
+    "message": "Elektu la butonojn supre kaj dekstre por kapti la videblan areon en la fenestro aŭ por kapti tutan paĝon."
+  },
+  "tourHeaderFour": {
+    "message": "Kiel vi volas"
+  },
+  "tourBodyFour": {
+    "message": "Konservu vian eltonditajn ekrankopiojn en la reto, por pli facile dividi ilin, aŭ elŝutu ilin al via komputilo. Vi ankaŭ povas alklaki la butonon 'Miaj ekrankopioj' por trovi ĉiujn ekrankopiojn faritajn de vi."
+  },
+  "tourSkip": {
+    "message": "Pretersalti"
+  },
+  "tourNext": {
+    "message": "Venonta ekrano"
+  },
+  "tourPrevious": {
+    "message": "Antaŭa ekrano"
+  },
+  "tourDone": {
+    "message": "Farita"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Se vi uzas Firefox Screenshots, vi akceptas nian $TERMSANDPRIVACYNOTICETERMSLINK$ kaj $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "kondiĉojn"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "rimarkon pri privateco"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/es_AR/messages.json
@@ -28,52 +28,58 @@
   },
   "downloadScreenshot": {
     "message": "Descargar"
   },
   "notificationLinkCopiedTitle": {
     "message": "Enlace copiado"
   },
   "notificationLinkCopiedDetails": {
-    "message": "EL enlace a la captura ha sido copiado al portapapeles. Presioná $META_KEY$-V para pegar.",
+    "message": "El enlace a la captura ha sido copiado al portapapeles. Presioná $META_KEY$-V para pegar.",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
     "message": "No funciona."
   },
   "requestErrorDetails": {
     "message": "¡Perdón! No pudimos guardar la captura. Intentá más tarde."
   },
   "connectionErrorTitle": {
     "message": "No podemos conectar a las capturas de pantalla."
   },
   "connectionErrorDetails": {
-    "message": "Verificá la conexión a Internet. Si te podés conectar a Internet, hay un problema temporal con el servicio de capturas de Firefox."
+    "message": "Verificá la conexión a Internet. Si te podés conectar a Internet, hay un problema temporal con el servicio de Firefox Screenshots."
   },
   "loginErrorDetails": {
-    "message": "No pudimos guardar la captura porque hay un problema con el servicio de capturas de Firefox. Intentá más tarde."
+    "message": "No pudimos guardar la captura porque hay un problema con el servicio de Firefox Screenshots. Intentá más tarde."
   },
   "unshootablePageErrorTitle": {
     "message": "No podemos capturar esta página."
   },
   "unshootablePageErrorDetails": {
     "message": "Esta no es una página web estándar, así que no podemos guardar una captura."
   },
   "selfScreenshotErrorTitle": {
-    "message": "¡No se puede hacer una captura de la página de capturas de Firefox!"
+    "message": "¡No se puede hacer una captura de la página de Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "La selección es demasiado chica"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots está deshabilitado en el modo de navegación privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Lamentamos el inconveniente. Estamos trabajando en esta característica para versiones futuras."
+  },
   "genericErrorTitle": {
-    "message": "¡Apa! La capturas de pantalla de Firefox se volvieron locas."
+    "message": "¡Apa! Firefox Screenshots se volvió loco."
   },
   "genericErrorDetails": {
     "message": "No estamos seguros de lo que pasó. ¿Querés intenar de nuevo o tomar una captura de una página diferente?"
   },
   "tourBodyOne": {
     "message": "Hacer, guardar y compartir capturas de pantalla sin dejar Firefox."
   },
   "tourHeaderTwo": {
@@ -90,29 +96,29 @@
   },
   "tourHeaderFour": {
     "message": "Como te guste"
   },
   "tourBodyFour": {
     "message": "Guardá tus capturas recortadas a la web para compartir o descargarlas más fácilmente a tu computadora. También podés hacer clic en el botón Mis capturas para encontrar todas las capturas hechas."
   },
   "tourSkip": {
-    "message": "Saltear"
+    "message": "SALTEAR"
   },
   "tourNext": {
     "message": "Próxima diapositiva"
   },
   "tourPrevious": {
     "message": "Diapositiva anterior"
   },
   "tourDone": {
     "message": "Listo"
   },
   "termsAndPrivacyNoticeCloudServices": {
-    "message": "AL usar Firefox Screenshots, aceptás los $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de los servicios en la nube de Firefox.",
+    "message": "Al usar Firefox Screenshots, aceptás los $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de los servicios en la nube de Firefox.",
     "placeholders": {
       "termsandprivacynoticetermslink": {
         "content": "$1"
       },
       "termsandprivacynoticeprivacylink": {
         "content": "$2"
       }
     }
--- a/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/es_CL/messages.json
@@ -62,16 +62,22 @@
     "message": "Esta no es una página Web estándar, por lo que no puedes tomar una captura de ella."
   },
   "selfScreenshotErrorTitle": {
     "message": "¡No puedes tomar una captura de una página de Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Tu selección es muy pequeña"
   },
+  "privateWindowErrorTitle": {
+    "message": "Firefox Screenshots está desactivado en el modo de navegación privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Disculpa las molestias. Estamos trabajando en esta función para una futura versión."
+  },
   "genericErrorTitle": {
     "message": "¡Guau! Firefox Screenshots se copetió."
   },
   "genericErrorDetails": {
     "message": "No estamos seguros de lo que sucedió. ¿Te importaría volver a intentarlo o tomar una captura de una página diferente?"
   },
   "tourBodyOne": {
     "message": "Toma, guarda y comparte capturas sin salir de Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/es_ES/messages.json
@@ -48,32 +48,38 @@
   },
   "connectionErrorTitle": {
     "message": "No podemos acceder a tus capturas de pantalla."
   },
   "connectionErrorDetails": {
     "message": "Comprueba tu conexión a Internet. Si puedes conectarte, puede que haya un problema temporal con el servicio de capturas de pantalla de Firefox."
   },
   "loginErrorDetails": {
-    "message": "No se pudo guardar la captura porque hay un problema con el servicio de capturas de pantalla de Firefox. Inténtalo más tarde."
+    "message": "No se pudo guardar la captura porque hay un problema con el servicio Firefox Screenshots. Inténtalo más tarde."
   },
   "unshootablePageErrorTitle": {
     "message": "No podemos hacer una captura de esta página."
   },
   "unshootablePageErrorDetails": {
     "message": "No es una página web común, por lo que no podemos hacer captura de pantalla."
   },
   "selfScreenshotErrorTitle": {
-    "message": "¡No puedes hacer una captura de la página de capturas de Firefox!"
+    "message": "¡No puedes hacer una captura de la página de Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Tu selección es demasiado pequeña"
   },
+  "privateWindowErrorTitle": {
+    "message": "Firefox Screenshots está desactivado en el modo de navegación privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Sentimos las molestias. Estamos trabajando en esta característica para próximos lanzamientos."
+  },
   "genericErrorTitle": {
-    "message": "¡Vaya! La página de capturas de pantalla de Firefox se ha vuelto loca."
+    "message": "¡Vaya! Firefox Screenshots se ha vuelto loco."
   },
   "genericErrorDetails": {
     "message": "No estamos seguros de lo que acaba de pasar. ¿Te importa volver a intentarlo o hacer una captura de otra página?"
   },
   "tourBodyOne": {
     "message": "Hacer, guardar y compartir capturas de pantalla sin salir de Firefox."
   },
   "tourHeaderTwo": {
--- a/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/es_MX/messages.json
@@ -62,16 +62,22 @@
     "message": "Esta no es una página web estándar, por lo tanto no podemos tomar una captura de pantalla de ella."
   },
   "selfScreenshotErrorTitle": {
     "message": "¡No puedes tomar una captura de la página de capturas de pantalla de Firefox!"
   },
   "emptySelectionErrorTitle": {
     "message": "Tu selección es demasiado pequeña"
   },
+  "privateWindowErrorTitle": {
+    "message": "La captura de pantalla está deshabilitada en el modo navegación privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Disculpen las molestias. Estamos trabajando en esta característica para las versiones futuras."
+  },
   "genericErrorTitle": {
     "message": "¡Oye! Las capturas de pantalla de Firefox salieron mal."
   },
   "genericErrorDetails": {
     "message": "No estamos seguros qué pasó. ¿Te importaría intentarlo de nuevo o tomar una captura de una página diferente?"
   },
   "tourBodyOne": {
     "message": "Toma, guarda y comparte capturas de pantalla sin dejar Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/et/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/et/messages.json
@@ -62,16 +62,22 @@
     "message": "Tegemist pole standardse veebilehega, seetõttu ei saa sellest ekraanipilti teha."
   },
   "selfScreenshotErrorTitle": {
     "message": "Firefox Screenshots lehest ei saa ekraanipilti teha!"
   },
   "emptySelectionErrorTitle": {
     "message": "Valik on liiga väike"
   },
+  "privateWindowErrorTitle": {
+    "message": "Ekraanipilte ei saa privaatsel veebilehitsemisel teha"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Vabandame tüli tekitamise pärast. Töötame selle võimaluse lisamiseks tulevikus."
+  },
   "genericErrorTitle": {
     "message": "Oi-oi! Firefox Screenshots läks sassi."
   },
   "genericErrorDetails": {
     "message": "Me pole kindlad, mis just juhtus. Proovid ehk uuesti või teed ekraanipildi mõnest teisest lehest?"
   },
   "tourBodyOne": {
     "message": "Tee, salvesta ja jaga ekraanipilte Firefoxist lahkumata."
--- a/browser/extensions/screenshots/webextension/_locales/fa/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/fa/messages.json
@@ -62,16 +62,22 @@
     "message": "این یک صفحه استاندارد وب نیست، بنابراین شما نمی‌توانید از آن تصویر بگیرید."
   },
   "selfScreenshotErrorTitle": {
     "message": "نمی‌توانید از صفحهٔ تصاویرِ فایرفاکس عکس بگیرید!"
   },
   "emptySelectionErrorTitle": {
     "message": "انتخاب شما خیلی کوچک است"
   },
+  "privateWindowErrorTitle": {
+    "message": "در حالت مرور خصوصی تصاویرصفحه غیرفعال است"
+  },
+  "privateWindowErrorDetails": {
+    "message": "به خاطر مزاحمت متاسفیم. ما در حال کار روی این ویژگی برای انتشار‌های آینده هستیم."
+  },
   "genericErrorTitle": {
     "message": "اوه! سرویس تصاویر صفحه فایرفاکس قاطی کرده."
   },
   "genericErrorDetails": {
     "message": "مطمئن نیستیم چه اتفاقی افتاده است. می‌خواهید دوباره امتحان کنید یا از یک صفحهٔ دیگر عکس بگیرید؟"
   },
   "tourBodyOne": {
     "message": "بدون خارج شدن از فایرفاکس، عکس بگیرید، ذخیره کنید و به اشتراک بگذارید."
--- a/browser/extensions/screenshots/webextension/_locales/fi/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/fi/messages.json
@@ -13,17 +13,17 @@
   },
   "screenshotInstructions": {
     "message": "Valitse alue vetämällä tai napsauttamalla sivua. Peruuta painamalla ESC."
   },
   "saveScreenshotSelectedArea": {
     "message": "Tallenna"
   },
   "saveScreenshotVisibleArea": {
-    "message": "Tallenna näkyvä osuus"
+    "message": "Tallenna näkyvä alue"
   },
   "saveScreenshotFullPage": {
     "message": "Tallenna koko sivu"
   },
   "cancelScreenshot": {
     "message": "Peruuta"
   },
   "downloadScreenshot": {
@@ -59,36 +59,45 @@
     "message": "Tästä sivusta ei voi ottaa kuvaa."
   },
   "unshootablePageErrorDetails": {
     "message": "Tämä ei ole tavallinen verkkosivu, joten et voi ottaa kuvaa siitä."
   },
   "selfScreenshotErrorTitle": {
     "message": "Et voi ottaa kuvaa Firefox Screenshots -sivusta!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "Valinta on liian pieni"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots ei ole käytettävisssä yksityisen selauksen tilassa"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Anteeksi häiriö. Tämä ominaisuus on vielä työn alla."
+  },
   "genericErrorTitle": {
     "message": "Oho! Firefox Screenshots meni päin prinkkalaa."
   },
   "genericErrorDetails": {
     "message": "Emme oikein tiedä, mitä tapahtui. Haluatko yrittää uudestaan tai ottaa kuvan eri sivusta?"
   },
   "tourBodyOne": {
     "message": "Ota, tallenna ja jaa kuvakaappaus poistumatta Firefoxista."
   },
   "tourHeaderTwo": {
     "message": "Kaappaa mitä haluat"
   },
   "tourBodyTwo": {
     "message": "Kaappaa vain osa sivusta napsauttamalla ja vetämällä. Voit myös korostaa valinnan pitämällä hiirtä sen päällä."
   },
   "tourHeaderThree": {
-    "message": "Kaappaa ikkunoita tai kokonaisia sivuja"
+    "message": "Kaappaa näkyvä alue tai kokonainen sivu"
   },
   "tourBodyThree": {
-    "message": "Valitse oikean yläkulman painikkeista joko ikkunassa näkyvän alueen kaappaus tai koko sivun kaappaus."
+    "message": "Valitse oikean yläkulman painikkeista joko ikkunassa näkyvän alueen tai koko sivun kaappaus."
   },
   "tourHeaderFour": {
     "message": "Haluamallasi tavalla"
   },
   "tourBodyFour": {
     "message": "Tallenna rajaamasi kuvat verkkoon helpompaa jakamista varten tai lataa ne tietokoneellesi. Voit myös napsauttaa Omat kaappaukset -painiketta ja nähdä kaikki ottamasi kuvat."
   },
   "tourSkip": {
--- a/browser/extensions/screenshots/webextension/_locales/fr/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/fr/messages.json
@@ -7,17 +7,17 @@
   },
   "contextMenuLabel": {
     "message": "Effectuer une capture d’écran"
   },
   "myShotsLink": {
     "message": "Mes captures d’écran"
   },
   "screenshotInstructions": {
-    "message": "Sélectionnez une zone de la page par cliquer-glisser ou en cliquant sur l’élément à sélectionner. Appuyez sur Échap pour annuler."
+    "message": "Sélectionnez une zone de la page par cliquer-glisser. Appuyez sur Échap pour annuler."
   },
   "saveScreenshotSelectedArea": {
     "message": "Enregistrer"
   },
   "saveScreenshotVisibleArea": {
     "message": "Capturer la zone visible"
   },
   "saveScreenshotFullPage": {
@@ -62,16 +62,22 @@
     "message": "Impossible d’effectuer une capture d’écran, car cette page web n’est pas standard."
   },
   "selfScreenshotErrorTitle": {
     "message": "Vous ne pouvez pas effectuer une capture d’écran d’une page Firefox Screenshots."
   },
   "emptySelectionErrorTitle": {
     "message": "La zone sélectionnée est trop petite"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots est désactivé en mode de navigation privée"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Désolé pour la gêne occasionnée. Nous travaillons sur cette fonctionnalité pour de prochaines versions."
+  },
   "genericErrorTitle": {
     "message": "Firefox Screenshots semble avoir un problème."
   },
   "genericErrorDetails": {
     "message": "Un problème non identifié est survenu. Vous pouvez réessayer ou effectuer une capture d’écran d’une autre page."
   },
   "tourBodyOne": {
     "message": "Effectuez des captures d’écran, enregistrez et partagez-les sans quitter Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/fy_NL/messages.json
@@ -62,16 +62,22 @@
     "message": "Dit is net in standert webside, dus jo kinne der net in skermprintsje fan meitsje."
   },
   "selfScreenshotErrorTitle": {
     "message": "Jo kinne net in skermprintsje meitsje fan in Firefox Screenshots-side!"
   },
   "emptySelectionErrorTitle": {
     "message": "Jo seleksje is te lyts"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots is útskeakele yn Priveenavigaasjemodus"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Sorry foar it ûngemak. Foar takomstige útjeften wurdt oan dizze funksje wurke."
+  },
   "genericErrorTitle": {
     "message": "Oeps! Firefox Screenshots is yn 'e war."
   },
   "genericErrorDetails": {
     "message": "Wy binne net wis wat der krekt bard is. Wolle jo it nochris probearje of in skermprintsje fan in oare side meitsje?"
   },
   "tourBodyOne": {
     "message": "Meitsje, bewarje en diel skermprintsjes sûnder Firefox te ferlitten."
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/ga_IE/messages.json
@@ -0,0 +1,118 @@
+{
+  "addonDescription": {
+    "message": "Glac gearrthóga agus gabhálacha scáileáin ón Ghréasán agus sábháil iad, go sealadach nó go buan."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Glac Gabháil Scáileáin"
+  },
+  "myShotsLink": {
+    "message": "Mo Chuid Gabhálacha"
+  },
+  "screenshotInstructions": {
+    "message": "Tarraing nó cliceáil ar an leathanach chun réigiún a roghnú. Brúigh ESC le cealú."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Sábháil"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Sábháil an réigiún infheicthe"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Sábháil an leathanach iomlán"
+  },
+  "cancelScreenshot": {
+    "message": "Cealaigh"
+  },
+  "downloadScreenshot": {
+    "message": "Íoslódáil"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Cóipeáladh an Nasc"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "Cóipeáladh nasc leis an ngabháil go dtí an ghearrthaisce. Brúigh $META_KEY$-V lena ghreamú.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Tá rud éigin as alt."
+  },
+  "requestErrorDetails": {
+    "message": "Ár leithscéal! Theip orainn an ghabháil a shábháil. Bain triail eile as ar ball."
+  },
+  "connectionErrorTitle": {
+    "message": "Ní féidir linn ceangal le do chuid gabhálacha."
+  },
+  "connectionErrorDetails": {
+    "message": "Deimhnigh go bhfuil tú ceangailte leis an Idirlíon. Mura bhfuil tú ceangailte, ní bheidh tú in ann úsáid a bhaint as seirbhís Gabhálacha Scáileáin Firefox."
+  },
+  "loginErrorDetails": {
+    "message": "Níorbh fhéidir linn an ghabháil scáileáin a shábháil toisc gur tharla earráid le seirbhís Gabhálacha Scáileáin Firefox. Bain triail eile as ar ball."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Ní féidir linn gabháil scáileáin a ghlacadh ar an leathanach seo."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Ní féidir gabháil scáileáin a ghlacadh toisc nach gnáthleathanach Gréasáin é seo."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Ní féidir leat gabháil scáileáin a ghlacadh ar leathanach Gabhálacha Scáileáin Firefox!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Roghnaigh tú réigiún róbheag"
+  },
+  "genericErrorTitle": {
+    "message": "Úps! Tá Gabhálacha Scáileáin Firefox imithe sa fhraoch."
+  },
+  "genericErrorDetails": {
+    "message": "Nílimid cinnte cad a tharla. An bhfuil fonn ort triail eile a bhaint as, nó gabháil scáileáin eile a ghlacadh?"
+  },
+  "tourBodyOne": {
+    "message": "Glac, sábháil, agus comhroinn gabhálacha scáileáin gan Firefox a fhágáil."
+  },
+  "tourHeaderTwo": {
+    "message": "An rud atá uait a ghabháil"
+  },
+  "tourBodyTwo": {
+    "message": "Cliceáil agus tarraing le cuid de leathanach a ghabháil. Nó is féidir leat an luch a chur os cionn an réigiúin le gabháil."
+  },
+  "tourHeaderThree": {
+    "message": "Fuinneoga nó leathanaigh iomlána a ghabháil"
+  },
+  "tourBodyThree": {
+    "message": "Úsáid na cnaipí ag barr na fuinneoige ar dheis chun an réigiún infheicthe san fhuinneog a ghabháil, nó an leathanach iomlán."
+  },
+  "tourHeaderFour": {
+    "message": "Go díreach mar is áil leat"
+  },
+  "tourBodyFour": {
+    "message": "Is féidir leat gabhálacha a bhearradh agus a shábháil ar an nGréasán, nó iad a íoslódáil ar do ríomhaire. Is féidir teacht orthu go léir leis an gcnaipe Mo Chuid Gabhálacha."
+  },
+  "tourSkip": {
+    "message": "NÁ BAC LEIS"
+  },
+  "tourNext": {
+    "message": "An chéad sleamhnán eile"
+  },
+  "tourPrevious": {
+    "message": "An sleamhnán roimhe seo"
+  },
+  "tourDone": {
+    "message": "Críochnaithe"
+  },
+  "termsAndPrivacyNotice2": {
+    "message": "Má úsáideann tú Gabhálacha Scáileáin Firefox, glacann tú leis na {termsAndPrivacyNoticeTermsLink} agus leis an {termsAndPrivacyNoticePrivacyLink}."
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "Téarmaí"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "bhFógra Príobháideachais"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/gu_IN/messages.json
@@ -59,16 +59,25 @@
     "message": "અમે આ પૃષ્ઠ સ્ક્રીનશૉટ ન કરી શકીએ."
   },
   "unshootablePageErrorDetails": {
     "message": "આ એક પ્રમાણભૂત વેબ પૃષ્ઠ, જેથી તમે તેને એક સ્ક્રીનશૉટ ન લઈ શકો."
   },
   "selfScreenshotErrorTitle": {
     "message": "તમે પૃષ્ઠના Firefox સ્ક્રીનશોટ્સ શોટ લઇ શકો નહિ!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "તમારી પસંદગી ખૂબ નાની છે"
+  },
+  "privateWindowErrorTitle": {
+    "message": "ખાનગી બ્રાઉઝિંગ મોડમાં સ્ક્રીનશોટ અક્ષમ કરેલ છે"
+  },
+  "privateWindowErrorDetails": {
+    "message": "અસુવીધી બદલ માફી. અમે ભવિષ્યના પ્રકાશનો માટે આ સુવિધા પર કામ કરી રહ્યા છીએ."
+  },
   "genericErrorTitle": {
     "message": "થોભો! Firefox સ્ક્રીનશોટ્સ અવ્યવસ્થિત થઈ ગયા."
   },
   "genericErrorDetails": {
     "message": "અમે ખાતરી નથીકે શું માત્ર થયું છે . ફરી પ્રયાસ કરો અથવા એક અલગ પૃષ્ઠ એક શોટ લેવા માટે કાળજી કરો?"
   },
   "tourBodyOne": {
     "message": "લેવા, સાચવેલા, અને વહેંચાયેલ સ્ક્રીનશૉટ્સ Firefox છોડ્યાં વિના."
--- a/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/hi_IN/messages.json
@@ -59,16 +59,25 @@
     "message": "हम इस पृष्ठ का स्क्रीनशॉट नहीं ले सकते."
   },
   "unshootablePageErrorDetails": {
     "message": "यह एक मानक वेब पेज नहीं है, इसलिए आप इसका स्क्रीनशॉट नहीं ले सकते."
   },
   "selfScreenshotErrorTitle": {
     "message": "आप एक Firefox स्क्रीनशॉट पृष्ठ का शॉट नहीं ले सकते!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "आपका चयन बहुत छोटा है"
+  },
+  "privateWindowErrorTitle": {
+    "message": "निजी ब्राउज़िंग मोड में स्क्रीनशॉट निष्क्रिय कर दिया गया हैं"
+  },
+  "privateWindowErrorDetails": {
+    "message": "असुविधा के लिए खेद हैं. हमलोग भविष्य संस्करण के लिए इस सुविधा पर काम कर रहे हैं."
+  },
   "genericErrorTitle": {
     "message": "ओह! Firefox स्क्रीनशॉट बिगड़ गया."
   },
   "genericErrorDetails": {
     "message": "हम सुनिश्चित नहीं हैं कि अभी क्या हुआ. पुन: प्रयास या एक भिन्न पृष्ठ का एक शॉट लेना चाहते हैं?"
   },
   "tourBodyOne": {
     "message": "Firefox छोड़े बिना स्क्रीनशॉट लें, सहेजें, और साझा करें."
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/hr/messages.json
@@ -0,0 +1,115 @@
+{
+  "addonDescription": {
+    "message": "Snimite ili slikajte stvari s Weba te ih spremite privremeno ili trajno."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.org>"
+  },
+  "contextMenuLabel": {
+    "message": "Snimi zaslon"
+  },
+  "myShotsLink": {
+    "message": "Moje snimke"
+  },
+  "screenshotInstructions": {
+    "message": "Povucite ili kliknite na stranicu kako biste izabrali područje. Pritisnite ESC za otkazivanje radnje."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Spremi"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Spremi vidljivo"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Spremi cijelu stranicu"
+  },
+  "cancelScreenshot": {
+    "message": "Otkaži"
+  },
+  "downloadScreenshot": {
+    "message": "Preuzmi"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Poveznica je kopirana"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "Poveznica do vaše snimke je kopirana u međuspremnik. Pristinite $META_KEY$-V da ju zalijepite.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Ne radi."
+  },
+  "requestErrorDetails": {
+    "message": "Ups! Nismo uspjeli spremiti vašu snimku. Molimo pokušajte ponovo kasnije."
+  },
+  "connectionErrorTitle": {
+    "message": "Ne možemo se spojiti s vašim snimkama."
+  },
+  "connectionErrorDetails": {
+    "message": "Molimo provjerite vašu internet vezu. Ako ste uspješno povezani s internetom, možda postoji privremeni problem sa uslugama Firefox Screenshots."
+  },
+  "loginErrorDetails": {
+    "message": "Nismo uspjeli spremiti vaš snimak zbog toga što postoji problem sa uslugama Firefox Screenshots. Molimo pokušajte kasnije."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Ovu stranicu ne možemo snimiti."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Ovo nije standardna Web stranica stoga ju ne možete snimiti."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Ne možete snimiti Firefox Screenshots stranicu!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Vaš odabir je premalen"
+  },
+  "genericErrorTitle": {
+    "message": "Uf! Firefox Screenshots se zbrkao."
+  },
+  "genericErrorDetails": {
+    "message": "Nismo sigurno što se upravo dogodilo. Možete li pokušati ponovno ili snimiti drukčiju stranicu?"
+  },
+  "tourBodyOne": {
+    "message": "Snimite, spremite i dijelite snimke bez da napuštate Firefox."
+  },
+  "tourHeaderTwo": {
+    "message": "Snimite ono što želite"
+  },
+  "tourBodyTwo": {
+    "message": "Kliknite i povucite ako želite snimiti samo dio stranice. Također možete označiti vaš odabir tako da preko njega stavite pokazivač miša."
+  },
+  "tourHeaderThree": {
+    "message": "Baš kako vam se sviđa"
+  },
+  "tourBodyThree": {
+    "message": "Spremite vaše odrezane snimke na Web kako biste ih jednostavnije dijelili, ili ih jednostavno skinite na vaše računalo. Također možete kliknuti gumb Moje snimke kako biste pronašli sve vaše dosadašnje snimke."
+  },
+  "tourHeaderFour": {
+    "message": "Snimajte prozore ili cijele stranice"
+  },
+  "tourBodyFour": {
+    "message": "Odaberite gumbove na gornjem desnom kutu kako biste snimili vidljivo područje u prozoru ili cijelu stranicu."
+  },
+  "tourSkip": {
+    "message": "PRESKOČI"
+  },
+  "tourNext": {
+    "message": "Sljedeći slajd"
+  },
+  "tourPrevious": {
+    "message": "Prijašnji slajd"
+  },
+  "tourDone": {
+    "message": "Gotovo"
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "Uvjeti"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "Pravila o privatnosti"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/hsb/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/hsb/messages.json
@@ -62,16 +62,22 @@
     "message": "To standardna webstrona njeje, tohodla foto wobrazowki wot njeje móžne njeje."
   },
   "selfScreenshotErrorTitle": {
     "message": "Njemóžeće wobrazowku strony Firefox Screenshots fotografować!"
   },
   "emptySelectionErrorTitle": {
     "message": "Waš wuběr je přemały"
   },
+  "privateWindowErrorTitle": {
+    "message": "Firefox Screenshots je w priwatnym modusu znjemóžnjeny"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Wodajće prošu njepřijomnosće. Dźěłamy na tutej funkciji za přichodne wersije."
+  },
   "genericErrorTitle": {
     "message": "Hopla! Firefox Screenshots njefunguje."
   },
   "genericErrorDetails": {
     "message": "Njejsmy sej wěsći, štož je so stało. Chceće hišće raz spytać abo chceće druhu stronu fotografować?"
   },
   "tourBodyOne": {
     "message": "Čińće, składujće a dźělće fota wobrazowki bjez toho, zo byšće Firefox wopušćił."
--- a/browser/extensions/screenshots/webextension/_locales/hu/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/hu/messages.json
@@ -57,23 +57,29 @@
   },
   "unshootablePageErrorTitle": {
     "message": "Nem lehet képet készíteni erről a lapról."
   },
   "unshootablePageErrorDetails": {
     "message": "Ez egy nem szabványos weblap, így nem készíthet róla képernyőképet."
   },
   "selfScreenshotErrorTitle": {
-    "message": "Nem készíthet képet a Firefox képernyőképek oldalról!"
+    "message": "Nem készíthet képet a Firefox Screenshots oldalról!"
   },
   "emptySelectionErrorTitle": {
     "message": "A kijelölés túl kicsi"
   },
+  "privateWindowErrorTitle": {
+    "message": "A képernyőképek le vannak tiltva Privát böngészésben"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Sajnáljuk a kényelmetlenséget. Dolgozunk ezen a funkción a jövőbeli kiadásokhoz."
+  },
   "genericErrorTitle": {
-    "message": "Húha! A Firefox képernyőképek megkergült."
+    "message": "Húha! A Firefox Screenshots megkergült."
   },
   "genericErrorDetails": {
     "message": "Nem vagyunk benne biztosak, hogy mi történt. Próbálja újra, vagy készítsen képet egy másik oldalról."
   },
   "tourBodyOne": {
     "message": "Készítsen, mentsen és osszon meg képernyőképeket, anélkül, hogy elhagyná a Firefoxot."
   },
   "tourHeaderTwo": {
@@ -113,14 +119,14 @@
         "content": "$1"
       },
       "termsandprivacynoticeprivacylink": {
         "content": "$2"
       }
     }
   },
   "termsAndPrivacyNoticeTermsLink": {
-    "message": "Feltételeibe"
+    "message": "Feltételekbe"
   },
   "termsAndPrivacyNoticyPrivacyLink": {
-    "message": "Adatvédelmi nyilatkozatába"
+    "message": "Adatvédelmi nyilatkozatba"
   }
 }
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/id/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/id/messages.json
@@ -62,16 +62,22 @@
     "message": "Ini bukan laman Web yang standar, sehingga Anda tidak dapat membuat tangkapan dari layar ini."
   },
   "selfScreenshotErrorTitle": {
     "message": "Anda tidak dapat merekam gambar dari laman Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Seleksi Anda terlalu kecil"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots dinonaktifkan di Mode Penjelajahan Pribadi"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Maaf atas ketidaknyamanannya. Kami sedang mengerjakan fitur ini untuk peluncuran masa mendatang."
+  },
   "genericErrorTitle": {
     "message": "Wah! Firefox Screenshots mendadak kacau."
   },
   "genericErrorDetails": {
     "message": "Kami tidak yakin akan apa yang terjadi. Ingin mencoba lagi atau merekam gambar dari laman yang berbeda?"
   },
   "tourBodyOne": {
     "message": "Ambil, simpan, dan bagikan tangkapan layar tanpa meninggalkan Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/it/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/it/messages.json
@@ -25,17 +25,17 @@
   },
   "cancelScreenshot": {
     "message": "Annulla"
   },
   "downloadScreenshot": {
     "message": "Scarica"
   },
   "notificationLinkCopiedTitle": {
-    "message": "Link aggiunto agli appunti"
+    "message": "Link copiato"
   },
   "notificationLinkCopiedDetails": {
     "message": "Il link all’immagine è stato copiato negli appunti. Utilizza $META_KEY$-V per incollarlo.",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
@@ -62,16 +62,22 @@
     "message": "Non è possibile salvare uno screenshot in quanto non si tratta di una normale pagina web."
   },
   "selfScreenshotErrorTitle": {
     "message": "Non è possibile salvare uno screenshot di una pagina di Firefox Screenshots"
   },
   "emptySelectionErrorTitle": {
     "message": "L’area selezionata è troppo piccola"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots è disattivato in navigazione anonima."
+  },
+  "privateWindowErrorDetails": {
+    "message": "Ci dispiace per l’inconveniente. Stiamo lavorando a questa funzione per le prossime versioni."
+  },
   "genericErrorTitle": {
     "message": "Wow! Firefox Screenshots è andato in tilt"
   },
   "genericErrorDetails": {
     "message": "Non sappiamo che cosa sia successo. Riprova, magari con una pagina diversa."
   },
   "tourBodyOne": {
     "message": "Cattura, salva e condividi screenshot senza mai uscire da Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/ja/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ja/messages.json
@@ -28,31 +28,31 @@
   },
   "downloadScreenshot": {
     "message": "ダウンロード"
   },
   "notificationLinkCopiedTitle": {
     "message": "リンクをコピーしました"
   },
   "notificationLinkCopiedDetails": {
-    "message": "ショットへのリンクがクリップボードにコピーされました。$META_KEY$+V キーで貼り付けられます。",
+    "message": "ショットへのリンクがクリップボードへコピーされました。$META_KEY$+V キーで貼り付けられます。",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
     "message": "問題が発生しました。"
   },
   "requestErrorDetails": {
     "message": "申し訳ありませんが、ショットを保存できませんでした。また後で試してください。"
   },
   "connectionErrorTitle": {
-    "message": "スクリーンショットへ接続できません。"
+    "message": "Screenshots ライブラリへ接続できません。"
   },
   "connectionErrorDetails": {
     "message": "お使いのインターネット接続を確認してください。インターネットへ接続できる場合は、Firefox Screenshots サービスに一時的な問題が発生しているものと思われます。"
   },
   "loginErrorDetails": {
     "message": "Firefox Screenshots サービスに問題があるため、ショットを保存できませんでした。また後で試してください。"
   },
   "unshootablePageErrorTitle": {
@@ -62,36 +62,42 @@
     "message": "これは通常のウェブページでないため、スクリーンショットを撮ることができません。"
   },
   "selfScreenshotErrorTitle": {
     "message": "Firefox Screenshots ページのショットは撮れません。"
   },
   "emptySelectionErrorTitle": {
     "message": "選択範囲が小さすぎます"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots はプライベートブラウジングモードでは使用できません"
+  },
+  "privateWindowErrorDetails": {
+    "message": "ご不便をおかけして申し訳ありません。今後のリリースでこの機能を提供できるよう取り組んでいます。"
+  },
   "genericErrorTitle": {
     "message": "Firefox Screenshots に問題が発生しました。"
   },
   "genericErrorDetails": {
     "message": "何か問題が発生したようです。再度試すか、別のページのショットを撮ってみてください。"
   },
   "tourBodyOne": {
     "message": "Firefox を離れることなく、スクリーンショットを撮影、保存、共有。"
   },
   "tourHeaderTwo": {
-    "message": "必要なものだけをキャプチャー"
+    "message": "必要な部分だけをキャプチャ"
   },
   "tourBodyTwo": {
-    "message": "クリック&ドラッグでページの一部だけをキャプチャーできます。また、マウスを当てれば選択範囲が強調表示されます。"
+    "message": "クリック&ドラッグでページの一部だけをキャプチャできます。また、マウスを当てれば選択範囲が強調表示されます。"
   },
   "tourHeaderThree": {
-    "message": "ウィンドウもしくはページ全体をキャプチャー"
+    "message": "ウィンドウもしくはページ全体をキャプチャ"
   },
   "tourBodyThree": {
-    "message": "右上のボタンを選択して、ウィンドウ内の表示範囲もしくはページ全体をキャプチャーしましょう。"
+    "message": "右上のボタンを選択して、ウィンドウ内の表示範囲もしくはページ全体をキャプチャしましょう。"
   },
   "tourHeaderFour": {
     "message": "お好きなように"
   },
   "tourBodyFour": {
     "message": "切り取ったショットを簡単に共有できるようウェブ上に保存したり、手元へダウンロードしたり。また「自分のショット」ボタンをクリックすれば、これまでに撮ったすべてのショットを見られます。"
   },
   "tourSkip": {
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/ka/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "გადაუღეთ ვიდეოები ან სურათები ვებ-გვერდებს და შეინახეთ დროებით ან მუდმივად."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "ეკრანისთვის სურათის გადაღება"
+  },
+  "myShotsLink": {
+    "message": "ჩემი გადაღებულები"
+  },
+  "screenshotInstructions": {
+    "message": "გადაადგილეთ ან დააწკაპეთ გვერდზე არეალის მოსანიშნად. გასაუქმებლად დააჭირეთ ESC-ს."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "შენახვა"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "ხილული ნაწილის შენახვა"
+  },
+  "saveScreenshotFullPage": {
+    "message": "მთლიანი გვერდის შენახვა"
+  },
+  "cancelScreenshot": {
+    "message": "გაუქმება"
+  },
+  "downloadScreenshot": {
+    "message": "ჩამოტვირთვა"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "ბმული დაკოპირებულია"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "თქვენი სურათის ბმული დაკოპირებულია. ჩასმისთვის დააწექით $META_KEY$-V.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "გაფუჭებულია."
+  },
+  "requestErrorDetails": {
+    "message": "ვწუხვარ! გადაღებული სურათის შენახვა ვერ ხერხდება. მოგვიანებით სცადეთ."
+  },
+  "connectionErrorTitle": {
+    "message": "თქვენს გადაღებულ სურათებთან კავშირი ვერ ხერხდება."
+  },
+  "connectionErrorDetails": {
+    "message": "გთხოვთ შეამოწმოთ ქსელთან კავშირი. თუ ინტერნეტში თავისუფლად გადიხართ, ე.ი. Firefox Screenshot-ის მომსახურებას აქვს დროებითი პრობლემა."
+  },
+  "loginErrorDetails": {
+    "message": "თქვენი სურათის შენახვა ვერ ხერხდება, რადგან შეფერხებაა Firefox Screenshots მომსახურებასთან დაკავშირებით. გთხოვთ, სცადოთ მოგვიანებით."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "ამ გვერდისთვის სურათის გადაღება ვერ ხერხდება."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "ეს არ არის ჩვეულებრივი ვებ-გვერდი, ამიტომაც შეუძლებელია სურათის გადაღება."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Firefox Screenshots-ის გვერდისთვის სურათის გადაღება არ შეგიძლიათ!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "შერჩეული არეალი ძალიან პატარაა"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots გათიშულია პირადი თვალიერების რეჟიმისას"
+  },
+  "privateWindowErrorDetails": {
+    "message": "ბოდიშს გიხდით გაუგებრობის გამო. ჩვენ ვმუშაობთ ამ შესაძლებლობის დამატებაზე, სამომავლო ვერსიებში."
+  },
+  "genericErrorTitle": {
+    "message": "ვაი! Firefox Screenshots მწყობრიდან გამოვიდა."
+  },
+  "genericErrorDetails": {
+    "message": "გაუგებარია რა მოხდა. ისევ ცდით ხელახლა თუ სხვა ვებ-გვერდს გადაუღებთ სურათს?"
+  },
+  "tourBodyOne": {
+    "message": "გადაიღეთ, შეინახეთ და გააზიარეთ ეკრანის სურათები Firefox-იდან გაუსვლელად."
+  },
+  "tourHeaderTwo": {
+    "message": "გადაუღეთ სურათი რასაც გინდათ"
+  },
+  "tourBodyTwo": {
+    "message": "გადაადგილეთ ან დააწკაპეთ გვერდზე გადასაღები ნაწილის შესარჩევად. ასევე, კურსორის გადატარებით შეგიძლიათ მონიშნოთ სასურველი არეალი."
+  },
+  "tourHeaderThree": {
+    "message": "გადაუღეთ სურათები ფანჯრებს ან მთლიან ვებ-გვერდებს"
+  },
+  "tourBodyThree": {
+    "message": "მარჯვენა ზედა კუთხეში არსებული ღილაკების საშუალებით, შეგიძლიათ გადაუღოთ სურათი ხილულ ნაწილს, ან მთლიან გვერდს."
+  },
+  "tourHeaderFour": {
+    "message": "როგორც გენებოთ"
+  },
+  "tourBodyFour": {
+    "message": "ამოჭრილი სურათების შენახვა შეგიძლიათ ინტერნეტში, მარტივად გასაზიარებლად, ან შეგიძლიათ კომპიუტერში ჩამოტვირთვა. ასევე, ღილაკზე \"ჩემი გადაღებულები\" დაწკაპებით, იხილავთ თქვენს მიერ გადაღებულ ყველა სურათს."
+  },
+  "tourSkip": {
+    "message": "გამოტოვება"
+  },
+  "tourNext": {
+    "message": "შემდეგი"
+  },
+  "tourPrevious": {
+    "message": "წინა"
+  },
+  "tourDone": {
+    "message": "მზადაა"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Firefox Screenshots-ის გამოყენებით, თქვენ ეთანხმებით $TERMSANDPRIVACYNOTICETERMSLINK$ და $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "პირობებს"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "პირადი მონაცემების შესახებ განცხადებას"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/kab/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/kab/messages.json
@@ -62,16 +62,22 @@
     "message": "Mačči d asebter Web am iyaḍ, ur tizmireḍ ara ad s-teṭṭfeḍ agdil."
   },
   "selfScreenshotErrorTitle": {
     "message": "Ur tezmireḍ ar ad teṭṭfeḍ agdil n usebter Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Tafrant inek wezzil-t aṭas"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots yensa deg uskar uslig"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Suref-aɣ ɣef aya. Aqlaɣ nxeddem ɣef tmahilt i yileqman d-iteddun."
+  },
   "genericErrorTitle": {
     "message": "Ihuh! Firefox Screenshots ur iteddu ara."
   },
   "genericErrorDetails": {
     "message": "Ur neẓri ara acu yeḍran. Ɛreḍ tikelt-nniḍen neɣ ṭṭef agdil n usebter-nniḍen?"
   },
   "tourBodyOne": {
     "message": "Ṭṭef, sekles, bḍu igdilen war ma teffɣeḍ si Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/kk/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/kk/messages.json
@@ -62,16 +62,22 @@
     "message": "Бұл қалыпты веб беті емес, сондықтан оның скриншотын түсіру мүмкін емес."
   },
   "selfScreenshotErrorTitle": {
     "message": "Firefox скриншоттары бетінің скриншотын түсіру мүмкін емес!"
   },
   "emptySelectionErrorTitle": {
     "message": "Сіздің таңдауыңыз тым кішкентай"
   },
+  "privateWindowErrorTitle": {
+    "message": "Скриншоттар жекелік шолу режимінде сөнідірілген"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Қолайсыздық үшін кешірім сұраймыз. Бұл мүмкіндікті болашақ шығарылымдарда іске асыруға жұмысты жасаймыз."
+  },
   "genericErrorTitle": {
     "message": "Қап! Firefox скриншоттары жасамай қалған сияқты."
   },
   "genericErrorDetails": {
     "message": "Не болғанын білмейміз. Қайталап көресіз бе, немесе басқа парақтың скриншотын түсіріп көресіз бе?"
   },
   "tourBodyOne": {
     "message": "Firefox ішінен скриншоттарды түсіру, сақтау және олармен бөлісу."
--- a/browser/extensions/screenshots/webextension/_locales/ko/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ko/messages.json
@@ -62,16 +62,22 @@
     "message": "표준 웹 페이지가 아니어서 스크린샷을 찍을 수 없습니다."
   },
   "selfScreenshotErrorTitle": {
     "message": "Firefox Screenshots 페이지는 캡처할 수 없어요!"
   },
   "emptySelectionErrorTitle": {
     "message": "선택영역이 너무 작음"
   },
+  "privateWindowErrorTitle": {
+    "message": "개인정보 보호 모드에서는 Screenshots이 비활성화 됨"
+  },
+  "privateWindowErrorDetails": {
+    "message": "불편을 끼쳐 드려서 죄송합니다. 다음 출시에 넣을 수 있도록 기능을 개선중입니다."
+  },
   "genericErrorTitle": {
     "message": "와우! Firefox Screenshots이 망가졌네요."
   },
   "genericErrorDetails": {
     "message": "무슨 일이 있었는지 모르겠네요. 다시 시도하시거나 다른 페이지 스크린샷을 찍어 보시겠어요?"
   },
   "tourBodyOne": {
     "message": "Firefox를 떠나지 않은 채로 찍고, 저장하고, 공유하세요."
--- a/browser/extensions/screenshots/webextension/_locales/lo/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/lo/messages.json
@@ -59,16 +59,19 @@
     "message": "ພວກເຮົາບໍ່ສາມາດຖ່າຍຮູບຫນ້າຈໍຂອງຫນ້ານີ້ໄດ້."
   },
   "unshootablePageErrorDetails": {
     "message": "ນີ້ບໍ່ແມ່ນຫນ້າເວັບມາດຕະຖານ, ສະນັ້ນທ່ານຈຶ່ງບໍ່ສາມາດຖ່າຍພາບຫນ້າຈໍໄດ້."
   },
   "selfScreenshotErrorTitle": {
     "message": "ທ່ານບໍ່ສາມາດຖ່າຍພາບຫນ້າຈໍຂອງ Firefox ໄດ້!"
   },
+  "emptySelectionErrorTitle": {
+    "message": "ການເລືອກຂອງທ່ານນ້ອຍເກີນໄປ"
+  },
   "genericErrorTitle": {
     "message": "ໂອ! Firefox Screenshots ລວນ."
   },
   "genericErrorDetails": {
     "message": "ພວກເຮົາບໍ່ແນ່ໃຈວ່າມັນຫາກະເກີດຫຍັງຂື້ນ. ກະລຸນາລອງໃຫມ່ອີກຄັ້ງ ຫລື ຖ່າຍພາບຫນ້າຈໍອື່ນລອງເບິງ"
   },
   "tourBodyOne": {
     "message": "ຖ່າຍ, ບັນທຶກ ແລະ ແບ່ງປັນພາບຫນ້າຈໍໂດຍບໍ່ຕ້ອງອອກຈາກ Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/lt/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/lt/messages.json
@@ -62,16 +62,22 @@
     "message": "Tai nėra įprastas tinklalapis, tad negalite padaryti jo nuotraukos."
   },
   "selfScreenshotErrorTitle": {
     "message": "Negalite padaryti „Firefox Screenshots“ tinklalapio nuotraukos!"
   },
   "emptySelectionErrorTitle": {
     "message": "Jūsų pasirinkimas yra per mažas"
   },
+  "privateWindowErrorTitle": {
+    "message": "Ekrano nuotraukos privačiajame naršyme neveikia"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Atsiprašome už nepatogumą. Mes dirbame prie šio funkcionalumo vėlesnėms versijoms."
+  },
   "genericErrorTitle": {
     "message": "Vau! „Firefox Screenshots“ sugedo."
   },
   "genericErrorDetails": {
     "message": "Mes nesame tikri, kas ką tik nutiko. Norite pabandyti dar kartą arba nufotografuoti kitą tinklalapį?"
   },
   "tourBodyOne": {
     "message": "Darykite, įrašykite ir dalinkitės ekrano nuotraukomis nepalikdami „Firefox“."
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/mk/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "Земете исечоци и слики од Интернет и зачувајте ги привремено или трајно."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Фатете слика"
+  },
+  "myShotsLink": {
+    "message": "Мои слики"
+  },
+  "screenshotInstructions": {
+    "message": "Влечете и кликнете на страницата за да означите регион. Притиснете ESC за да се откажете."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Сними"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Сними видлив дел"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Сними цела страница"
+  },
+  "cancelScreenshot": {
+    "message": "Откажи"
+  },
+  "downloadScreenshot": {
+    "message": "Преземи"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Врската е ископирана"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "Врската до Вашата слика е ископирана во меморија. Притиснете $META_KEY$-V за да ја вметнете.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "Не работи."
+  },
+  "requestErrorDetails": {
+    "message": "Извинете! Не можевме да ја снимиме Вашата слика. Ве молиме обидете се повторно подоцна."
+  },
+  "connectionErrorTitle": {
+    "message": "Не можеме да пристапиме до Вашите слики од екран."
+  },
+  "connectionErrorDetails": {
+    "message": "Ве молиме проверете ја Вашата Интернет-врска. Ако можете да се поврзете на Интернет, тогаш можно е да има привремен проблем со сервисот Firefox Screenshots."
+  },
+  "loginErrorDetails": {
+    "message": "Не можевме да ја зачуваме Вашата слика бидејќи има проблем со сервисот Firefox Screenshots. Ве молиме обидете се повторно подоцна."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "Не можеме да фатиме слика од оваа страница."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "Ова не е обична веб-страница, па не можете да фатите слика од неа."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "Не можете да фатите слика од страницата на Firefox Screenshots!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "Делот што го избравте е премногу мал"
+  },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots е деактивиран во текот на Приватното прелистување"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Извинете за незгодата. Работиме на оваа функционалност за во идните верзии."
+  },
+  "genericErrorTitle": {
+    "message": "Ајдее! Firefox Screenshots излезе од контрола."
+  },
+  "genericErrorDetails": {
+    "message": "Не сме баш сигурни што се случи. Сакате да се обидете повторно или да направите слика од друга страница?"
+  },
+  "tourBodyOne": {
+    "message": "Фаќајте, снимајте и споделувајте слики од екран без да го напуштите Firefox."
+  },
+  "tourHeaderTwo": {
+    "message": "Фатете слика од тоа што сакате"
+  },
+  "tourBodyTwo": {
+    "message": "Кликнете и влечете за да фатите само дел од страницата. Исто така можете да означите дел и со покажувачот."
+  },
+  "tourHeaderThree": {
+    "message": "Фатете слика од прозорци или цели страници"
+  },
+  "tourBodyThree": {
+    "message": "Кликнете на копчињата во горниот десен дел за да го снимите видливиот дел на прозорецот или пак, целата страница."
+  },
+  "tourHeaderFour": {
+    "message": "Како што Вие сакате"
+  },
+  "tourBodyFour": {
+    "message": "Снимете ги Вашите исечоци на Интернет за полесно споделување или преземете ги на Вашиот компјутер. Исто така можете да кликнете на копчето Мои слики за да ги најдете сите слики што ги имате направено."
+  },
+  "tourSkip": {
+    "message": "ПРЕСКОКНИ"
+  },
+  "tourNext": {
+    "message": "Следен слајд"
+  },
+  "tourPrevious": {
+    "message": "Претходен слајд"
+  },
+  "tourDone": {
+    "message": "Готово"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Со користење на Firefox Screenshots, се согласувате со нашите $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "Услови"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "Известување за приватност"
+  }
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/mr/messages.json
@@ -0,0 +1,132 @@
+{
+  "addonDescription": {
+    "message": "वेबवरून क्लिप आणि स्क्रीनशॉट घ्या आणि त्यांना तात्पुरते किंवा कायमचे जतन करा."
+  },
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "स्क्रीनशॉट घ्या"
+  },
+  "myShotsLink": {
+    "message": "माझे शॉट"
+  },
+  "screenshotInstructions": {
+    "message": "प्रदेश निवडण्यासाठी पृष्ठावर ड्रॅग करा किंवा क्लिक करा. रद्द करण्यासाठी ESC दाबा."
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "साठवा"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "दृश्यमय साठवा"
+  },
+  "saveScreenshotFullPage": {
+    "message": "संपूर्ण पृष्ठ साठवा"
+  },
+  "cancelScreenshot": {
+    "message": "रद्द करा"
+  },
+  "downloadScreenshot": {
+    "message": "डाउनलोड करा"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "दुवा कॉपी केला"
+  },
+  "notificationLinkCopiedDetails": {
+    "message": "आपल्या शॉटचा दुवा क्लिपबोर्डवर कॉपी झाला आहे. चिटकवण्यासाठी $META_KEY$ -V दाबा.",
+    "placeholders": {
+      "meta_key": {
+        "content": "$1"
+      }
+    }
+  },
+  "requestErrorTitle": {
+    "message": "नादुरुस्त."
+  },
+  "requestErrorDetails": {
+    "message": "क्षमस्व! आम्ही आपला शॉट साठवु शकलो नाही. कृपया नंतर प्रयत्न करा."
+  },
+  "connectionErrorTitle": {
+    "message": "आम्ही आपल्या स्क्रीनशॉटशी जोडणी करु शकत नाही."
+  },
+  "connectionErrorDetails": {
+    "message": "कृपया आपले इंटरनेट जोडणी तपासा. आपण इंटरनेटशी जुळण्यास अक्षम असल्यास, Firefox स्क्रीनशॉट सेवेमध्ये एक तात्पुरती समस्या असु शकते."
+  },
+  "loginErrorDetails": {
+    "message": "Firefox स्क्रीनशॉट सेवेमध्ये समस्या असल्या कारणाने आम्ही आपला शॉट साठवु शकलो नाही. कृपया नंतर प्रयत्न करा."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "आम्ही हे पृष्ठ स्क्रीनशॉट करू शकत नाही."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "हे मानक वेब पृष्ठ नाही, म्हणून आपण त्याचा स्क्रीनशॉट घेऊ शकत नाही."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "आपण Firefox स्क्रीनशॉट पृष्ठाचा शॉट घेऊ शकत नाही!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "आपली निवड खूप लहान आहे"
+  },
+  "privateWindowErrorTitle": {
+    "message": "खाजगी ब्राउझिंग पद्धतीमध्ये स्क्रीनशॉट्स निष्क्रिय केले आहेत"
+  },
+  "privateWindowErrorDetails": {
+    "message": "गैरसोयीबद्दल क्षमस्व. आम्ही भविष्यातील प्रकाशनासाठी या वैशिष्ट्यांवर कार्यरत आहोत."
+  },
+  "genericErrorTitle": {
+    "message": "हुअ! Firefox स्क्रीनशॉट अव्यवस्थित झाले आहे."
+  },
+  "genericErrorDetails": {
+    "message": "काय घडले याची आम्हाला खात्री नाही. पुन्हा प्रयत्न करा किंवा भिन्न पृष्ठाचा शॉट घ्या?"
+  },
+  "tourBodyOne": {
+    "message": "Firefox न सोडता स्क्रीनशॉट घ्या, जतन करा आणि सामायिक करा."
+  },
+  "tourHeaderTwo": {
+    "message": "आपल्याला पाहिजे असलेल्या गोष्टी फक्त कॅप्चर करा"
+  },
+  "tourBodyTwo": {
+    "message": "पृष्ठाचा फक्त एक भाग कॅप्चर करण्यासाठी क्लिक आणि ड्रॅग करा. आपण आपल्या निवडीवर ठळकपणे होव्हर देखील करू शकता."
+  },
+  "tourHeaderThree": {
+    "message": "Windows किंवा संपूर्ण पृष्ठे कॅप्चर करा"
+  },
+  "tourBodyThree": {
+    "message": "पटलामध्ये दृश्यमान क्षेत्र कॅप्चर करण्यासाठी किंवा संपूर्ण पृष्ठ कॅप्चर करण्यासाठी वरील उजवीकडील बटणे निवडा."
+  },
+  "tourHeaderFour": {
+    "message": "जसे आपल्याला आवडते"
+  },
+  "tourBodyFour": {
+    "message": "आपले क्रॉप केलेले शॉट्स वेबवर सुलभ सामायिक करण्यासाठी जतन करा, किंवा त्यांना आपल्या संगणकावर डाउनलोड करा. आपण घेतलेले सर्व शॉट्स शोधण्यासाठी आपण माझे शॉट्स बटणावर क्लिक करू शकता."
+  },
+  "tourSkip": {
+    "message": "दुर्लक्षित करा"
+  },
+  "tourNext": {
+    "message": "पुढील स्लाइड"
+  },
+  "tourPrevious": {
+    "message": "मागची स्लाइड"
+  },
+  "tourDone": {
+    "message": "झाले"
+  },
+  "termsAndPrivacyNoticeCloudServices": {
+    "message": "Firefox Screenshots वापरून, आपण आमच्या $TERMSANDPRIVACYNOTICETERMSLINK$आणि $TERMSANDPRIVACYNOTICEPRIVACYLINK$ शी सहमत आहात.",
+    "placeholders": {
+      "termsandprivacynoticetermslink": {
+        "content": "$1"
+      },
+      "termsandprivacynoticeprivacylink": {
+        "content": "$2"
+      }
+    }
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "अटी"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "गोपनीयता सूचना"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/ms/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ms/messages.json
@@ -1,20 +1,20 @@
 {
   "addonDescription": {
-    "message": "Ambil klip dan skrinshot dari Web dan simpan untuk sementara waktu atau kekal."
+    "message": "Ambil klip dan skrinsyot dari Web dan simpan untuk sementara waktu atau kekal."
   },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
-    "message": "Ambil skrinshot"
+    "message": "Ambil skrinsyot"
   },
   "myShotsLink": {
-    "message": "Shot Saya"
+    "message": "Syot Saya"
   },
   "screenshotInstructions": {
     "message": "Seret atau klik pada halaman untuk memilih kawasan. Tekan ESC untuk batalkan."
   },
   "saveScreenshotSelectedArea": {
     "message": "Simpan"
   },
   "saveScreenshotVisibleArea": {
@@ -28,58 +28,64 @@
   },
   "downloadScreenshot": {
     "message": "Muat turun"
   },
   "notificationLinkCopiedTitle": {
     "message": "Pautan Disalin"
   },
   "notificationLinkCopiedDetails": {
-    "message": "Pautan ke shot anda telah disalin ke klipbod. Tekan $META_KEY$-V untuk tampal.",
+    "message": "Pautan ke syot anda telah disalin ke klipbod. Tekan $META_KEY$-V untuk tampal.",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
     "message": "Tidak berfungsi."
   },
   "requestErrorDetails": {
-    "message": "Maaf! Kita tidak dapat menyimpan shot anda. Sila cuba lagi nanti."
+    "message": "Maaf! Kita tidak dapat menyimpan syot anda. Sila cuba lagi nanti."
   },
   "connectionErrorTitle": {
-    "message": "Kami tidak dapat menyambungkan ke skrinshot anda."
+    "message": "Kami tidak dapat menyambungkan ke skrinsyot anda."
   },
   "connectionErrorDetails": {
-    "message": "Sila semak sambungan Internet anda. Jika anda boleh dapat sambungan ke Internet, mungkin ada masalah sementara dengan perkhidmatan screenshot di Firefox."
+    "message": "Sila semak sambungan Internet anda. Jika anda boleh dapat sambungan ke Internet, mungkin ada masalah sementara dengan perkhidmatan Firefox Screenshots."
   },
   "loginErrorDetails": {
-    "message": "Kita tidak dapat menyimpan skrinshot anda kerana ada masalah dengan perkhidmatan skrinshot di Firefox. Sila cuba lagi nanti."
+    "message": "Kami tidak dapat menyimpan skrinsyot anda kerana ada masalah dengan perkhidmatan Firefox Screenshots. Sila cuba lagi nanti."
   },
   "unshootablePageErrorTitle": {
-    "message": "Halaman ini tidak boleh diskrinshot."
+    "message": "Kami tidak boleh skrinsyot halaman ini."
   },
   "unshootablePageErrorDetails": {
-    "message": "Ini bukan halaman Web piawai, jadi anda tidak boleh membuat skrinshot."
+    "message": "Ini bukan halaman Web piawai, jadi anda tidak boleh membuat skrinsyot."
   },
   "selfScreenshotErrorTitle": {
-    "message": "Anda tidak boleh mengambil gambar halaman Firefox Screenshots!"
+    "message": "Anda tidak boleh syot halaman Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Pilihan anda terlalu kecil"
   },
+  "privateWindowErrorTitle": {
+    "message": "Skrinsyot dinyahdayakan dalam Mod Pelayaran Peribadi"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Maaf atas sebarang kesulitan. Kami sedang berusaha untuk menyediakan ciri ini dalam keluaran akan datang."
+  },
   "genericErrorTitle": {
-    "message": "Oh tidak! Firefox Screenshot tidak berfungsi dengan betul."
+    "message": "Oh tidak! Firefox Screenshots tidak berfungsi dengan betul."
   },
   "genericErrorDetails": {
     "message": "Kami tidak pasti apa yang baru berlaku. Anda mahu cuba lagi atau mengambil gambar halaman lain?"
   },
   "tourBodyOne": {
-    "message": "Ambil, simpan, dan kongsi screenshot tanpa meninggalkan pelayar Firefox."
+    "message": "Ambil, simpan, dan kongsi skrinsyot tanpa meninggalkan pelayar Firefox."
   },
   "tourHeaderTwo": {
     "message": "Ambil gambar hanya yang anda mahu"
   },
   "tourBodyTwo": {
     "message": "Klik dan seret untuk mengambil gambar sebahagian daripada halaman. Anda boleh juga serlahkan pilihan anda."
   },
   "tourHeaderThree": {
@@ -87,20 +93,20 @@
   },
   "tourBodyThree": {
     "message": "Pilih butang di bahagian atas kanan untuk merakam kawasan paparan dalam tetingkap atau untuk merakamkan keseluruhan halaman."
   },
   "tourHeaderFour": {
     "message": "Seperti Yang Anda Suka"
   },
   "tourBodyFour": {
-    "message": "Simpan rakaman yang dipotong ke Web, cara yang lebih mudah untuk berkongsi, atau memuatturunnya ke komputer anda. Anda juga boleh klik pada butang Shot Saya untuk mencari semua rakaman yang telah diambil."
+    "message": "Simpan rakaman yang dipotong ke Web, cara yang lebih mudah untuk berkongsi, atau memuat turun ke komputer anda. Anda juga boleh klik pada butang Syot Saya untuk mencari semua rakaman yang telah dibuat."
   },
   "tourSkip": {
-    "message": "Langkau"
+    "message": "SKIP"
   },
   "tourNext": {
     "message": "Slaid Seterusnya"
   },
   "tourPrevious": {
     "message": "Slaid Sebelumnya"
   },
   "tourDone": {
--- a/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/nb_NO/messages.json
@@ -62,16 +62,22 @@
     "message": "Dette er ikke en vanlig nettside, og du kan ikke ta skjermbilde av den."
   },
   "selfScreenshotErrorTitle": {
     "message": "Du kan ikke ta skjermbilde av siden Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Det valgte området er for liten"
   },
+  "privateWindowErrorTitle": {
+    "message": "Skjermbildetaking er deaktivert i privat nettlesings-modus"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Beklager ulempen. Vi jobber med denne funksjonen for fremtidige utgivelser."
+  },
   "genericErrorTitle": {
     "message": "Oi! Det ser ut til at Firefox Screenshots ikke fungerer korrekt."
   },
   "genericErrorDetails": {
     "message": "Vi er ikke sikre på hva som hendte. Kan du prøve igjen eller ta et bilde av en annen side?"
   },
   "tourBodyOne": {
     "message": "Ta, lagre og del skjermbilder uten å forlate Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/nl/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/nl/messages.json
@@ -62,21 +62,27 @@
     "message": "Dit is geen standaardwebpagina, dus u kunt er geen schermafbeelding van maken."
   },
   "selfScreenshotErrorTitle": {
     "message": "U kunt geen afbeelding van een Firefox Screenshots-pagina maken!"
   },
   "emptySelectionErrorTitle": {
     "message": "Uw selectie is te klein"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots is uitgeschakeld in Privénavigatiemodus"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Sorry voor het ongemak. Voor toekomstige releases wordt aan deze functie gewerkt."
+  },
   "genericErrorTitle": {
     "message": "Ho! Er is iets mis met Firefox Screenshots."
   },
   "genericErrorDetails": {
-    "message": "We weten niet precies wat er zonet is gebeurd. Wilt u het nogmaals proberen of een schermafbeelding van een andere pagina maken?"
+    "message": "We weten niet precies wat er zonet is gebeurd. Wilt u het nogmaals proberen, of een schermafbeelding van een andere pagina maken?"
   },
   "tourBodyOne": {
     "message": "Maak, bewaar en deel schermafbeeldingen zonder Firefox te verlaten."
   },
   "tourHeaderTwo": {
     "message": "Leg alleen vast wat u wilt"
   },
   "tourBodyTwo": {
--- a/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/nn_NO/messages.json
@@ -62,16 +62,22 @@
     "message": "Dette er ikkje ei vanleg nettside, og du kan ikkje ta skjermbilde av henne."
   },
   "selfScreenshotErrorTitle": {
     "message": "Du kan ikkje ta skjermbilde av sida Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Markeringa di er for lita"
   },
+  "privateWindowErrorTitle": {
+    "message": "Skjermbildeknipsing er slått av i Privat nettlesings-modus"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Ein er lei for ulempa. Vi jobbar med denne funksjonen for framtidige versjonar."
+  },
   "genericErrorTitle": {
     "message": "Oj! Det ser ut til at Firefox Screenshots ikkje fungerer korrekt."
   },
   "genericErrorDetails": {
     "message": "Vi er ikkje sikre på kva som hende. Kan du prøve igjen eller ta eit bilde på ei anna side?"
   },
   "tourBodyOne": {
     "message": "Ta, lagre og del skjermbilde utan å forlate Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/pl/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/pl/messages.json
@@ -62,16 +62,22 @@
     "message": "To nie jest standardowa strona internetowa, więc nie można wykonać jej zrzutu."
   },
   "selfScreenshotErrorTitle": {
     "message": "Nie można wykonać zrzutu strony Firefox Screenshots."
   },
   "emptySelectionErrorTitle": {
     "message": "Zaznaczenie jest za małe"
   },
+  "privateWindowErrorTitle": {
+    "message": "Firefox Screenshots jest wyłączony w trybie prywatnym"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Przepraszamy za utrudnienia. Pracujemy nad dodaniem tej funkcji."
+  },
   "genericErrorTitle": {
     "message": "Firefox Screenshots wymknęło się spod kontroli."
   },
   "genericErrorDetails": {
     "message": "Nie bardzo wiemy, co się wydarzyło. Spróbujesz ponownie lub wykonasz zrzut innej strony?"
   },
   "tourBodyOne": {
     "message": "Wykonuj, zapisuj i udostępniaj zrzuty ekranu bez wychodzenia z Firefoksa."
--- a/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/pt_BR/messages.json
@@ -1,11 +1,11 @@
 {
   "addonDescription": {
-    "message": "Tire clipes e capturas de tela da Web e guarde-as temporariamente ou permanentemente."
+    "message": "Tire capturas de tela da Web e guarde-as temporariamente ou permanentemente."
   },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
     "message": "Tirar uma captura de tela"
   },
   "myShotsLink": {
@@ -36,42 +36,48 @@
     "message": "O link da sua captura foi copiado para a área de transferência. Pressione $META_KEY$-V para colar.",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
-    "message": "Com defeito."
+    "message": "Oops! Fora do ar."
   },
   "requestErrorDetails": {
-    "message": "Desculpa! Não pudemos salvar a sua captura de tela. Por favor, tente novamente mais tarde."
+    "message": "Desculpe! Não conseguimos salvar a sua captura de tela. Por favor, tente novamente mais tarde."
   },
   "connectionErrorTitle": {
-    "message": "Não conseguimos conectar suas capturas de tela."
+    "message": "Não conseguimos nos conectar às suas capturas de tela."
   },
   "connectionErrorDetails": {
-    "message": "Por favor verifique a sua conexão com a Internet. Se consegue conecta-se à Internet, pode existir um problema temporário com o serviço capturas de tela do Firefox."
+    "message": "Por favor, verifique a sua conexão com a Internet. Se consegue conectar-se à Internet, pode haver um problema temporário com o serviço Firefox Screenshots."
   },
   "loginErrorDetails": {
-    "message": "Não conseguimos salvar a sua captura porque existe um problema com o serviço de capturas de tela do Firefox. Por favor tente novamente mais tarde."
+    "message": "Não conseguimos salvar sua captura porque há um problema com o serviço Firefox Screenshots. Por favor, tente novamente mais tarde."
   },
   "unshootablePageErrorTitle": {
     "message": "Não conseguimos capturar a tela nesta página."
   },
   "unshootablePageErrorDetails": {
-    "message": "Esta não é uma página web padrão, por isso não podemos tirar uma captura de tela da mesma."
+    "message": "Esta não é uma página web padrão, por isso não podemos capturar sua tela."
   },
   "selfScreenshotErrorTitle": {
-    "message": "Você não pode tirar uma captura em uma página de capturas de tela do Firefox!"
+    "message": "Você não pode capturar uma página do Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Sua seleção é muito pequena"
   },
+  "privateWindowErrorTitle": {
+    "message": "As capturas de tela estão desabilitadas no modo de navegação privativa"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Lamentamos o inconveniente. Estamos trabalhando neste recurso para lançamentos futuros."
+  },
   "genericErrorTitle": {
     "message": "Uau! Algo correu mal com a capturas de tela do Firefox."
   },
   "genericErrorDetails": {
     "message": "Não temos certeza do que acabou de acontecer. Tentar novamente ou fazer uma captura de uma página diferente?"
   },
   "tourBodyOne": {
     "message": "Capture, salve e compartilhe telas sem sair do Firefox."
@@ -99,20 +105,20 @@
   },
   "tourNext": {
     "message": "Próximo slide"
   },
   "tourPrevious": {
     "message": "Slide anterior"
   },
   "tourDone": {
-    "message": "Concluir"
+    "message": "Concluído"
   },
   "termsAndPrivacyNoticeCloudServices": {
-    "message": "Usando o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$ dos serviços na nuvem do Firefox .",
+    "message": "Usando o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$ dos serviços na nuvem do Firefox.",
     "placeholders": {
       "termsandprivacynoticetermslink": {
         "content": "$1"
       },
       "termsandprivacynoticeprivacylink": {
         "content": "$2"
       }
     }
--- a/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/pt_PT/messages.json
@@ -62,16 +62,22 @@
     "message": "Esta não é uma página Web padrão, por isso não podemos tirar uma captura de ecrã da mesma."
   },
   "selfScreenshotErrorTitle": {
     "message": "Não pode tirar uma captura de uma página Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "A sua seleção é demasiado pequena"
   },
+  "privateWindowErrorTitle": {
+    "message": "O Screenshots está desativado no modo de navegação privada"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Desculpe pela inconveniência. Estamos a trabalhar nesta funcionalidade para futuros lançamentos."
+  },
   "genericErrorTitle": {
     "message": "Uau! Algo correu mal com o Firefox Screenshots."
   },
   "genericErrorDetails": {
     "message": "Não temos a certeza do que acabou de acontecer. Importa-se de tentar novamente ou tirar uma captura de uma página diferente?"
   },
   "tourBodyOne": {
     "message": "Tire, guarde, e partilhe capturas de ecrã sem sair do Firefox."
@@ -84,20 +90,20 @@
   },
   "tourHeaderThree": {
     "message": "Capture janelas ou páginas inteiras"
   },
   "tourBodyThree": {
     "message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou para capturar uma página inteira."
   },
   "tourHeaderFour": {
-    "message": "Como gosta"
+    "message": "Como você gostar"
   },
   "tourBodyFour": {
-    "message": "Guarde as suas capturas na Web para partilhar mais facilmente, ou descarregue-as para o seu computador. Pode também clicar no botão Minhas capturas para encontras todas as capturas que tirou."
+    "message": "Guarde as suas capturas na Web para partilhar mais facilmente, ou descarregue-as para o seu computador. Pode também clicar no botão Minhas capturas para encontrar todas as capturas que tirou."
   },
   "tourSkip": {
     "message": "SALTAR"
   },
   "tourNext": {
     "message": "Diapositivo seguinte"
   },
   "tourPrevious": {
--- a/browser/extensions/screenshots/webextension/_locales/rm/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/rm/messages.json
@@ -59,16 +59,19 @@
     "message": "Impussibel da far in maletg da visur da questa pagina."
   },
   "unshootablePageErrorDetails": {
     "message": "Quai n'è betg ina pagina web da standard, perquai n'èsi betg pussaivel da far in maletg da visur dad ella."
   },
   "selfScreenshotErrorTitle": {
     "message": "Impussibel da far in maletg da visur dad ina pagina da Firefox Screenshots."
   },
+  "emptySelectionErrorTitle": {
+    "message": "La zona selecziunada è memia pitschna"
+  },
   "genericErrorTitle": {
     "message": "Oh dieu! Firefox Screenshots ha il singlut."
   },
   "genericErrorDetails": {
     "message": "Nus na savain betg tge ch'è gist capità. Vuls empruvar anc ina giada, forsa cun in'autra pagina?"
   },
   "tourBodyOne": {
     "message": "Far, memorisar e cundivider maletgs da visur senza bandunar Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/ru/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ru/messages.json
@@ -62,16 +62,22 @@
     "message": "Так как это не обычная веб-страница, мы не сможем сделать её скриншот."
   },
   "selfScreenshotErrorTitle": {
     "message": "Вы не можете сделать скриншот страницы Скриншотов Firefox."
   },
   "emptySelectionErrorTitle": {
     "message": "Выбрана слишком небольшая область"
   },
+  "privateWindowErrorTitle": {
+    "message": "Скриншоты отключены в режиме Приватного просмотра"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Приносим извинения за неудобства. Мы работаем над включением этой функции в будущие релизы."
+  },
   "genericErrorTitle": {
     "message": "Ого! Скриншоты Firefox вышли из строя."
   },
   "genericErrorDetails": {
     "message": "Мы не уверены, в чём проблема. Попробуете ещё раз или сделаете снимок другой страницы?"
   },
   "tourBodyOne": {
     "message": "Делайте, сохраняйте и делитесь скриншотами прямо в Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/sk/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/sk/messages.json
@@ -62,16 +62,22 @@
     "message": "Toto nie je štandardná webová stránka, takže z nej nemôžeme vytvoriť snímku obrazovky."
   },
   "selfScreenshotErrorTitle": {
     "message": "Nemôžete vytvoriť snímku obrazovky stránky Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Váš výber je príliš malý"
   },
+  "privateWindowErrorTitle": {
+    "message": "Služba Firefox Screenshots je v režime Súkromné prehliadanie zakázaná"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Ospravedlňujeme sa za spôsobené nepríjemnosti. Pracujeme na vylepšení tejto funkcie v budúcich verziách."
+  },
   "genericErrorTitle": {
     "message": "Ups! Služba Firefox Screenshots prestala pracovať."
   },
   "genericErrorDetails": {
     "message": "Nie sme si istí, čo sa práve stalo. Chcete tú skúsiť znova alebo chcete vytvoriť snímku inej stránky?"
   },
   "tourBodyOne": {
     "message": "Tvorte, ukladajte a zdieľajte snímky obrazovky bez toho, aby ste museli opustiť Firefox."
@@ -84,20 +90,20 @@
   },
   "tourHeaderThree": {
     "message": "Zachyťte okná alebo celé webové stránky"
   },
   "tourBodyThree": {
     "message": "Kliknutím na tlačidlo v pravom hornom rohu môžete zachytiť viditeľnú časť stránky. Pomocou ďalšieho tlačidla zachytíte celú stránku."
   },
   "tourHeaderFour": {
-    "message": "Tak ako to chcete"
+    "message": "Urobte to, čo chcete"
   },
   "tourBodyFour": {
-    "message": "Uložte si orezanú snímku na web, aby ste ju mohli ľahšie zdieľať alebo si ju prevziať do počítača. Môžete si taktiež pozrieť všetky vaše snímky, stačí ak kliknete na tlačidlo Moje snímky."
+    "message": "Uložte si orezanú snímku na web, aby ste ju mohli ľahšie zdieľať alebo si ju prevziať do počítača. Môžete si taktiež pozrieť všetky vaše snímky - stačí, ak kliknete na tlačidlo Moje snímky."
   },
   "tourSkip": {
     "message": "Preskočiť"
   },
   "tourNext": {
     "message": "Ďalšia snímka"
   },
   "tourPrevious": {
--- a/browser/extensions/screenshots/webextension/_locales/sl/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/sl/messages.json
@@ -62,16 +62,22 @@
     "message": "To ni običajna spletna stran, zato ne morete zajeti njenega zaslonskega posnetka."
   },
   "selfScreenshotErrorTitle": {
     "message": "Posnetka strani Firefox Screenshots ni mogoče zajeti!"
   },
   "emptySelectionErrorTitle": {
     "message": "Vaš izbor je premajhen"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots je onemogočen v zasebnem načinu brskanja"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Oprostite za nevšečnost. To možnost izboljšujemo za prihodnje izdaje."
+  },
   "genericErrorTitle": {
     "message": "Uf! Firefox Screenshots se je pokvaril."
   },
   "genericErrorDetails": {
     "message": "Ne vemo točno, kaj se je pravkar zgodilo. Bi radi poskusili znova ali pa zajeli posnetek kakšne druge strani?"
   },
   "tourBodyOne": {
     "message": "Zajemite, shranite in delite zaslonske posnetke, ne da bi zapustili Firefox."
@@ -87,17 +93,17 @@
   },
   "tourBodyThree": {
     "message": "V zgornjem desnem kotu izberite gumb za zajem vidnega območja v oknu ali celotne strani."
   },
   "tourHeaderFour": {
     "message": "Kot vi želite"
   },
   "tourBodyFour": {
-    "message": "Shranite obrezane posnetke na splet za lažje deljenje ali jih prenesite na svoj računalnik. Vse zajete posnetke lahko najdete s klikom na gumb My Shots."
+    "message": "Shranite obrezane posnetke na splet za lažje deljenje ali jih prenesite na svoj računalnik. Vse zajete posnetke lahko najdete s klikom na gumb Moji posnetki."
   },
   "tourSkip": {
     "message": "Preskoči"
   },
   "tourNext": {
     "message": "Naslednji diapozitiv"
   },
   "tourPrevious": {
--- a/browser/extensions/screenshots/webextension/_locales/sr/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/sr/messages.json
@@ -62,16 +62,22 @@
     "message": "Ово није стандардна веб страница, тако да не можете забележити њен снимак."
   },
   "selfScreenshotErrorTitle": {
     "message": "Не можете усликати Firefox Screenshots страницу!"
   },
   "emptySelectionErrorTitle": {
     "message": "Ваша селекција је премала"
   },
+  "privateWindowErrorTitle": {
+    "message": "Снимци екрана су онемогућени у приватном режиму"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Жао нам је због овог неспоразума. Радимо на овој могућности за следећа издања."
+  },
   "genericErrorTitle": {
     "message": "Ајој! Firefox Screenshots је пошашавио."
   },
   "genericErrorDetails": {
     "message": "Нисмо сигурни шта се управо догодило. Желите ли покушати поново или да усликате другачију страницу?"
   },
   "tourBodyOne": {
     "message": "Забележите, сачувајте и поделите снимке екрана без напуштања Firefox-а."
--- a/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/sv_SE/messages.json
@@ -62,16 +62,22 @@
     "message": "Detta är inte en vanlig webbsida, så du kan inte ta en skärmbild av den."
   },
   "selfScreenshotErrorTitle": {
     "message": "Du kan inte ta en skärmbild av sidan Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Ditt val är för litet"
   },
+  "privateWindowErrorTitle": {
+    "message": "Skärmbilder är inaktiverad i privat surfläge"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Ledsen för besväret. Vi arbetar med den här funktionen för framtida versioner."
+  },
   "genericErrorTitle": {
     "message": "Oj! Firefox Screenshots verkar inte fungera korrekt."
   },
   "genericErrorDetails": {
     "message": "Vi är inte säkra på vad som just hände. Kan du försöka igen eller ta en bild på en annan sida?"
   },
   "tourBodyOne": {
     "message": "Ta, spara, och dela skärmbilder utan att lämna Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/ta/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ta/messages.json
@@ -62,24 +62,30 @@
     "message": "இது ஒரு இணையத்தளம் போன்று தெரிவில்லை, எனவே உங்களால் திரைப்பிடிப்பு எடுக்க முடியாது."
   },
   "selfScreenshotErrorTitle": {
     "message": "பயர்பாஃசு திரைப்பிடிப்பு பக்கத்தை உங்களால் திரைப்பிடிப்பு செய்ய முடியாது!"
   },
   "emptySelectionErrorTitle": {
     "message": "உங்களின் தேர்வு மிகச் சிறியது"
   },
+  "privateWindowErrorTitle": {
+    "message": "அந்தரங்க உலாவல் முறையில் திரைபிடிப்பு முடக்கப்பட்டுள்ளது"
+  },
+  "privateWindowErrorDetails": {
+    "message": "சிரமத்திற்கு வருந்துகிறோம். எதிர்கால வெளியீடுகளில் நாங்கள் இந்த வசதியைச் செய்து தருகிறோம்."
+  },
   "genericErrorTitle": {
-    "message": "அய் அய்யோ! பயர்பாஃசு திரைப்பிடிப்பு வீணாய் போனது. "
+    "message": "அய் அய்யோ! பயர்பாஃசு திரைப்பிடிப்பு வீணாய் போனது."
   },
   "genericErrorDetails": {
     "message": "என்ன நடந்தது என எங்களுக்குத் தெரியவில்லை. முடிந்தால் மீண்டும் முயற்சியுங்கள் (அ) வேறொரு பக்கத்தில் முயற்சியுங்கள்?"
   },
   "tourBodyOne": {
-    "message": "பயர்பாஃசை விட்டு வெளியேறாமல் திரைப்பிடிப்புகளைச் எடுங்க, சேமிங்க மற்றவருடன் பகிர்ந்துக்கொள்க."
+    "message": "பயர்பாஃசை விட்டு வெளியேறாமல் திரைப்பிடிப்புகளை எடுக்கலாம், சேமித்து மற்றவருடன் பகிர்ந்துக்கொள்ளலாம்."
   },
   "tourHeaderTwo": {
     "message": "உங்களுக்கு என்ன வேண்டுமோ அதைக் கைப்பற்றுங்கள்"
   },
   "tourBodyTwo": {
     "message": "சொடுக்கி இழுத்து சும்மா ஒரு பகுதியைத் தேர்வுச்செய்க. நீங்கள் இங்கும் அங்குமாக நகர்த்திக் கூட நீங்கள் தேர்வுச்செய்த பக்கத்தை மிளிர்க்கச் செய்யலாம்."
   },
   "tourHeaderThree": {
--- a/browser/extensions/screenshots/webextension/_locales/te/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/te/messages.json
@@ -1,17 +1,17 @@
 {
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
     "message": "ఒక తెరపట్టు తీసుకోండి"
   },
   "myShotsLink": {
-    "message": "నా షాట్లు"
+    "message": "నా తెరపట్లు"
   },
   "saveScreenshotSelectedArea": {
     "message": "భద్రపరచు"
   },
   "saveScreenshotVisibleArea": {
     "message": "కనిపించే దానిని బద్రపరచండి"
   },
   "saveScreenshotFullPage": {
@@ -27,16 +27,37 @@
     "message": "లంకె కాపీ అయింది"
   },
   "requestErrorTitle": {
     "message": "పని చెయుట లేదు."
   },
   "requestErrorDetails": {
     "message": "క్షమిచండి! మీ తెరను భద్రపరచలేకపోయాం. దయచేసి కాసేపాగి మళ్ళీ ప్రయత్నించండి."
   },
+  "connectionErrorTitle": {
+    "message": "మేము మీ స్క్రీన్షాట్లకు కనెక్ట్ చేయలేము."
+  },
+  "unshootablePageErrorTitle": {
+    "message": "మేము ఈ పేజీని స్క్రీన్షాట్ చేయలేము."
+  },
+  "unshootablePageErrorDetails": {
+    "message": "ఇది ప్రామాణిక వెబ్ పేజీ కాదు, కాబట్టి దాని యొక్క స్క్రీన్షాట్ని మీరు తీసుకోలేరు."
+  },
+  "selfScreenshotErrorTitle": {
+    "message": "మీరు Firefox స్క్రీన్షాట్స్ పేజీ యొక్క షాట్ ను తీసుకోలేరు!"
+  },
+  "emptySelectionErrorTitle": {
+    "message": "మీ ఎంపిక చాలా చిన్న్దగా ఉంది"
+  },
+  "genericErrorTitle": {
+    "message": "అయ్యో! Firefox స్క్రీన్షాట్లు haywire వెళ్ళింది."
+  },
+  "tourBodyOne": {
+    "message": "Firefox ను వదలకుండా స్క్రీన్షాట్లను తీసుకోండి, సేవ్ చేయండి మరియు పంచండి."
+  },
   "tourHeaderTwo": {
     "message": ""
   },
   "tourHeaderFour": {
     "message": "మీకు నచ్చినట్టుగా"
   },
   "tourSkip": {
     "message": "దాటవేయి"
@@ -49,11 +70,11 @@
   },
   "tourDone": {
     "message": "పూర్తయింది"
   },
   "termsAndPrivacyNoticeTermsLink": {
     "message": "నియమాలు"
   },
   "termsAndPrivacyNoticyPrivacyLink": {
-    "message": "అంతరంగికత గమనిక"
+    "message": "గోప్యతా నోటీసు"
   }
 }
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/th/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/th/messages.json
@@ -62,16 +62,22 @@
     "message": "นี่ไม่ใช่หน้าเว็บมาตรฐาน คุณจึงไม่สามารถจับภาพหน้าจอได้"
   },
   "selfScreenshotErrorTitle": {
     "message": "คุณไม่สามารถจับภาพของหน้า Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "การเลือกของคุณเล็กเกินไป"
   },
+  "privateWindowErrorTitle": {
+    "message": "Screenshots ถูกปิดใช้งานในโหมดการท่องเว็บแบบส่วนตัว"
+  },
+  "privateWindowErrorDetails": {
+    "message": "ขออภัยในความไม่สะดวก เรากำลังพัฒนาคุณลักษณะนี้สำหรับรุ่นในอนาคต"
+  },
   "genericErrorTitle": {
     "message": "โอ๊ย! Firefox Screenshots รวน"
   },
   "genericErrorDetails": {
     "message": "เราไม่แน่ใจว่าเกิดอะไรขึ้น ต้องการลองอีกครั้งหรือจับภาพของหน้าอื่น?"
   },
   "tourBodyOne": {
     "message": "จับ บันทึก และแบ่งปันภาพหน้าจอโดยไม่ต้องออกจาก Firefox"
--- a/browser/extensions/screenshots/webextension/_locales/tr/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/tr/messages.json
@@ -62,16 +62,22 @@
     "message": "Bu sayfa standart bir web sayfası olmadığı için ekran görüntüsünü alamazsınız."
   },
   "selfScreenshotErrorTitle": {
     "message": "Firefox Screenshots sayfalarının ekran görüntüsünü alamazsınz."
   },
   "emptySelectionErrorTitle": {
     "message": "Seçiminiz çok küçük"
   },
+  "privateWindowErrorTitle": {
+    "message": "Gizli Gezinti modunda Screenshosts özelliği kullanılamaz"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Aksaklıktan dolayı özür dileriz. Gelecek sürümlerde bu özelliği devreye almak için çalışıyoruz."
+  },
   "genericErrorTitle": {
     "message": "Firefox Screenshosts kafayı yedi!"
   },
   "genericErrorDetails": {
     "message": "Ne olduğunu biz de anlamadık. Bir daha denemeye veya başka bir sayfanın ekran görüntüsünü almaya ne dersiniz?"
   },
   "tourBodyOne": {
     "message": "Firefox'tan çıkmadan ekran görüntüleri alın, kaydedin ve paylaşın."
@@ -113,14 +119,14 @@
         "content": "$1"
       },
       "termsandprivacynoticeprivacylink": {
         "content": "$2"
       }
     }
   },
   "termsAndPrivacyNoticeTermsLink": {
-    "message": "Koşullarını"
+    "message": "Koşullarımızı"
   },
   "termsAndPrivacyNoticyPrivacyLink": {
-    "message": "Gizlilik Bildirimini"
+    "message": "Gizlilik Bildirimimizi"
   }
 }
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/uk/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/uk/messages.json
@@ -62,16 +62,22 @@
     "message": "Це не стандартна веб-сторінка, тому ви не можете зробити її знімок."
   },
   "selfScreenshotErrorTitle": {
     "message": "Ви не можете зробити знімок сторінки Firefox Screenshots!"
   },
   "emptySelectionErrorTitle": {
     "message": "Обрана область є замалою"
   },
+  "privateWindowErrorTitle": {
+    "message": "Знімки екрану вимкнено в приватному перегляді"
+  },
+  "privateWindowErrorDetails": {
+    "message": "Вибачте за незручності. Ми працюємо над цією функцією для майбутніх випусків."
+  },
   "genericErrorTitle": {
     "message": "Оу! З Firefox Screenshots щось негаразд."
   },
   "genericErrorDetails": {
     "message": "Ми не впевнені, в чому проблема. Спробувати ще раз, або ж зробити знімок іншої сторінки?"
   },
   "tourBodyOne": {
     "message": "Робіть знімки екрану, зберігайте та діліться ними прямо в Firefox."
--- a/browser/extensions/screenshots/webextension/_locales/ur/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/ur/messages.json
@@ -59,16 +59,19 @@
     "message": "ہم اس صفحہ کی اسکرین شاٹ نہیں کر سکتے۔"
   },
   "unshootablePageErrorDetails": {
     "message": "یہ ایک میعاری صفحہ نہہیں، تو آپ اسکی اسکرین شاٹ نہیں لے سکتے۔"
   },
   "selfScreenshotErrorTitle": {
     "message": "آپ Firefox اسکرین شاٹس صفحے! کی ایک شاٹ نہیں لے سکت"
   },
+  "emptySelectionErrorTitle": {
+    "message": "آپ کا انتخاب بہت چھوٹا ہے"
+  },
   "genericErrorTitle": {
     "message": "لاجواب! Firefox Screenshots بہت مشہور ہو گیا۔"
   },
   "genericErrorDetails": {
     "message": "ہمیں یقین نہیں کہ کیا ہوا تھا۔ خیال رکھ کر پھر کوشش کریں یا بھر مختلف صفحہ کی تصویرلیں؟"
   },
   "tourBodyOne": {
     "message": "۔Firefox کو چھوڑے بغیر اسکرینشاٹس لیں، محفوظ کریں اور شیئر کریں۔"
new file mode 100644
--- /dev/null
+++ b/browser/extensions/screenshots/webextension/_locales/vi/messages.json
@@ -0,0 +1,50 @@
+{
+  "addonAuthorsList": {
+    "message": "Mozilla <screenshots-feedback@mozilla.com>"
+  },
+  "contextMenuLabel": {
+    "message": "Chụp ảnh màn hình"
+  },
+  "myShotsLink": {
+    "message": "Các ảnh chụp của tôi"
+  },
+  "saveScreenshotSelectedArea": {
+    "message": "Lưu lại"
+  },
+  "saveScreenshotVisibleArea": {
+    "message": "Lưu phần nhìn thấy"
+  },
+  "saveScreenshotFullPage": {
+    "message": "Lưu toàn trang"
+  },
+  "cancelScreenshot": {
+    "message": "Hủy bỏ"
+  },
+  "downloadScreenshot": {
+    "message": "Tải xuống"
+  },
+  "notificationLinkCopiedTitle": {
+    "message": "Đã sao chép liên kết"
+  },
+  "tourHeaderFour": {
+    "message": "Như bạn thích"
+  },
+  "tourSkip": {
+    "message": "SKIP"
+  },
+  "tourNext": {
+    "message": "Slide tiếp theo"
+  },
+  "tourPrevious": {
+    "message": "Slide trước đó"
+  },
+  "tourDone": {
+    "message": "Xong"
+  },
+  "termsAndPrivacyNoticeTermsLink": {
+    "message": "Điều khoản"
+  },
+  "termsAndPrivacyNoticyPrivacyLink": {
+    "message": "Chính sách riêng tư"
+  }
+}
\ No newline at end of file
--- a/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/zh_CN/messages.json
@@ -1,91 +1,97 @@
 {
   "addonDescription": {
-    "message": "临时或永久保存网页截图。"
+    "message": "截取网页截图,可临时或永久存储。"
   },
   "addonAuthorsList": {
     "message": "Mozilla <screenshots-feedback@mozilla.com>"
   },
   "contextMenuLabel": {
     "message": "截图"
   },
   "myShotsLink": {
     "message": "我的截图"
   },
   "screenshotInstructions": {
-    "message": "在页面上拖动或单击以选择范围。按 ESC 键取消。"
+    "message": "在页面上拖拽或单击即可选择要截图的区域。按 ESC 键可取消。"
   },
   "saveScreenshotSelectedArea": {
     "message": "保存"
   },
   "saveScreenshotVisibleArea": {
-    "message": "保存可见范围"
+    "message": "截取可见范围"
   },
   "saveScreenshotFullPage": {
-    "message": "保存整个页面"
+    "message": "截取整个页面"
   },
   "cancelScreenshot": {
     "message": "取消"
   },
   "downloadScreenshot": {
     "message": "下载"
   },
   "notificationLinkCopiedTitle": {
     "message": "链接已复制"
   },
   "notificationLinkCopiedDetails": {
-    "message": "您的截图的链接已复制到剪贴板。按 $META_KEY$-V 粘贴。",
+    "message": "您的截图的链接已复制到剪贴板。按 $META_KEY$-V 可粘贴。",
     "placeholders": {
       "meta_key": {
         "content": "$1"
       }
     }
   },
   "requestErrorTitle": {
     "message": "出故障了。"
   },
   "requestErrorDetails": {
     "message": "很抱歉,我们无法为您保存截图。请稍后再试。"
   },
   "connectionErrorTitle": {
     "message": "我们无法连接到您的截图。"
   },
   "connectionErrorDetails": {
-    "message": "请检查您的互联网连接。如果您正常连接到互联网,Firefox Screenshots 的服务器可能遇到了问题。"
+    "message": "请检查您的互联网连接。如果您正常连接到互联网,可能是 Firefox Screenshots 的服务器临时出了问题。"
   },
   "loginErrorDetails": {
     "message": "Firefox Screenshots 服务遇到问题,我们现在无法保存您的截图。请稍后再试。"
   },
   "unshootablePageErrorTitle": {
     "message": "我们无法截图此页面。"
   },
   "unshootablePageErrorDetails": {
     "message": "这不是一个标准的网页,所以无法截图。"
   },
   "selfScreenshotErrorTitle": {
     "message": "您不能截取 Firefox Screenshots 的页面!"
   },
   "emptySelectionErrorTitle": {
     "message": "您选择的范围太小"
   },
+  "privateWindowErrorTitle": {
+    "message": "隐私浏览模式下屏幕截图已被禁用"
+  },
+  "privateWindowErrorDetails": {
+    "message": "很抱歉因此带来的不便。我们将在后续版本中提供此功能。"
+  },
   "genericErrorTitle": {
     "message": "哎呀,Firefox Screenshots 遇到问题。"
   },
   "genericErrorDetails": {
     "message": "我们不确定发生了什么。您可以再试一次或者试试另一个页面。"
   },
   "tourBodyOne": {
     "message": "截取、保存和分享屏幕截图,无需 Firefox 以外的工具。"
   },
   "tourHeaderTwo": {
-    "message": "只截取想要的部分"
+    "message": "截取你所需"
   },
   "tourBodyTwo": {
-    "message": "单击并拖动以截取页面某个区域。您也可以悬停以高亮您的选择范围。"
+    "message": "单击并拖动以截取页面某个区域。您也可以把光标移到你要的地方,高亮后单击即可截图。"
   },
   "tourHeaderThree": {
     "message": "截取窗口或整个页面"
   },
   "tourBodyThree": {
     "message": "选择右上角的按钮可以截取窗口中的可见区域或者整个页面。"
   },
   "tourHeaderFour": {
--- a/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json
+++ b/browser/extensions/screenshots/webextension/_locales/zh_TW/messages.json
@@ -62,42 +62,48 @@
     "message": "這不是標準的網頁,無法拍照。"
   },
   "selfScreenshotErrorTitle": {
     "message": "您不能幫 Firefox Screenshots 的頁面拍照!"
   },
   "emptySelectionErrorTitle": {
     "message": "您的選擇範圍太小"
   },
+  "privateWindowErrorTitle": {
+    "message": "隱私瀏覽模式中將停用 Screenshots 套件"
+  },
+  "privateWindowErrorDetails": {
+    "message": "很抱歉帶來不便,我們將在未來提供此功能。"
+  },
   "genericErrorTitle": {
     "message": "唉呀,Firefox Screenshots 有點秀逗了。"
   },
   "genericErrorDetails": {
     "message": "我們不確定剛剛發生了什麼事,您可以再試一次,或拍攝其他頁面的擷圖嗎?"
   },
   "tourBodyOne": {
     "message": "不用離開 Firefox 就可以拍攝、儲存、分享畫面擷圖。"
   },
   "tourHeaderTwo": {
     "message": "只拍你想拍的"
   },
   "tourBodyTwo": {
-    "message": "點擊並拖曳出頁面當中的一部份,您也可以停留下來,強調選擇範圍。"
+    "message": "點擊並拖曳出要擷取的範圍。或者您也可以用滑鼠移上頁面中的各部分,擷取該範圍。"
   },
   "tourHeaderThree": {
-    "message": "拍攝視窗或整張網頁"
+    "message": "擷取可見範圍或整張網頁"
   },
   "tourBodyThree": {
     "message": "透過右上角的不同按鈕來選擇只拍攝視窗中的可見區域,或是整張網頁。"
   },
   "tourHeaderFour": {
     "message": "用您想要的方式分享"
   },
   "tourBodyFour": {
-    "message": "直接將裁切過的擷圖傳到網路上方便分享,或者下載到電腦上。您也可以點擊「我的擷圖」按鈕,尋找您拍過的所有擷圖。"
+    "message": "裁切過的擷圖,可直接傳到網路上方便分享,也能下載到電腦裡。您也可以點擊「我的擷圖」按鈕,尋找您拍過的所有擷圖。"
   },
   "tourSkip": {
     "message": "略過"
   },
   "tourNext": {
     "message": "下一頁"
   },
   "tourPrevious": {
--- a/browser/extensions/screenshots/webextension/manifest.json
+++ b/browser/extensions/screenshots/webextension/manifest.json
@@ -1,12 +1,12 @@
 {
   "manifest_version": 2,
   "name": "Firefox Screenshots",
-  "version": "10.10.0",
+  "version": "10.11.0",
   "description": "__MSG_addonDescription__",
   "author": "__MSG_addonAuthorsList__",
   "homepage_url": "https://github.com/mozilla-services/screenshots",
   "applications": {
     "gecko": {
       "id": "screenshots@mozilla.org"
     }
   },
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -1,13 +1,15 @@
 #filter substitution
 # 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/.
 
+# Note: All overrides should go to browser/base/jar.mn in order to avoid
+# having to create the same override entry for each locale.
 
 @AB_CD@.jar:
 % locale browser @AB_CD@ %locale/browser/
 *   locale/browser/bookmarks.html                  (generic/profile/bookmarks.html.in)
     locale/browser/aboutAccounts.dtd               (%chrome/browser/aboutAccounts.dtd)
     locale/browser/aboutDialog.dtd                 (%chrome/browser/aboutDialog.dtd)
     locale/browser/aboutPrivateBrowsing.dtd        (%chrome/browser/aboutPrivateBrowsing.dtd)
     locale/browser/aboutPrivateBrowsing.properties (%chrome/browser/aboutPrivateBrowsing.properties)
@@ -114,19 +116,16 @@
     locale/browser/searchplugins/images/yandex-en.ico  (searchplugins/images/yandex-en.ico)
     locale/browser/searchplugins/images/yandex-ru.ico  (searchplugins/images/yandex-ru.ico)
 % locale browser-region @AB_CD@ %locale/browser-region/
     locale/browser-region/region.properties        (%chrome/browser-region/region.properties)
 # the following files are browser-specific overrides
     locale/browser/netError.dtd                (%chrome/overrides/netError.dtd)
     locale/browser/appstrings.properties       (%chrome/overrides/appstrings.properties)
     locale/browser/downloads/settingsChange.dtd  (%chrome/overrides/settingsChange.dtd)
-% override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd
-% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
-% override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
 % locale pdf.js @AB_CD@ %locale/pdfviewer/
     locale/pdfviewer/viewer.properties             (%pdfviewer/viewer.properties)
     locale/pdfviewer/chrome.properties             (%pdfviewer/chrome.properties)
 
 #ifdef XPI_NAME
 # Bug 1240628, restructure how l10n repacks work with feature addons
 # This is hacky, but ensures the chrome.manifest chain is complete
 [.] chrome.jar:
--- a/browser/modules/BrowserUITelemetry.jsm
+++ b/browser/modules/BrowserUITelemetry.jsm
@@ -51,18 +51,18 @@ XPCOMUtils.defineLazyGetter(this, "DEFAU
   let result = {
     "nav-bar": [
       "back-button",
       "forward-button",
       "stop-reload-button",
       "home-button",
       "urlbar-container",
       "search-container",
-      "bookmarks-menu-button",
       "downloads-button",
+      "library-button",
       "sidebar-button",
     ],
     // It's true that toolbar-menubar is not visible
     // on OS X, but the XUL node is definitely present
     // in the document.
     "toolbar-menubar": [
       "menubar-items",
     ],
@@ -82,16 +82,17 @@ XPCOMUtils.defineLazyGetter(this, "DEFAU
 });
 
 XPCOMUtils.defineLazyGetter(this, "DEFAULT_AREAS", function() {
   return Object.keys(DEFAULT_AREA_PLACEMENTS);
 });
 
 XPCOMUtils.defineLazyGetter(this, "PALETTE_ITEMS", function() {
   let result = [
+    "bookmarks-menu-button",
     "open-file-button",
     "developer-button",
     "feed-button",
     "email-link-button",
     "containers-panelmenu",
     ...LEGACY_PANEL_PLACEMENTS,
     "characterencoding-button",
   ];
--- a/browser/modules/test/browser/browser_PageActions.js
+++ b/browser/modules/test/browser/browser_PageActions.js
@@ -1,8 +1,9 @@
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
 // This is a test for PageActions.jsm, specifically the generalized parts that
 // add and remove page actions and toggle them in the urlbar.  This does not
 // test the built-in page actions; browser_page_action_menu.js does that.
 
 // Initialization.  Must run first.
 add_task(async function init() {
--- a/browser/modules/test/browser/browser_SitePermissions_expiry.js
+++ b/browser/modules/test/browser/browser_SitePermissions_expiry.js
@@ -1,11 +1,12 @@
 /* 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/. */
+/* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 "use strict";
 
 Cu.import("resource:///modules/SitePermissions.jsm", this);
 
 const EXPIRE_TIME_MS = 100;
 const TIMEOUT_MS = 500;
 
--- a/browser/themes/shared/compacttheme.inc.css
+++ b/browser/themes/shared/compacttheme.inc.css
@@ -23,19 +23,16 @@
   --chrome-nav-bar-separator-color: rgba(0,0,0,.2);
   --chrome-nav-buttons-background: hsla(240, 5%, 5%, .1);
   --chrome-nav-buttons-hover-background: hsla(240, 5%, 5%, .15);
   --chrome-nav-bar-controls-border-color: hsla(240, 5%, 5%, .3);
   --chrome-selection-color: #fff;
   --chrome-selection-background-color: #5675B9;
 
   /* Url and search bars */
-  /* The URL bar needs an opaque background otherwise the domain highlighting
-     code (GetURLSecondaryColor) will not be able to calculate an appropriate
-     complement */
   --url-and-searchbar-background-color: rgb(71, 71, 73);
   --urlbar-separator-color: #5F6670;
   --urlbar-dropmarker-url: url("chrome://browser/skin/compacttheme/urlbar-history-dropmarker.svg");
   --urlbar-dropmarker-region: rect(0px, 11px, 14px, 0px);
   --urlbar-dropmarker-hover-region: rect(0, 22px, 14px, 11px);
   --urlbar-dropmarker-active-region: rect(0px, 33px, 14px, 22px);
   --urlbar-dropmarker-2x-url: url("chrome://browser/skin/compacttheme/urlbar-history-dropmarker.svg");
   --urlbar-dropmarker-2x-region: rect(0px, 11px, 14px, 0px);
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -1,15 +1,16 @@
 /* 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/. */
 
 %filter substitution
 
 %define menuPanelWidth 22.35em
+%define wideMenuPanelWidth 29em
 %define standaloneSubviewWidth 30em
 % XXXgijs This is the ugliest bit of code I think I've ever written for Mozilla.
 % Basically, the 0.1px is there to avoid CSS rounding errors causing buttons to wrap.
 % For gory details, refer to https://bugzilla.mozilla.org/show_bug.cgi?id=963365#c11
 % There's no calc() here (and therefore lots of calc() where this is used) because
 % we don't support nested calc(): https://bugzilla.mozilla.org/show_bug.cgi?id=968761
 %define menuPanelButtonWidth (@menuPanelWidth@ / 3 - 0.1px)
 %define buttonStateHover :not(:-moz-any([disabled],[open],:active)):-moz-any(:hover,:focus)
@@ -345,16 +346,23 @@ photonpanelmultiview panelview {
 }
 
 #appMenu-popup panelview,
 #customizationui-widget-multiview panelview:not([extension]) {
   min-width: @menuPanelWidth@;
   max-width: 30em;
 }
 
+#customizationui-widget-multiview #appMenu-libraryView,
+#pageActionPanel panelview,
+#widget-overflow panelview {
+  min-width: @wideMenuPanelWidth@;
+  max-width: @wideMenuPanelWidth@;
+}
+
 /* Add 2 * 12px extra width for touch mode button padding. */
 #appMenu-popup[touchmode] panelview {
   min-width: calc(@menuPanelWidth@ + 24px);
 }
 
 photonpanelmultiview .panel-subview-body {
   padding: 6px 0;
 }
@@ -1455,17 +1463,17 @@ menuitem.panel-subview-footer@menuStateA
   padding-bottom: 4px;
 }
 
 /* Disabled (empty) item is always alone and never has an icon, so fix its left padding */
 #BMB_bookmarksPopup menupopup[emptyplacesresult] .bookmark-item.subviewbutton {
   padding-left: 6px;
 }
 
-#widget-overflow-scroller > toolbarseparator,
+#widget-overflow-mainView > .panel-subview-body > toolbarseparator,
 .PanelUI-subView menuseparator,
 .PanelUI-subView toolbarseparator,
 .cui-widget-panelview menuseparator,
 .cui-widget-panel toolbarseparator {
   -moz-appearance: none;
   min-height: 0;
   border-top: 1px solid var(--panel-separator-color);
   border-bottom: none;
@@ -1573,21 +1581,16 @@ toolbarbutton[panel-multiview-anchor="tr
 toolbarpaletteitem[place="palette"] > .toolbarbutton-1 > .toolbarbutton-menu-dropmarker,
 #bookmarks-menu-button[cui-areatype="menu-panel"] > .toolbarbutton-menu-dropmarker,
 #bookmarks-menu-button[overflowedItem] > .toolbarbutton-menu-dropmarker,
 toolbarpaletteitem[place="palette"] > .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker,
 #bookmarks-menu-button[cui-areatype="menu-panel"] > .toolbarbutton-menubutton-dropmarker {
   display: none;
 }
 
-#search-container[cui-areatype="menu-panel"],
-#wrapper-search-container[place="panel"] {
-  width: @menuPanelWidth@;
-}
-
 #search-container[cui-areatype="menu-panel"] {
   margin-top: 6px;
   margin-bottom: 6px;
 }
 
 toolbarpaletteitem[place="palette"] > #search-container {
   min-width: 7em;
   width: 7em;
@@ -1658,29 +1661,24 @@ toolbarpaletteitem[place=panel] > .toolb
 }
 
 .cui-widget-panelview,
 #widget-overflow-mainView .panel-subview-body {
   overflow-y: auto;
   overflow-x: hidden;
 }
 
-#widget-overflow-scroller {
-  margin-top: 4px;
-  margin-bottom: 4px;
-}
-
 .widget-overflow-list {
-  width: @menuPanelWidth@;
+  width: @wideMenuPanelWidth@;
 }
 
 toolbaritem[overflowedItem=true],
 .widget-overflow-list .toolbarbutton-1 {
   width: 100%;
-  max-width: @menuPanelWidth@;
+  max-width: @wideMenuPanelWidth@;
   background-repeat: no-repeat;
   background-position: 0 center;
 }
 
 .widget-overflow-list .toolbarbutton-1,
 .widget-overflow-list .toolbarbutton-1 > .toolbarbutton-menubutton-button {
   -moz-box-align: center;
   -moz-box-orient: horizontal;
--- a/browser/themes/shared/icons/bookmark-animation.svg
+++ b/browser/themes/shared/icons/bookmark-animation.svg
@@ -1,542 +1,542 @@
-<!-- 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
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <svg xmlns="http://www.w3.org/2000/svg" width="660" height="33">
   <svg>
     <defs>
       <mask id="b" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(0 0 0 0 16.352 17.593)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(0 0 0 0 16.352 17.593)"/>
       </mask>
       <mask id="a" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(0 0 0 0 16.463 17.517)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(0 0 0 0 16.463 17.517)"/>
       </mask>
     </defs>
     <path fill="none" stroke="context-fill" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.307l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.624 -2.66 2.897 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
     <g mask="url(#a)">
       <path fill="#FFF" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.59" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.59" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
     </g>
     <g mask="url(#b)" opacity=".08">
       <path fill="context-fill" d="M16.502 10.083l2.255 4.57 5.044 0.734 -3.65 3.557 0.862 5.023 -4.511 -2.371 -4.512 2.371 0.862 -5.023 -3.65 -3.557 5.044 -0.733 2.256 -4.57z"/>
       <path fill="none" d="M16.502 10.083l2.255 4.57 5.044 0.734 -3.65 3.557 0.862 5.023 -4.511 -2.371 -4.512 2.371 0.862 -5.023 -3.65 -3.557 5.044 -0.733 2.256 -4.57z"/>
     </g>
   </svg>
   <svg x="33">
     <defs>
       <mask id="d" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.04 0 0 .04 9.957 11.594)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.04 0 0 .04 9.957 11.594)"/>
       </mask>
       <mask id="c" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.04 0 0 .04 10.127 12.218)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.04 0 0 .04 10.127 12.218)"/>
       </mask>
     </defs>
     <path fill="none" stroke="context-fill" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.307l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.624 -2.66 2.897 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
     <g mask="url(#c)">
       <path fill="#FFF" d="M16.457 9.283l1.712 3.37 0.724 1.425 1.575 0.268 3.66 0.626 -2.665 2.902 -1.032 1.124 0.23 1.509 0.588 3.831 -3.328 -1.765 -1.498 -0.794 -1.493 0.802 -3.233 1.734 0.585 -3.807 0.233 -1.517 -1.045 -1.127 -2.681 -2.887 3.726 -0.626 1.616 -0.272 0.715 -1.476 1.609 -3.318"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.587" d="M16.457 9.283l1.712 3.37 0.724 1.425 1.575 0.268 3.66 0.626 -2.665 2.902 -1.032 1.124 0.23 1.509 0.588 3.831 -3.328 -1.765 -1.498 -0.794 -1.493 0.802 -3.233 1.734 0.585 -3.807 0.233 -1.517 -1.045 -1.127 -2.681 -2.887 3.726 -0.626 1.616 -0.272 0.715 -1.476 1.609 -3.318"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.587" d="M16.457 9.283l1.712 3.37 0.724 1.425 1.575 0.268 3.66 0.626 -2.665 2.902 -1.032 1.124 0.23 1.509 0.588 3.831 -3.328 -1.765 -1.498 -0.794 -1.493 0.802 -3.233 1.734 0.585 -3.807 0.233 -1.517 -1.045 -1.127 -2.681 -2.887 3.726 -0.626 1.616 -0.272 0.715 -1.476 1.609 -3.318"/>
     </g>
     <g mask="url(#d)" opacity=".08">
-      <path fill="#2A9EFF" d="M16.502 10.094l2.252 4.563 5.036 0.732 -3.644 3.552 0.86 5.015 -4.504 -2.368 -4.504 2.368 0.86 -5.015 -3.644 -3.552 5.036 -0.732 2.252 -4.563z"/>
+      <path fill="context-stroke" d="M16.502 10.094l2.252 4.563 5.036 0.732 -3.644 3.552 0.86 5.015 -4.504 -2.368 -4.504 2.368 0.86 -5.015 -3.644 -3.552 5.036 -0.732 2.252 -4.563z"/>
       <path fill="none" d="M16.502 10.094l2.252 4.563 5.036 0.732 -3.644 3.552 0.86 5.015 -4.504 -2.368 -4.504 2.368 0.86 -5.015 -3.644 -3.552 5.036 -0.732 2.252 -4.563z"/>
     </g>
   </svg>
   <svg x="66">
     <defs>
       <mask id="f" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.08 0 0 .08 3.562 5.594)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.08 0 0 .08 3.562 5.594)"/>
       </mask>
       <mask id="e" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.08 0 0 .08 3.791 6.92)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.08 0 0 .08 3.791 6.92)"/>
       </mask>
     </defs>
     <path fill="none" stroke="context-fill" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.307l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.624 -2.66 2.897 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
     <g mask="url(#e)">
       <path fill="#FFF" d="M16.457 9.308l1.708 3.359 0.721 1.42 1.569 0.267 3.649 0.624 -2.657 2.892 -1.029 1.12 0.23 1.504 0.585 3.819 -3.316 -1.76 -1.493 -0.791 -1.488 0.799 -3.223 1.729 0.584 -3.794 0.232 -1.513 -1.041 -1.123 -2.673 -2.878 3.714 -0.624 1.61 -0.27 0.713 -1.471 1.604 -3.307"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.582" d="M16.457 9.308l1.708 3.359 0.721 1.42 1.569 0.267 3.649 0.624 -2.657 2.892 -1.029 1.12 0.23 1.504 0.585 3.819 -3.316 -1.76 -1.493 -0.791 -1.488 0.799 -3.223 1.729 0.584 -3.794 0.232 -1.513 -1.041 -1.123 -2.673 -2.878 3.714 -0.624 1.61 -0.27 0.713 -1.471 1.604 -3.307"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.582" d="M16.457 9.308l1.708 3.359 0.721 1.42 1.569 0.267 3.649 0.624 -2.657 2.892 -1.029 1.12 0.23 1.504 0.585 3.819 -3.316 -1.76 -1.493 -0.791 -1.488 0.799 -3.223 1.729 0.584 -3.794 0.232 -1.513 -1.041 -1.123 -2.673 -2.878 3.714 -0.624 1.61 -0.27 0.713 -1.471 1.604 -3.307"/>
     </g>
     <g mask="url(#f)" opacity=".387">
-      <path fill="#2399FF" d="M16.502 10.116l2.245 4.548 5.019 0.729 -3.632 3.54 0.858 4.999 -4.49 -2.36 -4.489 2.36 0.858 -4.999 -3.632 -3.54 5.019 -0.73 2.244 -4.547z"/>
+      <path fill="context-stroke" d="M16.502 10.116l2.245 4.548 5.019 0.729 -3.632 3.54 0.858 4.999 -4.49 -2.36 -4.489 2.36 0.858 -4.999 -3.632 -3.54 5.019 -0.73 2.244 -4.547z"/>
       <path fill="none" d="M16.502 10.116l2.245 4.548 5.019 0.729 -3.632 3.54 0.858 4.999 -4.49 -2.36 -4.489 2.36 0.858 -4.999 -3.632 -3.54 5.019 -0.73 2.244 -4.547z"/>
     </g>
   </svg>
   <svg x="99">
     <defs>
       <mask id="h" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.12 0 0 .12 -2.833 -.405)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.12 0 0 .12 -2.833 -.405)"/>
       </mask>
       <mask id="g" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.12 0 0 .12 -2.545 1.62)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.12 0 0 .12 -2.545 1.62)"/>
       </mask>
     </defs>
     <path fill="none" stroke="context-fill" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.307l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.624 -2.66 2.897 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
     <g mask="url(#g)">
       <path fill="#FFF" d="M16.458 9.336l1.7 3.347 0.72 1.414 1.562 0.266 3.635 0.621 -2.646 2.882 -1.025 1.115 0.229 1.498 0.583 3.804 -3.304 -1.752 -1.487 -0.789 -1.482 0.796 -3.21 1.722 0.58 -3.78 0.233 -1.506 -1.038 -1.118 -2.662 -2.867 3.699 -0.622 1.604 -0.27 0.71 -1.464 1.598 -3.295"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.576" d="M16.458 9.336l1.7 3.347 0.72 1.414 1.562 0.266 3.635 0.621 -2.646 2.882 -1.025 1.115 0.229 1.498 0.583 3.804 -3.304 -1.752 -1.487 -0.789 -1.482 0.796 -3.21 1.722 0.58 -3.78 0.233 -1.506 -1.038 -1.118 -2.662 -2.867 3.699 -0.622 1.604 -0.27 0.71 -1.464 1.598 -3.295"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.576" d="M16.458 9.336l1.7 3.347 0.72 1.414 1.562 0.266 3.635 0.621 -2.646 2.882 -1.025 1.115 0.229 1.498 0.583 3.804 -3.304 -1.752 -1.487 -0.789 -1.482 0.796 -3.21 1.722 0.58 -3.78 0.233 -1.506 -1.038 -1.118 -2.662 -2.867 3.699 -0.622 1.604 -0.27 0.71 -1.464 1.598 -3.295"/>
     </g>
     <g mask="url(#h)" opacity=".693">
-      <path fill="#1D93FF" d="M16.503 10.141l2.236 4.53 5 0.727 -3.618 3.526 0.854 4.98 -4.472 -2.351 -4.471 2.35 0.854 -4.979 -3.618 -3.526 5 -0.726 2.235 -4.53z"/>
+      <path fill="context-stroke" d="M16.503 10.141l2.236 4.53 5 0.727 -3.618 3.526 0.854 4.98 -4.472 -2.351 -4.471 2.35 0.854 -4.979 -3.618 -3.526 5 -0.726 2.235 -4.53z"/>
       <path fill="none" d="M16.503 10.141l2.236 4.53 5 0.727 -3.618 3.526 0.854 4.98 -4.472 -2.351 -4.471 2.35 0.854 -4.979 -3.618 -3.526 5 -0.726 2.235 -4.53z"/>
     </g>
   </svg>
   <svg x="132">
     <defs>
       <mask id="j" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.16 0 0 .16 -9.228 -6.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.16 0 0 .16 -9.228 -6.404)"/>
       </mask>
       <mask id="i" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.16 0 0 .16 -8.88 -3.678)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.16 0 0 .16 -8.88 -3.678)"/>
       </mask>
     </defs>
     <g mask="url(#i)">
       <path fill="#FFF" d="M16.459 9.355l1.696 3.338 0.717 1.41 1.559 0.266 3.625 0.62 -2.64 2.874 -1.022 1.112 0.229 1.495 0.581 3.794 -3.295 -1.748 -1.484 -0.787 -1.478 0.794 -3.201 1.718 0.58 -3.77 0.23 -1.503 -1.035 -1.115 -2.655 -2.86 3.69 -0.62 1.6 -0.269 0.708 -1.46 1.593 -3.287"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.572" d="M16.459 9.355l1.696 3.338 0.717 1.41 1.559 0.266 3.625 0.62 -2.64 2.874 -1.022 1.112 0.229 1.495 0.581 3.794 -3.295 -1.748 -1.484 -0.787 -1.478 0.794 -3.201 1.718 0.58 -3.77 0.23 -1.503 -1.035 -1.115 -2.655 -2.86 3.69 -0.62 1.6 -0.269 0.708 -1.46 1.593 -3.287"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.572" d="M16.459 9.355l1.696 3.338 0.717 1.41 1.559 0.266 3.625 0.62 -2.64 2.874 -1.022 1.112 0.229 1.495 0.581 3.794 -3.295 -1.748 -1.484 -0.787 -1.478 0.794 -3.201 1.718 0.58 -3.77 0.23 -1.503 -1.035 -1.115 -2.655 -2.86 3.69 -0.62 1.6 -0.269 0.708 -1.46 1.593 -3.287"/>
     </g>
     <g mask="url(#j)">
-      <path fill="#168EFF" d="M16.504 10.158l2.23 4.519 4.986 0.724 -3.608 3.518 0.852 4.966 -4.46 -2.345 -4.46 2.345 0.851 -4.966 -3.608 -3.518 4.987 -0.724 2.23 -4.519z"/>
+      <path fill="context-stroke" d="M16.504 10.158l2.23 4.519 4.986 0.724 -3.608 3.518 0.852 4.966 -4.46 -2.345 -4.46 2.345 0.851 -4.966 -3.608 -3.518 4.987 -0.724 2.23 -4.519z"/>
       <path fill="none" d="M16.504 10.158l2.23 4.519 4.986 0.724 -3.608 3.518 0.852 4.966 -4.46 -2.345 -4.46 2.345 0.851 -4.966 -3.608 -3.518 4.987 -0.724 2.23 -4.519z"/>
     </g>
   </svg>
   <svg x="165">
     <defs>
       <mask id="l" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
       </mask>
       <mask id="k" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
       </mask>
     </defs>
     <g mask="url(#k)">
       <path fill="#FFF" d="M16.46 9.4l1.686 3.318 0.712 1.402 1.55 0.264 3.602 0.615 -2.623 2.856 -1.016 1.106 0.227 1.485 0.578 3.77 -3.275 -1.737 -1.474 -0.781 -1.469 0.789 -3.181 1.707 0.575 -3.746 0.23 -1.494 -1.028 -1.109 -2.639 -2.841 3.667 -0.616 1.59 -0.268 0.703 -1.452 1.584 -3.265"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.562" d="M16.46 9.4l1.686 3.318 0.712 1.402 1.55 0.264 3.602 0.615 -2.623 2.856 -1.016 1.106 0.227 1.485 0.578 3.77 -3.275 -1.737 -1.474 -0.781 -1.469 0.789 -3.181 1.707 0.575 -3.746 0.23 -1.494 -1.028 -1.109 -2.639 -2.841 3.667 -0.616 1.59 -0.268 0.703 -1.452 1.584 -3.265"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.562" d="M16.46 9.4l1.686 3.318 0.712 1.402 1.55 0.264 3.602 0.615 -2.623 2.856 -1.016 1.106 0.227 1.485 0.578 3.77 -3.275 -1.737 -1.474 -0.781 -1.469 0.789 -3.181 1.707 0.575 -3.746 0.23 -1.494 -1.028 -1.109 -2.639 -2.841 3.667 -0.616 1.59 -0.268 0.703 -1.452 1.584 -3.265"/>
     </g>
     <g mask="url(#l)">
-      <path fill="#1089FF" d="M16.505 10.199l2.216 4.49 4.956 0.72 -3.586 3.496 0.846 4.935 -4.432 -2.33 -4.432 2.33 0.846 -4.935 -3.586 -3.496 4.956 -0.72 2.216 -4.49z"/>
+      <path fill="context-stroke" d="M16.505 10.199l2.216 4.49 4.956 0.72 -3.586 3.496 0.846 4.935 -4.432 -2.33 -4.432 2.33 0.846 -4.935 -3.586 -3.496 4.956 -0.72 2.216 -4.49z"/>
       <path fill="none" d="M16.505 10.199l2.216 4.49 4.956 0.72 -3.586 3.496 0.846 4.935 -4.432 -2.33 -4.432 2.33 0.846 -4.935 -3.586 -3.496 4.956 -0.72 2.216 -4.49z"/>
     </g>
   </svg>
   <svg x="198">
     <defs>
       <mask id="n" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
       </mask>
       <mask id="m" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
       </mask>
     </defs>
     <g mask="url(#m)">
       <path fill="#FFF" d="M16.457 9.299l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.625 -2.66 2.896 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.299l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.625 -2.66 2.896 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.299l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.625 -2.66 2.896 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31"/>
     </g>
     <g mask="url(#n)">
-      <path fill="#0A84FF" d="M16.502 10.108l2.247 4.553 5.025 0.73 -3.636 3.545 0.858 5.004 -4.494 -2.363 -4.494 2.363 0.858 -5.004 -3.636 -3.545 5.025 -0.73 2.247 -4.553z"/>
+      <path fill="context-stroke" d="M16.502 10.108l2.247 4.553 5.025 0.73 -3.636 3.545 0.858 5.004 -4.494 -2.363 -4.494 2.363 0.858 -5.004 -3.636 -3.545 5.025 -0.73 2.247 -4.553z"/>
       <path fill="none" d="M16.502 10.108l2.247 4.553 5.025 0.73 -3.636 3.545 0.858 5.004 -4.494 -2.363 -4.494 2.363 0.858 -5.004 -3.636 -3.545 5.025 -0.73 2.247 -4.553z"/>
     </g>
-    <path fill="#000" d="M4.273 14.274l-0.235 -0.115"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-0.235 -0.115"/>
-    <path fill="#000" d="M28.738 14.306l0.234 -0.115"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l0.234 -0.115"/>
-    <path fill="#000" d="M24.168 28.806l0.168 0.2"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l0.168 0.2"/>
-    <path fill="#000" d="M8.816 28.826l-0.168 0.2"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-0.168 0.2"/>
-    <path fill="#000" d="M16.559 4.97v-0.26"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-0.26"/>
+    <path fill="context-fill" d="M4.273 14.274l-0.235 -0.115"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-0.235 -0.115"/>
+    <path fill="context-fill" d="M28.738 14.306l0.234 -0.115"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l0.234 -0.115"/>
+    <path fill="context-fill" d="M24.168 28.806l0.168 0.2"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l0.168 0.2"/>
+    <path fill="context-fill" d="M8.816 28.826l-0.168 0.2"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-0.168 0.2"/>
+    <path fill="context-fill" d="M16.559 4.97v-0.26"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-0.26"/>
   </svg>
   <svg x="231">
     <defs>
       <mask id="p" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
       </mask>
       <mask id="o" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
       </mask>
     </defs>
     <g mask="url(#o)">
       <path fill="#FFF" d="M16.448 9.017l1.774 3.492 0.75 1.475 1.63 0.278 3.792 0.648 -2.76 3.007 -1.07 1.163 0.24 1.563 0.608 3.97 -3.447 -1.83 -1.552 -0.822 -1.546 0.83 -3.35 1.797 0.607 -3.943 0.241 -1.572 -1.082 -1.167 -2.777 -2.99 3.859 -0.65 1.674 -0.281 0.74 -1.528 1.667 -3.437"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.644" d="M16.448 9.017l1.774 3.492 0.75 1.475 1.63 0.278 3.792 0.648 -2.76 3.007 -1.07 1.163 0.24 1.563 0.608 3.97 -3.447 -1.83 -1.552 -0.822 -1.546 0.83 -3.35 1.797 0.607 -3.943 0.241 -1.572 -1.082 -1.167 -2.777 -2.99 3.859 -0.65 1.674 -0.281 0.74 -1.528 1.667 -3.437"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.644" d="M16.448 9.017l1.774 3.492 0.75 1.475 1.63 0.278 3.792 0.648 -2.76 3.007 -1.07 1.163 0.24 1.563 0.608 3.97 -3.447 -1.83 -1.552 -0.822 -1.546 0.83 -3.35 1.797 0.607 -3.943 0.241 -1.572 -1.082 -1.167 -2.777 -2.99 3.859 -0.65 1.674 -0.281 0.74 -1.528 1.667 -3.437"/>
     </g>
     <g mask="url(#p)">
-      <path fill="#0A84FF" d="M16.495 9.857l2.332 4.727 5.217 0.758 -3.775 3.68 0.891 5.194 -4.665 -2.453 -4.666 2.453 0.891 -5.195 -3.774 -3.68 5.216 -0.757 2.333 -4.727z"/>
+      <path fill="context-stroke" d="M16.495 9.857l2.332 4.727 5.217 0.758 -3.775 3.68 0.891 5.194 -4.665 -2.453 -4.666 2.453 0.891 -5.195 -3.774 -3.68 5.216 -0.757 2.333 -4.727z"/>
       <path fill="none" d="M16.495 9.857l2.332 4.727 5.217 0.758 -3.775 3.68 0.891 5.194 -4.665 -2.453 -4.666 2.453 0.891 -5.195 -3.774 -3.68 5.216 -0.757 2.333 -4.727z"/>
     </g>
-    <path fill="#000" d="M4.273 14.274l-0.772 -0.377"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-0.772 -0.377"/>
-    <path fill="#000" d="M28.738 14.306s0.33 -0.16 0.772 -0.377"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306s0.33 -0.16 0.772 -0.377"/>
-    <path fill="#000" d="M24.168 28.806l0.552 0.658"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l0.552 0.658"/>
-    <path fill="#000" d="M8.816 28.826l-0.552 0.657"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-0.552 0.657"/>
-    <path fill="#000" d="M16.559 4.97v-0.859"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-0.859"/>
+    <path fill="context-fill" d="M4.273 14.274l-0.772 -0.377"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-0.772 -0.377"/>
+    <path fill="context-fill" d="M28.738 14.306s0.33 -0.16 0.772 -0.377"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306s0.33 -0.16 0.772 -0.377"/>
+    <path fill="context-fill" d="M24.168 28.806l0.552 0.658"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l0.552 0.658"/>
+    <path fill="context-fill" d="M8.816 28.826l-0.552 0.657"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-0.552 0.657"/>
+    <path fill="context-fill" d="M16.559 4.97v-0.859"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-0.859"/>
   </svg>
   <svg x="264">
     <defs>
       <mask id="r" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
       </mask>
       <mask id="q" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
       </mask>
     </defs>
     <g mask="url(#q)">
       <path fill="#FFF" d="M16.437 8.692l1.85 3.64 0.781 1.538 1.7 0.29 3.953 0.675 -2.878 3.133 -1.115 1.213 0.25 1.63 0.633 4.137 -3.593 -1.906 -1.617 -0.858 -1.612 0.866 -3.491 1.873 0.632 -4.11 0.252 -1.639 -1.129 -1.216 -2.895 -3.118 4.023 -0.676 1.745 -0.294 0.772 -1.593 1.737 -3.583"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.714" d="M16.437 8.692l1.85 3.64 0.781 1.538 1.7 0.29 3.953 0.675 -2.878 3.133 -1.115 1.213 0.25 1.63 0.633 4.137 -3.593 -1.906 -1.617 -0.858 -1.612 0.866 -3.491 1.873 0.632 -4.11 0.252 -1.639 -1.129 -1.216 -2.895 -3.118 4.023 -0.676 1.745 -0.294 0.772 -1.593 1.737 -3.583"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.714" d="M16.437 8.692l1.85 3.64 0.781 1.538 1.7 0.29 3.953 0.675 -2.878 3.133 -1.115 1.213 0.25 1.63 0.633 4.137 -3.593 -1.906 -1.617 -0.858 -1.612 0.866 -3.491 1.873 0.632 -4.11 0.252 -1.639 -1.129 -1.216 -2.895 -3.118 4.023 -0.676 1.745 -0.294 0.772 -1.593 1.737 -3.583"/>
     </g>
     <g mask="url(#r)">
-      <path fill="#0A84FF" d="M16.486 9.568l2.432 4.927 5.437 0.79 -3.935 3.835 0.93 5.415 -4.864 -2.557 -4.863 2.557 0.929 -5.415 -3.935 -3.835 5.437 -0.79 2.432 -4.927z"/>
+      <path fill="context-stroke" d="M16.486 9.568l2.432 4.927 5.437 0.79 -3.935 3.835 0.93 5.415 -4.864 -2.557 -4.863 2.557 0.929 -5.415 -3.935 -3.835 5.437 -0.79 2.432 -4.927z"/>
       <path fill="none" d="M16.486 9.568l2.432 4.927 5.437 0.79 -3.935 3.835 0.93 5.415 -4.864 -2.557 -4.863 2.557 0.929 -5.415 -3.935 -3.835 5.437 -0.79 2.432 -4.927z"/>
     </g>
-    <path fill="#000" d="M4.273 14.274l-1.48 -0.722"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-1.48 -0.722"/>
-    <path fill="#000" d="M28.738 14.306l1.48 -0.722"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l1.48 -0.722"/>
-    <path fill="#000" d="M24.168 28.806l1.058 1.26"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l1.058 1.26"/>
-    <path fill="#000" d="M8.816 28.826l-1.059 1.26"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-1.059 1.26"/>
-    <path fill="#000" d="M16.559 4.97v-1.646"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-1.646"/>
+    <path fill="context-fill" d="M4.273 14.274l-1.48 -0.722"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-1.48 -0.722"/>
+    <path fill="context-fill" d="M28.738 14.306l1.48 -0.722"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l1.48 -0.722"/>
+    <path fill="context-fill" d="M24.168 28.806l1.058 1.26"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l1.058 1.26"/>
+    <path fill="context-fill" d="M8.816 28.826l-1.059 1.26"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-1.059 1.26"/>
+    <path fill="context-fill" d="M16.559 4.97v-1.646"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-1.646"/>
   </svg>
   <svg x="297">
     <defs>
       <mask id="t" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.623 -12.404)"/>
       </mask>
       <mask id="s" mask-type="alpha">
-        <path fill="#0a84ff" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
+        <path fill="context-stroke" d="M0 0h320v240h-320z" transform="matrix(.2 0 0 .2 -15.216 -8.977)"/>
       </mask>
     </defs>
     <g mask="url(#s)">
       <path fill="#FFF" d="M16.426 8.351l1.928 3.795 0.815 1.603 1.772 0.302 4.121 0.705 -3 3.267 -1.162 1.264 0.26 1.7 0.66 4.313 -3.746 -1.987 -1.686 -0.895 -1.68 0.903 -3.64 1.952 0.659 -4.285 0.262 -1.708 -1.176 -1.268 -3.018 -3.251 4.194 -0.705 1.819 -0.306 0.805 -1.66 1.811 -3.736"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.787" d="M16.426 8.351l1.928 3.795 0.815 1.603 1.772 0.302 4.121 0.705 -3 3.267 -1.162 1.264 0.26 1.7 0.66 4.313 -3.746 -1.987 -1.686 -0.895 -1.68 0.903 -3.64 1.952 0.659 -4.285 0.262 -1.708 -1.176 -1.268 -3.018 -3.251 4.194 -0.705 1.819 -0.306 0.805 -1.66 1.811 -3.736"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.787" d="M16.426 8.351l1.928 3.795 0.815 1.603 1.772 0.302 4.121 0.705 -3 3.267 -1.162 1.264 0.26 1.7 0.66 4.313 -3.746 -1.987 -1.686 -0.895 -1.68 0.903 -3.64 1.952 0.659 -4.285 0.262 -1.708 -1.176 -1.268 -3.018 -3.251 4.194 -0.705 1.819 -0.306 0.805 -1.66 1.811 -3.736"/>
     </g>
     <g mask="url(#t)">
-      <path fill="#0A84FF" d="M16.477 9.264l2.535 5.137 5.669 0.824 -4.102 3.998 0.968 5.646 -5.07 -2.666 -5.07 2.666 0.968 -5.646 -4.102 -3.998 5.669 -0.824 2.535 -5.137z"/>
+      <path fill="context-stroke" d="M16.477 9.264l2.535 5.137 5.669 0.824 -4.102 3.998 0.968 5.646 -5.07 -2.666 -5.07 2.666 0.968 -5.646 -4.102 -3.998 5.669 -0.824 2.535 -5.137z"/>
       <path fill="none" d="M16.477 9.264l2.535 5.137 5.669 0.824 -4.102 3.998 0.968 5.646 -5.07 -2.666 -5.07 2.666 0.968 -5.646 -4.102 -3.998 5.669 -0.824 2.535 -5.137z"/>
     </g>
-    <path fill="#000" d="M4.273 14.274l-2.281 -1.113"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-2.281 -1.113"/>
-    <path fill="#000" d="M28.738 14.306l2.28 -1.112"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l2.28 -1.112"/>
-    <path fill="#000" d="M24.168 28.806l1.631 1.944"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l1.631 1.944"/>
-    <path fill="#000" d="M8.816 28.826l-1.631 1.943"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-1.631 1.943"/>
-    <path fill="#000" d="M16.559 4.97v-2.537"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-2.537"/>
+    <path fill="context-fill" d="M4.273 14.274l-2.281 -1.113"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-2.281 -1.113"/>
+    <path fill="context-fill" d="M28.738 14.306l2.28 -1.112"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l2.28 -1.112"/>
+    <path fill="context-fill" d="M24.168 28.806l1.631 1.944"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l1.631 1.944"/>
+    <path fill="context-fill" d="M8.816 28.826l-1.631 1.943"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-1.631 1.943"/>
+    <path fill="context-fill" d="M16.559 4.97v-2.537"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-2.537"/>
   </svg>
   <svg x="330">
     <defs>
       <mask id="v" mask-type="alpha">
         <g clip-path="url(#f10_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="u" mask-type="alpha">
         <g clip-path="url(#f10_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#u)">
       <path fill="#FFF" d="M16.415 8.021l2.005 3.945 0.847 1.667 1.842 0.314 4.284 0.732 -3.119 3.397 -1.208 1.314 0.27 1.766 0.687 4.484 -3.894 -2.065 -1.753 -0.93 -1.747 0.938 -3.784 2.03 0.685 -4.455 0.273 -1.776 -1.223 -1.318 -3.138 -3.38 4.36 -0.732 1.891 -0.318 0.837 -1.727 1.883 -3.883"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.858" d="M16.415 8.021l2.005 3.945 0.847 1.667 1.842 0.314 4.284 0.732 -3.119 3.397 -1.208 1.314 0.27 1.766 0.687 4.484 -3.894 -2.065 -1.753 -0.93 -1.747 0.938 -3.784 2.03 0.685 -4.455 0.273 -1.776 -1.223 -1.318 -3.138 -3.38 4.36 -0.732 1.891 -0.318 0.837 -1.727 1.883 -3.883"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.858" d="M16.415 8.021l2.005 3.945 0.847 1.667 1.842 0.314 4.284 0.732 -3.119 3.397 -1.208 1.314 0.27 1.766 0.687 4.484 -3.894 -2.065 -1.753 -0.93 -1.747 0.938 -3.784 2.03 0.685 -4.455 0.273 -1.776 -1.223 -1.318 -3.138 -3.38 4.36 -0.732 1.891 -0.318 0.837 -1.727 1.883 -3.883"/>
     </g>
     <g mask="url(#v)">
-      <path fill="#0A84FF" d="M16.468 8.97l2.636 5.34 5.893 0.857 -4.265 4.156 1.007 5.87 -5.27 -2.771 -5.272 2.77 1.007 -5.869 -4.265 -4.156 5.894 -0.857 2.635 -5.34z"/>
+      <path fill="context-stroke" d="M16.468 8.97l2.636 5.34 5.893 0.857 -4.265 4.156 1.007 5.87 -5.27 -2.771 -5.272 2.77 1.007 -5.869 -4.265 -4.156 5.894 -0.857 2.635 -5.34z"/>
       <path fill="none" d="M16.468 8.97l2.636 5.34 5.893 0.857 -4.265 4.156 1.007 5.87 -5.27 -2.771 -5.272 2.77 1.007 -5.869 -4.265 -4.156 5.894 -0.857 2.635 -5.34z"/>
     </g>
-    <path fill="#000" d="M4.273 14.274l-3.056 -1.49"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-3.056 -1.49"/>
-    <path fill="#000" d="M28.738 14.306l3.056 -1.49"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l3.056 -1.49"/>
-    <path fill="#000" d="M24.168 28.806l2.186 2.605"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l2.186 2.605"/>
-    <path fill="#000" d="M8.816 28.826l-2.186 2.604"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-2.186 2.604"/>
-    <path fill="#000" d="M16.559 4.97v-3.4"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-3.4"/>
+    <path fill="context-fill" d="M4.273 14.274l-3.056 -1.49"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.273 14.274l-3.056 -1.49"/>
+    <path fill="context-fill" d="M28.738 14.306l3.056 -1.49"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.738 14.306l3.056 -1.49"/>
+    <path fill="context-fill" d="M24.168 28.806l2.186 2.605"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.168 28.806l2.186 2.605"/>
+    <path fill="context-fill" d="M8.816 28.826l-2.186 2.604"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.816 28.826l-2.186 2.604"/>
+    <path fill="context-fill" d="M16.559 4.97v-3.4"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.97v-3.4"/>
   </svg>
   <svg x="363">
     <defs>
       <mask id="x" mask-type="alpha">
         <g clip-path="url(#f11_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="w" mask-type="alpha">
         <g clip-path="url(#f11_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#w)">
       <path fill="#FFF" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.095 0.707 -4.6 0.282 -1.834 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.918" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.095 0.707 -4.6 0.282 -1.834 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.918" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.095 0.707 -4.6 0.282 -1.834 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
     </g>
     <g mask="url(#x)">
-      <path fill="#0A84FF" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.443 -2.861 -5.444 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.722 -5.515z"/>
+      <path fill="context-stroke" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.443 -2.861 -5.444 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.722 -5.515z"/>
       <path fill="none" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.443 -2.861 -5.444 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.722 -5.515z"/>
     </g>
-    <path fill="#000" d="M4.145 14.211l-2.928 -1.428"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M4.145 14.211l-2.928 -1.428"/>
-    <path fill="#000" d="M28.866 14.243l2.928 -1.428"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M28.866 14.243l2.928 -1.428"/>
-    <path fill="#000" d="M24.26 28.915l2.094 2.496"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.26 28.915l2.094 2.496"/>
-    <path fill="#000" d="M8.724 28.935l-2.094 2.495"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.724 28.935l-2.094 2.495"/>
-    <path fill="#000" d="M16.559 4.828v-3.258"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.828v-3.258"/>
+    <path fill="context-fill" d="M4.145 14.211l-2.928 -1.428"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M4.145 14.211l-2.928 -1.428"/>
+    <path fill="context-fill" d="M28.866 14.243l2.928 -1.428"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M28.866 14.243l2.928 -1.428"/>
+    <path fill="context-fill" d="M24.26 28.915l2.094 2.496"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.26 28.915l2.094 2.496"/>
+    <path fill="context-fill" d="M8.724 28.935l-2.094 2.495"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.724 28.935l-2.094 2.495"/>
+    <path fill="context-fill" d="M16.559 4.828v-3.258"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.828v-3.258"/>
   </svg>
   <svg x="396">
     <defs>
       <mask id="z" mask-type="alpha">
         <g clip-path="url(#f12_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="y" mask-type="alpha">
         <g clip-path="url(#f12_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#y)">
       <path fill="#FFF" d="M16.401 7.59l2.104 4.141 0.89 1.75 1.933 0.33 4.497 0.768 -3.274 3.565 -1.269 1.38 0.284 1.854 0.721 4.707 -4.087 -2.169 -1.84 -0.975 -1.834 0.984 -3.972 2.131 0.72 -4.676 0.286 -1.864 -1.284 -1.384 -3.293 -3.547 4.576 -0.77 1.985 -0.333 0.878 -1.812 1.977 -4.077"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.95" d="M16.401 7.59l2.104 4.141 0.89 1.75 1.933 0.33 4.497 0.768 -3.274 3.565 -1.269 1.38 0.284 1.854 0.721 4.707 -4.087 -2.169 -1.84 -0.975 -1.834 0.984 -3.972 2.131 0.72 -4.676 0.286 -1.864 -1.284 -1.384 -3.293 -3.547 4.576 -0.77 1.985 -0.333 0.878 -1.812 1.977 -4.077"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.95" d="M16.401 7.59l2.104 4.141 0.89 1.75 1.933 0.33 4.497 0.768 -3.274 3.565 -1.269 1.38 0.284 1.854 0.721 4.707 -4.087 -2.169 -1.84 -0.975 -1.834 0.984 -3.972 2.131 0.72 -4.676 0.286 -1.864 -1.284 -1.384 -3.293 -3.547 4.576 -0.77 1.985 -0.333 0.878 -1.812 1.977 -4.077"/>
     </g>
     <g mask="url(#z)">
-      <path fill="#0A84FF" d="M16.457 8.587l2.766 5.605 6.186 0.899 -4.476 4.363 1.056 6.16 -5.532 -2.908 -5.533 2.909 1.057 -6.161 -4.476 -4.363 6.185 -0.899 2.767 -5.605z"/>
+      <path fill="context-stroke" d="M16.457 8.587l2.766 5.605 6.186 0.899 -4.476 4.363 1.056 6.16 -5.532 -2.908 -5.533 2.909 1.057 -6.161 -4.476 -4.363 6.185 -0.899 2.767 -5.605z"/>
       <path fill="none" d="M16.457 8.587l2.766 5.605 6.186 0.899 -4.476 4.363 1.056 6.16 -5.532 -2.908 -5.533 2.909 1.057 -6.161 -4.476 -4.363 6.185 -0.899 2.767 -5.605z"/>
     </g>
-    <path fill="#000" d="M3.835 14.06l-2.618 -1.277"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M3.835 14.06l-2.618 -1.277"/>
-    <path fill="#000" d="M29.176 14.092l2.618 -1.277"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M29.176 14.092l2.618 -1.277"/>
-    <path fill="#000" d="M24.481 29.18l1.873 2.23"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.481 29.18l1.873 2.23"/>
-    <path fill="#000" d="M8.502 29.199l-1.872 2.231"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.502 29.199l-1.872 2.231"/>
-    <path fill="#000" d="M16.559 4.483v-2.913"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.483v-2.913"/>
+    <path fill="context-fill" d="M3.835 14.06l-2.618 -1.277"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M3.835 14.06l-2.618 -1.277"/>
+    <path fill="context-fill" d="M29.176 14.092l2.618 -1.277"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M29.176 14.092l2.618 -1.277"/>
+    <path fill="context-fill" d="M24.481 29.18l1.873 2.23"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.481 29.18l1.873 2.23"/>
+    <path fill="context-fill" d="M8.502 29.199l-1.872 2.231"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.502 29.199l-1.872 2.231"/>
+    <path fill="context-fill" d="M16.559 4.483v-2.913"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.483v-2.913"/>
   </svg>
   <svg x="429">
     <defs>
       <mask id="B" mask-type="alpha">
         <g clip-path="url(#f13_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="A" mask-type="alpha">
         <g clip-path="url(#f13_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#A)">
       <path fill="#FFF" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.096 0.707 -4.6 0.282 -1.835 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.918" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.096 0.707 -4.6 0.282 -1.835 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.918" d="M16.406 7.738l2.07 4.074 0.875 1.721 1.902 0.324 4.424 0.756 -3.221 3.508 -1.248 1.357 0.28 1.824 0.709 4.63 -4.022 -2.133 -1.81 -0.96 -1.804 0.97 -3.907 2.096 0.707 -4.6 0.282 -1.835 -1.263 -1.361 -3.24 -3.49 4.502 -0.757 1.953 -0.328 0.864 -1.783 1.945 -4.01"/>
     </g>
     <g mask="url(#B)">
-      <path fill="#0A84FF" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.444 -2.861 -5.443 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.721 -5.515z"/>
+      <path fill="context-stroke" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.444 -2.861 -5.443 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.721 -5.515z"/>
       <path fill="none" d="M16.46 8.718l2.722 5.515 6.086 0.884 -4.404 4.292 1.04 6.061 -5.444 -2.861 -5.443 2.861 1.04 -6.06 -4.404 -4.293 6.086 -0.884 2.721 -5.515z"/>
     </g>
-    <path fill="#000" d="M3.408 13.852l-2.191 -1.069"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M3.408 13.852l-2.191 -1.069"/>
-    <path fill="#000" d="M29.602 13.884l2.192 -1.069"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M29.602 13.884l2.192 -1.069"/>
-    <path fill="#000" d="M24.786 29.543l1.568 1.868"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M24.786 29.543l1.568 1.868"/>
-    <path fill="#000" d="M8.197 29.563l-1.567 1.867"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M8.197 29.563l-1.567 1.867"/>
-    <path fill="#000" d="M16.559 4.008v-2.438"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.008v-2.438"/>
+    <path fill="context-fill" d="M3.408 13.852l-2.191 -1.069"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M3.408 13.852l-2.191 -1.069"/>
+    <path fill="context-fill" d="M29.602 13.884l2.192 -1.069"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M29.602 13.884l2.192 -1.069"/>
+    <path fill="context-fill" d="M24.786 29.543l1.568 1.868"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M24.786 29.543l1.568 1.868"/>
+    <path fill="context-fill" d="M8.197 29.563l-1.567 1.867"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M8.197 29.563l-1.567 1.867"/>
+    <path fill="context-fill" d="M16.559 4.008v-2.438"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 4.008v-2.438"/>
   </svg>
   <svg x="462">
     <defs>
       <mask id="D" mask-type="alpha">
         <g clip-path="url(#f14_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="C" mask-type="alpha">
         <g clip-path="url(#f14_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#C)">
       <path fill="#FFF" d="M16.413 7.97l2.017 3.968 0.852 1.677 1.853 0.316 4.31 0.736 -3.138 3.417 -1.216 1.322 0.272 1.777 0.691 4.51 -3.917 -2.078 -1.763 -0.935 -1.758 0.944 -3.805 2.042 0.688 -4.482 0.275 -1.786 -1.23 -1.326 -3.156 -3.4 4.386 -0.736 1.902 -0.32 0.841 -1.737 1.895 -3.906"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.869" d="M16.413 7.97l2.017 3.968 0.852 1.677 1.853 0.316 4.31 0.736 -3.138 3.417 -1.216 1.322 0.272 1.777 0.691 4.51 -3.917 -2.078 -1.763 -0.935 -1.758 0.944 -3.805 2.042 0.688 -4.482 0.275 -1.786 -1.23 -1.326 -3.156 -3.4 4.386 -0.736 1.902 -0.32 0.841 -1.737 1.895 -3.906"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.869" d="M16.413 7.97l2.017 3.968 0.852 1.677 1.853 0.316 4.31 0.736 -3.138 3.417 -1.216 1.322 0.272 1.777 0.691 4.51 -3.917 -2.078 -1.763 -0.935 -1.758 0.944 -3.805 2.042 0.688 -4.482 0.275 -1.786 -1.23 -1.326 -3.156 -3.4 4.386 -0.736 1.902 -0.32 0.841 -1.737 1.895 -3.906"/>
     </g>
     <g mask="url(#D)">
-      <path fill="#0A84FF" d="M16.467 8.925l2.65 5.371 5.928 0.862 -4.289 4.18 1.013 5.905 -5.302 -2.788 -5.302 2.788 1.012 -5.904 -4.289 -4.181 5.928 -0.862 2.65 -5.371z"/>
+      <path fill="context-stroke" d="M16.467 8.925l2.65 5.371 5.928 0.862 -4.289 4.18 1.013 5.905 -5.302 -2.788 -5.302 2.788 1.012 -5.904 -4.289 -4.181 5.928 -0.862 2.65 -5.371z"/>
       <path fill="none" d="M16.467 8.925l2.65 5.371 5.928 0.862 -4.289 4.18 1.013 5.905 -5.302 -2.788 -5.302 2.788 1.012 -5.904 -4.289 -4.181 5.928 -0.862 2.65 -5.371z"/>
     </g>
-    <path fill="#000" d="M2.901 13.605l-1.684 -0.822"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M2.901 13.605l-1.684 -0.822"/>
-    <path fill="#000" d="M30.109 13.637l1.685 -0.822"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M30.109 13.637l1.685 -0.822"/>
-    <path fill="#000" d="M25.149 29.975l1.205 1.436"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M25.149 29.975l1.205 1.436"/>
-    <path fill="#000" d="M7.835 29.994l-1.205 1.436"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M7.835 29.994l-1.205 1.436"/>
-    <path fill="#000" d="M16.559 3.445v-1.875"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 3.445v-1.875"/>
+    <path fill="context-fill" d="M2.901 13.605l-1.684 -0.822"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M2.901 13.605l-1.684 -0.822"/>
+    <path fill="context-fill" d="M30.109 13.637l1.685 -0.822"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M30.109 13.637l1.685 -0.822"/>
+    <path fill="context-fill" d="M25.149 29.975l1.205 1.436"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M25.149 29.975l1.205 1.436"/>
+    <path fill="context-fill" d="M7.835 29.994l-1.205 1.436"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M7.835 29.994l-1.205 1.436"/>
+    <path fill="context-fill" d="M16.559 3.445v-1.875"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 3.445v-1.875"/>
   </svg>
   <svg x="495">
     <defs>
       <mask id="F" mask-type="alpha">
         <g clip-path="url(#f15_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="E" mask-type="alpha">
         <g clip-path="url(#f15_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#E)">
       <path fill="#FFF" d="M16.422 8.223l1.958 3.853 0.827 1.628 1.8 0.307 4.184 0.715 -3.047 3.317 -1.18 1.284 0.264 1.725 0.671 4.38 -3.804 -2.018 -1.712 -0.908 -1.706 0.917 -3.696 1.982 0.67 -4.35 0.266 -1.736 -1.195 -1.287 -3.064 -3.3 4.258 -0.716 1.848 -0.311 0.817 -1.686 1.839 -3.793"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.814" d="M16.422 8.223l1.958 3.853 0.827 1.628 1.8 0.307 4.184 0.715 -3.047 3.317 -1.18 1.284 0.264 1.725 0.671 4.38 -3.804 -2.018 -1.712 -0.908 -1.706 0.917 -3.696 1.982 0.67 -4.35 0.266 -1.736 -1.195 -1.287 -3.064 -3.3 4.258 -0.716 1.848 -0.311 0.817 -1.686 1.839 -3.793"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.814" d="M16.422 8.223l1.958 3.853 0.827 1.628 1.8 0.307 4.184 0.715 -3.047 3.317 -1.18 1.284 0.264 1.725 0.671 4.38 -3.804 -2.018 -1.712 -0.908 -1.706 0.917 -3.696 1.982 0.67 -4.35 0.266 -1.736 -1.195 -1.287 -3.064 -3.3 4.258 -0.716 1.848 -0.311 0.817 -1.686 1.839 -3.793"/>
     </g>
     <g mask="url(#F)">
-      <path fill="#0A84FF" d="M16.473 9.15l2.575 5.216 5.755 0.836 -4.165 4.06 0.984 5.733 -5.149 -2.707 -5.148 2.707 0.984 -5.733 -4.165 -4.06 5.755 -0.836 2.574 -5.216z"/>
+      <path fill="context-stroke" d="M16.473 9.15l2.575 5.216 5.755 0.836 -4.165 4.06 0.984 5.733 -5.149 -2.707 -5.148 2.707 0.984 -5.733 -4.165 -4.06 5.755 -0.836 2.574 -5.216z"/>
       <path fill="none" d="M16.473 9.15l2.575 5.216 5.755 0.836 -4.165 4.06 0.984 5.733 -5.149 -2.707 -5.148 2.707 0.984 -5.733 -4.165 -4.06 5.755 -0.836 2.574 -5.216z"/>
     </g>
-    <path fill="#000" d="M2.342 13.332l-1.125 -0.549"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M2.342 13.332l-1.125 -0.549"/>
-    <path fill="#000" d="M30.668 13.364l1.126 -0.549"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M30.668 13.364l1.126 -0.549"/>
-    <path fill="#000" d="M25.549 30.451l0.805 0.96"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M25.549 30.451l0.805 0.96"/>
-    <path fill="#000" d="M7.435 30.47l-0.805 0.96"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M7.435 30.47l-0.805 0.96"/>
-    <path fill="#000" d="M16.559 2.822v-1.252"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 2.822v-1.252"/>
+    <path fill="context-fill" d="M2.342 13.332l-1.125 -0.549"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M2.342 13.332l-1.125 -0.549"/>
+    <path fill="context-fill" d="M30.668 13.364l1.126 -0.549"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M30.668 13.364l1.126 -0.549"/>
+    <path fill="context-fill" d="M25.549 30.451l0.805 0.96"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M25.549 30.451l0.805 0.96"/>
+    <path fill="context-fill" d="M7.435 30.47l-0.805 0.96"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M7.435 30.47l-0.805 0.96"/>
+    <path fill="context-fill" d="M16.559 2.822v-1.252"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 2.822v-1.252"/>
   </svg>
   <svg x="528">
     <defs>
       <mask id="H" mask-type="alpha">
         <g clip-path="url(#f16_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="G" mask-type="alpha">
         <g clip-path="url(#f16_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#G)">
       <path fill="#FFF" d="M16.43 8.48l1.899 3.736 0.802 1.579 1.745 0.297 4.057 0.693 -2.954 3.217 -1.144 1.245 0.255 1.673 0.651 4.247 -3.688 -1.957 -1.66 -0.88 -1.655 0.888 -3.583 1.923 0.649 -4.22 0.258 -1.681 -1.158 -1.249 -2.972 -3.2 4.13 -0.694 1.79 -0.301 0.793 -1.636 1.783 -3.677"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.759" d="M16.43 8.48l1.899 3.736 0.802 1.579 1.745 0.297 4.057 0.693 -2.954 3.217 -1.144 1.245 0.255 1.673 0.651 4.247 -3.688 -1.957 -1.66 -0.88 -1.655 0.888 -3.583 1.923 0.649 -4.22 0.258 -1.681 -1.158 -1.249 -2.972 -3.2 4.13 -0.694 1.79 -0.301 0.793 -1.636 1.783 -3.677"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.759" d="M16.43 8.48l1.899 3.736 0.802 1.579 1.745 0.297 4.057 0.693 -2.954 3.217 -1.144 1.245 0.255 1.673 0.651 4.247 -3.688 -1.957 -1.66 -0.88 -1.655 0.888 -3.583 1.923 0.649 -4.22 0.258 -1.681 -1.158 -1.249 -2.972 -3.2 4.13 -0.694 1.79 -0.301 0.793 -1.636 1.783 -3.677"/>
     </g>
     <g mask="url(#H)">
-      <path fill="#0A84FF" d="M16.48 9.38l2.496 5.056 5.581 0.811 -4.038 3.937 0.953 5.559 -4.992 -2.625 -4.992 2.625 0.954 -5.559 -4.039 -3.937 5.581 -0.81 2.496 -5.058z"/>
+      <path fill="context-stroke" d="M16.48 9.38l2.496 5.056 5.581 0.811 -4.038 3.937 0.953 5.559 -4.992 -2.625 -4.992 2.625 0.954 -5.559 -4.039 -3.937 5.581 -0.81 2.496 -5.058z"/>
       <path fill="none" d="M16.48 9.38l2.496 5.056 5.581 0.811 -4.038 3.937 0.953 5.559 -4.992 -2.625 -4.992 2.625 0.954 -5.559 -4.039 -3.937 5.581 -0.81 2.496 -5.058z"/>
     </g>
-    <path fill="#000" d="M1.758 13.047l-0.541 -0.264"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M1.758 13.047l-0.541 -0.264"/>
-    <path fill="#000" d="M31.253 13.08l0.54 -0.265"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M31.253 13.08l0.54 -0.265"/>
-    <path fill="#000" d="M25.967 30.95l0.387 0.46"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M25.967 30.95l0.387 0.46"/>
-    <path fill="#000" d="M7.017 30.97l-0.387 0.46"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M7.017 30.97l-0.387 0.46"/>
-    <path fill="#000" d="M16.559 2.172v-0.602"/>
-    <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-width="1.6" d="M16.559 2.172v-0.602"/>
+    <path fill="context-fill" d="M1.758 13.047l-0.541 -0.264"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M1.758 13.047l-0.541 -0.264"/>
+    <path fill="context-fill" d="M31.253 13.08l0.54 -0.265"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M31.253 13.08l0.54 -0.265"/>
+    <path fill="context-fill" d="M25.967 30.95l0.387 0.46"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M25.967 30.95l0.387 0.46"/>
+    <path fill="context-fill" d="M7.017 30.97l-0.387 0.46"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M7.017 30.97l-0.387 0.46"/>
+    <path fill="context-fill" d="M16.559 2.172v-0.602"/>
+    <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-width="1.6" d="M16.559 2.172v-0.602"/>
   </svg>
   <svg x="561">
     <defs>
       <mask id="J" mask-type="alpha">
         <g clip-path="url(#f17_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="I" mask-type="alpha">
         <g clip-path="url(#f17_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#I)">
       <path fill="#FFF" d="M16.438 8.731l1.84 3.622 0.779 1.53 1.69 0.289 3.934 0.672 -2.864 3.118 -1.109 1.207 0.248 1.622 0.631 4.116 -3.575 -1.896 -1.61 -0.854 -1.604 0.862 -3.473 1.863 0.628 -4.09 0.251 -1.63 -1.123 -1.21 -2.88 -3.103 4.002 -0.673 1.737 -0.292 0.768 -1.585 1.729 -3.565"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.706" d="M16.438 8.731l1.84 3.622 0.779 1.53 1.69 0.289 3.934 0.672 -2.864 3.118 -1.109 1.207 0.248 1.622 0.631 4.116 -3.575 -1.896 -1.61 -0.854 -1.604 0.862 -3.473 1.863 0.628 -4.09 0.251 -1.63 -1.123 -1.21 -2.88 -3.103 4.002 -0.673 1.737 -0.292 0.768 -1.585 1.729 -3.565"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.706" d="M16.438 8.731l1.84 3.622 0.779 1.53 1.69 0.289 3.934 0.672 -2.864 3.118 -1.109 1.207 0.248 1.622 0.631 4.116 -3.575 -1.896 -1.61 -0.854 -1.604 0.862 -3.473 1.863 0.628 -4.09 0.251 -1.63 -1.123 -1.21 -2.88 -3.103 4.002 -0.673 1.737 -0.292 0.768 -1.585 1.729 -3.565"/>
     </g>
     <g mask="url(#J)">
-      <path fill="#0A84FF" d="M16.487 9.603l2.42 4.902 5.41 0.787 -3.915 3.816 0.924 5.388 -4.839 -2.544 -4.84 2.544 0.925 -5.388 -3.915 -3.816 5.41 -0.787 2.42 -4.902z"/>
+      <path fill="context-stroke" d="M16.487 9.603l2.42 4.902 5.41 0.787 -3.915 3.816 0.924 5.388 -4.839 -2.544 -4.84 2.544 0.925 -5.388 -3.915 -3.816 5.41 -0.787 2.42 -4.902z"/>
       <path fill="none" d="M16.487 9.603l2.42 4.902 5.41 0.787 -3.915 3.816 0.924 5.388 -4.839 -2.544 -4.84 2.544 0.925 -5.388 -3.915 -3.816 5.41 -0.787 2.42 -4.902z"/>
     </g>
   </svg>
   <svg x="594">
     <defs>
       <mask id="L" mask-type="alpha">
         <g clip-path="url(#f18_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="K" mask-type="alpha">
         <g clip-path="url(#f18_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#K)">
       <path fill="#FFF" d="M16.446 8.966l1.786 3.515 0.755 1.485 1.642 0.28 3.817 0.652 -2.78 3.027 -1.076 1.171 0.24 1.574 0.613 3.996 -3.47 -1.841 -1.562 -0.828 -1.557 0.836 -3.371 1.808 0.61 -3.97 0.243 -1.582 -1.09 -1.175 -2.795 -3.01 3.885 -0.654 1.685 -0.283 0.745 -1.539 1.679 -3.46"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.655" d="M16.446 8.966l1.786 3.515 0.755 1.485 1.642 0.28 3.817 0.652 -2.78 3.027 -1.076 1.171 0.24 1.574 0.613 3.996 -3.47 -1.841 -1.562 -0.828 -1.557 0.836 -3.371 1.808 0.61 -3.97 0.243 -1.582 -1.09 -1.175 -2.795 -3.01 3.885 -0.654 1.685 -0.283 0.745 -1.539 1.679 -3.46"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.655" d="M16.446 8.966l1.786 3.515 0.755 1.485 1.642 0.28 3.817 0.652 -2.78 3.027 -1.076 1.171 0.24 1.574 0.613 3.996 -3.47 -1.841 -1.562 -0.828 -1.557 0.836 -3.371 1.808 0.61 -3.97 0.243 -1.582 -1.09 -1.175 -2.795 -3.01 3.885 -0.654 1.685 -0.283 0.745 -1.539 1.679 -3.46"/>
     </g>
     <g mask="url(#L)">
-      <path fill="#0A84FF" d="M16.493 9.811l2.349 4.759 5.25 0.763 -3.799 3.704 0.897 5.23 -4.697 -2.47 -4.696 2.47 0.897 -5.23 -3.8 -3.704 5.25 -0.763 2.35 -4.759z"/>
+      <path fill="context-stroke" d="M16.493 9.811l2.349 4.759 5.25 0.763 -3.799 3.704 0.897 5.23 -4.697 -2.47 -4.696 2.47 0.897 -5.23 -3.8 -3.704 5.25 -0.763 2.35 -4.759z"/>
       <path fill="none" d="M16.493 9.811l2.349 4.759 5.25 0.763 -3.799 3.704 0.897 5.23 -4.697 -2.47 -4.696 2.47 0.897 -5.23 -3.8 -3.704 5.25 -0.763 2.35 -4.759z"/>
     </g>
   </svg>
   <svg x="627">
     <defs>
       <mask id="N" mask-type="alpha">
         <g clip-path="url(#f19_BkV3WrqkR1)" transform="matrix(.2 0 0 .2 -15.623 -12.404)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="M" mask-type="alpha">
         <g clip-path="url(#f19_4P5xKEAlF3)" transform="matrix(.2 0 0 .2 -15.216 -8.977)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <g mask="url(#M)">
       <path fill="#FFF" d="M16.453 9.164l1.74 3.425 0.735 1.447 1.6 0.273 3.719 0.635 -2.708 2.95 -1.049 1.14 0.235 1.534 0.596 3.893 -3.38 -1.794 -1.523 -0.807 -1.516 0.815 -3.285 1.762 0.595 -3.868 0.237 -1.542 -1.062 -1.144 -2.724 -2.934 3.785 -0.636 1.642 -0.276 0.726 -1.499 1.635 -3.371"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.613" d="M16.453 9.164l1.74 3.425 0.735 1.447 1.6 0.273 3.719 0.635 -2.708 2.95 -1.049 1.14 0.235 1.534 0.596 3.893 -3.38 -1.794 -1.523 -0.807 -1.516 0.815 -3.285 1.762 0.595 -3.868 0.237 -1.542 -1.062 -1.144 -2.724 -2.934 3.785 -0.636 1.642 -0.276 0.726 -1.499 1.635 -3.371"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.613" d="M16.453 9.164l1.74 3.425 0.735 1.447 1.6 0.273 3.719 0.635 -2.708 2.95 -1.049 1.14 0.235 1.534 0.596 3.893 -3.38 -1.794 -1.523 -0.807 -1.516 0.815 -3.285 1.762 0.595 -3.868 0.237 -1.542 -1.062 -1.144 -2.724 -2.934 3.785 -0.636 1.642 -0.276 0.726 -1.499 1.635 -3.371"/>
     </g>
     <g mask="url(#N)">
-      <path fill="#0A84FF" d="M16.499 9.988l2.288 4.636 5.116 0.744 -3.702 3.608 0.874 5.096 -4.576 -2.406 -4.576 2.406 0.874 -5.096 -3.702 -3.608 5.116 -0.744 2.288 -4.636z"/>
+      <path fill="context-stroke" d="M16.499 9.988l2.288 4.636 5.116 0.744 -3.702 3.608 0.874 5.096 -4.576 -2.406 -4.576 2.406 0.874 -5.096 -3.702 -3.608 5.116 -0.744 2.288 -4.636z"/>
       <path fill="none" d="M16.499 9.988l2.288 4.636 5.116 0.744 -3.702 3.608 0.874 5.096 -4.576 -2.406 -4.576 2.406 0.874 -5.096 -3.702 -3.608 5.116 -0.744 2.288 -4.636z"/>
     </g>
   </svg>
   <svg x="660">
     <defs>
       <mask id="P" mask-type="alpha">
         <g clip-path="url(#f20_BkV3WrqkR1)" transform="matrix(0 0 0 0 16.352 17.593)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
       <mask id="O" mask-type="alpha">
         <g clip-path="url(#f20_4P5xKEAlF3)" transform="matrix(0 0 0 0 16.463 17.517)">
-          <path fill="#0a84ff" d="M0 0h320v240h-320z"/>
+          <path fill="context-stroke" d="M0 0h320v240h-320z"/>
         </g>
       </mask>
     </defs>
     <path fill="none" stroke="context-fill" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.584" d="M16.457 9.307l1.71 3.363 0.722 1.422 1.57 0.267 3.653 0.624 -2.66 2.897 -1.03 1.12 0.23 1.506 0.587 3.824 -3.32 -1.762 -1.496 -0.792 -1.49 0.8 -3.225 1.73 0.584 -3.798 0.233 -1.514 -1.043 -1.124 -2.676 -2.882 3.718 -0.624 1.613 -0.272 0.713 -1.472 1.606 -3.31" display="block"/>
     <g mask="url(#O)">
       <path fill="#FFF" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
-      <path fill="none" stroke="#0A84FF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.59" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.59" d="M16.456 9.271l1.716 3.376 0.725 1.427 1.577 0.269 3.666 0.626 -2.67 2.907 -1.033 1.125 0.23 1.512 0.589 3.838 -3.333 -1.768 -1.5 -0.796 -1.496 0.803 -3.238 1.737 0.586 -3.813 0.234 -1.52 -1.047 -1.128 -2.686 -2.892 3.732 -0.627 1.619 -0.273 0.716 -1.477 1.612 -3.324"/>
     </g>
     <g mask="url(#P)" opacity=".08">
       <path fill="context-fill" d="M16.502 10.083l2.255 4.57 5.044 0.734 -3.65 3.557 0.862 5.023 -4.511 -2.371 -4.512 2.371 0.862 -5.023 -3.65 -3.557 5.044 -0.733 2.256 -4.57z"/>
       <path fill="none" d="M16.502 10.083l2.255 4.57 5.044 0.734 -3.65 3.557 0.862 5.023 -4.511 -2.371 -4.512 2.371 0.862 -5.023 -3.65 -3.557 5.044 -0.733 2.256 -4.57z"/>
     </g>
   </svg>
 </svg>
--- a/browser/themes/shared/icons/library-bookmark-animation.svg
+++ b/browser/themes/shared/icons/library-bookmark-animation.svg
@@ -3,633 +3,633 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <svg xmlns="http://www.w3.org/2000/svg" width="1078" height="54" fill="context-fill">
   <svg>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
   </svg>
   <svg x="22">
     <defs>
       <mask id="a" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#a)" opacity=".043">
-      <path fill="rgb(48,163,255)" d="M13.593 1.683l0.46 3.355 0.193 1.418 1.254 0.69 2.914 1.604 -3.108 1.673 -1.204 0.647 -0.247 1.345 -0.628 3.414 -2.298 -2.47 -1.034 -1.113 -1.498 0.24 -3.246 0.519 1.614 -3.05 0.643 -1.215 -0.554 -1.26 -1.42 -3.23 3.336 0.564 1.447 0.244 1.038 -1.038 2.336 -2.335"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.422" d="M13.593 1.683l0.46 3.355 0.193 1.418 1.254 0.69 2.914 1.604 -3.108 1.673 -1.204 0.647 -0.247 1.345 -0.628 3.414 -2.298 -2.47 -1.034 -1.113 -1.498 0.24 -3.246 0.519 1.614 -3.05 0.643 -1.215 -0.554 -1.26 -1.42 -3.23 3.336 0.564 1.447 0.244 1.038 -1.038 2.336 -2.335"/>
+      <path fill="context-stroke" d="M13.593 1.683l0.46 3.355 0.193 1.418 1.254 0.69 2.914 1.604 -3.108 1.673 -1.204 0.647 -0.247 1.345 -0.628 3.414 -2.298 -2.47 -1.034 -1.113 -1.498 0.24 -3.246 0.519 1.614 -3.05 0.643 -1.215 -0.554 -1.26 -1.42 -3.23 3.336 0.564 1.447 0.244 1.038 -1.038 2.336 -2.335"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.422" d="M13.593 1.683l0.46 3.355 0.193 1.418 1.254 0.69 2.914 1.604 -3.108 1.673 -1.204 0.647 -0.247 1.345 -0.628 3.414 -2.298 -2.47 -1.034 -1.113 -1.498 0.24 -3.246 0.519 1.614 -3.05 0.643 -1.215 -0.554 -1.26 -1.42 -3.23 3.336 0.564 1.447 0.244 1.038 -1.038 2.336 -2.335"/>
     </g>
   </svg>
   <svg x="44">
     <defs>
       <mask id="b" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#b)" opacity=".156">
-      <path fill="rgb(48,163,255)" d="M13.328 1.594l0.588 3.314 0.248 1.4 1.272 0.636 2.957 1.48 -3.02 1.783 -1.17 0.69 -0.194 1.346 -0.49 3.416 -2.378 -2.364 -1.072 -1.064 -1.478 0.297 -3.203 0.643 1.482 -3.092 0.592 -1.233 -0.6 -1.23 -1.538 -3.152 3.336 0.429 1.447 0.186 0.99 -1.072 2.229 -2.412"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.413" d="M13.328 1.594l0.588 3.314 0.248 1.4 1.272 0.636 2.957 1.48 -3.02 1.783 -1.17 0.69 -0.194 1.346 -0.49 3.416 -2.378 -2.364 -1.072 -1.064 -1.478 0.297 -3.203 0.643 1.482 -3.092 0.592 -1.233 -0.6 -1.23 -1.538 -3.152 3.336 0.429 1.447 0.186 0.99 -1.072 2.229 -2.412"/>
+      <path fill="context-stroke" d="M13.328 1.594l0.588 3.314 0.248 1.4 1.272 0.636 2.957 1.48 -3.02 1.783 -1.17 0.69 -0.194 1.346 -0.49 3.416 -2.378 -2.364 -1.072 -1.064 -1.478 0.297 -3.203 0.643 1.482 -3.092 0.592 -1.233 -0.6 -1.23 -1.538 -3.152 3.336 0.429 1.447 0.186 0.99 -1.072 2.229 -2.412"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.413" d="M13.328 1.594l0.588 3.314 0.248 1.4 1.272 0.636 2.957 1.48 -3.02 1.783 -1.17 0.69 -0.194 1.346 -0.49 3.416 -2.378 -2.364 -1.072 -1.064 -1.478 0.297 -3.203 0.643 1.482 -3.092 0.592 -1.233 -0.6 -1.23 -1.538 -3.152 3.336 0.429 1.447 0.186 0.99 -1.072 2.229 -2.412"/>
     </g>
   </svg>
   <svg x="66">
     <defs>
       <mask id="c" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#c)" opacity=".316">
-      <path fill="rgb(48,163,255)" d="M12.953 1.508l0.766 3.249 0.323 1.373 1.295 0.558 3.009 1.3 -2.892 1.934 -1.12 0.748 -0.117 1.342 -0.295 3.41 -2.486 -2.209 -1.12 -0.994 -1.447 0.376 -3.135 0.814 1.296 -3.143 0.517 -1.254 -0.661 -1.184 -1.698 -3.036 3.327 0.24 1.442 0.105 0.92 -1.117 2.074 -2.51"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.401" d="M12.953 1.508l0.766 3.249 0.323 1.373 1.295 0.558 3.009 1.3 -2.892 1.934 -1.12 0.748 -0.117 1.342 -0.295 3.41 -2.486 -2.209 -1.12 -0.994 -1.447 0.376 -3.135 0.814 1.296 -3.143 0.517 -1.254 -0.661 -1.184 -1.698 -3.036 3.327 0.24 1.442 0.105 0.92 -1.117 2.074 -2.51"/>
+      <path fill="context-stroke" d="M12.953 1.508l0.766 3.249 0.323 1.373 1.295 0.558 3.009 1.3 -2.892 1.934 -1.12 0.748 -0.117 1.342 -0.295 3.41 -2.486 -2.209 -1.12 -0.994 -1.447 0.376 -3.135 0.814 1.296 -3.143 0.517 -1.254 -0.661 -1.184 -1.698 -3.036 3.327 0.24 1.442 0.105 0.92 -1.117 2.074 -2.51"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.401" d="M12.953 1.508l0.766 3.249 0.323 1.373 1.295 0.558 3.009 1.3 -2.892 1.934 -1.12 0.748 -0.117 1.342 -0.295 3.41 -2.486 -2.209 -1.12 -0.994 -1.447 0.376 -3.135 0.814 1.296 -3.143 0.517 -1.254 -0.661 -1.184 -1.698 -3.036 3.327 0.24 1.442 0.105 0.92 -1.117 2.074 -2.51"/>
     </g>
   </svg>
   <svg x="88">
     <defs>
       <mask id="d" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#d)" opacity=".5">
-      <path fill="rgb(48,163,255)" d="M12.525 1.445l0.963 3.162 0.406 1.336 1.315 0.47 3.056 1.094 -2.735 2.093 -1.06 0.81 -0.03 1.335 -0.075 3.387 -2.597 -2.025 -1.17 -0.91 -1.405 0.463 -3.047 1.002 1.082 -3.188 0.431 -1.271 -0.729 -1.128 -1.87 -2.892 3.303 0.026 1.432 0.011 0.839 -1.161 1.89 -2.612"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.388" d="M12.525 1.445l0.963 3.162 0.406 1.336 1.315 0.47 3.056 1.094 -2.735 2.093 -1.06 0.81 -0.03 1.335 -0.075 3.387 -2.597 -2.025 -1.17 -0.91 -1.405 0.463 -3.047 1.002 1.082 -3.188 0.431 -1.271 -0.729 -1.128 -1.87 -2.892 3.303 0.026 1.432 0.011 0.839 -1.161 1.89 -2.612"/>
+      <path fill="context-stroke" d="M12.525 1.445l0.963 3.162 0.406 1.336 1.315 0.47 3.056 1.094 -2.735 2.093 -1.06 0.81 -0.03 1.335 -0.075 3.387 -2.597 -2.025 -1.17 -0.91 -1.405 0.463 -3.047 1.002 1.082 -3.188 0.431 -1.271 -0.729 -1.128 -1.87 -2.892 3.303 0.026 1.432 0.011 0.839 -1.161 1.89 -2.612"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.388" d="M12.525 1.445l0.963 3.162 0.406 1.336 1.315 0.47 3.056 1.094 -2.735 2.093 -1.06 0.81 -0.03 1.335 -0.075 3.387 -2.597 -2.025 -1.17 -0.91 -1.405 0.463 -3.047 1.002 1.082 -3.188 0.431 -1.271 -0.729 -1.128 -1.87 -2.892 3.303 0.026 1.432 0.011 0.839 -1.161 1.89 -2.612"/>
     </g>
   </svg>
   <svg x="110">
     <defs>
       <mask id="e" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#e)" opacity=".684">
-      <path fill="rgb(48,163,255)" d="M12.101 1.412l1.152 3.062 0.486 1.294 1.329 0.381 3.089 0.888 -2.57 2.242 -0.995 0.867 0.055 1.32 0.14 3.352 -2.695 -1.836 -1.213 -0.826 -1.36 0.547 -2.946 1.184 0.867 -3.219 0.345 -1.283 -0.791 -1.068 -2.03 -2.74 3.263 -0.183 1.416 -0.08 0.755 -1.2 1.702 -2.7"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.374" d="M12.101 1.412l1.152 3.062 0.486 1.294 1.329 0.381 3.089 0.888 -2.57 2.242 -0.995 0.867 0.055 1.32 0.14 3.352 -2.695 -1.836 -1.213 -0.826 -1.36 0.547 -2.946 1.184 0.867 -3.219 0.345 -1.283 -0.791 -1.068 -2.03 -2.74 3.263 -0.183 1.416 -0.08 0.755 -1.2 1.702 -2.7"/>
+      <path fill="context-stroke" d="M12.101 1.412l1.152 3.062 0.486 1.294 1.329 0.381 3.089 0.888 -2.57 2.242 -0.995 0.867 0.055 1.32 0.14 3.352 -2.695 -1.836 -1.213 -0.826 -1.36 0.547 -2.946 1.184 0.867 -3.219 0.345 -1.283 -0.791 -1.068 -2.03 -2.74 3.263 -0.183 1.416 -0.08 0.755 -1.2 1.702 -2.7"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.374" d="M12.101 1.412l1.152 3.062 0.486 1.294 1.329 0.381 3.089 0.888 -2.57 2.242 -0.995 0.867 0.055 1.32 0.14 3.352 -2.695 -1.836 -1.213 -0.826 -1.36 0.547 -2.946 1.184 0.867 -3.219 0.345 -1.283 -0.791 -1.068 -2.03 -2.74 3.263 -0.183 1.416 -0.08 0.755 -1.2 1.702 -2.7"/>
     </g>
   </svg>
   <svg x="132">
     <defs>
       <mask id="f" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#f)" opacity=".844">
-      <path fill="rgb(48,163,255)" d="M11.736 1.4l1.31 2.967 0.552 1.254 1.337 0.304 3.106 0.707 -2.419 2.361 -0.937 0.914 0.127 1.303 0.324 3.31 -2.768 -1.668 -1.246 -0.75 -1.316 0.616 -2.85 1.335 0.68 -3.233 0.27 -1.29 -0.842 -1.013 -2.162 -2.599 3.22 -0.362 1.397 -0.157 0.682 -1.23 1.534 -2.767"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.362" d="M11.736 1.4l1.31 2.967 0.552 1.254 1.337 0.304 3.106 0.707 -2.419 2.361 -0.937 0.914 0.127 1.303 0.324 3.31 -2.768 -1.668 -1.246 -0.75 -1.316 0.616 -2.85 1.335 0.68 -3.233 0.27 -1.29 -0.842 -1.013 -2.162 -2.599 3.22 -0.362 1.397 -0.157 0.682 -1.23 1.534 -2.767"/>
+      <path fill="context-stroke" d="M11.736 1.4l1.31 2.967 0.552 1.254 1.337 0.304 3.106 0.707 -2.419 2.361 -0.937 0.914 0.127 1.303 0.324 3.31 -2.768 -1.668 -1.246 -0.75 -1.316 0.616 -2.85 1.335 0.68 -3.233 0.27 -1.29 -0.842 -1.013 -2.162 -2.599 3.22 -0.362 1.397 -0.157 0.682 -1.23 1.534 -2.767"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.362" d="M11.736 1.4l1.31 2.967 0.552 1.254 1.337 0.304 3.106 0.707 -2.419 2.361 -0.937 0.914 0.127 1.303 0.324 3.31 -2.768 -1.668 -1.246 -0.75 -1.316 0.616 -2.85 1.335 0.68 -3.233 0.27 -1.29 -0.842 -1.013 -2.162 -2.599 3.22 -0.362 1.397 -0.157 0.682 -1.23 1.534 -2.767"/>
     </g>
   </svg>
   <svg x="154">
     <defs>
       <mask id="g" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#g)" opacity=".957">
-      <path fill="rgb(48,163,255)" d="M11.481 1.392l1.417 2.895 0.598 1.224 1.34 0.249 3.111 0.58 -2.309 2.44 -0.894 0.944 0.177 1.289 0.452 3.273 -2.814 -1.547 -1.267 -0.696 -1.282 0.664 -2.779 1.437 0.548 -3.237 0.219 -1.291 -0.877 -0.973 -2.248 -2.496 3.184 -0.486 1.38 -0.21 0.628 -1.249 1.415 -2.808"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.353" d="M11.481 1.392l1.417 2.895 0.598 1.224 1.34 0.249 3.111 0.58 -2.309 2.44 -0.894 0.944 0.177 1.289 0.452 3.273 -2.814 -1.547 -1.267 -0.696 -1.282 0.664 -2.779 1.437 0.548 -3.237 0.219 -1.291 -0.877 -0.973 -2.248 -2.496 3.184 -0.486 1.38 -0.21 0.628 -1.249 1.415 -2.808"/>
+      <path fill="context-stroke" d="M11.481 1.392l1.417 2.895 0.598 1.224 1.34 0.249 3.111 0.58 -2.309 2.44 -0.894 0.944 0.177 1.289 0.452 3.273 -2.814 -1.547 -1.267 -0.696 -1.282 0.664 -2.779 1.437 0.548 -3.237 0.219 -1.291 -0.877 -0.973 -2.248 -2.496 3.184 -0.486 1.38 -0.21 0.628 -1.249 1.415 -2.808"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.353" d="M11.481 1.392l1.417 2.895 0.598 1.224 1.34 0.249 3.111 0.58 -2.309 2.44 -0.894 0.944 0.177 1.289 0.452 3.273 -2.814 -1.547 -1.267 -0.696 -1.282 0.664 -2.779 1.437 0.548 -3.237 0.219 -1.291 -0.877 -0.973 -2.248 -2.496 3.184 -0.486 1.38 -0.21 0.628 -1.249 1.415 -2.808"/>
     </g>
   </svg>
   <svg x="176">
     <defs>
       <mask id="h" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#h)">
-      <path fill="rgb(48,163,255)" d="M11.386 1.366l1.456 2.867 0.615 1.211 1.34 0.228 3.113 0.532 -2.267 2.469 -0.878 0.955 0.196 1.283 0.5 3.259 -2.83 -1.501 -1.275 -0.676 -1.269 0.682 -2.75 1.475 0.499 -3.237 0.198 -1.291 -0.889 -0.958 -2.28 -2.456 3.169 -0.532 1.373 -0.231 0.608 -1.255 1.37 -2.822"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.386 1.366l1.456 2.867 0.615 1.211 1.34 0.228 3.113 0.532 -2.267 2.469 -0.878 0.955 0.196 1.283 0.5 3.259 -2.83 -1.501 -1.275 -0.676 -1.269 0.682 -2.75 1.475 0.499 -3.237 0.198 -1.291 -0.889 -0.958 -2.28 -2.456 3.169 -0.532 1.373 -0.231 0.608 -1.255 1.37 -2.822"/>
+      <path fill="context-stroke" d="M11.386 1.366l1.456 2.867 0.615 1.211 1.34 0.228 3.113 0.532 -2.267 2.469 -0.878 0.955 0.196 1.283 0.5 3.259 -2.83 -1.501 -1.275 -0.676 -1.269 0.682 -2.75 1.475 0.499 -3.237 0.198 -1.291 -0.889 -0.958 -2.28 -2.456 3.169 -0.532 1.373 -0.231 0.608 -1.255 1.37 -2.822"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.386 1.366l1.456 2.867 0.615 1.211 1.34 0.228 3.113 0.532 -2.267 2.469 -0.878 0.955 0.196 1.283 0.5 3.259 -2.83 -1.501 -1.275 -0.676 -1.269 0.682 -2.75 1.475 0.499 -3.237 0.198 -1.291 -0.889 -0.958 -2.28 -2.456 3.169 -0.532 1.373 -0.231 0.608 -1.255 1.37 -2.822"/>
     </g>
   </svg>
   <svg x="198">
     <defs>
       <mask id="i" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#i)">
-      <path fill="rgb(48,163,255)" d="M11.333 1.416l1.48 2.854 0.625 1.206 1.341 0.218 3.118 0.506 -2.247 2.487 -0.87 0.962 0.207 1.282 0.526 3.254 -2.842 -1.478 -1.28 -0.665 -1.263 0.692 -2.738 1.498 0.471 -3.241 0.188 -1.293 -0.896 -0.95 -2.3 -2.437 3.163 -0.558 1.372 -0.243 0.598 -1.26 1.346 -2.833"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.333 1.416l1.48 2.854 0.625 1.206 1.341 0.218 3.118 0.506 -2.247 2.487 -0.87 0.962 0.207 1.282 0.526 3.254 -2.842 -1.478 -1.28 -0.665 -1.263 0.692 -2.738 1.498 0.471 -3.241 0.188 -1.293 -0.896 -0.95 -2.3 -2.437 3.163 -0.558 1.372 -0.243 0.598 -1.26 1.346 -2.833"/>
+      <path fill="context-stroke" d="M11.333 1.416l1.48 2.854 0.625 1.206 1.341 0.218 3.118 0.506 -2.247 2.487 -0.87 0.962 0.207 1.282 0.526 3.254 -2.842 -1.478 -1.28 -0.665 -1.263 0.692 -2.738 1.498 0.471 -3.241 0.188 -1.293 -0.896 -0.95 -2.3 -2.437 3.163 -0.558 1.372 -0.243 0.598 -1.26 1.346 -2.833"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.333 1.416l1.48 2.854 0.625 1.206 1.341 0.218 3.118 0.506 -2.247 2.487 -0.87 0.962 0.207 1.282 0.526 3.254 -2.842 -1.478 -1.28 -0.665 -1.263 0.692 -2.738 1.498 0.471 -3.241 0.188 -1.293 -0.896 -0.95 -2.3 -2.437 3.163 -0.558 1.372 -0.243 0.598 -1.26 1.346 -2.833"/>
     </g>
   </svg>
   <svg x="220">
     <defs>
       <mask id="j" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#j)">
-      <path fill="rgb(48,163,255)" d="M11.26 1.479l1.512 2.837 0.639 1.2 1.343 0.201 3.123 0.471 -2.217 2.512 -0.86 0.973 0.222 1.279 0.563 3.248 -2.859 -1.445 -1.287 -0.65 -1.256 0.706 -2.72 1.528 0.435 -3.246 0.173 -1.295 -0.908 -0.94 -2.328 -2.41 3.158 -0.595 1.369 -0.258 0.583 -1.266 1.313 -2.848"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.26 1.479l1.512 2.837 0.639 1.2 1.343 0.201 3.123 0.471 -2.217 2.512 -0.86 0.973 0.222 1.279 0.563 3.248 -2.859 -1.445 -1.287 -0.65 -1.256 0.706 -2.72 1.528 0.435 -3.246 0.173 -1.295 -0.908 -0.94 -2.328 -2.41 3.158 -0.595 1.369 -0.258 0.583 -1.266 1.313 -2.848"/>
+      <path fill="context-stroke" d="M11.26 1.479l1.512 2.837 0.639 1.2 1.343 0.201 3.123 0.471 -2.217 2.512 -0.86 0.973 0.222 1.279 0.563 3.248 -2.859 -1.445 -1.287 -0.65 -1.256 0.706 -2.72 1.528 0.435 -3.246 0.173 -1.295 -0.908 -0.94 -2.328 -2.41 3.158 -0.595 1.369 -0.258 0.583 -1.266 1.313 -2.848"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.26 1.479l1.512 2.837 0.639 1.2 1.343 0.201 3.123 0.471 -2.217 2.512 -0.86 0.973 0.222 1.279 0.563 3.248 -2.859 -1.445 -1.287 -0.65 -1.256 0.706 -2.72 1.528 0.435 -3.246 0.173 -1.295 -0.908 -0.94 -2.328 -2.41 3.158 -0.595 1.369 -0.258 0.583 -1.266 1.313 -2.848"/>
     </g>
   </svg>
   <svg x="242">
     <defs>
       <mask id="k" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#k)">
-      <path fill="rgb(48,163,255)" d="M11.174 1.557l1.55 2.817 0.655 1.19 1.346 0.185 3.129 0.43 -2.184 2.54 -0.847 0.984 0.239 1.277 0.606 3.24 -2.878 -1.408 -1.296 -0.633 -1.246 0.723 -2.7 1.565 0.392 -3.252 0.156 -1.297 -0.92 -0.928 -2.36 -2.379 3.15 -0.636 1.365 -0.277 0.567 -1.273 1.275 -2.866"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.174 1.557l1.55 2.817 0.655 1.19 1.346 0.185 3.129 0.43 -2.184 2.54 -0.847 0.984 0.239 1.277 0.606 3.24 -2.878 -1.408 -1.296 -0.633 -1.246 0.723 -2.7 1.565 0.392 -3.252 0.156 -1.297 -0.92 -0.928 -2.36 -2.379 3.15 -0.636 1.365 -0.277 0.567 -1.273 1.275 -2.866"/>
+      <path fill="context-stroke" d="M11.174 1.557l1.55 2.817 0.655 1.19 1.346 0.185 3.129 0.43 -2.184 2.54 -0.847 0.984 0.239 1.277 0.606 3.24 -2.878 -1.408 -1.296 -0.633 -1.246 0.723 -2.7 1.565 0.392 -3.252 0.156 -1.297 -0.92 -0.928 -2.36 -2.379 3.15 -0.636 1.365 -0.277 0.567 -1.273 1.275 -2.866"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.174 1.557l1.55 2.817 0.655 1.19 1.346 0.185 3.129 0.43 -2.184 2.54 -0.847 0.984 0.239 1.277 0.606 3.24 -2.878 -1.408 -1.296 -0.633 -1.246 0.723 -2.7 1.565 0.392 -3.252 0.156 -1.297 -0.92 -0.928 -2.36 -2.379 3.15 -0.636 1.365 -0.277 0.567 -1.273 1.275 -2.866"/>
     </g>
   </svg>
   <svg x="264">
     <defs>
       <mask id="l" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#l)">
-      <path fill="rgb(48,163,255)" d="M11.08 1.652l1.592 2.794 0.671 1.181 1.349 0.165 3.135 0.383 -2.147 2.573 -0.833 0.996 0.258 1.273 0.653 3.23 -2.898 -1.365 -1.305 -0.614 -1.235 0.741 -2.677 1.604 0.344 -3.257 0.137 -1.3 -0.933 -0.914 -2.394 -2.345 3.14 -0.682 1.361 -0.296 0.548 -1.282 1.234 -2.883"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.08 1.652l1.592 2.794 0.671 1.181 1.349 0.165 3.135 0.383 -2.147 2.573 -0.833 0.996 0.258 1.273 0.653 3.23 -2.898 -1.365 -1.305 -0.614 -1.235 0.741 -2.677 1.604 0.344 -3.257 0.137 -1.3 -0.933 -0.914 -2.394 -2.345 3.14 -0.682 1.361 -0.296 0.548 -1.282 1.234 -2.883"/>
+      <path fill="context-stroke" d="M11.08 1.652l1.592 2.794 0.671 1.181 1.349 0.165 3.135 0.383 -2.147 2.573 -0.833 0.996 0.258 1.273 0.653 3.23 -2.898 -1.365 -1.305 -0.614 -1.235 0.741 -2.677 1.604 0.344 -3.257 0.137 -1.3 -0.933 -0.914 -2.394 -2.345 3.14 -0.682 1.361 -0.296 0.548 -1.282 1.234 -2.883"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M11.08 1.652l1.592 2.794 0.671 1.181 1.349 0.165 3.135 0.383 -2.147 2.573 -0.833 0.996 0.258 1.273 0.653 3.23 -2.898 -1.365 -1.305 -0.614 -1.235 0.741 -2.677 1.604 0.344 -3.257 0.137 -1.3 -0.933 -0.914 -2.394 -2.345 3.14 -0.682 1.361 -0.296 0.548 -1.282 1.234 -2.883"/>
     </g>
   </svg>
   <svg x="286">
     <defs>
       <mask id="m" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#m)">
-      <path fill="rgb(48,163,255)" d="M10.982 1.764l1.633 2.77 0.69 1.17 1.351 0.144 3.14 0.335 -2.107 2.606 -0.817 1.008 0.277 1.269 0.703 3.22 -2.919 -1.32 -1.314 -0.594 -1.224 0.76 -2.652 1.644 0.294 -3.262 0.117 -1.3 -0.947 -0.9 -2.43 -2.309 3.13 -0.73 1.356 -0.317 0.528 -1.29 1.19 -2.902"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.982 1.764l1.633 2.77 0.69 1.17 1.351 0.144 3.14 0.335 -2.107 2.606 -0.817 1.008 0.277 1.269 0.703 3.22 -2.919 -1.32 -1.314 -0.594 -1.224 0.76 -2.652 1.644 0.294 -3.262 0.117 -1.3 -0.947 -0.9 -2.43 -2.309 3.13 -0.73 1.356 -0.317 0.528 -1.29 1.19 -2.902"/>
+      <path fill="context-stroke" d="M10.982 1.764l1.633 2.77 0.69 1.17 1.351 0.144 3.14 0.335 -2.107 2.606 -0.817 1.008 0.277 1.269 0.703 3.22 -2.919 -1.32 -1.314 -0.594 -1.224 0.76 -2.652 1.644 0.294 -3.262 0.117 -1.3 -0.947 -0.9 -2.43 -2.309 3.13 -0.73 1.356 -0.317 0.528 -1.29 1.19 -2.902"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.982 1.764l1.633 2.77 0.69 1.17 1.351 0.144 3.14 0.335 -2.107 2.606 -0.817 1.008 0.277 1.269 0.703 3.22 -2.919 -1.32 -1.314 -0.594 -1.224 0.76 -2.652 1.644 0.294 -3.262 0.117 -1.3 -0.947 -0.9 -2.43 -2.309 3.13 -0.73 1.356 -0.317 0.528 -1.29 1.19 -2.902"/>
     </g>
   </svg>
   <svg x="308">
     <defs>
       <mask id="n" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#n)">
-      <path fill="rgb(48,163,255)" d="M10.879 1.895l1.677 2.743 0.709 1.159 1.353 0.122 3.145 0.285 -2.065 2.64 -0.8 1.02 0.296 1.265 0.755 3.209 -2.94 -1.274 -1.323 -0.573 -1.212 0.78 -2.625 1.686 0.242 -3.266 0.096 -1.303 -0.961 -0.885 -2.467 -2.268 3.117 -0.78 1.351 -0.339 0.508 -1.298 1.142 -2.921"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.879 1.895l1.677 2.743 0.709 1.159 1.353 0.122 3.145 0.285 -2.065 2.64 -0.8 1.02 0.296 1.265 0.755 3.209 -2.94 -1.274 -1.323 -0.573 -1.212 0.78 -2.625 1.686 0.242 -3.266 0.096 -1.303 -0.961 -0.885 -2.467 -2.268 3.117 -0.78 1.351 -0.339 0.508 -1.298 1.142 -2.921"/>
+      <path fill="context-stroke" d="M10.879 1.895l1.677 2.743 0.709 1.159 1.353 0.122 3.145 0.285 -2.065 2.64 -0.8 1.02 0.296 1.265 0.755 3.209 -2.94 -1.274 -1.323 -0.573 -1.212 0.78 -2.625 1.686 0.242 -3.266 0.096 -1.303 -0.961 -0.885 -2.467 -2.268 3.117 -0.78 1.351 -0.339 0.508 -1.298 1.142 -2.921"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.879 1.895l1.677 2.743 0.709 1.159 1.353 0.122 3.145 0.285 -2.065 2.64 -0.8 1.02 0.296 1.265 0.755 3.209 -2.94 -1.274 -1.323 -0.573 -1.212 0.78 -2.625 1.686 0.242 -3.266 0.096 -1.303 -0.961 -0.885 -2.467 -2.268 3.117 -0.78 1.351 -0.339 0.508 -1.298 1.142 -2.921"/>
     </g>
   </svg>
   <svg x="330">
     <defs>
       <mask id="o" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#o)">
-      <path fill="rgb(48,163,255)" d="M10.772 2.046l1.723 2.715 0.728 1.147 1.354 0.1 3.15 0.233 -2.022 2.673 -0.783 1.034 0.318 1.26 0.807 3.195 -2.96 -1.225 -1.333 -0.551 -1.198 0.8 -2.597 1.73 0.187 -3.27 0.075 -1.305 -0.976 -0.868 -2.503 -2.228 3.103 -0.831 1.346 -0.361 0.486 -1.307 1.094 -2.94"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.772 2.046l1.723 2.715 0.728 1.147 1.354 0.1 3.15 0.233 -2.022 2.673 -0.783 1.034 0.318 1.26 0.807 3.195 -2.96 -1.225 -1.333 -0.551 -1.198 0.8 -2.597 1.73 0.187 -3.27 0.075 -1.305 -0.976 -0.868 -2.503 -2.228 3.103 -0.831 1.346 -0.361 0.486 -1.307 1.094 -2.94"/>
+      <path fill="context-stroke" d="M10.772 2.046l1.723 2.715 0.728 1.147 1.354 0.1 3.15 0.233 -2.022 2.673 -0.783 1.034 0.318 1.26 0.807 3.195 -2.96 -1.225 -1.333 -0.551 -1.198 0.8 -2.597 1.73 0.187 -3.27 0.075 -1.305 -0.976 -0.868 -2.503 -2.228 3.103 -0.831 1.346 -0.361 0.486 -1.307 1.094 -2.94"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.772 2.046l1.723 2.715 0.728 1.147 1.354 0.1 3.15 0.233 -2.022 2.673 -0.783 1.034 0.318 1.26 0.807 3.195 -2.96 -1.225 -1.333 -0.551 -1.198 0.8 -2.597 1.73 0.187 -3.27 0.075 -1.305 -0.976 -0.868 -2.503 -2.228 3.103 -0.831 1.346 -0.361 0.486 -1.307 1.094 -2.94"/>
     </g>
   </svg>
   <svg x="352">
     <defs>
       <mask id="p" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#p)">
-      <path fill="rgb(48,163,255)" d="M10.663 2.218l1.769 2.686 0.747 1.135 1.356 0.076 3.153 0.18 -1.976 2.707 -0.766 1.048 0.339 1.253 0.861 3.182 -2.98 -1.175 -1.342 -0.529 -1.185 0.82 -2.567 1.774 0.132 -3.273 0.053 -1.305 -0.99 -0.852 -2.541 -2.185 3.089 -0.884 1.339 -0.384 0.464 -1.314 1.044 -2.958"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.663 2.218l1.769 2.686 0.747 1.135 1.356 0.076 3.153 0.18 -1.976 2.707 -0.766 1.048 0.339 1.253 0.861 3.182 -2.98 -1.175 -1.342 -0.529 -1.185 0.82 -2.567 1.774 0.132 -3.273 0.053 -1.305 -0.99 -0.852 -2.541 -2.185 3.089 -0.884 1.339 -0.384 0.464 -1.314 1.044 -2.958"/>
+      <path fill="context-stroke" d="M10.663 2.218l1.769 2.686 0.747 1.135 1.356 0.076 3.153 0.18 -1.976 2.707 -0.766 1.048 0.339 1.253 0.861 3.182 -2.98 -1.175 -1.342 -0.529 -1.185 0.82 -2.567 1.774 0.132 -3.273 0.053 -1.305 -0.99 -0.852 -2.541 -2.185 3.089 -0.884 1.339 -0.384 0.464 -1.314 1.044 -2.958"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.663 2.218l1.769 2.686 0.747 1.135 1.356 0.076 3.153 0.18 -1.976 2.707 -0.766 1.048 0.339 1.253 0.861 3.182 -2.98 -1.175 -1.342 -0.529 -1.185 0.82 -2.567 1.774 0.132 -3.273 0.053 -1.305 -0.99 -0.852 -2.541 -2.185 3.089 -0.884 1.339 -0.384 0.464 -1.314 1.044 -2.958"/>
     </g>
   </svg>
   <svg x="374">
     <defs>
       <mask id="q" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#q)">
-      <path fill="rgb(48,163,255)" d="M10.552 2.414l1.815 2.655 0.766 1.122 1.357 0.053 3.156 0.126 -1.929 2.74 -0.748 1.06 0.36 1.248 0.917 3.167 -3 -1.124 -1.351 -0.505 -1.17 0.84 -2.537 1.817 0.076 -3.274 0.03 -1.306 -1.005 -0.835 -2.578 -2.14 3.073 -0.937 1.333 -0.407 0.44 -1.323 0.994 -2.975"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.552 2.414l1.815 2.655 0.766 1.122 1.357 0.053 3.156 0.126 -1.929 2.74 -0.748 1.06 0.36 1.248 0.917 3.167 -3 -1.124 -1.351 -0.505 -1.17 0.84 -2.537 1.817 0.076 -3.274 0.03 -1.306 -1.005 -0.835 -2.578 -2.14 3.073 -0.937 1.333 -0.407 0.44 -1.323 0.994 -2.975"/>
+      <path fill="context-stroke" d="M10.552 2.414l1.815 2.655 0.766 1.122 1.357 0.053 3.156 0.126 -1.929 2.74 -0.748 1.06 0.36 1.248 0.917 3.167 -3 -1.124 -1.351 -0.505 -1.17 0.84 -2.537 1.817 0.076 -3.274 0.03 -1.306 -1.005 -0.835 -2.578 -2.14 3.073 -0.937 1.333 -0.407 0.44 -1.323 0.994 -2.975"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.552 2.414l1.815 2.655 0.766 1.122 1.357 0.053 3.156 0.126 -1.929 2.74 -0.748 1.06 0.36 1.248 0.917 3.167 -3 -1.124 -1.351 -0.505 -1.17 0.84 -2.537 1.817 0.076 -3.274 0.03 -1.306 -1.005 -0.835 -2.578 -2.14 3.073 -0.937 1.333 -0.407 0.44 -1.323 0.994 -2.975"/>
     </g>
   </svg>
   <svg x="396">
     <defs>
       <mask id="r" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#r)">
-      <path fill="rgb(48,163,255)" d="M10.44 2.636l1.86 2.622 0.786 1.109 1.358 0.03 3.158 0.07 -1.881 2.773 -0.73 1.074 0.383 1.24 0.97 3.151 -3.018 -1.07 -1.36 -0.482 -1.155 0.86 -2.505 1.861 0.02 -3.275 0.006 -1.306 -1.019 -0.817 -2.615 -2.096 3.057 -0.99 1.325 -0.43 0.418 -1.33 0.94 -2.992"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.44 2.636l1.86 2.622 0.786 1.109 1.358 0.03 3.158 0.07 -1.881 2.773 -0.73 1.074 0.383 1.24 0.97 3.151 -3.018 -1.07 -1.36 -0.482 -1.155 0.86 -2.505 1.861 0.02 -3.275 0.006 -1.306 -1.019 -0.817 -2.615 -2.096 3.057 -0.99 1.325 -0.43 0.418 -1.33 0.94 -2.992"/>
+      <path fill="context-stroke" d="M10.44 2.636l1.86 2.622 0.786 1.109 1.358 0.03 3.158 0.07 -1.881 2.773 -0.73 1.074 0.383 1.24 0.97 3.151 -3.018 -1.07 -1.36 -0.482 -1.155 0.86 -2.505 1.861 0.02 -3.275 0.006 -1.306 -1.019 -0.817 -2.615 -2.096 3.057 -0.99 1.325 -0.43 0.418 -1.33 0.94 -2.992"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.44 2.636l1.86 2.622 0.786 1.109 1.358 0.03 3.158 0.07 -1.881 2.773 -0.73 1.074 0.383 1.24 0.97 3.151 -3.018 -1.07 -1.36 -0.482 -1.155 0.86 -2.505 1.861 0.02 -3.275 0.006 -1.306 -1.019 -0.817 -2.615 -2.096 3.057 -0.99 1.325 -0.43 0.418 -1.33 0.94 -2.992"/>
     </g>
   </svg>
   <svg x="418">
     <defs>
       <mask id="s" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#s)">
-      <path fill="rgb(48,163,255)" d="M10.326 2.885l1.907 2.59 0.805 1.094 1.359 0.006 3.158 0.014 -1.832 2.807 -0.71 1.086 0.404 1.234 1.026 3.132 -3.037 -1.017 -1.368 -0.458 -1.14 0.88 -2.472 1.906 -0.038 -3.275 -0.016 -1.306 -1.034 -0.8 -2.651 -2.048 3.038 -1.044 1.318 -0.453 0.394 -1.338 0.888 -3.008"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.326 2.885l1.907 2.59 0.805 1.094 1.359 0.006 3.158 0.014 -1.832 2.807 -0.71 1.086 0.404 1.234 1.026 3.132 -3.037 -1.017 -1.368 -0.458 -1.14 0.88 -2.472 1.906 -0.038 -3.275 -0.016 -1.306 -1.034 -0.8 -2.651 -2.048 3.038 -1.044 1.318 -0.453 0.394 -1.338 0.888 -3.008"/>
+      <path fill="context-stroke" d="M10.326 2.885l1.907 2.59 0.805 1.094 1.359 0.006 3.158 0.014 -1.832 2.807 -0.71 1.086 0.404 1.234 1.026 3.132 -3.037 -1.017 -1.368 -0.458 -1.14 0.88 -2.472 1.906 -0.038 -3.275 -0.016 -1.306 -1.034 -0.8 -2.651 -2.048 3.038 -1.044 1.318 -0.453 0.394 -1.338 0.888 -3.008"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.326 2.885l1.907 2.59 0.805 1.094 1.359 0.006 3.158 0.014 -1.832 2.807 -0.71 1.086 0.404 1.234 1.026 3.132 -3.037 -1.017 -1.368 -0.458 -1.14 0.88 -2.472 1.906 -0.038 -3.275 -0.016 -1.306 -1.034 -0.8 -2.651 -2.048 3.038 -1.044 1.318 -0.453 0.394 -1.338 0.888 -3.008"/>
     </g>
   </svg>
   <svg x="440">
     <defs>
       <mask id="t" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#t)">
-      <path fill="rgb(48,163,255)" d="M10.212 3.165l1.952 2.555 0.825 1.08 1.358 -0.019 3.158 -0.04 -1.782 2.837 -0.69 1.1 0.426 1.226 1.082 3.114 -3.055 -0.964 -1.376 -0.433 -1.125 0.9 -2.436 1.95 -0.097 -3.274 -0.04 -1.306 -1.047 -0.78 -2.688 -2.002 3.02 -1.098 1.309 -0.476 0.37 -1.344 0.835 -3.024"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.212 3.165l1.952 2.555 0.825 1.08 1.358 -0.019 3.158 -0.04 -1.782 2.837 -0.69 1.1 0.426 1.226 1.082 3.114 -3.055 -0.964 -1.376 -0.433 -1.125 0.9 -2.436 1.95 -0.097 -3.274 -0.04 -1.306 -1.047 -0.78 -2.688 -2.002 3.02 -1.098 1.309 -0.476 0.37 -1.344 0.835 -3.024"/>
+      <path fill="context-stroke" d="M10.212 3.165l1.952 2.555 0.825 1.08 1.358 -0.019 3.158 -0.04 -1.782 2.837 -0.69 1.1 0.426 1.226 1.082 3.114 -3.055 -0.964 -1.376 -0.433 -1.125 0.9 -2.436 1.95 -0.097 -3.274 -0.04 -1.306 -1.047 -0.78 -2.688 -2.002 3.02 -1.098 1.309 -0.476 0.37 -1.344 0.835 -3.024"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.212 3.165l1.952 2.555 0.825 1.08 1.358 -0.019 3.158 -0.04 -1.782 2.837 -0.69 1.1 0.426 1.226 1.082 3.114 -3.055 -0.964 -1.376 -0.433 -1.125 0.9 -2.436 1.95 -0.097 -3.274 -0.04 -1.306 -1.047 -0.78 -2.688 -2.002 3.02 -1.098 1.309 -0.476 0.37 -1.344 0.835 -3.024"/>
     </g>
   </svg>
   <svg x="462">
     <defs>
       <mask id="u" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#u)">
-      <path fill="rgb(48,163,255)" d="M10.097 3.479l1.998 2.52 0.843 1.064 1.358 -0.043 3.157 -0.097 -1.73 2.87 -0.671 1.11 0.447 1.219 1.138 3.094 -3.072 -0.908 -1.383 -0.409 -1.108 0.92 -2.402 1.993 -0.156 -3.272 -0.062 -1.304 -1.061 -0.762 -2.723 -1.953 2.999 -1.152 1.3 -0.5 0.347 -1.35 0.78 -3.038"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.097 3.479l1.998 2.52 0.843 1.064 1.358 -0.043 3.157 -0.097 -1.73 2.87 -0.671 1.11 0.447 1.219 1.138 3.094 -3.072 -0.908 -1.383 -0.409 -1.108 0.92 -2.402 1.993 -0.156 -3.272 -0.062 -1.304 -1.061 -0.762 -2.723 -1.953 2.999 -1.152 1.3 -0.5 0.347 -1.35 0.78 -3.038"/>
+      <path fill="context-stroke" d="M10.097 3.479l1.998 2.52 0.843 1.064 1.358 -0.043 3.157 -0.097 -1.73 2.87 -0.671 1.11 0.447 1.219 1.138 3.094 -3.072 -0.908 -1.383 -0.409 -1.108 0.92 -2.402 1.993 -0.156 -3.272 -0.062 -1.304 -1.061 -0.762 -2.723 -1.953 2.999 -1.152 1.3 -0.5 0.347 -1.35 0.78 -3.038"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M10.097 3.479l1.998 2.52 0.843 1.064 1.358 -0.043 3.157 -0.097 -1.73 2.87 -0.671 1.11 0.447 1.219 1.138 3.094 -3.072 -0.908 -1.383 -0.409 -1.108 0.92 -2.402 1.993 -0.156 -3.272 -0.062 -1.304 -1.061 -0.762 -2.723 -1.953 2.999 -1.152 1.3 -0.5 0.347 -1.35 0.78 -3.038"/>
     </g>
   </svg>
   <svg x="484">
     <defs>
       <mask id="v" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#v)">
-      <path fill="rgb(48,163,255)" d="M9.981 3.83l2.043 2.483 0.863 1.05 1.357 -0.068 3.154 -0.154 -1.678 2.9 -0.651 1.123 0.47 1.21 1.193 3.073 -3.088 -0.853 -1.39 -0.383 -1.092 0.94 -2.366 2.036 -0.214 -3.269 -0.086 -1.303 -1.075 -0.743 -2.757 -1.903 2.978 -1.206 1.291 -0.523 0.322 -1.357 0.726 -3.051"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.981 3.83l2.043 2.483 0.863 1.05 1.357 -0.068 3.154 -0.154 -1.678 2.9 -0.651 1.123 0.47 1.21 1.193 3.073 -3.088 -0.853 -1.39 -0.383 -1.092 0.94 -2.366 2.036 -0.214 -3.269 -0.086 -1.303 -1.075 -0.743 -2.757 -1.903 2.978 -1.206 1.291 -0.523 0.322 -1.357 0.726 -3.051"/>
+      <path fill="context-stroke" d="M9.981 3.83l2.043 2.483 0.863 1.05 1.357 -0.068 3.154 -0.154 -1.678 2.9 -0.651 1.123 0.47 1.21 1.193 3.073 -3.088 -0.853 -1.39 -0.383 -1.092 0.94 -2.366 2.036 -0.214 -3.269 -0.086 -1.303 -1.075 -0.743 -2.757 -1.903 2.978 -1.206 1.291 -0.523 0.322 -1.357 0.726 -3.051"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.981 3.83l2.043 2.483 0.863 1.05 1.357 -0.068 3.154 -0.154 -1.678 2.9 -0.651 1.123 0.47 1.21 1.193 3.073 -3.088 -0.853 -1.39 -0.383 -1.092 0.94 -2.366 2.036 -0.214 -3.269 -0.086 -1.303 -1.075 -0.743 -2.757 -1.903 2.978 -1.206 1.291 -0.523 0.322 -1.357 0.726 -3.051"/>
     </g>
   </svg>
   <svg x="506">
     <defs>
       <mask id="w" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#w)">
-      <path fill="rgb(48,163,255)" d="M9.866 4.223l2.087 2.446 0.881 1.034 1.356 -0.092 3.15 -0.211 -1.625 2.93 -0.63 1.134 0.491 1.202 1.248 3.05 -3.103 -0.796 -1.397 -0.359 -1.074 0.96 -2.328 2.078 -0.274 -3.264 -0.109 -1.302 -1.088 -0.723 -2.791 -1.854 2.955 -1.259 1.282 -0.546 0.297 -1.362 0.67 -3.064"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.866 4.223l2.087 2.446 0.881 1.034 1.356 -0.092 3.15 -0.211 -1.625 2.93 -0.63 1.134 0.491 1.202 1.248 3.05 -3.103 -0.796 -1.397 -0.359 -1.074 0.96 -2.328 2.078 -0.274 -3.264 -0.109 -1.302 -1.088 -0.723 -2.791 -1.854 2.955 -1.259 1.282 -0.546 0.297 -1.362 0.67 -3.064"/>
+      <path fill="context-stroke" d="M9.866 4.223l2.087 2.446 0.881 1.034 1.356 -0.092 3.15 -0.211 -1.625 2.93 -0.63 1.134 0.491 1.202 1.248 3.05 -3.103 -0.796 -1.397 -0.359 -1.074 0.96 -2.328 2.078 -0.274 -3.264 -0.109 -1.302 -1.088 -0.723 -2.791 -1.854 2.955 -1.259 1.282 -0.546 0.297 -1.362 0.67 -3.064"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.866 4.223l2.087 2.446 0.881 1.034 1.356 -0.092 3.15 -0.211 -1.625 2.93 -0.63 1.134 0.491 1.202 1.248 3.05 -3.103 -0.796 -1.397 -0.359 -1.074 0.96 -2.328 2.078 -0.274 -3.264 -0.109 -1.302 -1.088 -0.723 -2.791 -1.854 2.955 -1.259 1.282 -0.546 0.297 -1.362 0.67 -3.064"/>
     </g>
   </svg>
   <svg x="528">
     <defs>
       <mask id="x" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#x)">
-      <path fill="rgb(48,163,255)" d="M9.75 4.663l2.13 2.408 0.901 1.018 1.354 -0.116 3.146 -0.268 -1.573 2.959 -0.61 1.145 0.514 1.193 1.303 3.028 -3.117 -0.741 -1.403 -0.333 -1.057 0.979 -2.29 2.12 -0.333 -3.26 -0.132 -1.299 -1.101 -0.703 -2.825 -1.803 2.933 -1.312 1.271 -0.57 0.273 -1.367 0.615 -3.076"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.75 4.663l2.13 2.408 0.901 1.018 1.354 -0.116 3.146 -0.268 -1.573 2.959 -0.61 1.145 0.514 1.193 1.303 3.028 -3.117 -0.741 -1.403 -0.333 -1.057 0.979 -2.29 2.12 -0.333 -3.26 -0.132 -1.299 -1.101 -0.703 -2.825 -1.803 2.933 -1.312 1.271 -0.57 0.273 -1.367 0.615 -3.076"/>
+      <path fill="context-stroke" d="M9.75 4.663l2.13 2.408 0.901 1.018 1.354 -0.116 3.146 -0.268 -1.573 2.959 -0.61 1.145 0.514 1.193 1.303 3.028 -3.117 -0.741 -1.403 -0.333 -1.057 0.979 -2.29 2.12 -0.333 -3.26 -0.132 -1.299 -1.101 -0.703 -2.825 -1.803 2.933 -1.312 1.271 -0.57 0.273 -1.367 0.615 -3.076"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.75 4.663l2.13 2.408 0.901 1.018 1.354 -0.116 3.146 -0.268 -1.573 2.959 -0.61 1.145 0.514 1.193 1.303 3.028 -3.117 -0.741 -1.403 -0.333 -1.057 0.979 -2.29 2.12 -0.333 -3.26 -0.132 -1.299 -1.101 -0.703 -2.825 -1.803 2.933 -1.312 1.271 -0.57 0.273 -1.367 0.615 -3.076"/>
     </g>
   </svg>
   <svg x="550">
     <defs>
       <mask id="y" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#y)">
-      <path fill="rgb(48,163,255)" d="M9.635 5.158l2.173 2.37 0.919 1 1.35 -0.14 3.142 -0.324 -1.52 2.987 -0.588 1.156 0.534 1.183 1.358 3.004 -3.13 -0.685 -1.409 -0.307 -1.039 0.997 -2.252 2.16 -0.39 -3.251 -0.157 -1.297 -1.113 -0.683 -2.857 -1.752 2.909 -1.365 1.26 -0.593 0.25 -1.371 0.559 -3.087"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.635 5.158l2.173 2.37 0.919 1 1.35 -0.14 3.142 -0.324 -1.52 2.987 -0.588 1.156 0.534 1.183 1.358 3.004 -3.13 -0.685 -1.409 -0.307 -1.039 0.997 -2.252 2.16 -0.39 -3.251 -0.157 -1.297 -1.113 -0.683 -2.857 -1.752 2.909 -1.365 1.26 -0.593 0.25 -1.371 0.559 -3.087"/>
+      <path fill="context-stroke" d="M9.635 5.158l2.173 2.37 0.919 1 1.35 -0.14 3.142 -0.324 -1.52 2.987 -0.588 1.156 0.534 1.183 1.358 3.004 -3.13 -0.685 -1.409 -0.307 -1.039 0.997 -2.252 2.16 -0.39 -3.251 -0.157 -1.297 -1.113 -0.683 -2.857 -1.752 2.909 -1.365 1.26 -0.593 0.25 -1.371 0.559 -3.087"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.635 5.158l2.173 2.37 0.919 1 1.35 -0.14 3.142 -0.324 -1.52 2.987 -0.588 1.156 0.534 1.183 1.358 3.004 -3.13 -0.685 -1.409 -0.307 -1.039 0.997 -2.252 2.16 -0.39 -3.251 -0.157 -1.297 -1.113 -0.683 -2.857 -1.752 2.909 -1.365 1.26 -0.593 0.25 -1.371 0.559 -3.087"/>
     </g>
   </svg>
   <svg x="572">
     <defs>
       <mask id="z" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#z)">
-      <path fill="rgb(48,163,255)" d="M9.52 5.717l2.215 2.33 0.936 0.984 1.349 -0.164 3.135 -0.382 -1.466 3.014 -0.568 1.167 0.556 1.173 1.411 2.98 -3.141 -0.63 -1.415 -0.282 -1.02 1.017 -2.213 2.2 -0.45 -3.244 -0.179 -1.294 -1.125 -0.663 -2.888 -1.7 2.884 -1.418 1.25 -0.614 0.223 -1.376 0.504 -3.096"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.52 5.717l2.215 2.33 0.936 0.984 1.349 -0.164 3.135 -0.382 -1.466 3.014 -0.568 1.167 0.556 1.173 1.411 2.98 -3.141 -0.63 -1.415 -0.282 -1.02 1.017 -2.213 2.2 -0.45 -3.244 -0.179 -1.294 -1.125 -0.663 -2.888 -1.7 2.884 -1.418 1.25 -0.614 0.223 -1.376 0.504 -3.096"/>
+      <path fill="context-stroke" d="M9.52 5.717l2.215 2.33 0.936 0.984 1.349 -0.164 3.135 -0.382 -1.466 3.014 -0.568 1.167 0.556 1.173 1.411 2.98 -3.141 -0.63 -1.415 -0.282 -1.02 1.017 -2.213 2.2 -0.45 -3.244 -0.179 -1.294 -1.125 -0.663 -2.888 -1.7 2.884 -1.418 1.25 -0.614 0.223 -1.376 0.504 -3.096"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.52 5.717l2.215 2.33 0.936 0.984 1.349 -0.164 3.135 -0.382 -1.466 3.014 -0.568 1.167 0.556 1.173 1.411 2.98 -3.141 -0.63 -1.415 -0.282 -1.02 1.017 -2.213 2.2 -0.45 -3.244 -0.179 -1.294 -1.125 -0.663 -2.888 -1.7 2.884 -1.418 1.25 -0.614 0.223 -1.376 0.504 -3.096"/>
     </g>
   </svg>
   <svg x="594">
     <defs>
       <mask id="A" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#A)">
-      <path fill="rgb(48,163,255)" d="M9.404 6.35l2.257 2.29 0.954 0.968 1.345 -0.19 3.128 -0.437 -1.411 3.04 -0.547 1.177 0.576 1.163 1.464 2.953 -3.152 -0.572 -1.419 -0.257 -1.002 1.035 -2.173 2.24 -0.508 -3.237 -0.202 -1.29 -1.137 -0.643 -2.918 -1.648 2.858 -1.469 1.239 -0.637 0.199 -1.38 0.448 -3.104"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.404 6.35l2.257 2.29 0.954 0.968 1.345 -0.19 3.128 -0.437 -1.411 3.04 -0.547 1.177 0.576 1.163 1.464 2.953 -3.152 -0.572 -1.419 -0.257 -1.002 1.035 -2.173 2.24 -0.508 -3.237 -0.202 -1.29 -1.137 -0.643 -2.918 -1.648 2.858 -1.469 1.239 -0.637 0.199 -1.38 0.448 -3.104"/>
+      <path fill="context-stroke" d="M9.404 6.35l2.257 2.29 0.954 0.968 1.345 -0.19 3.128 -0.437 -1.411 3.04 -0.547 1.177 0.576 1.163 1.464 2.953 -3.152 -0.572 -1.419 -0.257 -1.002 1.035 -2.173 2.24 -0.508 -3.237 -0.202 -1.29 -1.137 -0.643 -2.918 -1.648 2.858 -1.469 1.239 -0.637 0.199 -1.38 0.448 -3.104"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.404 6.35l2.257 2.29 0.954 0.968 1.345 -0.19 3.128 -0.437 -1.411 3.04 -0.547 1.177 0.576 1.163 1.464 2.953 -3.152 -0.572 -1.419 -0.257 -1.002 1.035 -2.173 2.24 -0.508 -3.237 -0.202 -1.29 -1.137 -0.643 -2.918 -1.648 2.858 -1.469 1.239 -0.637 0.199 -1.38 0.448 -3.104"/>
     </g>
   </svg>
   <svg x="616">
     <defs>
       <mask id="B" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#B)">
-      <path fill="rgb(48,163,255)" d="M9.29 7.074l2.297 2.249 0.97 0.95 1.342 -0.212 3.12 -0.493 -1.357 3.064 -0.526 1.186 0.597 1.153 1.517 2.927 -3.162 -0.516 -1.424 -0.232 -0.984 1.052 -2.133 2.278 -0.564 -3.226 -0.226 -1.287 -1.148 -0.622 -2.947 -1.597 2.832 -1.518 1.227 -0.66 0.174 -1.383 0.394 -3.111"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.29 7.074l2.297 2.249 0.97 0.95 1.342 -0.212 3.12 -0.493 -1.357 3.064 -0.526 1.186 0.597 1.153 1.517 2.927 -3.162 -0.516 -1.424 -0.232 -0.984 1.052 -2.133 2.278 -0.564 -3.226 -0.226 -1.287 -1.148 -0.622 -2.947 -1.597 2.832 -1.518 1.227 -0.66 0.174 -1.383 0.394 -3.111"/>
+      <path fill="context-stroke" d="M9.29 7.074l2.297 2.249 0.97 0.95 1.342 -0.212 3.12 -0.493 -1.357 3.064 -0.526 1.186 0.597 1.153 1.517 2.927 -3.162 -0.516 -1.424 -0.232 -0.984 1.052 -2.133 2.278 -0.564 -3.226 -0.226 -1.287 -1.148 -0.622 -2.947 -1.597 2.832 -1.518 1.227 -0.66 0.174 -1.383 0.394 -3.111"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.29 7.074l2.297 2.249 0.97 0.95 1.342 -0.212 3.12 -0.493 -1.357 3.064 -0.526 1.186 0.597 1.153 1.517 2.927 -3.162 -0.516 -1.424 -0.232 -0.984 1.052 -2.133 2.278 -0.564 -3.226 -0.226 -1.287 -1.148 -0.622 -2.947 -1.597 2.832 -1.518 1.227 -0.66 0.174 -1.383 0.394 -3.111"/>
     </g>
   </svg>
   <svg x="638">
     <defs>
       <mask id="C" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5166 0 0 .5 13.263 28.454)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5166 0 0 .5 13.263 28.454)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5166 0 0 .5 13.263 28.454)"/>
       </mask>
     </defs>
     <path d="M7.985 22.141c-0.57 0 -1.033 0.448 -1.033 1v10c0 0.552 0.463 1 1.033 1 0.57 0 1.033 -0.448 1.033 -1v-10c0 -0.552 -0.462 -1 -1.033 -1zm3.1 -1c-0.57 0 -1.033 0.448 -1.033 1v11c0 0.552 0.462 1 1.033 1 0.57 0 1.033 -0.448 1.033 -1v-11c0 -0.552 -0.463 -1 -1.033 -1zm8.202 11.658l-4.132 -11c-0.185 -0.523 -0.772 -0.8 -1.313 -0.622 -0.539 0.178 -0.827 0.747 -0.642 1.27a0.509 0.509 0 0 0 0.013 0.036l4.133 11c0.185 0.523 0.772 0.801 1.312 0.622 0.54 -0.178 0.828 -0.747 0.643 -1.27 -0.004 -0.012 -0.008 -0.024 -0.014 -0.036zm-14.401 -12.658c-0.57 0 -1.034 0.448 -1.034 1v12c0 0.552 0.463 1 1.034 1 0.57 0 1.033 -0.448 1.033 -1v-12c0 -0.552 -0.463 -1 -1.033 -1z"/>
     <g mask="url(#C)">
-      <path fill="rgb(48,163,255)" d="M9.175 7.909l2.337 2.208 0.987 0.933 1.338 -0.236 3.11 -0.548 -1.302 3.087 -0.506 1.196 0.618 1.142 1.568 2.9 -3.17 -0.46 -1.428 -0.207 -0.965 1.07 -2.092 2.315 -0.622 -3.216 -0.248 -1.283 -1.16 -0.602 -2.973 -1.544 2.803 -1.568 1.216 -0.681 0.15 -1.386 0.338 -3.118"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.175 7.909l2.337 2.208 0.987 0.933 1.338 -0.236 3.11 -0.548 -1.302 3.087 -0.506 1.196 0.618 1.142 1.568 2.9 -3.17 -0.46 -1.428 -0.207 -0.965 1.07 -2.092 2.315 -0.622 -3.216 -0.248 -1.283 -1.16 -0.602 -2.973 -1.544 2.803 -1.568 1.216 -0.681 0.15 -1.386 0.338 -3.118"/>
+      <path fill="context-stroke" d="M9.175 7.909l2.337 2.208 0.987 0.933 1.338 -0.236 3.11 -0.548 -1.302 3.087 -0.506 1.196 0.618 1.142 1.568 2.9 -3.17 -0.46 -1.428 -0.207 -0.965 1.07 -2.092 2.315 -0.622 -3.216 -0.248 -1.283 -1.16 -0.602 -2.973 -1.544 2.803 -1.568 1.216 -0.681 0.15 -1.386 0.338 -3.118"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.175 7.909l2.337 2.208 0.987 0.933 1.338 -0.236 3.11 -0.548 -1.302 3.087 -0.506 1.196 0.618 1.142 1.568 2.9 -3.17 -0.46 -1.428 -0.207 -0.965 1.07 -2.092 2.315 -0.622 -3.216 -0.248 -1.283 -1.16 -0.602 -2.973 -1.544 2.803 -1.568 1.216 -0.681 0.15 -1.386 0.338 -3.118"/>
     </g>
   </svg>
   <svg x="660">
     <defs>
       <mask id="D" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5332 0 0 .5 13.482 28.845)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5332 0 0 .5 13.482 28.845)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5332 0 0 .5 13.482 28.845)"/>
       </mask>
     </defs>
     <path d="M8.035 22.532c-0.589 0 -1.066 0.448 -1.066 1v10c0 0.552 0.477 1 1.066 1 0.589 0 1.066 -0.448 1.066 -1v-10c0 -0.552 -0.477 -1 -1.066 -1zm3.2 -1c-0.59 0 -1.067 0.448 -1.067 1v11c0 0.552 0.478 1 1.066 1 0.589 0 1.067 -0.448 1.067 -1v-11c0 -0.552 -0.478 -1 -1.067 -1zm8.465 11.658l-4.265 -11c-0.191 -0.523 -0.797 -0.8 -1.355 -0.622 -0.556 0.178 -0.854 0.747 -0.663 1.27l0.014 0.036 4.266 11c0.19 0.523 0.796 0.801 1.354 0.622 0.557 -0.178 0.854 -0.747 0.663 -1.27 -0.004 -0.012 -0.008 -0.024 -0.014 -0.036zm-14.864 -12.658c-0.589 0 -1.067 0.448 -1.067 1v12c0 0.552 0.478 1 1.067 1 0.588 0 1.066 -0.448 1.066 -1v-12c0 -0.552 -0.478 -1 -1.066 -1z"/>
     <g mask="url(#D)">
-      <path fill="rgb(48,163,255)" d="M9.06 8.886l2.376 2.167 1.003 0.916 1.334 -0.26 3.1 -0.602 -1.248 3.11 -0.485 1.204 0.638 1.13 1.618 2.872 -3.178 -0.404 -1.43 -0.182 -0.947 1.086 -2.051 2.352 -0.678 -3.204 -0.27 -1.278 -1.17 -0.582 -3 -1.492 2.775 -1.617 1.204 -0.702 0.125 -1.389 0.284 -3.123"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.06 8.886l2.376 2.167 1.003 0.916 1.334 -0.26 3.1 -0.602 -1.248 3.11 -0.485 1.204 0.638 1.13 1.618 2.872 -3.178 -0.404 -1.43 -0.182 -0.947 1.086 -2.051 2.352 -0.678 -3.204 -0.27 -1.278 -1.17 -0.582 -3 -1.492 2.775 -1.617 1.204 -0.702 0.125 -1.389 0.284 -3.123"/>
+      <path fill="context-stroke" d="M9.06 8.886l2.376 2.167 1.003 0.916 1.334 -0.26 3.1 -0.602 -1.248 3.11 -0.485 1.204 0.638 1.13 1.618 2.872 -3.178 -0.404 -1.43 -0.182 -0.947 1.086 -2.051 2.352 -0.678 -3.204 -0.27 -1.278 -1.17 -0.582 -3 -1.492 2.775 -1.617 1.204 -0.702 0.125 -1.389 0.284 -3.123"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M9.06 8.886l2.376 2.167 1.003 0.916 1.334 -0.26 3.1 -0.602 -1.248 3.11 -0.485 1.204 0.638 1.13 1.618 2.872 -3.178 -0.404 -1.43 -0.182 -0.947 1.086 -2.051 2.352 -0.678 -3.204 -0.27 -1.278 -1.17 -0.582 -3 -1.492 2.775 -1.617 1.204 -0.702 0.125 -1.389 0.284 -3.123"/>
     </g>
   </svg>
   <svg x="682">
     <defs>
       <mask id="E" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54974 0 0 .5 13.727 29.36)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54974 0 0 .5 13.727 29.36)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54974 0 0 .5 13.727 29.36)"/>
       </mask>
     </defs>
     <path d="M8.11 23.047c-0.606 0 -1.099 0.448 -1.099 1v10c0 0.552 0.493 1 1.1 1 0.607 0 1.1 -0.448 1.1 -1v-10c0 -0.552 -0.493 -1 -1.1 -1zm3.3 -1c-0.608 0 -1.1 0.448 -1.1 1v11c0 0.552 0.492 1 1.1 1 0.606 0 1.099 -0.448 1.099 -1v-11c0 -0.552 -0.493 -1 -1.1 -1zm8.728 11.658l-4.398 -11c-0.197 -0.523 -0.821 -0.8 -1.396 -0.622 -0.574 0.178 -0.881 0.747 -0.684 1.27l0.014 0.036 4.398 11c0.197 0.523 0.821 0.801 1.396 0.622 0.574 -0.178 0.881 -0.747 0.684 -1.27l-0.014 -0.036zm-15.326 -12.658c-0.607 0 -1.1 0.448 -1.1 1v12c0 0.552 0.493 1 1.1 1 0.607 0 1.1 -0.448 1.1 -1v-12c0 -0.552 -0.493 -1 -1.1 -1z"/>
     <g mask="url(#E)">
-      <path fill="rgb(48,163,255)" d="M8.946 10.051l2.413 2.126 1.019 0.898 1.329 -0.283 3.089 -0.655 -1.195 3.13 -0.463 1.213 0.657 1.12 1.668 2.843 -3.185 -0.35 -1.433 -0.156 -0.928 1.102 -2.01 2.387 -0.733 -3.192 -0.293 -1.273 -1.18 -0.562 -3.025 -1.44 2.747 -1.665 1.191 -0.722 0.102 -1.39 0.23 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.946 10.051l2.413 2.126 1.019 0.898 1.329 -0.283 3.089 -0.655 -1.195 3.13 -0.463 1.213 0.657 1.12 1.668 2.843 -3.185 -0.35 -1.433 -0.156 -0.928 1.102 -2.01 2.387 -0.733 -3.192 -0.293 -1.273 -1.18 -0.562 -3.025 -1.44 2.747 -1.665 1.191 -0.722 0.102 -1.39 0.23 -3.129"/>
+      <path fill="context-stroke" d="M8.946 10.051l2.413 2.126 1.019 0.898 1.329 -0.283 3.089 -0.655 -1.195 3.13 -0.463 1.213 0.657 1.12 1.668 2.843 -3.185 -0.35 -1.433 -0.156 -0.928 1.102 -2.01 2.387 -0.733 -3.192 -0.293 -1.273 -1.18 -0.562 -3.025 -1.44 2.747 -1.665 1.191 -0.722 0.102 -1.39 0.23 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.946 10.051l2.413 2.126 1.019 0.898 1.329 -0.283 3.089 -0.655 -1.195 3.13 -0.463 1.213 0.657 1.12 1.668 2.843 -3.185 -0.35 -1.433 -0.156 -0.928 1.102 -2.01 2.387 -0.733 -3.192 -0.293 -1.273 -1.18 -0.562 -3.025 -1.44 2.747 -1.665 1.191 -0.722 0.102 -1.39 0.23 -3.129"/>
     </g>
   </svg>
   <svg x="704">
     <defs>
       <mask id="F" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56608 0 0 .5 13.962 29.878)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56608 0 0 .5 13.962 29.878)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56608 0 0 .5 13.962 29.878)"/>
       </mask>
     </defs>
     <path d="M8.18 23.565c-0.626 0 -1.133 0.448 -1.133 1v10c0 0.552 0.507 1 1.132 1 0.625 0 1.133 -0.448 1.133 -1v-10c0 -0.552 -0.508 -1 -1.133 -1zm3.396 -1c-0.625 0 -1.132 0.448 -1.132 1v11c0 0.552 0.507 1 1.132 1 0.625 0 1.132 -0.448 1.132 -1v-11c0 -0.552 -0.507 -1 -1.132 -1zm8.988 11.658l-4.529 -11c-0.202 -0.523 -0.845 -0.8 -1.437 -0.622 -0.591 0.178 -0.907 0.747 -0.705 1.27a0.481 0.481 0 0 0 0.015 0.036l4.529 11c0.202 0.523 0.846 0.801 1.438 0.622 0.59 -0.178 0.907 -0.747 0.704 -1.27a0.481 0.481 0 0 0 -0.015 -0.036zm-15.781 -12.658c-0.625 0 -1.132 0.448 -1.132 1v12c0 0.552 0.507 1 1.132 1 0.625 0 1.132 -0.448 1.132 -1v-12c0 -0.552 -0.507 -1 -1.132 -1z"/>
     <g mask="url(#F)">
-      <path fill="rgb(48,163,255)" d="M8.831 11.48l2.448 2.083 1.035 0.881 1.324 -0.305 3.077 -0.708 -1.14 3.15 -0.443 1.22 0.676 1.11 1.716 2.814 -3.19 -0.295 -1.436 -0.133 -0.909 1.118 -1.97 2.42 -0.787 -3.179 -0.314 -1.268 -1.189 -0.541 -3.05 -1.388 2.719 -1.712 1.179 -0.742 0.077 -1.392 0.176 -3.132"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.831 11.48l2.448 2.083 1.035 0.881 1.324 -0.305 3.077 -0.708 -1.14 3.15 -0.443 1.22 0.676 1.11 1.716 2.814 -3.19 -0.295 -1.436 -0.133 -0.909 1.118 -1.97 2.42 -0.787 -3.179 -0.314 -1.268 -1.189 -0.541 -3.05 -1.388 2.719 -1.712 1.179 -0.742 0.077 -1.392 0.176 -3.132"/>
+      <path fill="context-stroke" d="M8.831 11.48l2.448 2.083 1.035 0.881 1.324 -0.305 3.077 -0.708 -1.14 3.15 -0.443 1.22 0.676 1.11 1.716 2.814 -3.19 -0.295 -1.436 -0.133 -0.909 1.118 -1.97 2.42 -0.787 -3.179 -0.314 -1.268 -1.189 -0.541 -3.05 -1.388 2.719 -1.712 1.179 -0.742 0.077 -1.392 0.176 -3.132"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.831 11.48l2.448 2.083 1.035 0.881 1.324 -0.305 3.077 -0.708 -1.14 3.15 -0.443 1.22 0.676 1.11 1.716 2.814 -3.19 -0.295 -1.436 -0.133 -0.909 1.118 -1.97 2.42 -0.787 -3.179 -0.314 -1.268 -1.189 -0.541 -3.05 -1.388 2.719 -1.712 1.179 -0.742 0.077 -1.392 0.176 -3.132"/>
     </g>
   </svg>
   <svg x="726">
     <defs>
       <mask id="G" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58198 0 0 .5 14.154 30.278)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58198 0 0 .5 14.154 30.278)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58198 0 0 .5 14.154 30.278)"/>
       </mask>
     </defs>
     <path d="M8.209 23.965c-0.643 0 -1.164 0.448 -1.164 1v10c0 0.552 0.521 1 1.164 1 0.642 0 1.164 -0.448 1.164 -1v-10c0 -0.552 -0.522 -1 -1.164 -1zm3.492 -1c-0.643 0 -1.164 0.448 -1.164 1v11c0 0.552 0.521 1 1.164 1 0.642 0 1.164 -0.448 1.164 -1v-11c0 -0.552 -0.522 -1 -1.164 -1zm9.24 11.658l-4.655 -11c-0.209 -0.523 -0.87 -0.801 -1.479 -0.622 -0.607 0.178 -0.932 0.747 -0.724 1.27a0.474 0.474 0 0 0 0.016 0.036l4.655 11c0.209 0.523 0.87 0.8 1.479 0.622 0.607 -0.178 0.932 -0.747 0.724 -1.27l-0.016 -0.036zm-16.224 -12.658c-0.642 0 -1.164 0.448 -1.164 1v12c0 0.552 0.522 1 1.164 1 0.643 0 1.164 -0.448 1.164 -1v-12c0 -0.552 -0.521 -1 -1.164 -1z"/>
     <g mask="url(#G)">
-      <path fill="rgb(48,163,255)" d="M8.714 13.295l2.483 2.043 1.05 0.863 1.318 -0.327 3.065 -0.76 -1.088 3.17 -0.422 1.227 0.694 1.097 1.763 2.786 -3.194 -0.242 -1.438 -0.108 -0.89 1.133 -1.929 2.453 -0.84 -3.166 -0.336 -1.262 -1.197 -0.522 -3.073 -1.336 2.69 -1.757 1.166 -0.763 0.054 -1.393 0.124 -3.134"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.714 13.295l2.483 2.043 1.05 0.863 1.318 -0.327 3.065 -0.76 -1.088 3.17 -0.422 1.227 0.694 1.097 1.763 2.786 -3.194 -0.242 -1.438 -0.108 -0.89 1.133 -1.929 2.453 -0.84 -3.166 -0.336 -1.262 -1.197 -0.522 -3.073 -1.336 2.69 -1.757 1.166 -0.763 0.054 -1.393 0.124 -3.134"/>
+      <path fill="context-stroke" d="M8.714 13.295l2.483 2.043 1.05 0.863 1.318 -0.327 3.065 -0.76 -1.088 3.17 -0.422 1.227 0.694 1.097 1.763 2.786 -3.194 -0.242 -1.438 -0.108 -0.89 1.133 -1.929 2.453 -0.84 -3.166 -0.336 -1.262 -1.197 -0.522 -3.073 -1.336 2.69 -1.757 1.166 -0.763 0.054 -1.393 0.124 -3.134"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.714 13.295l2.483 2.043 1.05 0.863 1.318 -0.327 3.065 -0.76 -1.088 3.17 -0.422 1.227 0.694 1.097 1.763 2.786 -3.194 -0.242 -1.438 -0.108 -0.89 1.133 -1.929 2.453 -0.84 -3.166 -0.336 -1.262 -1.197 -0.522 -3.073 -1.336 2.69 -1.757 1.166 -0.763 0.054 -1.393 0.124 -3.134"/>
     </g>
   </svg>
   <svg x="748">
     <defs>
       <mask id="H" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5969 0 0 .5 14.267 30.438)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5969 0 0 .5 14.267 30.438)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5969 0 0 .5 14.267 30.438)"/>
       </mask>
     </defs>
     <path d="M8.169 24.125c-0.66 0 -1.194 0.448 -1.194 1v10c0 0.552 0.535 1 1.194 1 0.659 0 1.193 -0.448 1.193 -1v-10c0 -0.552 -0.534 -1 -1.193 -1zm3.581 -1c-0.659 0 -1.194 0.448 -1.194 1v11c0 0.552 0.535 1 1.194 1 0.659 0 1.194 -0.448 1.194 -1v-11c0 -0.552 -0.535 -1 -1.194 -1zm9.478 11.658l-4.776 -11c-0.213 -0.523 -0.891 -0.801 -1.516 -0.622 -0.623 0.178 -0.956 0.747 -0.742 1.27a0.467 0.467 0 0 0 0.015 0.036l4.775 11c0.214 0.523 0.892 0.801 1.517 0.622 0.623 -0.178 0.956 -0.747 0.742 -1.27l-0.015 -0.036zm-16.64 -12.658c-0.66 0 -1.195 0.448 -1.195 1v12c0 0.552 0.535 1 1.194 1 0.66 0 1.194 -0.448 1.194 -1v-12c0 -0.552 -0.535 -1 -1.194 -1z"/>
     <g mask="url(#H)">
-      <path fill="rgb(48,163,255)" d="M8.594 15.704l2.516 2.002 1.063 0.846 1.313 -0.349 3.053 -0.81 -1.036 3.187 -0.402 1.234 0.712 1.086 1.808 2.756 -3.198 -0.19 -1.44 -0.084 -0.87 1.147 -1.89 2.485 -0.891 -3.152 -0.356 -1.257 -1.206 -0.502 -3.095 -1.286 2.661 -1.8 1.154 -0.782 0.031 -1.394 0.073 -3.135"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.594 15.704l2.516 2.002 1.063 0.846 1.313 -0.349 3.053 -0.81 -1.036 3.187 -0.402 1.234 0.712 1.086 1.808 2.756 -3.198 -0.19 -1.44 -0.084 -0.87 1.147 -1.89 2.485 -0.891 -3.152 -0.356 -1.257 -1.206 -0.502 -3.095 -1.286 2.661 -1.8 1.154 -0.782 0.031 -1.394 0.073 -3.135"/>
+      <path fill="context-stroke" d="M8.594 15.704l2.516 2.002 1.063 0.846 1.313 -0.349 3.053 -0.81 -1.036 3.187 -0.402 1.234 0.712 1.086 1.808 2.756 -3.198 -0.19 -1.44 -0.084 -0.87 1.147 -1.89 2.485 -0.891 -3.152 -0.356 -1.257 -1.206 -0.502 -3.095 -1.286 2.661 -1.8 1.154 -0.782 0.031 -1.394 0.073 -3.135"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.594 15.704l2.516 2.002 1.063 0.846 1.313 -0.349 3.053 -0.81 -1.036 3.187 -0.402 1.234 0.712 1.086 1.808 2.756 -3.198 -0.19 -1.44 -0.084 -0.87 1.147 -1.89 2.485 -0.891 -3.152 -0.356 -1.257 -1.206 -0.502 -3.095 -1.286 2.661 -1.8 1.154 -0.782 0.031 -1.394 0.073 -3.135"/>
     </g>
   </svg>
   <svg x="770">
     <defs>
       <mask id="I" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.60979 0 0 .5 14.335 30.217)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.60979 0 0 .5 14.335 30.217)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.60979 0 0 .5 14.335 30.217)"/>
       </mask>
     </defs>
     <path d="M8.105 23.904c-0.673 0 -1.22 0.448 -1.22 1v10c0 0.552 0.547 1 1.22 1 0.674 0 1.22 -0.448 1.22 -1v-10c0 -0.552 -0.546 -1 -1.22 -1zm3.659 -1c-0.673 0 -1.22 0.448 -1.22 1v11c0 0.552 0.547 1 1.22 1 0.673 0 1.22 -0.448 1.22 -1v-11c0 -0.552 -0.547 -1 -1.22 -1zm9.682 11.658l-4.878 -11c-0.218 -0.523 -0.911 -0.801 -1.549 -0.622 -0.637 0.178 -0.977 0.747 -0.758 1.27a0.462 0.462 0 0 0 0.015 0.036l4.879 11c0.218 0.523 0.91 0.8 1.549 0.622 0.636 -0.178 0.976 -0.747 0.758 -1.27l-0.016 -0.036zm-17 -12.658c-0.673 0 -1.219 0.448 -1.219 1v12c0 0.552 0.546 1 1.22 1 0.673 0 1.22 -0.448 1.22 -1v-12c0 -0.552 -0.547 -1 -1.22 -1z"/>
     <g mask="url(#I)">
-      <path fill="rgb(48,163,255)" d="M8.47 18.813l2.547 1.962 1.077 0.83 1.307 -0.37 3.04 -0.859 -0.986 3.203 -0.382 1.24 0.729 1.075 1.852 2.727 -3.2 -0.139 -1.442 -0.062 -0.852 1.161 -1.85 2.514 -0.941 -3.137 -0.376 -1.25 -1.214 -0.483 -3.115 -1.237 2.632 -1.843 1.141 -0.8 0.01 -1.393 0.022 -3.137"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.47 18.813l2.547 1.962 1.077 0.83 1.307 -0.37 3.04 -0.859 -0.986 3.203 -0.382 1.24 0.729 1.075 1.852 2.727 -3.2 -0.139 -1.442 -0.062 -0.852 1.161 -1.85 2.514 -0.941 -3.137 -0.376 -1.25 -1.214 -0.483 -3.115 -1.237 2.632 -1.843 1.141 -0.8 0.01 -1.393 0.022 -3.137"/>
+      <path fill="context-stroke" d="M8.47 18.813l2.547 1.962 1.077 0.83 1.307 -0.37 3.04 -0.859 -0.986 3.203 -0.382 1.24 0.729 1.075 1.852 2.727 -3.2 -0.139 -1.442 -0.062 -0.852 1.161 -1.85 2.514 -0.941 -3.137 -0.376 -1.25 -1.214 -0.483 -3.115 -1.237 2.632 -1.843 1.141 -0.8 0.01 -1.393 0.022 -3.137"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.47 18.813l2.547 1.962 1.077 0.83 1.307 -0.37 3.04 -0.859 -0.986 3.203 -0.382 1.24 0.729 1.075 1.852 2.727 -3.2 -0.139 -1.442 -0.062 -0.852 1.161 -1.85 2.514 -0.941 -3.137 -0.376 -1.25 -1.214 -0.483 -3.115 -1.237 2.632 -1.843 1.141 -0.8 0.01 -1.393 0.022 -3.137"/>
     </g>
   </svg>
   <svg x="792">
     <defs>
       <mask id="J" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61897 0 0 .5 14.4 29.689)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61897 0 0 .5 14.4 29.689)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61897 0 0 .5 14.4 29.689)"/>
       </mask>
     </defs>
     <path d="M8.076 23.376c-0.683 0 -1.237 0.448 -1.237 1v10c0 0.552 0.554 1 1.237 1 0.684 0 1.238 -0.448 1.238 -1v-10c0 -0.552 -0.554 -1 -1.238 -1zm3.714 -1c-0.683 0 -1.238 0.448 -1.238 1v11c0 0.552 0.555 1 1.238 1 0.684 0 1.238 -0.448 1.238 -1v-11c0 -0.552 -0.554 -1 -1.238 -1zm9.828 11.658l-4.951 -11c-0.222 -0.523 -0.925 -0.801 -1.573 -0.622 -0.646 0.178 -0.991 0.747 -0.77 1.27a0.459 0.459 0 0 0 0.016 0.036l4.952 11c0.222 0.523 0.925 0.801 1.572 0.622 0.647 -0.178 0.992 -0.747 0.77 -1.27a0.459 0.459 0 0 0 -0.016 -0.036zm-17.255 -12.658c-0.684 0 -1.238 0.448 -1.238 1v12c0 0.552 0.554 1 1.238 1 0.683 0 1.238 -0.448 1.238 -1v-12c0 -0.552 -0.555 -1 -1.238 -1z"/>
     <g mask="url(#J)">
-      <path fill="rgb(48,163,255)" d="M8.351 21.743l2.577 1.923 1.09 0.812 1.3 -0.39 3.027 -0.904 -0.937 3.217 -0.363 1.246 0.746 1.063 1.893 2.699 -3.202 -0.09 -1.442 -0.04 -0.834 1.174 -1.81 2.543 -0.99 -3.123 -0.395 -1.245 -1.222 -0.463 -3.133 -1.19 2.603 -1.882 1.129 -0.817 -0.012 -1.394 -0.025 -3.137"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.351 21.743l2.577 1.923 1.09 0.812 1.3 -0.39 3.027 -0.904 -0.937 3.217 -0.363 1.246 0.746 1.063 1.893 2.699 -3.202 -0.09 -1.442 -0.04 -0.834 1.174 -1.81 2.543 -0.99 -3.123 -0.395 -1.245 -1.222 -0.463 -3.133 -1.19 2.603 -1.882 1.129 -0.817 -0.012 -1.394 -0.025 -3.137"/>
+      <path fill="context-stroke" d="M8.351 21.743l2.577 1.923 1.09 0.812 1.3 -0.39 3.027 -0.904 -0.937 3.217 -0.363 1.246 0.746 1.063 1.893 2.699 -3.202 -0.09 -1.442 -0.04 -0.834 1.174 -1.81 2.543 -0.99 -3.123 -0.395 -1.245 -1.222 -0.463 -3.133 -1.19 2.603 -1.882 1.129 -0.817 -0.012 -1.394 -0.025 -3.137"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.351 21.743l2.577 1.923 1.09 0.812 1.3 -0.39 3.027 -0.904 -0.937 3.217 -0.363 1.246 0.746 1.063 1.893 2.699 -3.202 -0.09 -1.442 -0.04 -0.834 1.174 -1.81 2.543 -0.99 -3.123 -0.395 -1.245 -1.222 -0.463 -3.133 -1.19 2.603 -1.882 1.129 -0.817 -0.012 -1.394 -0.025 -3.137"/>
     </g>
   </svg>
   <svg x="814">
     <defs>
       <mask id="K" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62351 0 0 .5 14.434 29.059)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62351 0 0 .5 14.434 29.059)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62351 0 0 .5 14.434 29.059)"/>
       </mask>
     </defs>
     <path d="M8.064 22.746c-0.688 0 -1.247 0.448 -1.247 1v10c0 0.552 0.56 1 1.247 1 0.689 0 1.247 -0.448 1.247 -1v-10c0 -0.552 -0.558 -1 -1.247 -1zm3.741 -1c-0.688 0 -1.247 0.448 -1.247 1v11c0 0.552 0.56 1 1.247 1 0.689 0 1.247 -0.448 1.247 -1v-11c0 -0.552 -0.558 -1 -1.247 -1zm9.9 11.658l-4.988 -11c-0.223 -0.523 -0.931 -0.801 -1.583 -0.622 -0.651 0.178 -1 0.747 -0.776 1.27l0.016 0.036 4.988 11c0.224 0.523 0.932 0.8 1.584 0.622 0.651 -0.178 0.999 -0.747 0.776 -1.27a0.457 0.457 0 0 0 -0.016 -0.036zm-17.382 -12.658c-0.688 0 -1.247 0.448 -1.247 1v12c0 0.552 0.559 1 1.247 1 0.689 0 1.247 -0.448 1.247 -1v-12c0 -0.552 -0.558 -1 -1.247 -1z"/>
     <g mask="url(#K)">
-      <path fill="rgb(48,163,255)" d="M8.248 23.608l2.606 1.885 1.1 0.796 1.296 -0.408 3.012 -0.95 -0.889 3.232 -0.345 1.25 0.761 1.053 1.933 2.67 -3.203 -0.043 -1.442 -0.018 -0.818 1.186 -1.772 2.568 -1.036 -3.107 -0.413 -1.24 -1.228 -0.445 -3.15 -1.143 2.575 -1.92 1.117 -0.834 -0.033 -1.394 -0.07 -3.136"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.248 23.608l2.606 1.885 1.1 0.796 1.296 -0.408 3.012 -0.95 -0.889 3.232 -0.345 1.25 0.761 1.053 1.933 2.67 -3.203 -0.043 -1.442 -0.018 -0.818 1.186 -1.772 2.568 -1.036 -3.107 -0.413 -1.24 -1.228 -0.445 -3.15 -1.143 2.575 -1.92 1.117 -0.834 -0.033 -1.394 -0.07 -3.136"/>
+      <path fill="context-stroke" d="M8.248 23.608l2.606 1.885 1.1 0.796 1.296 -0.408 3.012 -0.95 -0.889 3.232 -0.345 1.25 0.761 1.053 1.933 2.67 -3.203 -0.043 -1.442 -0.018 -0.818 1.186 -1.772 2.568 -1.036 -3.107 -0.413 -1.24 -1.228 -0.445 -3.15 -1.143 2.575 -1.92 1.117 -0.834 -0.033 -1.394 -0.07 -3.136"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.248 23.608l2.606 1.885 1.1 0.796 1.296 -0.408 3.012 -0.95 -0.889 3.232 -0.345 1.25 0.761 1.053 1.933 2.67 -3.203 -0.043 -1.442 -0.018 -0.818 1.186 -1.772 2.568 -1.036 -3.107 -0.413 -1.24 -1.228 -0.445 -3.15 -1.143 2.575 -1.92 1.117 -0.834 -0.033 -1.394 -0.07 -3.136"/>
     </g>
   </svg>
   <svg x="836">
     <defs>
       <mask id="L" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62484 0 0 .5 14.423 28.531)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62484 0 0 .5 14.423 28.531)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.62484 0 0 .5 14.423 28.531)"/>
       </mask>
     </defs>
     <path d="M8.04 22.218c-0.69 0 -1.25 0.448 -1.25 1v10c0 0.552 0.56 1 1.25 1s1.249 -0.448 1.249 -1v-10c0 -0.552 -0.56 -1 -1.25 -1zm3.748 -1c-0.69 0 -1.25 0.448 -1.25 1v11c0 0.552 0.56 1 1.25 1s1.25 -0.448 1.25 -1v-11c0 -0.552 -0.56 -1 -1.25 -1zm9.922 11.658l-5 -11c-0.223 -0.523 -0.933 -0.801 -1.586 -0.622 -0.653 0.178 -1.001 0.747 -0.778 1.27a0.457 0.457 0 0 0 0.017 0.036l4.998 11c0.224 0.523 0.934 0.801 1.588 0.622 0.652 -0.178 1 -0.747 0.777 -1.27a0.457 0.457 0 0 0 -0.016 -0.036zm-17.42 -12.658c-0.69 0 -1.25 0.448 -1.25 1v12c0 0.552 0.56 1 1.25 1s1.25 -0.448 1.25 -1v-12c0 -0.552 -0.56 -1 -1.25 -1z"/>
     <g mask="url(#L)">
-      <path fill="rgb(48,163,255)" d="M8.16 24.7l2.63 1.85 1.112 0.78 1.29 -0.426 2.999 -0.99 -0.844 3.243 -0.328 1.256 0.775 1.041 1.97 2.644 -3.204 0.001 -1.442 0.001 -0.801 1.197 -1.737 2.593 -1.079 -3.093 -0.43 -1.233 -1.234 -0.43 -3.165 -1.099 2.548 -1.956 1.105 -0.848 -0.051 -1.394 -0.114 -3.134"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.16 24.7l2.63 1.85 1.112 0.78 1.29 -0.426 2.999 -0.99 -0.844 3.243 -0.328 1.256 0.775 1.041 1.97 2.644 -3.204 0.001 -1.442 0.001 -0.801 1.197 -1.737 2.593 -1.079 -3.093 -0.43 -1.233 -1.234 -0.43 -3.165 -1.099 2.548 -1.956 1.105 -0.848 -0.051 -1.394 -0.114 -3.134"/>
+      <path fill="context-stroke" d="M8.16 24.7l2.63 1.85 1.112 0.78 1.29 -0.426 2.999 -0.99 -0.844 3.243 -0.328 1.256 0.775 1.041 1.97 2.644 -3.204 0.001 -1.442 0.001 -0.801 1.197 -1.737 2.593 -1.079 -3.093 -0.43 -1.233 -1.234 -0.43 -3.165 -1.099 2.548 -1.956 1.105 -0.848 -0.051 -1.394 -0.114 -3.134"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.16 24.7l2.63 1.85 1.112 0.78 1.29 -0.426 2.999 -0.99 -0.844 3.243 -0.328 1.256 0.775 1.041 1.97 2.644 -3.204 0.001 -1.442 0.001 -0.801 1.197 -1.737 2.593 -1.079 -3.093 -0.43 -1.233 -1.234 -0.43 -3.165 -1.099 2.548 -1.956 1.105 -0.848 -0.051 -1.394 -0.114 -3.134"/>
     </g>
   </svg>
   <svg x="858">
     <defs>
       <mask id="M" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.625 0 0 .5 14.385 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.625 0 0 .5 14.385 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.625 0 0 .5 14.385 28.313)"/>
       </mask>
     </defs>
     <path d="M8 22c-0.69 0 -1.25 0.448 -1.25 1v10c0 0.552 0.56 1 1.25 1s1.25 -0.448 1.25 -1v-10c0 -0.552 -0.56 -1 -1.25 -1zm3.75 -1c-0.69 0 -1.25 0.448 -1.25 1v11c0 0.552 0.56 1 1.25 1s1.25 -0.448 1.25 -1v-11c0 -0.552 -0.56 -1 -1.25 -1zm9.924 11.658l-5 -11c-0.224 -0.523 -0.934 -0.801 -1.588 -0.622 -0.652 0.178 -1.001 0.747 -0.777 1.27l0.016 0.036 5 11c0.224 0.523 0.934 0.801 1.587 0.622 0.653 -0.178 1.002 -0.747 0.778 -1.27a0.457 0.457 0 0 0 -0.016 -0.036zm-17.424 -12.658c-0.69 0 -1.25 0.448 -1.25 1v12c0 0.552 0.56 1 1.25 1s1.25 -0.448 1.25 -1v-12c0 -0.552 -0.56 -1 -1.25 -1z"/>
     <g mask="url(#M)">
-      <path fill="rgb(48,163,255)" d="M8.083 25.355l2.654 1.815 1.121 0.768 1.284 -0.443 2.987 -1.028 -0.804 3.253 -0.312 1.26 0.789 1.032 2.002 2.618 -3.203 0.042 -1.442 0.02 -0.786 1.206 -1.705 2.614 -1.117 -3.079 -0.445 -1.228 -1.24 -0.413 -3.179 -1.06 2.524 -1.988 1.094 -0.862 -0.068 -1.392 -0.154 -3.133"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.083 25.355l2.654 1.815 1.121 0.768 1.284 -0.443 2.987 -1.028 -0.804 3.253 -0.312 1.26 0.789 1.032 2.002 2.618 -3.203 0.042 -1.442 0.02 -0.786 1.206 -1.705 2.614 -1.117 -3.079 -0.445 -1.228 -1.24 -0.413 -3.179 -1.06 2.524 -1.988 1.094 -0.862 -0.068 -1.392 -0.154 -3.133"/>
+      <path fill="context-stroke" d="M8.083 25.355l2.654 1.815 1.121 0.768 1.284 -0.443 2.987 -1.028 -0.804 3.253 -0.312 1.26 0.789 1.032 2.002 2.618 -3.203 0.042 -1.442 0.02 -0.786 1.206 -1.705 2.614 -1.117 -3.079 -0.445 -1.228 -1.24 -0.413 -3.179 -1.06 2.524 -1.988 1.094 -0.862 -0.068 -1.392 -0.154 -3.133"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.083 25.355l2.654 1.815 1.121 0.768 1.284 -0.443 2.987 -1.028 -0.804 3.253 -0.312 1.26 0.789 1.032 2.002 2.618 -3.203 0.042 -1.442 0.02 -0.786 1.206 -1.705 2.614 -1.117 -3.079 -0.445 -1.228 -1.24 -0.413 -3.179 -1.06 2.524 -1.988 1.094 -0.862 -0.068 -1.392 -0.154 -3.133"/>
     </g>
   </svg>
   <svg x="880">
     <defs>
       <mask id="N" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61111 0 0 .5 14.298 28.255)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61111 0 0 .5 14.298 28.255)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.61111 0 0 .5 14.298 28.255)"/>
       </mask>
     </defs>
     <path d="M8.054 21.942c-0.674 0 -1.222 0.448 -1.222 1v10c0 0.552 0.548 1 1.222 1 0.675 0 1.223 -0.448 1.223 -1v-10c0 -0.552 -0.548 -1 -1.223 -1zm3.667 -1c-0.675 0 -1.222 0.448 -1.222 1v11c0 0.552 0.547 1 1.222 1 0.675 0 1.222 -0.448 1.222 -1v-11c0 -0.552 -0.547 -1 -1.222 -1zm9.703 11.658l-4.889 -11c-0.218 -0.523 -0.913 -0.8 -1.552 -0.622 -0.638 0.178 -0.979 0.747 -0.76 1.27l0.016 0.036 4.889 11c0.219 0.523 0.913 0.801 1.552 0.622 0.638 -0.178 0.979 -0.747 0.76 -1.27l-0.016 -0.036zm-17.036 -12.658c-0.675 0 -1.222 0.448 -1.222 1v12c0 0.552 0.547 1 1.222 1 0.674 0 1.222 -0.448 1.222 -1v-12c0 -0.552 -0.548 -1 -1.222 -1z"/>
     <g mask="url(#N)">
-      <path fill="rgb(48,163,255)" d="M8.02 25.74l2.672 1.787 1.13 0.755 1.28 -0.457 2.974 -1.06 -0.768 3.262 -0.298 1.263 0.8 1.023 2.03 2.597 -3.202 0.076 -1.442 0.035 -0.773 1.216 -1.676 2.632 -1.15 -3.067 -0.46 -1.222 -1.243 -0.4 -3.19 -1.026 2.502 -2.015 1.085 -0.874 -0.084 -1.392 -0.188 -3.13"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.02 25.74l2.672 1.787 1.13 0.755 1.28 -0.457 2.974 -1.06 -0.768 3.262 -0.298 1.263 0.8 1.023 2.03 2.597 -3.202 0.076 -1.442 0.035 -0.773 1.216 -1.676 2.632 -1.15 -3.067 -0.46 -1.222 -1.243 -0.4 -3.19 -1.026 2.502 -2.015 1.085 -0.874 -0.084 -1.392 -0.188 -3.13"/>
+      <path fill="context-stroke" d="M8.02 25.74l2.672 1.787 1.13 0.755 1.28 -0.457 2.974 -1.06 -0.768 3.262 -0.298 1.263 0.8 1.023 2.03 2.597 -3.202 0.076 -1.442 0.035 -0.773 1.216 -1.676 2.632 -1.15 -3.067 -0.46 -1.222 -1.243 -0.4 -3.19 -1.026 2.502 -2.015 1.085 -0.874 -0.084 -1.392 -0.188 -3.13"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M8.02 25.74l2.672 1.787 1.13 0.755 1.28 -0.457 2.974 -1.06 -0.768 3.262 -0.298 1.263 0.8 1.023 2.03 2.597 -3.202 0.076 -1.442 0.035 -0.773 1.216 -1.676 2.632 -1.15 -3.067 -0.46 -1.222 -1.243 -0.4 -3.19 -1.026 2.502 -2.015 1.085 -0.874 -0.084 -1.392 -0.188 -3.13"/>
     </g>
   </svg>
   <svg x="902">
     <defs>
       <mask id="O" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.59722 0 0 .5 14.154 28.183)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.59722 0 0 .5 14.154 28.183)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.59722 0 0 .5 14.154 28.183)"/>
       </mask>
     </defs>
     <path d="M8.052 21.87c-0.659 0 -1.194 0.448 -1.194 1v10c0 0.552 0.535 1 1.194 1 0.66 0 1.195 -0.448 1.195 -1v-10c0 -0.552 -0.535 -1 -1.195 -1zm3.584 -1c-0.66 0 -1.195 0.448 -1.195 1v11c0 0.552 0.535 1 1.195 1 0.659 0 1.194 -0.448 1.194 -1v-11c0 -0.552 -0.535 -1 -1.194 -1zm9.482 11.658l-4.777 -11c-0.214 -0.523 -0.893 -0.801 -1.517 -0.622 -0.624 0.178 -0.957 0.747 -0.743 1.27a0.467 0.467 0 0 0 0.015 0.036l4.778 11c0.214 0.523 0.892 0.8 1.517 0.622 0.623 -0.178 0.957 -0.747 0.743 -1.27a0.467 0.467 0 0 0 -0.016 -0.036zm-16.649 -12.658c-0.66 0 -1.194 0.448 -1.194 1v12c0 0.552 0.535 1 1.194 1 0.66 0 1.194 -0.448 1.194 -1v-12c0 -0.552 -0.535 -1 -1.194 -1z"/>
     <g mask="url(#O)">
-      <path fill="rgb(48,163,255)" d="M7.971 25.945l2.688 1.764 1.136 0.746 1.276 -0.467 2.966 -1.085 -0.741 3.268 -0.288 1.265 0.808 1.017 2.052 2.58 -3.202 0.102 -1.441 0.047 -0.763 1.222 -1.654 2.647 -1.175 -3.057 -0.47 -1.22 -1.247 -0.39 -3.198 -0.998 2.485 -2.036 1.077 -0.883 -0.095 -1.39 -0.214 -3.13"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.971 25.945l2.688 1.764 1.136 0.746 1.276 -0.467 2.966 -1.085 -0.741 3.268 -0.288 1.265 0.808 1.017 2.052 2.58 -3.202 0.102 -1.441 0.047 -0.763 1.222 -1.654 2.647 -1.175 -3.057 -0.47 -1.22 -1.247 -0.39 -3.198 -0.998 2.485 -2.036 1.077 -0.883 -0.095 -1.39 -0.214 -3.13"/>
+      <path fill="context-stroke" d="M7.971 25.945l2.688 1.764 1.136 0.746 1.276 -0.467 2.966 -1.085 -0.741 3.268 -0.288 1.265 0.808 1.017 2.052 2.58 -3.202 0.102 -1.441 0.047 -0.763 1.222 -1.654 2.647 -1.175 -3.057 -0.47 -1.22 -1.247 -0.39 -3.198 -0.998 2.485 -2.036 1.077 -0.883 -0.095 -1.39 -0.214 -3.13"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.971 25.945l2.688 1.764 1.136 0.746 1.276 -0.467 2.966 -1.085 -0.741 3.268 -0.288 1.265 0.808 1.017 2.052 2.58 -3.202 0.102 -1.441 0.047 -0.763 1.222 -1.654 2.647 -1.175 -3.057 -0.47 -1.22 -1.247 -0.39 -3.198 -0.998 2.485 -2.036 1.077 -0.883 -0.095 -1.39 -0.214 -3.13"/>
     </g>
   </svg>
   <svg x="924">
     <defs>
       <mask id="P" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58333 0 0 .5 13.973 28.156)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58333 0 0 .5 13.973 28.156)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.58333 0 0 .5 13.973 28.156)"/>
       </mask>
     </defs>
     <path d="M8.013 21.843c-0.644 0 -1.166 0.448 -1.166 1v10c0 0.552 0.522 1 1.166 1 0.644 0 1.167 -0.448 1.167 -1v-10c0 -0.552 -0.523 -1 -1.167 -1zm3.5 -1c-0.644 0 -1.166 0.448 -1.166 1v11c0 0.552 0.522 1 1.166 1 0.644 0 1.167 -0.448 1.167 -1v-11c0 -0.552 -0.523 -1 -1.167 -1zm9.262 11.658l-4.666 -11c-0.21 -0.523 -0.872 -0.801 -1.482 -0.622 -0.609 0.178 -0.934 0.747 -0.726 1.27a0.473 0.473 0 0 0 0.016 0.036l4.666 11c0.21 0.523 0.872 0.8 1.482 0.622 0.609 -0.178 0.934 -0.747 0.726 -1.27l-0.016 -0.036zm-16.262 -12.658c-0.644 0 -1.166 0.448 -1.166 1v12c0 0.552 0.522 1 1.166 1 0.644 0 1.167 -0.448 1.167 -1v-12c0 -0.552 -0.523 -1 -1.167 -1z"/>
     <g mask="url(#P)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.572 -3.201 0.115 -1.442 0.053 -0.758 1.224 -1.644 2.653 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.987 2.478 -2.045 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.572 -3.201 0.115 -1.442 0.053 -0.758 1.224 -1.644 2.653 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.987 2.478 -2.045 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.572 -3.201 0.115 -1.442 0.053 -0.758 1.224 -1.644 2.653 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.987 2.478 -2.045 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.572 -3.201 0.115 -1.442 0.053 -0.758 1.224 -1.644 2.653 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.987 2.478 -2.045 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="946">
     <defs>
       <mask id="Q" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56944 0 0 .5 13.787 28.166)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56944 0 0 .5 13.787 28.166)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.56944 0 0 .5 13.787 28.166)"/>
       </mask>
     </defs>
     <path d="M7.97 21.853c-0.629 0 -1.139 0.448 -1.139 1v10c0 0.552 0.51 1 1.139 1s1.139 -0.448 1.139 -1v-10c0 -0.552 -0.51 -1 -1.139 -1zm3.417 -1c-0.629 0 -1.14 0.448 -1.14 1v11c0 0.552 0.511 1 1.14 1 0.628 0 1.139 -0.448 1.139 -1v-11c0 -0.552 -0.51 -1 -1.14 -1zm9.041 11.658l-4.555 -11c-0.204 -0.523 -0.851 -0.8 -1.447 -0.622 -0.594 0.178 -0.912 0.747 -0.708 1.27a0.48 0.48 0 0 0 0.015 0.036l4.555 11c0.204 0.523 0.851 0.801 1.447 0.622 0.594 -0.178 0.912 -0.747 0.708 -1.27a0.48 0.48 0 0 0 -0.015 -0.036zm-15.875 -12.658c-0.628 0 -1.139 0.448 -1.139 1v12c0 0.552 0.51 1 1.14 1 0.628 0 1.138 -0.448 1.138 -1v-12c0 -0.552 -0.51 -1 -1.139 -1z"/>
     <g mask="url(#Q)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="968">
     <defs>
       <mask id="R" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.55556 0 0 .5 13.611 28.195)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.55556 0 0 .5 13.611 28.195)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.55556 0 0 .5 13.611 28.195)"/>
       </mask>
     </defs>
     <path d="M7.936 21.882c-0.614 0 -1.112 0.448 -1.112 1v10c0 0.552 0.498 1 1.112 1 0.613 0 1.11 -0.448 1.11 -1v-10c0 -0.552 -0.497 -1 -1.11 -1zm3.333 -1c-0.613 0 -1.111 0.448 -1.111 1v11c0 0.552 0.498 1 1.11 1 0.614 0 1.112 -0.448 1.112 -1v-11c0 -0.552 -0.498 -1 -1.111 -1zm8.821 11.658l-4.444 -11c-0.2 -0.523 -0.83 -0.8 -1.412 -0.622 -0.58 0.178 -0.89 0.747 -0.69 1.27a0.487 0.487 0 0 0 0.014 0.036l4.444 11c0.2 0.523 0.83 0.801 1.411 0.622 0.58 -0.178 0.89 -0.747 0.691 -1.27a0.487 0.487 0 0 0 -0.014 -0.036zm-15.488 -12.658c-0.613 0 -1.11 0.448 -1.11 1v12c0 0.552 0.497 1 1.11 1 0.614 0 1.111 -0.448 1.111 -1v-12c0 -0.552 -0.497 -1 -1.11 -1z"/>
     <g mask="url(#R)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="990">
     <defs>
       <mask id="S" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54167 0 0 .5 13.449 28.232)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54167 0 0 .5 13.449 28.232)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.54167 0 0 .5 13.449 28.232)"/>
       </mask>
     </defs>
     <path d="M7.915 21.919c-0.598 0 -1.083 0.448 -1.083 1v10c0 0.552 0.485 1 1.083 1s1.084 -0.448 1.084 -1v-10c0 -0.552 -0.486 -1 -1.084 -1zm3.25 -1c-0.598 0 -1.083 0.448 -1.083 1v11c0 0.552 0.485 1 1.083 1s1.084 -0.448 1.084 -1v-11c0 -0.552 -0.486 -1 -1.084 -1zm8.6 11.658l-4.333 -11c-0.193 -0.523 -0.809 -0.801 -1.375 -0.622 -0.566 0.178 -0.868 0.747 -0.674 1.27a0.494 0.494 0 0 0 0.014 0.036l4.333 11c0.194 0.523 0.81 0.8 1.376 0.622 0.566 -0.178 0.868 -0.747 0.674 -1.27a0.494 0.494 0 0 0 -0.014 -0.036zm-15.1 -12.658c-0.598 0 -1.083 0.448 -1.083 1v12c0 0.552 0.485 1 1.083 1s1.084 -0.448 1.084 -1v-12c0 -0.552 -0.486 -1 -1.084 -1z"/>
     <g mask="url(#S)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="1012">
     <defs>
       <mask id="T" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.52778 0 0 .5 13.306 28.269)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.52778 0 0 .5 13.306 28.269)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.52778 0 0 .5 13.306 28.269)"/>
       </mask>
     </defs>
     <path d="M7.914 21.956c-0.583 0 -1.056 0.448 -1.056 1v10c0 0.552 0.473 1 1.056 1 0.583 0 1.056 -0.448 1.056 -1v-10c0 -0.552 -0.473 -1 -1.056 -1zm3.167 -1c-0.583 0 -1.056 0.448 -1.056 1v11c0 0.552 0.473 1 1.056 1 0.582 0 1.055 -0.448 1.055 -1v-11c0 -0.552 -0.473 -1 -1.055 -1zm8.38 11.658l-4.222 -11c-0.19 -0.523 -0.789 -0.801 -1.341 -0.622 -0.551 0.178 -0.846 0.747 -0.657 1.27l0.014 0.036 4.222 11c0.19 0.523 0.789 0.8 1.34 0.622 0.552 -0.178 0.846 -0.747 0.657 -1.27l-0.013 -0.036zm-14.714 -12.658c-0.582 0 -1.055 0.448 -1.055 1v12c0 0.552 0.473 1 1.055 1 0.583 0 1.056 -0.448 1.056 -1v-12c0 -0.552 -0.473 -1 -1.056 -1z"/>
     <g mask="url(#T)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="1034">
     <defs>
       <mask id="U" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.51389 0 0 .5 13.188 28.299)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.51389 0 0 .5 13.188 28.299)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.51389 0 0 .5 13.188 28.299)"/>
       </mask>
     </defs>
     <path d="M7.938 21.986c-0.567 0 -1.027 0.448 -1.027 1v10c0 0.552 0.46 1 1.027 1 0.568 0 1.028 -0.448 1.028 -1v-10c0 -0.552 -0.46 -1 -1.028 -1zm3.084 -1c-0.568 0 -1.028 0.448 -1.028 1v11c0 0.552 0.46 1 1.028 1 0.567 0 1.028 -0.448 1.028 -1v-11c0 -0.552 -0.46 -1 -1.028 -1zm8.16 11.658l-4.112 -11c-0.184 -0.523 -0.768 -0.801 -1.305 -0.622 -0.537 0.178 -0.823 0.747 -0.64 1.27a0.51 0.51 0 0 0 0.014 0.036l4.111 11c0.184 0.523 0.768 0.8 1.305 0.622 0.537 -0.178 0.824 -0.747 0.64 -1.27l-0.014 -0.036zm-14.327 -12.658c-0.567 0 -1.028 0.448 -1.028 1v12c0 0.552 0.46 1 1.028 1 0.567 0 1.028 -0.448 1.028 -1v-12c0 -0.552 -0.46 -1 -1.028 -1z"/>
     <g mask="url(#U)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="1056">
     <defs>
       <mask id="V" mask-type="alpha">
-        <path fill="rgb(48,163,255)" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
+        <path fill="context-stroke" d="M-29.125 -76.875l-15.5 48.625 21.375 12 5.5 -0.75 3 -0.25 2.25 4.641 5.5 0.109 0.75 -2.141 3.25 -0.015 6.787 0.009 9.339 25.4 4.124 -39.128 6 -25.25 -0.75 -22.25 -51.625 -1z" transform="matrix(.5 0 0 .5 13.108 28.313)"/>
         <path fill-opacity="0" stroke="rgb(135,17,17)" stroke-width="0" d="M-1.454 -10.124l-7.75 24.312 10.687 6 2.75 -0.375 1.5 -0.125 1.125 2.32 2.75 0.055 0.375 -1.07 1.625 -0.008 3.393 0.005 4.67 12.7 2.062 -19.564 3 -12.625 -0.375 -11.125 -25.813 -0.5z"/>
       </mask>
     </defs>
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
     <g mask="url(#V)">
-      <path fill="rgb(48,163,255)" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
-      <path fill="none" stroke="rgb(48,163,255)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="context-stroke" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
+      <path fill="none" stroke="context-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M7.95 26.013l2.695 1.754 1.138 0.742 1.274 -0.472 2.962 -1.096 -0.729 3.27 -0.283 1.267 0.812 1.013 2.062 2.573 -3.201 0.115 -1.442 0.052 -0.758 1.225 -1.644 2.652 -1.187 -3.053 -0.474 -1.217 -1.248 -0.385 -3.203 -0.986 2.478 -2.046 1.074 -0.887 -0.1 -1.39 -0.226 -3.129"/>
     </g>
   </svg>
   <svg x="1078">
     <path d="M8 22a1 1 0 0 0 -1 1v10a1 1 0 0 0 2 0v-10a1 1 0 0 0 -1 -1zm3 -1a1 1 0 0 0 -1 1v11a1 1 0 0 0 2 0v-11a1 1 0 0 0 -1 -1zm7.939 11.658l-4 -11a1 1 0 1 0 -1.879 0.684l4 11a1 1 0 1 0 1.892 -0.648l-0.013 -0.036zm-13.939 -12.658a1 1 0 0 0 -1 1v12a1 1 0 0 0 2 0v-12a1 1 0 0 0 -1 -1z"/>
   </svg>
 </svg>
--- a/browser/themes/shared/incontentprefs/preferences.inc.css
+++ b/browser/themes/shared/incontentprefs/preferences.inc.css
@@ -90,32 +90,28 @@ caption > label {
   min-width: 145px;
 }
 
 /* Subcategory title */
 
 /**
  * The first subcategory title for each category should not have margin-top.
  */
-#generalCategory,
-#searchCategory,
-#browserPrivacyCategory,
-#firefoxAccountCategory {
-  margin-top: 0;
+
+.subcategory:not([hidden]) ~ .subcategory {
+  margin-top: 32px;
+  padding-top: 15px;
+  border-top: 1px solid rgba(12, 12, 13, 0.15);
 }
 
 .header-name {
   font-size: 2rem;
   font-weight: 300;
 }
 
-.subcategory {
-  margin-top: 48px;
-}
-
 /* Category List */
 
 #categories {
   max-height: 100vh;
 }
 
 #categories > scrollbox {
   overflow-x: hidden !important;
--- a/browser/themes/shared/tabs.inc.css
+++ b/browser/themes/shared/tabs.inc.css
@@ -126,18 +126,18 @@
 .tab-sharing-icon-overlay[sharing="screen"] {
   list-style-image: url("chrome://browser/skin/notification-icons.svg#screen-sharing");
 }
 
 .tab-icon-overlay {
   width: 16px;
   height: 16px;
   margin-top: -8px;
-  margin-inline-start: -15px;
-  margin-inline-end: -1px;
+  margin-inline-start: -6px;
+  margin-inline-end: -10px;
   position: relative;
 }
 
 .tab-icon-overlay[crashed] {
   list-style-image: url("chrome://browser/skin/tabbrowser/crashed.svg");
 }
 
 .tab-icon-overlay[soundplaying],
--- a/browser/themes/shared/toolbarbutton-icons.inc.css
+++ b/browser/themes/shared/toolbarbutton-icons.inc.css
@@ -1,10 +1,14 @@
 :root {
-  --toolbarbutton-icon-fill-attention: #177ee5;
+  --toolbarbutton-icon-fill-attention: #0a84ff;
+}
+
+toolbar[brighttext] {
+  --toolbarbutton-icon-fill-attention: #45a1ff;
 }
 
 .toolbarbutton-1 {
   -moz-context-properties: fill;
   fill: #4c4c4c;
 }
 
 toolbar[brighttext] .toolbarbutton-1 {
@@ -309,46 +313,46 @@ toolbar:not([brighttext]) #bookmarks-men
   fill: transparent;
 }
 
 @keyframes overflow-animation {
   from {
     transform: translateX(0);
   }
   50% {
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     transform: translateX(-1260px);
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
 }
 
 @keyframes overflow-animation-rtl {
   from {
     transform: scaleX(-1) translateX(0);
   }
   50% {
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     transform: scaleX(-1) translateX(-1260px);
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
 }
 
 /* The animation is supposed to show the blue fill color for 520ms, then the
    fade to the toolbarbutton-fill color for the remaining 210ms. Thus with an
    animation-duration of 730ms, 71% is the point where we start the fade out. */
 @keyframes overflow-fade {
   from {
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   71% {
-    fill: #30A3FF;
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     fill: inherit;
   }
 }
 
 #nav-bar-overflow-button > .toolbarbutton-animatable-box {
   position: absolute;
@@ -424,44 +428,44 @@ toolbar:not([brighttext]) #bookmarks-men
   from {
     transform: translateX(0);
     fill: inherit;
   }
   25% {
     fill: inherit;
   }
   50% {
-    fill: rgb(10,132,255);
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     transform: translateX(-1056px);
-    fill: rgb(10,132,255);
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
 }
 
 @keyframes library-bookmark-animation-rtl {
   from {
     transform: scaleX(-1) translateX(0);
     fill: inherit;
   }
   25% {
     fill: inherit;
   }
   50% {
-    fill: rgb(10,132,255);
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     transform: scaleX(-1) translateX(-1056px);
-    fill: rgb(10,132,255);
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
 }
 
 @keyframes library-bookmark-fade {
   from {
-    fill: rgb(10,132,255);
+    fill: var(--toolbarbutton-icon-fill-attention);
   }
   to {
     fill: inherit;
   }
 }
 
 #library-button[animate="bookmark"] {
   position: relative;
@@ -489,16 +493,18 @@ toolbar:not([brighttext]) #bookmarks-men
 #library-button[animate="bookmark"] > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   height: var(--toolbarbutton-height);
   min-height: 54px; /* Minimum height must be equal to the height of the SVG sprite */
   background-image: url("chrome://browser/skin/library-bookmark-animation.svg");
   width: 1078px;
   animation-name: library-bookmark-animation;
   animation-duration: 800ms;
   animation-timing-function: steps(48);
+  -moz-context-properties: fill, stroke;
+  stroke: var(--toolbarbutton-icon-fill-attention);
 }
 
 #library-button[animate="bookmark"]:-moz-locale-dir(rtl) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   animation-name: library-bookmark-animation-rtl;
   transform: scaleX(-1);
 }
 
 #library-button[animate="bookmark"][fade] > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
--- a/browser/themes/shared/urlbar-searchbar.inc.css
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
@@ -185,16 +185,18 @@
   height: var(--toolbarbutton-height);
   min-height: 33px; /* Minimum height must be equal to the height of the SVG sprite */
   animation-name: bookmark-animation;
   animation-fill-mode: forwards;
   animation-iteration-count: 1;
   animation-timing-function: steps(19);
   animation-duration: 317ms;
   width: 660px;
+  -moz-context-properties: fill, stroke;
+  stroke: var(--toolbarbutton-icon-fill-attention);
 }
 
 #star-button-box[animationsenabled] > #star-button[starred][animate]:-moz-locale-dir(rtl) + #star-button-animatable-box > #star-button-animatable-image {
   animation-name: bookmark-animation-rtl;
 }
 
 /* Zoom button */
 #urlbar-zoom-button {
--- a/build/moz.configure/warnings.configure
+++ b/build/moz.configure/warnings.configure
@@ -112,11 +112,20 @@ check_and_add_gcc_warning('-Wno-format',
 # We hit this all over the place with the gtest INSTANTIATE_TEST_CASE_P macro
 check_and_add_gcc_warning('-Wno-gnu-zero-variadic-macro-arguments')
 
 # Add compile-time warnings for unprotected functions and format functions
 # that represent possible security problems
 check_and_add_gcc_warning('-Wformat-security')
 check_and_add_gcc_warning('-Wformat-overflow=2')
 
+# Disable a warning with gcc 7. See bug 1320656
+# We are far from using C++17 and the impact of the warning will be
+# limited to a potential public ABI.
+# Currently only affecting js/
+check_and_add_gcc_warning('-Wno-noexcept-type', cxx_compiler,
+                          when=depends(build_project)
+                          (lambda build_project: build_project == 'js'))
+
+
 # Please keep these last in this file
 add_old_configure_assignment('_WARNINGS_CFLAGS', warnings_cflags)
 add_old_configure_assignment('_WARNINGS_CXXFLAGS', warnings_cxxflags)
--- a/build/unix/elfhack/elfhack.cpp
+++ b/build/unix/elfhack/elfhack.cpp
@@ -724,25 +724,25 @@ int do_relocation_section(Elf *elf, unsi
         // Add a relocation for the mprotect symbol.
         new_rels.emplace_back();
         Rel_Type &rel = new_rels.back();
         memset(&rel, 0, sizeof(rel));
         rel.r_info = ELF32_R_INFO(std::distance(symtab->syms.begin(), std::vector<Elf_SymValue>::iterator(mprotect)), rel_type2);
 
         // Find the beginning of the bss section, and use an aligned location in there
         // for the relocation.
-        for (ElfSegment *segment = elf->getSegmentByType(PT_LOAD); segment;
-             segment = elf->getSegmentByType(PT_LOAD, segment)) {
-            if ((segment->getFlags() & PF_W) == 0)
+        for (ElfSection *s = elf->getSection(1); s != nullptr; s = s->getNext()) {
+            if (s->getType() != SHT_NOBITS || (s->getFlags() & (SHF_TLS | SHF_WRITE)) != SHF_WRITE) {
                 continue;
+            }
             size_t ptr_size = Elf_Addr::size(elf->getClass());
-            size_t aligned_mem_end = (segment->getAddr() + segment->getMemSize() + ptr_size - 1) & ~(ptr_size - 1);
-            size_t aligned_file_end = (segment->getAddr() + segment->getFileSize() + ptr_size - 1) & ~(ptr_size - 1);