tbb-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18712 discussions

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 13252: Do not store data in the app bundle
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 24aedfe05204ad746336e59b845cf837558f4988
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Mar 18 14:20:02 2016 -0400
Bug 13252: Do not store data in the app bundle
When --enable-tor-browser-data-outside-app-dir is enabled,
all user data is stored in a directory named
TorBrowser-Data which is located next to the application directory.
Display an informative error message if the TorBrowser-Data
directory cannot be created due to an "access denied" or a
"read only volume" error.
On Mac OS, add support for the --invisible command line option which
is used by the meek-http-helper to avoid showing an icon for the
helper browser on the dock.
---
toolkit/xre/nsAppRunner.cpp | 76 +++++++++++++++---
toolkit/xre/nsXREDirProvider.cpp | 43 +++++-----
toolkit/xre/nsXREDirProvider.h | 6 ++
xpcom/io/TorFileUtils.cpp | 142 +++++++++++++++++++++++++++++++++
xpcom/io/TorFileUtils.h | 33 ++++++++
xpcom/io/moz.build | 5 ++
xpcom/io/nsAppFileLocationProvider.cpp | 53 +++++-------
7 files changed, 290 insertions(+), 68 deletions(-)
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 3ba04d2b495c..8e76213e7923 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -1891,6 +1891,8 @@ static nsresult ProfileMissingDialog(nsINativeAppSupport* aNative) {
}
}
+// If aUnlocker is NULL, it is also OK for the following arguments to be NULL:
+// aProfileDir, aProfileLocalDir, aResult.
static ReturnAbortOnError ProfileErrorDialog(nsIFile* aProfileDir,
nsIFile* aProfileLocalDir,
ProfileStatus aStatus,
@@ -1899,17 +1901,19 @@ static ReturnAbortOnError ProfileErrorDialog(nsIFile* aProfileDir,
nsIProfileLock** aResult) {
nsresult rv;
- bool exists;
- aProfileDir->Exists(&exists);
- if (!exists) {
- return ProfileMissingDialog(aNative);
+ if (aProfileDir) {
+ bool exists;
+ aProfileDir->Exists(&exists);
+ if (!exists) {
+ return ProfileMissingDialog(aNative);
+ }
}
ScopedXPCOMStartup xpcom;
rv = xpcom.Initialize();
NS_ENSURE_SUCCESS(rv, rv);
- mozilla::Telemetry::WriteFailedProfileLock(aProfileDir);
+ if (aProfileDir) mozilla::Telemetry::WriteFailedProfileLock(aProfileDir);
rv = xpcom.SetWindowCreator(aNative);
NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
@@ -1999,7 +2003,8 @@ static ReturnAbortOnError ProfileErrorDialog(nsIFile* aProfileDir,
}
} else {
#ifdef MOZ_WIDGET_ANDROID
- if (java::GeckoAppShell::UnlockProfile()) {
+ if (aProfileDir && aProfileLocalDir && aResult &&
+ java::GeckoAppShell::UnlockProfile()) {
return NS_LockProfilePath(aProfileDir, aProfileLocalDir, nullptr,
aResult);
}
@@ -2107,6 +2112,23 @@ static ReturnAbortOnError ShowProfileManager(
return LaunchChild(false);
}
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+static ProfileStatus CheckTorBrowserDataWriteAccess(nsIFile* aAppDir) {
+ // Check whether we can write to the directory that will contain
+ // TorBrowser-Data.
+ nsCOMPtr<nsIFile> tbDataDir;
+ RefPtr<nsXREDirProvider> dirProvider = nsXREDirProvider::GetSingleton();
+ if (!dirProvider) return PROFILE_STATUS_OTHER_ERROR;
+ nsresult rv =
+ dirProvider->GetTorBrowserUserDataDir(getter_AddRefs(tbDataDir));
+ NS_ENSURE_SUCCESS(rv, PROFILE_STATUS_OTHER_ERROR);
+ nsCOMPtr<nsIFile> tbDataDirParent;
+ rv = tbDataDir->GetParent(getter_AddRefs(tbDataDirParent));
+ NS_ENSURE_SUCCESS(rv, PROFILE_STATUS_OTHER_ERROR);
+ return nsToolkitProfileService::CheckProfileWriteAccess(tbDataDirParent);
+}
+#endif
+
static bool gDoMigration = false;
static bool gDoProfileReset = false;
static nsCOMPtr<nsIToolkitProfile> gResetOldProfile;
@@ -3183,6 +3205,14 @@ int XREMain::XRE_mainInit(bool* aExitFlag) {
if (PR_GetEnv("XRE_MAIN_BREAK")) NS_BREAK();
#endif
+#if defined(XP_MACOSX) && defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+ bool hideDockIcon = (CheckArg("invisible") == ARG_FOUND);
+ if (hideDockIcon) {
+ ProcessSerialNumber psn = {0, kCurrentProcess};
+ TransformProcessType(&psn, kProcessTransformToBackgroundApplication);
+ }
+#endif
+
IncreaseDescriptorLimits();
#ifdef USE_GLX_TEST
@@ -4031,7 +4061,34 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
return 0;
}
+#if (defined(MOZ_UPDATER) && !defined(MOZ_WIDGET_ANDROID)) || \
+ defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+ nsCOMPtr<nsIFile> exeFile, exeDir;
+ bool persistent;
+ rv = mDirProvider.GetFile(XRE_EXECUTABLE_FILE, &persistent,
+ getter_AddRefs(exeFile));
+ NS_ENSURE_SUCCESS(rv, 1);
+ rv = exeFile->GetParent(getter_AddRefs(exeDir));
+ NS_ENSURE_SUCCESS(rv, 1);
+#endif
+
rv = NS_NewToolkitProfileService(getter_AddRefs(mProfileSvc));
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ if (NS_FAILED(rv)) {
+ // NS_NewToolkitProfileService() returns a generic NS_ERROR_FAILURE error
+ // if creation of the TorBrowser-Data directory fails due to access denied
+ // or because of a read-only disk volume. Do an extra check here to detect
+ // these errors so we can display an informative error message.
+ ProfileStatus status = CheckTorBrowserDataWriteAccess(exeDir);
+ if ((PROFILE_STATUS_ACCESS_DENIED == status) ||
+ (PROFILE_STATUS_READ_ONLY == status)) {
+ ProfileErrorDialog(nullptr, nullptr, status, nullptr, mNativeApp,
+ nullptr);
+ return 1;
+ }
+ }
+ #endif
+
if (rv == NS_ERROR_FILE_ACCESS_DENIED) {
PR_fprintf(PR_STDERR,
"Error: Access was denied while trying to open files in "
@@ -4100,7 +4157,6 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
#if defined(MOZ_UPDATER) && !defined(MOZ_WIDGET_ANDROID)
// Check for and process any available updates
nsCOMPtr<nsIFile> updRoot;
- bool persistent;
rv = mDirProvider.GetFile(XRE_UPDATE_ROOT_DIR, &persistent,
getter_AddRefs(updRoot));
// XRE_UPDATE_ROOT_DIR may fail. Fallback to appDir if failed
@@ -4136,12 +4192,6 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
if (CheckArg("test-process-updates")) {
SaveToEnv("MOZ_TEST_PROCESS_UPDATES=1");
}
- nsCOMPtr<nsIFile> exeFile, exeDir;
- rv = mDirProvider.GetFile(XRE_EXECUTABLE_FILE, &persistent,
- getter_AddRefs(exeFile));
- NS_ENSURE_SUCCESS(rv, 1);
- rv = exeFile->GetParent(getter_AddRefs(exeDir));
- NS_ENSURE_SUCCESS(rv, 1);
ProcessUpdates(mDirProvider.GetGREDir(), exeDir, updRoot, gRestartArgc,
gRestartArgv, mAppData->version);
if (EnvHasValue("MOZ_TEST_PROCESS_UPDATES")) {
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index accdcfe7c0b0..09f34911d3cb 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -46,6 +46,8 @@
#include "mozilla/Telemetry.h"
#include "nsPrintfCString.h"
+#include "TorFileUtils.h"
+
#include <stdlib.h>
#ifdef XP_WIN
@@ -1383,34 +1385,18 @@ nsresult nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
return gDataDirHome->Clone(aFile);
}
- nsresult rv = GetAppDir()->Clone(getter_AddRefs(localDir));
+ nsresult rv = GetTorBrowserUserDataDir(getter_AddRefs(localDir));
NS_ENSURE_SUCCESS(rv, rv);
- int levelsToRemove = 1; // In FF21+, appDir points to browser subdirectory.
-#if defined(XP_MACOSX)
- levelsToRemove += 2;
-#endif
- while (localDir && (levelsToRemove > 0)) {
- // When crawling up the hierarchy, components named "." do not count.
- nsAutoCString removedName;
- rv = localDir->GetNativeLeafName(removedName);
- NS_ENSURE_SUCCESS(rv, rv);
- bool didRemove = !removedName.Equals(".");
-
- // Remove a directory component.
- nsCOMPtr<nsIFile> parentDir;
- rv = localDir->GetParent(getter_AddRefs(parentDir));
- NS_ENSURE_SUCCESS(rv, rv);
- localDir = parentDir;
- if (didRemove) --levelsToRemove;
- }
-
- if (!localDir) return NS_ERROR_FAILURE;
-
+#if !defined(ANDROID)
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ rv = localDir->AppendNative(NS_LITERAL_CSTRING("Browser"));
+#else
rv = localDir->AppendRelativeNativePath(
- NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
- "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_LITERAL_CSTRING("Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+#endif
NS_ENSURE_SUCCESS(rv, rv);
+#endif
if (aLocal) {
rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
@@ -1516,6 +1502,15 @@ nsresult nsXREDirProvider::GetUserDataDirectory(nsIFile** aFile, bool aLocal) {
return NS_OK;
}
+nsresult nsXREDirProvider::GetTorBrowserUserDataDir(nsIFile** aFile) {
+ NS_ENSURE_ARG_POINTER(aFile);
+ nsCOMPtr<nsIFile> exeFile;
+ bool per = false;
+ nsresult rv = GetFile(XRE_EXECUTABLE_FILE, &per, getter_AddRefs(exeFile));
+ NS_ENSURE_SUCCESS(rv, rv);
+ return TorBrowser_GetUserDataDir(exeFile, aFile);
+}
+
nsresult nsXREDirProvider::EnsureDirectoryExists(nsIFile* aDirectory) {
nsresult rv = aDirectory->Create(nsIFile::DIRECTORY_TYPE, 0700);
diff --git a/toolkit/xre/nsXREDirProvider.h b/toolkit/xre/nsXREDirProvider.h
index b9678d4ec577..2aa2face5974 100644
--- a/toolkit/xre/nsXREDirProvider.h
+++ b/toolkit/xre/nsXREDirProvider.h
@@ -113,6 +113,12 @@ class nsXREDirProvider final : public nsIDirectoryServiceProvider2,
*/
nsresult GetProfileDir(nsIFile** aResult);
+ /**
+ * Get the TorBrowser user data directory by calling the
+ * TorBrowser_GetUserDataDir() utility function.
+ */
+ nsresult GetTorBrowserUserDataDir(nsIFile** aFile);
+
protected:
nsresult GetFilesInternal(const char* aProperty,
nsISimpleEnumerator** aResult);
diff --git a/xpcom/io/TorFileUtils.cpp b/xpcom/io/TorFileUtils.cpp
new file mode 100644
index 000000000000..bddf8d7bbd95
--- /dev/null
+++ b/xpcom/io/TorFileUtils.cpp
@@ -0,0 +1,142 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "TorFileUtils.h"
+#include "nsString.h"
+#ifdef MOZ_WIDGET_COCOA
+#include <Carbon/Carbon.h>
+#include "nsILocalFileMac.h"
+#endif
+
+static nsresult GetAppRootDir(nsIFile *aExeFile, nsIFile** aFile);
+
+//-----------------------------------------------------------------------------
+nsresult
+TorBrowser_GetUserDataDir(nsIFile *aExeFile, nsIFile** aFile)
+{
+ NS_ENSURE_ARG_POINTER(aFile);
+ nsCOMPtr<nsIFile> tbDataDir;
+
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ nsAutoCString tbDataLeafName(NS_LITERAL_CSTRING("TorBrowser-Data"));
+ nsCOMPtr<nsIFile> appRootDir;
+ nsresult rv = GetAppRootDir(aExeFile, getter_AddRefs(appRootDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+#ifndef XP_MACOSX
+ // On all platforms except Mac OS, we always operate in a "portable" mode
+ // where the TorBrowser-Data directory is located next to the application.
+ rv = appRootDir->GetParent(getter_AddRefs(tbDataDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = tbDataDir->AppendNative(tbDataLeafName);
+ NS_ENSURE_SUCCESS(rv, rv);
+#else
+ // For Mac OS, determine whether we should store user data in the OS's
+ // standard location (i.e., under ~/Library/Application Support). We use
+ // the OS location if (1) the application is installed in a directory whose
+ // path contains "/Applications" or (2) the TorBrowser-Data directory does
+ // not exist and cannot be created (which probably means we lack write
+ // permission to the directory that contains the application).
+ nsAutoString appRootPath;
+ rv = appRootDir->GetPath(appRootPath);
+ NS_ENSURE_SUCCESS(rv, rv);
+ bool useOSLocation = (appRootPath.Find("/Applications",
+ true /* ignore case */) >= 0);
+ if (!useOSLocation) {
+ // We hope to use the portable (aka side-by-side) approach, but before we
+ // commit to that, let's ensure that we can create the TorBrowser-Data
+ // directory. If it already exists, we will try to use it; if not and we
+ // fail to create it, we will switch to ~/Library/Application Support.
+ rv = appRootDir->GetParent(getter_AddRefs(tbDataDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = tbDataDir->AppendNative(tbDataLeafName);
+ NS_ENSURE_SUCCESS(rv, rv);
+ bool exists = false;
+ rv = tbDataDir->Exists(&exists);
+ if (NS_SUCCEEDED(rv) && !exists)
+ rv = tbDataDir->Create(nsIFile::DIRECTORY_TYPE, 0700);
+ useOSLocation = NS_FAILED(rv);
+ }
+
+ if (useOSLocation) {
+ // We are using ~/Library/Application Support/TorBrowser-Data. We do not
+ // need to create that directory here because the code in nsXREDirProvider
+ // will do so (and the user should always have write permission for
+ // ~/Library/Application Support; if they do not we have no more options).
+ FSRef fsRef;
+ OSErr err = ::FSFindFolder(kUserDomain, kApplicationSupportFolderType,
+ kCreateFolder, &fsRef);
+ NS_ENSURE_FALSE(err, NS_ERROR_FAILURE);
+ // To convert the FSRef returned by FSFindFolder() into an nsIFile that
+ // points to ~/Library/Application Support, we first create an empty
+ // nsIFile object (no path) and then use InitWithFSRef() to set the
+ // path.
+ rv = NS_NewNativeLocalFile(EmptyCString(), true,
+ getter_AddRefs(tbDataDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ nsCOMPtr<nsILocalFileMac> dirFileMac = do_QueryInterface(tbDataDir);
+ if (!dirFileMac)
+ return NS_ERROR_UNEXPECTED;
+ rv = dirFileMac->InitWithFSRef(&fsRef);
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = tbDataDir->AppendNative(tbDataLeafName);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+#endif
+
+#elif defined(ANDROID)
+ // Tor Browser Android stores data in the app home directory.
+ const char* homeDir = getenv("HOME");
+ if (!homeDir || !*homeDir)
+ return NS_ERROR_FAILURE;
+ nsresult rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true,
+ getter_AddRefs(tbDataDir));
+#else
+ // User data is embedded within the application directory (i.e.,
+ // TOR_BROWSER_DATA_OUTSIDE_APP_DIR is not defined).
+ nsresult rv = GetAppRootDir(aExeFile, getter_AddRefs(tbDataDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = tbDataDir->AppendNative(NS_LITERAL_CSTRING("TorBrowser"));
+ NS_ENSURE_SUCCESS(rv, rv);
+#endif
+
+ tbDataDir.forget(aFile);
+ return NS_OK;
+}
+
+static nsresult
+GetAppRootDir(nsIFile *aExeFile, nsIFile** aFile)
+{
+ NS_ENSURE_ARG_POINTER(aExeFile);
+ NS_ENSURE_ARG_POINTER(aFile);
+ nsCOMPtr<nsIFile> appRootDir = aExeFile;
+
+ int levelsToRemove = 1; // Remove firefox (the executable file).
+#if defined(XP_MACOSX)
+ levelsToRemove += 2; // On Mac OS, we must also remove Contents/MacOS.
+#endif
+ while (appRootDir && (levelsToRemove > 0)) {
+ // When crawling up the hierarchy, components named "." do not count.
+ nsAutoCString removedName;
+ nsresult rv = appRootDir->GetNativeLeafName(removedName);
+ NS_ENSURE_SUCCESS(rv, rv);
+ bool didRemove = !removedName.Equals(".");
+
+ // Remove a directory component.
+ nsCOMPtr<nsIFile> parentDir;
+ rv = appRootDir->GetParent(getter_AddRefs(parentDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ appRootDir = parentDir;
+
+ if (didRemove)
+ --levelsToRemove;
+ }
+
+ if (!appRootDir)
+ return NS_ERROR_FAILURE;
+
+ appRootDir.forget(aFile);
+ return NS_OK;
+}
diff --git a/xpcom/io/TorFileUtils.h b/xpcom/io/TorFileUtils.h
new file mode 100644
index 000000000000..d5e86abf9685
--- /dev/null
+++ b/xpcom/io/TorFileUtils.h
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef TorFileUtils_h__
+#define TorFileUtils_h__
+
+#include "nsIFile.h"
+
+/**
+ * TorBrowser_GetUserDataDir
+ *
+ * Retrieve the Tor Browser user data directory.
+ * When built with --enable-tor-browser-data-outside-app-dir, the directory
+ * is next to the application directory, except on Mac OS where it may be
+ * there or it may be at ~/Library/Application Support/TorBrowser-Data (the
+ * latter location is used if the .app bundle is in a directory whose path
+ * contains /Applications or if we lack write access to the directory that
+ * contains the .app).
+ * When built without --enable-tor-browser-data-outside-app-dir, this
+ * directory is TorBrowser.app/TorBrowser.
+ *
+ * @param aExeFile The firefox executable.
+ * @param aFile Out parameter that is set to the Tor Browser user data
+ * directory.
+ * @return NS_OK on success. Error otherwise.
+ */
+extern nsresult
+TorBrowser_GetUserDataDir(nsIFile *aExeFile, nsIFile** aFile);
+
+#endif // !TorFileUtils_h__
diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build
index a165b491bc56..b0eb74f4c56d 100644
--- a/xpcom/io/moz.build
+++ b/xpcom/io/moz.build
@@ -86,6 +86,7 @@ EXPORTS += [
'nsUnicharInputStream.h',
'nsWildCard.h',
'SpecialSystemDirectory.h',
+ 'TorFileUtils.h',
]
EXPORTS.mozilla += [
@@ -135,6 +136,10 @@ UNIFIED_SOURCES += [
'SpecialSystemDirectory.cpp',
]
+SOURCES += [
+ 'TorFileUtils.cpp',
+]
+
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
SOURCES += [
'CocoaFileUtils.mm',
diff --git a/xpcom/io/nsAppFileLocationProvider.cpp b/xpcom/io/nsAppFileLocationProvider.cpp
index 81551a8e3893..9f95e5cbec2d 100644
--- a/xpcom/io/nsAppFileLocationProvider.cpp
+++ b/xpcom/io/nsAppFileLocationProvider.cpp
@@ -28,6 +28,8 @@
# include <sys/param.h>
#endif
+#include "TorFileUtils.h"
+
// WARNING: These hard coded names need to go away. They need to
// come from localizable resources
@@ -234,8 +236,14 @@ nsresult nsAppFileLocationProvider::CloneMozBinDirectory(nsIFile** aLocalFile) {
// GetProductDirectory - Gets the directory which contains the application data
// folder
//
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+// UNIX and WIN : <App Folder>/../TorBrowser-Data/Browser
+// Mac : <App Folder>/../../../TorBrowser-Data/Browser OR
+// ~/Library/Application Support/TorBrowser-Data/Browser
+#else
// UNIX and WIN : <App Folder>/TorBrowser/Data/Browser
// Mac : <App Folder>/../../TorBrowser/Data/Browser
+#endif
//----------------------------------------------------------------------------------------
nsresult nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
bool aLocal) {
@@ -243,42 +251,25 @@ nsresult nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
return NS_ERROR_INVALID_ARG;
}
- nsresult rv;
+ nsresult rv = NS_ERROR_UNEXPECTED;
bool exists;
- nsCOMPtr<nsIFile> localDir;
+ nsCOMPtr<nsIFile> localDir, exeFile;
- rv = CloneMozBinDirectory(getter_AddRefs(localDir));
+ nsCOMPtr<nsIProperties> directoryService(
+ do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = directoryService->Get(XRE_EXECUTABLE_FILE, NS_GET_IID(nsIFile),
+ getter_AddRefs(exeFile));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = TorBrowser_GetUserDataDir(exeFile, getter_AddRefs(localDir));
NS_ENSURE_SUCCESS(rv, rv);
- int levelsToRemove = 1; // In FF21+, bin dir points to browser subdirectory.
-#if defined(XP_MACOSX)
- levelsToRemove += 2;
-#endif
- while (localDir && (levelsToRemove > 0)) {
- // When crawling up the hierarchy, components named "." do not count.
- nsAutoCString removedName;
- rv = localDir->GetNativeLeafName(removedName);
- NS_ENSURE_SUCCESS(rv, rv);
- bool didRemove = !removedName.Equals(".");
-
- // Remove a directory component.
- nsCOMPtr<nsIFile> parentDir;
- rv = localDir->GetParent(getter_AddRefs(parentDir));
- NS_ENSURE_SUCCESS(rv, rv);
- localDir = parentDir;
-
- if (didRemove) {
- --levelsToRemove;
- }
- }
-
- if (!localDir) {
- return NS_ERROR_FAILURE;
- }
-
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ rv = localDir->AppendNative(NS_LITERAL_CSTRING("Browser"));
+#else
rv = localDir->AppendRelativeNativePath(
- NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
- "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_LITERAL_CSTRING("Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+#endif
NS_ENSURE_SUCCESS(rv, rv);
if (aLocal) {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 18800: Remove localhost DNS lookup in nsProfileLock.cpp
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 98afa96b903abf4cfa572f602e275c0fc3d90f8d
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Apr 21 10:40:26 2016 -0400
Bug 18800: Remove localhost DNS lookup in nsProfileLock.cpp
Instead of using the local computer's IP address within
symlink-based profile lock signatures, always use 127.0.0.1.
---
toolkit/profile/nsProfileLock.cpp | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/toolkit/profile/nsProfileLock.cpp b/toolkit/profile/nsProfileLock.cpp
index 25c4f5a79e56..1942815e3446 100644
--- a/toolkit/profile/nsProfileLock.cpp
+++ b/toolkit/profile/nsProfileLock.cpp
@@ -289,18 +289,17 @@ nsresult nsProfileLock::LockWithSymlink(nsIFile* aLockFile,
if (!mReplacedLockTime)
aLockFile->GetLastModifiedTimeOfLink(&mReplacedLockTime);
+ // For Tor Browser, avoid a DNS lookup here so the Tor network is not
+ // bypassed. Instead, always use 127.0.0.1 for the IP address portion
+ // of the lock signature, which may cause the browser to refuse to
+ // start in the rare event that all of the following conditions are met:
+ // 1. The browser profile is on a network file system.
+ // 2. The file system does not support fcntl() locking.
+ // 3. Tor Browser is run from two different computers at the same time.
+
struct in_addr inaddr;
inaddr.s_addr = htonl(INADDR_LOOPBACK);
- char hostname[256];
- PRStatus status = PR_GetSystemInfo(PR_SI_HOSTNAME, hostname, sizeof hostname);
- if (status == PR_SUCCESS) {
- char netdbbuf[PR_NETDB_BUF_SIZE];
- PRHostEnt hostent;
- status = PR_GetHostByName(hostname, netdbbuf, sizeof netdbbuf, &hostent);
- if (status == PR_SUCCESS) memcpy(&inaddr, hostent.h_addr, sizeof inaddr);
- }
-
mozilla::SmprintfPointer signature =
mozilla::Smprintf("%s:%s%lu", inet_ntoa(inaddr),
aHaveFcntlLock ? "+" : "", (unsigned long)getpid());
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 21724: Make Firefox and Tor Browser distinct macOS apps
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 022d5f406c6a67445814c2c7480f28a03f0a12c8
Author: teor <teor2345(a)gmail.com>
Date: Mon Mar 13 23:06:23 2017 +1100
Bug 21724: Make Firefox and Tor Browser distinct macOS apps
When macOS opens a document or selects a default browser, it sometimes
uses the CFBundleSignature. Changing from the Firefox MOZB signature to
a different signature TORB allows macOS to distinguish between Firefox
and Tor Browser.
---
browser/app/Makefile.in | 2 +-
browser/app/macbuild/Contents/Info.plist.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
index 1aec6541fc0f..6770319f1866 100644
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -103,5 +103,5 @@ ifdef MOZ_UPDATER
mv -f '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater' '$(dist_dest)/Contents/Library/LaunchServices'
ln -s ../../../../Library/LaunchServices/org.mozilla.updater '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater'
endif
- printf APPLMOZB > '$(dist_dest)/Contents/PkgInfo'
+ printf APPLTORB > '$(dist_dest)/Contents/PkgInfo'
endif
diff --git a/browser/app/macbuild/Contents/Info.plist.in b/browser/app/macbuild/Contents/Info.plist.in
index f6791ea48125..95b3bc83905c 100644
--- a/browser/app/macbuild/Contents/Info.plist.in
+++ b/browser/app/macbuild/Contents/Info.plist.in
@@ -179,7 +179,7 @@
<key>CFBundleShortVersionString</key>
<string>%APP_VERSION%</string>
<key>CFBundleSignature</key>
- <string>MOZB</string>
+ <string>TORB</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 11641: change TBB directory structure to be more like Firefox's
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit fb262797317d4afa886ee62cfd10878306249875
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Apr 29 13:08:24 2014 -0400
Bug 11641: change TBB directory structure to be more like Firefox's
Unless the -osint command line flag is used, the browser now defaults
to the equivalent of -no-remote. There is a new -allow-remote flag that
may be used to restore the original (Firefox-like) default behavior.
---
toolkit/xre/nsAppRunner.cpp | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 8e76213e7923..1fd397f4aae8 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -1434,8 +1434,10 @@ static void DumpHelp() {
" --migration Start with migration wizard.\n"
" --ProfileManager Start with ProfileManager.\n"
#ifdef MOZ_HAS_REMOTE
- " --no-remote Do not accept or send remote commands; implies\n"
+ " --no-remote (default) Do not accept or send remote commands; "
+ "implies\n"
" --new-instance.\n"
+ " --allow-remote Accept and send remote commands.\n"
" --new-instance Open new instance, not a new window in running "
"instance.\n"
#endif
@@ -3548,16 +3550,25 @@ int XREMain::XRE_mainInit(bool* aExitFlag) {
gSafeMode);
#if defined(MOZ_HAS_REMOTE)
+ // In Tor Browser, remoting is disabled by default unless -osint is used.
+ bool allowRemote = (CheckArg("allow-remote") == ARG_FOUND);
+ bool isOsint = (CheckArg("osint", nullptr, CheckArgFlag::None) == ARG_FOUND);
+ if (!allowRemote && !isOsint) {
+ SaveToEnv("MOZ_NO_REMOTE=1");
+ }
// Handle --no-remote and --new-instance command line arguments. Setup
// the environment to better accommodate other components and various
// restart scenarios.
ar = CheckArg("no-remote");
- if (ar == ARG_FOUND || EnvHasValue("MOZ_NO_REMOTE")) {
+ if ((ar == ARG_FOUND) && allowRemote) {
+ PR_fprintf(PR_STDERR,
+ "Error: argument --no-remote is invalid when argument "
+ "--allow-remote is specified\n");
+ return 1;
+ }
+ if (EnvHasValue("MOZ_NO_REMOTE")) {
mDisableRemoteClient = true;
mDisableRemoteServer = true;
- if (!EnvHasValue("MOZ_NO_REMOTE")) {
- SaveToEnv("MOZ_NO_REMOTE=1");
- }
}
ar = CheckArg("new-instance");
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 13379: Sign our MAR files.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 9a7083440b5fea8850e2b0c9f7569315c191cd0f
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Dec 17 16:37:11 2014 -0500
Bug 13379: Sign our MAR files.
Configure with --enable-verify-mar (when updating, require a valid
signature on the MAR file before it is applied).
Use the Tor Browser version instead of the Firefox version inside the
MAR file info block (necessary to prevent downgrade attacks).
Use NSS on all platforms for checking MAR signatures (instead of using
OS-native APIs, which Mozilla does on Mac OS and Windows). So that the
NSS and NSPR libraries the updater depends on can be found at runtime,
we add the firefox directory to the shared library search path on macOS.
On Linux, rpath is used by Mozilla to solve that problem, but that
approach won't work on macOS because the updater executable is copied
during the update process to a location that is under TorBrowser-Data,
and the location of TorBrowser-Data varies.
Also includes the fix for bug 18900.
---
.mozconfig | 1 +
.mozconfig-asan | 1 +
.mozconfig-mac | 1 +
.mozconfig-mingw | 1 +
modules/libmar/tool/mar.c | 6 +--
modules/libmar/tool/moz.build | 12 ++++--
modules/libmar/verify/moz.build | 14 +++---
.../mozapps/update/updater/updater-common.build | 24 +++++++++--
toolkit/mozapps/update/updater/updater.cpp | 25 +++++++----
toolkit/xre/moz.build | 3 ++
toolkit/xre/nsUpdateDriver.cpp | 50 ++++++++++++++++++++++
11 files changed, 113 insertions(+), 25 deletions(-)
diff --git a/.mozconfig b/.mozconfig
index 18cd1f9b6487..c50c57d410de 100755
--- a/.mozconfig
+++ b/.mozconfig
@@ -37,3 +37,4 @@ ac_add_options MOZ_TELEMETRY_REPORTING=
ac_add_options --disable-tor-launcher
ac_add_options --with-tor-browser-version=dev-build
ac_add_options --disable-tor-browser-update
+ac_add_options --enable-verify-mar
diff --git a/.mozconfig-asan b/.mozconfig-asan
index 98ea6ac6f3fe..8bee813bfee8 100644
--- a/.mozconfig-asan
+++ b/.mozconfig-asan
@@ -30,6 +30,7 @@ ac_add_options --enable-official-branding
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-tor-browser-update
+ac_add_options --enable-verify-mar
ac_add_options --disable-strip
ac_add_options --disable-install-strip
diff --git a/.mozconfig-mac b/.mozconfig-mac
index 26e2b6b92fdb..5b4624ef1f67 100644
--- a/.mozconfig-mac
+++ b/.mozconfig-mac
@@ -43,6 +43,7 @@ ac_add_options --disable-debug
ac_add_options --enable-tor-browser-data-outside-app-dir
ac_add_options --enable-tor-browser-update
+ac_add_options --enable-verify-mar
ac_add_options --disable-crashreporter
ac_add_options --disable-webrtc
diff --git a/.mozconfig-mingw b/.mozconfig-mingw
index 3ec6ff18a3e9..ce6ace1dad67 100644
--- a/.mozconfig-mingw
+++ b/.mozconfig-mingw
@@ -15,6 +15,7 @@ ac_add_options --enable-strip
ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
+ac_add_options --enable-verify-mar
ac_add_options --disable-bits-download
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
diff --git a/modules/libmar/tool/mar.c b/modules/libmar/tool/mar.c
index 0bf2cb4bd1d4..ea2b79924914 100644
--- a/modules/libmar/tool/mar.c
+++ b/modules/libmar/tool/mar.c
@@ -65,7 +65,7 @@ static void print_usage() {
"signed_input_archive.mar base_64_encoded_signature_file "
"changed_signed_output.mar\n");
printf("(i) is the index of the certificate to extract\n");
-# if defined(XP_MACOSX) || (defined(XP_WIN) && !defined(MAR_NSS))
+# if (defined(XP_MACOSX) || defined(XP_WIN)) && !defined(MAR_NSS)
printf("Verify a MAR file:\n");
printf(" mar [-C workingDir] -D DERFilePath -v signed_archive.mar\n");
printf(
@@ -149,7 +149,7 @@ int main(int argc, char** argv) {
memset((void*)certBuffers, 0, sizeof(certBuffers));
#endif
#if !defined(NO_SIGN_VERIFY) && \
- ((!defined(MAR_NSS) && defined(XP_WIN)) || defined(XP_MACOSX))
+ (!defined(MAR_NSS) && (defined(XP_WIN) || defined(XP_MACOSX)))
memset(DERFilePaths, 0, sizeof(DERFilePaths));
memset(fileSizes, 0, sizeof(fileSizes));
#endif
@@ -181,7 +181,7 @@ int main(int argc, char** argv) {
argc -= 2;
}
#if !defined(NO_SIGN_VERIFY)
-# if (!defined(MAR_NSS) && defined(XP_WIN)) || defined(XP_MACOSX)
+# if (!defined(MAR_NSS) && (defined(XP_WIN) || defined(XP_MACOSX)))
/* -D DERFilePath, also matches -D[index] DERFilePath
We allow an index for verifying to be symmetric
with the import and export command line arguments. */
diff --git a/modules/libmar/tool/moz.build b/modules/libmar/tool/moz.build
index 19653fb0b073..8953af0bb15c 100644
--- a/modules/libmar/tool/moz.build
+++ b/modules/libmar/tool/moz.build
@@ -35,15 +35,21 @@ if CONFIG['MOZ_BUILD_APP'] != 'tools/update-packaging':
'verifymar',
]
+ if CONFIG['TOR_BROWSER_UPDATE']:
+ DEFINES['MAR_NSS'] = True
+
if CONFIG['OS_ARCH'] == 'WINNT':
USE_STATIC_LIBS = True
OS_LIBS += [
'ws2_32',
- 'crypt32',
- 'advapi32',
]
- elif CONFIG['OS_ARCH'] == 'Darwin':
+ if not CONFIG['TOR_BROWSER_UPDATE']:
+ OS_LIBS += [
+ 'crypt32',
+ 'advapi32',
+ ]
+ elif CONFIG['OS_ARCH'] == 'Darwin' and not CONFIG['TOR_BROWSER_UPDATE']:
OS_LIBS += [
'-framework Security',
]
diff --git a/modules/libmar/verify/moz.build b/modules/libmar/verify/moz.build
index 9f7dc56f8f8a..e1c6ced31c37 100644
--- a/modules/libmar/verify/moz.build
+++ b/modules/libmar/verify/moz.build
@@ -16,15 +16,12 @@ FORCE_STATIC_LIB = True
if CONFIG['OS_ARCH'] == 'WINNT':
USE_STATIC_LIBS = True
elif CONFIG['OS_ARCH'] == 'Darwin':
- UNIFIED_SOURCES += [
- 'MacVerifyCrypto.cpp',
- ]
- OS_LIBS += [
- '-framework Security',
+ USE_LIBS += [
+ 'nspr',
+ 'nss',
+ 'signmar',
]
else:
- DEFINES['MAR_NSS'] = True
- LOCAL_INCLUDES += ['../sign']
USE_LIBS += [
'nspr',
'nss',
@@ -38,6 +35,9 @@ else:
'-Wl,-rpath=\\$$ORIGIN',
]
+DEFINES['MAR_NSS'] = True
+LOCAL_INCLUDES += ['../sign']
+
LOCAL_INCLUDES += [
'../src',
]
diff --git a/toolkit/mozapps/update/updater/updater-common.build b/toolkit/mozapps/update/updater/updater-common.build
index 5898e92d465d..9f8365df8ade 100644
--- a/toolkit/mozapps/update/updater/updater-common.build
+++ b/toolkit/mozapps/update/updater/updater-common.build
@@ -4,6 +4,10 @@
# 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/.
+DEFINES['MAR_NSS'] = True
+
+link_with_nss = DEFINES['MAR_NSS'] or (CONFIG['OS_ARCH'] == 'Linux' and CONFIG['MOZ_VERIFY_MAR_SIGNATURE'])
+
srcs = [
'archivereader.cpp',
'updater.cpp',
@@ -36,10 +40,14 @@ if CONFIG['OS_ARCH'] == 'WINNT':
'ws2_32',
'shell32',
'shlwapi',
- 'crypt32',
- 'advapi32',
]
+ if not link_with_nss:
+ OS_LIBS += [
+ 'crypt32',
+ 'advapi32',
+ ]
+
USE_LIBS += [
'bspatch',
'mar',
@@ -47,6 +55,13 @@ USE_LIBS += [
'xz-embedded',
]
+if link_with_nss:
+ USE_LIBS += [
+ 'nspr',
+ 'nss',
+ 'signmar',
+ ]
+
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
have_progressui = 1
srcs += [
@@ -61,9 +76,12 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
]
OS_LIBS += [
'-framework Cocoa',
- '-framework Security',
'-framework SystemConfiguration',
]
+ if not link_with_nss:
+ OS_LIBS += [
+ '-framework Security',
+ ]
UNIFIED_SOURCES += [
'/toolkit/xre/updaterfileutils_osx.mm',
]
diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
index 9a95c3b17761..aaec0b38dda0 100644
--- a/toolkit/mozapps/update/updater/updater.cpp
+++ b/toolkit/mozapps/update/updater/updater.cpp
@@ -106,9 +106,11 @@ struct UpdateServerThreadArgs {
# define USE_EXECV
#endif
-#if defined(MOZ_VERIFY_MAR_SIGNATURE) && !defined(XP_WIN) && !defined(XP_MACOSX)
-# include "nss.h"
-# include "prerror.h"
+#if defined(MOZ_VERIFY_MAR_SIGNATURE)
+# if defined(MAR_NSS) || (!defined(XP_WIN) && !defined(XP_MACOSX))
+# include "nss.h"
+# include "prerror.h"
+# endif
#endif
#include "crctable.h"
@@ -2738,8 +2740,13 @@ static void UpdateThreadFunc(void* param) {
if (ReadMARChannelIDs(updateSettingsPath, &MARStrings) != OK) {
rv = UPDATE_SETTINGS_FILE_CHANNEL;
} else {
+# ifdef TOR_BROWSER_UPDATE
+ const char* appVersion = TOR_BROWSER_VERSION_QUOTED;
+# else
+ const char* appVersion = MOZ_APP_VERSION;
+# endif
rv = gArchiveReader.VerifyProductInformation(MARStrings.MARChannelID,
- MOZ_APP_VERSION);
+ appVersion);
}
}
}
@@ -2940,11 +2947,10 @@ int NS_main(int argc, NS_tchar** argv) {
}
#endif
-#if defined(MOZ_VERIFY_MAR_SIGNATURE) && !defined(XP_WIN) && !defined(XP_MACOSX)
- // On Windows and Mac we rely on native APIs to do verifications so we don't
- // need to initialize NSS at all there.
- // Otherwise, minimize the amount of NSS we depend on by avoiding all the NSS
- // databases.
+#if defined(MOZ_VERIFY_MAR_SIGNATURE)
+# if defined(MAR_NSS) || (!defined(XP_WIN) && !defined(XP_MACOSX))
+ // If using NSS for signature verification, initialize NSS but minimize
+ // the portion we depend on by avoiding all of the NSS databases.
if (NSS_NoDB_Init(nullptr) != SECSuccess) {
PRErrorCode error = PR_GetError();
fprintf(stderr, "Could not initialize NSS: %s (%d)", PR_ErrorToName(error),
@@ -2952,6 +2958,7 @@ int NS_main(int argc, NS_tchar** argv) {
_exit(1);
}
#endif
+#endif
#ifdef XP_MACOSX
if (!isElevated) {
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
index 7ba3be2fe241..6afab145c2b6 100644
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -214,6 +214,9 @@ for var in ('APP_VERSION', 'APP_ID'):
if CONFIG['MOZ_BUILD_APP'] == 'browser':
DEFINES['MOZ_BUILD_APP_IS_BROWSER'] = True
+if CONFIG['TOR_BROWSER_UPDATE']:
+ DEFINES['MAR_NSS'] = True
+
LOCAL_INCLUDES += [
'../../other-licenses/nsis/Contrib/CityHash/cityhash',
'../components/find',
diff --git a/toolkit/xre/nsUpdateDriver.cpp b/toolkit/xre/nsUpdateDriver.cpp
index 55d1982504ed..1cbee302719f 100644
--- a/toolkit/xre/nsUpdateDriver.cpp
+++ b/toolkit/xre/nsUpdateDriver.cpp
@@ -360,6 +360,42 @@ static nsresult GetUpdateDirFromAppDir(nsIFile* aAppDir, nsIFile** aResult) {
# endif
#endif
+#if defined(TOR_BROWSER_UPDATE) && defined(MOZ_VERIFY_MAR_SIGNATURE) && \
+ defined(MAR_NSS) && defined(XP_MACOSX)
+/**
+ * Ideally we would save and restore the original library path value after
+ * the updater finishes its work (and before firefox is re-launched).
+ * Doing so would avoid potential problems like the following bug:
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1434033
+ */
+/**
+ * Appends the specified path to the library path.
+ * This is used so that the updater can find libnss3.dylib and other
+ * shared libs.
+ *
+ * @param pathToAppend A new library path to prepend to the dynamic linker's
+ * search path.
+ */
+# include "prprf.h"
+# define PATH_SEPARATOR ":"
+# define LD_LIBRARY_PATH_ENVVAR_NAME "DYLD_LIBRARY_PATH"
+static void AppendToLibPath(const char* pathToAppend) {
+ char* pathValue = getenv(LD_LIBRARY_PATH_ENVVAR_NAME);
+ if (nullptr == pathValue || '\0' == *pathValue) {
+ // Leak the string because that is required by PR_SetEnv.
+ char* s =
+ Smprintf("%s=%s", LD_LIBRARY_PATH_ENVVAR_NAME, pathToAppend).release();
+ PR_SetEnv(s);
+ } else {
+ // Leak the string because that is required by PR_SetEnv.
+ char* s = Smprintf("%s=%s" PATH_SEPARATOR "%s", LD_LIBRARY_PATH_ENVVAR_NAME,
+ pathToAppend, pathValue)
+ .release();
+ PR_SetEnv(s);
+ }
+}
+#endif
+
/**
* Applies, switches, or stages an update.
*
@@ -606,6 +642,20 @@ static void ApplyUpdate(nsIFile* greDir, nsIFile* updateDir, nsIFile* appDir,
PR_SetEnv("MOZ_SAFE_MODE_RESTART=1");
}
+#if defined(TOR_BROWSER_UPDATE) && defined(MOZ_VERIFY_MAR_SIGNATURE) && \
+ defined(MAR_NSS) && defined(XP_MACOSX)
+ // On macOS, append the app directory to the shared library search path
+ // so the system can locate the shared libraries that are needed by the
+ // updater, e.g., libnss3.dylib).
+ nsAutoCString appPath;
+ nsresult rv2 = appDir->GetNativePath(appPath);
+ if (NS_SUCCEEDED(rv2)) {
+ AppendToLibPath(appPath.get());
+ } else {
+ LOG(("ApplyUpdate -- appDir->GetNativePath() failed (0x%x)\n", rv2));
+ }
+#endif
+
LOG(("spawning updater process [%s]\n", updaterPath.get()));
#ifdef DEBUG
dump_argv("ApplyUpdate updater", argv, argc);
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 19273: Avoid JavaScript patching of the external app helper dialog.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 7957bed7d23771e64cc41c042c870d75e19b0afe
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Jun 28 15:13:05 2016 -0400
Bug 19273: Avoid JavaScript patching of the external app helper dialog.
When handling an external URI or downloading a file, invoke Torbutton's
external app blocker component (which will present a download warning
dialog unless the user has checked the "Automatically download files
from now on" box).
For e10s compatibility, avoid using a modal dialog and instead use
a callback interface (nsIHelperAppWarningLauncher) to allow Torbutton
to indicate the user's desire to cancel or continue each request.
Other bugs fixed:
Bug 21766: Crash with e10s enabled while trying to download a file
Bug 21886: Download is stalled in non-e10s mode
Bug 22471: Downloading files via the PDF viewer download button is broken
Bug 22472: Fix FTP downloads when external helper app dialog is shown
Bug 22610: Avoid crashes when canceling external helper app downloads
Bug 22618: Downloading pdf file via file:/// is stalling
---
.../exthandler/nsExternalHelperAppService.cpp | 202 +++++++++++++++++----
uriloader/exthandler/nsExternalHelperAppService.h | 3 +
.../exthandler/nsIExternalHelperAppService.idl | 47 +++++
3 files changed, 217 insertions(+), 35 deletions(-)
diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
index 4ff7ed2e27cc..0dcc1d3ed6ab 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.cpp
+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
@@ -132,6 +132,9 @@ static const char NEVER_ASK_FOR_SAVE_TO_DISK_PREF[] =
static const char NEVER_ASK_FOR_OPEN_FILE_PREF[] =
"browser.helperApps.neverAsk.openFile";
+static const char WARNING_DIALOG_CONTRACT_ID[] =
+ "@torproject.org/torbutton-extAppBlocker;1";
+
// Helper functions for Content-Disposition headers
/**
@@ -388,6 +391,22 @@ static nsresult GetDownloadDirectory(nsIFile** _directory,
return NS_OK;
}
+static already_AddRefed<nsIInterfaceRequestor> GetDialogParentAux(
+ BrowsingContext* aBrowsingContext, nsIInterfaceRequestor* aWindowContext) {
+ nsCOMPtr<nsIInterfaceRequestor> dialogParent = aWindowContext;
+
+ if (!dialogParent && aBrowsingContext) {
+ dialogParent = do_QueryInterface(aBrowsingContext->GetDOMWindow());
+ }
+ if (!dialogParent && aBrowsingContext && XRE_IsParentProcess()) {
+ RefPtr<Element> element = aBrowsingContext->Top()->GetEmbedderElement();
+ if (element) {
+ dialogParent = do_QueryInterface(element->OwnerDoc()->GetWindow());
+ }
+ }
+ return dialogParent.forget();
+}
+
/**
* Structure for storing extension->type mappings.
* @see defaultMimeEntries
@@ -544,6 +563,111 @@ static const nsDefaultMimeTypeEntry nonDecodableExtensions[] = {
{APPLICATION_COMPRESS, "z"},
{APPLICATION_GZIP, "svgz"}};
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+// begin nsExternalLoadURIHandler class definition and implementation
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+class nsExternalLoadURIHandler final : public nsIHelperAppWarningLauncher {
+ public:
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_DECL_NSIHELPERAPPWARNINGLAUNCHER
+
+ nsExternalLoadURIHandler(nsIHandlerInfo* aHandlerInfo, nsIURI* aURI,
+ nsIPrincipal* aTriggeringPrincipal,
+ BrowsingContext* aBrowsingContext);
+
+ protected:
+ ~nsExternalLoadURIHandler();
+
+ nsCOMPtr<nsIHandlerInfo> mHandlerInfo;
+ nsCOMPtr<nsIURI> mURI;
+ nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
+ RefPtr<BrowsingContext> mBrowsingContext;
+ nsCOMPtr<nsIHelperAppWarningDialog> mWarningDialog;
+};
+
+NS_IMPL_ADDREF(nsExternalLoadURIHandler)
+NS_IMPL_RELEASE(nsExternalLoadURIHandler)
+
+NS_INTERFACE_MAP_BEGIN(nsExternalLoadURIHandler)
+ NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIHelperAppWarningLauncher)
+ NS_INTERFACE_MAP_ENTRY(nsIHelperAppWarningLauncher)
+NS_INTERFACE_MAP_END
+
+nsExternalLoadURIHandler::nsExternalLoadURIHandler(
+ nsIHandlerInfo* aHandlerInfo, nsIURI* aURI,
+ nsIPrincipal* aTriggeringPrincipal, BrowsingContext* aBrowsingContext)
+ : mHandlerInfo(aHandlerInfo),
+ mURI(aURI),
+ mTriggeringPrincipal(aTriggeringPrincipal),
+ mBrowsingContext(aBrowsingContext)
+
+{
+ nsresult rv = NS_OK;
+ mWarningDialog = do_CreateInstance(WARNING_DIALOG_CONTRACT_ID, &rv);
+ if (NS_SUCCEEDED(rv) && mWarningDialog) {
+ // This will create a reference cycle (the dialog holds a reference to us
+ // as nsIHelperAppWarningLauncher), which will be broken in ContinueRequest
+ // or CancelRequest.
+ nsCOMPtr<nsIInterfaceRequestor> dialogParent =
+ GetDialogParentAux(aBrowsingContext, nullptr);
+ rv = mWarningDialog->MaybeShow(this, dialogParent);
+ }
+
+ if (NS_FAILED(rv)) {
+ // If for some reason we could not open the download warning prompt,
+ // continue with the request.
+ ContinueRequest();
+ }
+}
+
+nsExternalLoadURIHandler::~nsExternalLoadURIHandler() {}
+
+NS_IMETHODIMP nsExternalLoadURIHandler::ContinueRequest() {
+ MOZ_ASSERT(mURI);
+ MOZ_ASSERT(mHandlerInfo);
+
+ // Break our reference cycle with the download warning dialog (set up in
+ // LoadURI).
+ mWarningDialog = nullptr;
+
+ nsHandlerInfoAction preferredAction;
+ mHandlerInfo->GetPreferredAction(&preferredAction);
+ bool alwaysAsk = true;
+ mHandlerInfo->GetAlwaysAskBeforeHandling(&alwaysAsk);
+
+ nsresult rv = NS_OK;
+ // If we are not supposed to ask, and the preferred action is to use
+ // a helper app or the system default, we just launch the URI.
+ if (!alwaysAsk && (preferredAction == nsIHandlerInfo::useHelperApp ||
+ preferredAction == nsIHandlerInfo::useSystemDefault)) {
+ rv = mHandlerInfo->LaunchWithURI(mURI, mBrowsingContext);
+ // We are not supposed to ask, but when file not found the user most likely
+ // uninstalled the application which handles the uri so we will continue
+ // by application chooser dialog.
+ if (rv != NS_ERROR_FILE_NOT_FOUND) {
+ return rv;
+ }
+ }
+
+ nsCOMPtr<nsIContentDispatchChooser> chooser =
+ do_CreateInstance("@mozilla.org/content-dispatch-chooser;1", &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ return chooser->Ask(mHandlerInfo, mURI, mTriggeringPrincipal,
+ mBrowsingContext,
+ nsIContentDispatchChooser::REASON_CANNOT_HANDLE);
+}
+
+NS_IMETHODIMP nsExternalLoadURIHandler::CancelRequest(nsresult aReason) {
+ NS_ENSURE_ARG(NS_FAILED(aReason));
+
+ // Break our reference cycle with the download warning dialog (set up in
+ // LoadURI).
+ mWarningDialog = nullptr;
+
+ return NS_OK;
+}
+
static StaticRefPtr<nsExternalHelperAppService> sExtHelperAppSvcSingleton;
/**
@@ -570,6 +694,9 @@ nsExternalHelperAppService::GetSingleton() {
return do_AddRef(sExtHelperAppSvcSingleton);
}
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+// nsExternalHelperAppService definition and implementation
+//////////////////////////////////////////////////////////////////////////////////////////////////////
NS_IMPL_ISUPPORTS(nsExternalHelperAppService, nsIExternalHelperAppService,
nsPIExternalAppLauncher, nsIExternalProtocolService,
nsIMIMEService, nsIObserver, nsISupportsWeakReference)
@@ -1003,30 +1130,13 @@ nsExternalHelperAppService::LoadURI(nsIURI* aURI,
rv = GetProtocolHandlerInfo(scheme, getter_AddRefs(handler));
NS_ENSURE_SUCCESS(rv, rv);
- nsHandlerInfoAction preferredAction;
- handler->GetPreferredAction(&preferredAction);
- bool alwaysAsk = true;
- handler->GetAlwaysAskBeforeHandling(&alwaysAsk);
-
- // if we are not supposed to ask, and the preferred action is to use
- // a helper app or the system default, we just launch the URI.
- if (!alwaysAsk && (preferredAction == nsIHandlerInfo::useHelperApp ||
- preferredAction == nsIHandlerInfo::useSystemDefault)) {
- rv = handler->LaunchWithURI(uri, aBrowsingContext);
- // We are not supposed to ask, but when file not found the user most likely
- // uninstalled the application which handles the uri so we will continue
- // by application chooser dialog.
- if (rv != NS_ERROR_FILE_NOT_FOUND) {
- return rv;
- }
+ RefPtr<nsExternalLoadURIHandler> h = new nsExternalLoadURIHandler(
+ handler, uri, aTriggeringPrincipal, aBrowsingContext);
+ if (!h) {
+ return NS_ERROR_OUT_OF_MEMORY;
}
- nsCOMPtr<nsIContentDispatchChooser> chooser =
- do_CreateInstance("@mozilla.org/content-dispatch-chooser;1", &rv);
- NS_ENSURE_SUCCESS(rv, rv);
-
- return chooser->Ask(handler, uri, aTriggeringPrincipal, aBrowsingContext,
- nsIContentDispatchChooser::REASON_CANNOT_HANDLE);
+ return NS_OK;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1171,6 +1281,7 @@ NS_INTERFACE_MAP_BEGIN(nsExternalAppHandler)
NS_INTERFACE_MAP_ENTRY(nsIStreamListener)
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
NS_INTERFACE_MAP_ENTRY(nsIHelperAppLauncher)
+ NS_INTERFACE_MAP_ENTRY(nsIHelperAppWarningLauncher)
NS_INTERFACE_MAP_ENTRY(nsICancelable)
NS_INTERFACE_MAP_ENTRY(nsIBackgroundFileSaverObserver)
NS_INTERFACE_MAP_ENTRY(nsINamed)
@@ -1532,18 +1643,7 @@ void nsExternalAppHandler::MaybeApplyDecodingForExtension(
already_AddRefed<nsIInterfaceRequestor>
nsExternalAppHandler::GetDialogParent() {
- nsCOMPtr<nsIInterfaceRequestor> dialogParent = mWindowContext;
-
- if (!dialogParent && mBrowsingContext) {
- dialogParent = do_QueryInterface(mBrowsingContext->GetDOMWindow());
- }
- if (!dialogParent && mBrowsingContext && XRE_IsParentProcess()) {
- RefPtr<Element> element = mBrowsingContext->Top()->GetEmbedderElement();
- if (element) {
- dialogParent = do_QueryInterface(element->OwnerDoc()->GetWindow());
- }
- }
- return dialogParent.forget();
+ return GetDialogParentAux(mBrowsingContext, mWindowContext);
}
NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
@@ -1651,6 +1751,29 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
MOZ_ASSERT(NS_SUCCEEDED(rv));
}
+ mWarningDialog = do_CreateInstance(WARNING_DIALOG_CONTRACT_ID, &rv);
+ if (NS_SUCCEEDED(rv) && mWarningDialog) {
+ // This will create a reference cycle (the dialog holds a reference to us
+ // as nsIHelperAppWarningLauncher), which will be broken in ContinueRequest
+ // or CancelRequest.
+ nsCOMPtr<nsIInterfaceRequestor> dialogParent = GetDialogParent();
+ rv = mWarningDialog->MaybeShow(this, dialogParent);
+ }
+
+ if (NS_FAILED(rv)) {
+ // If for some reason we could not open the download warning prompt,
+ // continue with the request.
+ ContinueRequest();
+ }
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsExternalAppHandler::ContinueRequest() {
+ // Break our reference cycle with the download warning dialog (set up in
+ // OnStartRequest).
+ mWarningDialog = nullptr;
+
// now that the temp file is set up, find out if we need to invoke a dialog
// asking the user what they want us to do with this content...
@@ -1736,6 +1859,7 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
action = nsIMIMEInfo::saveToDisk;
}
+ nsresult rv = NS_OK;
if (alwaysAsk) {
// Display the dialog
mDialog = do_CreateInstance(NS_HELPERAPPLAUNCHERDLG_CONTRACTID, &rv);
@@ -1793,6 +1917,14 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
return NS_OK;
}
+NS_IMETHODIMP nsExternalAppHandler::CancelRequest(nsresult aReason) {
+ // Break our reference cycle with the download warning dialog (set up in
+ // OnStartRequest).
+ mWarningDialog = nullptr;
+
+ return Cancel(aReason);
+}
+
// Convert error info into proper message text and send OnStatusChange
// notification to the dialog progress listener or nsITransfer implementation.
void nsExternalAppHandler::SendStatusChange(ErrorType type, nsresult rv,
@@ -2456,7 +2588,7 @@ NS_IMETHODIMP nsExternalAppHandler::Cancel(nsresult aReason) {
}
// Break our reference cycle with the helper app dialog (set up in
- // OnStartRequest)
+ // ContinueRequest)
mDialog = nullptr;
mRequest = nullptr;
diff --git a/uriloader/exthandler/nsExternalHelperAppService.h b/uriloader/exthandler/nsExternalHelperAppService.h
index f2bd67f64ccd..8c2d8817ac7b 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.h
+++ b/uriloader/exthandler/nsExternalHelperAppService.h
@@ -203,6 +203,7 @@ class nsExternalHelperAppService : public nsIExternalHelperAppService,
*/
class nsExternalAppHandler final : public nsIStreamListener,
public nsIHelperAppLauncher,
+ public nsIHelperAppWarningLauncher,
public nsIBackgroundFileSaverObserver,
public nsINamed {
public:
@@ -210,6 +211,7 @@ class nsExternalAppHandler final : public nsIStreamListener,
NS_DECL_NSISTREAMLISTENER
NS_DECL_NSIREQUESTOBSERVER
NS_DECL_NSIHELPERAPPLAUNCHER
+ NS_DECL_NSIHELPERAPPWARNINGLAUNCHER
NS_DECL_NSICANCELABLE
NS_DECL_NSIBACKGROUNDFILESAVEROBSERVER
NS_DECL_NSINAMED
@@ -460,6 +462,7 @@ class nsExternalAppHandler final : public nsIStreamListener,
nsCOMPtr<nsITransfer> mTransfer;
nsCOMPtr<nsIHelperAppLauncherDialog> mDialog;
+ nsCOMPtr<nsIHelperAppWarningDialog> mWarningDialog;
/**
diff --git a/uriloader/exthandler/nsIExternalHelperAppService.idl b/uriloader/exthandler/nsIExternalHelperAppService.idl
index ea8b9b08f3e6..8b58671f7597 100644
--- a/uriloader/exthandler/nsIExternalHelperAppService.idl
+++ b/uriloader/exthandler/nsIExternalHelperAppService.idl
@@ -182,3 +182,50 @@ interface nsIHelperAppLauncher : nsICancelable
*/
readonly attribute uint64_t browsingContextId;
};
+
+/**
+ * nsIHelperAppWarningLauncher is implemented by two classes:
+ * nsExternalLoadURIHandler
+ * nsExternalAppHandler
+ */
+[scriptable, uuid(cffd508b-4aaf-43ad-99c6-671d35cbc558)]
+interface nsIHelperAppWarningLauncher : nsISupports
+{
+ /**
+ * Callback invoked by the external app warning dialog to continue the
+ * request.
+ * NOTE: This will release the reference to the nsIHelperAppWarningDialog.
+ */
+ void continueRequest();
+
+ /**
+ * Callback invoked by the external app warning dialog to cancel the request.
+ * NOTE: This will release the reference to the nsIHelperAppWarningDialog.
+ *
+ * @param aReason
+ * Pass a failure code to indicate the reason why this operation is
+ * being canceled. It is an error to pass a success code.
+ */
+ void cancelRequest(in nsresult aReason);
+};
+
+/**
+ * nsIHelperAppWarningDialog is implemented by Torbutton's external app
+ * blocker (src/components/external-app-blocker.js).
+ */
+[scriptable, uuid(f4899a3f-0df3-42cc-9db8-bdf599e5a208)]
+interface nsIHelperAppWarningDialog : nsISupports
+{
+ /**
+ * Possibly show a launch warning dialog (it will not be shown if the user
+ * has chosen to not see the warning again).
+ *
+ * @param aLauncher
+ * A nsIHelperAppWarningLauncher to be invoked after the user confirms
+ * or cancels the download.
+ * @param aWindowContext
+ * The window associated with the download.
+ */
+ void maybeShow(in nsIHelperAppWarningLauncher aLauncher,
+ in nsISupports aWindowContext);
+};
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 16285: Exclude ClearKey system for now
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit ea0b88f429faa02a1f1d61d14383cd19c27e4c56
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon May 22 12:44:40 2017 +0000
Bug 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
---
browser/installer/package-manifest.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 792acb870afa..53b0b7ddf731 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -465,8 +465,8 @@ bin/libfreebl_64int_3.so
#endif
; media
-@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
-@RESPATH@/gmp-clearkey/0.1/manifest.json
+;@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
+;@RESPATH@/gmp-clearkey/0.1/manifest.json
#ifdef MOZ_DMD
; DMD
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 21431: Clean-up system extensions shipped in Firefox
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 6cb03649ffe62f21e369d98b508bfc275354b364
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue May 23 17:05:29 2017 -0400
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
---
browser/components/BrowserGlue.jsm | 6 ++++++
browser/extensions/moz.build | 5 -----
browser/installer/package-manifest.in | 1 -
browser/locales/Makefile.in | 8 --------
browser/locales/jar.mn | 7 -------
5 files changed, 6 insertions(+), 21 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 3b7d8d6e0309..3363e24a9b56 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -2076,6 +2076,9 @@ BrowserGlue.prototype = {
const ID = "screenshots(a)mozilla.org";
const _checkScreenshotsPref = async () => {
let addon = await AddonManager.getAddonByID(ID);
+ if (!addon) {
+ return;
+ }
let disabled = Services.prefs.getBoolPref(PREF, false);
if (disabled) {
await addon.disable({ allowSystemAddons: true });
@@ -2092,6 +2095,9 @@ BrowserGlue.prototype = {
const ID = "webcompat-reporter(a)mozilla.org";
Services.prefs.addObserver(PREF, async () => {
let addon = await AddonManager.getAddonByID(ID);
+ if (!addon) {
+ return;
+ }
let enabled = Services.prefs.getBoolPref(PREF, false);
if (enabled && !addon.isActive) {
await addon.enable({ allowSystemAddons: true });
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
index fd2e65d01f02..499c59b8d6a5 100644
--- a/browser/extensions/moz.build
+++ b/browser/extensions/moz.build
@@ -5,12 +5,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DIRS += [
- 'doh-rollout',
- 'formautofill',
'pdfjs',
- 'screenshots',
- 'webcompat',
- 'report-site-issue'
]
if not CONFIG['TOR_BROWSER_DISABLE_TOR_LAUNCHER']:
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 53b0b7ddf731..ad7dd023a92e 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -268,7 +268,6 @@
@RESPATH@/browser/chrome/icons/default/default64.png
@RESPATH@/browser/chrome/icons/default/default128.png
#endif
-@RESPATH@/browser/features/*
; [DevTools Startup Files]
@RESPATH@/browser/chrome/devtools-startup@JAREXT@
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
index 05f0242c5248..1fdf34d9460f 100644
--- a/browser/locales/Makefile.in
+++ b/browser/locales/Makefile.in
@@ -58,10 +58,6 @@ libs-%:
@$(MAKE) -C ../../toolkit/locales libs-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
-ifneq (,$(wildcard ../extensions/formautofill/locales))
- @$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
-endif
- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
@@ -75,14 +71,10 @@ chrome-%:
@$(MAKE) -C ../../toolkit/locales chrome-$*
@$(MAKE) -C ../../services/sync/locales chrome AB_CD=$*
@$(MAKE) -C ../../extensions/spellcheck/locales chrome AB_CD=$*
-ifneq (,$(wildcard ../extensions/formautofill/locales))
- @$(MAKE) -C ../extensions/formautofill/locales chrome AB_CD=$*
-endif
@$(MAKE) -C ../../devtools/client/locales chrome AB_CD=$*
@$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
@$(MAKE) chrome AB_CD=$*
@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
package-win32-installer: $(SUBMAKEFILES)
$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
index 31e2d3d870e6..ff577dfd4e7c 100644
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -60,10 +60,3 @@
locale/browser/newInstall.dtd (%chrome/browser/newInstall.dtd)
locale/browser/brandings.dtd (%chrome/browser/brandings.dtd)
locale/browser/fxmonitor.properties (%chrome/browser/fxmonitor.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:
-% manifest features/chrome.manifest
-#endif
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 16940: After update, load local change notes.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 1b3756eb8a8557c2526dcdfb35c78638c3db4cdd
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Nov 25 11:36:20 2015 -0500
Bug 16940: After update, load local change notes.
Add an about:tbupdate page that displays the first section from
TorBrowser/Docs/ChangeLog.txt and includes a link to the remote
post-update page (typically our blog entry for the release).
Always load about:tbupdate in a content process, but implement the
code that reads the file system (changelog) in the chrome process
for compatibility with future sandboxing efforts.
Also fix bug 29440. Now about:tbupdate is styled as a fairly simple
changelog page that is designed to be displayed via a link that is on
about:tor.
---
browser/actors/AboutTBUpdateChild.jsm | 53 ++++++++
browser/actors/moz.build | 5 +
.../base/content/abouttbupdate/aboutTBUpdate.css | 74 ++++++++++++
.../base/content/abouttbupdate/aboutTBUpdate.js | 10 ++
.../base/content/abouttbupdate/aboutTBUpdate.xhtml | 39 ++++++
browser/base/content/browser-siteIdentity.js | 2 +-
browser/base/content/browser.js | 4 +
browser/base/jar.mn | 5 +
browser/components/BrowserContentHandler.jsm | 55 ++++++---
browser/components/BrowserGlue.jsm | 25 ++++
browser/components/about/AboutRedirector.cpp | 6 +
browser/components/about/components.conf | 3 +
browser/components/moz.build | 5 +-
.../locales/en-US/chrome/browser/aboutTBUpdate.dtd | 8 ++
browser/locales/jar.mn | 3 +
browser/modules/AboutTBUpdate.jsm | 134 +++++++++++++++++++++
browser/modules/moz.build | 5 +
17 files changed, 420 insertions(+), 16 deletions(-)
diff --git a/browser/actors/AboutTBUpdateChild.jsm b/browser/actors/AboutTBUpdateChild.jsm
new file mode 100644
index 000000000000..91bb4dbba888
--- /dev/null
+++ b/browser/actors/AboutTBUpdateChild.jsm
@@ -0,0 +1,53 @@
+// Copyright (c) 2019, The Tor Project, Inc.
+// See LICENSE for licensing information.
+//
+// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
+
+var EXPORTED_SYMBOLS = ["AboutTBUpdateChild"];
+
+const {ActorChild} = ChromeUtils.import("resource://gre/modules/ActorChild.jsm");
+
+class AboutTBUpdateChild extends ActorChild {
+ receiveMessage(aMessage) {
+ if (aMessage.name == "AboutTBUpdate:Update")
+ this.onUpdate(aMessage.data);
+ }
+
+ handleEvent(aEvent) {
+ switch (aEvent.type) {
+ case "AboutTBUpdateLoad":
+ this.onPageLoad();
+ break;
+ case "pagehide":
+ this.onPageHide(aEvent);
+ break;
+ }
+ }
+
+ // aData may contain the following string properties:
+ // version
+ // releaseDate
+ // moreInfoURL
+ // releaseNotes
+ onUpdate(aData) {
+ let doc = this.content.document;
+ doc.getElementById("version-content").textContent = aData.version;
+ if (aData.releaseDate) {
+ doc.body.setAttribute("havereleasedate", "true");
+ doc.getElementById("releasedate-content").textContent = aData.releaseDate;
+ }
+ if (aData.moreInfoURL)
+ doc.getElementById("infolink").setAttribute("href", aData.moreInfoURL);
+ doc.getElementById("releasenotes-content").textContent = aData.releaseNotes;
+ }
+
+ onPageLoad() {
+ this.mm.sendAsyncMessage("AboutTBUpdate:RequestUpdate");
+ }
+
+ onPageHide(aEvent) {
+ if (aEvent.target.defaultView.frameElement) {
+ return;
+ }
+ }
+}
diff --git a/browser/actors/moz.build b/browser/actors/moz.build
index 4b903146699e..e70f0f09fe3a 100644
--- a/browser/actors/moz.build
+++ b/browser/actors/moz.build
@@ -74,3 +74,8 @@ FINAL_TARGET_FILES.actors += [
'WebRTCChild.jsm',
'WebRTCParent.jsm',
]
+
+if CONFIG['TOR_BROWSER_UPDATE']:
+ FINAL_TARGET_FILES.actors += [
+ 'AboutTBUpdateChild.jsm',
+ ]
diff --git a/browser/base/content/abouttbupdate/aboutTBUpdate.css b/browser/base/content/abouttbupdate/aboutTBUpdate.css
new file mode 100644
index 000000000000..7c1a34b77f17
--- /dev/null
+++ b/browser/base/content/abouttbupdate/aboutTBUpdate.css
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019, The Tor Project, Inc.
+ * See LICENSE for licensing information.
+ *
+ * vim: set sw=2 sts=2 ts=8 et syntax=css:
+ */
+
+:root {
+ --abouttor-text-color: white;
+ --abouttor-bg-toron-color: #420C5D;
+}
+
+body {
+ font-family: Helvetica, Arial, sans-serif;
+ color: var(--abouttor-text-color);
+ background-color: var(--abouttor-bg-toron-color);
+ background-attachment: fixed;
+ background-size: 100% 100%;
+}
+
+a {
+ color: var(--abouttor-text-color);
+}
+
+.two-column-grid {
+ display: inline-grid;
+ grid-template-columns: auto auto;
+ grid-column-gap: 50px;
+ margin: 10px 0px 0px 50px;
+}
+
+.two-column-grid div {
+ margin-top: 40px;
+ align-self: baseline; /* Align baseline of text across the row. */
+}
+
+.label-column {
+ font-size: 14px;
+ font-weight: 400;
+}
+
+/*
+ * Use a reduced top margin to bring the row that contains the
+ * "visit our website" link closer to the row that precedes it. This
+ * looks better because the "visit our website" row does not have a
+ * label in the left column.
+ */
+div.more-info-row {
+ margin-top: 5px;
+ font-size: 14px;
+}
+
+#version-content {
+ font-size: 50px;
+ font-weight: 300;
+}
+
+body:not([havereleasedate]) .release-date-cell {
+ display: none;
+}
+
+#releasedate-content {
+ font-size: 17px;
+}
+
+#releasenotes-label {
+ align-self: start; /* Anchor "Release Notes" label at the top. */
+}
+
+#releasenotes-content {
+ font-family: monospace;
+ font-size: 15px;
+ white-space: pre;
+}
diff --git a/browser/base/content/abouttbupdate/aboutTBUpdate.js b/browser/base/content/abouttbupdate/aboutTBUpdate.js
new file mode 100644
index 000000000000..da7553f0ae81
--- /dev/null
+++ b/browser/base/content/abouttbupdate/aboutTBUpdate.js
@@ -0,0 +1,10 @@
+// Copyright (c) 2019, The Tor Project, Inc.
+// See LICENSE for licensing information.
+//
+// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
+
+
+addEventListener("load", () => {
+ let event = new CustomEvent("AboutTBUpdateLoad", { bubbles: true });
+ document.dispatchEvent(event);
+});
diff --git a/browser/base/content/abouttbupdate/aboutTBUpdate.xhtml b/browser/base/content/abouttbupdate/aboutTBUpdate.xhtml
new file mode 100644
index 000000000000..8489cfef5083
--- /dev/null
+++ b/browser/base/content/abouttbupdate/aboutTBUpdate.xhtml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html [
+ <!ENTITY % htmlDTD
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "DTD/xhtml1-strict.dtd">
+ %htmlDTD;
+ <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+ %globalDTD;
+ <!ENTITY % tbUpdateDTD SYSTEM "chrome://browser/locale/aboutTBUpdate.dtd">
+ %tbUpdateDTD;
+]>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" />
+ <title>&aboutTBUpdate.changelogTitle;</title>
+ <link rel="stylesheet" type="text/css"
+ href="chrome://browser/content/abouttbupdate/aboutTBUpdate.css"/>
+ <script src="chrome://browser/content/abouttbupdate/aboutTBUpdate.js"
+ type="text/javascript"/>
+</head>
+<body dir="&locale.dir;">
+<div class="two-column-grid">
+ <div class="label-column">&aboutTBUpdate.version;</div>
+ <div id="version-content"/>
+
+ <div class="label-column release-date-cell">&aboutTBUpdate.releaseDate;</div>
+ <div id="releasedate-content" class="release-date-cell"/>
+
+ <div class="more-info-row"/>
+ <div class="more-info-row">&aboutTBUpdate.linkPrefix;<a id="infolink">&aboutTBUpdate.linkLabel;</a>&aboutTBUpdate.linkSuffix;</div>
+
+ <div id="releasenotes-label"
+ class="label-column">&aboutTBUpdate.releaseNotes;</div>
+ <div id="releasenotes-content"></div>
+</div>
+</body>
+</html>
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 29f95ae4129f..1d6f9555b33f 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -57,7 +57,7 @@ var gIdentityHandler = {
* RegExp used to decide if an about url should be shown as being part of
* the browser UI.
*/
- _secureInternalUIWhitelist: /^(?:accounts|addons|cache|certificate|config|crashes|downloads|license|logins|preferences|protections|rights|sessionrestore|support|welcomeback)(?:[?#]|$)/i,
+ _secureInternalUIWhitelist: (AppConstants.TOR_BROWSER_UPDATE ? /^(?:accounts|addons|cache|certificate|config|crashes|downloads|license|logins|preferences|protections|rights|sessionrestore|support|welcomeback|tor|tbupdate)(?:[?#]|$)/i : /^(?:accounts|addons|cache|certificate|config|crashes|downloads|license|logins|preferences|protections|rights|sessionrestore|support|welcomeback|tor)(?:[?#]|$)/i),
/**
* Whether the established HTTPS connection is considered "broken".
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 3c342dedd5d4..036d92e131da 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -631,6 +631,10 @@ var gInitialPages = [
"about:newinstall",
];
+if (AppConstants.TOR_BROWSER_UPDATE) {
+ gInitialPages.push("about:tbupdate");
+}
+
function isInitialPage(url) {
if (!(url instanceof Ci.nsIURI)) {
try {
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
index a2e1f9c259d2..df65349796b5 100644
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -29,6 +29,11 @@ browser.jar:
content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css)
content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
+#ifdef TOR_BROWSER_UPDATE
+ content/browser/abouttbupdate/aboutTBUpdate.xhtml (content/abouttbupdate/aboutTBUpdate.xhtml)
+ content/browser/abouttbupdate/aboutTBUpdate.js (content/abouttbupdate/aboutTBUpdate.js)
+ content/browser/abouttbupdate/aboutTBUpdate.css (content/abouttbupdate/aboutTBUpdate.css)
+#endif
* content/browser/browser.css (content/browser.css)
content/browser/browser.js (content/browser.js)
* content/browser/browser.xhtml (content/browser.xhtml)
diff --git a/browser/components/BrowserContentHandler.jsm b/browser/components/BrowserContentHandler.jsm
index 9f5b6ab0218c..1cc1015414fc 100644
--- a/browser/components/BrowserContentHandler.jsm
+++ b/browser/components/BrowserContentHandler.jsm
@@ -650,6 +650,23 @@ nsBrowserContentHandler.prototype = {
}
}
+ // Retrieve the home page early so we can compare it against about:tor
+ // to decide whether or not we need an override page (second tab) after
+ // an update was applied.
+ var startPage = "";
+ try {
+ var choice = prefb.getIntPref("browser.startup.page");
+ if (choice == 1 || choice == 3) {
+ startPage = HomePage.get();
+ }
+ } catch (e) {
+ Cu.reportError(e);
+ }
+
+ if (startPage == "about:blank") {
+ startPage = "";
+ }
+
var override;
var overridePage = "";
var additionalPage = "";
@@ -701,6 +718,16 @@ nsBrowserContentHandler.prototype = {
// into account because that requires waiting for the session file
// to be read. If a crash occurs after updating, before restarting,
// we may open the startPage in addition to restoring the session.
+ //
+ // Tor Browser: Instead of opening the post-update "override page"
+ // directly, we ensure that about:tor will be opened in a special
+ // mode that notifies the user that their browser was updated.
+ // The about:tor page will provide a link to the override page
+ // where the user can learn more about the update, as well as a
+ // link to the Tor Browser changelog page (about:tbupdate). The
+ // override page URL comes from the openURL attribute within the
+ // updates.xml file or, if no showURL action is present, from the
+ // startup.homepage_override_url pref.
willRestoreSession = SessionStartup.isAutomaticRestoreEnabled();
overridePage = Services.urlFormatter.formatURLPref(
@@ -720,6 +747,20 @@ nsBrowserContentHandler.prototype = {
overridePage = overridePage.replace("%OLD_VERSION%", old_mstone);
overridePage = overridePage.replace("%OLD_TOR_BROWSER_VERSION%",
old_tbversion);
+#ifdef TOR_BROWSER_UPDATE
+ if (overridePage)
+ {
+ prefb.setCharPref("torbrowser.post_update.url", overridePage);
+ prefb.setBoolPref("torbrowser.post_update.shouldNotify", true);
+ // If the user's homepage is about:tor, we will inform them
+ // about the update on that page; otherwise, we arrange to
+ // open about:tor in a secondary tab.
+ if (startPage === "about:tor")
+ overridePage = "";
+ else
+ overridePage = "about:tor";
+ }
+#endif
break;
case OVERRIDE_NEW_BUILD_ID:
if (UpdateManager.activeUpdate) {
@@ -792,20 +833,6 @@ nsBrowserContentHandler.prototype = {
}
}
- var startPage = "";
- try {
- var choice = prefb.getIntPref("browser.startup.page");
- if (choice == 1 || choice == 3) {
- startPage = HomePage.get();
- }
- } catch (e) {
- Cu.reportError(e);
- }
-
- if (startPage == "about:blank") {
- startPage = "";
- }
-
let skipStartPage =
(override == OVERRIDE_NEW_PROFILE ||
override == OVERRIDE_ALTERNATE_PROFILE) &&
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 0a3555f26432..3b7d8d6e0309 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -560,6 +560,22 @@ let LEGACY_ACTORS = {
},
};
+if (AppConstants.TOR_BROWSER_UPDATE) {
+ LEGACY_ACTORS["AboutTBUpdate"] = {
+ child: {
+ module: "resource:///actors/AboutTBUpdateChild.jsm",
+ events: {
+ "AboutTBUpdateLoad": {wantUntrusted: true},
+ "pagehide": {capture: true},
+ },
+ matches: ["about:tbupdate"],
+ messages: [
+ "AboutTBUpdate:Update",
+ ],
+ }
+ };
+}
+
(function earlyBlankFirstPaint() {
if (
AppConstants.platform == "macosx" ||
@@ -747,6 +763,11 @@ if (AppConstants.MOZ_CRASHREPORTER) {
});
}
+if (AppConstants.TOR_BROWSER_UPDATE) {
+ XPCOMUtils.defineLazyModuleGetter(this, "AboutTBUpdate",
+ "resource:///modules/AboutTBUpdate.jsm");
+}
+
XPCOMUtils.defineLazyGetter(this, "gBrandBundle", function() {
return Services.strings.createBundle(
"chrome://branding/locale/brand.properties"
@@ -2200,6 +2221,10 @@ BrowserGlue.prototype = {
AsanReporter.init();
}
+ if (AppConstants.TOR_BROWSER_UPDATE) {
+ AboutTBUpdate.init();
+ }
+
Sanitizer.onStartup();
this._scheduleStartupIdleTasks();
this._lateTasksIdleObserver = (idleService, topic, data) => {
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
index 1471e10bf0db..933d519bd959 100644
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -120,6 +120,12 @@ static const RedirEntry kRedirMap[] = {
nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS},
{"pioneer", "chrome://browser/content/pioneer.html",
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
+#ifdef TOR_BROWSER_UPDATE
+ {"tbupdate", "chrome://browser/content/abouttbupdate/aboutTBUpdate.xhtml",
+ nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+ nsIAboutModule::URI_MUST_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
+ nsIAboutModule::HIDE_FROM_ABOUTABOUT},
+#endif
};
static nsAutoCString GetAboutModuleName(nsIURI* aURI) {
diff --git a/browser/components/about/components.conf b/browser/components/about/components.conf
index bf0c6c096847..f31159d30e15 100644
--- a/browser/components/about/components.conf
+++ b/browser/components/about/components.conf
@@ -32,6 +32,9 @@ pages = [
'welcomeback',
]
+if defined('TOR_BROWSER_UPDATE'):
+ pages.append('tbupdate')
+
Classes = [
{
'cid': '{7e4bb6ad-2fc4-4dc6-89ef-23e8e5ccf980}',
diff --git a/browser/components/moz.build b/browser/components/moz.build
index c75c10b0c92d..cf3f566eba71 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -90,11 +90,14 @@ EXTRA_COMPONENTS += [
]
EXTRA_JS_MODULES += [
- 'BrowserContentHandler.jsm',
'BrowserGlue.jsm',
'distribution.js',
]
+EXTRA_PP_JS_MODULES += [
+ 'BrowserContentHandler.jsm',
+]
+
BROWSER_CHROME_MANIFESTS += [
'safebrowsing/content/test/browser.ini',
'tests/browser/browser.ini',
diff --git a/browser/locales/en-US/chrome/browser/aboutTBUpdate.dtd b/browser/locales/en-US/chrome/browser/aboutTBUpdate.dtd
new file mode 100644
index 000000000000..2d1e59b40eaf
--- /dev/null
+++ b/browser/locales/en-US/chrome/browser/aboutTBUpdate.dtd
@@ -0,0 +1,8 @@
+<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser Changelog">
+<!ENTITY aboutTBUpdate.updated "Tor Browser has been updated.">
+<!ENTITY aboutTBUpdate.linkPrefix "For the most up-to-date information about this release, ">
+<!ENTITY aboutTBUpdate.linkLabel "visit our website">
+<!ENTITY aboutTBUpdate.linkSuffix ".">
+<!ENTITY aboutTBUpdate.version "Version">
+<!ENTITY aboutTBUpdate.releaseDate "Release Date">
+<!ENTITY aboutTBUpdate.releaseNotes "Release Notes">
diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
index ca892a187adf..31e2d3d870e6 100644
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -20,6 +20,9 @@
locale/browser/accounts.properties (%chrome/browser/accounts.properties)
locale/browser/app-extension-fields.properties (%chrome/browser/app-extension-fields.properties)
+#ifdef TOR_BROWSER_UPDATE
+ locale/browser/aboutTBUpdate.dtd (%chrome/browser/aboutTBUpdate.dtd)
+#endif
locale/browser/browser.dtd (%chrome/browser/browser.dtd)
locale/browser/baseMenuOverlay.dtd (%chrome/browser/baseMenuOverlay.dtd)
locale/browser/browser.properties (%chrome/browser/browser.properties)
diff --git a/browser/modules/AboutTBUpdate.jsm b/browser/modules/AboutTBUpdate.jsm
new file mode 100644
index 000000000000..996e2e8394aa
--- /dev/null
+++ b/browser/modules/AboutTBUpdate.jsm
@@ -0,0 +1,134 @@
+// Copyright (c) 2019, The Tor Project, Inc.
+// See LICENSE for licensing information.
+//
+// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
+
+"use strict";
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+this.EXPORTED_SYMBOLS = [ "AboutTBUpdate" ];
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/NetUtil.jsm");
+
+const kRequestUpdateMessageName = "AboutTBUpdate:RequestUpdate";
+const kSendUpdateMessageName = "AboutTBUpdate:Update";
+
+#expand const TOR_BROWSER_VERSION = __TOR_BROWSER_VERSION_QUOTED__;
+
+/**
+ * This code provides services to the about:tbupdate page. Whenever
+ * about:tbupdate needs to do something chrome-privileged, it sends a
+ * message that's handled here. It is modeled after Mozilla's about:home
+ * implementation.
+ */
+var AboutTBUpdate = {
+ init: function() {
+ Services.mm.addMessageListener(kRequestUpdateMessageName, this);
+ },
+
+ receiveMessage: function(aMessage) {
+ if (aMessage.name == kRequestUpdateMessageName)
+ this.sendAboutTBUpdateData(aMessage.target);
+ },
+
+ sendAboutTBUpdateData: function(aTarget) {
+ let data = this.releaseNoteInfo;
+ data.moreInfoURL = this.moreInfoURL;
+ if (aTarget && aTarget.messageManager) {
+ aTarget.messageManager.sendAsyncMessage(kSendUpdateMessageName, data);
+ } else {
+ Services.mm.broadcastAsyncMessage(kSendUpdateMessageName, data);
+ }
+ },
+
+ get moreInfoURL() {
+ try {
+ return Services.prefs.getCharPref("torbrowser.post_update.url");
+ } catch (e) {}
+
+ // Use the default URL as a fallback.
+ return Services.urlFormatter.formatURLPref("startup.homepage_override_url");
+ },
+
+ // Read the text from the beginning of the changelog file that is located
+ // at TorBrowser/Docs/ChangeLog.txt and return an object that contains
+ // the following properties:
+ // version e.g., Tor Browser 8.5
+ // releaseDate e.g., March 31 2019
+ // releaseNotes details of changes (lines 2 - end of ChangeLog.txt)
+ // We attempt to parse the first line of ChangeLog.txt to extract the
+ // version and releaseDate. If parsing fails, we return the entire first
+ // line in version and omit releaseDate.
+ //
+ // On Mac OS, when building with --enable-tor-browser-data-outside-app-dir
+ // to support Gatekeeper signing, the ChangeLog.txt file is located in
+ // TorBrowser.app/Contents/Resources/TorBrowser/Docs/.
+ get releaseNoteInfo() {
+ let info = {};
+
+ try {
+#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ // "XREExeF".parent is the directory that contains firefox, i.e.,
+ // Browser/ or, on Mac OS, TorBrowser.app/Contents/MacOS/.
+ let f = Services.dirsvc.get("XREExeF", Ci.nsIFile).parent;
+#ifdef XP_MACOSX
+ f = f.parent;
+ f.append("Resources");
+#endif
+ f.append("TorBrowser");
+#else
+ // "DefProfRt" is .../TorBrowser/Data/Browser
+ let f = Cc["@mozilla.org/file/directory_service;1"]
+ .getService(Ci.nsIProperties).get("DefProfRt", Ci.nsIFile);
+ f = f.parent.parent; // Remove "Data/Browser"
+#endif
+ f.append("Docs");
+ f.append("ChangeLog.txt");
+
+ let fs = Cc["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Ci.nsIFileInputStream);
+ fs.init(f, -1, 0, 0);
+ let s = NetUtil.readInputStreamToString(fs, fs.available());
+ fs.close();
+
+ // Truncate at the first empty line.
+ s = s.replace(/[\r\n][\r\n][\s\S]*$/m, "");
+
+ // Split into first line (version plus releaseDate) and
+ // remainder (releaseNotes).
+ // This first match() uses multiline mode with two capture groups:
+ // first line: (.*$)
+ // remaining lines: ([\s\S]+)
+ // [\s\S] matches all characters including end of line. This trick
+ // is needed because when using JavaScript regex in multiline mode,
+ // . does not match an end of line character.
+ let matchArray = s.match(/(.*$)\s*([\s\S]+)/m);
+ if (matchArray && (matchArray.length == 3)) {
+ info.releaseNotes = matchArray[2];
+ let line1 = matchArray[1];
+ // Extract the version and releaseDate. The first line looks like:
+ // Tor Browser 8.5 -- May 1 2019
+ // The regex uses two capture groups:
+ // text that does not include a hyphen: (^[^-]*)
+ // remaining text: (.*$)
+ // In between we match optional whitespace, one or more hyphens, and
+ // optional whitespace by using: \s*-+\s*
+ matchArray = line1.match(/(^[^-]*)\s*-+\s*(.*$)/);
+ if (matchArray && (matchArray.length == 3)) {
+ info.version = matchArray[1];
+ info.releaseDate = matchArray[2];
+ } else {
+ info.version = line1; // Match failed: return entire line in version.
+ }
+ } else {
+ info.releaseNotes = s; // Only one line: use as releaseNotes.
+ }
+ } catch (e) {}
+
+ return info;
+ },
+};
diff --git a/browser/modules/moz.build b/browser/modules/moz.build
index 88f2a55d6f49..61fe5371e48f 100644
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -160,6 +160,11 @@ EXTRA_JS_MODULES += [
'ZoomUI.jsm',
]
+if CONFIG['TOR_BROWSER_UPDATE']:
+ EXTRA_PP_JS_MODULES += [
+ 'AboutTBUpdate.jsm',
+ ]
+
if CONFIG['MOZ_ASAN_REPORTER']:
EXTRA_JS_MODULES += [
'AsanReporter.jsm',
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 19121: reinstate the update.xml hash check
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit fd724a2ece69e5b859b6da7297abe93c81799c58
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Mon Apr 23 15:22:57 2018 -0400
Bug 19121: reinstate the update.xml hash check
Revert most changes from Mozilla Bug 1373267 "Remove hashFunction and
hashValue attributes from nsIUpdatePatch and code related to these
attributes." Changes to the tests were not reverted; the tests have
been changed significantly and we do not run automated updater tests
for Tor Browser at this time.
Also partial revert of commit f1241db6986e4b54473a1ed870f7584c75d51122.
Revert the nsUpdateService.js changes from Mozilla Bug 862173 "don't
verify mar file hash when using mar signing to verify the mar file
(lessens main thread I/O)."
Changes to the tests were not reverted; the tests have been changed
significantly and we do not run automated updater tests for
Tor Browser at this time.
We kept the addition to the AppConstants API in case other JS code
references it in the future.
---
toolkit/modules/AppConstants.jsm | 7 ++++
toolkit/mozapps/update/UpdateService.jsm | 63 ++++++++++++++++++++++++++++-
toolkit/mozapps/update/UpdateTelemetry.jsm | 1 +
toolkit/mozapps/update/nsIUpdateService.idl | 11 +++++
4 files changed, 81 insertions(+), 1 deletion(-)
diff --git a/toolkit/modules/AppConstants.jsm b/toolkit/modules/AppConstants.jsm
index cd8ca2659626..84516f0d4c66 100644
--- a/toolkit/modules/AppConstants.jsm
+++ b/toolkit/modules/AppConstants.jsm
@@ -212,6 +212,13 @@ this.AppConstants = Object.freeze({
false,
#endif
+ MOZ_VERIFY_MAR_SIGNATURE:
+#ifdef MOZ_VERIFY_MAR_SIGNATURE
+ true,
+#else
+ false,
+#endif
+
MOZ_MAINTENANCE_SERVICE:
#ifdef MOZ_MAINTENANCE_SERVICE
true,
diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm
index 1dc86a073646..ead961ab5252 100644
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -742,6 +742,20 @@ function LOG(string) {
}
}
+/**
+ * Convert a string containing binary values to hex.
+ */
+function binaryToHex(input) {
+ var result = "";
+ for (var i = 0; i < input.length; ++i) {
+ var hex = input.charCodeAt(i).toString(16);
+ if (hex.length == 1)
+ hex = "0" + hex;
+ result += hex;
+ }
+ return result;
+}
+
/**
* Gets the specified directory at the specified hierarchy under the
* update root directory and creates it if it doesn't exist.
@@ -1534,6 +1548,8 @@ function UpdatePatch(patch) {
}
break;
case "finalURL":
+ case "hashFunction":
+ case "hashValue":
case "state":
case "type":
case "URL":
@@ -1553,6 +1569,8 @@ UpdatePatch.prototype = {
// over writing nsIUpdatePatch attributes.
_attrNames: [
"errorCode",
+ "hashFunction",
+ "hashValue",
"finalURL",
"selected",
"size",
@@ -1566,6 +1584,8 @@ UpdatePatch.prototype = {
*/
serialize: function UpdatePatch_serialize(updates) {
var patch = updates.createElementNS(URI_UPDATE_NS, "patch");
+ patch.setAttribute("hashFunction", this.hashFunction);
+ patch.setAttribute("hashValue", this.hashValue);
patch.setAttribute("size", this.size);
patch.setAttribute("type", this.type);
patch.setAttribute("URL", this.URL);
@@ -4315,7 +4335,42 @@ Downloader.prototype = {
}
LOG("Downloader:_verifyDownload downloaded size == expected size.");
- return true;
+ let fileStream = Cc["@mozilla.org/network/file-input-stream;1"].
+ createInstance(Ci.nsIFileInputStream);
+ fileStream.init(destination, FileUtils.MODE_RDONLY, FileUtils.PERMS_FILE, 0);
+
+ let digest;
+ try {
+ let hash = Cc["@mozilla.org/security/hash;1"].
+ createInstance(Ci.nsICryptoHash);
+ var hashFunction = Ci.nsICryptoHash[this._patch.hashFunction.toUpperCase()];
+ if (hashFunction == undefined) {
+ throw Cr.NS_ERROR_UNEXPECTED;
+ }
+ hash.init(hashFunction);
+ hash.updateFromStream(fileStream, -1);
+ // NOTE: For now, we assume that the format of _patch.hashValue is hex
+ // encoded binary (such as what is typically output by programs like
+ // sha1sum). In the future, this may change to base64 depending on how
+ // we choose to compute these hashes.
+ digest = binaryToHex(hash.finish(false));
+ } catch (e) {
+ LOG("Downloader:_verifyDownload - failed to compute hash of the " +
+ "downloaded update archive");
+ digest = "";
+ }
+
+ fileStream.close();
+
+ if (digest == this._patch.hashValue.toLowerCase()) {
+ LOG("Downloader:_verifyDownload hashes match.");
+ return true;
+ }
+
+ LOG("Downloader:_verifyDownload hashes do not match. ");
+ AUSTLMY.pingDownloadCode(this.isCompleteUpdate,
+ AUSTLMY.DWNLD_ERR_VERIFY_NO_HASH_MATCH);
+ return false;
},
/**
@@ -4889,6 +4944,9 @@ Downloader.prototype = {
" is higher than patch size: " +
this._patch.size
);
+ // It's important that we use a different code than
+ // NS_ERROR_CORRUPTED_CONTENT so that tests can verify the difference
+ // between a hash error and a wrong download error.
AUSTLMY.pingDownloadCode(
this.isCompleteUpdate,
AUSTLMY.DWNLD_ERR_PATCH_SIZE_LARGER
@@ -4907,6 +4965,9 @@ Downloader.prototype = {
" is not equal to expected patch size: " +
this._patch.size
);
+ // It's important that we use a different code than
+ // NS_ERROR_CORRUPTED_CONTENT so that tests can verify the difference
+ // between a hash error and a wrong download error.
AUSTLMY.pingDownloadCode(
this.isCompleteUpdate,
AUSTLMY.DWNLD_ERR_PATCH_SIZE_NOT_EQUAL
diff --git a/toolkit/mozapps/update/UpdateTelemetry.jsm b/toolkit/mozapps/update/UpdateTelemetry.jsm
index 6f560b07cfe7..b6c71b2ef8d6 100644
--- a/toolkit/mozapps/update/UpdateTelemetry.jsm
+++ b/toolkit/mozapps/update/UpdateTelemetry.jsm
@@ -180,6 +180,7 @@ var AUSTLMY = {
DWNLD_ERR_VERIFY_NO_REQUEST: 13,
DWNLD_ERR_VERIFY_PATCH_SIZE_NOT_EQUAL: 14,
DWNLD_ERR_WRITE_FAILURE: 15,
+ DWNLD_ERR_VERIFY_NO_HASH_MATCH: 16,
// Temporary failure code to see if there are failures without an update phase
DWNLD_UNKNOWN_PHASE_ERR_WRITE_FAILURE: 40,
diff --git a/toolkit/mozapps/update/nsIUpdateService.idl b/toolkit/mozapps/update/nsIUpdateService.idl
index 5e4cc63c3547..47bb27b17d41 100644
--- a/toolkit/mozapps/update/nsIUpdateService.idl
+++ b/toolkit/mozapps/update/nsIUpdateService.idl
@@ -39,6 +39,17 @@ interface nsIUpdatePatch : nsISupports
*/
attribute AString finalURL;
+ /**
+ * The hash function to use when determining this file's integrity
+ */
+ attribute AString hashFunction;
+
+ /**
+ * The value of the hash function named above that should be computed if
+ * this file is not corrupt.
+ */
+ attribute AString hashValue;
+
/**
* The size of this file, in bytes.
*/
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 23104: Add a default line height compensation
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 460be52dc531910d796622017f09dc38681cffb7
Author: Igor Oliveira <igor.oliveira(a)posteo.net>
Date: Sun Dec 10 18:16:59 2017 -0200
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height only and only if the
frame is outside the chrome.
---
layout/generic/ReflowInput.cpp | 19 +++++++++---
layout/generic/test/mochitest.ini | 1 +
layout/generic/test/test_tor_bug23104.html | 50 ++++++++++++++++++++++++++++++
3 files changed, 65 insertions(+), 5 deletions(-)
diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp
index 5b1f6d62043a..5da354f86558 100644
--- a/layout/generic/ReflowInput.cpp
+++ b/layout/generic/ReflowInput.cpp
@@ -30,6 +30,7 @@
#include <algorithm>
#include "mozilla/dom/HTMLInputElement.h"
#include "nsGridContainerFrame.h"
+#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::css;
@@ -2690,7 +2691,8 @@ void ReflowInput::CalculateBlockSideMargins(LayoutFrameType aFrameType) {
// For risk management, we use preference to control the behavior, and
// eNoExternalLeading is the old behavior.
-static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
+static nscoord GetNormalLineHeight(nsIContent* aContent,
+ nsFontMetrics* aFontMetrics) {
MOZ_ASSERT(nullptr != aFontMetrics, "no font metrics");
nscoord normalLineHeight;
@@ -2698,6 +2700,12 @@ static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
nscoord externalLeading = aFontMetrics->ExternalLeading();
nscoord internalLeading = aFontMetrics->InternalLeading();
nscoord emHeight = aFontMetrics->EmHeight();
+
+ if (nsContentUtils::ShouldResistFingerprinting() &&
+ !aContent->IsInChromeDocument()) {
+ return NSToCoordRound(emHeight * NORMAL_LINE_HEIGHT_FACTOR);
+ }
+
switch (GetNormalLineHeightCalcControl()) {
case eIncludeExternalLeading:
normalLineHeight = emHeight + internalLeading + externalLeading;
@@ -2715,7 +2723,8 @@ static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
return normalLineHeight;
}
-static inline nscoord ComputeLineHeight(ComputedStyle* aComputedStyle,
+static inline nscoord ComputeLineHeight(nsIContent* aContent,
+ ComputedStyle* aComputedStyle,
nsPresContext* aPresContext,
nscoord aBlockBSize,
float aFontSizeInflation) {
@@ -2743,7 +2752,7 @@ static inline nscoord ComputeLineHeight(ComputedStyle* aComputedStyle,
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetFontMetricsForComputedStyle(
aComputedStyle, aPresContext, aFontSizeInflation);
- return GetNormalLineHeight(fm);
+ return GetNormalLineHeight(aContent, fm);
}
nscoord ReflowInput::CalcLineHeight() const {
@@ -2765,7 +2774,7 @@ nscoord ReflowInput::CalcLineHeight(nsIContent* aContent,
float aFontSizeInflation) {
MOZ_ASSERT(aComputedStyle, "Must have a ComputedStyle");
- nscoord lineHeight = ComputeLineHeight(aComputedStyle, aPresContext,
+ nscoord lineHeight = ComputeLineHeight(aContent, aComputedStyle, aPresContext,
aBlockBSize, aFontSizeInflation);
NS_ASSERTION(lineHeight >= 0, "ComputeLineHeight screwed up");
@@ -2778,7 +2787,7 @@ nscoord ReflowInput::CalcLineHeight(nsIContent* aContent,
if (!lh.IsNormal()) {
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetFontMetricsForComputedStyle(
aComputedStyle, aPresContext, aFontSizeInflation);
- nscoord normal = GetNormalLineHeight(fm);
+ nscoord normal = GetNormalLineHeight(aContent, fm);
if (lineHeight < normal) {
lineHeight = normal;
}
diff --git a/layout/generic/test/mochitest.ini b/layout/generic/test/mochitest.ini
index f6678d8d8e4e..c1602bbbc6b1 100644
--- a/layout/generic/test/mochitest.ini
+++ b/layout/generic/test/mochitest.ini
@@ -161,3 +161,4 @@ skip-if = debug == true || tsan # the test is slow. tsan: bug 1612707
[test_reframe_for_lazy_load_image.html]
support-files =
file_reframe_for_lazy_load_image.html
+[test_tor_bug23104.html]
diff --git a/layout/generic/test/test_tor_bug23104.html b/layout/generic/test/test_tor_bug23104.html
new file mode 100644
index 000000000000..8ff1d2190c45
--- /dev/null
+++ b/layout/generic/test/test_tor_bug23104.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<html>
+<head>
+ <title>Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <style type="text/css">
+ span {
+ background-color: #000;
+ color: #fff;
+ font-size: 16.5px;
+ }
+ </style>
+</head>
+<body>
+<span id="test1">Test1</span>
+<span id="test2">كلمة</span>
+<span id="test3">ação</span>
+<script>
+
+let setPref = async function (key, value) {
+ await SpecialPowers.pushPrefEnv({"set": [[key, value]]});
+}
+
+function getStyle(el, styleprop) {
+ el = document.getElementById(el);
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleprop);
+}
+
+function validateElement(elementName, isFingerprintResistent) {
+ var fontSize = getStyle(elementName, 'font-size');
+ var lineHeight = getStyle(elementName, 'line-height');
+ var validationCb = isFingerprintResistent ? is : isnot;
+ validationCb(parseFloat(lineHeight), Math.round(parseFloat(fontSize)) * 1.2, 'Line Height validation');
+}
+
+add_task(async function() {
+ await setPref("layout.css.line-height.normal-as-resolved-value.enabled", false);
+ for (let resistFingerprintingValue of [true, false]) {
+ await setPref("privacy.resistFingerprinting", resistFingerprintingValue);
+ for (let elementId of ['test1', 'test2', 'test3']) {
+ validateElement(elementId, resistFingerprintingValue);
+ }
+ }
+});
+
+</script>
+</body>
+</html>
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 21830: Copying large text from web console leaks to /tmp
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 52b9aca4380af513a559d76da9e2a3f40b4af6d2
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Aug 4 05:55:49 2017 +0000
Bug 21830: Copying large text from web console leaks to /tmp
Patch written by Neill Miller
---
widget/nsTransferable.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/widget/nsTransferable.cpp b/widget/nsTransferable.cpp
index 9ccfc8639350..135135ab23a8 100644
--- a/widget/nsTransferable.cpp
+++ b/widget/nsTransferable.cpp
@@ -33,6 +33,7 @@ Notes to self:
#include "nsILoadContext.h"
#include "nsXULAppAPI.h"
#include "mozilla/UniquePtr.h"
+#include "mozilla/Preferences.h"
using namespace mozilla;
@@ -195,6 +196,11 @@ nsTransferable::Init(nsILoadContext* aContext) {
if (aContext) {
mPrivateData = aContext->UsePrivateBrowsing();
+ } else {
+ // without aContext here to provide PrivateBrowsing information,
+ // we defer to the active configured setting
+ mPrivateData =
+ mozilla::Preferences::GetBool("browser.privatebrowsing.autostart");
}
#ifdef DEBUG
mInitialized = true;
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 25658: Replace security slider with security level UI
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 6192d8bcf4c39a4791daff03ffc003a41800b4b7
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Mar 4 16:09:51 2019 -0800
Bug 25658: Replace security slider with security level UI
This patch adds a new 'securitylevel' component to Tor Browser intended
to replace the torbutton 'Security Slider'.
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Strings used by this patch are pulled from the torbutton extension, but
en-US defaults are provided if there is an error loading from the
extension. With this patch applied, the usual work-flow of "./mach build
&& ./mach run" work as expected, even if the torbutton extension is
disabled.
---
browser/base/content/browser.js | 10 +
browser/base/content/browser.xhtml | 5 +
browser/components/moz.build | 1 +
browser/components/preferences/preferences.xhtml | 1 +
browser/components/preferences/privacy.inc.xhtml | 2 +
browser/components/preferences/privacy.js | 19 +
.../securitylevel/content/securityLevel.js | 501 +++++++++++++++++++++
.../securitylevel/content/securityLevelButton.css | 9 +
.../content/securityLevelButton.inc.xhtml | 7 +
.../securitylevel/content/securityLevelButton.svg | 21 +
.../securitylevel/content/securityLevelPanel.css | 82 ++++
.../content/securityLevelPanel.inc.xhtml | 38 ++
.../content/securityLevelPreferences.css | 26 ++
.../content/securityLevelPreferences.inc.xhtml | 62 +++
browser/components/securitylevel/jar.mn | 6 +
browser/components/securitylevel/moz.build | 1 +
16 files changed, 791 insertions(+)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 036d92e131da..a851be586c0c 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -216,6 +216,11 @@ XPCOMUtils.defineLazyScriptGetter(
["DownloadsButton", "DownloadsIndicatorView"],
"chrome://browser/content/downloads/indicator.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["SecurityLevelButton"],
+ "chrome://browser/content/securitylevel/securityLevel.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
"gEditItemOverlay",
@@ -1876,6 +1881,9 @@ var gBrowserInit = {
// doesn't flicker as the window is being shown.
DownloadsButton.init();
+ // Init the SecuritySettingsButton
+ SecurityLevelButton.init();
+
// Certain kinds of automigration rely on this notification to complete
// their tasks BEFORE the browser window is shown. SessionStore uses it to
// restore tabs into windows AFTER important parts like gMultiProcessBrowser
@@ -2558,6 +2566,8 @@ var gBrowserInit = {
DownloadsButton.uninit();
+ SecurityLevelButton.uninit();
+
gAccessibilityServiceIndicator.uninit();
AccessibilityRefreshBlocker.uninit();
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 229fc2a26dd2..72c415b8f843 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -20,6 +20,8 @@
<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/tabbrowser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/downloads/downloads.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPanel.css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelButton.css"?>
<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/usercontext/usercontext.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
@@ -623,6 +625,7 @@
#include ../../components/controlcenter/content/protectionsPanel.inc.xhtml
#include ../../components/downloads/content/downloadsPanel.inc.xhtml
#include ../../../devtools/startup/enableDevToolsPopup.inc.xhtml
+#include ../../components/securitylevel/content/securityLevelPanel.inc.xhtml
#include browser-allTabsMenu.inc.xhtml
<hbox id="downloads-animation-container">
@@ -1136,6 +1139,8 @@
</stack>
</toolbarbutton>
+#include ../../components/securitylevel/content/securityLevelButton.inc.xhtml
+
<toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
removable="true"
onmousedown="PanelUI.showSubView('appMenu-libraryView', this, event);"
diff --git a/browser/components/moz.build b/browser/components/moz.build
index cf3f566eba71..8d6d2503e4a0 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -52,6 +52,7 @@ DIRS += [
'protocolhandler',
'resistfingerprinting',
'search',
+ 'securitylevel',
'sessionstore',
'shell',
'ssb',
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index c8adb60653b7..3d89ddf00808 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<!DOCTYPE html>
diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
index 572b0233c8c4..f36145ea80d4 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
@@ -913,6 +913,8 @@
<html:h1 data-l10n-id="security-header"/>
</hbox>
+#include ../securitylevel/content/securityLevelPreferences.inc.xhtml
+
<!-- addons, forgery (phishing) UI Security -->
<groupbox id="browsingProtectionGroup" data-category="panePrivacy" hidden="true">
<label><html:h2 data-l10n-id="security-browsing-protection"/></label>
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 2cff75726546..949fa84c24ab 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -77,6 +77,12 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["SecurityLevelPreferences"],
+ "chrome://browser/content/securitylevel/securityLevel.js"
+);
+
XPCOMUtils.defineLazyServiceGetter(
this,
"listManager",
@@ -275,6 +281,18 @@ function addCustomBlockingLearnMore() {
var gPrivacyPane = {
_pane: null,
+ /**
+ * Show the Security Level UI
+ */
+ _initSecurityLevel() {
+ SecurityLevelPreferences.init();
+ let unload = () => {
+ window.removeEventListener("unload", unload);
+ SecurityLevelPreferences.uninit();
+ };
+ window.addEventListener("unload", unload);
+ },
+
/**
* Whether the prompt to restart Firefox should appear when changing the autostart pref.
*/
@@ -415,6 +433,7 @@ var gPrivacyPane = {
this.trackingProtectionReadPrefs();
this.networkCookieBehaviorReadPrefs();
this._initTrackingProtectionExtensionControl();
+ this._initSecurityLevel();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
diff --git a/browser/components/securitylevel/content/securityLevel.js b/browser/components/securitylevel/content/securityLevel.js
new file mode 100644
index 000000000000..b47d0cfb545e
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevel.js
@@ -0,0 +1,501 @@
+"use strict";
+
+ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ CustomizableUI: "resource:///modules/CustomizableUI.jsm",
+ PanelMultiView: "resource:///modules/PanelMultiView.jsm",
+});
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+/*
+ Security Level Prefs
+
+ Getters and Setters for relevant torbutton prefs
+*/
+const SecurityLevelPrefs = {
+ security_slider_pref : "extensions.torbutton.security_slider",
+ security_custom_pref : "extensions.torbutton.security_custom",
+
+ get securitySlider() {
+ try {
+ return Services.prefs.getIntPref(this.security_slider_pref);
+ } catch(e) {
+ // init pref to 4 (standard)
+ const val = 4;
+ Services.prefs.setIntPref(this.security_slider_pref, val);
+ return val;
+ }
+ },
+
+ set securitySlider(val) {
+ Services.prefs.setIntPref(this.security_slider_pref, val);
+ },
+
+ get securityCustom() {
+ try {
+ return Services.prefs.getBoolPref(this.security_custom_pref);
+ } catch(e) {
+ // init custom to false
+ const val = false;
+ Services.prefs.setBoolPref(this.security_custom_pref, val);
+ return val;
+ }
+ },
+
+ set securityCustom(val) {
+ Services.prefs.setBoolPref(this.security_custom_pref, val);
+ },
+}; /* Security Level Prefs */
+
+/*
+ Security Level Button Code
+
+ Controls init and update of the security level toolbar button
+*/
+
+const SecurityLevelButton = {
+ _securityPrefsBranch : null,
+
+ _populateXUL : function(securityLevelButton) {
+ if (securityLevelButton != null) {
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.securityLevel);
+ securityLevelButton.setAttribute("label", TorStrings.securityLevel.securityLevel);
+ }
+ },
+
+ _configUIFromPrefs : function(securityLevelButton) {
+ if (securityLevelButton != null) {
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let classList = securityLevelButton.classList;
+ classList.remove("standard", "safer", "safest");
+ switch(securitySlider) {
+ case 4:
+ classList.add("standard");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.standard.tooltip);
+ break;
+ case 2:
+ classList.add("safer");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safer.tooltip);
+ break;
+ case 1:
+ classList.add("safest");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safest.tooltip);
+ break;
+ }
+ }
+ },
+
+ get button() {
+ let button = document.getElementById("security-level-button");
+ if (!button) {
+ return null;
+ }
+ return button;
+ },
+
+ get anchor() {
+ let anchor = this.button.icon;
+ if (!anchor) {
+ return null;
+ }
+
+ anchor.setAttribute("consumeanchor", SecurityLevelButton.button.id);
+ return anchor;
+ },
+
+ init : function() {
+ // set the initial class based off of the current pref
+ let button = this.button;
+ this._populateXUL(button);
+ this._configUIFromPrefs(button);
+
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+
+ CustomizableUI.addListener(this);
+
+ SecurityLevelPanel.init();
+ },
+
+ uninit : function() {
+ CustomizableUI.removeListener(this);
+
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+
+ SecurityLevelPanel.uninit();
+ },
+
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider") {
+ this._configUIFromPrefs(this.button);
+ }
+ break;
+ }
+ },
+
+ // callback for entering the 'Customize Firefox' screen to set icon
+ onCustomizeStart : function(window) {
+ let navigatorToolbox = document.getElementById("navigator-toolbox");
+ let button = navigatorToolbox.palette.querySelector("#security-level-button");
+ this._populateXUL(button);
+ this._configUIFromPrefs(button);
+ },
+
+ // callback when CustomizableUI modifies DOM
+ onWidgetAfterDOMChange : function(aNode, aNextNode, aContainer, aWasRemoval) {
+ if (aNode.id == "security-level-button" && !aWasRemoval) {
+ this._populateXUL(aNode);
+ this._configUIFromPrefs(aNode);
+ }
+ },
+
+ // for when the toolbar button needs to be activated and displays the Security Level panel
+ //
+ // In the toolbarbutton xul you'll notice we register this callback for both onkeypress and
+ // onmousedown. We do this to match the behavior of other panel spawning buttons such as Downloads,
+ // Library, and the Hamburger menus. Using oncommand alone would result in only getting fired
+ // after onclick, which is mousedown followed by mouseup.
+ onCommand : function(aEvent) {
+ // snippet stolen from /browser/components/downloads/indicator.js DownloadsIndicatorView.onCommand(evt)
+ if (
+ (aEvent.type == "mousedown" && aEvent.button != 0) ||
+ (aEvent.type == "keypress" && aEvent.key != " " && aEvent.key != "Enter")
+ ) {
+ return;
+ }
+
+ // we need to set this attribute for the button to be shaded correctly to look like it is pressed
+ // while the security level panel is open
+ this.button.setAttribute("open", "true");
+ SecurityLevelPanel.show();
+ },
+}; /* Security Level Button */
+
+/*
+ Security Level Panel Code
+
+ Controls init and update of the panel in the security level hanger
+*/
+
+const SecurityLevelPanel = {
+ _securityPrefsBranch : null,
+ _panel : null,
+ _anchor : null,
+ _populated : false,
+
+ _populateXUL : function() {
+ // get the panel elements we need to populate
+ let panelview = document.getElementById("securityLevel-panelview");
+ let labelHeader = panelview.querySelector("#securityLevel-header");
+ let labelCustomWarning = panelview.querySelector("#securityLevel-customWarning")
+ let labelLearnMore = panelview.querySelector("#securityLevel-learnMore");
+ let buttonRestoreDefaults = panelview.querySelector("#securityLevel-restoreDefaults");
+ let buttonAdvancedSecuritySettings = panelview.querySelector("#securityLevel-advancedSecuritySettings");
+
+ labelHeader.setAttribute("value", TorStrings.securityLevel.securityLevel);
+ labelCustomWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
+ buttonRestoreDefaults.setAttribute("label", TorStrings.securityLevel.restoreDefaults);
+ buttonAdvancedSecuritySettings.setAttribute("label", TorStrings.securityLevel.advancedSecuritySettings);
+
+ // rest of the XUL is set based on security prefs
+ this._configUIFromPrefs();
+
+ this._populated = true;
+ },
+
+ _configUIFromPrefs : function() {
+ // get security prefs
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let securityCustom = SecurityLevelPrefs.securityCustom;
+
+ // get the panel elements we need to populate
+ let panelview = document.getElementById("securityLevel-panelview");
+ let labelLevel = panelview.querySelector("#securityLevel-level");
+ let labelCustomWarning = panelview.querySelector("#securityLevel-customWarning")
+ let summary = panelview.querySelector("#securityLevel-summary");
+ let buttonRestoreDefaults = panelview.querySelector("#securityLevel-restoreDefaults");
+ let buttonAdvancedSecuritySettings = panelview.querySelector("#securityLevel-advancedSecuritySettings");
+
+ // only visible when user is using custom settings
+ labelCustomWarning.hidden = !securityCustom;
+ buttonRestoreDefaults.hidden = !securityCustom;
+
+ // Descriptions change based on security level
+ switch(securitySlider) {
+ // standard
+ case 4:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.standard.level);
+ summary.textContent = TorStrings.securityLevel.standard.summary;
+ break;
+ // safer
+ case 2:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safer.level);
+ summary.textContent = TorStrings.securityLevel.safer.summary;
+ break;
+ // safest
+ case 1:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safest.level);
+ summary.textContent = TorStrings.securityLevel.safest.summary;
+ break;
+ }
+
+ // override the summary text with custom warning
+ if (securityCustom) {
+ summary.textContent = TorStrings.securityLevel.custom.summary;
+ }
+ },
+
+ init : function() {
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+ },
+
+ uninit : function() {
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+ },
+
+ show : function() {
+ // we have to defer this until after the browser has finished init'ing before
+ // we can populate the panel
+ if (!this._populated) {
+ this._populateXUL();
+ }
+
+ let panel = document.getElementById("securityLevel-panel");
+ panel.hidden = false;
+ PanelMultiView.openPopup(panel, SecurityLevelButton.anchor, "bottomcenter topright",
+ 0, 0, false, null).catch(Cu.reportError);
+ },
+
+ hide : function() {
+ let panel = document.getElementById("securityLevel-panel");
+ PanelMultiView.hidePopup(panel);
+ },
+
+ restoreDefaults : function() {
+ SecurityLevelPrefs.securityCustom = false;
+ // hide and reshow so that layout re-renders properly
+ this.hide();
+ this.show(this._anchor);
+ },
+
+ openAdvancedSecuritySettings : function() {
+ openPreferences("privacy-securitylevel");
+ this.hide();
+ },
+
+ // callback when prefs change
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider" || data == "security_custom") {
+ this._configUIFromPrefs();
+ }
+ break;
+ }
+ },
+
+ // callback when the panel is displayed
+ onPopupShown : function(event) {
+ SecurityLevelButton.button.setAttribute("open", "true");
+ },
+
+ // callback when the panel is hidden
+ onPopupHidden : function(event) {
+ SecurityLevelButton.button.removeAttribute("open");
+ }
+}; /* Security Level Panel */
+
+/*
+ Security Level Preferences Code
+
+ Code to handle init and update of security level section in about:preferences#privacy
+*/
+
+const SecurityLevelPreferences =
+{
+ _securityPrefsBranch : null,
+
+ _populateXUL : function() {
+ let groupbox = document.getElementById("securityLevel-groupbox");
+
+ let labelHeader = groupbox.querySelector("#securityLevel-header");
+ labelHeader.textContent = TorStrings.securityLevel.securityLevel;
+
+ let spanOverview = groupbox.querySelector("#securityLevel-overview");
+ spanOverview.textContent = TorStrings.securityLevel.overview;
+
+ let labelLearnMore = groupbox.querySelector("#securityLevel-learnMore");
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
+
+ let radiogroup = document.getElementById("securityLevel-radiogroup");
+ radiogroup.addEventListener("command", SecurityLevelPreferences.selectSecurityLevel);
+
+ let populateRadioElements = function(vboxQuery, stringStruct) {
+ let vbox = groupbox.querySelector(vboxQuery);
+
+ let radio = vbox.querySelector("radio");
+ radio.setAttribute("label", stringStruct.level);
+
+ let customWarning = vbox.querySelector("#securityLevel-customWarning");
+ customWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
+
+ let labelSummary = vbox.querySelector("#securityLevel-summary");
+ labelSummary.textContent = stringStruct.summary;
+
+ let labelRestoreDefaults = vbox.querySelector("#securityLevel-restoreDefaults");
+ labelRestoreDefaults.setAttribute("value", TorStrings.securityLevel.restoreDefaults);
+ labelRestoreDefaults.addEventListener("click", SecurityLevelPreferences.restoreDefaults);
+
+ let description1 = vbox.querySelector("#securityLevel-description1");
+ if (description1) {
+ description1.textContent = stringStruct.description1;
+ }
+ let description2 = vbox.querySelector("#securityLevel-description2");
+ if (description2) {
+ description2.textContent = stringStruct.description2;
+ }
+ let description3 = vbox.querySelector("#securityLevel-description3");
+ if (description3) {
+ description3.textContent = stringStruct.description3;
+ }
+ };
+
+ populateRadioElements("#securityLevel-vbox-standard", TorStrings.securityLevel.standard);
+ populateRadioElements("#securityLevel-vbox-safer", TorStrings.securityLevel.safer);
+ populateRadioElements("#securityLevel-vbox-safest", TorStrings.securityLevel.safest);
+ },
+
+ _configUIFromPrefs : function() {
+ // read our prefs
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let securityCustom = SecurityLevelPrefs.securityCustom;
+
+ // get our elements
+ let groupbox = document.getElementById("securityLevel-groupbox");
+
+ let radiogroup = groupbox.querySelector("#securityLevel-radiogroup");
+ let labelStandardCustom = groupbox.querySelector("#securityLevel-vbox-standard label#securityLevel-customWarning");
+ let labelSaferCustom = groupbox.querySelector("#securityLevel-vbox-safer label#securityLevel-customWarning");
+ let labelSafestCustom = groupbox.querySelector("#securityLevel-vbox-safest label#securityLevel-customWarning");
+ let labelStandardRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-standard label#securityLevel-restoreDefaults");
+ let labelSaferRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-safer label#securityLevel-restoreDefaults");
+ let labelSafestRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-safest label#securityLevel-restoreDefaults");
+
+ // hide custom label by default until we know which level we're at
+ labelStandardCustom.hidden = true;
+ labelSaferCustom.hidden = true;
+ labelSafestCustom.hidden = true;
+
+ labelStandardRestoreDefaults.hidden = true;
+ labelSaferRestoreDefaults.hidden = true;
+ labelSafestRestoreDefaults.hidden = true;
+
+ switch(securitySlider) {
+ // standard
+ case 4:
+ radiogroup.value = "standard";
+ labelStandardCustom.hidden = !securityCustom;
+ labelStandardRestoreDefaults.hidden = !securityCustom;
+ break;
+ // safer
+ case 2:
+ radiogroup.value = "safer";
+ labelSaferCustom.hidden = !securityCustom;
+ labelSaferRestoreDefaults.hidden = !securityCustom;
+ break;
+ // safest
+ case 1:
+ radiogroup.value = "safest";
+ labelSafestCustom.hidden = !securityCustom;
+ labelSafestRestoreDefaults.hidden = !securityCustom;
+ break;
+ }
+ },
+
+ init : function() {
+ // populate XUL with localized strings
+ this._populateXUL();
+
+ // read prefs and populate UI
+ this._configUIFromPrefs();
+
+ // register for pref chagnes
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+ },
+
+ uninit : function() {
+ // unregister for pref change events
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+ },
+
+ // callback for when prefs change
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider" ||
+ data == "security_custom") {
+ this._configUIFromPrefs();
+ }
+ break;
+ }
+ },
+
+ selectSecurityLevel : function() {
+ // radio group elements
+ let radiogroup = document.getElementById("securityLevel-radiogroup");
+
+ // update pref based on selected radio option
+ switch (radiogroup.value) {
+ case "standard":
+ SecurityLevelPrefs.securitySlider = 4;
+ break;
+ case "safer":
+ SecurityLevelPrefs.securitySlider = 2;
+ break;
+ case "safest":
+ SecurityLevelPrefs.securitySlider = 1;
+ break;
+ }
+
+ SecurityLevelPreferences.restoreDefaults();
+ },
+
+ restoreDefaults : function() {
+ SecurityLevelPrefs.securityCustom = false;
+ },
+}; /* Security Level Prefereces */
+
+Object.defineProperty(this, "SecurityLevelButton", {
+ value: SecurityLevelButton,
+ enumerable: true,
+ writable: false
+});
+
+Object.defineProperty(this, "SecurityLevelPanel", {
+ value: SecurityLevelPanel,
+ enumerable: true,
+ writable: false
+});
+
+Object.defineProperty(this, "SecurityLevelPreferences", {
+ value: SecurityLevelPreferences,
+ enumerable: true,
+ writable: false
+});
diff --git a/browser/components/securitylevel/content/securityLevelButton.css b/browser/components/securitylevel/content/securityLevelButton.css
new file mode 100644
index 000000000000..81f2365bae28
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.css
@@ -0,0 +1,9 @@
+toolbarbutton#security-level-button.standard {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#standard");
+}
+toolbarbutton#security-level-button.safer {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#safer");
+}
+toolbarbutton#security-level-button.safest {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#safest");
+}
diff --git a/browser/components/securitylevel/content/securityLevelButton.inc.xhtml b/browser/components/securitylevel/content/securityLevelButton.inc.xhtml
new file mode 100644
index 000000000000..96ee1ec0ca49
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.inc.xhtml
@@ -0,0 +1,7 @@
+<toolbarbutton id="security-level-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ badged="true"
+ removable="true"
+ onmousedown="SecurityLevelButton.onCommand(event);"
+ onkeypress="SecurityLevelButton.onCommand(event);"
+ closemenu="none"
+ cui-areatype="toolbar"/>
diff --git a/browser/components/securitylevel/content/securityLevelButton.svg b/browser/components/securitylevel/content/securityLevelButton.svg
new file mode 100644
index 000000000000..8535cdcc531e
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.svg
@@ -0,0 +1,21 @@
+<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style>
+ use:not(:target) {
+ display: none;
+ }
+ </style>
+ <defs>
+ <g id="standard_icon" stroke="none" stroke-width="1">
+ <path d="M7.0 2.16583509C7.0 2.16583509 2.0 4.24375717 2.0 4.24375717C2.0 4.24375717 2.0 7.27272727 2.0 7.27272727C2.0 10.2413541 4.13435329 13.0576771 7.0 13.9315843C9.8656467 13.0576771 12.0 10.2413541 12.0 7.27272727C12.0 7.27272727 12.0 4.24375717 12.0 4.24375717C12.0 4.24375717 7.0 2.16583509 7.0 2.16583509C7.0 2.16583509 7.0 2.16583509 7.0 2.16583509M7.0 0.0C7.0 0.0 14.0 2.90909091 14.0 2.90909091C14.0 2.90909091 14.0 7.27272727 14.0 7.27272727C14.0 11.3090909 11.0133333 15.0836364 7.0 16.0C2.98666667 15.0836364 0.0 11.3090909 0.0 7.27272727C0.0 7.27272727 0.0 2.90909091 0.0 2.90909091C0.0 2.90909091 7.0 0.0 7.0 0.0C7.0 0.0 7.0 0.0 7.0 0.0" />
+ </g>
+ <g id="safer_icon" stroke="none" stroke-width="1">
+ <path fill-rule="nonzero" d="M7.0 2.1658351C7.0 13.931584 7.0 2.1658351 7.0 13.931584C9.8656467 13.057677 12.0 10.241354 12.0 7.2727273C12.0 7.2727273 12.0 4.2437572 12.0 4.2437572C12.0 4.2437572 7.0 2.1658351 7.0 2.1658351C7.0 2.1658351 7.0 2.1658351 7.0 2.1658351M7.0 0.0C7.0 0.0 14.0 2.9090909 14.0 2.9090909C14.0 2.9090909 14.0 7.2727273 14.0 7.2727273C14.0 11.309091 11.013333 15.083636 7.0 16.0C2.9866667 15.083636 0.0 11.309091 0.0 7.2727273C0.0 7.2727273 0.0 2.9090909 0.0 2.9090909C0.0 2.9090909 7.0 0.0 7.0 0.0"/>
+ </g>
+ <g id="safest_icon" stroke="none" stroke-width="1">
+ <path d="M7.0 0.0C7.0 0.0 14.0 2.90909091 14.0 2.90909091C14.0 2.90909091 14.0 7.27272727 14.0 7.27272727C14.0 11.3090909 11.0133333 15.0836364 7.0 16.0C2.98666667 15.0836364 0.0 11.3090909 0.0 7.27272727C0.0 7.27272727 0.0 2.90909091 0.0 2.90909091C0.0 2.90909091 7.0 0.0 7.0 0.0C7.0 0.0 7.0 0.0 7.0 0.0" />
+ </g>
+ </defs>
+ <use id="standard" fill="context-fill" fill-opacity="context-fill-opacity" href="#standard_icon" />
+ <use id="safer" fill="context-fill" fill-opacity="context-fill-opacity" href="#safer_icon" />
+ <use id="safest" fill="context-fill" fill-opacity="context-fill-opacity" href="#safest_icon" />
+</svg>
diff --git a/browser/components/securitylevel/content/securityLevelPanel.css b/browser/components/securitylevel/content/securityLevelPanel.css
new file mode 100644
index 000000000000..70022e2bd4b2
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPanel.css
@@ -0,0 +1,82 @@
+/* Security Level CSS */
+
+panel#securityLevel-panel > .panel-arrowcontainer > .panel-arrowcontent {
+ padding: 0;
+}
+
+panelview#securityLevel-panelview {
+ width: 20em;
+}
+
+panelview#securityLevel-panelview>vbox.panel-subview-body {
+ padding: 1em;
+}
+
+label#securityLevel-header {
+ text-transform: uppercase;
+ color: var(--panel-disabled-color);
+ font-size: 0.85em;
+ margin: 0 0 0.4em 0;
+ padding: 0;
+}
+
+hbox#securityLevel-levelHbox {
+ margin-bottom: 1em;
+}
+
+label#securityLevel-level {
+ font-size: 1.5em;
+ margin: 0 0.5em 0 0;
+ padding: 0;
+}
+
+label#securityLevel-customWarning {
+ border-radius: 2px;
+ background-color: #ffe845;
+ text-transform: uppercase;
+ font-weight: bolder;
+ font-size: 0.8em;
+ height: 1em;
+ line-height: 1em;
+ vertical-align: middle;
+ margin: auto;
+ padding: 0.4em;
+}
+
+panelview#securityLevel-panelview description {
+ margin: 0 -0.5em 0.5em 0;
+ padding: 0 !important;
+}
+
+label#securityLevel-learnMore {
+ margin: 0 0 1.0em 0;
+ padding: 0;
+}
+
+panelview#securityLevel-panelview button {
+ -moz-appearance: none;
+ background-color: var(--arrowpanel-dimmed);
+}
+
+panelview#securityLevel-panelview button:hover {
+ background-color: var(--arrowpanel-dimmed-further);
+}
+
+panelview#securityLevel-panelview button:active {
+ background-color: var(--arrowpanel-dimmed-even-further);
+}
+
+button#securityLevel-restoreDefaults {
+ margin: 0 0 1.0em 0;
+ padding: 0.45em;
+ color: inherit !important;
+}
+
+button#securityLevel-advancedSecuritySettings {
+ margin: 0 -1.0em -1.0em -1.0em;
+ border-radius: 0;
+ border-top: 1px solid var(--panel-separator-color);
+ padding: 0;
+ height: 3.0em;
+ color: inherit !important;
+}
diff --git a/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml b/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
new file mode 100644
index 000000000000..4abbb12dd856
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
@@ -0,0 +1,38 @@
+<panel id="securityLevel-panel"
+ role="group"
+ type="arrow"
+ orient="vertical"
+ level="top"
+ hidden="true"
+ class="panel-no-padding"
+ onpopupshown="SecurityLevelPanel.onPopupShown(event);"
+ onpopuphidden="SecurityLevelPanel.onPopupHidden(event);"
+ >
+ <panelmultiview mainViewId="securityLevel-panelview">
+ <panelview id="securityLevel-panelview" descriptionheightworkaround="true">
+ <vbox class="panel-subview-body">
+ <label id="securityLevel-header"/>
+ <hbox id="securityLevel-levelHbox">
+ <label id="securityLevel-level"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description id="securityLevel-summary"/>
+ <label
+ id="securityLevel-learnMore"
+ class="learnMore text-link"
+ onclick="SecurityLevelPanel.hide();"
+ is="text-link"/>
+ <button
+ id="securityLevel-restoreDefaults"
+ oncommand="SecurityLevelPanel.restoreDefaults();"/>
+ <button
+ id="securityLevel-advancedSecuritySettings"
+ oncommand="SecurityLevelPanel.openAdvancedSecuritySettings();"/>
+ </vbox>
+ </panelview>
+ </panelmultiview>
+</panel>
diff --git a/browser/components/securitylevel/content/securityLevelPreferences.css b/browser/components/securitylevel/content/securityLevelPreferences.css
new file mode 100644
index 000000000000..0d1040d177d8
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPreferences.css
@@ -0,0 +1,26 @@
+label#securityLevel-customWarning {
+ border-radius: 2px;
+ background-color: #ffe845;
+ text-transform: uppercase;
+ font-weight: bolder;
+ font-size: 0.7em;
+ height: 1em;
+ line-height: 1em;
+ padding: 0.35em;
+}
+
+radiogroup#securityLevel-radiogroup radio {
+ font-weight: bold;
+}
+
+vbox#securityLevel-vbox-standard,
+vbox#securityLevel-vbox-safer,
+vbox#securityLevel-vbox-safest {
+ margin-top: 0.4em;
+}
+
+vbox#securityLevel-vbox-standard description.indent,
+vbox#securityLevel-vbox-safer description.indent,
+vbox#securityLevel-vbox-safest description.indent {
+ margin-inline-start: 0 !important;
+}
diff --git a/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml b/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
new file mode 100644
index 000000000000..a108d44a7b51
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
@@ -0,0 +1,62 @@
+<groupbox id="securityLevel-groupbox" data-category="panePrivacy" hidden="true">
+ <label><html:h2 id="securityLevel-header"/></label>
+ <vbox data-subcategory="securitylevel" flex="1">
+ <description flex="1">
+ <html:span id="securityLevel-overview" class="tail-with-learn-more"/>
+ <label id="securityLevel-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <radiogroup id="securityLevel-radiogroup">
+ <vbox id="securityLevel-vbox-standard">
+ <hbox>
+ <radio value="standard"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ </vbox>
+ <vbox id="securityLevel-vbox-safer">
+ <hbox>
+ <radio value="safer"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ <description id="securityLevel-description1" class="indent tip-caption"/>
+ <description id="securityLevel-description2" class="indent tip-caption"/>
+ <description id="securityLevel-description3" class="indent tip-caption"/>
+ </vbox>
+ <vbox id="securityLevel-vbox-safest">
+ <hbox>
+ <radio value="safest"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ <description id="securityLevel-description1" class="indent tip-caption"/>
+ <description id="securityLevel-description2" class="indent tip-caption"/>
+ <description id="securityLevel-description3" class="indent tip-caption"/>
+ </vbox>
+ </radiogroup>
+ </vbox>
+</groupbox>
diff --git a/browser/components/securitylevel/jar.mn b/browser/components/securitylevel/jar.mn
new file mode 100644
index 000000000000..9ac408083fbc
--- /dev/null
+++ b/browser/components/securitylevel/jar.mn
@@ -0,0 +1,6 @@
+browser.jar:
+ content/browser/securitylevel/securityLevel.js (content/securityLevel.js)
+ content/browser/securitylevel/securityLevelPanel.css (content/securityLevelPanel.css)
+ content/browser/securitylevel/securityLevelButton.css (content/securityLevelButton.css)
+ content/browser/securitylevel/securityLevelPreferences.css (content/securityLevelPreferences.css)
+ content/browser/securitylevel/securityLevelButton.svg (content/securityLevelButton.svg)
diff --git a/browser/components/securitylevel/moz.build b/browser/components/securitylevel/moz.build
new file mode 100644
index 000000000000..7e103239c8d6
--- /dev/null
+++ b/browser/components/securitylevel/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ['jar.mn']
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 28369: Stop shipping pingsender executable
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 98ed1e5e835b2b36b94f280b7faa414499f593ef
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Apr 10 17:52:51 2019 +0200
Bug 28369: Stop shipping pingsender executable
---
browser/app/macbuild/Contents/MacOS-files.in | 1 -
browser/installer/package-manifest.in | 4 ----
browser/installer/windows/nsis/shared.nsh | 1 -
python/mozbuild/mozbuild/artifacts.py | 2 --
toolkit/components/telemetry/app/TelemetrySend.jsm | 19 +------------------
toolkit/components/telemetry/moz.build | 4 ----
6 files changed, 1 insertion(+), 30 deletions(-)
diff --git a/browser/app/macbuild/Contents/MacOS-files.in b/browser/app/macbuild/Contents/MacOS-files.in
index a0cac14ef7e3..38c3766c6375 100644
--- a/browser/app/macbuild/Contents/MacOS-files.in
+++ b/browser/app/macbuild/Contents/MacOS-files.in
@@ -13,7 +13,6 @@
#if defined(MOZ_CRASHREPORTER)
/minidump-analyzer
#endif
-/pingsender
/pk12util
/ssltunnel
/xpcshell
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index ad7dd023a92e..9e36326dee5b 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -444,10 +444,6 @@ bin/libfreebl_64int_3.so
@BINPATH@/minidump-analyzer@BIN_SUFFIX@
#endif
-; [ Ping Sender ]
-;
-@BINPATH@/pingsender@BIN_SUFFIX@
-
; Shutdown Terminator
@RESPATH@/components/terminator.manifest
diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh
index 84f702fd54a1..b08a0ec5580b 100755
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -1472,7 +1472,6 @@ ${EndIf}
Push "crashreporter.exe"
Push "default-browser-agent.exe"
Push "minidump-analyzer.exe"
- Push "pingsender.exe"
Push "updater.exe"
Push "updateagent.exe"
Push "${FileMainEXE}"
diff --git a/python/mozbuild/mozbuild/artifacts.py b/python/mozbuild/mozbuild/artifacts.py
index d1de6bca15d9..35107ac894fd 100644
--- a/python/mozbuild/mozbuild/artifacts.py
+++ b/python/mozbuild/mozbuild/artifacts.py
@@ -420,7 +420,6 @@ class LinuxArtifactJob(ArtifactJob):
'{product}/{product}',
'{product}/{product}-bin',
'{product}/minidump-analyzer',
- '{product}/pingsender',
'{product}/plugin-container',
'{product}/updater',
'{product}/**/*.so',
@@ -482,7 +481,6 @@ class MacArtifactJob(ArtifactJob):
'libosclientcerts.dylib',
'libsoftokn3.dylib',
'minidump-analyzer',
- 'pingsender',
'plugin-container.app/Contents/MacOS/plugin-container',
'updater.app/Contents/MacOS/org.mozilla.updater',
# 'xpcshell',
diff --git a/toolkit/components/telemetry/app/TelemetrySend.jsm b/toolkit/components/telemetry/app/TelemetrySend.jsm
index f0f61b74026b..502416431b24 100644
--- a/toolkit/components/telemetry/app/TelemetrySend.jsm
+++ b/toolkit/components/telemetry/app/TelemetrySend.jsm
@@ -1578,23 +1578,6 @@ var TelemetrySendImpl = {
},
runPingSender(pings, observer) {
- if (AppConstants.platform === "android") {
- throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);
- }
-
- const exeName =
- AppConstants.platform === "win" ? "pingsender.exe" : "pingsender";
-
- let exe = Services.dirsvc.get("GreBinD", Ci.nsIFile);
- exe.append(exeName);
-
- let params = pings.flatMap(ping => [ping.url, ping.path]);
- let process = Cc["@mozilla.org/process/util;1"].createInstance(
- Ci.nsIProcess
- );
- process.init(exe);
- process.startHidden = true;
- process.noShell = true;
- process.runAsync(params, params.length, observer);
+ throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);
},
};
diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build
index 8d9104f632a6..520d2da3acf1 100644
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -8,10 +8,6 @@ include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul'
-DIRS = [
- 'pingsender',
-]
-
DEFINES['MOZ_APP_VERSION'] = '"%s"' % CONFIG['MOZ_APP_VERSION']
LOCAL_INCLUDES += [
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 26353: Prevent speculative connect that violated FPI.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 9f904db806634cfb2686c2ff5d65b324331112d9
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sat Jul 14 08:50:55 2018 -0700
Bug 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
---
toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm b/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
index ffa42297073e..82c7a3b950c2 100644
--- a/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
+++ b/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
@@ -74,6 +74,9 @@ class RemoteWebNavigation {
fixupFlags |= Services.uriFixup.FIXUP_FLAG_PRIVATE_CONTEXT;
}
uri = Services.uriFixup.createFixupURI(aURI, fixupFlags);
+/*******************************************************************************
+ TOR BROWSER: Disable the following speculative connect until
+ we can make it properly obey first-party isolation.
// We know the url is going to be loaded, let's start requesting network
// connection before the content process asks.
@@ -97,6 +100,7 @@ class RemoteWebNavigation {
}
Services.io.speculativeConnect(uri, principal, null);
}
+*******************************************************************************/
} catch (ex) {
// Can't setup speculative connection for this uri string for some
// reason (such as failing to parse the URI), just ignore it.
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 31575: Replace Firefox Home (newtab) with about:tor
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 87f768e68c071653a66f6dbceac778cc6531ebe4
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon Sep 9 13:04:34 2019 +0200
Bug 31575: Replace Firefox Home (newtab) with about:tor
Avoid loading AboutNewTab in BrowserGlue.jsm in order
to avoid several network requests that we do not need. Besides,
about:newtab will now point to about:blank or about:tor (depending
on browser.newtabpage.enabled) and about:home will point to
about:tor.
---
browser/components/BrowserGlue.jsm | 29 ++----------------------
browser/components/newtab/AboutNewTabService.jsm | 15 +-----------
browser/components/preferences/home.inc.xhtml | 4 ++--
browser/components/preferences/preferences.xhtml | 5 +++-
browser/modules/HomePage.jsm | 2 +-
5 files changed, 10 insertions(+), 45 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 3363e24a9b56..44b1426b92e0 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -29,12 +29,6 @@ ChromeUtils.defineModuleGetter(
"resource:///modules/CustomizableUI.jsm"
);
-ChromeUtils.defineModuleGetter(
- this,
- "AboutNewTab",
- "resource:///modules/AboutNewTab.jsm"
-);
-
ChromeUtils.defineModuleGetter(
this,
"E10SUtils",
@@ -123,19 +117,6 @@ let JSWINDOWACTORS = {
matches: ["about:newinstall"],
},
- AboutNewTab: {
- child: {
- moduleURI: "resource:///actors/AboutNewTabChild.jsm",
- events: {
- DOMContentLoaded: {},
- },
- },
- // The wildcard on about:newtab is for the ?endpoint query parameter
- // that is used for snippets debugging.
- matches: ["about:home", "about:welcome", "about:newtab*"],
- remoteTypes: ["privilegedabout"],
- },
-
AboutPlugins: {
parent: {
moduleURI: "resource:///actors/AboutPluginsParent.jsm",
@@ -1730,8 +1711,6 @@ BrowserGlue.prototype = {
// the first browser window has finished initializing
_onFirstWindowLoaded: function BG__onFirstWindowLoaded(aWindow) {
- AboutNewTab.init();
-
TabCrashHandler.init();
ProcessHangMonitor.init();
@@ -5199,12 +5178,8 @@ var AboutHomeStartupCache = {
return { pageInputStream: null, scriptInputStream: null };
}
- let state = AboutNewTab.activityStream.store.getState();
- return new Promise(resolve => {
- this._cacheDeferred = resolve;
- this.log.trace("Parent received cache streams.");
- this._procManager.sendAsyncMessage(this.CACHE_REQUEST_MESSAGE, { state });
- });
+ this.log.error("Activity Stream is disabled in Tor Browser.");
+ return { pageInputStream: null, scriptInputStream: null };
},
/**
diff --git a/browser/components/newtab/AboutNewTabService.jsm b/browser/components/newtab/AboutNewTabService.jsm
index 506b521f528c..3962ebf94ab5 100644
--- a/browser/components/newtab/AboutNewTabService.jsm
+++ b/browser/components/newtab/AboutNewTabService.jsm
@@ -286,20 +286,7 @@ class BaseAboutNewTabService {
* the newtab page has no effect on the result of this function.
*/
get defaultURL() {
- // Generate the desired activity stream resource depending on state, e.g.,
- // "resource://activity-stream/prerendered/activity-stream.html"
- // "resource://activity-stream/prerendered/activity-stream-debug.html"
- // "resource://activity-stream/prerendered/activity-stream-noscripts.html"
- return [
- "resource://activity-stream/prerendered/",
- "activity-stream",
- // Debug version loads dev scripts but noscripts separately loads scripts
- this.activityStreamDebug && !this.privilegedAboutProcessEnabled
- ? "-debug"
- : "",
- this.privilegedAboutProcessEnabled ? "-noscripts" : "",
- ".html",
- ].join("");
+ return "about:tor";
}
/*
diff --git a/browser/components/preferences/home.inc.xhtml b/browser/components/preferences/home.inc.xhtml
index 2e900ccd296c..2a7412944d73 100644
--- a/browser/components/preferences/home.inc.xhtml
+++ b/browser/components/preferences/home.inc.xhtml
@@ -37,7 +37,7 @@
class="check-home-page-controlled"
data-preference-related="browser.startup.homepage">
<menupopup>
- <menuitem value="0" data-l10n-id="home-mode-choice-default" />
+ <menuitem value="0" label="&aboutTor.title;" />
<menuitem value="2" data-l10n-id="home-mode-choice-custom" />
<menuitem value="1" data-l10n-id="home-mode-choice-blank" />
</menupopup>
@@ -97,7 +97,7 @@
flex="1"
preference="browser.newtabpage.enabled">
<menupopup>
- <menuitem value="0" data-l10n-id="home-mode-choice-default" />
+ <menuitem value="0" label="&aboutTor.title;" />
<menuitem value="1" data-l10n-id="home-mode-choice-blank" />
</menupopup>
</menulist>
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 3d89ddf00808..c176457c68fd 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -14,7 +14,10 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
-<!DOCTYPE html>
+<!DOCTYPE html [
+<!ENTITY % aboutTorDTD SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
+ %aboutTorDTD;
+]>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:html="http://www.w3.org/1999/xhtml"
diff --git a/browser/modules/HomePage.jsm b/browser/modules/HomePage.jsm
index c903787fde48..bf67b1c5d173 100644
--- a/browser/modules/HomePage.jsm
+++ b/browser/modules/HomePage.jsm
@@ -20,7 +20,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
});
const kPrefName = "browser.startup.homepage";
-const kDefaultHomePage = "about:home";
+const kDefaultHomePage = "about:tor";
const kExtensionControllerPref =
"browser.startup.homepage_override.extensionControlled";
const kHomePageIgnoreListId = "homepage-urls";
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 27511: Add new identity button to toolbar
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit bf62e596827159716a4312b70dfa25abd1333ea4
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Oct 4 19:08:33 2019 +0200
Bug 27511: Add new identity button to toolbar
Also added 'New circuit for this site' button to CustomizableUI, but
not visible by default.
---
browser/base/content/browser.xhtml | 10 ++++++++++
.../components/customizableui/CustomizableUI.jsm | 21 +++++++++++++++++++++
browser/themes/shared/icons/new_circuit.svg | 8 ++++++++
browser/themes/shared/icons/new_identity.svg | 9 +++++++++
browser/themes/shared/jar.inc.mn | 3 +++
browser/themes/shared/menupanel.inc.css | 8 ++++++++
browser/themes/shared/toolbarbutton-icons.inc.css | 8 ++++++++
7 files changed, 67 insertions(+)
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 72c415b8f843..ddf5d766126b 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -1295,6 +1295,16 @@
ondragenter="newWindowButtonObserver.onDragOver(event)"
ondragexit="newWindowButtonObserver.onDragExit(event)"/>
+ <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&torbutton.context_menu.new_identity;"
+ oncommand="torbutton_new_identity();"
+ tooltiptext="&torbutton.context_menu.new_identity;"/>
+
+ <toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&torbutton.context_menu.new_circuit;"
+ oncommand="torbutton_new_circuit();"
+ tooltiptext="&torbutton.context_menu.new_circuit;"/>
+
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
type="checkbox"
diff --git a/browser/components/customizableui/CustomizableUI.jsm b/browser/components/customizableui/CustomizableUI.jsm
index e2f006c73464..1c0064249158 100644
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -68,6 +68,8 @@ const kSubviewEvents = ["ViewShowing", "ViewHiding"];
*/
var kVersion = 16;
+var kTorVersion = 1;
+
/**
* 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
@@ -566,6 +568,20 @@ var CustomizableUIInternal = {
navbarPlacements.push("fxa-toolbar-menu-button");
}
}
+
+ let currentTorVersion = gSavedState.currentTorVersion;
+ if (currentTorVersion < 1 && gSavedState.placements) {
+ let navbarPlacements = gSavedState.placements[CustomizableUI.AREA_NAVBAR];
+ if (navbarPlacements) {
+ let secLevelIndex = navbarPlacements.indexOf("security-level-button");
+ if (secLevelIndex === -1) {
+ let urlbarIndex = navbarPlacements.indexOf("urlbar-container");
+ secLevelIndex = urlbarIndex + 1;
+ navbarPlacements.splice(secLevelIndex, 0, "security-level-button");
+ }
+ navbarPlacements.splice(secLevelIndex + 1, 0, "new-identity-button");
+ }
+ }
},
/**
@@ -2369,6 +2385,10 @@ var CustomizableUIInternal = {
gSavedState.currentVersion = 0;
}
+ if (!("currentTorVersion" in gSavedState)) {
+ gSavedState.currentTorVersion = 0;
+ }
+
gSeenWidgets = new Set(gSavedState.seen || []);
gDirtyAreaCache = new Set(gSavedState.dirtyAreaCache || []);
gNewElementCount = gSavedState.newElementCount || 0;
@@ -2447,6 +2467,7 @@ var CustomizableUIInternal = {
seen: gSeenWidgets,
dirtyAreaCache: gDirtyAreaCache,
currentVersion: kVersion,
+ currentTorVersion: kTorVersion,
newElementCount: gNewElementCount,
};
diff --git a/browser/themes/shared/icons/new_circuit.svg b/browser/themes/shared/icons/new_circuit.svg
new file mode 100644
index 000000000000..e0a93cc83502
--- /dev/null
+++ b/browser/themes/shared/icons/new_circuit.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Icon / New Circuit(a)1.5x</title>
+ <g id="Icon-/-New-Circuit" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M13.4411138,10.1446317 L9.5375349,10.1446317 C8.99786512,10.1446317 8.56164018,10.5818326 8.56164018,11.1205264 C8.56164018,11.6592203 8.99786512,12.0964212 9.5375349,12.0964212 L11.4571198,12.0964212 C10.7554515,13.0479185 9.73466563,13.692009 8.60067597,13.9359827 C8.41818366,13.9720908 8.23276366,14.0033194 8.04734366,14.0218614 C7.97219977,14.0277168 7.89803177,14.0306445 7.82288788,14.0335722 C6.07506044,14.137017 4.290149,13.4499871 3.38647049,11.857327 C2.52280367,10.3349312 2.77263271,8.15966189 3.93687511,6.87343267 C5.12453898,5.56183017 7.44814431,5.04363008 8.21226987,3.38558497 C9.01738301,4.92847451 9.60682342,5.02801577 10.853041,6.15029468 C11.2892659,6.54455615 11.9704404,7.55558307 12.1861132,8.10501179 C12.3051723,8.40949094 12.5013272,9.17947187 12.5013272,9.17947187 L14.2862386,9.17947187 C14.2091429,7.59754654 13.439162,5.96877827 12.2261248,4.93628166 C11.279507,4.13116853 10.5065984,3.84718317 9.77662911,2.8088312 C9.63219669,2.60194152 9.599
99216,2.4565332 9.56290816,2.21646311 C9.53851079,2.00762164 9.54143848,1.78511764 9.62048595,1.53919218 C9.65952174,1.41720534 9.59804037,1.28545955 9.47702943,1.23764071 L6.40296106,0.0167964277 C6.32391359,-0.0134563083 6.23413128,-0.00272146652 6.16679454,0.0480250584 L5.95502539,0.206120002 C5.85743592,0.280288 5.82815908,0.416913259 5.89159223,0.523285783 C6.70060895,1.92564648 6.36978064,2.82542141 5.8984235,3.20211676 C5.4914754,3.4900057 4.99084141,3.72226864 4.63366394,3.95453159 C3.82367132,4.47956294 3.03222071,5.02508808 2.40374451,5.76774396 C0.434388969,8.09427695 0.519291809,12.0046871 2.77165682,14.1077402 C3.65288975,14.9284676 4.70295247,15.4749686 5.81742423,15.7570022 C5.81742423,15.7570022 6.13556591,15.833122 6.21754107,15.8497122 C7.36616915,16.0829511 8.53529102,16.0146384 9.62243774,15.6672199 C9.67416016,15.6525815 9.77174963,15.620377 9.76784605,15.6154975 C10.7730176,15.2700308 11.7049971,14.7010841 12.4652191,13.90573 L12.4652191,15.0241053 C12.4652191,
15.5627992 12.901444,16 13.4411138,16 C13.9798077,16 14.4170085,15.5627992 14.4170085,15.0241053 L14.4170085,11.1205264 C14.4170085,10.5818326 13.9798077,10.1446317 13.4411138,10.1446317" id="Fill-3" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ <path d="M5.107,7.462 C4.405,8.078 4,8.946 4,9.839 C4,10.712 4.422,11.57 5.13,12.132 C5.724,12.607 6.627,12.898 7.642,12.949 L7.642,5.8 C7.39,6.029 7.103,6.227 6.791,6.387 C5.993,6.812 5.489,7.133 5.107,7.462" id="Fill-1" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ </g>
+</svg>
diff --git a/browser/themes/shared/icons/new_identity.svg b/browser/themes/shared/icons/new_identity.svg
new file mode 100644
index 000000000000..91d5b35f7e80
--- /dev/null
+++ b/browser/themes/shared/icons/new_identity.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>New Identity Icon</title>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="New-Identity-Icon" fill="#000000" fill-rule="nonzero">
+ <path d="M4.65687153,14.5532899 L5.79494313,12.0855326 C5.8689125,11.9251399 5.6620883,11.7793527 5.53742729,11.9040137 L3.77194352,13.6694975 L2.32342782,12.2228406 L4.089841,10.4564274 C4.21450201,10.3317664 4.06871482,10.1249422 3.90832206,10.1989116 L1.43773764,11.338287 L0.206601383,10.1087306 C0.0509544211,9.9532834 -0.0167994233,9.75447206 0.00351451705,9.53432844 C0.0238284574,9.31418483 0.154794797,9.13897939 0.330406365,9.0302193 L4.61213917,6.53066101 C4.98542292,6.31331572 5.42541251,6.16259067 5.8659261,6.07796117 C6.63682488,5.92985954 7.40999434,6.06817199 8.09666802,6.42610336 L12.618483,1.910278 C13.0562019,1.47313888 13.7399062,1.45652879 14.1403159,1.87828207 C14.5407256,2.30003536 14.523905,2.96081599 14.0861861,3.39795511 L9.56437119,7.91378047 C9.92258101,8.57753432 10.0391721,9.37155544 9.91292178,10.1416209 C9.85023328,10.5817332 9.67706706,10.9989392 9.45960494,11.3937636 L6.95651989,15.6478297 C6.84761416,15.82321 6.6720026,15.9319701 6.47398108
,15.9964916 C6.25354962,16.0167745 6.0544801,15.9491049 5.89883314,15.7936577 L4.65687153,14.5532899 L4.65687153,14.5532899 Z M6.35600863,9.57888316 C6.35684236,9.57982492 6.35770616,9.58074275 6.35860024,9.58163642 L7.56801202,10.7899206 C7.78820303,11.010009 8.15567242,10.9533982 8.29166823,10.678253 C8.42766403,10.4031079 8.55818512,10.1511975 8.61427424,9.83946755 C8.73630873,9.14856819 8.51477165,8.45005355 8.01189873,7.92920397 C8.01085853,7.92816425 8.00979562,7.92715687 8.00871022,7.92618158 C8.00773493,7.92509618 8.00672754,7.92403327 8.00568783,7.92299307 C7.48483824,7.42012014 6.7863236,7.19858307 6.09542425,7.32061756 C5.78369428,7.37670668 5.53178393,7.50722777 5.25663877,7.64322357 C4.98149362,7.77921937 4.92488284,8.14668876 5.14497116,8.36687978 L6.35325537,9.57629155 C6.35414904,9.57718564 6.35506687,9.57804944 6.35600863,9.57888316 L6.35600863,9.57888316 Z M3.56503003,4.86094581 C3.44279837,4.85716019 3.33693302,4.76594656 3.31450832,4.6450962 C3.29259157,4.5009814
3 3.24425431,4.36089837 3.1719467,4.23194774 C3.04272848,4.15978087 2.90235166,4.11153221 2.75793184,4.08964745 C2.63678145,4.06729735 2.5453314,3.9616241 2.54155161,3.83961366 C2.53777182,3.71760322 2.62276629,3.61489221 2.74265726,3.59658884 C2.88757581,3.57942626 3.02687427,3.53584537 3.15371096,3.46798665 C3.21938702,3.3436261 3.26061987,3.20700605 3.27529255,3.0651408 C3.29205048,2.94466859 3.39451537,2.85825378 3.5172925,2.86104768 C3.6386065,2.86399065 3.74452528,2.95324633 3.76872081,3.07292141 C3.79288781,3.21715288 3.84342323,3.35694342 3.91777207,3.4852254 C4.04615548,3.55876237 4.18583906,3.60883869 4.32991405,3.63297757 C4.45015386,3.6576218 4.53936117,3.76418021 4.54139495,3.88559216 C4.54342874,4.00700411 4.45770065,4.10814717 4.33816215,4.12536877 C4.1960481,4.14067978 4.05931708,4.18249381 3.9349938,4.24866259 C3.86697751,4.37522253 3.82328954,4.51422019 3.80607564,4.65882867 C3.78847982,4.77811508 3.68677836,4.86339193 3.56503003,4.86094581 Z M14.4103464,14.3126948
C14.2513672,14.307719 14.1137716,14.188804 14.0849193,14.0314492 C14.045996,13.7585014 13.9510862,13.4938971 13.8061961,13.2543814 C13.5663773,13.109665 13.301434,13.0148623 13.0281329,12.9759728 C12.8707684,12.946921 12.75198,12.8095493 12.7470672,12.6509372 C12.7421545,12.492325 12.8525523,12.3587997 13.0082799,12.3350024 C13.2816632,12.3044807 13.5433622,12.2185794 13.7775725,12.0824861 C13.9099238,11.8524988 13.992337,11.5955854 14.0197279,11.3275956 C14.0417134,11.1717293 14.1740126,11.0598594 14.3327736,11.0628895 C14.4905572,11.0667732 14.6282205,11.1831391 14.6593783,11.3389665 C14.703143,11.6110771 14.8017156,11.8740418 14.9490566,12.1117486 C15.1872615,12.2578242 15.450159,12.3559923 15.7221615,12.4004323 C15.8783433,12.4324665 15.9942186,12.5709889 15.9968634,12.7288231 C15.9995083,12.8866572 15.8881575,13.0181443 15.7328877,13.0405352 C15.4641157,13.0669716 15.2064728,13.14931 14.9763475,13.2823129 C14.8406047,13.5164173 14.7548186,13.7777086 14.724105,14.0506041 C14.70
09285,14.2056508 14.5685348,14.3162427 14.4103464,14.3126948 Z M8.37194288,2.75251202 C8.23729358,2.7482977 8.12075529,2.6475812 8.09631849,2.5143077 C8.06335201,2.28313133 7.98296703,2.05902158 7.86025062,1.85616098 C7.65713325,1.73359169 7.43273641,1.65329741 7.2012608,1.62035947 C7.06797908,1.59575373 6.9673698,1.47940513 6.96320889,1.34506671 C6.95904797,1.21072829 7.05255074,1.09763741 7.18444606,1.07748204 C7.41599123,1.0516313 7.6376403,0.978876138 7.83600755,0.863610339 C7.94810399,0.668819911 8.01790485,0.45122403 8.04110388,0.224246882 C8.05972477,0.0922341146 8.17177714,-0.00251545243 8.30624168,5.089704e-05 C8.43987839,0.00334026838 8.55647391,0.101897787 8.58286336,0.233877601 C8.61993042,0.464344927 8.70341768,0.687066016 8.82820981,0.888394549 C9.02996027,1.012115 9.25262444,1.09525963 9.4830002,1.13289867 C9.6152802,1.16003037 9.71342219,1.27735361 9.71566226,1.41103311 C9.71790232,1.5447126 9.62359245,1.65607713 9.49208487,1.67504141 C9.26444525,1.69743199 9.0462315
3,1.76716948 8.85132417,1.87981789 C8.73635526,2.07809534 8.66369764,2.2993991 8.63768445,2.53053117 C8.61805481,2.66184983 8.50592239,2.75551697 8.37194288,2.75251202 Z" id="Shape" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 71fea38eb829..e4a3c8d2d41c 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -302,3 +302,6 @@
skin/classic/browser/install-ssb.svg (../shared/install-ssb.svg)
skin/classic/browser/critical.svg (../shared/icons/critical.svg)
skin/classic/browser/webRTC-indicator.css (../shared/webRTC-indicator.css)
+
+ skin/classic/browser/new_circuit.svg (../shared/icons/new_circuit.svg)
+ skin/classic/browser/new_identity.svg (../shared/icons/new_identity.svg)
diff --git a/browser/themes/shared/menupanel.inc.css b/browser/themes/shared/menupanel.inc.css
index c919f32a1454..eae453ec5004 100644
--- a/browser/themes/shared/menupanel.inc.css
+++ b/browser/themes/shared/menupanel.inc.css
@@ -183,3 +183,11 @@ toolbarpaletteitem[place="palette"] > #bookmarks-menu-button,
-moz-context-properties: fill, fill-opacity;
fill-opacity: 0;
}
+
+#appMenuNewIdentity {
+ list-style-image: url("chrome://browser/skin/new_identity.svg");
+}
+
+#appMenuNewCircuit {
+ list-style-image: url("chrome://browser/skin/new_circuit.svg");
+}
diff --git a/browser/themes/shared/toolbarbutton-icons.inc.css b/browser/themes/shared/toolbarbutton-icons.inc.css
index 9514eb1d5338..cf02f871c9a4 100644
--- a/browser/themes/shared/toolbarbutton-icons.inc.css
+++ b/browser/themes/shared/toolbarbutton-icons.inc.css
@@ -233,6 +233,14 @@ toolbar[brighttext] {
list-style-image: url("chrome://browser/skin/new-tab.svg");
}
+#new-identity-button {
+ list-style-image: url("chrome://browser/skin/new_identity.svg");
+}
+
+#new-circuit-button {
+ list-style-image: url("chrome://browser/skin/new_circuit.svg");
+}
+
#privatebrowsing-button {
list-style-image: url("chrome://browser/skin/privateBrowsing.svg");
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 32092: Fix Tor Browser Support link in preferences
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit e61de7b2144aa9d71e70cff0a7832be90a2f3599
Author: Alex Catarineu <acat(a)torproject.org>
Date: Tue Oct 15 22:54:10 2019 +0200
Bug 32092: Fix Tor Browser Support link in preferences
---
browser/components/preferences/preferences.js | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 089533f20ade..586e32e277cb 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -121,10 +121,7 @@ function init_all() {
gotoPref().then(() => {
let helpButton = document.getElementById("helpButton");
- let helpUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
- "preferences";
- helpButton.setAttribute("href", helpUrl);
+ helpButton.setAttribute("href", "https://support.torproject.org/tbb");
document.getElementById("addonsButton").addEventListener("click", e => {
if (e.button >= 2) {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 31563: force reloading search extensions if extensions.enabledScopes has changed
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 30141141c16b492a0ec6e8e6c05076bf58e0f792
Author: Alex Catarineu <acat(a)torproject.org>
Date: Sat Aug 31 16:23:20 2019 +0200
Bug 31563: force reloading search extensions if extensions.enabledScopes has changed
---
toolkit/components/search/SearchService.jsm | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/toolkit/components/search/SearchService.jsm b/toolkit/components/search/SearchService.jsm
index 46b992bec8ec..608f3c475458 100644
--- a/toolkit/components/search/SearchService.jsm
+++ b/toolkit/components/search/SearchService.jsm
@@ -975,6 +975,7 @@ SearchService.prototype = {
let locale = Services.locale.requestedLocale;
let buildID = Services.appinfo.platformBuildID;
let appVersion = Services.appinfo.version;
+ let enabledScopes = Services.prefs.getIntPref("extensions.enabledScopes", -1);
// Allows us to force a cache refresh should the cache format change.
cache.version = SearchUtils.CACHE_VERSION;
@@ -988,6 +989,10 @@ SearchService.prototype = {
cache.appVersion = appVersion;
cache.locale = locale;
+ // Bug 31563: we want to force reloading engines if extensions.enabledScopes
+ // pref changes
+ cache.enabledScopes = enabledScopes;
+
if (gModernConfig) {
cache.builtInEngineList = this._searchOrder;
// For built-in engines we don't want to store all their data in the cache
@@ -1049,7 +1054,8 @@ SearchService.prototype = {
!cache.engines ||
cache.version != SearchUtils.CACHE_VERSION ||
cache.locale != Services.locale.requestedLocale ||
- cache.buildID != buildID;
+ cache.buildID != buildID ||
+ cache.enabledScopes != Services.prefs.getIntPref("extensions.enabledScopes", -1);
let enginesCorrupted = false;
if (!rebuildCache) {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 23247: Communicating security expectations for .onion
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 541724110c8adb2d2019f9fde0a19f13d2283309
Author: Richard Pospesel <richard(a)torproject.org>
Date: Fri Jun 8 13:38:40 2018 -0700
Bug 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
---
browser/base/content/browser-siteIdentity.js | 39 ++++++++-----
browser/base/content/pageinfo/security.js | 64 ++++++++++++++++++----
.../shared/identity-block/identity-block.inc.css | 19 +++++++
.../themes/shared/identity-block/onion-slash.svg | 5 ++
.../themes/shared/identity-block/onion-warning.svg | 6 ++
browser/themes/shared/identity-block/onion.svg | 3 +
browser/themes/shared/jar.inc.mn | 3 +
dom/base/nsContentUtils.cpp | 19 +++++++
dom/base/nsContentUtils.h | 5 ++
dom/base/nsGlobalWindowOuter.cpp | 3 +-
dom/ipc/WindowGlobalActor.cpp | 4 +-
dom/ipc/WindowGlobalChild.cpp | 6 +-
dom/presentation/PresentationRequest.cpp | 3 +-
dom/security/nsMixedContentBlocker.cpp | 16 +++++-
security/manager/ssl/nsSecureBrowserUI.cpp | 12 ++++
15 files changed, 175 insertions(+), 32 deletions(-)
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 1d6f9555b33f..71b12374758d 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -131,6 +131,10 @@ var gIdentityHandler = {
);
},
+ get _uriIsOnionHost() {
+ return this._uriHasHost ? this._uri.host.toLowerCase().endsWith(".onion") : false;
+ },
+
// smart getters
get _identityPopup() {
delete this._identityPopup;
@@ -624,9 +628,9 @@ var gIdentityHandler = {
get pointerlockFsWarningClassName() {
// Note that the fullscreen warning does not handle _isSecureInternalUI.
if (this._uriHasHost && this._isSecureConnection) {
- return "verifiedDomain";
+ return this._uriIsOnionHost ? "onionVerifiedDomain" : "verifiedDomain";
}
- return "unknownIdentity";
+ return this._uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
},
/**
@@ -634,6 +638,10 @@ var gIdentityHandler = {
* built-in (returns false) or imported (returns true).
*/
_hasCustomRoot() {
+ if (!this._secInfo) {
+ return false;
+ }
+
let issuerCert = null;
issuerCert = this._secInfo.succeededCertChain[
this._secInfo.succeededCertChain.length - 1
@@ -676,11 +684,13 @@ var gIdentityHandler = {
"identity.extension.label",
[extensionName]
);
- } else if (this._uriHasHost && this._isSecureConnection) {
+ } else if (this._uriHasHost && this._isSecureConnection && this._secInfo) {
// This is a secure connection.
- this._identityBox.className = "verifiedDomain";
+ // _isSecureConnection implicitly includes onion services, which may not have an SSL certificate
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.className = uriIsOnionHost ? "onionVerifiedDomain" : "verifiedDomain";
if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add("mixedActiveBlocked");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveBlocked" : "mixedActiveBlocked");
}
if (!this._isCertUserOverridden) {
// It's a normal cert, verifier is the CA Org.
@@ -691,17 +701,17 @@ var gIdentityHandler = {
}
} else if (this._isBrokenConnection) {
// This is a secure connection, but something is wrong.
- this._identityBox.className = "unknownIdentity";
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.className = uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
if (this._isMixedActiveContentLoaded) {
- this._identityBox.classList.add("mixedActiveContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveContent" : "mixedActiveContent");
} else if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add(
- "mixedDisplayContentLoadedActiveBlocked"
- );
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContentLoadedActiveBlocked" : "mixedDisplayContentLoadedActiveBlocked");
} else if (this._isMixedPassiveContentLoaded) {
- this._identityBox.classList.add("mixedDisplayContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContent" : "mixedDisplayContent");
} else {
+ // TODO: ignore weak https cipher for onionsites?
this._identityBox.classList.add("weakCipher");
}
} else if (this._isAboutCertErrorPage) {
@@ -713,8 +723,8 @@ var gIdentityHandler = {
(gBrowser.selectedBrowser.documentURI.scheme == "about" ||
gBrowser.selectedBrowser.documentURI.scheme == "chrome"))
) {
- // This is a local resource (and shouldn't be marked insecure).
- this._identityBox.className = "unknownIdentity";
+ // This is a local resource or an onion site (and shouldn't be marked insecure).
+ this._identityBox.className = this._uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
} else {
// This is an insecure connection.
let warnOnInsecure =
@@ -738,7 +748,8 @@ var gIdentityHandler = {
}
if (this._isCertUserOverridden) {
- this._identityBox.classList.add("certUserOverridden");
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.classList.add(uriIsOnionHost ? "onionCertUserOverridden" : "certUserOverridden");
// Cert is trusted because of a security exception, verifier is a special string.
tooltip = gNavigatorBundle.getString(
"identity.identified.verified_by_you"
diff --git a/browser/base/content/pageinfo/security.js b/browser/base/content/pageinfo/security.js
index 966d3fdb3901..4331ebc4b219 100644
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -22,6 +22,13 @@ ChromeUtils.defineModuleGetter(
"PluralForm",
"resource://gre/modules/PluralForm.jsm"
);
+XPCOMUtils.defineLazyGetter(
+ this,
+ "gTorButtonBundle",
+ function() {
+ return Services.strings.createBundle("chrome://torbutton/locale/torbutton.properties");
+ }
+);
var security = {
async init(uri, windowInfo) {
@@ -70,6 +77,11 @@ var security = {
(Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT |
Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT);
var isEV = ui.state & Ci.nsIWebProgressListener.STATE_IDENTITY_EV_TOPLEVEL;
+ var isOnion = false;
+ const hostName = this.windowInfo.hostName;
+ if (hostName && hostName.endsWith(".onion")) {
+ isOnion = true;
+ }
let secInfo = await window.opener.gBrowser.selectedBrowser.browsingContext.currentWindowGlobal.getSecurityInfo();
if (secInfo) {
@@ -95,6 +107,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert,
certChain: certChainArray,
certificateTransparency: undefined,
@@ -154,6 +167,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert: null,
certificateTransparency: null,
};
@@ -350,22 +364,50 @@ async function securityOnLoad(uri, windowInfo) {
}
msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
} else if (info.encryptionStrength > 0) {
- hdr = pkiBundle.getFormattedString(
- "pageInfo_EncryptionWithBitsAndProtocol",
- [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
- );
+ if (!info.isOnion) {
+ hdr = pkiBundle.getFormattedString(
+ "pageInfo_EncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
+ );
+ } else {
+ try {
+ hdr = gTorButtonBundle.formatStringFromName(
+ "pageInfo_OnionEncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
+ );
+ } catch(err) {
+ hdr = "Connection Encrypted (Onion Service, "
+ + info.encryptionAlgorithm
+ + ", "
+ + info.encryptionStrength
+ + " bit keys, "
+ + info.version
+ + ")";
+ }
+ }
msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
} else {
- hdr = pkiBundle.getString("pageInfo_NoEncryption");
- if (windowInfo.hostName != null) {
- msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [
- windowInfo.hostName,
- ]);
+ if (!info.isOnion) {
+ hdr = pkiBundle.getString("pageInfo_NoEncryption");
+ if (windowInfo.hostName != null) {
+ msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [
+ windowInfo.hostName,
+ ]);
+ } else {
+ msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
+ }
+ msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
} else {
- msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
+ try {
+ hdr = gTorButtonBundle.GetStringFromName("pageInfo_OnionEncryption");
+ } catch (err) {
+ hdr = "Connection Encrypted (Onion Service)";
+ }
+
+ msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
+ msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
}
- msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
}
setText("security-technical-shortform", hdr);
setText("security-technical-longform1", msg1);
diff --git a/browser/themes/shared/identity-block/identity-block.inc.css b/browser/themes/shared/identity-block/identity-block.inc.css
index 27a990e08bc8..011fb9f3081c 100644
--- a/browser/themes/shared/identity-block/identity-block.inc.css
+++ b/browser/themes/shared/identity-block/identity-block.inc.css
@@ -172,6 +172,25 @@ toolbar[brighttext] #identity-box[pageproxystate="valid"].chromeUI > #identity-i
list-style-image: url(chrome://browser/skin/connection-mixed-active-loaded.svg);
}
+#identity-box[pageproxystate="valid"].onionUnknownIdentity > #identity-icon,
+#identity-box[pageproxystate="valid"].onionVerifiedDomain > #identity-icon,
+#identity-box[pageproxystate="valid"].onionMixedActiveBlocked > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion.svg);
+ visibility: visible;
+}
+
+#identity-box[pageproxystate="valid"].onionMixedDisplayContent > #identity-icon,
+#identity-box[pageproxystate="valid"].onionMixedDisplayContentLoadedActiveBlocked > #identity-icon,
+#identity-box[pageproxystate="valid"].onionCertUserOverridden > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion-warning.svg);
+ visibility: visible;
+}
+
+#identity-box[pageproxystate="valid"].onionMixedActiveContent > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion-slash.svg);
+ visibility: visible;
+}
+
#permissions-granted-icon {
list-style-image: url(chrome://browser/skin/permissions.svg);
}
diff --git a/browser/themes/shared/identity-block/onion-slash.svg b/browser/themes/shared/identity-block/onion-slash.svg
new file mode 100644
index 000000000000..e7c98b769482
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-slash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M3.409559 13.112147C3.409559 13.112147 8.200807 8.103115 8.200807 8.103115C8.200807 8.103115 8.200807 6.516403 8.200807 6.516403C8.620819 6.516403 9.009719 6.703075 9.274171 6.998639C9.274171 6.998639 10.160863 6.080835 10.160863 6.080835C9.663071 5.567487 8.978607 5.256367 8.200807 5.256367C8.200807 5.256367 8.200807 4.400787 8.200807 4.400787C9.196391 4.400787 10.098639 4.805243 10.736435 5.458595C10.736435 5.458595 11.623127 4.540791 11.623127 4.540791C10.751991 3.669655 9.538623 3.125195 8.200807 3.125195C8.200807 3.125195 8.200807 2.269615 8.200807 2.269615C9.756407 2.269615 11.172003 2.907411 12.214255 3.918551C12.214255 3.918551 13.100947 3.000747 13.100947 3.000747C11.825355 1.756267 10.098639 0.994023 8.185251 0.994023C4.311807 0.994023 1.185051 4.120779 1.185051 7.994223C1.185051 10.016503 2.040631 11.836555 3.409559 13.112147C3.409559 13.112147 3.409559 13.112147 3.409559 13.112147" fill-opacity="context-fill-opacity" fill="context-fill" />
+ <path d="M14.205423 4.416343C14.205423 4.416343 13.287619 5.380815 13.287619 5.380815C13.692075 6.158615 13.909859 7.045307 13.909859 7.994223C13.909859 11.152091 11.358675 13.718831 8.200807 13.718831C8.200807 13.718831 8.200807 12.863251 8.200807 12.863251C10.891995 12.863251 13.069835 10.669855 13.069835 7.978667C13.069835 7.278647 12.929831 6.625295 12.665379 6.018611C12.665379 6.018611 11.685351 7.045307 11.685351 7.045307C11.763131 7.340871 11.809799 7.651991 11.809799 7.963111C11.809799 9.954279 10.207531 11.556547 8.216363 11.572103C8.216363 11.572103 8.216363 10.716523 8.216363 10.716523C9.725295 10.700967 10.954219 9.472043 10.954219 7.963111C10.954219 7.916443 10.954219 7.854219 10.954219 7.807551C10.954219 7.807551 4.887379 14.169955 4.887379 14.169955C5.867407 14.698859 6.987439 14.994423 8.185251 14.994423C12.058695 14.994423 15.185451 11.867667 15.185451 7.994223C15.185451 6.687519 14.827663 5.474151 14.205423 4.416343C14.205423 4.416343 14.205423 4.416343 14.205423
4.416343" fill-opacity="context-fill-opacity" fill="context-fill" />
+ <path d="M1.791735 15.461103C1.402835 15.461103 1.045047 15.212207 0.889487 14.838863C0.733927 14.465519 0.827267 14.014395 1.107271 13.734387C1.107271 13.734387 13.458735 0.822907 13.458735 0.822907C13.847635 0.434007 14.454319 0.449563 14.827663 0.838467C15.201007 1.227367 15.216563 1.865163 14.843223 2.269619C14.843223 2.269619 2.491759 15.181099 2.491759 15.181099C2.289531 15.352215 2.040635 15.461107 1.791739 15.461107C1.791739 15.461107 1.791735 15.461103 1.791735 15.461103" fill="#ff0039" />
+</svg>
diff --git a/browser/themes/shared/identity-block/onion-warning.svg b/browser/themes/shared/identity-block/onion-warning.svg
new file mode 100644
index 000000000000..d42a7dab7246
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-warning.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M15.8630401732 14.127C15.8630401732 14.127 12.6649598146 7.716 12.6649598146 7.716C12.4469357756 7.279935 12.0003277145 7.0043454 11.5116853046 7.0043454C11.0230428947 7.0043454 10.5764348336 7.279935 10.3584107946 7.716C10.3584107946 7.716 7.1573218938 14.127 7.1573218938 14.127C6.95646770542 14.527294 6.97733695982 15.002669 7.21250176686 15.38393C7.4476665739 15.765191 7.86372750208 15.998191 8.3126020986 16.0C8.3126020986 16.0 14.7077599684 16.0 14.7077599684 16.0C15.1566344646 15.9982 15.572695794 15.765191 15.8078605007 15.38393C16.0430252075 15.002669 16.0638944619 14.527294 15.8630371647 14.127C15.8630371647 14.127 15.8630401732 14.127 15.8630401732 14.127" fill="#ffbf00" />
+ <path d="M11.5106824572 8.0C11.6210488221 7.99691 11.7223975832 8.060469 11.7674113916 8.161C11.7674113916 8.161 14.9644889028 14.573 14.9644889028 14.573C15.0126456349 14.66534 15.0076715118 14.776305 14.9514518866 14.864C14.9011992034 14.95041 14.8079143382 15.002854 14.7077599684 15.001048C14.7077599684 15.001048 8.3126020986 15.001048 8.3126020986 15.001048C8.2124480296 15.002854 8.1191607576 14.950409 8.0689101804 14.864C8.0124814615 14.77637 8.0075053327 14.665298 8.0558731642 14.573C8.0558731642 14.573 11.2529506754 8.161 11.2529506754 8.161C11.2981038796 8.0601247 11.3999560701 7.9964997 11.5106824572 8.0M11.5106824572 6.9999751C11.0194557096 6.9969427 10.5701148893 7.2754275 10.3554022524 7.716C10.3554022524 7.716 7.1573218938 14.127 7.1573218938 14.127C6.95646770542 14.527294 6.97733695982 15.002669 7.21250176686 15.38393C7.4476665739 15.765191 7.86372750208 15.998191 8.3126020986 16.0C8.3126020986 16.0 14.7077599684 16.0 14.7077599684 16.0C15.1566344646 15.9982 15.57269
5794 15.765191 15.8078605007 15.38393C16.0430252075 15.002669 16.0638944619 14.527294 15.8630371647 14.127C15.8630371647 14.127 12.6649598146 7.716 12.6649598146 7.716C12.4504036219 7.2757546 12.0015481798 6.9973287 11.5106824572 6.9999751C11.5106824572 6.9999751 11.5106824572 6.9999751 11.5106824572 6.9999751" opacity="0.35" fill="#d76e00" />
+ <path d="M11.5327451 12.0C11.8096733867 12.0 12.0341688 11.776142 12.0341688 11.5C12.0341688 11.5 12.0341688 9.5 12.0341688 9.5C12.0341688 9.2238576 11.8096733867 9.0 11.5327451 9.0C11.2558168133 9.0 11.0313214 9.2238576 11.0313214 9.5C11.0313214 9.5 11.0313214 11.5 11.0313214 11.5C11.0313214 11.776142 11.2558168133 12.0 11.5327451 12.0C11.5327451 12.0 11.5327451 12.0 11.5327451 12.0M11.5327451 12.809C11.1500294496 12.809 10.8397775466 13.118371 10.8397775466 13.5C10.8397775466 13.881629 11.1500294496 14.191 11.5327451 14.191C11.9154607504 14.191 12.2257126534 13.881629 12.2257126534 13.5C12.2257126534 13.118371 11.9154607504 12.809 11.5327451 12.809C11.5327451 12.809 11.5327451 12.809 11.5327451 12.809" fill="#ffffff" />
+ <path d="M7.08030321348 6.552C7.90163523408 6.56 8.5645173655 7.225 8.5645173655 8.046C8.5645173655 8.866 7.90163523408 9.532 7.08030321348 9.54C7.08030321348 9.54 7.08030321348 6.552 7.08030321348 6.552M6.30610502068 13.756C6.30610502068 13.756 9.4991711423 7.353 9.4991711423 7.353C9.5453021227 7.259 9.6144985933 7.184 9.6716608951 7.098C9.2845617987 6.039 8.2756973143 5.277 7.08030321348 5.271C7.08030321348 5.271 7.08030321348 4.417 7.08030321348 4.417C8.5043465215 4.423 9.7238089599 5.251 10.3164917733 6.443C10.6795225321 6.21 11.1067355245 6.074 11.5519997701 6.074C11.5519997701 6.074 11.5620282441 6.074 11.5620282441 6.074C11.5620282441 6.074 11.5640339389 6.074 11.5640339389 6.074C11.5660396337 6.074 11.5690481759 6.075 11.5710538707 6.075C10.8108955415 4.35 9.0900094031 3.141 7.08030321348 3.135C7.08030321348 3.135 7.08030321348 2.281 7.08030321348 2.281C9.6716608951 2.288 11.8618796167 3.993 12.5889439817 6.34C13.0231769059 6.561 13.3922247491 6.9 13.6088397875 7.344C13.60
88397875 7.344 14.1162805719 8.361 14.1162805719 8.361C14.1202919615 8.256 14.1313232829 8.152 14.1313232829 8.046C14.1313232829 4.155 10.9683425833 1.0 7.06626334988 1.0C3.16318126908 1.0 0.00020056948 4.155 0.00020056948 8.046C0.00020056948 11.603 2.64571201068 14.536 6.08046435568 15.015C6.03633907008 14.595 6.10252699848 14.16 6.30610502068 13.756C6.30610502068 13.756 6.30610502068 13.756 6.30610502068 13.756" fill-opacity="context-fill-opacity" fill="context-fill" />
+</svg>
diff --git a/browser/themes/shared/identity-block/onion.svg b/browser/themes/shared/identity-block/onion.svg
new file mode 100644
index 000000000000..b123a9786acc
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M8.01435945 13.726867125C8.01435945 13.726867125 8.01435945 12.87830525 8.01435945 12.87830525C10.70227825 12.87051775 12.87869375 10.689666 12.87869375 7.9998060125C12.87869375 5.310140275 10.70227825 3.1292621 8.01435945 3.121500325C8.01435945 3.121500325 8.01435945 2.272938975 8.01435945 2.272938975C11.170899375 2.280892725 13.727061375 4.8415202875 13.727061375 7.9998060125C13.727061375 11.158285375 11.170899375 13.719105 8.01435945 13.726867125C8.01435945 13.726867125 8.01435945 13.726867125 8.01435945 13.726867125M8.01435945 10.756805625C9.5304373 10.74884925 10.75758175 9.5180185125 10.75758175 7.9998060125C10.75758175 6.4817875 9.5304373 5.2509564125 8.01435945 5.2430005625C8.01435945 5.2430005625 8.01435945 4.3946332875 8.01435945 4.3946332875C9.999251625 4.4023945375 11.60614275 6.013167425 11.60614275 7.9998060125C11.60614275 9.986639375 9.999251625 11.597411125 8.01435945 11.605172375C8.01435945 11.605172375 8.01435945 10.756805625 8.01435945 10.756805625M8.01
435945 6.5157454625C8.8276046625 6.5235067125 9.484837025 7.184620575 9.484837025 7.9998060125C9.484837025 8.815185875 8.8276046625 9.4762985125 8.01435945 9.4840608125C8.01435945 9.4840608125 8.01435945 6.5157454625 8.01435945 6.5157454625M1.0 7.9998060125C1.0 11.8659705 4.1338360375 15.0 8.0000000875 15.0C11.8659705 15.0 15.0 11.8659705 15.0 7.9998060125C15.0 4.1338360375 11.8659705 1.0 8.0000000875 1.0C4.1338360375 1.0 1.0 4.1338360375 1.0 7.9998060125C1.0 7.9998060125 1.0 7.9998060125 1.0 7.9998060125" fill-rule="even-odd" fill-opacity="context-fill-opacity" fill="context-fill" />
+</svg>
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 8cfe1b69c371..71fea38eb829 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -57,6 +57,9 @@
skin/classic/browser/connection-secure.svg (../shared/identity-block/connection-secure.svg)
skin/classic/browser/connection-mixed-passive-loaded.svg (../shared/identity-block/connection-mixed-passive-loaded.svg)
skin/classic/browser/connection-mixed-active-loaded.svg (../shared/identity-block/connection-mixed-active-loaded.svg)
+ skin/classic/browser/onion.svg (../shared/identity-block/onion.svg)
+ skin/classic/browser/onion-slash.svg (../shared/identity-block/onion-slash.svg)
+ skin/classic/browser/onion-warning.svg (../shared/identity-block/onion-warning.svg)
skin/classic/browser/info.svg (../shared/info.svg)
skin/classic/browser/newInstall.css (../shared/newInstall.css)
skin/classic/browser/newInstallPage.css (../shared/newInstallPage.css)
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index da92cb4967b0..2f090de19231 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -9057,6 +9057,25 @@ bool nsContentUtils::ComputeIsSecureContext(nsIChannel* aChannel) {
return principal->GetIsOriginPotentiallyTrustworthy();
}
+/* static */ bool nsContentUtils::DocumentHasOnionURI(Document* aDocument) {
+ if (!aDocument) {
+ return false;
+ }
+
+ nsIURI* uri = aDocument->GetDocumentURI();
+ if (!uri) {
+ return false;
+ }
+
+ nsAutoCString host;
+ if (NS_SUCCEEDED(uri->GetHost(host))) {
+ bool hasOnionURI = StringEndsWith(host, NS_LITERAL_CSTRING(".onion"));
+ return hasOnionURI;
+ }
+
+ return false;
+}
+
/* static */
void nsContentUtils::TryToUpgradeElement(Element* aElement) {
NodeInfo* nodeInfo = aElement->NodeInfo();
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
index b8dc0092e32b..08a117fc2803 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -2999,6 +2999,11 @@ class nsContentUtils {
*/
static bool HttpsStateIsModern(Document* aDocument);
+ /**
+ * Returns true of the document's URI is a .onion
+ */
+ static bool DocumentHasOnionURI(Document* aDocument);
+
/**
* Returns true if the channel is for top-level window and is over secure
* context.
diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp
index da9d56e843a2..abe1e56d9714 100644
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -1868,7 +1868,8 @@ bool nsGlobalWindowOuter::ComputeIsSecureContext(Document* aDocument,
return false;
}
- if (nsContentUtils::HttpsStateIsModern(aDocument)) {
+ if (nsContentUtils::HttpsStateIsModern(aDocument) ||
+ nsContentUtils::DocumentHasOnionURI(aDocument)) {
return true;
}
diff --git a/dom/ipc/WindowGlobalActor.cpp b/dom/ipc/WindowGlobalActor.cpp
index 25204e1fc20e..b6dfa63fe664 100644
--- a/dom/ipc/WindowGlobalActor.cpp
+++ b/dom/ipc/WindowGlobalActor.cpp
@@ -14,6 +14,7 @@
#include "mozilla/dom/JSWindowActorParent.h"
#include "mozilla/dom/JSWindowActorChild.h"
#include "mozilla/net/CookieJarSettings.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
namespace mozilla {
namespace dom {
@@ -118,7 +119,8 @@ WindowGlobalInit WindowGlobalActor::WindowInitializer(
nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(doc->GetDocumentURI());
if (innerDocURI) {
mozilla::Get<WindowContext::IDX_IsSecure>(init.context().mFields) =
- innerDocURI->SchemeIs("https");
+ innerDocURI->SchemeIs("https") ||
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI);
}
nsCOMPtr<nsIChannel> mixedChannel;
aWindow->GetDocShell()->GetMixedContentChannel(getter_AddRefs(mixedChannel));
diff --git a/dom/ipc/WindowGlobalChild.cpp b/dom/ipc/WindowGlobalChild.cpp
index d545661be835..142c35ea4e17 100644
--- a/dom/ipc/WindowGlobalChild.cpp
+++ b/dom/ipc/WindowGlobalChild.cpp
@@ -38,6 +38,8 @@
#include "nsIHttpChannelInternal.h"
#include "nsIURIMutator.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
+
using namespace mozilla::ipc;
using namespace mozilla::dom::ipc;
@@ -223,7 +225,9 @@ void WindowGlobalChild::OnNewDocument(Document* aDocument) {
nsCOMPtr<nsIURI> innerDocURI =
NS_GetInnermostURI(aDocument->GetDocumentURI());
if (innerDocURI) {
- txn.SetIsSecure(innerDocURI->SchemeIs("https"));
+ txn.SetIsSecure(
+ innerDocURI->SchemeIs("https") ||
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI));
}
nsCOMPtr<nsIChannel> mixedChannel;
mWindowGlobal->GetDocShell()->GetMixedContentChannel(
diff --git a/dom/presentation/PresentationRequest.cpp b/dom/presentation/PresentationRequest.cpp
index 020cbda1c1b1..35c0ae575568 100644
--- a/dom/presentation/PresentationRequest.cpp
+++ b/dom/presentation/PresentationRequest.cpp
@@ -468,7 +468,8 @@ bool PresentationRequest::IsProhibitMixedSecurityContexts(Document* aDocument) {
nsCOMPtr<Document> doc = aDocument;
while (doc && !nsContentUtils::IsChromeDoc(doc)) {
- if (nsContentUtils::HttpsStateIsModern(doc)) {
+ if (nsContentUtils::HttpsStateIsModern(doc) ||
+ nsContentUtils::DocumentHasOnionURI(doc)) {
return true;
}
diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp
index 477c1543ab20..ee0fddeb3e2c 100644
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -587,8 +587,8 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
- // Check the parent scheme. If it is not an HTTPS page then mixed content
- // restrictions do not apply.
+ // Check the parent scheme. If it is not an HTTPS or .onion page then mixed
+ // content restrictions do not apply.
nsCOMPtr<nsIURI> innerRequestingLocation =
NS_GetInnermostURI(requestingLocation);
if (!innerRequestingLocation) {
@@ -599,6 +599,17 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
bool parentIsHttps = innerRequestingLocation->SchemeIs("https");
if (!parentIsHttps) {
+ bool parentIsOnion = IsPotentiallyTrustworthyOnion(innerRequestingLocation);
+ if (!parentIsOnion) {
+ *aDecision = ACCEPT;
+ return NS_OK;
+ }
+ }
+
+ bool isHttpScheme = innerContentLocation->SchemeIs("http");
+ // .onion URLs are encrypted and authenticated. Don't treat them as mixed
+ // content if potentially trustworthy (i.e. whitelisted).
+ if (isHttpScheme && IsPotentiallyTrustworthyOnion(innerContentLocation)) {
*aDecision = ACCEPT;
return NS_OK;
}
@@ -618,7 +629,6 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
- bool isHttpScheme = innerContentLocation->SchemeIs("http");
if (isHttpScheme && IsPotentiallyTrustworthyOrigin(innerContentLocation)) {
*aDecision = ACCEPT;
return NS_OK;
diff --git a/security/manager/ssl/nsSecureBrowserUI.cpp b/security/manager/ssl/nsSecureBrowserUI.cpp
index fd9a26d42b79..0dd53ded3708 100644
--- a/security/manager/ssl/nsSecureBrowserUI.cpp
+++ b/security/manager/ssl/nsSecureBrowserUI.cpp
@@ -9,6 +9,7 @@
#include "mozilla/Logging.h"
#include "mozilla/Unused.h"
#include "mozilla/dom/Document.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
#include "nsContentUtils.h"
#include "nsIChannel.h"
#include "nsDocShell.h"
@@ -136,6 +137,17 @@ void nsSecureBrowserUI::UpdateForLocationOrMixedContentChange() {
}
}
}
+
+ // any protocol routed over tor is secure
+ if (!(mState & nsIWebProgressListener::STATE_IS_SECURE)) {
+ nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(win->GetDocumentURI());
+ if (innerDocURI &&
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI)) {
+ MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, (" is onion"));
+ mState = (mState & ~nsIWebProgressListener::STATE_IS_INSECURE) |
+ nsIWebProgressListener::STATE_IS_SECURE;
+ }
+ }
}
// Add the mixed content flags from the window
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 27604: Fix addon issues when moving TB directory
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 52651d7a379d20d8cccf0f3d291085641f31b5a1
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Oct 30 10:44:48 2019 +0100
Bug 27604: Fix addon issues when moving TB directory
---
toolkit/mozapps/extensions/internal/XPIProvider.jsm | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
index bf31932b59f1..5e467fb4f14c 100644
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -485,7 +485,7 @@ class XPIState {
// Builds prior to be 1512436 did not include the rootURI property.
// If we're updating from such a build, add that property now.
- if (!("rootURI" in this) && this.file) {
+ if (this.file) {
this.rootURI = getURIForResourceInFile(this.file, "").spec;
}
@@ -498,7 +498,10 @@ class XPIState {
saved.currentModifiedTime != this.lastModifiedTime
) {
this.lastModifiedTime = saved.currentModifiedTime;
- } else if (saved.currentModifiedTime === null) {
+ } else if (
+ saved.currentModifiedTime === null &&
+ (!this.file || !this.file.exists())
+ ) {
this.missing = true;
}
}
@@ -1439,6 +1442,7 @@ var XPIStates = {
if (oldState[loc.name]) {
loc.restore(oldState[loc.name]);
+ changed = changed || loc.path != oldState[loc.name].path;
}
changed = changed || loc.changed;
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 31740: Remove some unnecessary RemoteSettings instances
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit ab6bc1c8896fac529d6bd10d3f0186383fcb63ff
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Oct 16 23:01:12 2019 +0200
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
---
.../url-classifier/UrlClassifierFeatureBase.cpp | 2 +-
netwerk/url-classifier/components.conf | 6 ------
security/manager/ssl/RemoteSecuritySettings.jsm | 22 ++++++++++++++++++++++
services/settings/IDBHelpers.jsm | 4 ++++
services/settings/dumps/blocklists/moz.build | 1 -
services/settings/dumps/main/moz.build | 5 -----
services/settings/dumps/security-state/moz.build | 1 -
.../components/antitracking/antitracking.manifest | 2 +-
toolkit/components/antitracking/components.conf | 7 -------
toolkit/components/search/SearchService.jsm | 2 --
10 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
index 9bc7fc5d6e9a..3fb3b74a4f08 100644
--- a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
+++ b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
@@ -76,7 +76,7 @@ void UrlClassifierFeatureBase::InitializePreferences() {
nsCOMPtr<nsIUrlClassifierSkipListService> skipListService =
do_GetService("@mozilla.org/url-classifier/skip-list-service;1");
- if (NS_WARN_IF(!skipListService)) {
+ if (!skipListService) {
return;
}
diff --git a/netwerk/url-classifier/components.conf b/netwerk/url-classifier/components.conf
index 7f49d94b6488..b2e667247317 100644
--- a/netwerk/url-classifier/components.conf
+++ b/netwerk/url-classifier/components.conf
@@ -13,10 +13,4 @@ Classes = [
'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton',
'headers': ['mozilla/net/ChannelClassifierService.h'],
},
- {
- 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}',
- 'contract_ids': ['@mozilla.org/url-classifier/skip-list-service;1'],
- 'jsm': 'resource://gre/modules/UrlClassifierSkipListService.jsm',
- 'constructor': 'UrlClassifierSkipListService',
- },
]
diff --git a/security/manager/ssl/RemoteSecuritySettings.jsm b/security/manager/ssl/RemoteSecuritySettings.jsm
index 199eeb5b58e1..96d6a7a2de48 100644
--- a/security/manager/ssl/RemoteSecuritySettings.jsm
+++ b/security/manager/ssl/RemoteSecuritySettings.jsm
@@ -350,6 +350,16 @@ var RemoteSecuritySettings = {
class IntermediatePreloads {
constructor() {
+ this.maybeInit();
+ }
+
+ maybeInit() {
+ if (
+ this.client ||
+ !Services.prefs.getBoolPref(INTERMEDIATES_ENABLED_PREF, true)
+ ) {
+ return;
+ }
this.client = RemoteSettings(
Services.prefs.getCharPref(INTERMEDIATES_COLLECTION_PREF),
{
@@ -379,6 +389,7 @@ class IntermediatePreloads {
);
return;
}
+ this.maybeInit();
// Download attachments that are awaiting download, up to a max.
const maxDownloadsPerRun = Services.prefs.getIntPref(
@@ -704,6 +715,16 @@ function compareFilters(filterA, filterB) {
class CRLiteFilters {
constructor() {
+ this.maybeInit();
+ }
+
+ maybeInit() {
+ if (
+ this.client ||
+ !Services.prefs.getBoolPref(CRLITE_FILTERS_ENABLED_PREF, true)
+ ) {
+ return;
+ }
this.client = RemoteSettings(
Services.prefs.getCharPref(CRLITE_FILTERS_COLLECTION_PREF),
{
@@ -729,6 +750,7 @@ class CRLiteFilters {
);
return;
}
+ this.maybeInit();
let current = await this.client.db.list();
let fullFilters = current.filter(filter => !filter.incremental);
if (fullFilters.length < 1) {
diff --git a/services/settings/IDBHelpers.jsm b/services/settings/IDBHelpers.jsm
index 5dc59c3687ef..010a5ea82987 100644
--- a/services/settings/IDBHelpers.jsm
+++ b/services/settings/IDBHelpers.jsm
@@ -188,6 +188,10 @@ async function openIDB(allowUpgrades = true) {
});
}
if (event.oldVersion < 3) {
+ // Clear existing stores for a fresh start
+ transaction.objectStore("records").clear();
+ transaction.objectStore("timestamps").clear();
+ transaction.objectStore("collections").clear();
// Attachment store
db.createObjectStore("attachments", {
keyPath: ["cid", "attachmentId"],
diff --git a/services/settings/dumps/blocklists/moz.build b/services/settings/dumps/blocklists/moz.build
index 1683ab6aafa4..dd0bad30f19a 100644
--- a/services/settings/dumps/blocklists/moz.build
+++ b/services/settings/dumps/blocklists/moz.build
@@ -9,7 +9,6 @@ with Files('**'):
# The addons blocklist is also in mobile/android/installer/package-manifest.in
FINAL_TARGET_FILES.defaults.settings.blocklists += ['addons-bloomfilters.json',
- 'addons.json',
'gfx.json',
'plugins.json']
diff --git a/services/settings/dumps/main/moz.build b/services/settings/dumps/main/moz.build
index 3628fa00b5e6..e25fc4214042 100644
--- a/services/settings/dumps/main/moz.build
+++ b/services/settings/dumps/main/moz.build
@@ -3,15 +3,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
FINAL_TARGET_FILES.defaults.settings.main += [
- 'anti-tracking-url-decoration.json',
'example.json',
'hijack-blocklists.json',
'language-dictionaries.json',
- 'onboarding.json',
- 'search-config.json',
'search-default-override-allowlist.json',
- 'sites-classification.json',
- 'url-classifier-skip-urls.json',
]
if CONFIG['MOZ_BUILD_APP'] == 'browser':
diff --git a/services/settings/dumps/security-state/moz.build b/services/settings/dumps/security-state/moz.build
index d8f8227a0278..37410d0fb054 100644
--- a/services/settings/dumps/security-state/moz.build
+++ b/services/settings/dumps/security-state/moz.build
@@ -3,7 +3,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
FINAL_TARGET_FILES.defaults.settings['security-state'] += [
- 'intermediates.json',
'onecrl.json',
]
diff --git a/toolkit/components/antitracking/antitracking.manifest b/toolkit/components/antitracking/antitracking.manifest
index 5eb37f9a3f99..872e6af07575 100644
--- a/toolkit/components/antitracking/antitracking.manifest
+++ b/toolkit/components/antitracking/antitracking.manifest
@@ -1 +1 @@
-category profile-after-change URLDecorationAnnotationsService @mozilla.org/tracking-url-decoration-service;1 process=main
+# category profile-after-change URLDecorationAnnotationsService @mozilla.org/tracking-url-decoration-service;1 process=main
diff --git a/toolkit/components/antitracking/components.conf b/toolkit/components/antitracking/components.conf
index ddd824522c16..cd46ed1046d5 100644
--- a/toolkit/components/antitracking/components.conf
+++ b/toolkit/components/antitracking/components.conf
@@ -11,13 +11,6 @@ Classes = [
'jsm': 'resource://gre/modules/TrackingDBService.jsm',
'constructor': 'TrackingDBService',
},
- {
- 'cid': '{5874af6d-5719-4e1b-b155-ef4eae7fcb32}',
- 'contract_ids': ['@mozilla.org/tracking-url-decoration-service;1'],
- 'jsm': 'resource://gre/modules/URLDecorationAnnotationsService.jsm',
- 'constructor': 'URLDecorationAnnotationsService',
- 'processes': ProcessSelector.MAIN_PROCESS_ONLY,
- },
{
'cid': '{90d1fd17-2018-4e16-b73c-a04a26fa6dd4}',
'contract_ids': ['@mozilla.org/purge-tracker-service;1'],
diff --git a/toolkit/components/search/SearchService.jsm b/toolkit/components/search/SearchService.jsm
index 608f3c475458..23cb3daa9fac 100644
--- a/toolkit/components/search/SearchService.jsm
+++ b/toolkit/components/search/SearchService.jsm
@@ -573,8 +573,6 @@ SearchService.prototype = {
)
.finally(() => (this._ensureKnownRegionPromise = null));
- this._setupRemoteSettings().catch(Cu.reportError);
-
await this._loadEngines(cache);
// If we've got this far, but the application is now shutting down,
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 32220: Improve the letterboxing experience
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit d7c8314d431f7309eee52a9b68da4a3c1cae44c8
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Oct 28 17:42:17 2019 -0700
Bug 32220: Improve the letterboxing experience
CSS and JS changes to alter the UX surrounding letterboxing. The
browser element containing page content is now anchored to the bottom
of the toolbar, and the remaining letterbox margin is the same color
as the firefox chrome. The letterbox margin and border are tied to
the currently selected theme.
Also adds a 'needsLetterbox' property to tabbrowser.xml to fix a race
condition present when using the 'isEmpty' property. Using 'isEmpty'
as a proxy for 'needsLetterbox' resulted in over-zealous/unnecessary
letterboxing of about:blank tabs.
---
browser/base/content/browser.css | 8 ++
browser/base/content/tabbrowser-tab.js | 9 +++
browser/themes/shared/tabs.inc.css | 6 ++
.../components/resistfingerprinting/RFPHelper.jsm | 94 +++++++++++++++++++---
4 files changed, 105 insertions(+), 12 deletions(-)
diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
index 808c03e88223..a0b1bf4a8951 100644
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -85,6 +85,14 @@ body {
display: none;
}
+
+.browserStack > browser.letterboxing {
+ border-color: var(--chrome-content-separator-color);
+ border-style: solid;
+ border-width : 1px;
+ border-top: none;
+}
+
%ifdef MENUBAR_CAN_AUTOHIDE
#toolbar-menubar[autohide="true"] {
overflow: hidden;
diff --git a/browser/base/content/tabbrowser-tab.js b/browser/base/content/tabbrowser-tab.js
index 183eff1bab86..7f376ab1d122 100644
--- a/browser/base/content/tabbrowser-tab.js
+++ b/browser/base/content/tabbrowser-tab.js
@@ -225,6 +225,15 @@
return true;
}
+ get needsLetterbox() {
+ let browser = this.linkedBrowser;
+ if (isBlankPageURL(browser.currentURI.spec)) {
+ return false;
+ }
+
+ return true;
+ }
+
get lastAccessed() {
return this._lastAccessed == Infinity ? Date.now() : this._lastAccessed;
}
diff --git a/browser/themes/shared/tabs.inc.css b/browser/themes/shared/tabs.inc.css
index b47842af766c..019da6ecf76f 100644
--- a/browser/themes/shared/tabs.inc.css
+++ b/browser/themes/shared/tabs.inc.css
@@ -33,6 +33,12 @@
background-color: #f9f9fa;
}
+/* extend down the toolbar's colors when letterboxing is enabled*/
+#tabbrowser-tabpanels.letterboxing {
+ background-color: var(--toolbar-bgcolor);
+ background-image: var(--toolbar-bgimage);
+}
+
:root[privatebrowsingmode=temporary] #tabbrowser-tabpanels {
/* Value for --in-content-page-background in aboutPrivateBrowsing.css */
background-color: #25003e;
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 49010d1c8cb1..b906a067fd63 100644
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -40,6 +40,7 @@ class _RFPHelper {
// ============================================================================
constructor() {
this._initialized = false;
+ this._borderDimensions = null;
}
init() {
@@ -361,6 +362,24 @@ class _RFPHelper {
});
}
+ getBorderDimensions(aBrowser) {
+ if (this._borderDimensions) {
+ return this._borderDimensions;
+ }
+
+ const win = aBrowser.ownerGlobal;
+ const browserStyle = win.getComputedStyle(aBrowser);
+
+ this._borderDimensions = {
+ top : parseInt(browserStyle.borderTopWidth),
+ right: parseInt(browserStyle.borderRightWidth),
+ bottom : parseInt(browserStyle.borderBottomWidth),
+ left : parseInt(browserStyle.borderLeftWidth),
+ };
+
+ return this._borderDimensions;
+ }
+
_addOrClearContentMargin(aBrowser) {
let tab = aBrowser.getTabBrowser().getTabForBrowser(aBrowser);
@@ -369,9 +388,13 @@ class _RFPHelper {
return;
}
+ // we add the letterboxing class even if the content does not need letterboxing
+ // in which case margins are set such that the borders are hidden
+ aBrowser.classList.add("letterboxing");
+
// We should apply no margin around an empty tab or a tab with system
// principal.
- if (tab.isEmpty || aBrowser.contentPrincipal.isSystemPrincipal) {
+ if (!tab.needsLetterbox || aBrowser.contentPrincipal.isSystemPrincipal) {
this._clearContentViewMargin(aBrowser);
} else {
this._roundContentView(aBrowser);
@@ -539,10 +562,29 @@ class _RFPHelper {
// Calculating the margins around the browser element in order to round the
// content viewport. We will use a 200x100 stepping if the dimension set
// is not given.
- let margins = calcMargins(containerWidth, containerHeight);
+
+ const borderDimensions = this.getBorderDimensions(aBrowser);
+ const marginDims = calcMargins(containerWidth, containerHeight - borderDimensions.top);
+
+ let margins = {
+ top : 0,
+ right : 0,
+ bottom : 0,
+ left : 0,
+ };
+
+ // snap browser element to top
+ margins.top = 0;
+ // and leave 'double' margin at the bottom
+ margins.bottom = 2 * marginDims.height - borderDimensions.bottom;
+ // identical margins left and right
+ margins.right = marginDims.width - borderDimensions.right;
+ margins.left = marginDims.width - borderDimensions.left;
+
+ const marginStyleString = `${margins.top}px ${margins.right}px ${margins.bottom}px ${margins.left}px`;
// If the size of the content is already quantized, we do nothing.
- if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ if (aBrowser.style.margin === marginStyleString) {
log("_roundContentView[" + logId + "] is_rounded == true");
if (this._isLetterboxingTesting) {
log(
@@ -563,19 +605,35 @@ class _RFPHelper {
"_roundContentView[" +
logId +
"] setting margins to " +
- margins.width +
- " x " +
- margins.height
+ marginStyleString
);
- // One cannot (easily) control the color of a margin unfortunately.
- // An initial attempt to use a border instead of a margin resulted
- // in offset event dispatching; so for now we use a colorless margin.
- aBrowser.style.margin = `${margins.height}px ${margins.width}px`;
+
+ // The margin background color is determined by the background color of the
+ // window's tabpanels#tabbrowser-tabpanels element
+ aBrowser.style.margin = marginStyleString;
});
}
_clearContentViewMargin(aBrowser) {
+ const borderDimensions = this.getBorderDimensions(aBrowser);
+ // set the margins such that the browser elements border is visible up top, but
+ // are rendered off-screen on the remaining sides
+ let margins = {
+ top : 0,
+ right : -borderDimensions.right,
+ bottom : -borderDimensions.bottom,
+ left : -borderDimensions.left,
+ };
+ const marginStyleString = `${margins.top}px ${margins.right}px ${margins.bottom}px ${margins.left}px`;
+
+ aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.style.margin = marginStyleString;
+ });
+ }
+
+ _removeLetterboxing(aBrowser) {
aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.classList.remove("letterboxing");
aBrowser.style.margin = "";
});
}
@@ -593,6 +651,11 @@ class _RFPHelper {
aWindow.gBrowser.addTabsProgressListener(this);
aWindow.addEventListener("TabOpen", this);
+ const tabPanel = aWindow.document.getElementById("tabbrowser-tabpanels");
+ if (tabPanel) {
+ tabPanel.classList.add("letterboxing");
+ }
+
// Rounding the content viewport.
this._updateMarginsForTabsInWindow(aWindow);
}
@@ -616,10 +679,17 @@ class _RFPHelper {
tabBrowser.removeTabsProgressListener(this);
aWindow.removeEventListener("TabOpen", this);
- // Clear all margins and tooltip for all browsers.
+ // revert tabpanel's background colors to default
+ const tabPanel = aWindow.document.getElementById("tabbrowser-tabpanels");
+ if (tabPanel) {
+ tabPanel.classList.remove("letterboxing");
+ }
+
+ // and revert each browser element to default,
+ // restore default margins and remove letterboxing class
for (let tab of tabBrowser.tabs) {
let browser = tab.linkedBrowser;
- this._clearContentViewMargin(browser);
+ this._removeLetterboxing(browser);
}
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 26345: Hide tracking protection UI
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit d25dea623a1feda545bf070b83c4f9b74164dc65
Author: Alex Catarineu <acat(a)torproject.org>
Date: Tue Sep 10 16:29:31 2019 +0200
Bug 26345: Hide tracking protection UI
---
browser/base/content/browser-siteIdentity.js | 4 ++--
browser/components/about/AboutRedirector.cpp | 4 ----
browser/components/about/components.conf | 1 -
browser/components/customizableui/content/panelUI.inc.xhtml | 4 ++--
browser/components/moz.build | 1 -
browser/themes/shared/preferences/privacy.css | 4 ++++
6 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 71b12374758d..b7fa432d9478 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -837,10 +837,10 @@ var gIdentityHandler = {
this._refreshPermissionIcons();
- // Hide the shield icon if it is a chrome page.
+ // Bug 26345: Hide tracking protection UI.
gProtectionsHandler._trackingProtectionIconContainer.classList.toggle(
"chromeUI",
- this._isSecureInternalUI
+ true
);
},
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
index 933d519bd959..544e21782729 100644
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -114,10 +114,6 @@ static const RedirEntry kRedirMap[] = {
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
- {"protections", "chrome://browser/content/protections.html",
- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
- nsIAboutModule::URI_MUST_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
- nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS},
{"pioneer", "chrome://browser/content/pioneer.html",
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
#ifdef TOR_BROWSER_UPDATE
diff --git a/browser/components/about/components.conf b/browser/components/about/components.conf
index f31159d30e15..d78de142e2e4 100644
--- a/browser/components/about/components.conf
+++ b/browser/components/about/components.conf
@@ -20,7 +20,6 @@ pages = [
'policies',
'preferences',
'privatebrowsing',
- 'protections',
'profiling',
'reader',
'restartrequired',
diff --git a/browser/components/customizableui/content/panelUI.inc.xhtml b/browser/components/customizableui/content/panelUI.inc.xhtml
index 719eee14e681..45f4a10ace7b 100644
--- a/browser/components/customizableui/content/panelUI.inc.xhtml
+++ b/browser/components/customizableui/content/panelUI.inc.xhtml
@@ -244,7 +244,7 @@
oncommand="gSync.toggleAccountPanel('PanelUI-fxa', this, event)"/>
</toolbaritem>
<toolbarseparator class="sync-ui-item"/>
- <toolbaritem>
+ <toolbaritem hidden="true">
<toolbarbutton id="appMenu-protection-report-button"
class="subviewbutton subviewbutton-iconic"
oncommand="gProtectionsHandler.openProtections(); gProtectionsHandler.recordClick('open_full_report', null, 'app_menu');">
@@ -255,7 +255,7 @@
</label>
</toolbarbutton>
</toolbaritem>
- <toolbarseparator id="appMenu-tp-separator"/>
+ <toolbarseparator hidden="true" id="appMenu-tp-separator"/>
<toolbarbutton id="appMenu-new-window-button"
class="subviewbutton subviewbutton-iconic"
label="&newNavigatorCmd.label;"
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 8d6d2503e4a0..cb6eeb9164ef 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -48,7 +48,6 @@ DIRS += [
'preferences',
'privatebrowsing',
'prompts',
- 'protections',
'protocolhandler',
'resistfingerprinting',
'search',
diff --git a/browser/themes/shared/preferences/privacy.css b/browser/themes/shared/preferences/privacy.css
index 7ac2a5119411..87e3ecc2d4b7 100644
--- a/browser/themes/shared/preferences/privacy.css
+++ b/browser/themes/shared/preferences/privacy.css
@@ -99,6 +99,10 @@
/* Content Blocking */
+#trackingGroup {
+ display: none;
+}
+
/* Override styling that sets descriptions as grey */
#trackingGroup description.indent,
#trackingGroup .indent > description {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 30541: Disable WebGL readPixel() for web content
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit db942563b1c1b197b42c92a88583199d8bfaf01f
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed May 29 12:29:19 2019 +0000
Bug 30541: Disable WebGL readPixel() for web content
---
dom/canvas/ClientWebGLContext.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dom/canvas/ClientWebGLContext.cpp b/dom/canvas/ClientWebGLContext.cpp
index 42c0b1ba6b80..c7f2559332d3 100644
--- a/dom/canvas/ClientWebGLContext.cpp
+++ b/dom/canvas/ClientWebGLContext.cpp
@@ -4118,6 +4118,14 @@ bool ClientWebGLContext::ReadPixels_SharedPrecheck(
return false;
}
+ // Security check passed, but don't let content readPixel calls through for
+ // now, if Resist Fingerprinting Mode is enabled.
+ if (nsContentUtils::ResistFingerprinting(aCallerType)) {
+ JsWarning("readPixels: Not allowed in Resist Fingerprinting Mode");
+ out_error.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return false;
+ }
+
return true;
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 31607: App menu items stop working on macOS
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 3def4d60b5bec46bd5e8a72b4571c4c4a0d506a8
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 3 10:53:43 2019 -0400
Bug 31607: App menu items stop working on macOS
Avoid re-creating the hidden window, since this causes the nsMenuBarX
object that is associated with the app menu to be freed (which in
turn causes all of the app menu items to stop working).
More detail: There should only be one hidden window.
XREMain::XRE_mainRun() contains an explicit call to create the
hidden window and that is the normal path by which it is created.
However, when Tor Launcher's wizard/progress window is opened during
startup, a hidden window is created earlier as a side effect of
calls to nsAppShellService::GetHiddenWindow(). Then, when
XREMain::XRE_mainRun() creates its hidden window, the original one
is freed which also causes the app menu's nsMenuBarX object which
is associated with that window to be destroyed. When that happens,
the menuGroupOwner property within each Cocoa menu items's MenuItemInfo
object is cleared. This breaks the link that is necessary for
NativeMenuItemTarget's menuItemHit method to dispatch a menu item
event.
---
xpfe/appshell/nsAppShellService.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/xpfe/appshell/nsAppShellService.cpp b/xpfe/appshell/nsAppShellService.cpp
index 719684ceb072..1600a3fea789 100644
--- a/xpfe/appshell/nsAppShellService.cpp
+++ b/xpfe/appshell/nsAppShellService.cpp
@@ -93,6 +93,10 @@ void nsAppShellService::EnsureHiddenWindow() {
NS_IMETHODIMP
nsAppShellService::CreateHiddenWindow() {
+ if (mHiddenWindow) {
+ return NS_OK;
+ }
+
if (!XRE_IsParentProcess()) {
return NS_ERROR_NOT_IMPLEMENTED;
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 13543: Spoof smooth and powerEfficient for Media Capabilities
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 7c8832ee113de4b0dfd19192b59849104733df47
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu Oct 10 15:08:12 2019 +0200
Bug 13543: Spoof smooth and powerEfficient for Media Capabilities
---
dom/media/mediacapabilities/MediaCapabilities.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dom/media/mediacapabilities/MediaCapabilities.cpp b/dom/media/mediacapabilities/MediaCapabilities.cpp
index fb1b1a2cb32c..3bc6b97eac63 100644
--- a/dom/media/mediacapabilities/MediaCapabilities.cpp
+++ b/dom/media/mediacapabilities/MediaCapabilities.cpp
@@ -290,6 +290,11 @@ already_AddRefed<Promise> MediaCapabilities::DecodingInfo(
if (aValue.IsReject()) {
p = CapabilitiesPromise::CreateAndReject(
std::move(aValue.RejectValue()), __func__);
+ } else if (nsContentUtils::
+ ShouldResistFingerprinting()) {
+ p = CapabilitiesPromise::CreateAndResolve(
+ MediaCapabilitiesInfo(true, true, false),
+ __func__);
} else {
MOZ_ASSERT(config->IsVideo());
if (StaticPrefs::media_mediacapabilities_from_database()) {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 32658: Create a new MAR signing key
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 5a5ad3ab4f2337c78e456f5242dd8b6e25d0ad10
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jan 17 12:54:31 2020 +0000
Bug 32658: Create a new MAR signing key
It's time for our rotation again: Move the backup key in the front
position and add a new backup key.
squash! Bug 32658: Create a new MAR signing key
Bug 33803: Move our primary nightly MAR signing key to tor-browser
Bug 33803: Add a secondary nightly MAR signing key
---
.../update/updater/nightly_aurora_level3_primary.der | Bin 1225 -> 1245 bytes
.../updater/nightly_aurora_level3_secondary.der | Bin 1225 -> 1245 bytes
toolkit/mozapps/update/updater/release_primary.der | Bin 1225 -> 1229 bytes
toolkit/mozapps/update/updater/release_secondary.der | Bin 1225 -> 1229 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der b/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der
index 44fd95dcff89..d579cf801e1a 100644
Binary files a/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der and b/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der differ
diff --git a/toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der b/toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der
index 90f8e6e82c63..7cbfa77d06e7 100644
Binary files a/toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der and b/toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der differ
diff --git a/toolkit/mozapps/update/updater/release_primary.der b/toolkit/mozapps/update/updater/release_primary.der
index 1d94f88ad73b..0103a171de88 100644
Binary files a/toolkit/mozapps/update/updater/release_primary.der and b/toolkit/mozapps/update/updater/release_primary.der differ
diff --git a/toolkit/mozapps/update/updater/release_secondary.der b/toolkit/mozapps/update/updater/release_secondary.der
index 474706c4b73c..fcee3944e9b7 100644
Binary files a/toolkit/mozapps/update/updater/release_secondary.der and b/toolkit/mozapps/update/updater/release_secondary.der differ
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 30237: Add v3 onion services client authentication prompt
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 0f93fecf46910f3ca8371421afaa47cdfde7e243
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Nov 12 16:11:05 2019 -0500
Bug 30237: Add v3 onion services client authentication prompt
When Tor informs the browser that client authentication is needed,
temporarily load about:blank instead of about:neterror and prompt
for the user's key.
If a correctly formatted key is entered, use Tor's ONION_CLIENT_AUTH_ADD
control port command to add the key (via Torbutton's control port
module) and reload the page.
If the user cancels the prompt, display the standard about:neterror
"Unable to connect" page. This requires a small change to
browser/actors/NetErrorChild.jsm to account for the fact that the
docShell no longer has the failedChannel information. The failedChannel
is used to extract TLS-related error info, which is not applicable
in the case of a canceled .onion authentication prompt.
Add a leaveOpen option to PopupNotifications.show so we can display
error messages within the popup notification doorhanger without
closing the prompt.
Add support for onion services strings to the TorStrings module.
Add support for Tor extended SOCKS errors (Tor proposal 304) to the
socket transport and SOCKS layers. Improved display of all of these
errors will be implemented as part of bug 30025.
Also fixes bug 19757:
Add a "Remember this key" checkbox to the client auth prompt.
Add an "Onion Services Authentication" section within the
about:preferences "Privacy & Security section" to allow
viewing and removal of v3 onion client auth keys that have
been stored on disk.
Also fixes bug 19251: use enhanced error pages for onion service errors.
---
browser/actors/NetErrorChild.jsm | 7 +
browser/base/content/aboutNetError.js | 10 +-
browser/base/content/aboutNetError.xhtml | 1 +
browser/base/content/browser.js | 10 +
browser/base/content/browser.xhtml | 3 +
browser/base/content/tab-content.js | 5 +
browser/components/moz.build | 1 +
.../content/authNotificationIcon.inc.xhtml | 6 +
.../onionservices/content/authPopup.inc.xhtml | 16 ++
.../onionservices/content/authPreferences.css | 20 ++
.../content/authPreferences.inc.xhtml | 19 ++
.../onionservices/content/authPreferences.js | 66 +++++
.../components/onionservices/content/authPrompt.js | 316 +++++++++++++++++++++
.../components/onionservices/content/authUtil.jsm | 47 +++
.../onionservices/content/netError/browser.svg | 3 +
.../onionservices/content/netError/network.svg | 3 +
.../content/netError/onionNetError.css | 65 +++++
.../content/netError/onionNetError.js | 244 ++++++++++++++++
.../onionservices/content/netError/onionsite.svg | 7 +
.../onionservices/content/onionservices.css | 69 +++++
.../onionservices/content/savedKeysDialog.js | 259 +++++++++++++++++
.../onionservices/content/savedKeysDialog.xhtml | 42 +++
browser/components/onionservices/jar.mn | 9 +
browser/components/onionservices/moz.build | 1 +
browser/components/preferences/preferences.xhtml | 1 +
browser/components/preferences/privacy.inc.xhtml | 2 +
browser/components/preferences/privacy.js | 7 +
browser/themes/shared/notification-icons.inc.css | 3 +
docshell/base/nsDocShell.cpp | 81 +++++-
dom/ipc/BrowserParent.cpp | 21 ++
dom/ipc/BrowserParent.h | 3 +
dom/ipc/PBrowser.ipdl | 9 +
js/xpconnect/src/xpc.msg | 10 +
netwerk/base/nsSocketTransport2.cpp | 6 +
netwerk/socket/nsSOCKSIOLayer.cpp | 49 ++++
toolkit/modules/PopupNotifications.jsm | 6 +
toolkit/modules/RemotePageAccessManager.jsm | 1 +
.../lib/environments/frame-script.js | 1 +
xpcom/base/ErrorList.py | 22 ++
39 files changed, 1449 insertions(+), 2 deletions(-)
diff --git a/browser/actors/NetErrorChild.jsm b/browser/actors/NetErrorChild.jsm
index af9d6bd46128..de66e9eeda18 100644
--- a/browser/actors/NetErrorChild.jsm
+++ b/browser/actors/NetErrorChild.jsm
@@ -13,6 +13,8 @@ const { RemotePageChild } = ChromeUtils.import(
"resource://gre/actors/RemotePageChild.jsm"
);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
XPCOMUtils.defineLazyServiceGetter(
this,
"gSerializationHelper",
@@ -29,6 +31,7 @@ class NetErrorChild extends RemotePageChild {
"RPMPrefIsLocked",
"RPMAddToHistogram",
"RPMRecordTelemetryEvent",
+ "RPMGetTorStrings",
];
this.exportFunctions(exportableFunctions);
}
@@ -82,4 +85,8 @@ class NetErrorChild extends RemotePageChild {
RPMRecordTelemetryEvent(category, event, object, value, extra) {
Services.telemetry.recordEvent(category, event, object, value, extra);
}
+
+ RPMGetTorStrings() {
+ return Cu.cloneInto(TorStrings.onionServices, this.contentWindow);
+ }
}
diff --git a/browser/base/content/aboutNetError.js b/browser/base/content/aboutNetError.js
index 053d26ade512..60db17f46eb9 100644
--- a/browser/base/content/aboutNetError.js
+++ b/browser/base/content/aboutNetError.js
@@ -3,6 +3,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/* eslint-env mozilla/frame-script */
+/* import-globals-from ../../components/onionservices/content/netError/onionNetError.js */
const formatter = new Intl.DateTimeFormat("default");
@@ -241,7 +242,10 @@ function initPage() {
errDesc = document.getElementById("ed_generic");
}
- setErrorPageStrings(err);
+ const isOnionError = err.startsWith("onionServices.");
+ if (!isOnionError) {
+ setErrorPageStrings(err);
+ }
var sd = document.getElementById("errorShortDescText");
if (sd) {
@@ -387,6 +391,10 @@ function initPage() {
span.textContent = document.location.hostname;
}
}
+
+ if (isOnionError) {
+ OnionServicesAboutNetError.initPage(document);
+ }
}
function setupErrorUI() {
diff --git a/browser/base/content/aboutNetError.xhtml b/browser/base/content/aboutNetError.xhtml
index 3e9677e3c0ff..957b6f15a0be 100644
--- a/browser/base/content/aboutNetError.xhtml
+++ b/browser/base/content/aboutNetError.xhtml
@@ -208,5 +208,6 @@
</div>
</div>
</body>
+ <script src="chrome://browser/content/onionservices/netError/onionNetError.js"/>
<script src="chrome://browser/content/aboutNetError.js"/>
</html>
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index a851be586c0c..9f5f0c608536 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -221,6 +221,11 @@ XPCOMUtils.defineLazyScriptGetter(
["SecurityLevelButton"],
"chrome://browser/content/securitylevel/securityLevel.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["OnionAuthPrompt"],
+ "chrome://browser/content/onionservices/authPrompt.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
"gEditItemOverlay",
@@ -1884,6 +1889,9 @@ var gBrowserInit = {
// Init the SecuritySettingsButton
SecurityLevelButton.init();
+ // Init the OnionAuthPrompt
+ OnionAuthPrompt.init();
+
// Certain kinds of automigration rely on this notification to complete
// their tasks BEFORE the browser window is shown. SessionStore uses it to
// restore tabs into windows AFTER important parts like gMultiProcessBrowser
@@ -2568,6 +2576,8 @@ var gBrowserInit = {
SecurityLevelButton.uninit();
+ OnionAuthPrompt.uninit();
+
gAccessibilityServiceIndicator.uninit();
AccessibilityRefreshBlocker.uninit();
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index ddf5d766126b..4cab5fad6475 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -33,6 +33,7 @@
<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
<?xml-stylesheet href="chrome://torbutton/skin/tor-circuit-display.css" type="text/css"?>
<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/onionservices.css" type="text/css"?>
# All DTD information is stored in a separate file so that it can be shared by
# hiddenWindowMac.xhtml.
@@ -626,6 +627,7 @@
#include ../../components/downloads/content/downloadsPanel.inc.xhtml
#include ../../../devtools/startup/enableDevToolsPopup.inc.xhtml
#include ../../components/securitylevel/content/securityLevelPanel.inc.xhtml
+#include ../../components/onionservices/content/authPopup.inc.xhtml
#include browser-allTabsMenu.inc.xhtml
<hbox id="downloads-animation-container">
@@ -994,6 +996,7 @@
data-l10n-id="urlbar-indexed-db-notification-anchor"/>
<image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
data-l10n-id="urlbar-password-notification-anchor"/>
+#include ../../components/onionservices/content/authNotificationIcon.inc.xhtml
<stack id="plugins-notification-icon" class="notification-anchor-icon" role="button" align="center" data-l10n-id="urlbar-plugins-notification-anchor">
<image class="plugin-icon" />
<image id="plugin-icon-badge" />
diff --git a/browser/base/content/tab-content.js b/browser/base/content/tab-content.js
index 30cfa891c1fb..c57244a962ee 100644
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -19,6 +19,9 @@ ChromeUtils.defineModuleGetter(
"BrowserUtils",
"resource://gre/modules/BrowserUtils.jsm"
);
+var { OnionAuthUtil } = ChromeUtils.import(
+ "chrome://browser/content/onionservices/authUtil.jsm"
+);
var { ActorManagerChild } = ChromeUtils.import(
"resource://gre/modules/ActorManagerChild.jsm"
@@ -101,5 +104,7 @@ if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
Services.obs.notifyObservers(this, "tab-content-frameloader-created");
+OnionAuthUtil.addCancelMessageListener(this, docShell);
+
// This is a temporary hack to prevent regressions (bug 1471327).
void content;
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 09e209dc9c3b..b660be047b14 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -41,6 +41,7 @@ DIRS += [
'fxmonitor',
'migration',
'newtab',
+ 'onionservices',
'originattributes',
'pioneer',
'places',
diff --git a/browser/components/onionservices/content/authNotificationIcon.inc.xhtml b/browser/components/onionservices/content/authNotificationIcon.inc.xhtml
new file mode 100644
index 000000000000..91274d612739
--- /dev/null
+++ b/browser/components/onionservices/content/authNotificationIcon.inc.xhtml
@@ -0,0 +1,6 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<image id="tor-clientauth-notification-icon"
+ class="notification-anchor-icon tor-clientauth-icon"
+ role="button"
+ tooltiptext="&torbutton.onionServices.authPrompt.tooltip;"/>
diff --git a/browser/components/onionservices/content/authPopup.inc.xhtml b/browser/components/onionservices/content/authPopup.inc.xhtml
new file mode 100644
index 000000000000..bd0ec3aa0b00
--- /dev/null
+++ b/browser/components/onionservices/content/authPopup.inc.xhtml
@@ -0,0 +1,16 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<popupnotification id="tor-clientauth-notification" hidden="true">
+ <popupnotificationcontent orient="vertical">
+ <description id="tor-clientauth-notification-desc"/>
+ <label id="tor-clientauth-notification-learnmore"
+ class="text-link popup-notification-learnmore-link"
+ is="text-link"/>
+ <html:div>
+ <html:input id="tor-clientauth-notification-key" type="password"/>
+ <html:div id="tor-clientauth-warning"/>
+ <checkbox id="tor-clientauth-persistkey-checkbox"
+ label="&torbutton.onionServices.authPrompt.persistCheckboxLabel;"/>
+ </html:div>
+ </popupnotificationcontent>
+</popupnotification>
diff --git a/browser/components/onionservices/content/authPreferences.css b/browser/components/onionservices/content/authPreferences.css
new file mode 100644
index 000000000000..b3fb79b26ddc
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.css
@@ -0,0 +1,20 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+#torOnionServiceKeys-overview-container {
+ margin-right: 30px;
+}
+
+#onionservices-savedkeys-tree treechildren::-moz-tree-cell-text {
+ font-size: 80%;
+}
+
+#onionservices-savedkeys-errorContainer {
+ margin-top: 4px;
+ min-height: 3em;
+}
+
+#onionservices-savedkeys-errorIcon {
+ margin-right: 4px;
+ list-style-image: url("chrome://browser/skin/warning.svg");
+ visibility: hidden;
+}
diff --git a/browser/components/onionservices/content/authPreferences.inc.xhtml b/browser/components/onionservices/content/authPreferences.inc.xhtml
new file mode 100644
index 000000000000..f69c9dde66a2
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.inc.xhtml
@@ -0,0 +1,19 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<groupbox id="torOnionServiceKeys" orient="vertical"
+ data-category="panePrivacy" hidden="true">
+ <label><html:h2 id="torOnionServiceKeys-header"/></label>
+ <hbox>
+ <description id="torOnionServiceKeys-overview-container" flex="1">
+ <html:span id="torOnionServiceKeys-overview"
+ class="tail-with-learn-more"/>
+ <label id="torOnionServiceKeys-learnMore" class="learnMore text-link"
+ is="text-link"/>
+ </description>
+ <vbox align="end">
+ <button id="torOnionServiceKeys-savedKeys"
+ is="highlightable-button"
+ class="accessory-button"/>
+ </vbox>
+ </hbox>
+</groupbox>
diff --git a/browser/components/onionservices/content/authPreferences.js b/browser/components/onionservices/content/authPreferences.js
new file mode 100644
index 000000000000..52f8272020cc
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.js
@@ -0,0 +1,66 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+/*
+ Onion Services Client Authentication Preferences Code
+
+ Code to handle init and update of onion services authentication section
+ in about:preferences#privacy
+*/
+
+const OnionServicesAuthPreferences = {
+ selector: {
+ groupBox: "#torOnionServiceKeys",
+ header: "#torOnionServiceKeys-header",
+ overview: "#torOnionServiceKeys-overview",
+ learnMore: "#torOnionServiceKeys-learnMore",
+ savedKeysButton: "#torOnionServiceKeys-savedKeys",
+ },
+
+ init() {
+ // populate XUL with localized strings
+ this._populateXUL();
+ },
+
+ _populateXUL() {
+ const groupbox = document.querySelector(this.selector.groupBox);
+
+ let elem = groupbox.querySelector(this.selector.header);
+ elem.textContent = TorStrings.onionServices.authPreferences.header;
+
+ elem = groupbox.querySelector(this.selector.overview);
+ elem.textContent = TorStrings.onionServices.authPreferences.overview;
+
+ elem = groupbox.querySelector(this.selector.learnMore);
+ elem.setAttribute("value", TorStrings.onionServices.learnMore);
+ elem.setAttribute("href", TorStrings.onionServices.learnMoreURL);
+
+ elem = groupbox.querySelector(this.selector.savedKeysButton);
+ elem.setAttribute(
+ "label",
+ TorStrings.onionServices.authPreferences.savedKeys
+ );
+ elem.addEventListener("command", () =>
+ OnionServicesAuthPreferences.onViewSavedKeys()
+ );
+ },
+
+ onViewSavedKeys() {
+ gSubDialog.open(
+ "chrome://browser/content/onionservices/savedKeysDialog.xhtml"
+ );
+ },
+}; // OnionServicesAuthPreferences
+
+Object.defineProperty(this, "OnionServicesAuthPreferences", {
+ value: OnionServicesAuthPreferences,
+ enumerable: true,
+ writable: false,
+});
diff --git a/browser/components/onionservices/content/authPrompt.js b/browser/components/onionservices/content/authPrompt.js
new file mode 100644
index 000000000000..d4a59ac46487
--- /dev/null
+++ b/browser/components/onionservices/content/authPrompt.js
@@ -0,0 +1,316 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ OnionAuthUtil: "chrome://browser/content/onionservices/authUtil.jsm",
+ CommonUtils: "resource://services-common/utils.js",
+ TorStrings: "resource:///modules/TorStrings.jsm",
+});
+
+const OnionAuthPrompt = (function() {
+ // OnionServicesAuthPrompt objects run within the main/chrome process.
+ // aReason is the topic passed within the observer notification that is
+ // causing this auth prompt to be displayed.
+ function OnionServicesAuthPrompt(aBrowser, aFailedURI, aReason, aOnionName) {
+ this._browser = aBrowser;
+ this._failedURI = aFailedURI;
+ this._reasonForPrompt = aReason;
+ this._onionName = aOnionName;
+ }
+
+ OnionServicesAuthPrompt.prototype = {
+ show(aWarningMessage) {
+ let mainAction = {
+ label: TorStrings.onionServices.authPrompt.done,
+ accessKey: TorStrings.onionServices.authPrompt.doneAccessKey,
+ leaveOpen: true, // Callback is responsible for closing the notification.
+ callback: this._onDone.bind(this),
+ };
+
+ let dialogBundle = Services.strings.createBundle(
+ "chrome://global/locale/dialog.properties");
+
+ let cancelAccessKey = dialogBundle.GetStringFromName("accesskey-cancel");
+ if (!cancelAccessKey)
+ cancelAccessKey = "c"; // required by PopupNotifications.show()
+
+ let cancelAction = {
+ label: dialogBundle.GetStringFromName("button-cancel"),
+ accessKey: cancelAccessKey,
+ callback: this._onCancel.bind(this),
+ };
+
+ let _this = this;
+ let options = {
+ autofocus: true,
+ hideClose: true,
+ persistent: true,
+ removeOnDismissal: false,
+ eventCallback(aTopic) {
+ if (aTopic === "showing") {
+ _this._onPromptShowing(aWarningMessage);
+ } else if (aTopic === "shown") {
+ _this._onPromptShown();
+ } else if (aTopic === "removed") {
+ _this._onPromptRemoved();
+ }
+ }
+ };
+
+ this._prompt = PopupNotifications.show(this._browser,
+ OnionAuthUtil.domid.notification, "",
+ OnionAuthUtil.domid.anchor,
+ mainAction, [cancelAction], options);
+ },
+
+ _onPromptShowing(aWarningMessage) {
+ let xulDoc = this._browser.ownerDocument;
+ let descElem = xulDoc.getElementById(OnionAuthUtil.domid.description);
+ if (descElem) {
+ // Handle replacement of the onion name within the localized
+ // string ourselves so we can show the onion name as bold text.
+ // We do this by splitting the localized string and creating
+ // several HTML <span> elements.
+ while (descElem.firstChild)
+ descElem.removeChild(descElem.firstChild);
+
+ let fmtString = TorStrings.onionServices.authPrompt.description;
+ let prefix = "";
+ let suffix = "";
+ const kToReplace = "%S";
+ let idx = fmtString.indexOf(kToReplace);
+ if (idx < 0) {
+ prefix = fmtString;
+ } else {
+ prefix = fmtString.substring(0, idx);
+ suffix = fmtString.substring(idx + kToReplace.length);
+ }
+
+ const kHTMLNS = "http://www.w3.org/1999/xhtml";
+ let span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.textContent = prefix;
+ descElem.appendChild(span);
+ span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.id = OnionAuthUtil.domid.onionNameSpan;
+ span.textContent = this._onionName;
+ descElem.appendChild(span);
+ span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.textContent = suffix;
+ descElem.appendChild(span);
+ }
+
+ // Set "Learn More" label and href.
+ let learnMoreElem = xulDoc.getElementById(OnionAuthUtil.domid.learnMore);
+ if (learnMoreElem) {
+ learnMoreElem.setAttribute("value", TorStrings.onionServices.learnMore);
+ learnMoreElem.setAttribute("href", TorStrings.onionServices.learnMoreURL);
+ }
+
+ this._showWarning(aWarningMessage);
+ let checkboxElem = this._getCheckboxElement();
+ if (checkboxElem) {
+ checkboxElem.checked = false;
+ }
+ },
+
+ _onPromptShown() {
+ let keyElem = this._getKeyElement();
+ if (keyElem) {
+ keyElem.setAttribute("placeholder",
+ TorStrings.onionServices.authPrompt.keyPlaceholder);
+ this._boundOnKeyFieldKeyPress = this._onKeyFieldKeyPress.bind(this);
+ this._boundOnKeyFieldInput = this._onKeyFieldInput.bind(this);
+ keyElem.addEventListener("keypress", this._boundOnKeyFieldKeyPress);
+ keyElem.addEventListener("input", this._boundOnKeyFieldInput);
+ keyElem.focus();
+ }
+ },
+
+ _onPromptRemoved() {
+ if (this._boundOnKeyFieldKeyPress) {
+ let keyElem = this._getKeyElement();
+ if (keyElem) {
+ keyElem.value = "";
+ keyElem.removeEventListener("keypress",
+ this._boundOnKeyFieldKeyPress);
+ this._boundOnKeyFieldKeyPress = undefined;
+ keyElem.removeEventListener("input", this._boundOnKeyFieldInput);
+ this._boundOnKeyFieldInput = undefined;
+ }
+ }
+ },
+
+ _onKeyFieldKeyPress(aEvent) {
+ if (aEvent.keyCode == aEvent.DOM_VK_RETURN) {
+ this._onDone();
+ } else if (aEvent.keyCode == aEvent.DOM_VK_ESCAPE) {
+ this._prompt.remove();
+ this._onCancel();
+ }
+ },
+
+ _onKeyFieldInput(aEvent) {
+ this._showWarning(undefined); // Remove the warning.
+ },
+
+ _onDone() {
+ let keyElem = this._getKeyElement();
+ if (!keyElem)
+ return;
+
+ let base64key = this._keyToBase64(keyElem.value);
+ if (!base64key) {
+ this._showWarning(TorStrings.onionServices.authPrompt.invalidKey);
+ return;
+ }
+
+ this._prompt.remove();
+
+ // Use Torbutton's controller module to add the private key to Tor.
+ let controllerFailureMsg =
+ TorStrings.onionServices.authPrompt.failedToSetKey;
+ try {
+ let { controller } =
+ Cu.import("resource://torbutton/modules/tor-control-port.js", {});
+ let torController = controller(aError => {
+ this.show(controllerFailureMsg);
+ });
+ let onionAddr = this._onionName.toLowerCase().replace(/\.onion$/, "");
+ let checkboxElem = this._getCheckboxElement();
+ let isPermanent = (checkboxElem && checkboxElem.checked);
+ torController.onionAuthAdd(onionAddr, base64key, isPermanent)
+ .then(aResponse => {
+ // Success! Reload the page.
+ this._browser.sendMessageToActor(
+ "Browser:Reload",
+ {},
+ "BrowserTab"
+ );
+ })
+ .catch(aError => {
+ if (aError.torMessage)
+ this.show(aError.torMessage);
+ else
+ this.show(controllerFailureMsg);
+ });
+ } catch (e) {
+ this.show(controllerFailureMsg);
+ }
+ },
+
+ _onCancel() {
+ // Arrange for an error page to be displayed.
+ this._browser.messageManager.sendAsyncMessage(
+ OnionAuthUtil.message.authPromptCanceled,
+ {failedURI: this._failedURI.spec,
+ reasonForPrompt: this._reasonForPrompt});
+ },
+
+ _getKeyElement() {
+ let xulDoc = this._browser.ownerDocument;
+ return xulDoc.getElementById(OnionAuthUtil.domid.keyElement);
+ },
+
+ _getCheckboxElement() {
+ let xulDoc = this._browser.ownerDocument;
+ return xulDoc.getElementById(OnionAuthUtil.domid.checkboxElement);
+ },
+
+ _showWarning(aWarningMessage) {
+ let xulDoc = this._browser.ownerDocument;
+ let warningElem =
+ xulDoc.getElementById(OnionAuthUtil.domid.warningElement);
+ let keyElem = this._getKeyElement();
+ if (warningElem) {
+ if (aWarningMessage) {
+ warningElem.textContent = aWarningMessage;
+ warningElem.removeAttribute("hidden");
+ if (keyElem)
+ keyElem.className = "invalid";
+ } else {
+ warningElem.setAttribute("hidden", "true");
+ if (keyElem)
+ keyElem.className = "";
+ }
+ }
+ },
+
+ // Returns undefined if the key is the wrong length or format.
+ _keyToBase64(aKeyString) {
+ if (!aKeyString)
+ return undefined;
+
+ let base64key;
+ if (aKeyString.length == 52) {
+ // The key is probably base32-encoded. Attempt to decode.
+ // Although base32 specifies uppercase letters, we accept lowercase
+ // as well because users may type in lowercase or copy a key out of
+ // a tor onion-auth file (which uses lowercase).
+ let rawKey;
+ try {
+ rawKey = CommonUtils.decodeBase32(aKeyString.toUpperCase());
+ } catch (e) {}
+
+ if (rawKey) try {
+ base64key = btoa(rawKey);
+ } catch (e) {}
+ } else if ((aKeyString.length == 44) &&
+ /^[a-zA-Z0-9+/]*=*$/.test(aKeyString)) {
+ // The key appears to be a correctly formatted base64 value. If not,
+ // tor will return an error when we try to add the key via the
+ // control port.
+ base64key = aKeyString;
+ }
+
+ return base64key;
+ },
+ };
+
+ let retval = {
+ init() {
+ Services.obs.addObserver(this, OnionAuthUtil.topic.clientAuthMissing);
+ Services.obs.addObserver(this, OnionAuthUtil.topic.clientAuthIncorrect);
+ },
+
+ uninit() {
+ Services.obs.removeObserver(this, OnionAuthUtil.topic.clientAuthMissing);
+ Services.obs.removeObserver(this, OnionAuthUtil.topic.clientAuthIncorrect);
+ },
+
+ // aSubject is the DOM Window or browser where the prompt should be shown.
+ // aData contains the .onion name.
+ observe(aSubject, aTopic, aData) {
+ if ((aTopic != OnionAuthUtil.topic.clientAuthMissing) &&
+ (aTopic != OnionAuthUtil.topic.clientAuthIncorrect)) {
+ return;
+ }
+
+ let browser;
+ if (aSubject instanceof Ci.nsIDOMWindow) {
+ let contentWindow = aSubject.QueryInterface(Ci.nsIDOMWindow);
+ browser = contentWindow.docShell.chromeEventHandler;
+ } else {
+ browser = aSubject.QueryInterface(Ci.nsIBrowser);
+ }
+
+ if (!gBrowser.browsers.some(aBrowser => aBrowser == browser)) {
+ return; // This window does not contain the subject browser; ignore.
+ }
+
+ let failedURI = browser.currentURI;
+ let authPrompt = new OnionServicesAuthPrompt(browser, failedURI,
+ aTopic, aData);
+ authPrompt.show(undefined);
+ }
+ };
+
+ return retval;
+})(); /* OnionAuthPrompt */
+
+
+Object.defineProperty(this, "OnionAuthPrompt", {
+ value: OnionAuthPrompt,
+ enumerable: true,
+ writable: false
+});
diff --git a/browser/components/onionservices/content/authUtil.jsm b/browser/components/onionservices/content/authUtil.jsm
new file mode 100644
index 000000000000..c9d83774da1f
--- /dev/null
+++ b/browser/components/onionservices/content/authUtil.jsm
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "OnionAuthUtil",
+];
+
+var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+const OnionAuthUtil = {
+ topic: {
+ clientAuthMissing: "tor-onion-services-clientauth-missing",
+ clientAuthIncorrect: "tor-onion-services-clientauth-incorrect",
+ },
+ message: {
+ authPromptCanceled: "Tor:OnionServicesAuthPromptCanceled",
+ },
+ domid: {
+ anchor: "tor-clientauth-notification-icon",
+ notification: "tor-clientauth",
+ description: "tor-clientauth-notification-desc",
+ learnMore: "tor-clientauth-notification-learnmore",
+ onionNameSpan: "tor-clientauth-notification-onionname",
+ keyElement: "tor-clientauth-notification-key",
+ warningElement: "tor-clientauth-warning",
+ checkboxElement: "tor-clientauth-persistkey-checkbox",
+ },
+
+ addCancelMessageListener(aTabContent, aDocShell) {
+ aTabContent.addMessageListener(this.message.authPromptCanceled,
+ (aMessage) => {
+ // Upon cancellation of the client authentication prompt, display
+ // the appropriate error page. When calling the docShell
+ // displayLoadError() function, we pass undefined for the failed
+ // channel so that displayLoadError() can determine that it should
+ // not display the client authentication prompt a second time.
+ let failedURI = Services.io.newURI(aMessage.data.failedURI);
+ let reasonForPrompt = aMessage.data.reasonForPrompt;
+ let errorCode =
+ (reasonForPrompt === this.topic.clientAuthMissing) ?
+ Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH :
+ Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
+ aDocShell.displayLoadError(errorCode, failedURI, undefined, undefined);
+ });
+ },
+};
diff --git a/browser/components/onionservices/content/netError/browser.svg b/browser/components/onionservices/content/netError/browser.svg
new file mode 100644
index 000000000000..b4c433b37bbb
--- /dev/null
+++ b/browser/components/onionservices/content/netError/browser.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="65" viewBox="0 0 72 65">
+ <path fill="context-fill" fill-opacity="context-fill-opacity" d="M0.0 0.0C0.0 0.0 0.0 65.0 0.0 65.0C0.0 65.0 72.0 65.0 72.0 65.0C72.0 65.0 72.0 0.0 72.0 0.0C72.0 0.0 52.9019692 0.0 52.9019692 0.0C52.9019692 0.0 0.0 0.0 0.0 0.0C0.0 0.0 0.0 0.0 0.0 0.0M65.0 58.0C65.0 58.0 6.0 58.0 6.0 58.0C6.0 58.0 6.0 25.0 6.0 25.0C6.0 25.0 65.0 25.0 65.0 25.0C65.0 25.0 65.0 58.0 65.0 58.0C65.0 58.0 65.0 58.0 65.0 58.0M6.0 10.0C6.0 10.0 10.0 10.0 10.0 10.0C10.0 10.0 10.0 14.0 10.0 14.0C10.0 14.0 6.0 14.0 6.0 14.0C6.0 14.0 6.0 10.0 6.0 10.0C6.0 10.0 6.0 10.0 6.0 10.0M14.0 10.0C14.0 10.0 18.0 10.0 18.0 10.0C18.0 10.0 18.0 14.0 18.0 14.0C18.0 14.0 14.0 14.0 14.0 14.0C14.0 14.0 14.0 10.0 14.0 10.0C14.0 10.0 14.0 10.0 14.0 10.0M22.0 10.0C22.0 10.0 26.0 10.0 26.0 10.0C26.0 10.0 26.0 14.0 26.0 14.0C26.0 14.0 22.0 14.0 22.0 14.0C22.0 14.0 22.0 10.0 22.0 10.0C22.0 10.0 22.0 10.0 22.0 10.0" />
+</svg>
diff --git a/browser/components/onionservices/content/netError/network.svg b/browser/components/onionservices/content/netError/network.svg
new file mode 100644
index 000000000000..808c53dedd09
--- /dev/null
+++ b/browser/components/onionservices/content/netError/network.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="54" viewBox="0 0 72 54">
+ <path fill="context-fill" fill-opacity="context-fill-opacity" d="M14.0487805 54.0C6.28990244 54.0 0.0 47.3306322 0.0 39.1034585C0.0 32.0105634 4.68716488 26.0867675 10.9481707 24.585103C10.6902 23.574652 10.5365854 22.5107596 10.5365854 21.4138156C10.5365854 14.7292347 15.6471278 9.3103384 21.9512195 9.3103384C24.8076351 9.3103384 27.4126741 10.4393194 29.4146341 12.2780088C32.1344254 5.0777841 38.77452 0.0 46.5365854 0.0C56.7201249 0.0 64.9756098 8.7536733 64.9756098 19.5517479C64.9756098 20.7691677 64.8471688 21.9453428 64.6463415 23.1013144C69.0576849 26.0679606 72.0 31.2693674 72.0 37.2413909C72.0 46.5256603 64.9510244 54.0 56.195122 54.0C56.195122 54.0 14.0487805 54.0 14.0487805 54.0C14.0487805 54.0 14.0487805 54.0 14.0487805 54.0" />
+</svg>
diff --git a/browser/components/onionservices/content/netError/onionNetError.css b/browser/components/onionservices/content/netError/onionNetError.css
new file mode 100644
index 000000000000..58117ab93223
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionNetError.css
@@ -0,0 +1,65 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+:root {
+ --grey-70: #38383d;
+}
+
+#onionErrorDiagramContainer {
+ margin: 60px auto;
+ width: 460px; /* 3 columns @ 140px plus 2 column gaps @ 20px */
+ display: grid;
+ grid-row-gap: 15px;
+ grid-column-gap: 20px;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+
+#onionErrorDiagramContainer > div {
+ margin: auto;
+ position: relative; /* needed to allow overlay of the ok or error icon */
+}
+
+.onionErrorImage {
+ width: 72px;
+ height: 72px;
+ background-position: center;
+ background-repeat: no-repeat;
+ -moz-context-properties: fill;
+ fill: var(--grey-70);
+}
+
+#onionErrorBrowserImage {
+ background-image: url("browser.svg");
+}
+
+#onionErrorNetworkImage {
+ background-image: url("network.svg");
+}
+
+#onionErrorOnionSiteImage {
+ background-image: url("onionsite.svg");
+}
+
+/* rules to support overlay of the ok or error icon */
+.onionErrorImage[status]::after {
+ content: " ";
+ position: absolute;
+ left: -18px;
+ top: 18px;
+ width: 36px;
+ height: 36px;
+ -moz-context-properties: fill;
+ fill: var(--in-content-page-background);
+ background-color: var(--grey-70);
+ background-repeat: no-repeat;
+ background-position: center;
+ border: 3px solid var(--in-content-page-background);
+ border-radius: 50%;
+}
+
+.onionErrorImage[status="ok"]::after {
+ background-image: url("chrome://global/skin/icons/check.svg");
+}
+
+.onionErrorImage[status="error"]::after {
+ background-image: url("chrome://browser/skin/stop.svg");
+}
diff --git a/browser/components/onionservices/content/netError/onionNetError.js b/browser/components/onionservices/content/netError/onionNetError.js
new file mode 100644
index 000000000000..8fabb3f38eb7
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionNetError.js
@@ -0,0 +1,244 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+/* eslint-env mozilla/frame-script */
+
+var OnionServicesAboutNetError = {
+ _selector: {
+ header: ".title-text",
+ longDesc: "#errorLongDesc",
+ learnMoreContainer: "#learnMoreContainer",
+ learnMoreLink: "#learnMoreLink",
+ contentContainer: "#errorLongContent",
+ tryAgainButtonContainer: "#netErrorButtonContainer",
+ },
+ _status: {
+ ok: "ok",
+ error: "error",
+ },
+
+ _diagramInfoMap: undefined,
+
+ // Public functions (called from outside this file).
+ //
+ // This initPage() function may need to be updated if the structure of
+ // browser/base/content/aboutNetError.xhtml changes. Specifically, it
+ // references the following elements:
+ // query string parameter e
+ // class title-text
+ // id errorLongDesc
+ // id learnMoreContainer
+ // id learnMoreLink
+ // id errorLongContent
+ initPage(aDoc) {
+ const searchParams = new URLSearchParams(aDoc.documentURI.split("?")[1]);
+ const err = searchParams.get("e");
+
+ const errPrefix = "onionServices.";
+ const errName = err.substring(errPrefix.length);
+
+ this._strings = RPMGetTorStrings();
+
+ const stringsObj = this._strings[errName];
+ if (!stringsObj) {
+ return;
+ }
+
+ this._insertStylesheet(aDoc);
+
+ const pageTitle = stringsObj.pageTitle;
+ const header = stringsObj.header;
+ const longDescription = stringsObj.longDescription; // optional
+ const learnMoreURL = stringsObj.learnMoreURL;
+
+ if (pageTitle) {
+ aDoc.title = pageTitle;
+ }
+
+ if (header) {
+ const headerElem = aDoc.querySelector(this._selector.header);
+ if (headerElem) {
+ headerElem.textContent = header;
+ }
+ }
+
+ const ld = aDoc.querySelector(this._selector.longDesc);
+ if (ld) {
+ if (longDescription) {
+ const hexErr = this._hexErrorFromName(errName);
+ ld.textContent = longDescription.replace("%S", hexErr);
+ } else {
+ // This onion service error does not have a long description. Since
+ // it is set to a generic error string by the code in
+ // browser/base/content/aboutNetError.js, hide it here.
+ ld.style.display = "none";
+ }
+ }
+
+ if (learnMoreURL) {
+ const lmContainer = aDoc.querySelector(this._selector.learnMoreContainer);
+ if (lmContainer) {
+ lmContainer.style.display = "block";
+ }
+ const lmLink = lmContainer.querySelector(this._selector.learnMoreLink);
+ if (lmLink) {
+ lmLink.setAttribute("href", learnMoreURL);
+ }
+ }
+
+ // Remove the "Try Again" button if the user made a typo in the .onion
+ // address since it is not useful in that case.
+ if (errName === "badAddress") {
+ const tryAgainButton = aDoc.querySelector(
+ this._selector.tryAgainButtonContainer
+ );
+ if (tryAgainButton) {
+ tryAgainButton.style.display = "none";
+ }
+ }
+
+ this._insertDiagram(aDoc, errName);
+ }, // initPage()
+
+ _insertStylesheet(aDoc) {
+ const url =
+ "chrome://browser/content/onionservices/netError/onionNetError.css";
+ let linkElem = aDoc.createElement("link");
+ linkElem.rel = "stylesheet";
+ linkElem.href = url;
+ linkElem.type = "text/css";
+ aDoc.head.appendChild(linkElem);
+ },
+
+ _insertDiagram(aDoc, aErrorName) {
+ // The onion error diagram consists of a grid of div elements.
+ // The first row contains three images (Browser, Network, Onionsite) and
+ // the second row contains labels for the images that are in the first row.
+ // The _diagramInfoMap describes for each type of onion service error
+ // whether a small ok or error status icon is overlaid on top of the main
+ // Browser/Network/Onionsite images.
+ if (!this._diagramInfoMap) {
+ this._diagramInfoMap = new Map();
+ this._diagramInfoMap.set("descNotFound", {
+ browser: this._status.ok,
+ network: this._status.ok,
+ onionSite: this._status.error,
+ });
+ this._diagramInfoMap.set("descInvalid", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("introFailed", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("rendezvousFailed", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("clientAuthMissing", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("clientAuthIncorrect", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("badAddress", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("introTimedOut", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ }
+
+ const diagramInfo = this._diagramInfoMap.get(aErrorName);
+
+ const container = this._createDiv(aDoc, "onionErrorDiagramContainer");
+ const imageClass = "onionErrorImage";
+
+ const browserImage = this._createDiv(
+ aDoc,
+ "onionErrorBrowserImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.browser) {
+ browserImage.setAttribute("status", diagramInfo.browser);
+ }
+
+ const networkImage = this._createDiv(
+ aDoc,
+ "onionErrorNetworkImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.network) {
+ networkImage.setAttribute("status", diagramInfo.network);
+ }
+
+ const onionSiteImage = this._createDiv(
+ aDoc,
+ "onionErrorOnionSiteImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.onionSite) {
+ onionSiteImage.setAttribute("status", diagramInfo.onionSite);
+ }
+
+ let labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.browser;
+ labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.network;
+ labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.onionSite;
+
+ const contentContainer = aDoc.querySelector(
+ this._selector.contentContainer
+ );
+ if (contentContainer) {
+ contentContainer.insertBefore(container, contentContainer.firstChild);
+ }
+ }, // _insertDiagram()
+
+ _createDiv(aDoc, aID, aClass, aParentElem) {
+ const div = aDoc.createElement("div");
+ if (aID) {
+ div.id = aID;
+ }
+ if (aClass) {
+ div.setAttribute("class", aClass);
+ }
+ if (aParentElem) {
+ aParentElem.appendChild(div);
+ }
+
+ return div;
+ },
+
+ _hexErrorFromName(aErrorName) {
+ // We do not have access to the original Tor SOCKS error code here, so
+ // perform a reverse mapping from the error name.
+ switch (aErrorName) {
+ case "descNotFound":
+ return "0xF0";
+ case "descInvalid":
+ return "0xF1";
+ case "introFailed":
+ return "0xF2";
+ case "rendezvousFailed":
+ return "0xF3";
+ case "clientAuthMissing":
+ return "0xF4";
+ case "clientAuthIncorrect":
+ return "0xF5";
+ case "badAddress":
+ return "0xF6";
+ case "introTimedOut":
+ return "0xF7";
+ }
+
+ return "";
+ },
+};
diff --git a/browser/components/onionservices/content/netError/onionsite.svg b/browser/components/onionservices/content/netError/onionsite.svg
new file mode 100644
index 000000000000..1f2777e6acc7
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionsite.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="70" height="63" viewBox="0 0 70 63">
+ <g fill="context-fill" fill-opacity="context-fill-opacity">
+ <path d="M64.0 2.0C64.0 2.0 4.0 2.0 4.0 2.0C2.8954305 2.0 2.0 2.81148389 2.0 3.8125C2.0 3.8125 2.0 58.1875 2.0 58.1875C2.0 59.1885161 2.8954305 60.0 4.0 60.0C4.0 60.0 36.0 60.0 36.0 60.0C36.0 60.0 36.0 56.375 36.0 56.375C36.0 56.375 6.0 56.375 6.0 56.375C6.0 56.375 6.0 41.875 6.0 41.875C6.0 41.875 38.0 41.875 38.0 41.875C38.0 41.875 38.0 38.25 38.0 38.25C38.0 38.25 6.0 38.25 6.0 38.25C6.0 38.25 6.0 23.75 6.0 23.75C6.0 23.75 62.0 23.75 62.0 23.75C62.0 23.75 62.0 36.4375 62.0 36.4375C62.0 36.4375 66.0 36.4375 66.0 36.4375C66.0 36.4375 66.0 3.8125 66.0 3.8125C66.0 2.81148389 65.1045695 2.0 64.0 2.0C64.0 2.0 64.0 2.0 64.0 2.0M62.0 20.125C62.0 20.125 6.0 20.125 6.0 20.125C6.0 20.125 6.0 5.625 6.0 5.625C6.0 5.625 62.0 5.625 62.0 5.625C62.0 5.625 62.0 20.125 62.0 20.125C62.0 20.125 62.0 20.125 62.0 20.125" />
+ <path d="M24.0 47.0C24.0 47.0 24.0 51.0 24.0 51.0C24.0 51.0 20.0 51.0 20.0 51.0C20.0 51.0 20.0 47.0 20.0 47.0C20.0 47.0 24.0 47.0 24.0 47.0C24.0 47.0 24.0 47.0 24.0 47.0M16.0 47.0C16.0 47.0 16.0 51.0 16.0 51.0C16.0 51.0 12.0 51.0 12.0 51.0C12.0 51.0 12.0 47.0 12.0 47.0C12.0 47.0 16.0 47.0 16.0 47.0C16.0 47.0 16.0 47.0 16.0 47.0M56.0 29.0C56.0 29.0 56.0 33.0 56.0 33.0C56.0 33.0 52.0 33.0 52.0 33.0C52.0 33.0 52.0 29.0 52.0 29.0C52.0 29.0 56.0 29.0 56.0 29.0C56.0 29.0 56.0 29.0 56.0 29.0M48.0 29.0C48.0 29.0 48.0 33.0 48.0 33.0C48.0 33.0 12.0 33.0 12.0 33.0C12.0 33.0 12.0 29.0 12.0 29.0C12.0 29.0 48.0 29.0 48.0 29.0C48.0 29.0 48.0 29.0 48.0 29.0M22.0 11.0C22.0 11.0 22.0 15.0 22.0 15.0C22.0 15.0 10.0 15.0 10.0 15.0C10.0 15.0 10.0 11.0 10.0 11.0C10.0 11.0 22.0 11.0 22.0 11.0C22.0 11.0 22.0 11.0 22.0 11.0M70.0 0.0C70.0 0.0 70.0 36.5 70.0 36.5C70.0 36.5 65.0 36.5 65.0 36.5C65.0 36.5 65.0 4.5 65.0 4.5C65.0 4.5 5.0 4.5 5.0 4.5C5.0 4.5 5.0 58.5 5.0 58.5C5.0 58.5 36.0 58.5 36.0 58.5C36.0 58
.5 36.0 63.0 36.0 63.0C36.0 63.0 0.0 63.0 0.0 63.0C0.0 63.0 0.0 0.0 0.0 0.0C0.0 0.0 70.0 0.0 70.0 0.0C70.0 0.0 70.0 0.0 70.0 0.0M32.0 47.0C32.0 47.0 32.0 51.0 32.0 51.0C32.0 51.0 28.0 51.0 28.0 51.0C28.0 51.0 28.0 47.0 28.0 47.0C28.0 47.0 32.0 47.0 32.0 47.0C32.0 47.0 32.0 47.0 32.0 47.0M54.0 11.0C54.0 11.0 54.0 15.0 54.0 15.0C54.0 15.0 50.0 15.0 50.0 15.0C50.0 15.0 50.0 11.0 50.0 11.0C50.0 11.0 54.0 11.0 54.0 11.0C54.0 11.0 54.0 11.0 54.0 11.0M46.0 11.0C46.0 11.0 46.0 15.0 46.0 15.0C46.0 15.0 42.0 15.0 42.0 15.0C42.0 15.0 42.0 11.0 42.0 11.0C42.0 11.0 46.0 11.0 46.0 11.0C46.0 11.0 46.0 11.0 46.0 11.0M38.0 11.0C38.0 11.0 38.0 15.0 38.0 15.0C38.0 15.0 34.0 15.0 34.0 15.0C34.0 15.0 34.0 11.0 34.0 11.0C34.0 11.0 38.0 11.0 38.0 11.0C38.0 11.0 38.0 11.0 38.0 11.0M30.0 11.0C30.0 11.0 30.0 15.0 30.0 15.0C30.0 15.0 26.0 15.0 26.0 15.0C26.0 15.0 26.0 11.0 26.0 11.0C26.0 11.0 30.0 11.0 30.0 11.0C30.0 11.0 30.0 11.0 30.0 11.0" />
+ <path d="M61.0 46.0C61.0 46.0 59.0 46.0 59.0 46.0C59.0 46.0 59.0 40.0 59.0 40.0C59.0 38.8954305 58.1045695 38.0 57.0 38.0C57.0 38.0 49.0 38.0 49.0 38.0C47.8954305 38.0 47.0 38.8954305 47.0 40.0C47.0 40.0 47.0 46.0 47.0 46.0C47.0 46.0 45.0 46.0 45.0 46.0C43.8954305 46.0 43.0 46.8954305 43.0 48.0C43.0 48.0 43.0 60.0 43.0 60.0C43.0 61.1045695 43.8954305 62.0 45.0 62.0C45.0 62.0 61.0 62.0 61.0 62.0C62.1045695 62.0 63.0 61.1045695 63.0 60.0C63.0 60.0 63.0 48.0 63.0 48.0C63.0 46.8954305 62.1045695 46.0 61.0 46.0C61.0 46.0 61.0 46.0 61.0 46.0M51.0 42.0C51.0 42.0 55.0 42.0 55.0 42.0C55.0 42.0 55.0 46.0 55.0 46.0C55.0 46.0 51.0 46.0 51.0 46.0C51.0 46.0 51.0 42.0 51.0 42.0C51.0 42.0 51.0 42.0 51.0 42.0M59.0 58.0C59.0 58.0 47.0 58.0 47.0 58.0C47.0 58.0 47.0 50.0 47.0 50.0C47.0 50.0 59.0 50.0 59.0 50.0C59.0 50.0 59.0 58.0 59.0 58.0C59.0 58.0 59.0 58.0 59.0 58.0" />
+ </g>
+</svg>
diff --git a/browser/components/onionservices/content/onionservices.css b/browser/components/onionservices/content/onionservices.css
new file mode 100644
index 000000000000..e2621ec8266d
--- /dev/null
+++ b/browser/components/onionservices/content/onionservices.css
@@ -0,0 +1,69 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+html|*#tor-clientauth-notification-onionname {
+ font-weight: bold;
+}
+
+html|*#tor-clientauth-notification-key {
+ box-sizing: border-box;
+ width: 100%;
+ margin-top: 15px;
+ padding: 6px;
+}
+
+/* Start of rules adapted from
+ * browser/components/newtab/css/activity-stream-mac.css (linux and windows
+ * use the same rules).
+ */
+html|*#tor-clientauth-notification-key.invalid {
+ border: 1px solid #D70022;
+ box-shadow: 0 0 0 1px #D70022, 0 0 0 4px rgba(215, 0, 34, 0.3);
+}
+
+html|*#tor-clientauth-warning {
+ display: inline-block;
+ animation: fade-up-tt 450ms;
+ background: #D70022;
+ border-radius: 2px;
+ color: #FFF;
+ inset-inline-start: 3px;
+ padding: 5px 12px;
+ position: relative;
+ top: 6px;
+ z-index: 1;
+}
+
+html|*#tor-clientauth-warning[hidden] {
+ display: none;
+}
+
+html|*#tor-clientauth-warning::before {
+ background: #D70022;
+ bottom: -8px;
+ content: '.';
+ height: 16px;
+ inset-inline-start: 12px;
+ position: absolute;
+ text-indent: -999px;
+ top: -7px;
+ transform: rotate(45deg);
+ white-space: nowrap;
+ width: 16px;
+ z-index: -1;
+}
+
+@keyframes fade-up-tt {
+ 0% {
+ opacity: 0;
+ transform: translateY(15px);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+/* End of rules adapted from
+ * browser/components/newtab/css/activity-stream-mac.css
+ */
diff --git a/browser/components/onionservices/content/savedKeysDialog.js b/browser/components/onionservices/content/savedKeysDialog.js
new file mode 100644
index 000000000000..b1376bbabe85
--- /dev/null
+++ b/browser/components/onionservices/content/savedKeysDialog.js
@@ -0,0 +1,259 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "controller",
+ "resource://torbutton/modules/tor-control-port.js"
+);
+
+var gOnionServicesSavedKeysDialog = {
+ selector: {
+ dialog: "#onionservices-savedkeys-dialog",
+ intro: "#onionservices-savedkeys-intro",
+ tree: "#onionservices-savedkeys-tree",
+ onionSiteCol: "#onionservices-savedkeys-siteCol",
+ onionKeyCol: "#onionservices-savedkeys-keyCol",
+ errorIcon: "#onionservices-savedkeys-errorIcon",
+ errorMessage: "#onionservices-savedkeys-errorMessage",
+ removeButton: "#onionservices-savedkeys-remove",
+ removeAllButton: "#onionservices-savedkeys-removeall",
+ },
+
+ _tree: undefined,
+ _isBusy: false, // true when loading data, deleting a key, etc.
+
+ // Public functions (called from outside this file).
+ async deleteSelectedKeys() {
+ this._setBusyState(true);
+
+ const indexesToDelete = [];
+ const count = this._tree.view.selection.getRangeCount();
+ for (let i = 0; i < count; ++i) {
+ const minObj = {};
+ const maxObj = {};
+ this._tree.view.selection.getRangeAt(i, minObj, maxObj);
+ for (let idx = minObj.value; idx <= maxObj.value; ++idx) {
+ indexesToDelete.push(idx);
+ }
+ }
+
+ if (indexesToDelete.length > 0) {
+ const controllerFailureMsg =
+ TorStrings.onionServices.authPreferences.failedToRemoveKey;
+ try {
+ const torController = controller(aError => {
+ this._showError(controllerFailureMsg);
+ });
+
+ // Remove in reverse index order to avoid issues caused by index changes.
+ for (let i = indexesToDelete.length - 1; i >= 0; --i) {
+ await this._deleteOneKey(torController, indexesToDelete[i]);
+ }
+ } catch (e) {
+ if (e.torMessage) {
+ this._showError(e.torMessage);
+ } else {
+ this._showError(controllerFailureMsg);
+ }
+ }
+ }
+
+ this._setBusyState(false);
+ },
+
+ async deleteAllKeys() {
+ this._tree.view.selection.selectAll();
+ await this.deleteSelectedKeys();
+ },
+
+ updateButtonsState() {
+ const haveSelection = this._tree.view.selection.getRangeCount() > 0;
+ const dialog = document.querySelector(this.selector.dialog);
+ const removeSelectedBtn = dialog.querySelector(this.selector.removeButton);
+ removeSelectedBtn.disabled = this._isBusy || !haveSelection;
+ const removeAllBtn = dialog.querySelector(this.selector.removeAllButton);
+ removeAllBtn.disabled = this._isBusy || this.rowCount === 0;
+ },
+
+ // Private functions.
+ _onLoad() {
+ document.mozSubdialogReady = this._init();
+ },
+
+ async _init() {
+ await this._populateXUL();
+
+ window.addEventListener("keypress", this._onWindowKeyPress.bind(this));
+
+ // We don't use await here because we want _loadSavedKeys() to run
+ // in the background and not block loading of this dialog.
+ this._loadSavedKeys();
+ },
+
+ async _populateXUL() {
+ const dialog = document.querySelector(this.selector.dialog);
+ const authPrefStrings = TorStrings.onionServices.authPreferences;
+ dialog.setAttribute("title", authPrefStrings.dialogTitle);
+
+ let elem = dialog.querySelector(this.selector.intro);
+ elem.textContent = authPrefStrings.dialogIntro;
+
+ elem = dialog.querySelector(this.selector.onionSiteCol);
+ elem.setAttribute("label", authPrefStrings.onionSite);
+
+ elem = dialog.querySelector(this.selector.onionKeyCol);
+ elem.setAttribute("label", authPrefStrings.onionKey);
+
+ elem = dialog.querySelector(this.selector.removeButton);
+ elem.setAttribute("label", authPrefStrings.remove);
+
+ elem = dialog.querySelector(this.selector.removeAllButton);
+ elem.setAttribute("label", authPrefStrings.removeAll);
+
+ this._tree = dialog.querySelector(this.selector.tree);
+ },
+
+ async _loadSavedKeys() {
+ const controllerFailureMsg =
+ TorStrings.onionServices.authPreferences.failedToGetKeys;
+ this._setBusyState(true);
+
+ try {
+ this._tree.view = this;
+
+ const torController = controller(aError => {
+ this._showError(controllerFailureMsg);
+ });
+
+ const keyInfoList = await torController.onionAuthViewKeys();
+ if (keyInfoList) {
+ // Filter out temporary keys.
+ this._keyInfoList = keyInfoList.filter(aKeyInfo => {
+ if (!aKeyInfo.Flags) {
+ return false;
+ }
+
+ const flags = aKeyInfo.Flags.split(",");
+ return flags.includes("Permanent");
+ });
+
+ // Sort by the .onion address.
+ this._keyInfoList.sort((aObj1, aObj2) => {
+ const hsAddr1 = aObj1.hsAddress.toLowerCase();
+ const hsAddr2 = aObj2.hsAddress.toLowerCase();
+ if (hsAddr1 < hsAddr2) {
+ return -1;
+ }
+ return hsAddr1 > hsAddr2 ? 1 : 0;
+ });
+ }
+
+ // Render the tree content.
+ this._tree.rowCountChanged(0, this.rowCount);
+ } catch (e) {
+ if (e.torMessage) {
+ this._showError(e.torMessage);
+ } else {
+ this._showError(controllerFailureMsg);
+ }
+ }
+
+ this._setBusyState(false);
+ },
+
+ // This method may throw; callers should catch errors.
+ async _deleteOneKey(aTorController, aIndex) {
+ const keyInfoObj = this._keyInfoList[aIndex];
+ await aTorController.onionAuthRemove(keyInfoObj.hsAddress);
+ this._tree.view.selection.clearRange(aIndex, aIndex);
+ this._keyInfoList.splice(aIndex, 1);
+ this._tree.rowCountChanged(aIndex + 1, -1);
+ },
+
+ _setBusyState(aIsBusy) {
+ this._isBusy = aIsBusy;
+ this.updateButtonsState();
+ },
+
+ _onWindowKeyPress(event) {
+ if (event.keyCode === KeyEvent.DOM_VK_ESCAPE) {
+ window.close();
+ } else if (event.keyCode === KeyEvent.DOM_VK_DELETE) {
+ this.deleteSelectedKeys();
+ }
+ },
+
+ _showError(aMessage) {
+ const dialog = document.querySelector(this.selector.dialog);
+ const errorIcon = dialog.querySelector(this.selector.errorIcon);
+ errorIcon.style.visibility = aMessage ? "visible" : "hidden";
+ const errorDesc = dialog.querySelector(this.selector.errorMessage);
+ errorDesc.textContent = aMessage ? aMessage : "";
+ },
+
+ // XUL tree widget view implementation.
+ get rowCount() {
+ return this._keyInfoList ? this._keyInfoList.length : 0;
+ },
+
+ getCellText(aRow, aCol) {
+ let val = "";
+ if (this._keyInfoList && aRow < this._keyInfoList.length) {
+ const keyInfo = this._keyInfoList[aRow];
+ if (aCol.id.endsWith("-siteCol")) {
+ val = keyInfo.hsAddress;
+ } else if (aCol.id.endsWith("-keyCol")) {
+ val = keyInfo.typeAndKey;
+ // Omit keyType because it is always "x25519".
+ const idx = val.indexOf(":");
+ if (idx > 0) {
+ val = val.substring(idx + 1);
+ }
+ }
+ }
+
+ return val;
+ },
+
+ isSeparator(index) {
+ return false;
+ },
+
+ isSorted() {
+ return false;
+ },
+
+ isContainer(index) {
+ return false;
+ },
+
+ setTree(tree) {},
+
+ getImageSrc(row, column) {},
+
+ getCellValue(row, column) {},
+
+ cycleHeader(column) {},
+
+ getRowProperties(row) {
+ return "";
+ },
+
+ getColumnProperties(column) {
+ return "";
+ },
+
+ getCellProperties(row, column) {
+ return "";
+ },
+};
+
+window.addEventListener("load", () => gOnionServicesSavedKeysDialog._onLoad());
diff --git a/browser/components/onionservices/content/savedKeysDialog.xhtml b/browser/components/onionservices/content/savedKeysDialog.xhtml
new file mode 100644
index 000000000000..3db9bb05ea82
--- /dev/null
+++ b/browser/components/onionservices/content/savedKeysDialog.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- Copyright (c) 2020, The Tor Project, Inc. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css" type="text/css"?>
+
+<window id="onionservices-savedkeys-dialog"
+ windowtype="OnionServices:SavedKeys"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ style="width: 45em;">
+
+ <script src="chrome://browser/content/onionservices/savedKeysDialog.js"/>
+
+ <vbox id="onionservices-savedkeys" class="contentPane" flex="1">
+ <label id="onionservices-savedkeys-intro"
+ control="onionservices-savedkeys-tree"/>
+ <separator class="thin"/>
+ <tree id="onionservices-savedkeys-tree" flex="1" hidecolumnpicker="true"
+ width="750"
+ style="height: 20em;"
+ onselect="gOnionServicesSavedKeysDialog.updateButtonsState();">
+ <treecols>
+ <treecol id="onionservices-savedkeys-siteCol" flex="1" persist="width"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="onionservices-savedkeys-keyCol" flex="1" persist="width"/>
+ </treecols>
+ <treechildren/>
+ </tree>
+ <hbox id="onionservices-savedkeys-errorContainer" align="baseline" flex="1">
+ <image id="onionservices-savedkeys-errorIcon"/>
+ <description id="onionservices-savedkeys-errorMessage" flex="1"/>
+ </hbox>
+ <separator class="thin"/>
+ <hbox id="onionservices-savedkeys-buttons">
+ <button id="onionservices-savedkeys-remove" disabled="true"
+ oncommand="gOnionServicesSavedKeysDialog.deleteSelectedKeys();"/>
+ <button id="onionservices-savedkeys-removeall"
+ oncommand="gOnionServicesSavedKeysDialog.deleteAllKeys();"/>
+ </hbox>
+ </vbox>
+</window>
diff --git a/browser/components/onionservices/jar.mn b/browser/components/onionservices/jar.mn
new file mode 100644
index 000000000000..9d6ce88d1841
--- /dev/null
+++ b/browser/components/onionservices/jar.mn
@@ -0,0 +1,9 @@
+browser.jar:
+ content/browser/onionservices/authPreferences.css (content/authPreferences.css)
+ content/browser/onionservices/authPreferences.js (content/authPreferences.js)
+ content/browser/onionservices/authPrompt.js (content/authPrompt.js)
+ content/browser/onionservices/authUtil.jsm (content/authUtil.jsm)
+ content/browser/onionservices/netError/ (content/netError/*)
+ content/browser/onionservices/onionservices.css (content/onionservices.css)
+ content/browser/onionservices/savedKeysDialog.js (content/savedKeysDialog.js)
+ content/browser/onionservices/savedKeysDialog.xhtml (content/savedKeysDialog.xhtml)
diff --git a/browser/components/onionservices/moz.build b/browser/components/onionservices/moz.build
new file mode 100644
index 000000000000..7e103239c8d6
--- /dev/null
+++ b/browser/components/onionservices/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ['jar.mn']
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 2a99400bfb70..b09808e83c45 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
index f36145ea80d4..eb7587afa0e1 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
@@ -477,6 +477,8 @@
<label id="fips-desc" hidden="true" data-l10n-id="forms-master-pw-fips-desc"></label>
</groupbox>
+#include ../onionservices/content/authPreferences.inc.xhtml
+
<!-- The form autofill section is inserted in to this box
after the form autofill extension has initialized. -->
<groupbox id="formAutofillGroupBox"
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 35e1fda9f96b..41dda96a14de 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -77,6 +77,12 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["OnionServicesAuthPreferences"],
+ "chrome://browser/content/onionservices/authPreferences.js"
+);
+
// TODO: module import via ChromeUtils.defineModuleGetter
XPCOMUtils.defineLazyScriptGetter(
this,
@@ -434,6 +440,7 @@ var gPrivacyPane = {
this.trackingProtectionReadPrefs();
this.networkCookieBehaviorReadPrefs();
this._initTrackingProtectionExtensionControl();
+ OnionServicesAuthPreferences.init();
this._initSecurityLevel();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css
index f17ddae9dc79..979ae9482244 100644
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -117,6 +117,9 @@
list-style-image: url(chrome://browser/skin/notification-icons/indexedDB.svg);
}
+/* Reuse Firefox's login (key) icon for the Tor onion services auth. prompt */
+.popup-notification-icon[popupid="tor-clientauth"],
+.tor-clientauth-icon,
.popup-notification-icon[popupid="password"],
.login-icon {
list-style-image: url(chrome://browser/skin/login.svg);
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 22eb5c4556f6..8731e44dd4eb 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3536,6 +3536,7 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
}
} else {
// Errors requiring simple formatting
+ bool isOnionAuthError = false;
switch (aError) {
case NS_ERROR_MALFORMED_URI:
// URI is malformed
@@ -3618,10 +3619,44 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
// HTTP/2 or HTTP/3 stack detected a protocol error
error = "networkProtocolError";
break;
-
+ case NS_ERROR_TOR_ONION_SVC_NOT_FOUND:
+ error = "onionServices.descNotFound";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_IS_INVALID:
+ error = "onionServices.descInvalid";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_INTRO_FAILED:
+ error = "onionServices.introFailed";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_REND_FAILED:
+ error = "onionServices.rendezvousFailed";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH:
+ error = "onionServices.clientAuthMissing";
+ isOnionAuthError = true;
+ break;
+ case NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH:
+ error = "onionServices.clientAuthIncorrect";
+ isOnionAuthError = true;
+ break;
+ case NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS:
+ error = "onionServices.badAddress";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT:
+ error = "onionServices.introTimedOut";
+ break;
default:
break;
}
+
+ // The presence of aFailedChannel indicates that we arrived here due to a
+ // failed connection attempt. Note that we will arrive here a second time
+ // if the user cancels the Tor client auth prompt, but in that case we
+ // will not have a failed channel and therefore we will not prompt again.
+ if (isOnionAuthError && aFailedChannel) {
+ // Display about:blank while the Tor client auth prompt is open.
+ errorPage.AssignLiteral("blank");
+ }
}
// If the HTTPS-Only Mode upgraded this request and the upgrade might have
@@ -3710,6 +3745,20 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
nsAutoString str;
rv =
stringBundle->FormatStringFromName(errorDescriptionID, formatStrs, str);
+ if (NS_FAILED(rv)) {
+ // As a fallback, check torbutton.properties for the error string.
+ const char bundleURL[] = "chrome://torbutton/locale/torbutton.properties";
+ nsCOMPtr<nsIStringBundleService> stringBundleService =
+ mozilla::services::GetStringBundleService();
+ if (stringBundleService) {
+ nsCOMPtr<nsIStringBundle> tbStringBundle;
+ if (NS_SUCCEEDED(stringBundleService->CreateBundle(
+ bundleURL, getter_AddRefs(tbStringBundle)))) {
+ rv = tbStringBundle->FormatStringFromName(errorDescriptionID,
+ formatStrs, str);
+ }
+ }
+ }
NS_ENSURE_SUCCESS(rv, rv);
messageStr.Assign(str);
}
@@ -6197,6 +6246,7 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
aStatus == NS_ERROR_NET_INADEQUATE_SECURITY ||
aStatus == NS_ERROR_NET_HTTP2_SENT_GOAWAY ||
aStatus == NS_ERROR_NET_HTTP3_PROTOCOL_ERROR ||
+ NS_ERROR_GET_MODULE(aStatus) == NS_ERROR_MODULE_TOR ||
NS_ERROR_GET_MODULE(aStatus) == NS_ERROR_MODULE_SECURITY) {
// Errors to be shown for any frame
DisplayLoadError(aStatus, url, nullptr, aChannel);
@@ -7761,6 +7811,35 @@ nsresult nsDocShell::CreateContentViewer(const nsACString& aContentType,
FireOnLocationChange(this, aRequest, mCurrentURI, locationFlags);
}
+ // Arrange to show a Tor onion service client authentication prompt if
+ // appropriate.
+ if ((mLoadType == LOAD_ERROR_PAGE) && failedChannel) {
+ nsresult status = NS_OK;
+ if (NS_SUCCEEDED(failedChannel->GetStatus(&status)) &&
+ ((status == NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH) ||
+ (status == NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH))) {
+ nsAutoCString onionHost;
+ failedURI->GetHost(onionHost);
+ const char* topic = (status == NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH)
+ ? "tor-onion-services-clientauth-missing"
+ : "tor-onion-services-clientauth-incorrect";
+ if (XRE_IsContentProcess()) {
+ nsCOMPtr<nsIBrowserChild> browserChild = GetBrowserChild();
+ if (browserChild) {
+ static_cast<BrowserChild*>(browserChild.get())
+ ->SendShowOnionServicesAuthPrompt(onionHost, nsCString(topic));
+ }
+ } else {
+ nsCOMPtr<nsPIDOMWindowOuter> browserWin = GetWindow();
+ nsCOMPtr<nsIObserverService> obsSvc = services::GetObserverService();
+ if (browserWin && obsSvc) {
+ obsSvc->NotifyObservers(browserWin, topic,
+ NS_ConvertUTF8toUTF16(onionHost).get());
+ }
+ }
+ }
+ }
+
return NS_OK;
}
diff --git a/dom/ipc/BrowserParent.cpp b/dom/ipc/BrowserParent.cpp
index dfd15c1fd17b..7749792cafb4 100644
--- a/dom/ipc/BrowserParent.cpp
+++ b/dom/ipc/BrowserParent.cpp
@@ -3941,6 +3941,27 @@ mozilla::ipc::IPCResult BrowserParent::RecvShowCanvasPermissionPrompt(
return IPC_OK();
}
+mozilla::ipc::IPCResult BrowserParent::RecvShowOnionServicesAuthPrompt(
+ const nsCString& aOnionName, const nsCString& aTopic) {
+ nsCOMPtr<nsIBrowser> browser =
+ mFrameElement ? mFrameElement->AsBrowser() : nullptr;
+ if (!browser) {
+ // If the tab is being closed, the browser may not be available.
+ // In this case we can ignore the request.
+ return IPC_OK();
+ }
+ nsCOMPtr<nsIObserverService> os = services::GetObserverService();
+ if (!os) {
+ return IPC_FAIL_NO_REASON(this);
+ }
+ nsresult rv = os->NotifyObservers(browser, aTopic.get(),
+ NS_ConvertUTF8toUTF16(aOnionName).get());
+ if (NS_FAILED(rv)) {
+ return IPC_FAIL_NO_REASON(this);
+ }
+ return IPC_OK();
+}
+
mozilla::ipc::IPCResult BrowserParent::RecvVisitURI(nsIURI* aURI,
nsIURI* aLastVisitedURI,
const uint32_t& aFlags) {
diff --git a/dom/ipc/BrowserParent.h b/dom/ipc/BrowserParent.h
index 66509194edba..816945504b6c 100644
--- a/dom/ipc/BrowserParent.h
+++ b/dom/ipc/BrowserParent.h
@@ -763,6 +763,9 @@ class BrowserParent final : public PBrowserParent,
mozilla::ipc::IPCResult RecvShowCanvasPermissionPrompt(
const nsCString& aOrigin, const bool& aHideDoorHanger);
+ mozilla::ipc::IPCResult RecvShowOnionServicesAuthPrompt(
+ const nsCString& aOnionName, const nsCString& aTopic);
+
mozilla::ipc::IPCResult RecvSetSystemFont(const nsCString& aFontName);
mozilla::ipc::IPCResult RecvGetSystemFont(nsCString* aFontName);
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index ed31b32a4eb2..f36e2c6db353 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -592,6 +592,15 @@ parent:
bool aNeedCollectSHistory, uint32_t aFlushId,
bool aIsFinal, uint32_t aEpoch);
+ /**
+ * This function is used to notify the parent that it should display a
+ * onion services client authentication prompt.
+ *
+ * @param aOnionHost The hostname of the .onion that needs authentication.
+ * @param aTopic The reason for the prompt.
+ */
+ async ShowOnionServicesAuthPrompt(nsCString aOnionHost, nsCString aTopic);
+
child:
async NativeSynthesisResponse(uint64_t aObserverId, nsCString aResponse);
async FlushTabState(uint32_t aFlushId, bool aIsFinal);
diff --git a/js/xpconnect/src/xpc.msg b/js/xpconnect/src/xpc.msg
index d884c6a85999..31e5e75ba35c 100644
--- a/js/xpconnect/src/xpc.msg
+++ b/js/xpconnect/src/xpc.msg
@@ -253,5 +253,15 @@ XPC_MSG_DEF(NS_ERROR_FINGERPRINTING_URI , "The URI is fingerprinti
XPC_MSG_DEF(NS_ERROR_CRYPTOMINING_URI , "The URI is cryptomining")
XPC_MSG_DEF(NS_ERROR_SOCIALTRACKING_URI , "The URI is social tracking")
+/* Codes related to Tor */
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_NOT_FOUND , "Tor onion service descriptor cannot be found")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_IS_INVALID , "Tor onion service descriptor is invalid")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_INTRO_FAILED , "Tor onion service introduction failed")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_REND_FAILED , "Tor onion service rendezvous failed")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH, "Tor onion service missing client authorization")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH , "Tor onion service wrong client authorization")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS , "Tor onion service bad address")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT , "Tor onion service introduction timed out")
+
/* Profile manager error codes */
XPC_MSG_DEF(NS_ERROR_DATABASE_CHANGED , "Flushing the profiles to disk would have overwritten changes made elsewhere.")
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index 7256280697c8..ce739e1f0de8 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -215,6 +215,12 @@ nsresult ErrorAccordingToNSPR(PRErrorCode errorCode) {
default:
if (psm::IsNSSErrorCode(errorCode)) {
rv = psm::GetXPCOMFromNSSError(errorCode);
+ } else {
+ // If we received a Tor extended error code via SOCKS, pass it through.
+ nsresult res = nsresult(errorCode);
+ if (NS_ERROR_GET_MODULE(res) == NS_ERROR_MODULE_TOR) {
+ rv = res;
+ }
}
break;
diff --git a/netwerk/socket/nsSOCKSIOLayer.cpp b/netwerk/socket/nsSOCKSIOLayer.cpp
index 6f2743ed5c71..57af13a7c026 100644
--- a/netwerk/socket/nsSOCKSIOLayer.cpp
+++ b/netwerk/socket/nsSOCKSIOLayer.cpp
@@ -1004,6 +1004,55 @@ PRStatus nsSOCKSSocketInfo::ReadV5ConnectResponseTop() {
"08, Address type not supported."));
c = PR_BAD_ADDRESS_ERROR;
break;
+ case 0xF0: // Tor SOCKS5_HS_NOT_FOUND
+ LOGERROR(
+ ("socks5: connect failed: F0,"
+ " Tor onion service descriptor can not be found."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_NOT_FOUND);
+ break;
+ case 0xF1: // Tor SOCKS5_HS_IS_INVALID
+ LOGERROR(
+ ("socks5: connect failed: F1,"
+ " Tor onion service descriptor is invalid."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_IS_INVALID);
+ break;
+ case 0xF2: // Tor SOCKS5_HS_INTRO_FAILED
+ LOGERROR(
+ ("socks5: connect failed: F2,"
+ " Tor onion service introduction failed."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_INTRO_FAILED);
+ break;
+ case 0xF3: // Tor SOCKS5_HS_REND_FAILED
+ LOGERROR(
+ ("socks5: connect failed: F3,"
+ " Tor onion service rendezvous failed."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_REND_FAILED);
+ break;
+ case 0xF4: // Tor SOCKS5_HS_MISSING_CLIENT_AUTH
+ LOGERROR(
+ ("socks5: connect failed: F4,"
+ " Tor onion service missing client authorization."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH);
+ break;
+ case 0xF5: // Tor SOCKS5_HS_BAD_CLIENT_AUTH
+ LOGERROR(
+ ("socks5: connect failed: F5,"
+ " Tor onion service wrong client authorization."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH);
+ break;
+ case 0xF6: // Tor SOCKS5_HS_BAD_ADDRESS
+ LOGERROR(
+ ("socks5: connect failed: F6,"
+ " Tor onion service bad address."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS);
+ break;
+ case 0xF7: // Tor SOCKS5_HS_INTRO_TIMEDOUT
+ LOGERROR(
+ ("socks5: connect failed: F7,"
+ " Tor onion service introduction timed out."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT);
+ break;
+
default:
LOGERROR(("socks5: connect failed."));
break;
diff --git a/toolkit/modules/PopupNotifications.jsm b/toolkit/modules/PopupNotifications.jsm
index d31f91ab00a5..6886c0b13c5d 100644
--- a/toolkit/modules/PopupNotifications.jsm
+++ b/toolkit/modules/PopupNotifications.jsm
@@ -406,6 +406,8 @@ PopupNotifications.prototype = {
* will be dismissed instead of removed after running the callback.
* - [optional] disabled (boolean): If this is true, the button
* will be disabled.
+ * - [optional] leaveOpen (boolean): If this is true, the notification
+ * will not be removed after running the callback.
* - [optional] disableHighlight (boolean): If this is true, the button
* will not apply the default highlight style.
* If null, the notification will have a default "OK" action button
@@ -1884,6 +1886,10 @@ PopupNotifications.prototype = {
this._dismiss();
return;
}
+
+ if (action.leaveOpen) {
+ return;
+ }
}
this._remove(notification);
diff --git a/toolkit/modules/RemotePageAccessManager.jsm b/toolkit/modules/RemotePageAccessManager.jsm
index 9734324cbd5f..eceaa7c857de 100644
--- a/toolkit/modules/RemotePageAccessManager.jsm
+++ b/toolkit/modules/RemotePageAccessManager.jsm
@@ -95,6 +95,7 @@ let RemotePageAccessManager = {
],
RPMPrefIsLocked: ["security.tls.version.min"],
RPMAddToHistogram: ["*"],
+ RPMGetTorStrings: ["*"],
},
"about:newinstall": {
RPMGetUpdateChannel: ["*"],
diff --git a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
index 28f5d864b0bd..cd0d6d4d3656 100644
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
@@ -37,5 +37,6 @@ module.exports = {
RPMRecordTelemetryEvent: false,
RPMAddToHistogram: false,
RPMRemoveMessageListener: false,
+ RPMGetTorStrings: false,
},
};
diff --git a/xpcom/base/ErrorList.py b/xpcom/base/ErrorList.py
index 6b1a05a91b31..5f35cf7771f9 100755
--- a/xpcom/base/ErrorList.py
+++ b/xpcom/base/ErrorList.py
@@ -85,6 +85,7 @@ modules["URL_CLASSIFIER"] = Mod(42)
# ErrorResult gets its own module to reduce the chance of someone accidentally
# defining an error code matching one of the ErrorResult ones.
modules["ERRORRESULT"] = Mod(43)
+modules["TOR"] = Mod(44)
# NS_ERROR_MODULE_GENERAL should be used by modules that do not
# care if return code values overlap. Callers of methods that
@@ -1179,6 +1180,27 @@ with modules["ERRORRESULT"]:
errors["NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR"] = FAILURE(5)
+# =======================================================================
+# 44: Tor-specific error codes.
+# =======================================================================
+with modules["TOR"]:
+ # Tor onion service descriptor can not be found.
+ errors["NS_ERROR_TOR_ONION_SVC_NOT_FOUND"] = FAILURE(1)
+ # Tor onion service descriptor is invalid.
+ errors["NS_ERROR_TOR_ONION_SVC_IS_INVALID"] = FAILURE(2)
+ # Tor onion service introduction failed.
+ errors["NS_ERROR_TOR_ONION_SVC_INTRO_FAILED"] = FAILURE(3)
+ # Tor onion service rendezvous failed.
+ errors["NS_ERROR_TOR_ONION_SVC_REND_FAILED"] = FAILURE(4)
+ # Tor onion service missing client authorization.
+ errors["NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH"] = FAILURE(5)
+ # Tor onion service wrong client authorization.
+ errors["NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH"] = FAILURE(6)
+ # Tor onion service bad address.
+ errors["NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS"] = FAILURE(7)
+ # Tor onion service introduction timed out.
+ errors["NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT"] = FAILURE(8)
+
# =======================================================================
# 51: NS_ERROR_MODULE_GENERAL
# =======================================================================
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 32418: Allow updates to be disabled via an enterprise policy.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit c502447e8a0c00e4ef29b82083a348210fce43b6
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Apr 16 17:07:09 2020 -0400
Bug 32418: Allow updates to be disabled via an enterprise policy.
Restrict the Enterprise Policies mechanism to only consult a
policies.json file (avoiding the Windows Registry and macOS's
file system attributes).
Add a few disabledByPolicy() checks to the update service to
avoid extraneous (and potentially confusing) log messages when
updates are disabled by policy.
Sample content for distribution/policies.json:
{
"policies": {
"DisableAppUpdate": true
}
}
On Linux, avoid reading policies from /etc/firefox/policies/policies.json
---
.../components/enterprisepolicies/EnterprisePolicies.js | 12 ++++++++++++
toolkit/components/enterprisepolicies/moz.build | 4 +++-
toolkit/mozapps/update/UpdateService.jsm | 16 ++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/toolkit/components/enterprisepolicies/EnterprisePolicies.js b/toolkit/components/enterprisepolicies/EnterprisePolicies.js
index 070d5fe1f16b..adb073a2350c 100644
--- a/toolkit/components/enterprisepolicies/EnterprisePolicies.js
+++ b/toolkit/components/enterprisepolicies/EnterprisePolicies.js
@@ -2,6 +2,10 @@
* 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/. */
+// To ensure that policies intended for Firefox or another browser will not
+// be used, Tor Browser only looks for policies in ${InstallDir}/distribution
+#define AVOID_SYSTEM_POLICIES MOZ_PROXY_BYPASS_PROTECTION
+
const { XPCOMUtils } = ChromeUtils.import(
"resource://gre/modules/XPCOMUtils.jsm"
);
@@ -11,9 +15,11 @@ const { AppConstants } = ChromeUtils.import(
);
XPCOMUtils.defineLazyModuleGetters(this, {
+#ifndef AVOID_SYSTEM_POLICIES
WindowsGPOParser: "resource://gre/modules/policies/WindowsGPOParser.jsm",
macOSPoliciesParser:
"resource://gre/modules/policies/macOSPoliciesParser.jsm",
+#endif
Policies: "resource:///modules/policies/Policies.jsm",
JsonSchemaValidator:
"resource://gre/modules/components-utils/JsonSchemaValidator.jsm",
@@ -117,11 +123,13 @@ EnterprisePoliciesManager.prototype = {
_chooseProvider() {
let platformProvider = null;
+#ifndef AVOID_SYSTEM_POLICIES
if (AppConstants.platform == "win") {
platformProvider = new WindowsGPOPoliciesProvider();
} else if (AppConstants.platform == "macosx") {
platformProvider = new macOSPoliciesProvider();
}
+#endif
let jsonProvider = new JSONPoliciesProvider();
if (platformProvider && platformProvider.hasPolicies) {
if (jsonProvider.hasPolicies) {
@@ -470,6 +478,7 @@ class JSONPoliciesProvider {
_getConfigurationFile() {
let configFile = null;
+#ifndef AVOID_SYSTEM_POLICIES
if (AppConstants.platform == "linux") {
let systemConfigFile = Cc["@mozilla.org/file/local;1"].createInstance(
Ci.nsIFile
@@ -482,6 +491,7 @@ class JSONPoliciesProvider {
return systemConfigFile;
}
}
+#endif
try {
let perUserPath = Services.prefs.getBoolPref(PREF_PER_USER_DIR, false);
@@ -563,6 +573,7 @@ class JSONPoliciesProvider {
}
}
+#ifndef AVOID_SYSTEM_POLICIES
class WindowsGPOPoliciesProvider {
constructor() {
this._policies = null;
@@ -637,6 +648,7 @@ class macOSPoliciesProvider {
return this._failed;
}
}
+#endif
class CombinedProvider {
constructor(primaryProvider, secondaryProvider) {
diff --git a/toolkit/components/enterprisepolicies/moz.build b/toolkit/components/enterprisepolicies/moz.build
index 8f7d7d8cfed7..7528f569bb3e 100644
--- a/toolkit/components/enterprisepolicies/moz.build
+++ b/toolkit/components/enterprisepolicies/moz.build
@@ -19,10 +19,12 @@ TEST_DIRS += [
if CONFIG['MOZ_WIDGET_TOOLKIT'] != "android":
EXTRA_COMPONENTS += [
- 'EnterprisePolicies.js',
'EnterprisePolicies.manifest',
'EnterprisePoliciesContent.js',
]
+ EXTRA_PP_COMPONENTS += [
+ 'EnterprisePolicies.js',
+ ]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
EXTRA_JS_MODULES.policies += [
diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm
index 2c565cecadd7..1fb397373151 100644
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -3268,6 +3268,14 @@ UpdateService.prototype = {
* See nsIUpdateService.idl
*/
get canApplyUpdates() {
+ if (this.disabledByPolicy) {
+ LOG(
+ "UpdateService.canApplyUpdates - unable to apply updates, " +
+ "the option has been disabled by the administrator."
+ );
+ return false;
+ }
+
return getCanApplyUpdates() && hasUpdateMutex();
},
@@ -3275,6 +3283,14 @@ UpdateService.prototype = {
* See nsIUpdateService.idl
*/
get canStageUpdates() {
+ if (this.disabledByPolicy) {
+ LOG(
+ "UpdateService.canStageUpdates - unable to stage updates, " +
+ "the option has been disabled by the administrator."
+ );
+ return false;
+ }
+
return getCanStageUpdates();
},
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 28005: Implement .onion alias urlbar rewrites
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit febcaf62ee9a85b2c3be638275ae063d34f46e76
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu Feb 13 13:24:33 2020 +0100
Bug 28005: Implement .onion alias urlbar rewrites
A custom HTTPS Everywhere update channel is installed,
which provides rules for locally redirecting some memorable
.tor.onion URLs to non-memorable .onion URLs.
When these redirects occur, we also rewrite the URL in the urlbar
to display the human-memorable hostname instead of the actual
.onion.
Bug 34196: Update site info URL with the onion name
---
browser/actors/ClickHandlerChild.jsm | 20 ++
browser/actors/ClickHandlerParent.jsm | 1 +
browser/actors/ContextMenuChild.jsm | 4 +
browser/base/content/browser-places.js | 12 +-
browser/base/content/browser-siteIdentity.js | 12 +-
browser/base/content/browser.js | 43 ++++-
browser/base/content/nsContextMenu.js | 18 ++
browser/base/content/pageinfo/pageInfo.js | 2 +-
browser/base/content/pageinfo/pageInfo.xhtml | 10 +
browser/base/content/pageinfo/security.js | 17 +-
browser/base/content/tabbrowser.js | 7 +
browser/base/content/utilityOverlay.js | 12 ++
browser/components/BrowserGlue.jsm | 8 +
.../onionservices/ExtensionMessaging.jsm | 86 +++++++++
.../onionservices/HttpsEverywhereControl.jsm | 119 ++++++++++++
.../components/onionservices/OnionAliasStore.jsm | 201 +++++++++++++++++++++
browser/components/onionservices/moz.build | 6 +
browser/components/urlbar/UrlbarInput.jsm | 13 +-
docshell/base/nsDocShell.cpp | 52 ++++++
docshell/base/nsDocShell.h | 6 +
docshell/base/nsDocShellLoadState.cpp | 4 +
docshell/base/nsIDocShell.idl | 5 +
docshell/base/nsIWebNavigation.idl | 5 +
docshell/shistory/SessionHistoryEntry.cpp | 14 ++
docshell/shistory/SessionHistoryEntry.h | 1 +
docshell/shistory/nsISHEntry.idl | 5 +
docshell/shistory/nsSHEntry.cpp | 22 ++-
docshell/shistory/nsSHEntry.h | 1 +
dom/interfaces/base/nsIBrowser.idl | 3 +-
dom/ipc/BrowserChild.cpp | 2 +
dom/ipc/BrowserParent.cpp | 3 +-
dom/ipc/PBrowser.ipdl | 1 +
modules/libpref/init/StaticPrefList.yaml | 6 +
netwerk/dns/effective_tld_names.dat | 2 +
netwerk/ipc/DocumentLoadListener.cpp | 10 +
toolkit/content/widgets/browser-custom-element.js | 13 +-
toolkit/modules/sessionstore/SessionHistory.jsm | 5 +
37 files changed, 729 insertions(+), 22 deletions(-)
diff --git a/browser/actors/ClickHandlerChild.jsm b/browser/actors/ClickHandlerChild.jsm
index 7dd060e83061..206a8fc97a4d 100644
--- a/browser/actors/ClickHandlerChild.jsm
+++ b/browser/actors/ClickHandlerChild.jsm
@@ -138,6 +138,26 @@ class ClickHandlerChild extends JSWindowActorChild {
json.originStoragePrincipal = ownerDoc.effectiveStoragePrincipal;
json.triggeringPrincipal = ownerDoc.nodePrincipal;
+ // Check if the link needs to be opened with .tor.onion urlbar rewrites
+ // allowed. Only when the owner doc has onionUrlbarRewritesAllowed = true
+ // and the same origin we should allow this.
+ json.onionUrlbarRewritesAllowed = false;
+ if (this.docShell.onionUrlbarRewritesAllowed) {
+ const sm = Services.scriptSecurityManager;
+ try {
+ let targetURI = Services.io.newURI(href);
+ let isPrivateWin =
+ ownerDoc.nodePrincipal.originAttributes.privateBrowsingId > 0;
+ sm.checkSameOriginURI(
+ docshell.currentDocumentChannel.URI,
+ targetURI,
+ false,
+ isPrivateWin
+ );
+ json.onionUrlbarRewritesAllowed = true;
+ } catch (e) {}
+ }
+
// If a link element is clicked with middle button, user wants to open
// the link somewhere rather than pasting clipboard content. Therefore,
// when it's clicked with middle button, we should prevent multiple
diff --git a/browser/actors/ClickHandlerParent.jsm b/browser/actors/ClickHandlerParent.jsm
index 454c0fe69b27..42ab7a0f6e2a 100644
--- a/browser/actors/ClickHandlerParent.jsm
+++ b/browser/actors/ClickHandlerParent.jsm
@@ -102,6 +102,7 @@ class ClickHandlerParent extends JSWindowActorParent {
charset: browser.characterSet,
referrerInfo: E10SUtils.deserializeReferrerInfo(data.referrerInfo),
allowMixedContent: data.allowMixedContent,
+ onionUrlbarRewritesAllowed: data.onionUrlbarRewritesAllowed,
isContentWindowPrivate: data.isContentWindowPrivate,
originPrincipal: data.originPrincipal,
originStoragePrincipal: data.originStoragePrincipal,
diff --git a/browser/actors/ContextMenuChild.jsm b/browser/actors/ContextMenuChild.jsm
index 16a3f8ecbc81..1a1b38aa6375 100644
--- a/browser/actors/ContextMenuChild.jsm
+++ b/browser/actors/ContextMenuChild.jsm
@@ -575,6 +575,9 @@ class ContextMenuChild extends JSWindowActorChild {
// The same-origin check will be done in nsContextMenu.openLinkInTab.
let parentAllowsMixedContent = !!this.docShell.mixedContentChannel;
+ let parentAllowsOnionUrlbarRewrites = this.docShell
+ .onionUrlbarRewritesAllowed;
+
let disableSetDesktopBackground = null;
// Media related cache info parent needs for saving
@@ -687,6 +690,7 @@ class ContextMenuChild extends JSWindowActorChild {
frameBrowsingContextID,
disableSetDesktopBackground,
parentAllowsMixedContent,
+ parentAllowsOnionUrlbarRewrites,
};
if (context.inFrame && !context.inSrcdocFrame) {
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js
index d4b71f87da04..9a9bb3e0dad4 100644
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -452,7 +452,8 @@ var PlacesCommandHook = {
*/
async bookmarkPage() {
let browser = gBrowser.selectedBrowser;
- let url = new URL(browser.currentURI.spec);
+ const uri = browser.currentOnionAliasURI || browser.currentURI;
+ let url = new URL(uri.spec);
let info = await PlacesUtils.bookmarks.fetch({ url });
let isNewBookmark = !info;
let showEditUI = !isNewBookmark || StarUI.showForNewBookmarks;
@@ -556,7 +557,7 @@ var PlacesCommandHook = {
tabs.forEach(tab => {
let browser = tab.linkedBrowser;
- let uri = browser.currentURI;
+ let uri = browser.currentOnionAliasURI || browser.currentURI;
let title = browser.contentTitle || tab.label;
let spec = uri.spec;
if (!(spec in uniquePages)) {
@@ -1655,14 +1656,17 @@ var BookmarkingUI = {
},
onLocationChange: function BUI_onLocationChange() {
- if (this._uri && gBrowser.currentURI.equals(this._uri)) {
+ const uri =
+ gBrowser.selectedBrowser.currentOnionAliasURI || gBrowser.currentURI;
+ if (this._uri && uri.equals(this._uri)) {
return;
}
this.updateStarState();
},
updateStarState: function BUI_updateStarState() {
- this._uri = gBrowser.currentURI;
+ this._uri =
+ gBrowser.selectedBrowser.currentOnionAliasURI || gBrowser.currentURI;
this._itemGuids.clear();
let guids = new Set();
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index b7fa432d9478..539d6d4056a3 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -474,13 +474,13 @@ var gIdentityHandler = {
* nsIURI for which the identity UI should be displayed, already
* processed by createExposableURI.
*/
- updateIdentity(state, uri) {
+ updateIdentity(state, uri, onionAliasURI) {
let shouldHidePopup = this._uri && this._uri.spec != uri.spec;
this._state = state;
// Firstly, populate the state properties required to display the UI. See
// the documentation of the individual properties for details.
- this.setURI(uri);
+ this.setURI(uri, onionAliasURI);
this._secInfo = gBrowser.securityUI.secInfo;
this._isSecureContext = gBrowser.securityUI.isSecureContext;
@@ -566,17 +566,18 @@ var gIdentityHandler = {
* Attempt to provide proper IDN treatment for host names
*/
getEffectiveHost() {
+ let uri = this._onionAliasURI || this._uri;
if (!this._IDNService) {
this._IDNService = Cc["@mozilla.org/network/idn-service;1"].getService(
Ci.nsIIDNService
);
}
try {
- return this._IDNService.convertToDisplayIDN(this._uri.host, {});
+ return this._IDNService.convertToDisplayIDN(uri.host, {});
} catch (e) {
// If something goes wrong (e.g. host is an IP address) just fail back
// to the full domain.
- return this._uri.host;
+ return uri.host;
}
},
@@ -1000,8 +1001,9 @@ var gIdentityHandler = {
this.updateSitePermissions();
},
- setURI(uri) {
+ setURI(uri, onionAliasURI) {
this._uri = uri;
+ this._onionAliasURI = onionAliasURI;
try {
// Account for file: urls and catch when "" is the value
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 9f5f0c608536..bd5f10cb6f64 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -77,6 +77,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
Translation: "resource:///modules/translation/TranslationParent.jsm",
+ OnionAliasStore: "resource:///modules/OnionAliasStore.jsm",
UITour: "resource:///modules/UITour.jsm",
UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
UrlbarInput: "resource:///modules/UrlbarInput.jsm",
@@ -2325,6 +2326,7 @@ var gBrowserInit = {
// [9]: allowInheritPrincipal (bool)
// [10]: csp (nsIContentSecurityPolicy)
// [11]: nsOpenWindowInfo
+ // [12]: onionUrlbarRewritesAllowed (bool)
let userContextId =
window.arguments[5] != undefined
? window.arguments[5]
@@ -2344,7 +2346,8 @@ var gBrowserInit = {
// TODO fix allowInheritPrincipal to default to false.
// Default to true unless explicitly set to false because of bug 1475201.
window.arguments[9] !== false,
- window.arguments[10]
+ window.arguments[10],
+ window.arguments[12]
);
window.focus();
} else {
@@ -3230,7 +3233,8 @@ function loadURI(
forceAboutBlankViewerInCurrent,
triggeringPrincipal,
allowInheritPrincipal = false,
- csp = null
+ csp = null,
+ onionUrlbarRewritesAllowed = false
) {
if (!triggeringPrincipal) {
throw new Error("Must load with a triggering Principal");
@@ -3248,6 +3252,7 @@ function loadURI(
csp,
forceAboutBlankViewerInCurrent,
allowInheritPrincipal,
+ onionUrlbarRewritesAllowed,
});
} catch (e) {
Cu.reportError(e);
@@ -5359,11 +5364,24 @@ var XULBrowserWindow = {
this.reloadCommand.removeAttribute("disabled");
}
+ // The onion memorable alias needs to be used in gURLBar.setURI, but also in
+ // other parts of the code (like the bookmarks UI), so we save it.
+ if (gBrowser.selectedBrowser.onionUrlbarRewritesAllowed) {
+ gBrowser.selectedBrowser.currentOnionAliasURI = OnionAliasStore.getShortURI(
+ aLocationURI
+ );
+ } else {
+ gBrowser.selectedBrowser.currentOnionAliasURI = null;
+ }
+
// We want to update the popup visibility if we received this notification
// via simulated locationchange events such as switching between tabs, however
// if this is a document navigation then PopupNotifications will be updated
// via TabsProgressListener.onLocationChange and we do not want it called twice
- gURLBar.setURI(aLocationURI, aIsSimulated);
+ gURLBar.setURI(
+ gBrowser.selectedBrowser.currentOnionAliasURI || aLocationURI,
+ aIsSimulated
+ );
BookmarkingUI.onLocationChange();
@@ -5534,6 +5552,7 @@ var XULBrowserWindow = {
// Don't need to do anything if the data we use to update the UI hasn't
// changed
let uri = gBrowser.currentURI;
+ let onionAliasURI = gBrowser.selectedBrowser.currentOnionAliasURI;
let spec = uri.spec;
if (this._state == aState && this._lastLocation == spec) {
// Switching to a tab of the same URL doesn't change most security
@@ -5551,7 +5570,7 @@ var XULBrowserWindow = {
try {
uri = Services.io.createExposableURI(uri);
} catch (e) {}
- gIdentityHandler.updateIdentity(this._state, uri);
+ gIdentityHandler.updateIdentity(this._state, uri, onionAliasURI);
},
// simulate all change notifications after switching tabs
@@ -7011,6 +7030,21 @@ function handleLinkClick(event, href, linkNode) {
} catch (e) {}
}
+ // Check if the link needs to be opened with .tor.onion urlbar rewrites
+ // allowed. Only when the owner doc has onionUrlbarRewritesAllowed = true
+ // and the same origin we should allow this.
+ let persistOnionUrlbarRewritesAllowedInChildTab = false;
+ if (where == "tab" && gBrowser.docShell.onionUrlbarRewritesAllowed) {
+ const sm = Services.scriptSecurityManager;
+ try {
+ let tURI = makeURI(href);
+ let isPrivateWin =
+ doc.nodePrincipal.originAttributes.privateBrowsingId > 0;
+ sm.checkSameOriginURI(doc.documentURIObject, tURI, false, isPrivateWin);
+ persistOnionUrlbarRewritesAllowedInChildTab = true;
+ } catch (e) {}
+ }
+
let frameOuterWindowID = WebNavigationFrames.getFrameId(doc.defaultView);
urlSecurityCheck(href, doc.nodePrincipal);
@@ -7023,6 +7057,7 @@ function handleLinkClick(event, href, linkNode) {
triggeringPrincipal: doc.nodePrincipal,
csp: doc.csp,
frameOuterWindowID,
+ onionUrlbarRewritesAllowed: persistOnionUrlbarRewritesAllowedInChildTab,
};
// The new tab/window must use the same userContextId
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
index 354b504ce0b4..ca351c71f1cb 100644
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -57,6 +57,7 @@ function openContextMenu(aMessage, aBrowser, aActor) {
disableSetDesktopBackground: data.disableSetDesktopBackground,
loginFillInfo: data.loginFillInfo,
parentAllowsMixedContent: data.parentAllowsMixedContent,
+ parentAllowsOnionUrlbarRewrites: data.parentAllowsOnionUrlbarRewrites,
userContextId: data.userContextId,
webExtContextData: data.webExtContextData,
};
@@ -1059,6 +1060,7 @@ class nsContextMenu {
triggeringPrincipal: this.principal,
csp: this.csp,
frameOuterWindowID: this.contentData.frameOuterWindowID,
+ onionUrlbarRewritesAllowed: false,
};
for (let p in extra) {
params[p] = extra[p];
@@ -1082,6 +1084,22 @@ class nsContextMenu {
}
params.referrerInfo = referrerInfo;
+
+ // Check if the link needs to be opened with .tor.onion urlbar rewrites
+ // allowed. Only when parent has onionUrlbarRewritesAllowed = true
+ // and the same origin we should allow this.
+ if (this.contentData.parentAllowsOnionUrlbarRewrites) {
+ let referrerURI = this.contentData.documentURIObject;
+ const sm = Services.scriptSecurityManager;
+ try {
+ let targetURI = this.linkURI;
+ let isPrivateWin =
+ this.browser.contentPrincipal.originAttributes.privateBrowsingId > 0;
+ sm.checkSameOriginURI(referrerURI, targetURI, false, isPrivateWin);
+ params.onionUrlbarRewritesAllowed = true;
+ } catch (e) {}
+ }
+
return params;
}
diff --git a/browser/base/content/pageinfo/pageInfo.js b/browser/base/content/pageinfo/pageInfo.js
index 664dace84d9f..cd03cea3b6d9 100644
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -390,7 +390,7 @@ async function onNonMediaPageInfoLoad(browser, pageInfoData, imageInfo) {
);
}
onLoadPermission(uri, principal);
- securityOnLoad(uri, windowInfo);
+ securityOnLoad(uri, windowInfo, browser.currentOnionAliasURI);
}
function resetPageInfo(args) {
diff --git a/browser/base/content/pageinfo/pageInfo.xhtml b/browser/base/content/pageinfo/pageInfo.xhtml
index f40ffd3778d8..a23f2bb5748c 100644
--- a/browser/base/content/pageinfo/pageInfo.xhtml
+++ b/browser/base/content/pageinfo/pageInfo.xhtml
@@ -312,6 +312,16 @@
<input id="security-identity-domain-value" readonly="readonly"/>
</td>
</tr>
+ <!-- Onion Alias -->
+ <tr id="security-view-identity-onionalias-row">
+ <th>
+ <xul:label id="security-view-identity-onionalias"
+ control="security-view-identity-onionalias-value"/>
+ </th>
+ <td>
+ <input id="security-view-identity-onionalias-value" readonly="true"/>
+ </td>
+ </tr>
<!-- Owner -->
<tr>
<th>
diff --git a/browser/base/content/pageinfo/security.js b/browser/base/content/pageinfo/security.js
index 4331ebc4b219..29395e96ce57 100644
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -250,7 +250,7 @@ var security = {
},
};
-async function securityOnLoad(uri, windowInfo) {
+async function securityOnLoad(uri, windowInfo, onionAliasURI) {
await security.init(uri, windowInfo);
let info = security.securityInfo;
@@ -263,6 +263,21 @@ async function securityOnLoad(uri, windowInfo) {
}
document.getElementById("securityTab").hidden = false;
+ if (onionAliasURI) {
+ setText(
+ "security-view-identity-onionalias",
+ gTorButtonBundle.GetStringFromName("pageInfo_OnionName")
+ );
+ setText("security-view-identity-onionalias-value", onionAliasURI.host);
+ document.getElementById(
+ "security-view-identity-onionalias-row"
+ ).hidden = false;
+ } else {
+ document.getElementById(
+ "security-view-identity-onionalias-row"
+ ).hidden = true;
+ }
+
/* Set Identity section text */
setText("security-identity-domain-value", windowInfo.hostName);
diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js
index 8ce4a2710cb8..8c313eaaffcb 100644
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -1547,6 +1547,7 @@
var aRelatedToCurrent;
var aAllowInheritPrincipal;
var aAllowMixedContent;
+ var aOnionUrlbarRewritesAllowed;
var aSkipAnimation;
var aForceNotRemote;
var aPreferredRemoteType;
@@ -1577,6 +1578,7 @@
aRelatedToCurrent = params.relatedToCurrent;
aAllowInheritPrincipal = !!params.allowInheritPrincipal;
aAllowMixedContent = params.allowMixedContent;
+ aOnionUrlbarRewritesAllowed = params.onionUrlbarRewritesAllowed;
aSkipAnimation = params.skipAnimation;
aForceNotRemote = params.forceNotRemote;
aPreferredRemoteType = params.preferredRemoteType;
@@ -1618,6 +1620,7 @@
relatedToCurrent: aRelatedToCurrent,
skipAnimation: aSkipAnimation,
allowMixedContent: aAllowMixedContent,
+ onionUrlbarRewritesAllowed: aOnionUrlbarRewritesAllowed,
forceNotRemote: aForceNotRemote,
createLazyBrowser: aCreateLazyBrowser,
preferredRemoteType: aPreferredRemoteType,
@@ -2504,6 +2507,7 @@
{
allowInheritPrincipal,
allowMixedContent,
+ onionUrlbarRewritesAllowed,
allowThirdPartyFixup,
bulkOrderedOpen,
charset,
@@ -2833,6 +2837,9 @@
if (allowMixedContent) {
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_MIXED_CONTENT;
}
+ if (onionUrlbarRewritesAllowed) {
+ flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
+ }
if (!allowInheritPrincipal) {
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
}
diff --git a/browser/base/content/utilityOverlay.js b/browser/base/content/utilityOverlay.js
index a23d6f05e6a7..eb13d5a3435c 100644
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -367,6 +367,7 @@ function openLinkIn(url, where, params) {
var aRelatedToCurrent = params.relatedToCurrent;
var aAllowInheritPrincipal = !!params.allowInheritPrincipal;
var aAllowMixedContent = params.allowMixedContent;
+ var aOnionUrlbarRewritesAllowed = params.onionUrlbarRewritesAllowed;
var aForceAllowDataURI = params.forceAllowDataURI;
var aInBackground = params.inBackground;
var aInitiatingDoc = params.initiatingDoc;
@@ -482,6 +483,11 @@ function openLinkIn(url, where, params) {
].createInstance(Ci.nsISupportsPRBool);
allowThirdPartyFixupSupports.data = aAllowThirdPartyFixup;
+ var onionUrlbarRewritesAllowed = Cc[
+ "@mozilla.org/supports-PRBool;1"
+ ].createInstance(Ci.nsISupportsPRBool);
+ onionUrlbarRewritesAllowed.data = aOnionUrlbarRewritesAllowed;
+
var userContextIdSupports = Cc[
"@mozilla.org/supports-PRUint32;1"
].createInstance(Ci.nsISupportsPRUint32);
@@ -498,6 +504,8 @@ function openLinkIn(url, where, params) {
sa.appendElement(aTriggeringPrincipal);
sa.appendElement(null); // allowInheritPrincipal
sa.appendElement(aCsp);
+ sa.appendElement(null); // nsOpenWindowInfo
+ sa.appendElement(onionUrlbarRewritesAllowed);
const sourceWindow = w || window;
let win;
@@ -614,6 +622,9 @@ function openLinkIn(url, where, params) {
if (aForceAllowDataURI) {
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
}
+ if (aOnionUrlbarRewritesAllowed) {
+ flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
+ }
let { URI_INHERITS_SECURITY_CONTEXT } = Ci.nsIProtocolHandler;
if (
@@ -661,6 +672,7 @@ function openLinkIn(url, where, params) {
relatedToCurrent: aRelatedToCurrent,
skipAnimation: aSkipTabAnimation,
allowMixedContent: aAllowMixedContent,
+ onionUrlbarRewritesAllowed: aOnionUrlbarRewritesAllowed,
userContextId: aUserContextId,
originPrincipal: aPrincipal,
originStoragePrincipal: aStoragePrincipal,
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 7d147d01d561..d30abff54562 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -703,6 +703,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
TabUnloader: "resource:///modules/TabUnloader.jsm",
TRRRacer: "resource:///modules/TRRPerformance.jsm",
+ OnionAliasStore: "resource:///modules/OnionAliasStore.jsm",
UIState: "resource://services-sync/UIState.jsm",
WebChannel: "resource://gre/modules/WebChannel.jsm",
WindowsRegistry: "resource://gre/modules/WindowsRegistry.jsm",
@@ -2046,6 +2047,7 @@ BrowserGlue.prototype = {
Normandy.uninit();
RFPHelper.uninit();
+ OnionAliasStore.uninit();
},
// Set up a listener to enable/disable the screenshots extension
@@ -2412,6 +2414,12 @@ BrowserGlue.prototype = {
},
},
+ {
+ task: () => {
+ OnionAliasStore.init();
+ },
+ },
+
{
task: () => {
Blocklist.loadBlocklistAsync();
diff --git a/browser/components/onionservices/ExtensionMessaging.jsm b/browser/components/onionservices/ExtensionMessaging.jsm
new file mode 100644
index 000000000000..b5d69df93807
--- /dev/null
+++ b/browser/components/onionservices/ExtensionMessaging.jsm
@@ -0,0 +1,86 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+const EXPORTED_SYMBOLS = ["ExtensionMessaging"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { ExtensionUtils } = ChromeUtils.import(
+ "resource://gre/modules/ExtensionUtils.jsm"
+);
+const { MessageChannel } = ChromeUtils.import(
+ "resource://gre/modules/MessageChannel.jsm"
+);
+const { AddonManager } = ChromeUtils.import(
+ "resource://gre/modules/AddonManager.jsm"
+);
+
+class ExtensionMessaging {
+ constructor() {
+ this._callback = null;
+ this._handlers = new Map();
+ this._messageManager = Services.cpmm;
+ }
+
+ async sendMessage(msg, extensionId) {
+ this._init();
+
+ const addon = await AddonManager.getAddonByID(extensionId);
+ if (!addon) {
+ throw new Error(`extension '${extensionId} does not exist`);
+ }
+ await addon.startupPromise;
+
+ const channelId = ExtensionUtils.getUniqueId();
+ return new Promise((resolve, reject) => {
+ this._handlers.set(channelId, { resolve, reject });
+ this._messageManager.sendAsyncMessage("MessageChannel:Messages", [
+ {
+ messageName: "Extension:Message",
+ sender: {
+ id: extensionId,
+ extensionId,
+ },
+ recipient: { extensionId },
+ data: new StructuredCloneHolder(msg),
+ channelId,
+ responseType: MessageChannel.RESPONSE_FIRST,
+ },
+ ]);
+ });
+ }
+
+ unload() {
+ if (this._callback) {
+ this._handlers.clear();
+ this._messageManager.removeMessageListener(
+ "MessageChannel:Response",
+ this._callback
+ );
+ this._callback = null;
+ }
+ }
+
+ _onMessage({ data }) {
+ const channelId = data.messageName;
+ if (this._handlers.has(channelId)) {
+ const { resolve, reject } = this._handlers.get(channelId);
+ this._handlers.delete(channelId);
+ if (data.error) {
+ reject(new Error(data.error.message));
+ } else {
+ resolve(data.value);
+ }
+ }
+ }
+
+ _init() {
+ if (this._callback === null) {
+ this._callback = this._onMessage.bind(this);
+ this._messageManager.addMessageListener(
+ "MessageChannel:Response",
+ this._callback
+ );
+ }
+ }
+}
diff --git a/browser/components/onionservices/HttpsEverywhereControl.jsm b/browser/components/onionservices/HttpsEverywhereControl.jsm
new file mode 100644
index 000000000000..60c3b5fca282
--- /dev/null
+++ b/browser/components/onionservices/HttpsEverywhereControl.jsm
@@ -0,0 +1,119 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+const EXPORTED_SYMBOLS = ["HttpsEverywhereControl"];
+
+const { ExtensionMessaging } = ChromeUtils.import(
+ "resource:///modules/ExtensionMessaging.jsm"
+);
+const { setTimeout } = ChromeUtils.import("resource://gre/modules/Timer.jsm");
+
+const EXTENSION_ID = "https-everywhere-eff(a)eff.org";
+const SECUREDROP_TOR_ONION_CHANNEL = {
+ name: "SecureDropTorOnion",
+ jwk: {
+ kty: "RSA",
+ e: "AQAB",
+ n:
+ "p10BbUVc5Xj2S_-MH3bACNBaISo_r9e3PVPyTTjsGsdg2qSXvqUO42fBtpFAy0zUzIGS83v4JjiRdvKJaZTIvbC8AcpymzdsTqujMm8RPTSy3hO_8mXzGa4DEsIB1uNLnUWRBKXvSGCmT9kFyxhTpkYqokNBzafVihTU34tN2Md1xFHnmZGqfYtPtbJLWAa5Z1M11EyR4lIyUxIiPTV9t1XstDbWr3iS83REJrGEFmjG1-BAgx8_lDUTa41799N2yYEhgZud7bL0M3ei8s5OERjiion5uANkUV3-s2QqUZjiVA-XR_HizXjciaUWNd683KqekpNOZ_0STh_UGwpcwU-KwG07QyiCrLrRpz8S_vH8CqGrrcWY3GSzYe9dp34jJdO65oA-G8tK6fMXtvTCFDZI6oNNaXJH71F5J0YbqO2ZqwKYc2WSi0gKVl2wd9roOVjaBmkJqvocntYuNM7t38fDEWHn5KUkmrTbiG68Cy56tDUfpKl3D9Uj4LaMvxJ1tKGvzQ4k_60odT7gIxu6DqYjXUHZpwPsSGBq3njaD7boe4CUXF2K7ViOc87BsKxRNCzDD8OklRjjXzOTOBH3PqFJ93CJ-4ECE5t9STU20aZ8E-2zKB8vjKyCySE4-kcIvBBsnkwVaJTPy9Ft1qYybo-soXEWVEZATANNWklBt8k",
+ },
+ update_path_prefix: "https://securedrop.org/https-everywhere/",
+ scope:
+ "^https?:\\/\\/[a-z0-9-]+(?:\\.[a-z0-9-]+)*\\.securedrop\\.tor\\.onion\\/",
+ replaces_default_rulesets: false,
+};
+
+class HttpsEverywhereControl {
+ constructor() {
+ this._extensionMessaging = null;
+ }
+
+ async _sendMessage(type, object) {
+ return this._extensionMessaging.sendMessage(
+ {
+ type,
+ object,
+ },
+ EXTENSION_ID
+ );
+ }
+
+ static async wait(seconds = 1) {
+ return new Promise(resolve => setTimeout(resolve, seconds * 1000));
+ }
+
+ /**
+ * Installs the .tor.onion update channel in https-everywhere
+ */
+ async installTorOnionUpdateChannel(retries = 5) {
+ this._init();
+
+ // TODO: https-everywhere store is initialized asynchronously, so sending a message
+ // immediately results in a `store.get is undefined` error.
+ // For now, let's wait a bit and retry a few times if there is an error, but perhaps
+ // we could suggest https-everywhere to send a message when that happens and listen
+ // for that here.
+ await HttpsEverywhereControl.wait();
+
+ try {
+ // TODO: we may want a way to "lock" this update channel, so that it cannot be modified
+ // by the user via UI, but I think this is not possible at the time of writing via
+ // the existing messages in https-everywhere.
+ await this._sendMessage(
+ "create_update_channel",
+ SECUREDROP_TOR_ONION_CHANNEL.name
+ );
+ } catch (e) {
+ if (retries <= 0) {
+ throw new Error("Could not install SecureDropTorOnion update channel");
+ }
+ await this.installTorOnionUpdateChannel(retries - 1);
+ return;
+ }
+
+ await this._sendMessage(
+ "update_update_channel",
+ SECUREDROP_TOR_ONION_CHANNEL
+ );
+ }
+
+ /**
+ * Returns the .tor.onion rulesets available in https-everywhere
+ */
+ async getTorOnionRules() {
+ return this._sendMessage("get_simple_rules_ending_with", ".tor.onion");
+ }
+
+ /**
+ * Returns the timestamp of the last .tor.onion update channel update.
+ */
+ async getRulesetTimestamp() {
+ const rulesets = await this._sendMessage("get_ruleset_timestamps");
+ const securedrop =
+ rulesets &&
+ rulesets.find(([{ name }]) => name === SECUREDROP_TOR_ONION_CHANNEL.name);
+ if (securedrop) {
+ const [
+ updateChannel, // This has the same structure as SECUREDROP_TOR_ONION_CHANNEL
+ lastUpdatedTimestamp, // An integer, 0 if the update channel was never updated
+ ] = securedrop;
+ void updateChannel; // Ignore eslint unused warning for ruleset
+ return lastUpdatedTimestamp;
+ }
+ return null;
+ }
+
+ unload() {
+ if (this._extensionMessaging) {
+ this._extensionMessaging.unload();
+ this._extensionMessaging = null;
+ }
+ }
+
+ _init() {
+ if (!this._extensionMessaging) {
+ this._extensionMessaging = new ExtensionMessaging();
+ }
+ }
+}
diff --git a/browser/components/onionservices/OnionAliasStore.jsm b/browser/components/onionservices/OnionAliasStore.jsm
new file mode 100644
index 000000000000..66cf569227bf
--- /dev/null
+++ b/browser/components/onionservices/OnionAliasStore.jsm
@@ -0,0 +1,201 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+const EXPORTED_SYMBOLS = ["OnionAliasStore"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { XPCOMUtils } = ChromeUtils.import(
+ "resource://gre/modules/XPCOMUtils.jsm"
+);
+const { setTimeout, clearTimeout } = ChromeUtils.import(
+ "resource://gre/modules/Timer.jsm"
+);
+const { HttpsEverywhereControl } = ChromeUtils.import(
+ "resource:///modules/HttpsEverywhereControl.jsm"
+);
+
+// Logger adapted from CustomizableUI.jsm
+const kPrefOnionAliasDebug = "browser.onionalias.debug";
+XPCOMUtils.defineLazyPreferenceGetter(
+ this,
+ "gDebuggingEnabled",
+ kPrefOnionAliasDebug,
+ false,
+ (pref, oldVal, newVal) => {
+ if (typeof log != "undefined") {
+ log.maxLogLevel = newVal ? "all" : "log";
+ }
+ }
+);
+XPCOMUtils.defineLazyGetter(this, "log", () => {
+ let scope = {};
+ ChromeUtils.import("resource://gre/modules/Console.jsm", scope);
+ let consoleOptions = {
+ maxLogLevel: gDebuggingEnabled ? "all" : "log",
+ prefix: "OnionAlias",
+ };
+ return new scope.ConsoleAPI(consoleOptions);
+});
+
+function observe(topic, callback) {
+ let observer = {
+ observe(aSubject, aTopic, aData) {
+ if (topic === aTopic) {
+ callback(aSubject, aData);
+ }
+ },
+ };
+ Services.obs.addObserver(observer, topic);
+ return () => Services.obs.removeObserver(observer, topic);
+}
+
+class _OnionAliasStore {
+ static get RULESET_CHECK_INTERVAL() {
+ return 1000 * 60; // 1 minute
+ }
+
+ static get RULESET_CHECK_INTERVAL_FAST() {
+ return 1000 * 5; // 5 seconds
+ }
+
+ constructor() {
+ this._onionMap = new Map();
+ this._rulesetTimeout = null;
+ this._removeObserver = () => {};
+ this._canLoadRules = false;
+ this._rulesetTimestamp = null;
+ this._updateChannelInstalled = false;
+ }
+
+ async _periodicRulesetCheck() {
+ // TODO: it would probably be preferable to listen to some message broadcasted by
+ // the https-everywhere extension when some update channel is updated, instead of
+ // polling every N seconds.
+ log.debug("Checking for new rules");
+ const ts = await this.httpsEverywhereControl.getRulesetTimestamp();
+ log.debug(
+ `Found ruleset timestamp ${ts}, current is ${this._rulesetTimestamp}`
+ );
+ if (ts !== this._rulesetTimestamp) {
+ this._rulesetTimestamp = ts;
+ log.debug("New rules found, updating");
+ // We clear the mappings even if we cannot load the rules from https-everywhere,
+ // since we cannot be sure if the stored mappings are correct anymore.
+ this._clear();
+ if (this._canLoadRules) {
+ await this._loadRules();
+ }
+ }
+ // If the timestamp is 0, that means the update channel was not yet updated, so
+ // we schedule a check soon.
+ this._rulesetTimeout = setTimeout(
+ () => this._periodicRulesetCheck(),
+ ts === 0
+ ? _OnionAliasStore.RULESET_CHECK_INTERVAL_FAST
+ : _OnionAliasStore.RULESET_CHECK_INTERVAL
+ );
+ }
+
+ async init() {
+ this.httpsEverywhereControl = new HttpsEverywhereControl();
+
+ // Setup .tor.onion rule loading.
+ // The http observer is a fallback, and is removed in _loadRules() as soon as we are able
+ // to load some rules from HTTPS Everywhere.
+ this._loadHttpObserver();
+ try {
+ await this.httpsEverywhereControl.installTorOnionUpdateChannel();
+ this._updateChannelInstalled = true;
+ await this.httpsEverywhereControl.getTorOnionRules();
+ this._canLoadRules = true;
+ } catch (e) {
+ // Loading rules did not work, probably because "get_simple_rules_ending_with" is not yet
+ // working in https-everywhere. Use an http observer as a fallback for learning the rules.
+ log.debug(`Could not load rules: ${e.message}`);
+ }
+
+ // Setup checker for https-everywhere ruleset updates
+ if (this._updateChannelInstalled) {
+ this._periodicRulesetCheck();
+ }
+ }
+
+ /**
+ * Loads the .tor.onion mappings from https-everywhere.
+ */
+ async _loadRules() {
+ const rules = await this.httpsEverywhereControl.getTorOnionRules();
+ // Remove http observer if we are able to load some rules directly.
+ if (rules.length) {
+ this._removeObserver();
+ this._removeObserver = () => {};
+ }
+ this._clear();
+ log.debug(`Loading ${rules.length} rules`, rules);
+ for (const rule of rules) {
+ // Here we are trusting that the securedrop ruleset follows some conventions so that we can
+ // assume there is a host mapping from `rule.host` to the hostname of the URL in `rule.to`.
+ try {
+ const url = new URL(rule.to);
+ const shortHost = rule.host;
+ const longHost = url.hostname;
+ this._addMapping(shortHost, longHost);
+ } catch (e) {
+ log.error("Could not process rule:", rule);
+ }
+ }
+ }
+
+ /**
+ * Loads a http observer to listen for local redirects for populating
+ * the .tor.onion -> .onion mappings. Should only be used if we cannot ask https-everywhere
+ * directly for the mappings.
+ */
+ _loadHttpObserver() {
+ this._removeObserver = observe("http-on-before-connect", channel => {
+ if (
+ channel.isMainDocumentChannel &&
+ channel.originalURI.host.endsWith(".tor.onion")
+ ) {
+ this._addMapping(channel.originalURI.host, channel.URI.host);
+ }
+ });
+ }
+
+ uninit() {
+ this._clear();
+ this._removeObserver();
+ this._removeObserver = () => {};
+ if (this.httpsEverywhereControl) {
+ this.httpsEverywhereControl.unload();
+ delete this.httpsEverywhereControl;
+ }
+ clearTimeout(this._rulesetTimeout);
+ this._rulesetTimeout = null;
+ this._rulesetTimestamp = null;
+ }
+
+ _clear() {
+ this._onionMap.clear();
+ }
+
+ _addMapping(shortOnionHost, longOnionHost) {
+ this._onionMap.set(longOnionHost, shortOnionHost);
+ }
+
+ getShortURI(onionURI) {
+ if (
+ (onionURI.schemeIs("http") || onionURI.schemeIs("https")) &&
+ this._onionMap.has(onionURI.host)
+ ) {
+ return onionURI
+ .mutate()
+ .setHost(this._onionMap.get(onionURI.host))
+ .finalize();
+ }
+ return null;
+ }
+}
+
+let OnionAliasStore = new _OnionAliasStore();
diff --git a/browser/components/onionservices/moz.build b/browser/components/onionservices/moz.build
index 7e103239c8d6..e4b6d73f8f40 100644
--- a/browser/components/onionservices/moz.build
+++ b/browser/components/onionservices/moz.build
@@ -1 +1,7 @@
JAR_MANIFESTS += ['jar.mn']
+
+EXTRA_JS_MODULES += [
+ 'ExtensionMessaging.jsm',
+ 'HttpsEverywhereControl.jsm',
+ 'OnionAliasStore.jsm',
+]
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
index db1c497bcace..13b1279105f2 100644
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -277,7 +277,10 @@ class UrlbarInput {
// bar if the user has deleted the URL and we'd just put the same URL
// back. See bug 304198.
if (value === null) {
- uri = uri || this.window.gBrowser.currentURI;
+ uri =
+ uri ||
+ this.window.gBrowser.selectedBrowser.currentOnionAliasURI ||
+ this.window.gBrowser.currentURI;
// Strip off usernames and passwords for the location bar
try {
uri = Services.io.createExposableURI(uri);
@@ -1541,7 +1544,13 @@ class UrlbarInput {
}
let uri;
- if (this.getAttribute("pageproxystate") == "valid") {
+ // When we rewrite .onion to an alias, gBrowser.currentURI will be different than
+ // the URI displayed in the urlbar. We need to use the urlbar value to copy the
+ // alias instead of the actual .onion URI that is loaded.
+ if (
+ this.getAttribute("pageproxystate") == "valid" &&
+ !this.window.gBrowser.selectedBrowser.currentOnionAliasURI
+ ) {
uri = this.window.gBrowser.currentURI;
} else {
// The value could be:
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 8731e44dd4eb..bf9639c82612 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -5657,6 +5657,10 @@ void nsDocShell::OnRedirectStateChange(nsIChannel* aOldChannel,
return;
}
+ if (!mOnionUrlbarRewritesAllowed && IsTorOnionRedirect(oldURI, newURI)) {
+ mOnionUrlbarRewritesAllowed = true;
+ }
+
// DocumentChannel adds redirect chain to global history in the parent
// process. The redirect chain can't be queried from the content process, so
// there's no need to update global history here.
@@ -8693,6 +8697,20 @@ nsresult nsDocShell::HandleSameDocumentNavigation(
return NS_OK;
}
+/* static */
+bool nsDocShell::IsTorOnionRedirect(nsIURI* aOldURI, nsIURI* aNewURI) {
+ nsAutoCString oldHost;
+ nsAutoCString newHost;
+ if (aOldURI && aNewURI && NS_SUCCEEDED(aOldURI->GetHost(oldHost)) &&
+ StringEndsWith(oldHost, NS_LITERAL_CSTRING(".tor.onion")) &&
+ NS_SUCCEEDED(aNewURI->GetHost(newHost)) &&
+ StringEndsWith(newHost, NS_LITERAL_CSTRING(".onion")) &&
+ !StringEndsWith(newHost, NS_LITERAL_CSTRING(".tor.onion"))) {
+ return true;
+ }
+ return false;
+ }
+
nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
nsIDocShell** aDocShell,
nsIRequest** aRequest) {
@@ -8844,6 +8862,30 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState,
mAllowKeywordFixup =
aLoadState->HasLoadFlags(INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP);
+
+ if (mOnionUrlbarRewritesAllowed) {
+ mOnionUrlbarRewritesAllowed = false;
+ nsCOMPtr<nsIURI> referrer;
+ nsIReferrerInfo* referrerInfo = aLoadState->GetReferrerInfo();
+ if (referrerInfo) {
+ referrerInfo->GetOriginalReferrer(getter_AddRefs(referrer));
+ bool isPrivateWin = false;
+ Document* doc = GetDocument();
+ if (doc) {
+ isPrivateWin =
+ doc->NodePrincipal()->OriginAttributesRef().mPrivateBrowsingId > 0;
+ nsCOMPtr<nsIScriptSecurityManager> secMan =
+ do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID);
+ mOnionUrlbarRewritesAllowed =
+ secMan && NS_SUCCEEDED(secMan->CheckSameOriginURI(
+ aLoadState->URI(), referrer, false, isPrivateWin));
+ }
+ }
+ }
+ mOnionUrlbarRewritesAllowed =
+ mOnionUrlbarRewritesAllowed ||
+ aLoadState->HasLoadFlags(INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES);
+
mURIResultedInDocument = false; // reset the clock...
// See if this is actually a load between two history entries for the same
@@ -10996,6 +11038,7 @@ nsresult nsDocShell::AddToSessionHistory(
mDynamicallyCreated, originalURI, resultPrincipalURI,
loadReplace, referrerInfo, srcdoc, srcdocEntry, baseURI,
saveLayoutState, expired);
+ entry->SetOnionUrlbarRewritesAllowed(mOnionUrlbarRewritesAllowed);
if (root == static_cast<nsIDocShellTreeItem*>(this) && GetSessionHistory()) {
bool shouldPersist = ShouldAddToSessionHistory(aURI, aChannel);
@@ -12793,3 +12836,12 @@ bool nsDocShell::GetIsAttemptingToNavigate() {
return false;
}
+
+NS_IMETHODIMP
+nsDocShell::GetOnionUrlbarRewritesAllowed(bool* aOnionUrlbarRewritesAllowed) {
+ NS_ENSURE_ARG(aOnionUrlbarRewritesAllowed);
+ *aOnionUrlbarRewritesAllowed =
+ StaticPrefs::browser_urlbar_onionRewrites_enabled() &&
+ mOnionUrlbarRewritesAllowed;
+ return NS_OK;
+}
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
index dcffed8e5537..d403a06f4c9f 100644
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -152,6 +152,9 @@ class nsDocShell final : public nsDocLoader,
// Whether the load should go through LoadURIDelegate.
INTERNAL_LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE = 0x2000,
+
+ // Whether rewriting the urlbar to a short .onion alias is allowed.
+ INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES = 0x4000,
};
// Event type dispatched by RestorePresentation
@@ -582,6 +585,8 @@ class nsDocShell final : public nsDocLoader,
virtual void DestroyChildren() override;
+ static bool IsTorOnionRedirect(nsIURI* aOldURI, nsIURI* aNewURI);
+
// Overridden from nsDocLoader, this provides more information than the
// normal OnStateChange with flags STATE_REDIRECTING
virtual void OnRedirectStateChange(nsIChannel* aOldChannel,
@@ -1264,6 +1269,7 @@ class nsDocShell final : public nsDocLoader,
bool mCSSErrorReportingEnabled : 1;
bool mAllowAuth : 1;
bool mAllowKeywordFixup : 1;
+ bool mOnionUrlbarRewritesAllowed : 1;
bool mIsOffScreenBrowser : 1;
bool mDisableMetaRefreshWhenInactive : 1;
bool mIsAppTab : 1;
diff --git a/docshell/base/nsDocShellLoadState.cpp b/docshell/base/nsDocShellLoadState.cpp
index d91bb6034f9d..fe1216bd2509 100644
--- a/docshell/base/nsDocShellLoadState.cpp
+++ b/docshell/base/nsDocShellLoadState.cpp
@@ -730,6 +730,10 @@ void nsDocShellLoadState::CalculateLoadURIFlags() {
mLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
}
+ if (oldLoadFlags & nsIWebNavigation::LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES) {
+ mLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
+ }
+
if (oldLoadFlags & nsIWebNavigation::LOAD_FLAGS_FIRST_LOAD) {
mLoadFlags |= nsDocShell::INTERNAL_LOAD_FLAGS_FIRST_LOAD;
}
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
index 01dc4734eb19..305acfd3a98f 100644
--- a/docshell/base/nsIDocShell.idl
+++ b/docshell/base/nsIDocShell.idl
@@ -1019,4 +1019,9 @@ interface nsIDocShell : nsIDocShellTreeItem
* until session history state is moved into the parent process.
*/
void persistLayoutHistoryState();
+
+ /**
+ * Whether rewriting the urlbar to a short .onion alias is allowed.
+ */
+ [infallible] readonly attribute boolean onionUrlbarRewritesAllowed;
};
diff --git a/docshell/base/nsIWebNavigation.idl b/docshell/base/nsIWebNavigation.idl
index bbc3eb7583a2..a4cceb52b2a0 100644
--- a/docshell/base/nsIWebNavigation.idl
+++ b/docshell/base/nsIWebNavigation.idl
@@ -237,6 +237,11 @@ interface nsIWebNavigation : nsISupports
*/
const unsigned long LOAD_FLAGS_BYPASS_LOAD_URI_DELEGATE = 0x4000000;
+ /**
+ * Allow rewriting the urlbar to a short .onion alias.
+ */
+ const unsigned long LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES = 0x8000000;
+
/**
* Loads a given URI. This will give priority to loading the requested URI
* in the object implementing this interface. If it can't be loaded here
diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/SessionHistoryEntry.cpp
index 07a28d1291c9..566b7d68fae5 100644
--- a/docshell/shistory/SessionHistoryEntry.cpp
+++ b/docshell/shistory/SessionHistoryEntry.cpp
@@ -490,6 +490,20 @@ SessionHistoryEntry::SetPersist(bool aPersist) {
return NS_OK;
}
+NS_IMETHODIMP
+SessionHistoryEntry::GetOnionUrlbarRewritesAllowed(
+ bool* aOnionUrlbarRewritesAllowed) {
+ *aOnionUrlbarRewritesAllowed = mInfo->mOnionUrlbarRewritesAllowed;
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+SessionHistoryEntry::SetOnionUrlbarRewritesAllowed(
+ bool aOnionUrlbarRewritesAllowed) {
+ mInfo->mOnionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
+ return NS_OK;
+}
+
NS_IMETHODIMP
SessionHistoryEntry::GetScrollPosition(int32_t* aX, int32_t* aY) {
*aX = mInfo->mScrollPositionX;
diff --git a/docshell/shistory/SessionHistoryEntry.h b/docshell/shistory/SessionHistoryEntry.h
index fa6108952688..c51682a65b0a 100644
--- a/docshell/shistory/SessionHistoryEntry.h
+++ b/docshell/shistory/SessionHistoryEntry.h
@@ -58,6 +58,7 @@ class SessionHistoryInfo {
bool mIsSrcdocEntry = false;
bool mScrollRestorationIsManual = false;
bool mPersist = false;
+ bool mOnionUrlbarRewritesAllowed = false;
};
// XXX Not sure that the id shouldn't just live in SessionHistoryInfo.
diff --git a/docshell/shistory/nsISHEntry.idl b/docshell/shistory/nsISHEntry.idl
index 8bbf2a68687c..bf410bfcc05a 100644
--- a/docshell/shistory/nsISHEntry.idl
+++ b/docshell/shistory/nsISHEntry.idl
@@ -242,6 +242,11 @@ interface nsISHEntry : nsISupports
*/
[infallible] attribute boolean persist;
+ /**
+ * Whether rewriting the urlbar to a short .onion alias is allowed.
+ */
+ [infallible] attribute boolean onionUrlbarRewritesAllowed;
+
/**
* Set/Get the visual viewport scroll position if session history is
* changed through anchor navigation or pushState.
diff --git a/docshell/shistory/nsSHEntry.cpp b/docshell/shistory/nsSHEntry.cpp
index 229b15eff25d..12d38f4c55fe 100644
--- a/docshell/shistory/nsSHEntry.cpp
+++ b/docshell/shistory/nsSHEntry.cpp
@@ -44,7 +44,8 @@ nsSHEntry::nsSHEntry(nsISHistory* aSHistory)
mIsSrcdocEntry(false),
mScrollRestorationIsManual(false),
mLoadedInThisProcess(false),
- mPersist(true) {}
+ mPersist(true),
+ mOnionUrlbarRewritesAllowed(false) {}
nsSHEntry::nsSHEntry(const nsSHEntry& aOther)
: mShared(aOther.mShared),
@@ -70,7 +71,8 @@ nsSHEntry::nsSHEntry(const nsSHEntry& aOther)
mIsSrcdocEntry(aOther.mIsSrcdocEntry),
mScrollRestorationIsManual(false),
mLoadedInThisProcess(aOther.mLoadedInThisProcess),
- mPersist(aOther.mPersist) {}
+ mPersist(aOther.mPersist),
+ mOnionUrlbarRewritesAllowed(aOther.mOnionUrlbarRewritesAllowed) {}
nsSHEntry::~nsSHEntry() {
// Null out the mParent pointers on all our kids.
@@ -824,6 +826,18 @@ nsSHEntry::SetPersist(bool aPersist) {
return NS_OK;
}
+NS_IMETHODIMP
+nsSHEntry::GetOnionUrlbarRewritesAllowed(bool* aOnionUrlbarRewritesAllowed) {
+ *aOnionUrlbarRewritesAllowed = mOnionUrlbarRewritesAllowed;
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+nsSHEntry::SetOnionUrlbarRewritesAllowed(bool aOnionUrlbarRewritesAllowed) {
+ mOnionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
+ return NS_OK;
+}
+
NS_IMETHODIMP
nsSHEntry::CreateLoadInfo(nsDocShellLoadState** aLoadState) {
nsCOMPtr<nsIURI> uri = GetURI();
@@ -873,6 +887,10 @@ nsSHEntry::CreateLoadInfo(nsDocShellLoadState** aLoadState) {
} else {
srcdoc = VoidString();
}
+ if (GetOnionUrlbarRewritesAllowed()) {
+ flags |= nsDocShell::InternalLoad::
+ INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
+ }
loadState->SetSrcdocData(srcdoc);
loadState->SetBaseURI(baseURI);
loadState->SetLoadFlags(flags);
diff --git a/docshell/shistory/nsSHEntry.h b/docshell/shistory/nsSHEntry.h
index 351f6f200a33..6bc9de521437 100644
--- a/docshell/shistory/nsSHEntry.h
+++ b/docshell/shistory/nsSHEntry.h
@@ -63,6 +63,7 @@ class nsSHEntry : public nsISHEntry {
bool mScrollRestorationIsManual;
bool mLoadedInThisProcess;
bool mPersist;
+ bool mOnionUrlbarRewritesAllowed;
};
#endif /* nsSHEntry_h */
diff --git a/dom/interfaces/base/nsIBrowser.idl b/dom/interfaces/base/nsIBrowser.idl
index 300b09e13824..a9ff00e964b7 100644
--- a/dom/interfaces/base/nsIBrowser.idl
+++ b/dom/interfaces/base/nsIBrowser.idl
@@ -158,7 +158,8 @@ interface nsIBrowser : nsISupports
in uint64_t aInnerWindowID,
in boolean aHasRequestContextID,
in uint64_t aRequestContextID,
- in AString aContentType);
+ in AString aContentType,
+ in boolean aOnionUrlbarRewritesAllowed);
/**
* Called by Gecko when it wants to change the process which is currently
diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp
index 2b17323d8a93..f72aa8faa11d 100644
--- a/dom/ipc/BrowserChild.cpp
+++ b/dom/ipc/BrowserChild.cpp
@@ -3645,6 +3645,8 @@ NS_IMETHODIMP BrowserChild::OnLocationChange(nsIWebProgress* aWebProgress,
docShell->GetMayEnableCharacterEncodingMenu();
locationChangeData->charsetAutodetected() =
docShell->GetCharsetAutodetected();
+ locationChangeData->onionUrlbarRewritesAllowed() =
+ docShell->GetOnionUrlbarRewritesAllowed();
locationChangeData->contentPrincipal() = document->NodePrincipal();
locationChangeData->contentStoragePrincipal() =
diff --git a/dom/ipc/BrowserParent.cpp b/dom/ipc/BrowserParent.cpp
index 7749792cafb4..086ecd95e9e7 100644
--- a/dom/ipc/BrowserParent.cpp
+++ b/dom/ipc/BrowserParent.cpp
@@ -2698,7 +2698,8 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnLocationChange(
aWebProgressData->innerDOMWindowID(),
aLocationChangeData->requestContextID().isSome(),
aLocationChangeData->requestContextID().valueOr(0),
- aLocationChangeData->contentType());
+ aLocationChangeData->contentType(),
+ aLocationChangeData->onionUrlbarRewritesAllowed());
}
Unused << managerAsListener->OnLocationChange(webProgress, request, aLocation,
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index f36e2c6db353..15756e7fef4f 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -142,6 +142,7 @@ struct WebProgressLocationChangeData
bool isSyntheticDocument;
bool mayEnableCharacterEncodingMenu;
bool charsetAutodetected;
+ bool onionUrlbarRewritesAllowed;
nsString contentType;
nsString title;
nsString charset;
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
index e506e8257718..f1f2ccdf0cce 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -1077,6 +1077,12 @@
value: true
mirror: always
+ # Whether rewriting the urlbar to a short .onion alias is allowed.
+- name: browser.urlbar.onionRewrites.enabled
+ type: RelaxedAtomicBool
+ value: true
+ mirror: always
+
- name: browser.viewport.desktopWidth
type: RelaxedAtomicInt32
value: 980
diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
index 66db9cf8a8aa..f2502306f7a6 100644
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
@@ -5519,6 +5519,8 @@ pro.om
// onion : https://tools.ietf.org/html/rfc7686
onion
+tor.onion
+securedrop.tor.onion
// org : https://en.wikipedia.org/wiki/.org
org
diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp
index 901ce11b57ca..988ec94a82d4 100644
--- a/netwerk/ipc/DocumentLoadListener.cpp
+++ b/netwerk/ipc/DocumentLoadListener.cpp
@@ -1856,6 +1856,16 @@ DocumentLoadListener::AsyncOnChannelRedirect(
mLoadStateLoadType, nsIWebNavigation::LOAD_FLAGS_ALLOW_MIXED_CONTENT));
}
+ // Like the code above for allowing mixed content, we need to check this here
+ // in case the redirect is not handled in the docshell.
+ nsCOMPtr<nsIURI> oldURI, newURI;
+ aOldChannel->GetURI(getter_AddRefs(oldURI));
+ aNewChannel->GetURI(getter_AddRefs(newURI));
+ if (nsDocShell::IsTorOnionRedirect(oldURI, newURI)) {
+ mLoadStateLoadFlags |=
+ nsDocShell::INTERNAL_LOAD_FLAGS_ALLOW_ONION_URLBAR_REWRITES;
+ }
+
// We need the original URI of the current channel to use to open the real
// channel in the content process. Unfortunately we overwrite the original
// uri of the new channel with the original pre-redirect URI, so grab
diff --git a/toolkit/content/widgets/browser-custom-element.js b/toolkit/content/widgets/browser-custom-element.js
index 62a1ab1d6796..67fa1e5645c0 100644
--- a/toolkit/content/widgets/browser-custom-element.js
+++ b/toolkit/content/widgets/browser-custom-element.js
@@ -261,6 +261,8 @@
this._mayEnableCharacterEncodingMenu = null;
+ this._onionUrlbarRewritesAllowed = false;
+
this._charsetAutodetected = false;
this._contentPrincipal = null;
@@ -686,6 +688,12 @@
}
}
+ get onionUrlbarRewritesAllowed() {
+ return this.isRemoteBrowser
+ ? this._onionUrlbarRewritesAllowed
+ : this.docShell.onionUrlbarRewritesAllowed;
+ }
+
get charsetAutodetected() {
return this.isRemoteBrowser
? this._charsetAutodetected
@@ -1292,7 +1300,8 @@
aInnerWindowID,
aHaveRequestContextID,
aRequestContextID,
- aContentType
+ aContentType,
+ aOnionUrlbarRewritesAllowed
) {
if (this.isRemoteBrowser && this.messageManager) {
if (aCharset != null) {
@@ -1316,6 +1325,7 @@
this._contentRequestContextID = aHaveRequestContextID
? aRequestContextID
: null;
+ this._onionUrlbarRewritesAllowed = aOnionUrlbarRewritesAllowed;
}
}
@@ -1708,6 +1718,7 @@
"_contentStoragePrincipal",
"_isSyntheticDocument",
"_innerWindowID",
+ "_onionUrlbarRewritesAllowed",
]
);
}
diff --git a/toolkit/modules/sessionstore/SessionHistory.jsm b/toolkit/modules/sessionstore/SessionHistory.jsm
index 6c16ac331659..cc47f437824f 100644
--- a/toolkit/modules/sessionstore/SessionHistory.jsm
+++ b/toolkit/modules/sessionstore/SessionHistory.jsm
@@ -318,6 +318,7 @@ var SessionHistoryInternal = {
}
entry.persist = shEntry.persist;
+ entry.onionUrlbarRewritesAllowed = shEntry.onionUrlbarRewritesAllowed;
return entry;
},
@@ -601,6 +602,10 @@ var SessionHistoryInternal = {
}
}
+ if (entry.onionUrlbarRewritesAllowed) {
+ shEntry.onionUrlbarRewritesAllowed = entry.onionUrlbarRewritesAllowed;
+ }
+
return shEntry;
},
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit e1f64e8dca49d724dc5d83e848e71adb6fa60024
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Jul 14 11:15:07 2020 -0400
Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
---
browser/components/aboutlogins/AboutLoginsParent.jsm | 2 ++
browser/components/aboutlogins/content/aboutLogins.css | 8 +++++++-
browser/components/aboutlogins/content/aboutLogins.js | 6 ++++++
.../aboutlogins/content/components/fxaccounts-button.css | 5 +++++
.../components/aboutlogins/content/components/menu-button.css | 10 ++++++++++
5 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/browser/components/aboutlogins/AboutLoginsParent.jsm b/browser/components/aboutlogins/AboutLoginsParent.jsm
index 015ce5f29332..d06d6d0ec6c7 100644
--- a/browser/components/aboutlogins/AboutLoginsParent.jsm
+++ b/browser/components/aboutlogins/AboutLoginsParent.jsm
@@ -62,6 +62,7 @@ const PASSWORD_SYNC_NOTIFICATION_ID = "enable-password-sync";
const HIDE_MOBILE_FOOTER_PREF = "signon.management.page.hideMobileFooter";
const SHOW_PASSWORD_SYNC_NOTIFICATION_PREF =
"signon.management.page.showPasswordSyncNotification";
+const NOCERTDB_PREF = "security.nocertdb";
// about:logins will always use the privileged content process,
// even if it is disabled for other consumers such as about:newtab.
@@ -431,6 +432,7 @@ class AboutLoginsParent extends JSWindowActorParent {
importVisible:
Services.policies.isAllowed("profileImport") &&
AppConstants.platform != "linux",
+ canCreateLogins: !Services.prefs.getBoolPref(NOCERTDB_PREF, false),
});
await AboutLogins._sendAllLoginRelatedObjects(
diff --git a/browser/components/aboutlogins/content/aboutLogins.css b/browser/components/aboutlogins/content/aboutLogins.css
index 7ed29bda8297..dca63da2e649 100644
--- a/browser/components/aboutlogins/content/aboutLogins.css
+++ b/browser/components/aboutlogins/content/aboutLogins.css
@@ -69,6 +69,11 @@ login-item {
grid-area: login;
}
+/* Do not promote Mozilla Sync in Tor Browser. */
+login-intro {
+ display: none !important;
+}
+
#branding-logo {
flex-basis: var(--sidebar-width);
flex-shrink: 0;
@@ -83,7 +88,8 @@ login-item {
}
}
-:root:not(.official-branding) #branding-logo {
+/* Hide "Firefox LockWise" branding in Tor Browser. */
+#branding-logo {
visibility: hidden;
}
diff --git a/browser/components/aboutlogins/content/aboutLogins.js b/browser/components/aboutlogins/content/aboutLogins.js
index da7d9016a2eb..361b2b0d02bf 100644
--- a/browser/components/aboutlogins/content/aboutLogins.js
+++ b/browser/components/aboutlogins/content/aboutLogins.js
@@ -19,6 +19,9 @@ const gElements = {
get loginFooter() {
return this.loginItem.shadowRoot.querySelector("login-footer");
},
+ get createNewLoginButton() {
+ return this.loginList.shadowRoot.querySelector(".create-login-button");
+ },
};
let numberOfLogins = 0;
@@ -100,6 +103,9 @@ window.addEventListener("AboutLoginsChromeToContent", event => {
gElements.loginList.setSortDirection(event.detail.value.selectedSort);
document.documentElement.classList.add("initialized");
gElements.loginList.classList.add("initialized");
+ if (!event.detail.value.canCreateLogins) {
+ gElements.createNewLoginButton.disabled = true;
+ }
break;
}
case "ShowLoginItemError": {
diff --git a/browser/components/aboutlogins/content/components/fxaccounts-button.css b/browser/components/aboutlogins/content/components/fxaccounts-button.css
index aefda548c84d..a02707980158 100644
--- a/browser/components/aboutlogins/content/components/fxaccounts-button.css
+++ b/browser/components/aboutlogins/content/components/fxaccounts-button.css
@@ -8,6 +8,11 @@
align-items: center;
}
+/* Do not promote Mozilla Sync in Tor Browser. */
+.logged-out-view {
+ display: none !important;
+}
+
.fxaccounts-extra-text {
/* Only show at most 3 lines of text to limit the
text from overflowing the header. */
diff --git a/browser/components/aboutlogins/content/components/menu-button.css b/browser/components/aboutlogins/content/components/menu-button.css
index 3c93d409b2c7..2d7380b2ea37 100644
--- a/browser/components/aboutlogins/content/components/menu-button.css
+++ b/browser/components/aboutlogins/content/components/menu-button.css
@@ -85,3 +85,13 @@
.menuitem-mobile-android {
background-image: url("chrome://browser/skin/logo-android.svg");
}
+
+/*
+ * Do not promote LockWise mobile apps in Tor Browser: hide the menu items
+ * and the separator line that precedes them.
+ */
+.menuitem-mobile-android,
+.menuitem-mobile-ios,
+button[data-event-name="AboutLoginsGetHelp"] + hr {
+ display: none !important;
+}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 28125 - Prevent non-Necko network connections
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit fc62aeee845956688fc641ce8ddbe53c6d5acd55
Author: Matthew Finkel <Matthew.Finkel(a)gmail.com>
Date: Thu Oct 25 19:17:09 2018 +0000
Bug 28125 - Prevent non-Necko network connections
---
.../gecko/media/GeckoMediaDrmBridgeV21.java | 49 +---------------------
.../exoplayer2/upstream/DefaultHttpDataSource.java | 47 +--------------------
2 files changed, 3 insertions(+), 93 deletions(-)
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
index 3ba59bfd6776..eb57b1013642 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
@@ -488,54 +488,7 @@ public class GeckoMediaDrmBridgeV21 implements GeckoMediaDrm {
@Override
protected Void doInBackground(final Void... params) {
- HttpURLConnection urlConnection = null;
- BufferedReader in = null;
- try {
- URI finalURI = new URI(mURL + "&signedRequest=" + URLEncoder.encode(new String(mDrmRequest), "UTF-8"));
- urlConnection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(finalURI);
- urlConnection.setRequestMethod("POST");
- if (DEBUG) Log.d(LOGTAG, "Provisioning, posting url =" + finalURI.toString());
-
- // Add data
- urlConnection.setRequestProperty("Accept", "*/*");
- urlConnection.setRequestProperty("User-Agent", getCDMUserAgent());
- urlConnection.setRequestProperty("Content-Type", "application/json");
-
- // Execute HTTP Post Request
- urlConnection.connect();
-
- int responseCode = urlConnection.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), StringUtils.UTF_8));
- String inputLine;
- StringBuffer response = new StringBuffer();
-
- while ((inputLine = in.readLine()) != null) {
- response.append(inputLine);
- }
- in.close();
- mResponseBody = String.valueOf(response).getBytes(StringUtils.UTF_8);
- if (DEBUG) Log.d(LOGTAG, "Provisioning, response received.");
- if (mResponseBody != null) Log.d(LOGTAG, "response length=" + mResponseBody.length);
- } else {
- Log.d(LOGTAG, "Provisioning, server returned HTTP error code :" + responseCode);
- }
- } catch (IOException e) {
- Log.e(LOGTAG, "Got exception during posting provisioning request ...", e);
- } catch (URISyntaxException e) {
- Log.e(LOGTAG, "Got exception during creating uri ...", e);
- } finally {
- if (urlConnection != null) {
- urlConnection.disconnect();
- }
- try {
- if (in != null) {
- in.close();
- }
- } catch (IOException e) {
- Log.e(LOGTAG, "Exception during closing in ...", e);
- }
- }
+ Log.i(LOGTAG, "This is Tor Browser. Skipping.");
return null;
}
diff --git a/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java b/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
index fdb44cc2ea1f..7a2044721d2d 100644
--- a/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
+++ b/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
@@ -395,51 +395,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
*/
private HttpURLConnection makeConnection(URL url, byte[] postBody, long position,
long length, boolean allowGzip, boolean followRedirects) throws IOException, URISyntaxException {
- /**
- * Tor Project modified the way the connection object was created. For the sake of
- * simplicity, instead of duplicating the whole file we changed the connection object
- * to use the ProxySelector.
- */
- HttpURLConnection connection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(url.toURI());
-
- connection.setConnectTimeout(connectTimeoutMillis);
- connection.setReadTimeout(readTimeoutMillis);
- if (defaultRequestProperties != null) {
- for (Map.Entry<String, String> property : defaultRequestProperties.getSnapshot().entrySet()) {
- connection.setRequestProperty(property.getKey(), property.getValue());
- }
- }
- for (Map.Entry<String, String> property : requestProperties.getSnapshot().entrySet()) {
- connection.setRequestProperty(property.getKey(), property.getValue());
- }
- if (!(position == 0 && length == C.LENGTH_UNSET)) {
- String rangeRequest = "bytes=" + position + "-";
- if (length != C.LENGTH_UNSET) {
- rangeRequest += (position + length - 1);
- }
- connection.setRequestProperty("Range", rangeRequest);
- }
- connection.setRequestProperty("User-Agent", userAgent);
- if (!allowGzip) {
- connection.setRequestProperty("Accept-Encoding", "identity");
- }
- connection.setInstanceFollowRedirects(followRedirects);
- connection.setDoOutput(postBody != null);
- if (postBody != null) {
- connection.setRequestMethod("POST");
- if (postBody.length == 0) {
- connection.connect();
- } else {
- connection.setFixedLengthStreamingMode(postBody.length);
- connection.connect();
- OutputStream os = connection.getOutputStream();
- os.write(postBody);
- os.close();
- }
- } else {
- connection.connect();
- }
- return connection;
+ Log.i(TAG, "This is Tor Browser. Skipping.");
+ throw new IOException();
}
/**
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 24796 - Comment out excess permissions from GeckoView
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 32fbd30b7034b7cda9320dc4bce264c7290806b9
Author: Matthew Finkel <Matthew.Finkel(a)gmail.com>
Date: Wed Apr 11 17:52:59 2018 +0000
Bug 24796 - Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
---
.../android/geckoview/src/main/AndroidManifest.xml | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/mobile/android/geckoview/src/main/AndroidManifest.xml b/mobile/android/geckoview/src/main/AndroidManifest.xml
index 87ad6dc28047..4c8ab2a9d996 100644
--- a/mobile/android/geckoview/src/main/AndroidManifest.xml
+++ b/mobile/android/geckoview/src/main/AndroidManifest.xml
@@ -6,20 +6,32 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.mozilla.geckoview">
+<!--#ifdef MOZ_ANDROID_NETWORK_STATE-->
+ <!--
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ -->
+<!--#endif-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+<!--#ifdef MOZ_ANDROID_LOCATION-->
+ <!--
<uses-feature
android:name="android.hardware.location"
android:required="false"/>
<uses-feature
android:name="android.hardware.location.gps"
android:required="false"/>
+ -->
+<!--#endif-->
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false"/>
+<!--#ifdef MOZ_WEBRTC-->
+ <!-- TODO preprocess AndroidManifest.xml so that we can
+ conditionally include WebRTC permissions based on MOZ_WEBRTC. -->
+ <!--
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
@@ -28,14 +40,16 @@
android:required="false"/>
<uses-feature
- android:name="android.hardware.audio.low_latency"
+ android:name="android.hardware.camera.any"
android:required="false"/>
<uses-feature
- android:name="android.hardware.microphone"
+ android:name="android.hardware.audio.low_latency"
android:required="false"/>
<uses-feature
- android:name="android.hardware.camera.any"
+ android:name="android.hardware.microphone"
android:required="false"/>
+ -->
+<!--#endif-->
<!-- GeckoView requires OpenGL ES 2.0 -->
<uses-feature
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1658881 - When failing to create a channel and an image request, make sure to set the image blocking status appropriately. r=tnikkel
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit e138079e68e44c5c9b8b7e6a43e8a6eaafc3ae64
Author: Emilio Cobos Álvarez <emilio(a)crisal.io>
Date: Wed Sep 9 22:58:29 2020 +0000
Bug 1658881 - When failing to create a channel and an image request, make sure to set the image blocking status appropriately. r=tnikkel
This is the same status as we do for known no-data protocols here:
https://searchfox.org/mozilla-central/rev/ac142717cc067d875e83e4b1316f004f6…
This ensures we treat these two cases the same.
Differential Revision: https://phabricator.services.mozilla.com/D89382
---
dom/base/nsImageLoadingContent.cpp | 7 ++++++-
layout/reftests/image/reftest.list | 1 +
layout/reftests/image/unknown-protocol-ref.html | 1 +
layout/reftests/image/unknown-protocol.html | 1 +
4 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/dom/base/nsImageLoadingContent.cpp b/dom/base/nsImageLoadingContent.cpp
index 23b1fd791c1f..85de63bef02d 100644
--- a/dom/base/nsImageLoadingContent.cpp
+++ b/dom/base/nsImageLoadingContent.cpp
@@ -1207,7 +1207,12 @@ nsresult nsImageLoadingContent::LoadImage(nsIURI* aNewURI, bool aForce,
MOZ_ASSERT(!req, "Shouldn't have non-null request here");
// If we don't have a current URI, we might as well store this URI so people
// know what we tried (and failed) to load.
- if (!mCurrentRequest) mCurrentURI = aNewURI;
+ if (!mCurrentRequest) {
+ mCurrentURI = aNewURI;
+ if (mImageBlockingStatus == nsIContentPolicy::ACCEPT) {
+ mImageBlockingStatus = nsIContentPolicy::REJECT_REQUEST;
+ }
+ }
FireEvent(NS_LITERAL_STRING("error"));
FireEvent(NS_LITERAL_STRING("loadend"));
diff --git a/layout/reftests/image/reftest.list b/layout/reftests/image/reftest.list
index a8a91c13ed3a..3c561fe3a7c8 100644
--- a/layout/reftests/image/reftest.list
+++ b/layout/reftests/image/reftest.list
@@ -69,3 +69,4 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == image-srcset-basic-selec
pref(dom.image-lazy-loading.enabled,true) == moz-broken-matching-lazy-load.html moz-broken-matching-1-ref.html
== img-invalidation-local-transform-1.html img-invalidation-local-transform-1-ref.html
+== unknown-protocol.html unknown-protocol-ref.html
diff --git a/layout/reftests/image/unknown-protocol-ref.html b/layout/reftests/image/unknown-protocol-ref.html
new file mode 100644
index 000000000000..b5bb326eef57
--- /dev/null
+++ b/layout/reftests/image/unknown-protocol-ref.html
@@ -0,0 +1 @@
+<img src="mailto://foo">
diff --git a/layout/reftests/image/unknown-protocol.html b/layout/reftests/image/unknown-protocol.html
new file mode 100644
index 000000000000..ef06881b7bcb
--- /dev/null
+++ b/layout/reftests/image/unknown-protocol.html
@@ -0,0 +1 @@
+<img src="foobar://baz">
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 25741 - TBA: Disable GeckoNetworkManager
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit ed6dfda513ea1ac981b6f014367f7d118997233c
Author: Matthew Finkel <Matthew.Finkel(a)gmail.com>
Date: Thu Apr 26 22:22:51 2018 +0000
Bug 25741 - TBA: Disable GeckoNetworkManager
The browser should not need information related to the network
interface or network state, tor should take care of that.
---
.../src/main/java/org/mozilla/geckoview/GeckoRuntime.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java
index ed86dcc5c299..f5587dd7e59c 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java
@@ -121,7 +121,9 @@ public final class GeckoRuntime implements Parcelable {
mPaused = false;
// Monitor network status and send change notifications to Gecko
// while active.
- GeckoNetworkManager.getInstance().start(GeckoAppShell.getApplicationContext());
+ if (BuildConfig.TOR_BROWSER_VERSION == "") {
+ GeckoNetworkManager.getInstance().start(GeckoAppShell.getApplicationContext());
+ }
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
@@ -129,7 +131,9 @@ public final class GeckoRuntime implements Parcelable {
Log.d(LOGTAG, "Lifecycle: onPause");
mPaused = true;
// Stop monitoring network status while inactive.
- GeckoNetworkManager.getInstance().stop();
+ if (BuildConfig.TOR_BROWSER_VERSION == "") {
+ GeckoNetworkManager.getInstance().stop();
+ }
GeckoThread.onPause();
}
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 33342: Avoid disconnect search addon error after removal.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 938e915419f273d4a85942f205648f42901ced19
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Mar 13 18:19:30 2020 +0100
Bug 33342: Avoid disconnect search addon error after removal.
We removed the addon in #32767, but it was still being loaded
from addonStartup.json.lz4 and throwing an error on startup
because its resource: location is not available anymore.
---
toolkit/mozapps/extensions/internal/XPIProvider.jsm | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
index 5e467fb4f14c..794c206fb453 100644
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -970,6 +970,12 @@ var BuiltInLocation = new (class _BuiltInLocation extends XPIStateLocation {
get enumerable() {
return false;
}
+
+ restore(saved) {
+ super.restore(saved);
+ // Bug 33342: avoid restoring disconnect addon from addonStartup.json.lz4.
+ this.removeAddon("disconnect(a)search.mozilla.org");
+ }
})();
/**
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 022f6e13ff07de600dde505ce83d4d698f5e43f4
Author: Amogh Pradeep <amoghbl1(a)gmail.com>
Date: Fri Jun 12 02:07:45 2015 -0400
Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
See Bug 1357997 for partial uplift.
Also:
Bug 28051 - Use our Orbot for proxying our connections
Bug 31144 - ESR68 Network Code Review
---
.../main/java/org/mozilla/gecko/GeckoAppShell.java | 68 +++++++++++-----------
.../java/org/mozilla/gecko/util/BitmapUtils.java | 7 ---
.../java/org/mozilla/gecko/util/ProxySelector.java | 25 +++++++-
3 files changed, 59 insertions(+), 41 deletions(-)
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
index 995b23316c32..b9ca73bee2eb 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
@@ -1764,39 +1764,41 @@ public class GeckoAppShell {
@WrapForJNI
private static URLConnection getConnection(final String url) {
- try {
- String spec;
- if (url.startsWith("android://")) {
- spec = url.substring(10);
- } else {
- spec = url.substring(8);
- }
-
- // Check if we are loading a package icon.
- try {
- if (spec.startsWith("icon/")) {
- String[] splits = spec.split("/");
- if (splits.length != 2) {
- return null;
- }
- final String pkg = splits[1];
- final PackageManager pm = getApplicationContext().getPackageManager();
- final Drawable d = pm.getApplicationIcon(pkg);
- final Bitmap bitmap = BitmapUtils.getBitmapFromDrawable(d);
- return new BitmapConnection(bitmap);
- }
- } catch (Exception ex) {
- Log.e(LOGTAG, "error", ex);
- }
-
- // if the colon got stripped, put it back
- int colon = spec.indexOf(':');
- if (colon == -1 || colon > spec.indexOf('/')) {
- spec = spec.replaceFirst("/", ":/");
- }
- } catch (Exception ex) {
- return null;
- }
+ // Bug 31144 - Prevent potential proxy-bypass
+
+ //try {
+ // String spec;
+ // if (url.startsWith("android://")) {
+ // spec = url.substring(10);
+ // } else {
+ // spec = url.substring(8);
+ // }
+
+ // // Check if we are loading a package icon.
+ // try {
+ // if (spec.startsWith("icon/")) {
+ // String[] splits = spec.split("/");
+ // if (splits.length != 2) {
+ // return null;
+ // }
+ // final String pkg = splits[1];
+ // final PackageManager pm = getApplicationContext().getPackageManager();
+ // final Drawable d = pm.getApplicationIcon(pkg);
+ // final Bitmap bitmap = BitmapUtils.getBitmapFromDrawable(d);
+ // return new BitmapConnection(bitmap);
+ // }
+ // } catch (Exception ex) {
+ // Log.e(LOGTAG, "error", ex);
+ // }
+
+ // // if the colon got stripped, put it back
+ // int colon = spec.indexOf(':');
+ // if (colon == -1 || colon > spec.indexOf('/')) {
+ // spec = spec.replaceFirst("/", ":/");
+ // }
+ //} catch (Exception ex) {
+ // return null;
+ //}
return null;
}
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/BitmapUtils.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/BitmapUtils.java
index 73a69a3abd66..f795dacffb47 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/BitmapUtils.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/BitmapUtils.java
@@ -101,13 +101,6 @@ public final class BitmapUtils {
public static Bitmap decodeUrl(final URL url) {
InputStream stream = null;
- try {
- stream = url.openStream();
- } catch (IOException e) {
- Log.w(LOGTAG, "decodeUrl: IOException downloading " + url);
- return null;
- }
-
if (stream == null) {
Log.w(LOGTAG, "decodeUrl: stream not found downloading " + url);
return null;
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
index 3940d3c84249..9515975f680a 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
@@ -29,6 +29,10 @@ import java.net.URLConnection;
import java.util.List;
public class ProxySelector {
+ private static final String TOR_PROXY_ADDRESS = "127.0.0.1";
+ private static final int TOR_SOCKS_PROXY_PORT = 9150;
+ private static final int TOR_HTTP_PROXY_PORT = 8218;
+
public static URLConnection openConnectionWithProxy(final URI uri) throws IOException {
java.net.ProxySelector ps = java.net.ProxySelector.getDefault();
Proxy proxy = Proxy.NO_PROXY;
@@ -39,7 +43,26 @@ public class ProxySelector {
}
}
- return uri.toURL().openConnection(proxy);
+ /* Ignore the proxy we found from the VM, only use Tor. We can probably
+ * safely use the logic in this class in the future. */
+ return uri.toURL().openConnection(getProxy());
+ }
+
+ public static Proxy getProxy() {
+ // TODO make configurable
+ return new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(TOR_PROXY_ADDRESS, TOR_SOCKS_PROXY_PORT));
+ }
+
+ public static String getProxyHostAddress() {
+ return TOR_PROXY_ADDRESS;
+ }
+
+ public static int getSocksProxyPort() {
+ return TOR_SOCKS_PROXY_PORT;
+ }
+
+ public static int getHttpProxyPort() {
+ return TOR_HTTP_PROXY_PORT;
}
public ProxySelector() {
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 40002: Remove about:pioneer
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit cf8f3b2e7708aacc35b665469f229fe3442232f9
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Aug 14 09:06:33 2020 -0400
Bug 40002: Remove about:pioneer
Firefox Pioneer is an opt-in program in which people volunteer to
participate in studies that collect detailed, sensitive data about
how they use their browser.
---
browser/components/about/AboutRedirector.cpp | 2 --
browser/components/about/components.conf | 1 -
2 files changed, 3 deletions(-)
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
index 544e21782729..e7c377d655e7 100644
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -114,8 +114,6 @@ static const RedirEntry kRedirMap[] = {
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
- {"pioneer", "chrome://browser/content/pioneer.html",
- nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
#ifdef TOR_BROWSER_UPDATE
{"tbupdate", "chrome://browser/content/abouttbupdate/aboutTBUpdate.xhtml",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
diff --git a/browser/components/about/components.conf b/browser/components/about/components.conf
index d78de142e2e4..8e04467c05da 100644
--- a/browser/components/about/components.conf
+++ b/browser/components/about/components.conf
@@ -14,7 +14,6 @@ pages = [
'logins',
'newinstall',
'newtab',
- 'pioneer',
'pocket-saved',
'pocket-signup',
'policies',
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 893f7eaf708ac8757b29f8bc959bb9b6ca419e32
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Oct 9 12:55:35 2020 +0200
Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
---
browser/app/profile/000-tor-browser.js | 3 +++
browser/components/BrowserGlue.jsm | 14 ++++++++++++++
2 files changed, 17 insertions(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 6d251b73370e..3961eca0868a 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -322,6 +322,9 @@ pref("security.enterprise_roots.enabled", false);
// Don't ping Mozilla for MitM detection, see bug 32321
pref("security.certerrors.mitm.priming.enabled", false);
+// Don't automatically enable enterprise roots, see bug 40166
+pref("security.certerrors.mitm.auto_enable_enterprise_roots", false);
+
// Disable the language pack signing check for now on macOS, see #31942
#ifdef XP_MACOSX
pref("extensions.langpacks.signatures.required", false);
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 057a2121533c..3750230a250b 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -1319,6 +1319,20 @@ BrowserGlue.prototype = {
// handle any UI migration
this._migrateUI();
+ // Clear possibly auto enabled enterprise_roots prefs (see bug 40166)
+ if (
+ !Services.prefs.getBoolPref(
+ "security.certerrors.mitm.auto_enable_enterprise_roots"
+ ) &&
+ Services.prefs.getBoolPref(
+ "security.enterprise_roots.auto-enabled",
+ false
+ )
+ ) {
+ Services.prefs.clearUserPref("security.enterprise_roots.enabled");
+ Services.prefs.clearUserPref("security.enterprise_roots.auto-enabled");
+ }
+
if (!Services.prefs.prefHasUserValue(PREF_PDFJS_ISDEFAULT_CACHE_STATE)) {
PdfJs.checkIsDefault(this._isNewProfile);
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 21952: Implement Onion-Location
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 5062e15a17024cb1a529c821fc813f3ab11f5916
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu Mar 5 22:16:39 2020 +0100
Bug 21952: Implement Onion-Location
Whenever a valid Onion-Location HTTP header (or corresponding HTML
<meta> http-equiv attribute) is found in a document load, we either
redirect to it (if the user opted-in via preference) or notify the
presence of an onionsite alternative with a badge in the urlbar.
---
browser/base/content/browser.js | 12 ++
browser/base/content/browser.xhtml | 3 +
browser/components/BrowserGlue.jsm | 9 ++
.../onionservices/OnionLocationChild.jsm | 43 ++++++
.../onionservices/OnionLocationParent.jsm | 161 +++++++++++++++++++++
.../content/onionlocation-notification-icons.css | 5 +
.../onionservices/content/onionlocation-urlbar.css | 27 ++++
.../content/onionlocation-urlbar.inc.xhtml | 10 ++
.../onionservices/content/onionlocation.svg | 3 +
.../content/onionlocationPreferences.inc.xhtml | 11 ++
.../content/onionlocationPreferences.js | 31 ++++
browser/components/onionservices/jar.mn | 2 +
browser/components/onionservices/moz.build | 2 +
browser/components/preferences/privacy.inc.xhtml | 2 +
browser/components/preferences/privacy.js | 17 +++
browser/themes/shared/notification-icons.inc.css | 2 +
browser/themes/shared/urlbar-searchbar.inc.css | 2 +
dom/base/Document.cpp | 34 ++++-
dom/base/Document.h | 2 +
dom/webidl/Document.webidl | 9 ++
modules/libpref/init/StaticPrefList.yaml | 5 +
xpcom/ds/StaticAtoms.py | 1 +
22 files changed, 392 insertions(+), 1 deletion(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index bd5f10cb6f64..04f8752b93f4 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -44,6 +44,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
NetUtil: "resource://gre/modules/NetUtil.jsm",
NewTabUtils: "resource://gre/modules/NewTabUtils.jsm",
OpenInTabsUtils: "resource:///modules/OpenInTabsUtils.jsm",
+ OnionLocationParent: "resource:///modules/OnionLocationParent.jsm",
PageActions: "resource:///modules/PageActions.jsm",
PageThumbs: "resource://gre/modules/PageThumbs.jsm",
PanelMultiView: "resource:///modules/PanelMultiView.jsm",
@@ -5422,6 +5423,7 @@ var XULBrowserWindow = {
Services.obs.notifyObservers(null, "touchbar-location-change", location);
UpdateBackForwardCommands(gBrowser.webNavigation);
ReaderParent.updateReaderButton(gBrowser.selectedBrowser);
+ OnionLocationParent.updateOnionLocationBadge(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
// Bug 1108553 - Cannot rotate images with e10s
@@ -5964,6 +5966,16 @@ const AccessibilityRefreshBlocker = {
var TabsProgressListener = {
onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
+ // Clear OnionLocation UI
+ if (
+ aStateFlags & Ci.nsIWebProgressListener.STATE_START &&
+ aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
+ aRequest &&
+ aWebProgress.isTopLevel
+ ) {
+ OnionLocationParent.onStateChange(aBrowser);
+ }
+
// Collect telemetry data about tab load times.
if (
aWebProgress.isTopLevel &&
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 4cab5fad6475..c2caecc1a416 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -1077,6 +1077,9 @@
onclick="FullZoom.reset();"
tooltip="dynamic-shortcut-tooltip"
hidden="true"/>
+
+#include ../../components/onionservices/content/onionlocation-urlbar.inc.xhtml
+
<box id="pageActionSeparator" class="urlbar-page-action"/>
<image id="pageActionButton"
class="urlbar-icon urlbar-page-action"
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index d30abff54562..e08e461a27ff 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -539,6 +539,13 @@ let LEGACY_ACTORS = {
observers: ["keyword-uri-fixup"],
},
},
+ OnionLocation: {
+ child: {
+ module: "resource:///modules/OnionLocationChild.jsm",
+ events: { pageshow: {} },
+ messages: ["OnionLocation:Refresh"],
+ },
+ },
};
if (AppConstants.TOR_BROWSER_UPDATE) {
@@ -713,6 +720,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
XPCOMUtils.defineLazyModuleGetters(this, {
AboutLoginsParent: "resource:///modules/AboutLoginsParent.jsm",
AsyncPrefs: "resource://gre/modules/AsyncPrefs.jsm",
+ OnionLocationParent: "resource:///modules/OnionLocationParent.jsm",
PluginManager: "resource:///actors/PluginParent.jsm",
ReaderParent: "resource:///modules/ReaderParent.jsm",
});
@@ -816,6 +824,7 @@ const listeners = {
"AboutLogins:VulnerableLogins": ["AboutLoginsParent"],
"Reader:FaviconRequest": ["ReaderParent"],
"Reader:UpdateReaderButton": ["ReaderParent"],
+ "OnionLocation:Set": ["OnionLocationParent"],
},
observe(subject, topic, data) {
diff --git a/browser/components/onionservices/OnionLocationChild.jsm b/browser/components/onionservices/OnionLocationChild.jsm
new file mode 100644
index 000000000000..1059eb7d5925
--- /dev/null
+++ b/browser/components/onionservices/OnionLocationChild.jsm
@@ -0,0 +1,43 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+var EXPORTED_SYMBOLS = ["OnionLocationChild"];
+
+const { ActorChild } = ChromeUtils.import(
+ "resource://gre/modules/ActorChild.jsm"
+);
+
+class OnionLocationChild extends ActorChild {
+ handleEvent(event) {
+ this.onPageShow(event);
+ }
+
+ onPageShow(event) {
+ if (event.target != this.content.document) {
+ return;
+ }
+ const onionLocationURI = this.content.document.onionLocationURI;
+ if (onionLocationURI) {
+ this.mm.sendAsyncMessage("OnionLocation:Set");
+ }
+ }
+
+ receiveMessage(aMessage) {
+ if (aMessage.name == "OnionLocation:Refresh") {
+ const doc = this.content.document;
+ const docShell = this.mm.docShell;
+ const onionLocationURI = doc.onionLocationURI;
+ const refreshURI = docShell.QueryInterface(Ci.nsIRefreshURI);
+ if (onionLocationURI && refreshURI) {
+ refreshURI.refreshURI(
+ onionLocationURI,
+ doc.nodePrincipal,
+ 0,
+ false,
+ true
+ );
+ }
+ }
+ }
+}
diff --git a/browser/components/onionservices/OnionLocationParent.jsm b/browser/components/onionservices/OnionLocationParent.jsm
new file mode 100644
index 000000000000..1c79fc07d215
--- /dev/null
+++ b/browser/components/onionservices/OnionLocationParent.jsm
@@ -0,0 +1,161 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+var EXPORTED_SYMBOLS = ["OnionLocationParent"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+// Prefs
+const NOTIFICATION_PREF = "privacy.prioritizeonions.showNotification";
+const PRIORITIZE_ONIONS_PREF = "privacy.prioritizeonions.enabled";
+
+// Element IDs
+const ONIONLOCATION_BOX_ID = "onion-location-box";
+const ONIONLOCATION_BUTTON_ID = "onion-location-button";
+const ONIONLOCATION_LABEL_ID = "onion-label";
+
+// Notification IDs
+const NOTIFICATION_ID = "onion-location";
+const NOTIFICATION_ANCHOR_ID = "onionlocation";
+
+// Strings
+const STRING_ONION_AVAILABLE = TorStrings.onionLocation.onionAvailable;
+const NOTIFICATION_CANCEL_LABEL = TorStrings.onionLocation.notNow;
+const NOTIFICATION_CANCEL_ACCESSKEY = TorStrings.onionLocation.notNowAccessKey;
+const NOTIFICATION_OK_LABEL = TorStrings.onionLocation.alwaysPrioritize;
+const NOTIFICATION_OK_ACCESSKEY =
+ TorStrings.onionLocation.alwaysPrioritizeAccessKey;
+const NOTIFICATION_TITLE = TorStrings.onionLocation.tryThis;
+const NOTIFICATION_DESCRIPTION = TorStrings.onionLocation.description;
+const NOTIFICATION_LEARN_MORE_URL = TorStrings.onionLocation.learnMoreURL;
+
+var OnionLocationParent = {
+ // Listeners are added in BrowserGlue.jsm
+ receiveMessage(aMsg) {
+ switch (aMsg.name) {
+ case "OnionLocation:Set":
+ this.setOnionLocation(aMsg.target);
+ break;
+ }
+ },
+
+ buttonClick(event) {
+ if (event.button != 0) {
+ return;
+ }
+ const win = event.target.ownerGlobal;
+ const browser = win.gBrowser.selectedBrowser;
+ this.redirect(browser);
+ },
+
+ redirect(browser) {
+ browser.messageManager.sendAsyncMessage("OnionLocation:Refresh");
+ this.setDisabled(browser);
+ },
+
+ onStateChange(browser) {
+ delete browser._onionLocation;
+ this.hideNotification(browser);
+ },
+
+ setOnionLocation(browser) {
+ const win = browser.ownerGlobal;
+ browser._onionLocation = true;
+ if (browser === win.gBrowser.selectedBrowser) {
+ this.updateOnionLocationBadge(browser);
+ }
+ },
+
+ hideNotification(browser) {
+ const win = browser.ownerGlobal;
+ if (browser._onionLocationPrompt) {
+ win.PopupNotifications.remove(browser._onionLocationPrompt);
+ }
+ },
+
+ showNotification(browser) {
+ const mustShow = Services.prefs.getBoolPref(NOTIFICATION_PREF, true);
+ if (!mustShow) {
+ return;
+ }
+
+ const win = browser.ownerGlobal;
+ Services.prefs.setBoolPref(NOTIFICATION_PREF, false);
+
+ const mainAction = {
+ label: NOTIFICATION_OK_LABEL,
+ accessKey: NOTIFICATION_OK_ACCESSKEY,
+ callback() {
+ Services.prefs.setBoolPref(PRIORITIZE_ONIONS_PREF, true);
+ OnionLocationParent.redirect(browser);
+ win.openPreferences("privacy-onionservices");
+ },
+ };
+
+ const cancelAction = {
+ label: NOTIFICATION_CANCEL_LABEL,
+ accessKey: NOTIFICATION_CANCEL_ACCESSKEY,
+ callback: () => {},
+ };
+
+ const options = {
+ autofocus: true,
+ persistent: true,
+ removeOnDismissal: false,
+ eventCallback(aTopic) {
+ if (aTopic === "removed") {
+ delete browser._onionLocationPrompt;
+ delete browser.onionpopupnotificationanchor;
+ }
+ },
+ learnMoreURL: NOTIFICATION_LEARN_MORE_URL,
+ displayURI: {
+ hostPort: NOTIFICATION_TITLE, // This is hacky, but allows us to have a title without extra markup/css.
+ },
+ hideClose: true,
+ popupIconClass: "onionlocation-notification-icon",
+ };
+
+ // A hacky way of setting the popup anchor outside the usual url bar icon box
+ // onionlocationpopupnotificationanchor comes from `${ANCHOR_ID}popupnotificationanchor`
+ // From https://searchfox.org/mozilla-esr68/rev/080f9ed47742644d2ff84f7aa0b10aea5c4…
+ browser.onionlocationpopupnotificationanchor = win.document.getElementById(
+ ONIONLOCATION_BUTTON_ID
+ );
+
+ browser._onionLocationPrompt = win.PopupNotifications.show(
+ browser,
+ NOTIFICATION_ID,
+ NOTIFICATION_DESCRIPTION,
+ NOTIFICATION_ANCHOR_ID,
+ mainAction,
+ [cancelAction],
+ options
+ );
+ },
+
+ setEnabled(browser) {
+ const win = browser.ownerGlobal;
+ const label = win.document.getElementById(ONIONLOCATION_LABEL_ID);
+ label.textContent = STRING_ONION_AVAILABLE;
+ const elem = win.document.getElementById(ONIONLOCATION_BOX_ID);
+ elem.removeAttribute("hidden");
+ },
+
+ setDisabled(browser) {
+ const win = browser.ownerGlobal;
+ const elem = win.document.getElementById(ONIONLOCATION_BOX_ID);
+ elem.setAttribute("hidden", true);
+ },
+
+ updateOnionLocationBadge(browser) {
+ if (browser._onionLocation) {
+ this.setEnabled(browser);
+ this.showNotification(browser);
+ } else {
+ this.setDisabled(browser);
+ }
+ },
+};
diff --git a/browser/components/onionservices/content/onionlocation-notification-icons.css b/browser/components/onionservices/content/onionlocation-notification-icons.css
new file mode 100644
index 000000000000..7c8a6d892c6f
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocation-notification-icons.css
@@ -0,0 +1,5 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+.onionlocation-notification-icon {
+ display: none;
+}
\ No newline at end of file
diff --git a/browser/components/onionservices/content/onionlocation-urlbar.css b/browser/components/onionservices/content/onionlocation-urlbar.css
new file mode 100644
index 000000000000..91cad5f178d1
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocation-urlbar.css
@@ -0,0 +1,27 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+#onion-location-button {
+ list-style-image: url(chrome://browser/content/onionservices/onionlocation.svg);
+}
+
+#onion-location-box {
+ border-radius: 3px;
+ background-color: #6200A4;
+ padding-left: 5px;
+ padding-right: 5px;
+ color: white;
+ -moz-context-properties: fill;
+ fill: white;
+}
+
+#onion-location-box:hover {
+ background-color: #0060DF !important;
+}
+
+toolbar[brighttext] #onion-location-box {
+ background-color: #9400ff;
+}
+
+toolbar[brighttext] #onion-location-box:hover {
+ background-color: #0060DF !important;
+}
diff --git a/browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml b/browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
new file mode 100644
index 000000000000..b612a4236f3c
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
@@ -0,0 +1,10 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<hbox id="onion-location-box"
+ class="urlbar-icon-wrapper urlbar-page-action"
+ role="button"
+ hidden="true"
+ onclick="OnionLocationParent.buttonClick(event);">
+ <image id="onion-location-button" role="presentation"/>
+ <hbox id="onion-label-container"><label id="onion-label"/></hbox>
+</hbox>
diff --git a/browser/components/onionservices/content/onionlocation.svg b/browser/components/onionservices/content/onionlocation.svg
new file mode 100644
index 000000000000..37f40ac1812f
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocation.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <path fill="context-fill" fill-opacity="context-fill-opacity" d="m8.016411 14.54499v-0.969784c3.071908-0.0089 5.559239-2.501304 5.559239-5.575429 0-3.073903-2.487331-5.566336-5.559239-5.575206v-0.9697843c3.607473 0.00909 6.528802 2.935521 6.528802 6.544991 0 3.609691-2.921329 6.536342-6.528802 6.545213zm0-3.394356c1.732661-0.0091 3.135111-1.415756 3.135111-3.150857 0-1.734878-1.402451-3.141542-3.135111-3.150634v-0.9695626c2.268448 0.00887 4.104895 1.849753 4.104895 4.120197 0 2.270666-1.836447 4.111549-4.104895 4.120419zm0-4.846926c0.9294227 0.00887 1.680545 0.7644289 1.680545 1.696069 0 0.9318627-0.7511226 1.687421-1.680545 1.696291zm-8.016411 1.696069c0 4.418473 3.581527 8.000222 8 8.000222 4.418251 0 8-3.581749 8-8.000222 0-4.418251-3.581749-7.999778-8-7.999778-4.418473 0-8 3.581527-8 7.999778z" />
+</svg>
\ No newline at end of file
diff --git a/browser/components/onionservices/content/onionlocationPreferences.inc.xhtml b/browser/components/onionservices/content/onionlocationPreferences.inc.xhtml
new file mode 100644
index 000000000000..c285f403f99b
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocationPreferences.inc.xhtml
@@ -0,0 +1,11 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<groupbox id="onionServicesGroup" data-category="panePrivacy" data-subcategory="onionservices" hidden="true">
+ <label><html:h2 id="onionServicesTitle"></html:h2></label>
+ <label><label class="tail-with-learn-more" id="prioritizeOnionsDesc"></label><label
+ class="learnMore" is="text-link" id="onionServicesLearnMore"></label></label>
+ <radiogroup id="prioritizeOnionsRadioGroup" aria-labelledby="prioritizeOnionsDesc" preference="privacy.prioritizeonions.enabled">
+ <radio id="onionServicesRadioAlways" value="true"/>
+ <radio id="onionServicesRadioAsk" value="false"/>
+ </radiogroup>
+</groupbox>
diff --git a/browser/components/onionservices/content/onionlocationPreferences.js b/browser/components/onionservices/content/onionlocationPreferences.js
new file mode 100644
index 000000000000..aa569b54721c
--- /dev/null
+++ b/browser/components/onionservices/content/onionlocationPreferences.js
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+const OnionLocationPreferences = {
+ init() {
+ document.getElementById("onionServicesTitle").textContent =
+ TorStrings.onionLocation.onionServicesTitle;
+ document.getElementById("prioritizeOnionsDesc").textContent =
+ TorStrings.onionLocation.prioritizeOnionsDescription;
+ const learnMore = document.getElementById("onionServicesLearnMore");
+ learnMore.textContent = TorStrings.onionLocation.learnMore;
+ learnMore.href = TorStrings.onionLocation.learnMoreURL;
+ document.getElementById("onionServicesRadioAlways").label =
+ TorStrings.onionLocation.always;
+ document.getElementById("onionServicesRadioAsk").label =
+ TorStrings.onionLocation.askEverytime;
+ },
+};
+
+Object.defineProperty(this, "OnionLocationPreferences", {
+ value: OnionLocationPreferences,
+ enumerable: true,
+ writable: false,
+});
diff --git a/browser/components/onionservices/jar.mn b/browser/components/onionservices/jar.mn
index 9d6ce88d1841..f45b16dc5d29 100644
--- a/browser/components/onionservices/jar.mn
+++ b/browser/components/onionservices/jar.mn
@@ -7,3 +7,5 @@ browser.jar:
content/browser/onionservices/onionservices.css (content/onionservices.css)
content/browser/onionservices/savedKeysDialog.js (content/savedKeysDialog.js)
content/browser/onionservices/savedKeysDialog.xhtml (content/savedKeysDialog.xhtml)
+ content/browser/onionservices/onionlocationPreferences.js (content/onionlocationPreferences.js)
+ content/browser/onionservices/onionlocation.svg (content/onionlocation.svg)
diff --git a/browser/components/onionservices/moz.build b/browser/components/onionservices/moz.build
index e4b6d73f8f40..dfd664df434e 100644
--- a/browser/components/onionservices/moz.build
+++ b/browser/components/onionservices/moz.build
@@ -4,4 +4,6 @@ EXTRA_JS_MODULES += [
'ExtensionMessaging.jsm',
'HttpsEverywhereControl.jsm',
'OnionAliasStore.jsm',
+ 'OnionLocationChild.jsm',
+ 'OnionLocationParent.jsm',
]
diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
index eb7587afa0e1..6e05405079bf 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
@@ -14,6 +14,8 @@
<html:h1 data-l10n-id="privacy-header"/>
</hbox>
+#include ../onionservices/content/onionlocationPreferences.inc.xhtml
+
<!-- Tracking / Content Blocking -->
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true" aria-describedby="contentBlockingDescription">
<label id="contentBlockingHeader"><html:h2 data-l10n-id="content-blocking-enhanced-tracking-protection"/></label>
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 41dda96a14de..92f35dc78d12 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -90,6 +90,12 @@ XPCOMUtils.defineLazyScriptGetter(
"chrome://browser/content/securitylevel/securityLevel.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["OnionLocationPreferences"],
+ "chrome://browser/content/onionservices/onionlocationPreferences.js"
+);
+
XPCOMUtils.defineLazyServiceGetter(
this,
"listManager",
@@ -158,6 +164,9 @@ Preferences.addAll([
// Do not track
{ id: "privacy.donottrackheader.enabled", type: "bool" },
+ // Onion Location
+ { id: "privacy.prioritizeonions.enabled", type: "bool" },
+
// Media
{ id: "media.autoplay.default", type: "int" },
@@ -300,6 +309,13 @@ var gPrivacyPane = {
window.addEventListener("unload", unload);
},
+ /**
+ * Show the OnionLocation preferences UI
+ */
+ _initOnionLocation() {
+ OnionLocationPreferences.init();
+ },
+
/**
* Whether the prompt to restart Firefox should appear when changing the autostart pref.
*/
@@ -442,6 +458,7 @@ var gPrivacyPane = {
this._initTrackingProtectionExtensionControl();
OnionServicesAuthPreferences.init();
this._initSecurityLevel();
+ this._initOnionLocation();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css
index 979ae9482244..7aa92d51f4d6 100644
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -415,3 +415,5 @@ html|*#webRTC-previewVideo {
background: #FFE900 url(chrome://browser/skin/notification-icons/update.svg) no-repeat center;
border-radius: 50%;
}
+
+%include ../../components/onionservices/content/onionlocation-notification-icons.css
\ No newline at end of file
diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
index 0b1f69342995..d3cc6bf7f024 100644
--- a/browser/themes/shared/urlbar-searchbar.inc.css
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
@@ -824,3 +824,5 @@
.searchbar-search-button:hover:not([addengines=true]) > .searchbar-search-icon-overlay:-moz-locale-dir(rtl) {
margin-inline: -26px 20px;
}
+
+%include ../../components/onionservices/content/onionlocation-urlbar.css
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 132c0ecbfdac..afc872569519 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -2542,6 +2542,7 @@ void Document::ResetToURI(nsIURI* aURI, nsILoadGroup* aLoadGroup,
// mDocumentURI.
mDocumentBaseURI = nullptr;
mChromeXHRDocBaseURI = nullptr;
+ mOnionLocationURI = nullptr;
// Check if the current document is the top-level DevTools document.
// For inner DevTools frames, mIsDevToolsDocument will be set when
@@ -6026,6 +6027,22 @@ void Document::GetHeaderData(nsAtom* aHeaderField, nsAString& aData) const {
}
}
+static bool IsValidOnionLocation(nsIURI* aDocumentURI,
+ nsIURI* aOnionLocationURI) {
+ bool isHttpish;
+ nsAutoCString host;
+ return aDocumentURI && aOnionLocationURI &&
+ NS_SUCCEEDED(aDocumentURI->SchemeIs("https", &isHttpish)) &&
+ isHttpish && NS_SUCCEEDED(aDocumentURI->GetAsciiHost(host)) &&
+ !StringEndsWith(host, NS_LITERAL_CSTRING(".onion")) &&
+ ((NS_SUCCEEDED(aOnionLocationURI->SchemeIs("http", &isHttpish)) &&
+ isHttpish) ||
+ (NS_SUCCEEDED(aOnionLocationURI->SchemeIs("https", &isHttpish)) &&
+ isHttpish)) &&
+ NS_SUCCEEDED(aOnionLocationURI->GetAsciiHost(host)) &&
+ StringEndsWith(host, NS_LITERAL_CSTRING(".onion"));
+}
+
void Document::SetHeaderData(nsAtom* aHeaderField, const nsAString& aData) {
if (!aHeaderField) {
NS_ERROR("null headerField");
@@ -6101,6 +6118,21 @@ void Document::SetHeaderData(nsAtom* aHeaderField, const nsAString& aData) {
aHeaderField == nsGkAtoms::handheldFriendly) {
mViewportType = Unknown;
}
+
+ if (aHeaderField == nsGkAtoms::headerOnionLocation && !aData.IsEmpty()) {
+ nsCOMPtr<nsIURI> onionURI;
+ if (NS_SUCCEEDED(NS_NewURI(getter_AddRefs(onionURI), aData)) &&
+ IsValidOnionLocation(Document::GetDocumentURI(), onionURI)) {
+ if (StaticPrefs::privacy_prioritizeonions_enabled()) {
+ nsCOMPtr<nsIRefreshURI> refresher(mDocumentContainer);
+ if (refresher) {
+ refresher->RefreshURI(onionURI, NodePrincipal(), 0, false, true);
+ }
+ } else {
+ mOnionLocationURI = onionURI;
+ }
+ }
+ }
}
void Document::TryChannelCharset(nsIChannel* aChannel, int32_t& aCharsetSource,
@@ -10141,7 +10173,7 @@ void Document::RetrieveRelevantHeaders(nsIChannel* aChannel) {
static const char* const headers[] = {
"default-style", "content-style-type", "content-language",
"content-disposition", "refresh", "x-dns-prefetch-control",
- "x-frame-options",
+ "x-frame-options", "onion-location",
// add more http headers if you need
// XXXbz don't add content-location support without reading bug
// 238654 and its dependencies/dups first.
diff --git a/dom/base/Document.h b/dom/base/Document.h
index 6d06a8c2a8cd..6e80306e94b5 100644
--- a/dom/base/Document.h
+++ b/dom/base/Document.h
@@ -3322,6 +3322,7 @@ class Document : public nsINode,
void ReleaseCapture() const;
void MozSetImageElement(const nsAString& aImageElementId, Element* aElement);
nsIURI* GetDocumentURIObject() const;
+ nsIURI* GetOnionLocationURI() const { return mOnionLocationURI; }
// Not const because all the fullscreen goop is not const
const char* GetFullscreenError(CallerType);
bool FullscreenEnabled(CallerType aCallerType) {
@@ -4194,6 +4195,7 @@ class Document : public nsINode,
nsCOMPtr<nsIURI> mChromeXHRDocURI;
nsCOMPtr<nsIURI> mDocumentBaseURI;
nsCOMPtr<nsIURI> mChromeXHRDocBaseURI;
+ nsCOMPtr<nsIURI> mOnionLocationURI;
// The base domain of the document for third-party checks.
nsCString mBaseDomain;
diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl
index 8130db018f47..df3a18eaf266 100644
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -676,3 +676,12 @@ partial interface Document {
[ChromeOnly, Pure]
readonly attribute nsIPermissionDelegateHandler permDelegateHandler;
};
+
+
+/**
+ * Extension to allows chrome JS to know whether the document has a valid
+ * Onion-Location that we could redirect to.
+ */
+partial interface Document {
+ [ChromeOnly] readonly attribute URI? onionLocationURI;
+};
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
index f1f2ccdf0cce..04d7575ab234 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -8446,6 +8446,11 @@
value: @IS_NIGHTLY_BUILD@
mirror: always
+- name: privacy.prioritizeonions.enabled
+ type: RelaxedAtomicBool
+ value: false
+ mirror: always
+
#---------------------------------------------------------------------------
# Prefs starting with "prompts."
#---------------------------------------------------------------------------
diff --git a/xpcom/ds/StaticAtoms.py b/xpcom/ds/StaticAtoms.py
index ab5f662575e4..23a5d6f9bb95 100644
--- a/xpcom/ds/StaticAtoms.py
+++ b/xpcom/ds/StaticAtoms.py
@@ -811,6 +811,7 @@ STATIC_ATOMS = [
Atom("oninputsourceschange","oninputsourceschange"),
Atom("oninstall", "oninstall"),
Atom("oninvalid", "oninvalid"),
+ Atom("headerOnionLocation", "onion-location"),
Atom("onkeydown", "onkeydown"),
Atom("onkeypress", "onkeypress"),
Atom("onkeyup", "onkeyup"),
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1650281 - P2: Make sure `gCombinedSizes` won't be underflowed r=gerald
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 9321a3557b1ebcc2161553d000753bcd7f7d31e4
Author: Chun-Min Chang <chun.m.chang(a)gmail.com>
Date: Tue Jul 21 23:39:14 2020 +0000
Bug 1650281 - P2: Make sure `gCombinedSizes` won't be underflowed r=gerald
In any case, `gCombinedSizes` should be larger than or equal to the
buffer within `MemoryClockCache`.
Differential Revision: https://phabricator.services.mozilla.com/D84274
---
dom/media/MemoryBlockCache.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/dom/media/MemoryBlockCache.cpp b/dom/media/MemoryBlockCache.cpp
index bf073e6769d0..2848a3f3812c 100644
--- a/dom/media/MemoryBlockCache.cpp
+++ b/dom/media/MemoryBlockCache.cpp
@@ -52,6 +52,7 @@ MemoryBlockCache::MemoryBlockCache(int64_t aContentLength)
}
MemoryBlockCache::~MemoryBlockCache() {
+ MOZ_ASSERT(gCombinedSizes >= mBuffer.Length());
size_t sizes = static_cast<size_t>(gCombinedSizes -= mBuffer.Length());
LOG("~MemoryBlockCache() - destroying buffer of size %zu; combined sizes now "
"%zu",
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 40073: Disable remote Public Suffix List fetching
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 0516cf203470ab557e6f0fef6f9b19508e04781e
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu Aug 13 11:05:03 2020 +0200
Bug 40073: Disable remote Public Suffix List fetching
In https://bugzilla.mozilla.org/show_bug.cgi?id=1563246 Firefox implemented
fetching the Public Suffix List via RemoteSettings and replacing the default
one at runtime, which we do not want.
---
browser/components/BrowserGlue.jsm | 5 -----
1 file changed, 5 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index e08e461a27ff..ec38d0ca8b33 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -695,7 +695,6 @@ XPCOMUtils.defineLazyModuleGetters(this, {
PluralForm: "resource://gre/modules/PluralForm.jsm",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
ProcessHangMonitor: "resource:///modules/ProcessHangMonitor.jsm",
- PublicSuffixList: "resource://gre/modules/netwerk-dns/PublicSuffixList.jsm",
RemoteSettings: "resource://services-settings/remote-settings.js",
RemoteSecuritySettings:
"resource://gre/modules/psm/RemoteSecuritySettings.jsm",
@@ -2575,10 +2574,6 @@ BrowserGlue.prototype = {
this._addBreachesSyncHandler();
},
- () => {
- PublicSuffixList.init();
- },
-
() => {
RemoteSecuritySettings.init();
},
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] 40209: Implement Basic Crypto Safety
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 41648b040580412b79525f70814d5ad6fd4e7d17
Author: sanketh <me(a)snkth.com>
Date: Mon Feb 8 20:12:44 2021 -0500
40209: Implement Basic Crypto Safety
Adds a CryptoSafety actor which detects when you've copied a crypto
address from a HTTP webpage and shows a warning.
Closes #40209.
---
browser/actors/CryptoSafetyChild.jsm | 87 ++++++++++++++++
browser/actors/CryptoSafetyParent.jsm | 142 +++++++++++++++++++++++++++
browser/actors/moz.build | 2 +
browser/base/content/popup-notifications.inc | 14 +++
browser/components/BrowserGlue.jsm | 17 ++++
browser/modules/TorStrings.jsm | 48 +++++++++
browser/themes/shared/browser.inc.css | 5 +
toolkit/content/license.html | 32 ++++++
toolkit/modules/Bech32Decode.jsm | 103 +++++++++++++++++++
toolkit/modules/moz.build | 1 +
10 files changed, 451 insertions(+)
diff --git a/browser/actors/CryptoSafetyChild.jsm b/browser/actors/CryptoSafetyChild.jsm
new file mode 100644
index 000000000000..87ff261d4915
--- /dev/null
+++ b/browser/actors/CryptoSafetyChild.jsm
@@ -0,0 +1,87 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* Copyright (c) 2020, The Tor Project, Inc.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var EXPORTED_SYMBOLS = ["CryptoSafetyChild"];
+
+const { Bech32Decode } = ChromeUtils.import(
+ "resource://gre/modules/Bech32Decode.jsm"
+);
+
+const { XPCOMUtils } = ChromeUtils.import(
+ "resource://gre/modules/XPCOMUtils.jsm"
+);
+
+const kPrefCryptoSafety = "security.cryptoSafety";
+
+XPCOMUtils.defineLazyPreferenceGetter(
+ this,
+ "isCryptoSafetyEnabled",
+ kPrefCryptoSafety,
+ true /* defaults to true */
+);
+
+function looksLikeCryptoAddress(s) {
+ // P2PKH and P2SH addresses
+ // https://stackoverflow.com/a/24205650
+ const bitcoinAddr = /^[13][a-km-zA-HJ-NP-Z1-9]{25,39}$/;
+ if (bitcoinAddr.test(s)) {
+ return true;
+ }
+
+ // Bech32 addresses
+ if (Bech32Decode(s) !== null) {
+ return true;
+ }
+
+ // regular addresses
+ const etherAddr = /^0x[a-fA-F0-9]{40}$/;
+ if (etherAddr.test(s)) {
+ return true;
+ }
+
+ // t-addresses
+ // https://www.reddit.com/r/zec/comments/8mxj6x/simple_regex_to_validate_a_zca…
+ const zcashAddr = /^t1[a-zA-Z0-9]{33}$/;
+ if (zcashAddr.test(s)) {
+ return true;
+ }
+
+ // Standard, Integrated, and 256-bit Integrated addresses
+ // https://monero.stackexchange.com/a/10627
+ const moneroAddr = /^4(?:[0-9AB]|[1-9A-HJ-NP-Za-km-z]{12}(?:[1-9A-HJ-NP-Za-km-z]{30})?)[1-9A-HJ-NP-Za-km-z]{93}$/;
+ if (moneroAddr.test(s)) {
+ return true;
+ }
+
+ return false;
+}
+
+class CryptoSafetyChild extends JSWindowActorChild {
+ handleEvent(event) {
+ if (isCryptoSafetyEnabled) {
+ // Ignore non-HTTP addresses
+ if (!this.document.documentURIObject.schemeIs("http")) {
+ return;
+ }
+ // Ignore onion addresses
+ if (this.document.documentURIObject.host.endsWith(".onion")) {
+ return;
+ }
+
+ if (event.type == "copy" || event.type == "cut") {
+ this.contentWindow.navigator.clipboard.readText().then(clipText => {
+ const selection = clipText.trim();
+ if (looksLikeCryptoAddress(selection)) {
+ this.sendAsyncMessage("CryptoSafety:CopiedText", {
+ selection,
+ });
+ }
+ });
+ }
+ }
+ }
+}
diff --git a/browser/actors/CryptoSafetyParent.jsm b/browser/actors/CryptoSafetyParent.jsm
new file mode 100644
index 000000000000..bac151df5511
--- /dev/null
+++ b/browser/actors/CryptoSafetyParent.jsm
@@ -0,0 +1,142 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* Copyright (c) 2020, The Tor Project, Inc.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var EXPORTED_SYMBOLS = ["CryptoSafetyParent"];
+
+const { XPCOMUtils } = ChromeUtils.import(
+ "resource://gre/modules/XPCOMUtils.jsm"
+);
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ TorStrings: "resource:///modules/TorStrings.jsm",
+});
+
+const kPrefCryptoSafety = "security.cryptoSafety";
+
+XPCOMUtils.defineLazyPreferenceGetter(
+ this,
+ "isCryptoSafetyEnabled",
+ kPrefCryptoSafety,
+ true /* defaults to true */
+);
+
+class CryptoSafetyParent extends JSWindowActorParent {
+ getBrowser() {
+ return this.browsingContext.top.embedderElement;
+ }
+
+ receiveMessage(aMessage) {
+ if (isCryptoSafetyEnabled) {
+ if (aMessage.name == "CryptoSafety:CopiedText") {
+ showPopup(this.getBrowser(), aMessage.data.selection);
+ }
+ }
+ }
+}
+
+function trimAddress(cryptoAddr) {
+ if (cryptoAddr.length <= 32) {
+ return cryptoAddr;
+ }
+ return cryptoAddr.substring(0, 32) + "...";
+}
+
+function showPopup(aBrowser, cryptoAddr) {
+ const chromeDoc = aBrowser.ownerDocument;
+ if (chromeDoc) {
+ const win = chromeDoc.defaultView;
+ const cryptoSafetyPrompt = new CryptoSafetyPrompt(
+ aBrowser,
+ win,
+ cryptoAddr
+ );
+ cryptoSafetyPrompt.show();
+ }
+}
+
+class CryptoSafetyPrompt {
+ constructor(aBrowser, aWin, cryptoAddr) {
+ this._browser = aBrowser;
+ this._win = aWin;
+ this._cryptoAddr = cryptoAddr;
+ }
+
+ show() {
+ const primaryAction = {
+ label: TorStrings.cryptoSafetyPrompt.primaryAction,
+ accessKey: TorStrings.cryptoSafetyPrompt.primaryActionAccessKey,
+ callback: () => {
+ this._win.torbutton_new_circuit();
+ },
+ };
+
+ const secondaryAction = {
+ label: TorStrings.cryptoSafetyPrompt.secondaryAction,
+ accessKey: TorStrings.cryptoSafetyPrompt.secondaryActionAccessKey,
+ callback: () => {},
+ };
+
+ let _this = this;
+ const options = {
+ popupIconURL: "chrome://browser/skin/cert-error.svg",
+ eventCallback(aTopic) {
+ if (aTopic === "showing") {
+ _this._onPromptShowing();
+ }
+ },
+ };
+
+ const cryptoWarningText = TorStrings.cryptoSafetyPrompt.cryptoWarning.replace(
+ "%S",
+ trimAddress(this._cryptoAddr)
+ );
+
+ if (this._win.PopupNotifications) {
+ this._prompt = this._win.PopupNotifications.show(
+ this._browser,
+ "crypto-safety-warning",
+ cryptoWarningText,
+ null /* anchor ID */,
+ primaryAction,
+ [secondaryAction],
+ options
+ );
+ }
+ }
+
+ _onPromptShowing() {
+ let xulDoc = this._browser.ownerDocument;
+
+ let whatCanHeading = xulDoc.getElementById(
+ "crypto-safety-warning-notification-what-can-heading"
+ );
+ if (whatCanHeading) {
+ whatCanHeading.textContent = TorStrings.cryptoSafetyPrompt.whatCanHeading;
+ }
+
+ let whatCanBody = xulDoc.getElementById(
+ "crypto-safety-warning-notification-what-can-body"
+ );
+ if (whatCanBody) {
+ whatCanBody.textContent = TorStrings.cryptoSafetyPrompt.whatCanBody;
+ }
+
+ let learnMoreElem = xulDoc.getElementById(
+ "crypto-safety-warning-notification-learnmore"
+ );
+ if (learnMoreElem) {
+ learnMoreElem.setAttribute(
+ "value",
+ TorStrings.cryptoSafetyPrompt.learnMore
+ );
+ learnMoreElem.setAttribute(
+ "href",
+ TorStrings.cryptoSafetyPrompt.learnMoreURL
+ );
+ }
+ }
+}
diff --git a/browser/actors/moz.build b/browser/actors/moz.build
index e70f0f09fe3a..9eb5ca397060 100644
--- a/browser/actors/moz.build
+++ b/browser/actors/moz.build
@@ -50,6 +50,8 @@ FINAL_TARGET_FILES.actors += [
'ContentSearchParent.jsm',
'ContextMenuChild.jsm',
'ContextMenuParent.jsm',
+ 'CryptoSafetyChild.jsm',
+ 'CryptoSafetyParent.jsm',
'DOMFullscreenChild.jsm',
'DOMFullscreenParent.jsm',
'FormValidationChild.jsm',
diff --git a/browser/base/content/popup-notifications.inc b/browser/base/content/popup-notifications.inc
index 42e17e90c648..ff6f8cdeca80 100644
--- a/browser/base/content/popup-notifications.inc
+++ b/browser/base/content/popup-notifications.inc
@@ -114,3 +114,17 @@
</vbox>
</popupnotificationfooter>
</popupnotification>
+
+ <popupnotification id="crypto-safety-warning-notification" hidden="true">
+ <popupnotificationcontent orient="vertical">
+ <description id="crypto-safety-warning-notification-desc"/>
+ <html:div id="crypto-safety-warning-notification-what-can">
+ <html:strong id="crypto-safety-warning-notification-what-can-heading" />
+ <html:br/>
+ <html:span id="crypto-safety-warning-notification-what-can-body" />
+ </html:div>
+ <label id="crypto-safety-warning-notification-learnmore"
+ class="popup-notification-learnmore-link"
+ is="text-link"/>
+ </popupnotificationcontent>
+ </popupnotification>
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 3750230a250b..5f708fca3d5c 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -297,6 +297,23 @@ let JSWINDOWACTORS = {
allFrames: true,
},
+ CryptoSafety: {
+ parent: {
+ moduleURI: "resource:///actors/CryptoSafetyParent.jsm",
+ },
+
+ child: {
+ moduleURI: "resource:///actors/CryptoSafetyChild.jsm",
+ group: "browsers",
+ events: {
+ copy: { mozSystemGroup: true },
+ cut: { mozSystemGroup: true },
+ },
+ },
+
+ allFrames: true,
+ },
+
DOMFullscreen: {
parent: {
moduleURI: "resource:///actors/DOMFullscreenParent.jsm",
diff --git a/browser/modules/TorStrings.jsm b/browser/modules/TorStrings.jsm
index e8a8d37ae373..bf522234d588 100644
--- a/browser/modules/TorStrings.jsm
+++ b/browser/modules/TorStrings.jsm
@@ -101,6 +101,54 @@ class TorPropertyStringBundle {
Security Level Strings
*/
var TorStrings = {
+ /*
+ CryptoSafetyPrompt Strings
+ */
+ cryptoSafetyPrompt: (function() {
+ let tsb = new TorPropertyStringBundle(
+ "chrome://torbutton/locale/torbutton.properties",
+ "cryptoSafetyPrompt."
+ );
+ let getString = function(key, fallback) {
+ return tsb.getString(key, fallback);
+ };
+
+ let retval = {
+ cryptoWarning: getString(
+ "cryptoSafetyPrompt.cryptoWarning",
+ "A cryptocurrency address (%S) has been copied from an insecure website. It could have been modified."
+ ),
+ whatCanHeading: getString(
+ "cryptoSafetyPrompt.whatCanHeading",
+ "What can you do about it?"
+ ),
+ whatCanBody: getString(
+ "cryptoSafetyPrompt.whatCanBody",
+ "You can try reconnecting with a new circuit to establish a secure connection, or accept the risk and dismiss this warning."
+ ),
+ learnMore: getString("cryptoSafetyPrompt.learnMore", "Learn more"),
+ learnMoreURL: `https://support.torproject.org/${getLocale()}/`,
+ primaryAction: getString(
+ "cryptoSafetyPrompt.primaryAction",
+ "Reload Tab with a New Circuit"
+ ),
+ primaryActionAccessKey: getString(
+ "cryptoSafetyPrompt.primaryActionAccessKey",
+ "R"
+ ),
+ secondaryAction: getString(
+ "cryptoSafetyPrompt.secondaryAction",
+ "Dismiss Warning"
+ ),
+ secondaryActionAccessKey: getString(
+ "cryptoSafetyPrompt.secondaryActionAccessKey",
+ "D"
+ ),
+ };
+
+ return retval;
+ })() /* CryptoSafetyPrompt Strings */,
+
/*
Tor Browser Security Level Strings
*/
diff --git a/browser/themes/shared/browser.inc.css b/browser/themes/shared/browser.inc.css
index 0113466e8e56..4ef27d880754 100644
--- a/browser/themes/shared/browser.inc.css
+++ b/browser/themes/shared/browser.inc.css
@@ -620,3 +620,8 @@ menupopup::part(drop-indicator) {
#sharing-warning-proceed-to-tab:hover {
background-color: rgb(0,62,170);
}
+
+#crypto-safety-warning-notification-what-can {
+ display: block;
+ margin: 5px;
+}
diff --git a/toolkit/content/license.html b/toolkit/content/license.html
index e44c31ec6d4e..90995236b41b 100644
--- a/toolkit/content/license.html
+++ b/toolkit/content/license.html
@@ -72,6 +72,7 @@
<li><a href="about:license#arm">ARM License</a></li>
<li><a href="about:license#babel">Babel License</a></li>
<li><a href="about:license#babylon">Babylon License</a></li>
+ <li><a href="about:license#bech32">Bech32 License</a></li>
<li><a href="about:license#bincode">bincode License</a></li>
<li><a href="about:license#bsd2clause">BSD 2-Clause License</a></li>
<li><a href="about:license#bsd3clause">BSD 3-Clause License</a></li>
@@ -2795,6 +2796,37 @@ furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+</pre>
+
+
+ <hr>
+
+ <h1><a id="bech32"></a>Bech32 License</h1>
+
+ <p>This license applies to the file
+ <code>toolkit/modules/Bech32Decode.jsm</code>.
+ </p>
+
+<pre>
+Copyright (c) 2017 Pieter Wuille
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
diff --git a/toolkit/modules/Bech32Decode.jsm b/toolkit/modules/Bech32Decode.jsm
new file mode 100644
index 000000000000..3a2bc7ae0a10
--- /dev/null
+++ b/toolkit/modules/Bech32Decode.jsm
@@ -0,0 +1,103 @@
+// Adapted from the reference implementation of Bech32
+// https://github.com/sipa/bech32
+
+// Copyright (c) 2017 Pieter Wuille
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+"use strict";
+
+/**
+ * JS module implementation of Bech32 decoding adapted from the reference
+ * implementation https://github.com/sipa/bech32.
+ */
+
+var EXPORTED_SYMBOLS = ["Bech32Decode"];
+
+var CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
+var GENERATOR = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
+
+function polymod(values) {
+ var chk = 1;
+ for (var p = 0; p < values.length; ++p) {
+ var top = chk >> 25;
+ chk = ((chk & 0x1ffffff) << 5) ^ values[p];
+ for (var i = 0; i < 5; ++i) {
+ if ((top >> i) & 1) {
+ chk ^= GENERATOR[i];
+ }
+ }
+ }
+ return chk;
+}
+
+function hrpExpand(hrp) {
+ var ret = [];
+ var p;
+ for (p = 0; p < hrp.length; ++p) {
+ ret.push(hrp.charCodeAt(p) >> 5);
+ }
+ ret.push(0);
+ for (p = 0; p < hrp.length; ++p) {
+ ret.push(hrp.charCodeAt(p) & 31);
+ }
+ return ret;
+}
+
+function verifyChecksum(hrp, data) {
+ return polymod(hrpExpand(hrp).concat(data)) === 1;
+}
+
+function Bech32Decode(bechString) {
+ var p;
+ var has_lower = false;
+ var has_upper = false;
+ for (p = 0; p < bechString.length; ++p) {
+ if (bechString.charCodeAt(p) < 33 || bechString.charCodeAt(p) > 126) {
+ return null;
+ }
+ if (bechString.charCodeAt(p) >= 97 && bechString.charCodeAt(p) <= 122) {
+ has_lower = true;
+ }
+ if (bechString.charCodeAt(p) >= 65 && bechString.charCodeAt(p) <= 90) {
+ has_upper = true;
+ }
+ }
+ if (has_lower && has_upper) {
+ return null;
+ }
+ bechString = bechString.toLowerCase();
+ var pos = bechString.lastIndexOf("1");
+ if (pos < 1 || pos + 7 > bechString.length || bechString.length > 90) {
+ return null;
+ }
+ var hrp = bechString.substring(0, pos);
+ var data = [];
+ for (p = pos + 1; p < bechString.length; ++p) {
+ var d = CHARSET.indexOf(bechString.charAt(p));
+ if (d === -1) {
+ return null;
+ }
+ data.push(d);
+ }
+ if (!verifyChecksum(hrp, data)) {
+ return null;
+ }
+ return { hrp: hrp, data: data.slice(0, data.length - 6) };
+}
diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build
index e1f1eb5759c5..698d2773a7ed 100644
--- a/toolkit/modules/moz.build
+++ b/toolkit/modules/moz.build
@@ -160,6 +160,7 @@ EXTRA_JS_MODULES += [
'ActorManagerParent.jsm',
'AppMenuNotifications.jsm',
'AsyncPrefs.jsm',
+ 'Bech32Decode.jsm',
'BinarySearch.jsm',
'BrowserUtils.jsm',
'CanonicalJSON.jsm',
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 40025: Remove Mozilla add-on install permissions
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 3e86f345c321287a48ee063848193b939be05402
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon Jul 27 18:12:55 2020 +0200
Bug 40025: Remove Mozilla add-on install permissions
---
browser/app/permissions | 6 ------
1 file changed, 6 deletions(-)
diff --git a/browser/app/permissions b/browser/app/permissions
index da6b6728043d..5c4c302f5ba5 100644
--- a/browser/app/permissions
+++ b/browser/app/permissions
@@ -11,12 +11,6 @@
origin uitour 1 https://3g2upl4pq6kufc4m.onion
origin uitour 1 about:tor
-# XPInstall
-origin install 1 https://addons.mozilla.org
-
# Remote troubleshooting
origin remote-troubleshooting 1 https://support.mozilla.org
-# addon install
-origin install 1 https://private-network.firefox.com
-origin install 1 https://fpn.firefox.com
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1673237 - Always allow SVGs on about: pages r=acat, tjr, emilio
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 8d431189d1122a5c97987c280a40eb4cabdf796c
Author: sanketh <me(a)snkth.com>
Date: Tue Nov 3 17:34:20 2020 +0000
Bug 1673237 - Always allow SVGs on about: pages r=acat,tjr,emilio
- Updated layout/svg/tests/test_disabled.html to ensure that this doesn't allow
rendering SVGs on about:blank and about:srcdoc.
Differential Revision: https://phabricator.services.mozilla.com/D95139
---
dom/base/nsNodeInfoManager.cpp | 18 ++++++++++-------
layout/svg/tests/file_disabled_iframe.html | 31 +++++++++++++++++++++++++++++-
2 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/dom/base/nsNodeInfoManager.cpp b/dom/base/nsNodeInfoManager.cpp
index b0534b661a23..8bc6b0ba2bd6 100644
--- a/dom/base/nsNodeInfoManager.cpp
+++ b/dom/base/nsNodeInfoManager.cpp
@@ -352,9 +352,12 @@ void nsNodeInfoManager::RemoveNodeInfo(NodeInfo* aNodeInfo) {
MOZ_ASSERT(ret, "Can't find mozilla::dom::NodeInfo to remove!!!");
}
-static bool IsSystemOrAddonPrincipal(nsIPrincipal* aPrincipal) {
+static bool IsSystemOrAddonOrAboutPrincipal(nsIPrincipal* aPrincipal) {
return aPrincipal->IsSystemPrincipal() ||
- BasePrincipal::Cast(aPrincipal)->AddonPolicy();
+ BasePrincipal::Cast(aPrincipal)->AddonPolicy() ||
+ // NOTE: about:blank and about:srcdoc inherit the principal of their
+ // parent, so aPrincipal->SchemeIs("about") returns false for them.
+ aPrincipal->SchemeIs("about");
}
bool nsNodeInfoManager::InternalSVGEnabled() {
@@ -375,17 +378,18 @@ bool nsNodeInfoManager::InternalSVGEnabled() {
}
// We allow SVG (regardless of the pref) if this is a system or add-on
- // principal, or if this load was requested for a system or add-on principal
- // (e.g. a remote image being served as part of system or add-on UI)
+ // principal or about: page, or if this load was requested for a system or
+ // add-on principal or about: page (e.g. a remote image being served as part
+ // of system or add-on UI or about: page)
bool conclusion =
- (SVGEnabled || IsSystemOrAddonPrincipal(mPrincipal) ||
+ (SVGEnabled || IsSystemOrAddonOrAboutPrincipal(mPrincipal) ||
(loadInfo &&
(loadInfo->GetExternalContentPolicyType() ==
nsIContentPolicy::TYPE_IMAGE ||
loadInfo->GetExternalContentPolicyType() ==
nsIContentPolicy::TYPE_OTHER) &&
- (IsSystemOrAddonPrincipal(loadInfo->GetLoadingPrincipal()) ||
- IsSystemOrAddonPrincipal(loadInfo->TriggeringPrincipal()))));
+ (IsSystemOrAddonOrAboutPrincipal(loadInfo->GetLoadingPrincipal()) ||
+ IsSystemOrAddonOrAboutPrincipal(loadInfo->TriggeringPrincipal()))));
mSVGEnabled = Some(conclusion);
return conclusion;
}
diff --git a/layout/svg/tests/file_disabled_iframe.html b/layout/svg/tests/file_disabled_iframe.html
index 6feae3024730..55eda75fdefb 100644
--- a/layout/svg/tests/file_disabled_iframe.html
+++ b/layout/svg/tests/file_disabled_iframe.html
@@ -48,5 +48,34 @@
t.firstChild.firstChild.textContent = "1&2<3>4\xA0";
is(t.innerHTML, '<svg><style>1&2<3>4 \u003C/style></svg>');
- SimpleTest.finish();
+ //
+ // Tests for Bug 1673237
+ //
+
+ // This test fails if about:blank renders SVGs
+ t.innerHTML = null;
+ var iframe = document.createElement("iframe");
+ iframe.setAttribute("src", "about:blank")
+ t.appendChild(iframe);
+ iframe.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg:svg"));
+ iframe.firstChild.textContent = "<foo>";
+ is(iframe.innerHTML, "<svg:svg><foo></svg:svg>");
+
+ // This test fails if about:blank renders SVGs
+ var win = window.open("about:blank");
+ win.document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg:svg"))
+ win.document.body.firstChild.textContent = "<foo>";
+ is(win.document.body.innerHTML, "<svg:svg><foo></svg:svg>");
+ win.close();
+
+ // This test fails if about:srcdoc renders SVGs
+ t.innerHTML = null;
+ iframe = document.createElement("iframe");
+ iframe.srcdoc = "<svg:svg></svg:svg>";
+ iframe.onload = function() {
+ iframe.contentDocument.body.firstChild.textContent = "<foo>";
+ is(iframe.contentDocument.body.innerHTML, "<svg:svg><foo></svg:svg>");
+ SimpleTest.finish();
+ }
+ t.appendChild(iframe);
</script>
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1650281 - P1: Widen `gCombinedSizes` once the buffers grow r=gerald
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 3070b8ff3bc9b68d015723974acb7526ad6cb252
Author: Chun-Min Chang <chun.m.chang(a)gmail.com>
Date: Tue Jul 21 23:38:57 2020 +0000
Bug 1650281 - P1: Widen `gCombinedSizes` once the buffers grow r=gerald
The `gCombinedSizes` need to be enlarged once the inner buffer within
`MemoryBlockCache` grows. Otherwise, when the `MemoryBlockCache` is
released, subtracting the buffer-size of the `MemoryBlockCache` from
`gCombinedSizes` lead to a underflow.
Differential Revision: https://phabricator.services.mozilla.com/D84273
---
dom/media/MemoryBlockCache.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dom/media/MemoryBlockCache.cpp b/dom/media/MemoryBlockCache.cpp
index 2d31119dca0a..bf073e6769d0 100644
--- a/dom/media/MemoryBlockCache.cpp
+++ b/dom/media/MemoryBlockCache.cpp
@@ -114,6 +114,10 @@ bool MemoryBlockCache::EnsureBufferCanContain(size_t aContentLength) {
// possibly bypass some future growths that would fit in this new capacity.
mBuffer.SetLength(capacity);
}
+ const size_t newSizes = gCombinedSizes += (extra + extraCapacity);
+ LOG("EnsureBufferCanContain(%zu) - buffer size %zu + requested %zu + bonus "
+ "%zu = %zu; combined sizes %zu",
+ aContentLength, initialLength, extra, extraCapacity, capacity, newSizes);
mHasGrown = true;
return true;
}
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 40091: Load HTTPS Everywhere as a builtin addon in desktop
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit eb877a83bbec5ce675e9ec5f1fbb93d334653f2b
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Sep 4 12:34:35 2020 +0200
Bug 40091: Load HTTPS Everywhere as a builtin addon in desktop
This loads HTTPS Everywhere as a builtin addon from a hardcoded
resource:// URI in desktop. It also ensures that the non-builtin
HTTPS Everywhere addon is always uninstalled on browser startup.
The reason of making this desktop-only is that there are some issues
when installing a builtin extension from geckoview side, making
the extension not available on first startup. So, at least for
now we handle the Fenix case separately. See #40118 for a followup
for investigating these.
---
browser/components/BrowserGlue.jsm | 37 ++++++++++++++++++++++
toolkit/components/extensions/Extension.jsm | 14 ++++++--
.../mozapps/extensions/internal/XPIProvider.jsm | 13 ++++++++
3 files changed, 61 insertions(+), 3 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index ec38d0ca8b33..057a2121533c 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -56,6 +56,13 @@ XPCOMUtils.defineLazyServiceGetter(
"nsIPushService"
);
+XPCOMUtils.defineLazyServiceGetters(this, {
+ resProto: [
+ "@mozilla.org/network/protocol;1?name=resource",
+ "nsISubstitutingProtocolHandler",
+ ],
+});
+
const PREF_PDFJS_ISDEFAULT_CACHE_STATE = "pdfjs.enabledCache.state";
/**
@@ -675,6 +682,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
"resource://gre/modules/ContextualIdentityService.jsm",
Corroborate: "resource://gre/modules/Corroborate.jsm",
Discovery: "resource:///modules/Discovery.jsm",
+ ExtensionData: "resource://gre/modules/Extension.jsm",
ExtensionsUI: "resource:///modules/ExtensionsUI.jsm",
FirefoxMonitor: "resource:///modules/FirefoxMonitor.jsm",
FxAccounts: "resource://gre/modules/FxAccounts.jsm",
@@ -1330,6 +1338,35 @@ BrowserGlue.prototype = {
"resource:///modules/themes/dark/"
);
+ // Install https-everywhere builtin addon if needed.
+ (async () => {
+ const HTTPS_EVERYWHERE_ID = "https-everywhere-eff(a)eff.org";
+ const HTTPS_EVERYWHERE_BUILTIN_URL =
+ "resource://torbutton/content/extensions/https-everywhere/";
+ // This does something similar as GeckoViewWebExtension.jsm: it tries
+ // to load the manifest to retrieve the version of the builtin and
+ // compares it to the currently installed one to see whether we need
+ // to install or not. Here we delegate that to
+ // AddonManager.maybeInstallBuiltinAddon.
+ try {
+ const resolvedURI = Services.io.newURI(
+ resProto.resolveURI(Services.io.newURI(HTTPS_EVERYWHERE_BUILTIN_URL))
+ );
+ const extensionData = new ExtensionData(resolvedURI);
+ const manifest = await extensionData.loadManifest();
+
+ await AddonManager.maybeInstallBuiltinAddon(
+ HTTPS_EVERYWHERE_ID,
+ manifest.version,
+ HTTPS_EVERYWHERE_BUILTIN_URL
+ );
+ } catch (e) {
+ const log = Log.repository.getLogger("HttpsEverywhereBuiltinLoader");
+ log.addAppender(new Log.ConsoleAppender(new Log.BasicFormatter()));
+ log.error("Could not install https-everywhere extension", e);
+ }
+ })();
+
if (AppConstants.MOZ_NORMANDY) {
Normandy.init();
}
diff --git a/toolkit/components/extensions/Extension.jsm b/toolkit/components/extensions/Extension.jsm
index 876e636be3db..7dbd888b1710 100644
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -211,6 +211,7 @@ const LOGGER_ID_BASE = "addons.webextension.";
const UUID_MAP_PREF = "extensions.webextensions.uuids";
const LEAVE_STORAGE_PREF = "extensions.webextensions.keepStorageOnUninstall";
const LEAVE_UUID_PREF = "extensions.webextensions.keepUuidOnUninstall";
+const PERSISTENT_EXTENSIONS = new Set(["https-everywhere-eff(a)eff.org"]);
const COMMENT_REGEXP = new RegExp(
String.raw`
@@ -331,7 +332,10 @@ var ExtensionAddonObserver = {
return;
}
- if (!Services.prefs.getBoolPref(LEAVE_STORAGE_PREF, false)) {
+ if (
+ !Services.prefs.getBoolPref(LEAVE_STORAGE_PREF, false) &&
+ !PERSISTENT_EXTENSIONS.has(addon.id)
+ ) {
// Clear browser.storage.local backends.
AsyncShutdown.profileChangeTeardown.addBlocker(
`Clear Extension Storage ${addon.id} (File Backend)`,
@@ -384,7 +388,10 @@ var ExtensionAddonObserver = {
ExtensionPermissions.removeAll(addon.id);
- if (!Services.prefs.getBoolPref(LEAVE_UUID_PREF, false)) {
+ if (
+ !Services.prefs.getBoolPref(LEAVE_UUID_PREF, false) &&
+ !PERSISTENT_EXTENSIONS.has(addon.id)
+ ) {
// Clear the entry in the UUID map
UUIDMap.remove(addon.id);
}
@@ -2474,7 +2481,8 @@ class Extension extends ExtensionData {
);
} else if (
this.startupReason === "ADDON_INSTALL" &&
- !Services.prefs.getBoolPref(LEAVE_STORAGE_PREF, false)
+ !Services.prefs.getBoolPref(LEAVE_STORAGE_PREF, false) &&
+ !PERSISTENT_EXTENSIONS.has(this.id)
) {
// If the extension has been just installed, set it as migrated,
// because there will not be any data to migrate.
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
index 794c206fb453..dc5362bce3d8 100644
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -1491,6 +1491,19 @@ var XPIStates = {
continue;
}
+ // Uninstall HTTPS Everywhere if it is installed in the user profile.
+ if (
+ id === "https-everywhere-eff(a)eff.org" &&
+ loc.name === KEY_APP_PROFILE
+ ) {
+ logger.debug(
+ "Uninstalling the HTTPS Everywhere extension from user profile."
+ );
+ loc.installer.uninstallAddon(id);
+ changed = true;
+ continue;
+ }
+
let xpiState = loc.get(id);
if (!xpiState) {
// If the location is not supported for sideloading, skip new
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1642404 - add an option to show that an update is being downloaded r=bytesized, fluent-reviewers, flod
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 69979fcc61c5191d9a69ef1ea243f28b71ac6c32
Author: Mark Smith <mcs(a)pearlcrescent.com>
Date: Mon Jun 22 20:24:46 2020 +0000
Bug 1642404 - add an option to show that an update is being downloaded r=bytesized,fluent-reviewers,flod
Add support for a hidden preference named app.update.notifyDuringDownload
that, when set to true, causes a "Downloading update" message to appear
in the app menu during a MAR download. Clicking the message opens the
about box so the user can see detailed progress information.
Differential Revision: https://phabricator.services.mozilla.com/D77688
---
browser/app/profile/firefox.js | 4 ++
browser/components/BrowserGlue.jsm | 1 +
.../customizableui/content/panelUI.inc.xhtml | 2 +
.../components/customizableui/content/panelUI.js | 5 ++
.../test/browser_panelUINotifications.js | 62 ++++++++++++++++++++++
browser/locales/en-US/browser/appmenu.ftl | 2 +
.../themes/shared/customizableui/panelUI.inc.css | 3 ++
browser/themes/shared/notification-icons.inc.css | 1 +
browser/themes/shared/toolbarbutton-icons.inc.css | 1 +
toolkit/mozapps/update/UpdateListener.jsm | 50 +++++++++++------
toolkit/mozapps/update/UpdateService.jsm | 27 ++++++++++
.../mozapps/update/tests/browser/browser.bits.ini | 1 +
toolkit/mozapps/update/tests/browser/browser.ini | 1 +
.../update/tests/browser/browser.legacy.bits.ini | 1 +
.../update/tests/browser/browser.legacy.ini | 1 +
.../browser/browser_aboutDialog_bc_downloading.js | 17 ++++++
.../browser_aboutDialog_bc_downloading_notify.js | 58 ++++++++++++++++++++
toolkit/mozapps/update/tests/data/shared.js | 1 +
18 files changed, 222 insertions(+), 16 deletions(-)
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index a7e0bd808254..479c68efdd8c 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -131,6 +131,10 @@ pref("app.update.download.promptMaxAttempts", 2);
// download a fresh installer.
pref("app.update.elevation.promptMaxAttempts", 2);
+// If set to true, a message will be displayed in the hamburger menu while
+// an update is being downloaded.
+pref("app.update.notifyDuringDownload", false);
+
// If set to true, the Update Service will automatically download updates if the
// user can apply updates. This pref is no longer used on Windows, except as the
// default value to migrate to the new location that this data is now stored
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 70f5ad8b85e4..0a3555f26432 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -769,6 +769,7 @@ const global = this;
const listeners = {
observers: {
+ "update-downloading": ["UpdateListener"],
"update-staged": ["UpdateListener"],
"update-downloaded": ["UpdateListener"],
"update-available": ["UpdateListener"],
diff --git a/browser/components/customizableui/content/panelUI.inc.xhtml b/browser/components/customizableui/content/panelUI.inc.xhtml
index e5c9c00c35e4..3a8b74b0a9f3 100644
--- a/browser/components/customizableui/content/panelUI.inc.xhtml
+++ b/browser/components/customizableui/content/panelUI.inc.xhtml
@@ -223,6 +223,8 @@
<vbox class="panel-subview-body">
<vbox id="appMenu-addon-banners"/>
<toolbarbutton id="appMenu-update-banner" class="panel-banner-item"
+ data-l10n-id="appmenuitem-update-banner"
+ data-l10n-attrs="label-update-downloading"
label-update-available="&updateAvailable.panelUI.label;"
label-update-manual="&updateManual.panelUI.label;"
label-update-unsupported="&updateUnsupported.panelUI.label;"
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index 1f6ed5caf839..a81be30f3ec7 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -65,6 +65,7 @@ const PanelUI = {
Services.obs.addObserver(this, "fullscreen-nav-toolbox");
Services.obs.addObserver(this, "appMenu-notifications");
+ Services.obs.addObserver(this, "show-update-progress");
XPCOMUtils.defineLazyPreferenceGetter(
this,
@@ -182,6 +183,7 @@ const PanelUI = {
Services.obs.removeObserver(this, "fullscreen-nav-toolbox");
Services.obs.removeObserver(this, "appMenu-notifications");
+ Services.obs.removeObserver(this, "show-update-progress");
window.removeEventListener("MozDOMFullscreen:Entered", this);
window.removeEventListener("MozDOMFullscreen:Exited", this);
@@ -271,6 +273,9 @@ const PanelUI = {
this._notifications = AppMenuNotifications.notifications;
this._updateNotifications(true);
break;
+ case "show-update-progress":
+ openAboutDialog();
+ break;
}
},
diff --git a/browser/components/customizableui/test/browser_panelUINotifications.js b/browser/components/customizableui/test/browser_panelUINotifications.js
index 39ae5435c453..cab471bc946f 100644
--- a/browser/components/customizableui/test/browser_panelUINotifications.js
+++ b/browser/components/customizableui/test/browser_panelUINotifications.js
@@ -156,6 +156,68 @@ add_task(async function testSecondaryActionWorkflow() {
});
});
+/**
+ * This tests that the PanelUI update downloading badge and banner
+ * notification are correctly displayed and that clicking the banner
+ * item calls the main action.
+ */
+add_task(async function testDownloadingBadge() {
+ let options = {
+ gBrowser: window.gBrowser,
+ url: "about:blank",
+ };
+
+ await BrowserTestUtils.withNewTab(options, async function(browser) {
+ let mainActionCalled = false;
+ let mainAction = {
+ callback: () => {
+ mainActionCalled = true;
+ },
+ };
+ // The downloading notification is always displayed in a dismissed state.
+ AppMenuNotifications.showNotification(
+ "update-downloading",
+ mainAction,
+ undefined,
+ { dismissed: true }
+ );
+ is(PanelUI.notificationPanel.state, "closed", "doorhanger is closed.");
+
+ is(
+ PanelUI.menuButton.getAttribute("badge-status"),
+ "update-downloading",
+ "Downloading badge is displaying on PanelUI button."
+ );
+
+ await gCUITestUtils.openMainMenu();
+ isnot(
+ PanelUI.menuButton.getAttribute("badge-status"),
+ "update-downloading",
+ "Downloading badge is hidden on PanelUI button."
+ );
+ let menuItem = PanelUI.mainView.querySelector(".panel-banner-item");
+ is(
+ menuItem.label,
+ menuItem.getAttribute("label-update-downloading"),
+ "Showing correct label (downloading)"
+ );
+ is(menuItem.hidden, false, "update-downloading menu item is showing.");
+
+ await gCUITestUtils.hideMainMenu();
+ is(
+ PanelUI.menuButton.getAttribute("badge-status"),
+ "update-downloading",
+ "Downloading badge is shown on PanelUI button."
+ );
+
+ await gCUITestUtils.openMainMenu();
+ menuItem.click();
+ ok(mainActionCalled, "Main action callback was called");
+
+ AppMenuNotifications.removeNotification(/.*/);
+ });
+});
+
/**
* We want to ensure a few things with this:
* - Adding a doorhanger will make a badge disappear
diff --git a/browser/locales/en-US/browser/appmenu.ftl b/browser/locales/en-US/browser/appmenu.ftl
index 12fd2bec3e6a..3026b2597287 100644
--- a/browser/locales/en-US/browser/appmenu.ftl
+++ b/browser/locales/en-US/browser/appmenu.ftl
@@ -4,6 +4,8 @@
## App Menu
+appmenuitem-update-banner =
+ .label-update-downloading = Downloading { -brand-shorter-name } update
appmenuitem-protection-dashboard-title = Protections Dashboard
appmenuitem-customize-mode =
.label = Customize…
diff --git a/browser/themes/shared/customizableui/panelUI.inc.css b/browser/themes/shared/customizableui/panelUI.inc.css
index 8a24f03c0ad6..c991daee0759 100644
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -67,6 +67,7 @@
}
#PanelUI-menu-button[badge-status="update-available"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#PanelUI-menu-button[badge-status="update-downloading"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-manual"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-restart"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-unsupported"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
@@ -80,6 +81,7 @@
}
#PanelUI-menu-button[badge-status="update-available"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
+#PanelUI-menu-button[badge-status="update-downloading"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-manual"] > .toolbarbutton-badge-stack > .toolbarbutton-badge,
#PanelUI-menu-button[badge-status="update-restart"] > .toolbarbutton-badge-stack > .toolbarbutton-badge {
background: #74BF43 url(chrome://browser/skin/update-badge.svg) no-repeat center;
@@ -90,6 +92,7 @@
}
.panel-banner-item[notificationid="update-available"]::after,
+.panel-banner-item[notificationid="update-downloading"]::after,
.panel-banner-item[notificationid="update-manual"]::after,
.panel-banner-item[notificationid="update-restart"]::after {
background: #74BF43 url(chrome://browser/skin/update-badge.svg) no-repeat center;
diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css
index 74d861200f45..f17ddae9dc79 100644
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -401,6 +401,7 @@ html|*#webRTC-previewVideo {
/* UPDATE */
.popup-notification-icon[popupid="update-available"],
+.popup-notification-icon[popupid="update-downloading"],
.popup-notification-icon[popupid="update-manual"],
.popup-notification-icon[popupid="update-restart"] {
background: #74BF43 url(chrome://browser/skin/notification-icons/update.svg) no-repeat center;
diff --git a/browser/themes/shared/toolbarbutton-icons.inc.css b/browser/themes/shared/toolbarbutton-icons.inc.css
index 998537e1f57d..9514eb1d5338 100644
--- a/browser/themes/shared/toolbarbutton-icons.inc.css
+++ b/browser/themes/shared/toolbarbutton-icons.inc.css
@@ -290,6 +290,7 @@ toolbar[brighttext] {
}
#PanelUI-menu-button[badge-status="update-available"],
+#PanelUI-menu-button[badge-status="update-downloading"],
#PanelUI-menu-button[badge-status="update-manual"],
#PanelUI-menu-button[badge-status="update-restart"] {
list-style-image: url("chrome://browser/skin/menu-badged.svg");
diff --git a/toolkit/mozapps/update/UpdateListener.jsm b/toolkit/mozapps/update/UpdateListener.jsm
index 17919e914b11..110640628771 100644
--- a/toolkit/mozapps/update/UpdateListener.jsm
+++ b/toolkit/mozapps/update/UpdateListener.jsm
@@ -113,16 +113,18 @@ var UpdateListener = {
mainAction,
beforeShowDoorhanger
) {
+ const addTelemetry = id => {
+ // No telemetry for the "downloading" state.
+ if (type !== "downloading") {
+ Services.telemetry.getHistogramById(id).add(type);
+ }
+ };
let action = {
callback(win, fromDoorhanger) {
if (fromDoorhanger) {
- Services.telemetry
- .getHistogramById("UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER")
- .add(type);
+ addTelemetry("UPDATE_NOTIFICATION_MAIN_ACTION_DOORHANGER");
} else {
- Services.telemetry
- .getHistogramById("UPDATE_NOTIFICATION_MAIN_ACTION_MENU")
- .add(type);
+ addTelemetry("UPDATE_NOTIFICATION_MAIN_ACTION_MENU");
}
mainAction(win);
},
@@ -131,13 +133,10 @@ var UpdateListener = {
let secondaryAction = {
callback() {
- Services.telemetry
- .getHistogramById("UPDATE_NOTIFICATION_DISMISSED")
- .add(type);
+ addTelemetry("UPDATE_NOTIFICATION_DISMISSED");
},
dismiss: true,
};
-
AppMenuNotifications.showNotification(
"update-" + type,
action,
@@ -145,13 +144,9 @@ var UpdateListener = {
{ dismissed, beforeShowDoorhanger }
);
if (dismissed) {
- Services.telemetry
- .getHistogramById("UPDATE_NOTIFICATION_BADGE_SHOWN")
- .add(type);
+ addTelemetry("UPDATE_NOTIFICATION_BADGE_SHOWN");
} else {
- Services.telemetry
- .getHistogramById("UPDATE_NOTIFICATION_SHOWN")
- .add(type);
+ addTelemetry("UPDATE_NOTIFICATION_SHOWN");
}
},
@@ -205,6 +200,15 @@ var UpdateListener = {
}
},
+ showUpdateDownloadingNotification() {
+ this.showUpdateNotification("downloading", true, true, () => {
+ // The user clicked on the "Downloading update" app menu item.
+ // Code in browser/components/customizableui/content/panelUI.js
+ // receives the following notification and opens the about dialog.
+ Services.obs.notifyObservers(null, "show-update-progress");
+ });
+ },
+
handleUpdateError(update, status) {
switch (status) {
case "download-attempt-failed":
@@ -287,6 +291,17 @@ var UpdateListener = {
}
},
+ handleUpdateDownloading(status) {
+ switch (status) {
+ case "downloading":
+ this.showUpdateDownloadingNotification();
+ break;
+ case "idle":
+ this.reset();
+ break;
+ }
+ },
+
observe(subject, topic, status) {
let update = subject && subject.QueryInterface(Ci.nsIUpdate);
@@ -299,6 +314,9 @@ var UpdateListener = {
}
this.handleUpdateAvailable(update, status);
break;
+ case "update-downloading":
+ this.handleUpdateDownloading(status);
+ break;
case "update-staged":
case "update-downloaded":
// An update check has found an update and downloaded / staged the
diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm
index 0cc26f683078..8dd397f628f5 100644
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -59,6 +59,7 @@ const PREF_APP_UPDATE_ELEVATE_ATTEMPTS = "app.update.elevate.attempts";
const PREF_APP_UPDATE_ELEVATE_MAXATTEMPTS = "app.update.elevate.maxAttempts";
const PREF_APP_UPDATE_LOG = "app.update.log";
const PREF_APP_UPDATE_LOG_FILE = "app.update.log.file";
+const PREF_APP_UPDATE_NOTIFYDURINGDOWNLOAD = "app.update.notifyDuringDownload";
const PREF_APP_UPDATE_PROMPTWAITTIME = "app.update.promptWaitTime";
const PREF_APP_UPDATE_SERVICE_ENABLED = "app.update.service.enabled";
const PREF_APP_UPDATE_SERVICE_ERRORS = "app.update.service.errors";
@@ -4446,6 +4447,24 @@ Downloader.prototype = {
return selectedPatch;
},
+ /**
+ * Whether or not the user wants to be notified that an update is being
+ * downloaded.
+ */
+ get _notifyDuringDownload() {
+ return Services.prefs.getBoolPref(
+ PREF_APP_UPDATE_NOTIFYDURINGDOWNLOAD,
+ false
+ );
+ },
+
+ _notifyDownloadStatusObservers: function Downloader_notifyDownloadStatusObservers() {
+ if (this._notifyDuringDownload) {
+ let status = this.updateService.isDownloading ? "downloading" : "idle";
+ Services.obs.notifyObservers(this._update, "update-downloading", status);
+ }
+ },
+
/**
* Whether or not we are currently downloading something.
*/
@@ -4687,6 +4706,9 @@ Downloader.prototype = {
.getService(Ci.nsIUpdateManager)
.saveUpdates();
}
+
+ this._notifyDownloadStatusObservers();
+
return STATE_DOWNLOADING;
},
@@ -5193,6 +5215,11 @@ Downloader.prototype = {
this._request = null;
+ // This notification must happen after _request is set to null so that
+ // the correct this.updateService.isDownloading value is available in
+ // _notifyDownloadStatusObservers().
+ this._notifyDownloadStatusObservers();
+
if (state == STATE_DOWNLOAD_FAILED) {
var allFailed = true;
// If we haven't already, attempt to download without BITS
diff --git a/toolkit/mozapps/update/tests/browser/browser.bits.ini b/toolkit/mozapps/update/tests/browser/browser.bits.ini
index 9355e22550f2..5a44d1e0f6bf 100644
--- a/toolkit/mozapps/update/tests/browser/browser.bits.ini
+++ b/toolkit/mozapps/update/tests/browser/browser.bits.ini
@@ -21,6 +21,7 @@ prefs =
# About Dialog Application Update Tests
[browser_aboutDialog_bc_downloading.js]
[browser_aboutDialog_bc_downloading_staging.js]
+[browser_aboutDialog_bc_downloading_notify.js]
[browser_aboutDialog_bc_downloaded.js]
[browser_aboutDialog_bc_downloaded_staging.js]
[browser_aboutDialog_bc_downloaded_staged.js]
diff --git a/toolkit/mozapps/update/tests/browser/browser.ini b/toolkit/mozapps/update/tests/browser/browser.ini
index 5ce14c9c2633..c4f3fd055bbf 100644
--- a/toolkit/mozapps/update/tests/browser/browser.ini
+++ b/toolkit/mozapps/update/tests/browser/browser.ini
@@ -15,6 +15,7 @@ prefs =
# About Dialog Application Update Tests
[browser_aboutDialog_bc_downloading.js]
[browser_aboutDialog_bc_downloading_staging.js]
+[browser_aboutDialog_bc_downloading_notify.js]
[browser_aboutDialog_bc_downloaded.js]
[browser_aboutDialog_bc_downloaded_staging.js]
[browser_aboutDialog_bc_downloaded_stagingFailure.js]
diff --git a/toolkit/mozapps/update/tests/browser/browser.legacy.bits.ini b/toolkit/mozapps/update/tests/browser/browser.legacy.bits.ini
index 7bf1f706a5b7..555eaea82cd6 100644
--- a/toolkit/mozapps/update/tests/browser/browser.legacy.bits.ini
+++ b/toolkit/mozapps/update/tests/browser/browser.legacy.bits.ini
@@ -20,6 +20,7 @@ prefs =
# About Dialog Application Update Tests
[browser_aboutDialog_bc_downloading.js]
[browser_aboutDialog_bc_downloading_staging.js]
+[browser_aboutDialog_bc_downloading_notify.js]
[browser_aboutDialog_bc_downloaded.js]
[browser_aboutDialog_bc_downloaded_staging.js]
[browser_aboutDialog_bc_downloaded_staged.js]
diff --git a/toolkit/mozapps/update/tests/browser/browser.legacy.ini b/toolkit/mozapps/update/tests/browser/browser.legacy.ini
index 0cf61d64f42e..e3f681f53236 100644
--- a/toolkit/mozapps/update/tests/browser/browser.legacy.ini
+++ b/toolkit/mozapps/update/tests/browser/browser.legacy.ini
@@ -14,6 +14,7 @@ prefs =
# About Dialog Application Update Tests
[browser_aboutDialog_bc_downloading.js]
[browser_aboutDialog_bc_downloading_staging.js]
+[browser_aboutDialog_bc_downloading_notify.js]
[browser_aboutDialog_bc_downloaded.js]
[browser_aboutDialog_bc_downloaded_staging.js]
[browser_aboutDialog_bc_downloaded_stagingFailure.js]
diff --git a/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading.js b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading.js
index 776d637512ad..67ddd65205da 100644
--- a/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading.js
+++ b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading.js
@@ -6,6 +6,10 @@
// Test for About Dialog background check for updates
// with the About Dialog opened during downloading.
add_task(async function aboutDialog_backgroundCheck_downloading() {
+ await SpecialPowers.pushPrefEnv({
+ set: [[PREF_APP_UPDATE_NOTIFYDURINGDOWNLOAD, false]],
+ });
+
let downloadInfo = [];
if (Services.prefs.getBoolPref(PREF_APP_UPDATE_BITS_ENABLED)) {
downloadInfo[0] = { patchType: "partial", bitsResult: "0" };
@@ -21,6 +25,17 @@ add_task(async function aboutDialog_backgroundCheck_downloading() {
waitForUpdateState: STATE_DOWNLOADING,
};
await runAboutDialogUpdateTest(params, [
+ async function aboutDialog_downloading() {
+ is(
+ PanelUI.notificationPanel.state,
+ "closed",
+ "The window's doorhanger is closed."
+ );
+ ok(
+ !PanelUI.menuButton.hasAttribute("badge-status"),
+ "The window does not have a badge."
+ );
+ },
{
panelId: "downloading",
checkActiveUpdate: { state: STATE_DOWNLOADING },
@@ -33,4 +48,6 @@ add_task(async function aboutDialog_backgroundCheck_downloading() {
continueFile: null,
},
]);
+
+ await SpecialPowers.popPrefEnv();
});
diff --git a/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading_notify.js b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading_notify.js
new file mode 100644
index 000000000000..cf427b149a54
--- /dev/null
+++ b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_bc_downloading_notify.js
@@ -0,0 +1,58 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test for About Dialog background check for updates with the
+// "notify during download" feature turned on.
+add_task(async function aboutDialog_backgroundCheck_downloading_notify() {
+ await SpecialPowers.pushPrefEnv({
+ set: [[PREF_APP_UPDATE_NOTIFYDURINGDOWNLOAD, true]],
+ });
+
+ let downloadInfo = [];
+ if (Services.prefs.getBoolPref(PREF_APP_UPDATE_BITS_ENABLED)) {
+ downloadInfo[0] = { patchType: "partial", bitsResult: "0" };
+ } else {
+ downloadInfo[0] = { patchType: "partial", internalResult: "0" };
+ }
+
+ // Since the partial should be successful specify an invalid size for the
+ // complete update.
+ let params = {
+ queryString: "&useSlowDownloadMar=1&invalidCompleteSize=1",
+ backgroundUpdate: true,
+ waitForUpdateState: STATE_DOWNLOADING,
+ };
+ await runAboutDialogUpdateTest(params, [
+ async function aboutDialog_downloading_notification() {
+ is(
+ PanelUI.notificationPanel.state,
+ "closed",
+ "The window's doorhanger is closed."
+ );
+ ok(
+ PanelUI.menuButton.hasAttribute("badge-status"),
+ "The window has a badge."
+ );
+ is(
+ PanelUI.menuButton.getAttribute("badge-status"),
+ "update-downloading",
+ "The downloading badge is showing for the background window"
+ );
+ },
+ {
+ panelId: "downloading",
+ checkActiveUpdate: { state: STATE_DOWNLOADING },
+ continueFile: CONTINUE_DOWNLOAD,
+ downloadInfo,
+ },
+ {
+ panelId: "apply",
+ checkActiveUpdate: { state: STATE_PENDING },
+ continueFile: null,
+ },
+ ]);
+
+ await SpecialPowers.popPrefEnv();
+});
diff --git a/toolkit/mozapps/update/tests/data/shared.js b/toolkit/mozapps/update/tests/data/shared.js
index 51d9de99d7f2..5106aa5fc7a2 100644
--- a/toolkit/mozapps/update/tests/data/shared.js
+++ b/toolkit/mozapps/update/tests/data/shared.js
@@ -40,6 +40,7 @@ const PREF_APP_UPDATE_INTERVAL = "app.update.interval";
const PREF_APP_UPDATE_LASTUPDATETIME =
"app.update.lastUpdateTime.background-update-timer";
const PREF_APP_UPDATE_LOG = "app.update.log";
+const PREF_APP_UPDATE_NOTIFYDURINGDOWNLOAD = "app.update.notifyDuringDownload";
const PREF_APP_UPDATE_PROMPTWAITTIME = "app.update.promptWaitTime";
const PREF_APP_UPDATE_RETRYTIMEOUT = "app.update.socket.retryTimeout";
const PREF_APP_UPDATE_SERVICE_ENABLED = "app.update.service.enabled";
1
0

[tor-browser/tor-browser-78.10.0esr-10.5-1] Bug 1642754 - Update prompts should not depend on how update was initiated r=bytesized
by sysrqb@torproject.org 14 Apr '21
by sysrqb@torproject.org 14 Apr '21
14 Apr '21
commit 60100906a737b48fcee41d323a912ae39c56724f
Author: Mark Smith <mcs(a)pearlcrescent.com>
Date: Wed Jun 17 19:24:09 2020 +0000
Bug 1642754 - Update prompts should not depend on how update was initiated r=bytesized
Show update badge and doorhanger when entering the "pending"
state for foreground updates.
Differential Revision: https://phabricator.services.mozilla.com/D79903
---
toolkit/mozapps/update/UpdateService.jsm | 10 ++--------
.../browser/browser_aboutDialog_fc_downloadAuto.js | 18 +++++++++++++++++-
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm
index 8dd397f628f5..1dc86a073646 100644
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -5002,8 +5002,6 @@ Downloader.prototype = {
}
}
- // XXX ehsan shouldShowPrompt should always be false here.
- // But what happens when there is already a UI showing?
var state = this._patch.state;
var shouldShowPrompt = false;
var shouldRegisterOnlineObserver = false;
@@ -5044,9 +5042,7 @@ Downloader.prototype = {
} else {
state = STATE_PENDING;
}
- if (this.background) {
- shouldShowPrompt = !getCanStageUpdates();
- }
+ shouldShowPrompt = !getCanStageUpdates();
AUSTLMY.pingDownloadCode(this.isCompleteUpdate, AUSTLMY.DWNLD_SUCCESS);
// Tell the updater.exe we're ready to apply.
@@ -5329,9 +5325,7 @@ Downloader.prototype = {
LOG(
"Downloader:onStopRequest - failed to stage update. Exception: " + e
);
- if (this.background) {
- shouldShowPrompt = true;
- }
+ shouldShowPrompt = true;
}
}
}
diff --git a/toolkit/mozapps/update/tests/browser/browser_aboutDialog_fc_downloadAuto.js b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_fc_downloadAuto.js
index 6a8835251dec..be65ce8ddef1 100644
--- a/toolkit/mozapps/update/tests/browser/browser_aboutDialog_fc_downloadAuto.js
+++ b/toolkit/mozapps/update/tests/browser/browser_aboutDialog_fc_downloadAuto.js
@@ -15,7 +15,7 @@ add_task(async function aboutDialog_foregroundCheck_downloadAuto() {
// Since the partial should be successful specify an invalid size for the
// complete update.
- let params = { queryString: "&invalidCompleteSize=1" };
+ let params = { queryString: "&invalidCompleteSize=1&promptWaitTime=0" };
await runAboutDialogUpdateTest(params, [
{
panelId: "checkingForUpdates",
@@ -28,6 +28,22 @@ add_task(async function aboutDialog_foregroundCheck_downloadAuto() {
continueFile: CONTINUE_DOWNLOAD,
downloadInfo,
},
+ async function aboutDialog_restart_notification() {
+ is(
+ PanelUI.notificationPanel.state,
+ "closed",
+ "The window's doorhanger is closed."
+ );
+ ok(
+ PanelUI.menuButton.hasAttribute("badge-status"),
+ "The window has a badge."
+ );
+ is(
+ PanelUI.menuButton.getAttribute("badge-status"),
+ "update-restart",
+ "The restart badge is showing for the background window"
+ );
+ },
{
panelId: "apply",
checkActiveUpdate: { state: STATE_PENDING },
1
0

10 Apr '21
commit b9b168426dfe0c4da8c23f120b6cd2eae30ebe0a
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Sat Apr 10 16:11:15 2021 +0000
Update Fenix's allowed_addons
---
projects/tor-browser/allowed_addons.json | 372 +++++++++++++++----------------
1 file changed, 186 insertions(+), 186 deletions(-)
diff --git a/projects/tor-browser/allowed_addons.json b/projects/tor-browser/allowed_addons.json
index 448ad35..ba8ad9d 100644
--- a/projects/tor-browser/allowed_addons.json
+++ b/projects/tor-browser/allowed_addons.json
@@ -17,7 +17,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/13/13299/13299734.png?mo…"
}
],
- "average_daily_users": 627861,
+ "average_daily_users": 628014,
"categories": {
"android": [
"experimental",
@@ -31,7 +31,7 @@
"contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…",
"created": "2017-09-19T07:03:00Z",
"current_version": {
- "id": 5186492,
+ "id": 5210981,
"compatibility": {
"firefox": {
"min": "54.0",
@@ -42,19 +42,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/51864…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/52109…",
"files": [
{
- "id": 3730852,
- "created": "2021-02-22T13:24:38Z",
- "hash": "sha256:5d6d9059ec8d9c59fa7ecc3c421e1146925d978e9197260124797a6309c9b789",
+ "id": 3755341,
+ "created": "2021-04-05T09:05:03Z",
+ "hash": "sha256:43da8e70e4d3d2ebde549f5a8dea54b59c8793d32049cdaf8868f3da02e94faa",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 521677,
+ "size": 533559,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/3730852/dark_reader-4.9.2…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3755341/dark_reader-4.9.3…",
"permissions": [
"storage",
"tabs",
@@ -97,10 +97,10 @@
"url": "http://www.opensource.org/licenses/mit-license.php"
},
"release_notes": {
- "en-US": "- Users' fixes for websites."
+ "en-US": "- Fixed performance bottleneck for websites with CSS variables.\n- Users' fixes for websites."
},
"reviewed": null,
- "version": "4.9.29"
+ "version": "4.9.31"
},
"default_locale": "en-US",
"description": {
@@ -164,7 +164,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-02-22T15:00:21Z",
+ "last_updated": "2021-04-05T10:12:36Z",
"name": {
"ar": "Dark Reader",
"bn": "Dark Reader",
@@ -205,12 +205,12 @@
2400,
1500
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201069.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201069.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201069.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201069.jpg?mo…"
},
{
"id": 201070,
@@ -221,12 +221,12 @@
2400,
1500
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201070.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201070.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201070.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201070.jpg?mo…"
}
],
"promoted": {
@@ -237,10 +237,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.564,
- "bayesian_average": 4.562562265032526,
- "count": 3445,
- "text_count": 1134
+ "average": 4.5623,
+ "bayesian_average": 4.560887109180352,
+ "count": 3516,
+ "text_count": 1160
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/",
"requires_payment": false,
@@ -337,7 +337,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/",
- "weekly_downloads": 24316
+ "weekly_downloads": 24174
},
"notes": null
},
@@ -353,7 +353,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 766465,
+ "average_daily_users": 755615,
"categories": {
"firefox": [
"privacy-security"
@@ -467,12 +467,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/214/214771.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/214/214771.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/214/214771.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/214/214771.jpg?mo…"
}
],
"promoted": {
@@ -483,10 +483,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.667,
- "bayesian_average": 4.6644889312952404,
- "count": 2024,
- "text_count": 406
+ "average": 4.6668,
+ "bayesian_average": 4.664301401571164,
+ "count": 2041,
+ "text_count": 399
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/reviews/",
"requires_payment": false,
@@ -520,7 +520,7 @@
"type": "extension",
"url": "https://www.eff.org/https-everywhere",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/versions/",
- "weekly_downloads": 21984
+ "weekly_downloads": 20714
},
"notes": null
},
@@ -536,7 +536,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/6/6937/6937656.png?modif…"
}
],
- "average_daily_users": 215403,
+ "average_daily_users": 212322,
"categories": {
"android": [
"security-privacy"
@@ -717,12 +717,12 @@
700,
521
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/137/137406.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/137/137406.png?modi…",
"thumbnail_size": [
- 640,
- 476
+ 533,
+ 397
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/137/137406.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/137/137406.jpg?mo…"
},
{
"id": 205808,
@@ -733,12 +733,12 @@
700,
521
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/205/205808.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/205/205808.png?modi…",
"thumbnail_size": [
- 640,
- 476
+ 533,
+ 397
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/205/205808.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/205/205808.jpg?mo…"
}
],
"promoted": {
@@ -749,10 +749,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.8063,
- "bayesian_average": 4.801440211406749,
- "count": 1084,
- "text_count": 212
+ "average": 4.8046,
+ "bayesian_average": 4.799789454101996,
+ "count": 1095,
+ "text_count": 213
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/",
"requires_payment": false,
@@ -848,7 +848,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/",
- "weekly_downloads": 5329
+ "weekly_downloads": 4959
},
"notes": null
},
@@ -864,7 +864,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 1035509,
+ "average_daily_users": 1007827,
"categories": {
"android": [
"security-privacy"
@@ -1376,12 +1376,12 @@
1920,
1080
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/225/225184.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/225/225184.png?modi…",
"thumbnail_size": [
- 640,
- 360
+ 533,
+ 300
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/225/225184.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/225/225184.jpg?mo…"
},
{
"id": 171793,
@@ -1392,12 +1392,12 @@
700,
394
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/171/171793.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/171/171793.png?modi…",
"thumbnail_size": [
- 640,
- 360
+ 533,
+ 300
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/171/171793.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/171/171793.jpg?mo…"
}
],
"promoted": {
@@ -1408,10 +1408,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7898,
- "bayesian_average": 4.786824489367908,
- "count": 1760,
- "text_count": 362
+ "average": 4.7887,
+ "bayesian_average": 4.785762842030909,
+ "count": 1789,
+ "text_count": 364
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/",
"requires_payment": false,
@@ -1431,7 +1431,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/",
- "weekly_downloads": 20986
+ "weekly_downloads": 19145
},
"notes": null
},
@@ -1447,7 +1447,7 @@
"picture_url": null
}
],
- "average_daily_users": 5159942,
+ "average_daily_users": 5097528,
"categories": {
"android": [
"security-privacy"
@@ -1631,7 +1631,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-03-14T13:25:14Z",
+ "last_updated": "2021-04-06T14:25:16Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1680,12 +1680,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238546.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238546.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238546.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238546.jpg?mo…"
},
{
"id": 238548,
@@ -1696,12 +1696,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238548.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238548.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238548.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238548.jpg?mo…"
},
{
"id": 238547,
@@ -1712,12 +1712,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238547.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238547.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238547.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238547.jpg?mo…"
},
{
"id": 238549,
@@ -1728,12 +1728,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238549.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238549.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238549.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238549.jpg?mo…"
},
{
"id": 238552,
@@ -1744,12 +1744,12 @@
970,
1800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238552.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238552.png?modi…",
"thumbnail_size": [
- 259,
- 480
+ 216,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238552.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238552.jpg?mo…"
},
{
"id": 230370,
@@ -1760,12 +1760,12 @@
800,
600
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230370.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230370.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230370.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230370.jpg?mo…"
}
],
"promoted": {
@@ -1776,10 +1776,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7661,
- "bayesian_average": 4.765643622144223,
- "count": 11416,
- "text_count": 3157
+ "average": 4.7664,
+ "bayesian_average": 4.765948302653514,
+ "count": 11577,
+ "text_count": 3191
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/",
"requires_payment": false,
@@ -1834,7 +1834,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/",
- "weekly_downloads": 121739
+ "weekly_downloads": 119451
},
"notes": null
},
@@ -1850,7 +1850,7 @@
"picture_url": null
}
],
- "average_daily_users": 73031,
+ "average_daily_users": 72317,
"categories": {
"android": [
"photos-media"
@@ -1963,10 +1963,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5177,
- "bayesian_average": 4.5127447154833,
- "count": 991,
- "text_count": 375
+ "average": 4.5186,
+ "bayesian_average": 4.513657926911401,
+ "count": 993,
+ "text_count": 376
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…",
"requires_payment": false,
@@ -1992,7 +1992,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…",
- "weekly_downloads": 39
+ "weekly_downloads": 27
},
"notes": null
},
@@ -2008,7 +2008,7 @@
"picture_url": null
}
],
- "average_daily_users": 98948,
+ "average_daily_users": 95806,
"categories": {
"android": [
"experimental",
@@ -2131,12 +2131,12 @@
640,
400
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201244.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201244.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201244.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201244.jpg?mo…"
}
],
"promoted": {
@@ -2147,10 +2147,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4824,
- "bayesian_average": 4.466928927858935,
- "count": 313,
- "text_count": 87
+ "average": 4.489,
+ "bayesian_average": 4.4736798657345735,
+ "count": 317,
+ "text_count": 88
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/reviews/",
"requires_payment": false,
@@ -2176,7 +2176,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/",
- "weekly_downloads": 1501
+ "weekly_downloads": 1444
},
"notes": null
},
@@ -2192,7 +2192,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/12/12929/12929064.png?mo…"
}
],
- "average_daily_users": 183474,
+ "average_daily_users": 179104,
"categories": {
"android": [
"photos-media",
@@ -2203,7 +2203,7 @@
"search-tools"
]
},
- "contributions_url": "https://www.paypal.me/ArminSebastian/5?utm_content=product-page-contribute&…",
+ "contributions_url": "https://www.paypal.com/donate?hosted_button_id=GLL4UNSNU6SQN&utm_content=pr…",
"created": "2017-06-17T15:23:33Z",
"current_version": {
"id": 5177612,
@@ -2314,12 +2314,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230000.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230000.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230000.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230000.jpg?mo…"
},
{
"id": 230001,
@@ -2328,12 +2328,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230001.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230001.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230001.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230001.jpg?mo…"
},
{
"id": 230002,
@@ -2342,12 +2342,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230002.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230002.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230002.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230002.jpg?mo…"
},
{
"id": 230003,
@@ -2356,12 +2356,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230003.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230003.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230003.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230003.jpg?mo…"
},
{
"id": 230004,
@@ -2370,12 +2370,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230004.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230004.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230004.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230004.jpg?mo…"
},
{
"id": 230005,
@@ -2384,12 +2384,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230005.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230005.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230005.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230005.jpg?mo…"
},
{
"id": 230006,
@@ -2398,12 +2398,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230006.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230006.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230006.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230006.jpg?mo…"
}
],
"promoted": {
@@ -2414,10 +2414,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6585,
- "bayesian_average": 4.652552525120711,
- "count": 852,
- "text_count": 170
+ "average": 4.6545,
+ "bayesian_average": 4.6486879600831905,
+ "count": 874,
+ "text_count": 172
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/",
"requires_payment": false,
@@ -2453,7 +2453,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/",
- "weekly_downloads": 3279
+ "weekly_downloads": 3636
},
"notes": null
},
@@ -2476,7 +2476,7 @@
"picture_url": null
}
],
- "average_daily_users": 45497,
+ "average_daily_users": 44435,
"categories": {
"android": [
"other"
@@ -2758,10 +2758,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4501,
- "bayesian_average": 4.4452079389912384,
- "count": 982,
- "text_count": 265
+ "average": 4.4562,
+ "bayesian_average": 4.451337982622313,
+ "count": 993,
+ "text_count": 268
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/",
"requires_payment": false,
@@ -2781,7 +2781,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/",
- "weekly_downloads": 63
+ "weekly_downloads": 55
},
"notes": null
},
@@ -2797,7 +2797,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/0/0/143.png?modified=150…"
}
],
- "average_daily_users": 404727,
+ "average_daily_users": 392735,
"categories": {
"android": [
"performance",
@@ -2811,7 +2811,7 @@
"contributions_url": "https://www.paypal.me/NoScript?utm_content=product-page-contribute&utm_medi…",
"created": "2005-05-13T10:51:32Z",
"current_version": {
- "id": 5183628,
+ "id": 5206025,
"compatibility": {
"firefox": {
"min": "59.0",
@@ -2822,19 +2822,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5183628",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5206025",
"files": [
{
- "id": 3727988,
- "created": "2021-02-17T06:44:03Z",
- "hash": "sha256:eafc5f5be40d33a34d757940b5391455dad166921c880ee67daab056078d51ae",
+ "id": 3750385,
+ "created": "2021-03-26T19:23:21Z",
+ "hash": "sha256:278ee526d7c3ce5236c1a04aa5b6605c81b82399b846e43cdf6f93f11fef1ec9",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 603728,
+ "size": 612139,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/3727988/noscript_security…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3750385/noscript_security…",
"permissions": [
"contextMenus",
"storage",
@@ -2881,10 +2881,10 @@
"url": "http://www.gnu.org/licenses/gpl-2.0.html"
},
"release_notes": {
- "en-US": "v 11.2.3\n============================================================\nx [L10n] Purged non-inclusive terms from obsolete messages\nx Added red halo feedback in CUSTOM preset for noscript\n element capability\nx Fixed missing red halo feedback in CUSTOM preset for\n inline scripts and other capabilities sometimes\nx Fixed race condition causing noscript elements not to be\n rendered sometimes"
+ "en-US": "v 11.2.4\n============================================================\nx CSS resources prefetching as a mitigation against CSS PP0\n (<a href=\"https://outgoing.prod.mozaws.net/v1/4c9c509b2dcb75bd1907cb1eacded56e1b55224…" rel=\"nofollow\">https://github.com/Yossioren/pp0</a>)\nx [L10n] Updated br, de, el, es, fr, he, is, nl, pl, pt_BR,\n ru, sq, tr, zh_CN\nx [nscl] Inteception of webgl context creation in\n OffscreenCanvas too\n x Fixed configuration upgrades not applied on manual updates\n (thanks Nan for reporting)\nx Mitigation for misbehaving pages repeating failed requests\n in a tight loop\nx [UI] More understandable label for the cascading\n restrictions option\nx [nscl] More refactoring out in NoScript Commons Library\nx [nscl] patchWindow improvements"
},
"reviewed": null,
- "version": "11.2.3"
+ "version": "11.2.4"
},
"default_locale": "en-US",
"description": {
@@ -2934,7 +2934,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-03-16T00:25:13Z",
+ "last_updated": "2021-04-01T22:30:12Z",
"name": {
"de": "NoScript",
"el": "NoScript",
@@ -2958,12 +2958,12 @@
291,
244
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/0/846.png?modified=…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/0/846.png?modified=…",
"thumbnail_size": [
291,
244
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/0/846.png?modifie…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/0/846.jpg?modifie…"
},
{
"id": 1060,
@@ -2974,12 +2974,12 @@
423,
447
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1060.png?modified…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1060.png?modified…",
"thumbnail_size": [
- 423,
- 447
+ 379,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1060.png?modifi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1060.jpg?modifi…"
},
{
"id": 1062,
@@ -2990,12 +2990,12 @@
457,
428
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1062.png?modified…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1062.png?modified…",
"thumbnail_size": [
- 457,
- 428
+ 427,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1062.png?modifi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1062.jpg?modifi…"
},
{
"id": 52395,
@@ -3006,12 +3006,12 @@
504,
385
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/52/52395.png?modifi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/52/52395.png?modifi…",
"thumbnail_size": [
504,
385
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/52/52395.png?modi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/52/52395.jpg?modi…"
}
],
"promoted": {
@@ -3022,10 +3022,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.3579,
- "bayesian_average": 4.355218608658197,
- "count": 1749,
- "text_count": 718
+ "average": 4.363,
+ "bayesian_average": 4.360331882290794,
+ "count": 1766,
+ "text_count": 719
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/",
"requires_payment": false,
@@ -3082,7 +3082,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/",
- "weekly_downloads": 10017
+ "weekly_downloads": 9272
},
"notes": null
},
@@ -3098,7 +3098,7 @@
"picture_url": null
}
],
- "average_daily_users": 134503,
+ "average_daily_users": 130557,
"categories": {
"android": [
"performance",
@@ -3215,12 +3215,12 @@
256,
256
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/104/104784.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/104/104784.png?modi…",
"thumbnail_size": [
256,
256
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/104/104784.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/104/104784.jpg?mo…"
}
],
"promoted": {
@@ -3231,10 +3231,10 @@
"category": "recommended"
},
"ratings": {
- "average": 3.9134,
- "bayesian_average": 3.9089901371236873,
- "count": 935,
- "text_count": 336
+ "average": 3.9211,
+ "bayesian_average": 3.916735742485764,
+ "count": 950,
+ "text_count": 341
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…",
"requires_payment": false,
@@ -3273,7 +3273,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…",
- "weekly_downloads": 1800
+ "weekly_downloads": 1582
},
"notes": null
}
1
0

[tor-browser-build/master] Bug 40273: Add libdatetime-perl to the list of dependencies
by gk@torproject.org 09 Apr '21
by gk@torproject.org 09 Apr '21
09 Apr '21
commit 60ce4daf57e76447f848c1fc460036ea1b895602
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Apr 9 17:58:05 2021 +0200
Bug 40273: Add libdatetime-perl to the list of dependencies
---
README | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README b/README
index 8ebccf6..1582743 100644
--- a/README
+++ b/README
@@ -30,10 +30,11 @@ You also need a few perl modules installed:
- Digest::SHA
- Data::UUID
- Data::Dump
+- DateTime
If you are running Debian or Ubuntu, you can install them with:
-# apt-get install libyaml-libyaml-perl libtemplate-perl \
+# apt-get install libyaml-libyaml-perl libtemplate-perl libdatetime-perl \
libio-handle-util-perl libio-all-perl \
libio-captureoutput-perl libjson-perl libpath-tiny-perl \
libstring-shellquote-perl libsort-versions-perl \
1
0

[tor-browser-build/master] Merge remote-tracking branch 'gitlab/merge-requests/261'
by gk@torproject.org 09 Apr '21
by gk@torproject.org 09 Apr '21
09 Apr '21
commit 8506181dd6ad508a0cbdd3836f4da640329adee2
Merge: 84363aa 60ce4da
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Apr 9 19:24:55 2021 +0000
Merge remote-tracking branch 'gitlab/merge-requests/261'
README | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
1
0

09 Apr '21
commit 84363aa2e6cc52298f1194d7b6708739b0bf7559
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Fri Apr 9 17:32:50 2021 +0000
Release preparations for 10.5a14
Versions bump and Changelog update
---
projects/firefox/config | 2 +-
projects/geckoview/config | 2 +-
projects/tba-translation/config | 2 +-
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 10 ++++++++++
projects/tor-browser/config | 4 ++--
projects/tor-launcher/config | 2 +-
rbm.conf | 4 ++--
7 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index 19d087a..1abd993 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'firefox-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build1'
+git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build2'
tag_gpg_id: 1
git_url: https://git.torproject.org/tor-browser.git
git_submodule: 1
diff --git a/projects/geckoview/config b/projects/geckoview/config
index f8c97e5..d9bc3f8 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/torbrowser_branch") %]-1-build1'
+git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/torbrowser_branch") %]-1-build2'
tag_gpg_id: 1
git_url: https://git.torproject.org/tor-browser.git
git_submodule: 1
diff --git a/projects/tba-translation/config b/projects/tba-translation/config
index 76c8d3f..73b5369 100644
--- a/projects/tba-translation/config
+++ b/projects/tba-translation/config
@@ -3,5 +3,5 @@ filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
git_url: https://git.torproject.org/translation.git
# We need to bump the commit before releasing but just pointing to a branch
# might cause too much rebuidling of the Firefox part.
-git_hash: 75a88b97c88d73d0d94a962a75703f0c33f8087c
+git_hash: 0480d9e3ada42bfb02a77be59a54682ce2179cff
version: '[% c("abbrev") %]'
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 55b98a3..f1a094a 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,13 @@
+Tor Browser 10.5a14 -- April 11 2021
+ * All Platforms
+ * Update NoScript to 11.2.4
+ * Translations update
+ * Bug 40261: Bump versions of snowflake and webrtc [tor-browser-build]
+ * Bug 40263: Update domain front for Snowflake [tor-browser-build]
+ * Bug 40390: Add Burmese as a new locale [tor-browser]
+ * Windows + OS X + Linux
+ * Bug 40007: Update domain fronting config for Moat [tor-launcher]
+
Tor Browser 10.5a13 -- March 24 2021
* Windows + OS X + Linux
* Update Firefox to 78.9.0esr
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 29eb20f..58cf4bc 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -78,9 +78,9 @@ input_files:
enable: '[% c("var/snowflake") && ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
- - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
+ - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
name: noscript
- sha256sum: eafc5f5be40d33a34d757940b5391455dad166921c880ee67daab056078d51ae
+ sha256sum: 278ee526d7c3ce5236c1a04aa5b6605c81b82399b846e43cdf6f93f11fef1ec9
- filename: 'RelativeLink/start-tor-browser.desktop'
enable: '[% c("var/linux") %]'
- filename: 'RelativeLink/execdesktop'
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index 5413e9a..1ebf3e1 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 0.2.27
+version: 0.2.28
git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/rbm.conf b/rbm.conf
index 8c577a0..8751f7a 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -24,10 +24,10 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '10.5a13'
+ torbrowser_version: '10.5a14'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- - 10.5a11
+ - 10.5a13
project_name: tor-browser
multi_lingual: 0
build_mar: 1
1
0

[tor-browser/tor-browser-87.0-10.5-1] fixup! Bug 10760: Integrate TorButton to TorBrowser core
by sysrqb@torproject.org 09 Apr '21
by sysrqb@torproject.org 09 Apr '21
09 Apr '21
commit 60442d76fa4816d0f53bb92dfb24a0b9a43183ae
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Fri Apr 9 18:11:05 2021 +0000
fixup! Bug 10760: Integrate TorButton to TorBrowser core
---
toolkit/torproject/torbutton | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
index 772716932a2d..5264bddf8bc7 160000
--- a/toolkit/torproject/torbutton
+++ b/toolkit/torproject/torbutton
@@ -1 +1 @@
-Subproject commit 772716932a2dd127793b47e91c10691c631b09f4
+Subproject commit 5264bddf8bc71cbb4e88921b55e7b95fa4522b69
1
0

09 Apr '21
commit c1bc5e42b0629782db6866bd64a6d185f50d36d4
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Apr 9 11:16:42 2021 +0000
Pick up rbm fixes for #33991 and #40019
---
rbm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rbm b/rbm
index e010657..1ebbf5e 160000
--- a/rbm
+++ b/rbm
@@ -1 +1 @@
-Subproject commit e0106571c78a43d1de17f5282b711896750d8462
+Subproject commit 1ebbf5ee34239a58d91e59acd0c2c85e1900aceb
1
0

[rbm/master] Bug 40019: Print build finish date and build time in logs
by gk@torproject.org 09 Apr '21
by gk@torproject.org 09 Apr '21
09 Apr '21
commit 1ebbf5ee34239a58d91e59acd0c2c85e1900aceb
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Apr 8 17:57:47 2021 +0200
Bug 40019: Print build finish date and build time in logs
---
lib/RBM.pm | 35 +++++++++++++++++++++++++++++++----
test/.gitignore | 1 +
test/projects/test-log/config | 9 +++++++++
3 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm
index 1294b4e..a81a290 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -2,6 +2,7 @@ package RBM;
use warnings;
use strict;
+use DateTime;
use Path::Tiny;
use Encode qw(encode);
use Cwd qw(getcwd);
@@ -999,6 +1000,24 @@ sub system_log {
exec(@args);
}
+sub log_start_time {
+ my ($log_file, $script_name) = @_;
+ my $start_time = DateTime->now;
+ my $start_time_txt = $start_time->ymd . ' ' . $start_time->hms;
+ path($log_file)->append_utf8("Starting build (script: $script_name): $start_time_txt\n");
+ return $start_time;
+}
+
+sub log_end_time {
+ my ($log_file, $script_name, $start_time) = @_;
+ my $end_time = DateTime->now;
+ my $end_time_txt = $end_time->ymd . ' ' . $end_time->hms;
+ path($log_file)->append_utf8("Finishing build (script: $script_name): $end_time_txt\n");
+ my $build_time = $end_time - $start_time;
+ my ($bth, $btm, $bts) = $build_time->in_units('hours', 'minutes', 'seconds');
+ path($log_file)->append_utf8("Build time: $bth hours $btm minutes and $bts seconds\n");
+}
+
sub build_run {
my ($project, $script_name, $options) = @_;
my $old_step = $config->{step};
@@ -1076,8 +1095,10 @@ sub build_run {
$build_log = rbm_path($build_log);
unlink $build_log unless $append;
make_path(dirname($build_log));
- my $now = localtime;
- path($build_log)->append_utf8("Starting build: $now\n");
+ if (!-f $build_log) {
+ my $now = localtime;
+ path($build_log)->append_utf8("Opening log file: $now\n");
+ }
print "Build log: $build_log\n";
}
chdir $srcdir;
@@ -1103,7 +1124,10 @@ sub build_run {
exec_name => $s,
exec_as_root => $scripts_root{$s},
});
- if (run_script($project, $cmd, sub { system_log($build_log, @_) }) != 0) {
+ my $start_time = log_start_time($build_log, $s) if $build_log ne '-';
+ my $res = run_script($project, $cmd, sub { system_log($build_log, @_) });
+ log_end_time($build_log, $s, $start_time) if $build_log ne '-';
+ if ($res != 0) {
$error = "Error running $script_name";
if (project_config($project, 'debug', $options)) {
print STDERR $error, "\nOpening debug shell\n";
@@ -1140,7 +1164,10 @@ sub build_run {
foreach my $s (@scripts) {
my $cmd = $scripts_root{$s} ? project_config($project, 'suexec',
{ suexec_cmd => "$srcdir/$s" }) : "$srcdir/$s";
- if (run_script($project, $cmd, sub { system_log($build_log, @_) }) != 0) {
+ my $start_time = log_start_time($build_log, $s) if $build_log ne '-';
+ my $res = run_script($project, $cmd, sub { system_log($build_log, @_) });
+ log_end_time($build_log, $s, $start_time) if $build_log ne '-';
+ if ($res != 0) {
$error = "Error running $script_name";
if (project_config($project, 'debug', $options)) {
print STDERR $error, "\nOpening debug shell\n";
diff --git a/test/.gitignore b/test/.gitignore
index 21bd609..bf1211f 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -1,2 +1,3 @@
out
hg_clones
+logs
diff --git a/test/projects/test-log/config b/test/projects/test-log/config
new file mode 100644
index 0000000..27c40b7
--- /dev/null
+++ b/test/projects/test-log/config
@@ -0,0 +1,9 @@
+# this project can be used for checking that log files are working
+filename: test-log
+build_log: 'logs/test-log.txt'
+build: |
+ #!/bin/sh
+ echo blablabla
+ sleep 2
+ echo ttttttttt
+ echo Z > [% dest_dir %]/[% c('filename') %]
1
0

[tor-browser/tor-browser-78.9.0esr-10.5-1] fixup! Bug 10760: Integrate TorButton to TorBrowser core
by sysrqb@torproject.org 08 Apr '21
by sysrqb@torproject.org 08 Apr '21
08 Apr '21
commit cac7f1f63e9b9713b1701163176e40931ff43dd7
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Apr 8 14:38:26 2021 +0000
fixup! Bug 10760: Integrate TorButton to TorBrowser core
---
toolkit/torproject/torbutton | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
index caffa836a4ec..5264bddf8bc7 160000
--- a/toolkit/torproject/torbutton
+++ b/toolkit/torproject/torbutton
@@ -1 +1 @@
-Subproject commit caffa836a4ec7f1bc7bf61951d954961aa6a9eff
+Subproject commit 5264bddf8bc71cbb4e88921b55e7b95fa4522b69
1
0

[tor-browser-build/master] Bug 40268: Add Burmese (my) as a locale
by boklm@torproject.org 08 Apr '21
by boklm@torproject.org 08 Apr '21
08 Apr '21
commit d1caec896fbe4d0389805280735ff03b121ebdd1
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Apr 7 15:35:07 2021 +0000
Bug 40268: Add Burmese (my) as a locale
---
rbm.conf | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rbm.conf b/rbm.conf
index d9da670..8c577a0 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -86,6 +86,7 @@ var:
- lt
- mk
- ms
+ - my
- nb-NO
- nl
- pl
@@ -119,6 +120,7 @@ var:
- ka
- ko
- lt
+ - my
- nb-rNO
- nl
- pl
1
0

08 Apr '21
commit 3dc433e81bbbc49fafab59cbb648ae1983f15dc5
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Apr 7 14:56:56 2021 +0000
Bug 40008: Add Burmese (my) as a locale
---
chrome.manifest | 1 +
jar.mn | 2 ++
localization/import-translations.sh | 2 +-
src/chrome/locale/my/network-settings.dtd | 8 ++++----
4 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/chrome.manifest b/chrome.manifest
index 1ee6e15..ab7aa8e 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -38,6 +38,7 @@ locale torlauncher ko chrome/locale/ko/
locale torlauncher lt chrome/locale/lt/
locale torlauncher mk chrome/locale/mk/
locale torlauncher ms chrome/locale/ms/
+locale torlauncher my chrome/locale/my/
locale torlauncher nb-NO chrome/locale/nb-NO/
locale torlauncher nl chrome/locale/nl/
locale torlauncher pl chrome/locale/pl/
diff --git a/jar.mn b/jar.mn
index 8947a82..e229837 100644
--- a/jar.mn
+++ b/jar.mn
@@ -69,6 +69,8 @@ torlauncher.jar:
locale/mk/ (src/chrome/locale/mk/*)
% locale torlauncher ms %locale/ms/
locale/ms/ (src/chrome/locale/ms/*)
+% locale torlauncher my %locale/my/
+ locale/my/ (src/chrome/locale/my/*)
% locale torlauncher nb-NO %locale/nb-NO/
locale/nb-NO/ (src/chrome/locale/nb-NO/*)
% locale torlauncher nl %locale/nl/
diff --git a/localization/import-translations.sh b/localization/import-translations.sh
index 181560f..d5329e5 100755
--- a/localization/import-translations.sh
+++ b/localization/import-translations.sh
@@ -5,7 +5,7 @@
# This var comes from the TBB locale list.
# XXX: Find some way to keep this, tor-launcher, and Tor Browser in sync
-BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt mk ms nb-NO nl pl pt-BR ro ru sv-SE th tr vi zh-CN zh-TW"
+BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sv-SE th tr vi zh-CN zh-TW"
TRANSLATION_BRANCHES="
tor-launcher-network-settings
diff --git a/src/chrome/locale/my/network-settings.dtd b/src/chrome/locale/my/network-settings.dtd
index a11cb06..858bb5e 100644
--- a/src/chrome/locale/my/network-settings.dtd
+++ b/src/chrome/locale/my/network-settings.dtd
@@ -5,7 +5,7 @@
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Tor ဘရောင်ဇာ ဘာသာစကား">
-<!ENTITY torlauncher.localePicker.prompt "ကျေးဇူးပြု၍ ဘာသာစကားရွေးပါ">
+<!ENTITY torlauncher.localePicker.prompt "ကျေးဇူးပြု၍ ဘာသာစကားရွေးချယ်ပါ">
<!-- For "first run" wizard: -->
@@ -20,8 +20,8 @@
<!ENTITY torsettings.restartTor "Tor ကို ပြန်လည်စတင်မယ်">
<!ENTITY torsettings.reconfigTor "ပြန်ချိန်ညှိမယ်">
-<!ENTITY torsettings.discardSettings.prompt "Tor ချိတ်ဆက်တံတားများအား သင်စီမံထားရှိပြီပါပြီ သို့မဟုတ် လိုကယ်ကြားခံ proxy များ၏ အပြင်အဆင်များကို ရိုက်ထည့်ပြီးပါပြီ။   Tor ကွန်ယက်နှင့် တိုက်ရိုက်ချိတ်ဆက်ရန် ၎င်းအပြင်အဆင်များကို ဖယ်ရှားရပါမည်။">
-<!ENTITY torsettings.discardSettings.proceed "အပြင်မဆင်များ ဖယ်ရှားပြီး ချိတ်ဆက်မယ်">
+<!ENTITY torsettings.discardSettings.prompt "Tor ချိတ်ဆက်တံတားများအား သင်စီမံထားရှိပြီးပါပြီ သို့မဟုတ် လိုကယ်ကြားခံ proxy များ၏ အပြင်အဆင်များကို ရိုက်ထည့်ပြီးပါပြီ။   Tor ကွန်ယက်နှင့် တိုက်ရိုက်ချိတ်ဆက်ရန် ၎င်းအပြင်အဆင်များကို ဖယ်ရှားရပါမည်။">
+<!ENTITY torsettings.discardSettings.proceed "အပြင်အဆင်များ ဖယ်ရှားပြီး ချိတ်ဆက်မယ်">
<!ENTITY torsettings.optional "မဖြစ်မနေမဟုတ်">
@@ -59,7 +59,7 @@
<!ENTITY torsettings.bridgeHelp2 "အချို့သောနိုင်ငံများတွင် Tor ကို ပိတ်ပယ်ရန် ကြိုးစားခြင်းကြောင့် အချို့သော ချိတ်ဆက်တံတားများသည် အချို့နိုင်ငံတွင်သာ အလုပ်လုပ်ပြီး အခြားနိုင်ငံများတွင် အလုပ်မလုပ်ပါ။   သင့်နိုင်ငံတွင် မည်သည့် ချိတ်ဆက်တံတားများက အလုပ်လုပ်သည်ကို မသေချာလျှင် torproject.org/about/contact.html သို့ ဝင်ရောက်ကြည့်ရှုပေးပါ။ #support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "ကျွန်ုပ်တို့မှ Tor ကွန်ယက်နှင့် ချိတ်ဆက်မှု ထူထောင်နေတုန်း ခေတ္တစောင့်ပေးပါ။   ဤလုပ်ဆောင်မှုသည် မိနစ်အနည်းအငယ်ကြာနိုင်လိမ်းမည်။">
+<!ENTITY torprogress.pleaseWait "ကျွန်ုပ်တို့မှ Tor ကွန်ယက်နှင့် ချိတ်ဆက်မှု ထူထောင်နေတုန်း ခေတ္တစောင့်ပေးပါ။   ဤလုပ်ဆောင်မှုသည် မိနစ်အနည်းအငယ်ကြာနိုင်လိမ့်မည်။">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
1
0
commit 5264bddf8bc71cbb4e88921b55e7b95fa4522b69
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Apr 7 15:24:02 2021 +0000
Translations update
---
chrome/locale/ar/aboutTor.dtd | 4 ----
chrome/locale/bn-BD/aboutTor.dtd | 6 +-----
chrome/locale/bn-BD/torbutton.dtd | 5 +++--
chrome/locale/ca/aboutTor.dtd | 4 ----
chrome/locale/cs/aboutTor.dtd | 4 ----
chrome/locale/da/aboutTor.dtd | 4 ----
chrome/locale/de/aboutTor.dtd | 4 ----
chrome/locale/el/aboutTor.dtd | 4 ----
chrome/locale/es-AR/aboutTor.dtd | 4 ----
chrome/locale/es-ES/aboutTor.dtd | 6 +-----
chrome/locale/eu/aboutTor.dtd | 4 ----
chrome/locale/fa/aboutTor.dtd | 4 ----
chrome/locale/fr/aboutTor.dtd | 4 ----
chrome/locale/ga-IE/aboutTor.dtd | 4 ----
chrome/locale/he/aboutTor.dtd | 4 ----
chrome/locale/hu/aboutTor.dtd | 4 ----
chrome/locale/id/aboutTor.dtd | 4 ----
chrome/locale/id/torbutton.properties | 6 +++---
chrome/locale/is/aboutTor.dtd | 4 ----
chrome/locale/it/aboutTor.dtd | 4 ----
chrome/locale/ja/aboutTor.dtd | 4 ----
chrome/locale/ka/aboutTor.dtd | 4 ----
chrome/locale/ko/aboutTor.dtd | 4 ----
chrome/locale/lt/aboutTor.dtd | 4 ----
chrome/locale/mk/aboutTor.dtd | 4 ----
chrome/locale/ms/aboutTor.dtd | 4 ----
chrome/locale/nb-NO/aboutTor.dtd | 4 ----
chrome/locale/nl/aboutTor.dtd | 4 ----
chrome/locale/pl/aboutTor.dtd | 4 ----
chrome/locale/pt-BR/aboutTor.dtd | 4 ----
chrome/locale/ro/aboutTor.dtd | 4 ----
chrome/locale/ru/aboutTor.dtd | 4 ----
chrome/locale/sv-SE/aboutTor.dtd | 4 ----
chrome/locale/th/aboutTor.dtd | 4 ----
chrome/locale/tr/aboutTor.dtd | 4 ----
chrome/locale/vi/aboutTor.dtd | 4 ----
chrome/locale/zh-CN/aboutTor.dtd | 4 ----
chrome/locale/zh-TW/aboutTor.dtd | 4 ----
38 files changed, 8 insertions(+), 151 deletions(-)
diff --git a/chrome/locale/ar/aboutTor.dtd b/chrome/locale/ar/aboutTor.dtd
index ba01471e..00f2f913 100644
--- a/chrome/locale/ar/aboutTor.dtd
+++ b/chrome/locale/ar/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "اشترك للحصول على أخبار تور.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor متاح مجاناً بفضل تبرعات من أشخاص مثلك">
<!ENTITY aboutTor.donationBanner.buttonA "تبرع الآن">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "لنستخدم قناعًا ،لنستخدم Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "لنواجه جائحة المراقبة.">
diff --git a/chrome/locale/bn-BD/aboutTor.dtd b/chrome/locale/bn-BD/aboutTor.dtd
index 35fed0f0..e52c4b7a 100644
--- a/chrome/locale/bn-BD/aboutTor.dtd
+++ b/chrome/locale/bn-BD/aboutTor.dtd
@@ -27,9 +27,5 @@
<!ENTITY aboutTor.newsletter.tagline "টর থেকে পাওয়া সর্বশেষ সব খবর সরাসরি আপনার ইনবক্সে দেখুন।">
<!ENTITY aboutTor.newsletter.link_text "টর নিউজ-এর জন্য সাইন আপ করুন ।">
-<!ENTITY aboutTor.donationBanner.freeToUse "Tor is free to use because of donations from people like you.">
+<!ENTITY aboutTor.donationBanner.freeToUse "আপনার মতো মানুষদের দানের জন্যই Tor বিনামূল্যে ব্যবহার করা যায়">
<!ENTITY aboutTor.donationBanner.buttonA "এখুনি দান করুন! ">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Use a mask, use Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resist the surveillance pandemic.">
diff --git a/chrome/locale/bn-BD/torbutton.dtd b/chrome/locale/bn-BD/torbutton.dtd
index 6e06a21e..6e01a3f2 100644
--- a/chrome/locale/bn-BD/torbutton.dtd
+++ b/chrome/locale/bn-BD/torbutton.dtd
@@ -24,7 +24,8 @@
<!ENTITY torbutton.prefs.sec_caption "নিরাপত্তার মাত্রা">
<!ENTITY torbutton.prefs.sec_caption_tooltip "সিকিউরিটি স্লাইডার আপনাকে নির্দিষ্ট ব্রাউজারের বৈশিষ্ট্যগুলি অক্ষম করতে দেয় যা আপনার ব্রাউজারকে হ্যাকিংয়ের প্রচেষ্টাগুলিকে আরও দুর্বল করে তুলতে পারে।">
<!ENTITY torbutton.prefs.sec_standard_label "মান">
-<!ENTITY torbutton.prefs.sec_standard_description "সমস্ত টর ব্রাউজার এবং ওয়েবসাইট বৈশিষ্ট্য সক্ষম করা হয়।">
+<!ENTITY torbutton.prefs.sec_standard_description "Tor ব্রাউজার এবং ওয়েবসাইটের সকল বৈশিষ্ট্য চালু আছে।
+">
<!ENTITY torbutton.prefs.sec_safer_label "নিরাপদ">
<!ENTITY torbutton.prefs.sec_safer_description "ওয়েবসাইটের বৈশিষ্ট্যগুলি প্রায়ই বিপজ্জনক করে, যা কিছু সাইটগুলি কার্যকারিতা হারাতে বাধা দেয়।">
<!ENTITY torbutton.prefs.sec_safer_list_label "নিরাপদ সেটিংসে:">
@@ -50,4 +51,4 @@
<!-- Onion services strings. Strings are kept here for ease of translation. -->
<!ENTITY torbutton.onionServices.authPrompt.tooltip "onion সার্ভিস ক্লায়েন্টের অথেনটিকেশন প্রম্পটটি খুলুন">
-<!ENTITY torbutton.onionServices.authPrompt.persistCheckboxLabel "Remember this key">
+<!ENTITY torbutton.onionServices.authPrompt.persistCheckboxLabel "এই চাবি বা কি-টিকে মনে রাখুন">
diff --git a/chrome/locale/ca/aboutTor.dtd b/chrome/locale/ca/aboutTor.dtd
index 3d5966fc..0741dd00 100644
--- a/chrome/locale/ca/aboutTor.dtd
+++ b/chrome/locale/ca/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Inscriviu-vos a les noticies de Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor és d'ús gratuït gràcies als donatius de persones com vós.">
<!ENTITY aboutTor.donationBanner.buttonA "Feu una donació">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Useu una màscara, useu Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resistiu la pandèmia de la vigilància.">
diff --git a/chrome/locale/cs/aboutTor.dtd b/chrome/locale/cs/aboutTor.dtd
index 43b8f5f9..4a2a2e2b 100644
--- a/chrome/locale/cs/aboutTor.dtd
+++ b/chrome/locale/cs/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Přihlaste se k odběru zpravodaje Toru.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor je zdarma k použití díky darům od lidí jako ty.">
<!ENTITY aboutTor.donationBanner.buttonA "Přispějte">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Noste masku, používejte Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Odolávejte pandemii dozoru.">
diff --git a/chrome/locale/da/aboutTor.dtd b/chrome/locale/da/aboutTor.dtd
index b7113175..09c87f8c 100644
--- a/chrome/locale/da/aboutTor.dtd
+++ b/chrome/locale/da/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Tilmeld Tor-nyheder.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor er gratis at bruge takke være donationer fra personer som dig.">
<!ENTITY aboutTor.donationBanner.buttonA "Donér nu">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Brug en maske, brug Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Modsæt dig den pandemiske overvågning.">
diff --git a/chrome/locale/de/aboutTor.dtd b/chrome/locale/de/aboutTor.dtd
index 8e82ac2f..65f3834a 100644
--- a/chrome/locale/de/aboutTor.dtd
+++ b/chrome/locale/de/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Tor-Nachrichten abonnieren.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor ist aufgrund von Spenden von Leuten wie dir frei nutzbar.">
<!ENTITY aboutTor.donationBanner.buttonA "Spende jetzt">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Nutze eine Maske, nutze Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Wehre dich gegen die Überwachungspandemie.">
diff --git a/chrome/locale/el/aboutTor.dtd b/chrome/locale/el/aboutTor.dtd
index 400bb4cc..8d17ba12 100644
--- a/chrome/locale/el/aboutTor.dtd
+++ b/chrome/locale/el/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Εγγραφτείτε για τα νέα του Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Το Tor είναι ελεύθερο λογισμικό, λόγω δωρεών από άτομα σαν κι εσάς.">
<!ENTITY aboutTor.donationBanner.buttonA "Κάνε μια δωρεά τώρα">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "ΒΑΖΟΥΜΕ ΜΑΣΚΑ, ΒΑΖΟΥΜΕ TOR.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Κόντρα στην πανδημία της παρακολούθησης.">
diff --git a/chrome/locale/es-AR/aboutTor.dtd b/chrome/locale/es-AR/aboutTor.dtd
index ce843db0..0c4ebb64 100644
--- a/chrome/locale/es-AR/aboutTor.dtd
+++ b/chrome/locale/es-AR/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Registrate en Tor News.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor puede ser usado libremente gracias a las donaciones de personas como vos.">
<!ENTITY aboutTor.donationBanner.buttonA "Doná ahora">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Usá un tapaboca, usá Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resistí a la pandemia de vigilancia.">
diff --git a/chrome/locale/es-ES/aboutTor.dtd b/chrome/locale/es-ES/aboutTor.dtd
index 04c2b2bb..0671a826 100644
--- a/chrome/locale/es-ES/aboutTor.dtd
+++ b/chrome/locale/es-ES/aboutTor.dtd
@@ -23,13 +23,9 @@
<!ENTITY aboutTor.torbrowser_user_manual.label "Manual del Tor Browser">
<!ENTITY aboutTor.tor_mission.label "El proyecto Tor es una organización sin fines de lucro definida legalmente en Estados Unidos como 501(c)(3), avanzando libertades y derechos humanos mediante la creación y despliegue de tecnologías de anonimato y privacidad sin costo y de fuente abierta, apoyando su disponibilidad y uso sin restricciones y ampliando su entendimiento científico y popular.">
-<!ENTITY aboutTor.getInvolved.label "Involúcrate">
+<!ENTITY aboutTor.getInvolved.label "Involúcrate »">
<!ENTITY aboutTor.newsletter.tagline "Recibe las últimas noticias de Tor directamente en tu bandeja de entrada.">
<!ENTITY aboutTor.newsletter.link_text "Inscríbete en Tor News.">
<!ENTITY aboutTor.donationBanner.freeToUse "Se puede usar Tor libremente por las donaciones de personas como tu.">
<!ENTITY aboutTor.donationBanner.buttonA "Dona ahora.">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Usa una mascarilla, usa Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resiste a la pandemia de vigilancia.">
diff --git a/chrome/locale/eu/aboutTor.dtd b/chrome/locale/eu/aboutTor.dtd
index 8fba9ac7..b115af74 100644
--- a/chrome/locale/eu/aboutTor.dtd
+++ b/chrome/locale/eu/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Harpidetu Tor berrietara">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor is free to use because of donations from people like you.">
<!ENTITY aboutTor.donationBanner.buttonA "Egin dohaintza orain">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Use a mask, use Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resist the surveillance pandemic.">
diff --git a/chrome/locale/fa/aboutTor.dtd b/chrome/locale/fa/aboutTor.dtd
index e1e7257b..44e1efbc 100644
--- a/chrome/locale/fa/aboutTor.dtd
+++ b/chrome/locale/fa/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "ثبتنام برای اخبار Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor برای استفاده رایگان است، این به خاطر حمایت افرادی مانند شماست.">
<!ENTITY aboutTor.donationBanner.buttonA "اکنون حمایت کنید">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "از ماسک استفاده کنید، از Tor استفاده کنید.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "در برابر دنیاگیری نظارت مقاومت کنید.">
diff --git a/chrome/locale/fr/aboutTor.dtd b/chrome/locale/fr/aboutTor.dtd
index 94ad9e03..c3dab6db 100644
--- a/chrome/locale/fr/aboutTor.dtd
+++ b/chrome/locale/fr/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Inscrivez-vous aux nouvelles de Tor">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor peut être utilisé gratuitement grâce aux dons de personnes telles que vous.">
<!ENTITY aboutTor.donationBanner.buttonA "Faites un don maintenant">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Utilisez un masque, utilisez Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Résistez à la pandémie de surveillance.">
diff --git a/chrome/locale/ga-IE/aboutTor.dtd b/chrome/locale/ga-IE/aboutTor.dtd
index d9d9a5cf..8f03245a 100644
--- a/chrome/locale/ga-IE/aboutTor.dtd
+++ b/chrome/locale/ga-IE/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Cláraigh le Nuachtlitir Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tá Tor saor in aisce a bhuí le bronntanais airgid ó dhaoine cosúil leatsa.">
<!ENTITY aboutTor.donationBanner.buttonA "Tabhair síntiús airgid anois">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Úsáid masc, úsáid Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Seas an fód in aghaidh phaindéim an fhaireachais.">
diff --git a/chrome/locale/he/aboutTor.dtd b/chrome/locale/he/aboutTor.dtd
index 4b1bd3e1..520d773b 100644
--- a/chrome/locale/he/aboutTor.dtd
+++ b/chrome/locale/he/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "הירשם עבור חדשות Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor חינמי לשימוש בגלל תרומות מאנשים כמוך.">
<!ENTITY aboutTor.donationBanner.buttonA "תרום עכשיו">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "עטה מסיכה, עטה את Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "התנגד למגפת המעקב הסמוי.">
diff --git a/chrome/locale/hu/aboutTor.dtd b/chrome/locale/hu/aboutTor.dtd
index 9868c504..0ea02599 100644
--- a/chrome/locale/hu/aboutTor.dtd
+++ b/chrome/locale/hu/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Iratkozzon fel a Tor hírekhez.">
<!ENTITY aboutTor.donationBanner.freeToUse "A Tor ingyenes az Önhöz hasonló személyek támogatásai miatt.">
<!ENTITY aboutTor.donationBanner.buttonA "Támogasson most">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Használjon maszkot, használjon Tor-t.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Álljon ellen a lehallgatási pandémiának.">
diff --git a/chrome/locale/id/aboutTor.dtd b/chrome/locale/id/aboutTor.dtd
index df42da64..be1ecb07 100644
--- a/chrome/locale/id/aboutTor.dtd
+++ b/chrome/locale/id/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Daftar untuk mendapatkan Berita Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor bebas digunakan karena donasi dari orang-orang seperti Anda.">
<!ENTITY aboutTor.donationBanner.buttonA "Donasi Sekarang">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Gunakan masker, gunakan Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Lawan pandemi pengawasan.">
diff --git a/chrome/locale/id/torbutton.properties b/chrome/locale/id/torbutton.properties
index 8b3be3e6..791df540 100644
--- a/chrome/locale/id/torbutton.properties
+++ b/chrome/locale/id/torbutton.properties
@@ -133,8 +133,8 @@ onionLocation.notNowAccessKey=n
onionLocation.description=There's a more private and secure version of this site available over the Tor network via onion services. Onion services help website publishers and their visitors defeat surveillance and censorship.
onionLocation.tryThis=Try Onion Services
onionLocation.onionAvailable=.onion available
-onionLocation.learnMore=Learn more…
-onionLocation.always=Always
-onionLocation.askEverytime=Ask every time
+onionLocation.learnMore=Pelajari Selengkapnya...
+onionLocation.always=Selalu
+onionLocation.askEverytime=Tanyakan setiap saat
onionLocation.prioritizeOnionsDescription=Prioritize .onion sites when known.
onionLocation.onionServicesTitle=Layanan Onion
diff --git a/chrome/locale/is/aboutTor.dtd b/chrome/locale/is/aboutTor.dtd
index 435becb6..14bad9ac 100644
--- a/chrome/locale/is/aboutTor.dtd
+++ b/chrome/locale/is/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Skráðu þig til að fá Tor-fréttir.">
<!ENTITY aboutTor.donationBanner.freeToUse "Öllum er frjálst að nota Tor vegna styrkja frá fólki eins og þér.">
<!ENTITY aboutTor.donationBanner.buttonA "Styrkja núna">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Fáðu þér grímu - notaðu Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Verðu þig fyrir eftirlitsfaraldrinum.">
diff --git a/chrome/locale/it/aboutTor.dtd b/chrome/locale/it/aboutTor.dtd
index 65fb7f49..34fe8006 100644
--- a/chrome/locale/it/aboutTor.dtd
+++ b/chrome/locale/it/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Registrati alle Tor News.">
<!ENTITY aboutTor.donationBanner.freeToUse "L'utilizzo di Tor è gratuito grazie alle donazioni fatte da persone come te.">
<!ENTITY aboutTor.donationBanner.buttonA "Dona Adesso">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Usa una maschera, usa Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resisti alla pandemia di sorveglianza.">
diff --git a/chrome/locale/ja/aboutTor.dtd b/chrome/locale/ja/aboutTor.dtd
index f1293ba7..10eb73a1 100644
--- a/chrome/locale/ja/aboutTor.dtd
+++ b/chrome/locale/ja/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Tor ニュースに申し込む。">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor は皆さんからの寄付に支えられています。">
<!ENTITY aboutTor.donationBanner.buttonA "今すぐ寄付">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "マスクを使い、Tor も使おう。">
-<!ENTITY aboutTor.ey2020.resistsurveillance "監視パンデミックに対抗しよう。">
diff --git a/chrome/locale/ka/aboutTor.dtd b/chrome/locale/ka/aboutTor.dtd
index 91923279..2bbdf85a 100644
--- a/chrome/locale/ka/aboutTor.dtd
+++ b/chrome/locale/ka/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "გამოიწერეთ Tor-ის სიახლეები.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor უფასოა, თქვენნაირი ადამიანების შემოწირულობების დამსახურებით.">
<!ENTITY aboutTor.donationBanner.buttonA "გაიღეთ თანხა">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "გაიკეთეთ ნიღაბი, გამოიყენეთ Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "დაიცავით თავი, მეთვალყურეობის პანდემიისგან.">
diff --git a/chrome/locale/ko/aboutTor.dtd b/chrome/locale/ko/aboutTor.dtd
index 392643e3..04e6de97 100644
--- a/chrome/locale/ko/aboutTor.dtd
+++ b/chrome/locale/ko/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Tor 뉴스를 구독.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor는 바로 당신과 같은 사람들의 기부 덕분에 자유롭게 사용할 수 있습니다.">
<!ENTITY aboutTor.donationBanner.buttonA "기부하기">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "마스크를 쓰고, Tor도 쓰세요.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "감시의 대유행에 맞서세요.">
diff --git a/chrome/locale/lt/aboutTor.dtd b/chrome/locale/lt/aboutTor.dtd
index 66e29b42..4b711723 100644
--- a/chrome/locale/lt/aboutTor.dtd
+++ b/chrome/locale/lt/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Užsisakykite Tor naujienas.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor yra nemokamas naudoti dėl paaukojimų iš tokių žmonių kaip jūs.">
<!ENTITY aboutTor.donationBanner.buttonA "Paaukokite dabar">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Dėvėkite kaukę, naudokite Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Pasipriešinkite sekimo pandemijai.">
diff --git a/chrome/locale/mk/aboutTor.dtd b/chrome/locale/mk/aboutTor.dtd
index 0ff2075f..5853c075 100644
--- a/chrome/locale/mk/aboutTor.dtd
+++ b/chrome/locale/mk/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Пријавете се за Tor Вести.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor е бесплатен за користење благодарение на донациите од луѓе како вас.">
<!ENTITY aboutTor.donationBanner.buttonA "Донирај сега">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Користи маска, користи Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Спротивстави се на надзорот за време на пандемијата.">
diff --git a/chrome/locale/ms/aboutTor.dtd b/chrome/locale/ms/aboutTor.dtd
index 28fd2aaf..b49406f7 100644
--- a/chrome/locale/ms/aboutTor.dtd
+++ b/chrome/locale/ms/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Daftar untuk dapatkan Berita Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor sepenuhnya percuma digunakan kerana adanya derma oleh individu seperti anda.">
<!ENTITY aboutTor.donationBanner.buttonA "Dermalah Sekarang">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Guna pelitup muka, guna juga Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Tangani pandemik pengawasan.">
diff --git a/chrome/locale/nb-NO/aboutTor.dtd b/chrome/locale/nb-NO/aboutTor.dtd
index 7ba3b842..15c0c327 100644
--- a/chrome/locale/nb-NO/aboutTor.dtd
+++ b/chrome/locale/nb-NO/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Registrer deg for Tor-nyheter.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor er gratis å bruke, grunnet bidrag fra folk som deg.">
<!ENTITY aboutTor.donationBanner.buttonA "Donér nå">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Use a mask, use Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resist the surveillance pandemic.">
diff --git a/chrome/locale/nl/aboutTor.dtd b/chrome/locale/nl/aboutTor.dtd
index 738de6bd..ca46073b 100644
--- a/chrome/locale/nl/aboutTor.dtd
+++ b/chrome/locale/nl/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Meld u aan voor de Tor-nieuwsbrief.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor is gratis te gebruiken dankzij donaties van mensen zoals u.">
<!ENTITY aboutTor.donationBanner.buttonA "Doneer nu">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Gebruik een masker, gebruik Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Verzet je tegen de surveillancepandemie.">
diff --git a/chrome/locale/pl/aboutTor.dtd b/chrome/locale/pl/aboutTor.dtd
index da82b8b6..f67d40b9 100644
--- a/chrome/locale/pl/aboutTor.dtd
+++ b/chrome/locale/pl/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Zapisz się na newsletter.">
<!ENTITY aboutTor.donationBanner.freeToUse "Z przeglądarki Tor można korzystać bezpłatnie dzięki darowiznom od osób takich jak Ty.">
<!ENTITY aboutTor.donationBanner.buttonA "Wesprzyj teraz">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Użyj maski, użyj Tora.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Przeciwstaw się pandemii nadzoru.">
diff --git a/chrome/locale/pt-BR/aboutTor.dtd b/chrome/locale/pt-BR/aboutTor.dtd
index 1ba8a0bb..10cc06e9 100644
--- a/chrome/locale/pt-BR/aboutTor.dtd
+++ b/chrome/locale/pt-BR/aboutTor.dtd
@@ -30,7 +30,3 @@
<!ENTITY aboutTor.newsletter.link_text "Inscreva-se para receber Notícias do Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "O Tor é gratuito graças às doações de pessoas como você.">
<!ENTITY aboutTor.donationBanner.buttonA "Doe Agora">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Use uma mascara, use Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Resista à pandemia de vigilância.">
diff --git a/chrome/locale/ro/aboutTor.dtd b/chrome/locale/ro/aboutTor.dtd
index b3149592..07488af9 100644
--- a/chrome/locale/ro/aboutTor.dtd
+++ b/chrome/locale/ro/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Abonează-te la Tor News.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor poate fi folosit gratuit datorită donațiilor de la oameni ca tine.">
<!ENTITY aboutTor.donationBanner.buttonA "Donează Acum">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Folosește o mască, folosește Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Rezistă pandemiei de supraveghere.">
diff --git a/chrome/locale/ru/aboutTor.dtd b/chrome/locale/ru/aboutTor.dtd
index 4986b82e..372bbcd5 100644
--- a/chrome/locale/ru/aboutTor.dtd
+++ b/chrome/locale/ru/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Подпишитесь на новости Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor бесплатен благодаря пожертвованиям таких людей, как вы.">
<!ENTITY aboutTor.donationBanner.buttonA "Пожертвовать">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Используйте Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Не поддавайтесь пандемии слежки.">
diff --git a/chrome/locale/sv-SE/aboutTor.dtd b/chrome/locale/sv-SE/aboutTor.dtd
index 44cf9c7c..62b20513 100644
--- a/chrome/locale/sv-SE/aboutTor.dtd
+++ b/chrome/locale/sv-SE/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Anmäl dig till Tor-nyheter.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor är gratis att använda på grund av donationer från personer som du.">
<!ENTITY aboutTor.donationBanner.buttonA "Donera nu">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Använd en mask, använd Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Stå emot övervakningspandemin.">
diff --git a/chrome/locale/th/aboutTor.dtd b/chrome/locale/th/aboutTor.dtd
index 0946f46d..d9671769 100644
--- a/chrome/locale/th/aboutTor.dtd
+++ b/chrome/locale/th/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "สมัครรับข่าวสารเกี่ยวกับ Tor">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor is free to use because of donations from people like you.">
<!ENTITY aboutTor.donationBanner.buttonA "ร่วมบริจาค">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "ใช้หน้ากาก ใช้ Tor">
-<!ENTITY aboutTor.ey2020.resistsurveillance "ต้านเชื้อสอดแนมระบาด">
diff --git a/chrome/locale/tr/aboutTor.dtd b/chrome/locale/tr/aboutTor.dtd
index cb28a8c1..d36cc0fd 100644
--- a/chrome/locale/tr/aboutTor.dtd
+++ b/chrome/locale/tr/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Tor Duyurularına Abone Olun">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor sizin gibi insanların bağışları ile desteklendiği için ücretsiz olarak kullanılabilir.">
<!ENTITY aboutTor.donationBanner.buttonA "Bağış Yapın">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Maske kullanın, Tor kullanın.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "İzleme salgınından korunun.">
diff --git a/chrome/locale/vi/aboutTor.dtd b/chrome/locale/vi/aboutTor.dtd
index 30607b19..b6bf4286 100644
--- a/chrome/locale/vi/aboutTor.dtd
+++ b/chrome/locale/vi/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "Đăng kí nhận tin tức từ Tor.">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor miễn phí là nhờ sự ủng hộ của những người như bạn.">
<!ENTITY aboutTor.donationBanner.buttonA "Đóng góp Ngay bây giờ">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "Hãy dùng khẩu trang, hãy dùng Tor.">
-<!ENTITY aboutTor.ey2020.resistsurveillance "Cùng nhau chống đại dịch giám sát.">
diff --git a/chrome/locale/zh-CN/aboutTor.dtd b/chrome/locale/zh-CN/aboutTor.dtd
index 329f2995..5b4f5fa7 100644
--- a/chrome/locale/zh-CN/aboutTor.dtd
+++ b/chrome/locale/zh-CN/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "订阅 Tor 的最新动态">
<!ENTITY aboutTor.donationBanner.freeToUse "Tor 是免费使用的,因为有和您一样的人捐助。">
<!ENTITY aboutTor.donationBanner.buttonA "立即捐助">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "口罩防病毒,Tor防监控。">
-<!ENTITY aboutTor.ey2020.resistsurveillance "抗击“监控”全球流行病。">
diff --git a/chrome/locale/zh-TW/aboutTor.dtd b/chrome/locale/zh-TW/aboutTor.dtd
index 2b7abb5e..79e06ab4 100644
--- a/chrome/locale/zh-TW/aboutTor.dtd
+++ b/chrome/locale/zh-TW/aboutTor.dtd
@@ -29,7 +29,3 @@
<!ENTITY aboutTor.newsletter.link_text "訂閱 Tor 的新資訊。">
<!ENTITY aboutTor.donationBanner.freeToUse "由於有像您這樣的人的捐款,Tor 可以免費使用。">
<!ENTITY aboutTor.donationBanner.buttonA "立刻捐款">
-
-<!-- End of year 2020 Fundraising campaign -->
-<!ENTITY aboutTor.ey2020.useamask "口罩維持身體健康,Tor 保護網路安全。">
-<!ENTITY aboutTor.ey2020.resistsurveillance "抵制全面監控。">
1
0

08 Apr '21
commit 08a0ef57daae24d15d509765363a50e7ec100ca9
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Apr 7 15:23:38 2021 +0000
Bug 40033: Add Burmese (my) as a locale
---
chrome/locale/my/aboutDialog.dtd | 19 ++++
chrome/locale/my/aboutTBUpdate.dtd | 8 ++
chrome/locale/my/aboutTor.dtd | 56 ++++------
chrome/locale/my/brand.dtd | 17 ++-
chrome/locale/my/brand.properties | 19 ++--
chrome/locale/my/branding/brand.ftl | 12 +-
chrome/locale/my/browserOnboarding.properties | 72 ++++++++++++
chrome/locale/my/torbutton.dtd | 51 +++++++--
chrome/locale/my/torbutton.properties | 155 ++++++++++++++++++++++----
import-translations.sh | 2 +-
jar.mn | 2 +
11 files changed, 328 insertions(+), 85 deletions(-)
diff --git a/chrome/locale/my/aboutDialog.dtd b/chrome/locale/my/aboutDialog.dtd
new file mode 100644
index 00000000..74eef2f4
--- /dev/null
+++ b/chrome/locale/my/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; ááᯠáááºáá®ážáá°ááẠ">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "&vendorShortName;">
+<!ENTITY project.end "á áááºážááẠá¡áœááºááá¯ááºážáá±á«áºááœáẠáááºá áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±áž ááŸáá·áº ááœááºáááºááœáá·áºááᯠáá¯áá¶áá¬ááœááºááẠáá¯ááºáá±á¬ááºáá±á¬ á¡áá»áá¯ážá¡ááŒááºááá°áá±á¬ á¡ááœá²á·á¡á
ááºážáá
áºáá¯ááŒá
áºáááºá">
+
+<!ENTITY help.start "áá°áá®áá»ááºáá«ááá¬áž?">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "ááŸá°áá«ááºážáááº">
+<!ENTITY help.or "ááá¯á·ááá¯ááº">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "áá«áááºáá¯ááºáá±á¬ááºáááº">
+<!ENTITY help.end "!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "áá±ážá
áá¬áá»á¬ážááŸááŠážááá¬áž?">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "Tor ááœááºáááºááᯠááŒá®ážááœá¬ážáááºáá°áá®áá«!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "ááá¯ááºá
ááºá¡ááŒá±á¬ááºáž áááá±á¬ááºážá
áá¬">
+<!ENTITY tor.TrademarkStatement ""Tor" ááŸáá·áº "Onion Logo" (ááŒááºááœááºáá®á¡ááŸááºáá¶ááááºáááºá¹áá±á) ááẠTor Project, Inc. áááŸááºáá¯á¶áááºáá¬ážáá±á¬áá¯ááºá¡ááŸááºáá¶ááááºááŒá
áºáááºá">
diff --git a/chrome/locale/my/aboutTBUpdate.dtd b/chrome/locale/my/aboutTBUpdate.dtd
new file mode 100644
index 00000000..3878e860
--- /dev/null
+++ b/chrome/locale/my/aboutTBUpdate.dtd
@@ -0,0 +1,8 @@
+<!ENTITY aboutTBUpdate.changelogTitle "Tor ááá±á¬ááºáᬠChangeLog (ááŒá±á¬ááºážáá²ááŸá¯ááŸááºáááºáž)">
+<!ENTITY aboutTBUpdate.updated "Tor ááá±á¬ááºáá¬ááᯠá¡ááºááááºááŒá¯áá¯ááºáá¬ážáááºá">
+<!ENTITY aboutTBUpdate.linkPrefix "á€áá¯ááºááœáŸááºááŸá¯ááŸáá·áº áááºáááºá áá±á¬ááºáá¯á¶ážáá±á«áº ááááºážá¡áá»ááºá¡áááºáá»á¬ážá¡ááœááº">
+<!ENTITY aboutTBUpdate.linkLabel "áá»áœááºá¯ááºááá¯á·ááááºááºááá¯ááºááá¯á· áááºáá±á¬ááºááŒáá·áºááŸá¯áá«">
+<!ENTITY aboutTBUpdate.linkSuffix "á">
+<!ENTITY aboutTBUpdate.version "áá¬ážááŸááºáž">
+<!ENTITY aboutTBUpdate.releaseDate "ááŒááºá·áá»á®áááºá·áááºá
áœá²">
+<!ENTITY aboutTBUpdate.releaseNotes "ááŒáá·áºáá»á®ááŸááºáá»ááºáá»á¬áž">
diff --git a/chrome/locale/my/aboutTor.dtd b/chrome/locale/my/aboutTor.dtd
index 9f14022b..bdde5b28 100644
--- a/chrome/locale/my/aboutTor.dtd
+++ b/chrome/locale/my/aboutTor.dtd
@@ -1,47 +1,31 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2019, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
-<!ENTITY aboutTor.title "About Tor">
+<!ENTITY aboutTor.title "Tor á¡ááŒá±á¬ááºáž">
-<!ENTITY aboutTor.outOfDateTorOn.label "HOWEVER, this browser is out of date.">
-<!ENTITY aboutTor.outOfDateTorOff.label "ALSO, this browser is out of date.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Download Tor Browser Bundle Update.">
+<!ENTITY aboutTor.viewChangelog.label "ááŒá±á¬ááºážáá²ááŸááºáááºáž ááŒááºá·áááº">
-<!ENTITY aboutTor.check.label "Test Tor Network Settings">
+<!ENTITY aboutTor.ready.label "áá¯á¶ááŒá¯á¶á
áœá¬ áá¯á¶ážá
áœá²áá«á">
+<!ENTITY aboutTor.ready2.label "áááºááẠá¡ááºáá¬áááºááᯠá¡áá¯á¶ááŒá¯á¶áá¯á¶ážá
áœá¬ áá¯á¶ážá
áœá²ááá¯á· á¡áááºáááºá·ááŒá
áºáá«ááŒá®á">
+<!ENTITY aboutTor.failure.label "áá
áºáá¯áᯠááŸá¬ážááœááºážááœá¬ážáá«áááº!">
+<!ENTITY aboutTor.failure2.label "ဠááá±á¬ááºáá¬ááœáẠTor á¡áá¯ááºááá¯ááºáá«á">
-<!ENTITY aboutTor.success.label "Congratulations!">
-<!ENTITY aboutTor.success2.label "This browser is configured to use Tor.">
-<!ENTITY aboutTor.success3.label "You are now free to browse the Internet anonymously.">
-<!ENTITY aboutTor.failure.label "Something Went Wrong!">
-<!ENTITY aboutTor.failure2.label "Tor is not working in this browser.">
-<!ENTITY aboutTor.failure3prefix.label "For assistance, please contact ">
-<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
-<!ENTITY aboutTor.failure3suffix.label ".">
+<!ENTITY aboutTor.search.label "DuckDuckGo ááŒááºá· ááŸá¬ááœá±áááº">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
-<!ENTITY aboutTor.search.label "Search">
-<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/do/search">
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.torbrowser_user_manual_questions.label "áá±ážá
áá¬áá»á¬áž ááŸááŠážááá¬áž?">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "áá»áœááºá¯ááºááá¯á· Tor ááá±á¬ááºáᬠáááºá
áœá²á
á¬á¡á¯ááºá¡á¬áž ááŒáá·áºááŒááºá·á᫠»">
+<!-- The next two entities are used within the browser's Help menu. -->
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Tor ááá±á¬ááºáᬠáááºá
áœá²á
á¬á¡á¯ááº">
-<!ENTITY aboutTor.torInfo1.label "Additional Info:">
-<!ENTITY aboutTor.torInfo2.label "Country & IP Address:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
-<!ENTITY aboutTor.torInfo4.label "This server does not log any information about visitors.">
-<!ENTITY aboutTor.whatnextQuestion.label "What Next?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NOT all you need to browse anonymously! You may need to change some of your browsing habits to ensure your identity stays safe.">
-<!ENTITY aboutTor.whatnext.label "Tips On Staying Anonymous »">
-<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "You Can Help!">
-<!ENTITY aboutTor.helpInfo2.label "There are many ways you can help make the Tor Network faster and stronger:">
-<!ENTITY aboutTor.helpInfo3.label "Run a Tor Relay Node »">
-<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Volunteer Your Services »">
-<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Make a Donation »">
-<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
+<!ENTITY aboutTor.tor_mission.label "Tor Project ááẠáá°á·á¡ááœááºá·á¡áá±ážááŸááºá· ááœááºáááºáá±ážááœááºá·áá»á¬ážááᯠááá¯ážáááºá
á±ááẠá¡áá±ááááẠá¡áá»áá¯ážá¡ááŒááºááá°áá±á¬ á
áá(á)(á) á¡ááœá²á·á¡á
ááºážáá
áºáᯠááŒá
áºáá«áááºá ááœááºáááºá á¡áááºááŸááºáᬠá¡áá»á¬ážáá¯á¶ážááá¯ááºááŒá®áž áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±ážá
á±á¬ááºá·ááŸá±á¬ááºáá±á¬ áááºážááá¬áá»á¬áž á¡áá¯á¶ážááŒá¯áá«áááºá áááºážáááºážááá¬áá»á¬ážááᯠá¡áááºá·á¡áááºáááŸáá
áœá¬ áá¯á¶ážá
áœá²ááá¯ááºááŒááºážááŸááºá· áááá¹áá¶ááá¯ááºáá¬ááŸááºá· ááŒááºáá°áá»á¬ážáá¬ážáááºááá¯ááºá
á±ááẠáá¶á·
ááá¯ážáá±á¬ááºáá¶á·áá«áááºá">
+<!ENTITY aboutTor.getInvolved.label "áá«áááºá᫠»">
-<!ENTITY aboutTor.footer.label "The Tor Project is a US 501(c)(3) non-profit dedicated to the research, development, and education of online anonymity and privacy.">
-<!ENTITY aboutTor.learnMore.label "Learn more about The Tor Project »">
-<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
+<!ENTITY aboutTor.newsletter.tagline "Tor á០áá±á¬ááºáá¯á¶ážááááºážáá»á¬ážááᯠáááºá· á
á¬áááºáá¯á¶ážáá²áááºáž ááá°ááá¯ááºáá«á">
+<!ENTITY aboutTor.newsletter.link_text "Tor News ááááºážáá»á¬ážá¡ááœáẠá¡ááẠá
á¬áááºážááœááºážááá¯ááºáá«á">
+<!ENTITY aboutTor.donationBanner.freeToUse "Tor ááẠáááºá·ááᯠáá¯á¶ážáá°áá»á¬ážá០ááŸá°áá«ááºážááœá±ááŒá±á¬ááºá· á¡ááá²á·áá¯á¶ážááá¯ááºáá«áááºá">
+<!ENTITY aboutTor.donationBanner.buttonA "á¡áá¯áá² ááŸá°áááº">
diff --git a/chrome/locale/my/brand.dtd b/chrome/locale/my/brand.dtd
index 6b072f5c..6df03e49 100644
--- a/chrome/locale/my/brand.dtd
+++ b/chrome/locale/my/brand.dtd
@@ -2,11 +2,18 @@
- 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/. -->
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
-<!ENTITY vendorShortName "Tor Project">
-<!ENTITY trademarkInfo.part1 "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
+<!ENTITY brandShorterName "Tor ááá±á¬ááºáá¬">
+<!ENTITY brandShortName "Tor ááá±á¬ááºáá¬">
+<!ENTITY brandFullName "Tor ááá±á¬ááºáá¬">
+<!ENTITY vendorShortName "Tor á
á®áá¶ááááºáž ááá±á¬áá»ááº">
+<!ENTITY trademarkInfo.part1 ""Tor" ááŸáá·áº "Onion Logo" (ááŒááºááœááºáá®á¡ááŸááºáá¶ááááºáááºá¹áá±á) ááẠTor Project, Inc. á ááŸááºáá¯á¶áááºáá¬ážáá±á¬ áá¯ááºá¡ááŸááºáá¶ááááºááŒá
áºáááºá">
<!-- LOCALIZATION NOTE (brandProductName):
This brand name can be used in messages where the product name needs to
remain unchanged across different versions (Nightly, Beta, etc.). -->
-<!ENTITY brandProductName "Tor Browser">
+<!ENTITY brandProductName "Tor ááá±á¬ááºáá¬">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "áááºááœááºážáá¬ážáá±á¬ áááºááá¯ážá
áá
áºáá±á¬á·áá²áá»á¬ážááᯠáááºáá¯á¶ážááẠááŸáááºáá«">
+<!ENTITY plugins.installed.enable "áááºááá¯áž áá±á¬á·áá²áá»á¬áž ááœááºá·áááº">
+<!ENTITY plugins.installed.disable "áááºááá¯áž áá±á¬á·áá²áá»á¬áž ááááºáááº">
+<!ENTITY plugins.installed.disable.tip "áááºááá¯ážá
áá
áºáá±á¬á·áá²áá»á¬ážááᯠáááºáá¯á¶ážááŒááºážááŸâ ááŸá±á¬ááºááŒá¥áºááẠááŸáááºáá«">
diff --git a/chrome/locale/my/brand.properties b/chrome/locale/my/brand.properties
index 1ba6ed31..385dab96 100644
--- a/chrome/locale/my/brand.properties
+++ b/chrome/locale/my/brand.properties
@@ -2,18 +2,19 @@
# 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/.
-brandShortName=Tor Browser
-brandFullName=Tor Browser
+brandShorterName=Tor ááá±á¬ááºáá¬
+brandShortName=Tor ááá±á¬ááºáá¬
+brandFullName=Tor ááá±á¬ááºáá¬
# LOCALIZATION NOTE(brandProductName):
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brandProductName=Tor Browser
-vendorShortName=Tor Project
+brandProductName=Tor ááá±á¬ááºáá¬
+vendorShortName=Tor á
á®áá¶ááááºáž ááá±á¬áá»ááº
-homePageSingleStartMain=Firefox Start, a fast home page with built-in search
-homePageImport=Import your home page from %S
+homePageSingleStartMain=Firefox Startá ááŸá¬ááœá±ááẠáááááá¬ááœááºážáá¬ážááŒá®áž áá»ááºááŒááºáá±á¬ áááºáá
á¬áá»ááºááŸá¬
+homePageImport=%S áá¶á០áááºá· áááºáá
á¬áá»ááºááŸá¬ áááºááœááºážáá«
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
+homePageMigrationPageTitle=áááºá á
á¬áá»ááºááŸá¬ ááœá±ážáá»ááºááŸá¯
+homePageMigrationDescription=áááºáá¯á¶ážááá¯áá±á¬ áááºáá
á¬áá»ááºááŸá¬ááᯠááœá±ážáá±ážáá« -
-syncBrandShortName=Sync
+syncBrandShortName=ááá¯ááºááá¯ááºááŸááá°áááº
diff --git a/chrome/locale/my/branding/brand.ftl b/chrome/locale/my/branding/brand.ftl
index af1fd648..d859549c 100644
--- a/chrome/locale/my/branding/brand.ftl
+++ b/chrome/locale/my/branding/brand.ftl
@@ -2,11 +2,11 @@
# that is used by Firefox) to avoid picking up the -brand-short-name values
# that Mozilla includes in the Firefox language packs.
--brand-shorter-name = Tor Browser
--brand-short-name = Tor Browser
--brand-full-name = Tor Browser
+-brand-shorter-name = Tor ááá±á¬ááºáá¬
+-brand-short-name = Tor ááá±á¬ááºáá¬
+-brand-full-name = Tor ááá±á¬ááºáá¬
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
--brand-product-name = Tor Browser
--vendor-short-name = Tor Project
-trademarkInfo = 'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.
+-brand-product-name = Tor ááá±á¬ááºáá¬
+-vendor-short-name = Tor á
á®áá¶ááááºáž ááá±á¬áá»ááº
+trademarkInfo = 'Tor' ááŸáá·áº 'Onion Logo' (ááŒááºááœááºáá®á¡ááŸááºáá¶ááááºáááºá¹áá±á) ááẠTor Project, Inc. á ááŸááºáá¯á¶áááºáá¬ážáá±á¬ áá¯ááºá¡ááŸááºáá¶ááááºááŒá
áºáááºá
diff --git a/chrome/locale/my/browserOnboarding.properties b/chrome/locale/my/browserOnboarding.properties
new file mode 100644
index 00000000..1dbe28c9
--- /dev/null
+++ b/chrome/locale/my/browserOnboarding.properties
@@ -0,0 +1,72 @@
+# Copyright (c) 2019, The Tor Project, Inc.
+# See LICENSE for licensing information.
+# vim: set sw=2 sts=2 ts=8 et:
+
+onboarding.tour-tor-welcome=ááŒáá¯ááá¯áá«áááº
+onboarding.tour-tor-welcome.title=ááẠá¡áááºáááºá·ááŒá
áºáá«ááŒá®á
+onboarding.tour-tor-welcome.description=Tor ááá±á¬ááºáá¬ááẠá¡ááºáá¬áááºáá¯á¶ážá
áœá²á
á¥áº á¡ááŒááºá·áá¯á¶áž áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶ááŸá¯á¡á¬áž áá±ážááá¯á·áá«áááºá áááºá· á¡áœááºááá¯ááºážááŒá±áá¬ááá¯ááºáá¶áááŒááºážá á
á±á¬ááºá·ááŒááºá·áá¶áááŒááºáž ááŸááºá· áááºáá¬áá¶áááŒááºážááá¯á·á០ááá¯áá¬ááœááºáá¬ážáá±ážáá«áááºá ဠáááºážááœáŸááºááá¯ááẠáááºá·á¡á¬ážáááºáá²á·ááá¯á· áá¬ááœááºáá±ážáááºááᯠááŸááºážááŒáá«áááºá
+onboarding.tour-tor-welcome.next-button=áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±áž ááá¯á·ááœá¬ážáááº
+
+onboarding.tour-tor-privacy=áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±áž
+onboarding.tour-tor-privacy.title=áááºá· á¡áœááºááá¯ááºážááŒá±áá¬ááá¯ááºáá°áá»á¬ážááŸááºá· ááá±á¬ááºáá»á¬ážááᯠáááºáá»áá«á
+onboarding.tour-tor-privacy.description=Tor ááá±á¬ááºáá¬ááẠááœááºáá®ážáá»á¬ážááᯠáá®ážááŒá¬ážá
áœá¬áá¬ážá áááºá· ááá±á¬ááºáᬠáá¬ááááºá¡á¬áž áááºá¡áá¯á¶ážááŒá¯ááŒá®ážáá»áŸáẠáá»ááºááááºážáá±ážáá«áááºá á€áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááẠááá±á¬ááºáá¬á¡ááœááºážááŸá áááºá·áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶ááŸá¯ááᯠá
á±á¬ááºá·ááŸá±á¬ááºáá±ážáá«áááºá "Tor ááœááºáááº" ááá¯ááŸáááºá áá»áœááºá¯ááºááá¯á·á០ááœááºáááºá¡áááºá·ááœáẠáááºá·ááá¯áááºáá²á·ááá¯á· áá¬ááœááºááŸá¯áá±ážáááºááᯠáá±á·áá¬áá«á
+onboarding.tour-tor-privacy.button=Tor ááœááºááẠááá¯á·ááœá¬ážáááº
+
+onboarding.tour-tor-network=Tor ááœááºáááº
+onboarding.tour-tor-network.title=áááá¯ááááºážáá»á¯ááºááŸá¯ áááŸááá±á¬ ááœááºáááºáá±á«áº áááºááá¯ááºáá«á
+onboarding.tour-tor-network.description=ááá¹áá¬á¡ááŸá¶á·ááŸá áá¯ááºá¡á¬ážáá±ážáá°áá»á¬ážá០áááºáááºáá±ážáá±á¬ Tor ááœááºáááºááᯠáááºááŸááºá· Tor ááá±á¬ááºáá¬á០áá»áááºáá±ážáá«áááºá á¡ááºáá¬áááºááᯠáá¯á¶ááŒá¯á¶á
áœá¬áá¶á
á¬ážááá¯ááºáááºá¡ááœáẠVPN ááŸááºá·ááá°áá² áá»ááºááœááºááŸá¯áááŸááá« ááá¯á·ááá¯áẠáááá¯áá»á¯ááºá¡áá¬áá
áºáá¯á¡á¬áž áá¯á¶ááŒááºáááºáááá¯áá«á
+onboarding.tour-tor-network.description-para2=á¡áá
Ạ- Tor ááœááºááẠá¡ááŒááºá¡áááºáá»á¬ážááᯠáá»áááºááŸááá»ááºáá»á¬áž (âPreferences) ááá¯áááºá· ááá¹áááœáẠááœá±á·ááŸáááá¯ááºáá«áááºá (á¡áá»ááºážáá»ááºážáá»áááºáááºá áá»áœá±áá¬ááŒááºážáá¯ááºá
á¥áºáá»á¬áž (bridges) áá±á¬ááºážááá¯ááá¯ááºááŒááºáž á¡áá«á¡áááº)
+onboarding.tour-tor-network.action-button=áááºá· Tor ááœááºááẠá¡ááŒááºá¡áááºáá»á¬áž áá»áááºááŸááá«
+onboarding.tour-tor-network.button=áááºážááŒá±á¬ááºážá
á¥áº ááá¯á·ááœá¬ážáááº
+
+onboarding.tour-tor-circuit-display=áááºážááŒá±á¬ááºážá
á¥áº
+onboarding.tour-tor-circuit-display.title=áááºá·áááºážááŒá±á¬ááºážááᯠááŒááºá·áá«á
+onboarding.tour-tor-circuit-display.description=áááºáááºáá±á¬ááºááŒááºá·ááŸá¯áááºá· ááá¯ááááºážáá
áºáá¯áá»ááºážá
á®á¡ááœáẠáááºá·á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠáááºáááºá·áááºážá ááá¹áá¬á¡ááŸá¶á·ááŸáâ Tor áááºážááŒá±á¬ááºáž á áá¯áá±á«áºá áá¯ááºááŒááºá·ááŒá±á¬ááºážáá²ááŸááºáá«áááºáâ áááºáááºáááºá·áá±áá¬á០áááºááœááºáá±áááºááᯠáááºáááºá·áááºááá¯ááºááá»áŸ ááááá«á áá»áœááºá¯ááºááá¯á·á áááºážááŒá±á¬ááºážá
á¥áºááŸá "á€ááá¯ááºá¡ááœáẠáááºážááŒá±á¬ááºážá¡áá
áº" ááᯠááŸáááºá áááºážááŒá±á¬ááºážá¡áá
áºááᯠáááºáá±á¬ááºážááá¯ááá¯ááºáá«áááºá
+onboarding.tour-tor-circuit-display.button=áá»áœááºá¯ááºá áááºážááŒá±á¬ááºážááŒááºá·áááº
+onboarding.tour-tor-circuit-display.next-button=áá¯á¶ááŒá¯á¶áá±áž ááá¯á·ááœá¬ážáááº
+
+onboarding.tour-tor-security=áá¯á¶ááŒá¯á¶áá±áž
+onboarding.tour-tor-security.title=áááºá· á¡ááœá±á·á¡ááŒá¯á¶ááᯠááœá±ážáá«á
+onboarding.tour-tor-security.description=áá»áœááºá¯ááºááá¯á·ááẠáááºá· ááá±á¬ááºáá¬áá¯á¶ááŒá¯á¶ááŸá¯ááᯠááá¯ááá¯áá¯á¶ááŒá¯á¶á
á±ááẠáááºá·á¡á¬áž á¡ááá¯á¡ááŒááºá¡áááºáá»á¬ážááŸááá«áááºá áá»áœááºá¯ááºááá¯á·á áá¯á¶ááŒá¯á¶áá±áž á¡ááŒááºá¡áááºáá»á¬ážááẠáááºá·ááœááºáá»á°áá¬ááᯠááá¯ááºááá¯ááºááá¯ááºáá±á¬ á¡áá¬áá»á¬ážááᯠááááºáááºááá¯ááºáá«áááºá á¡á±á¬ááºááœáẠááŸáááºá áááºááá¯á· ááŒááºáááºááá¯ááºááẠáá±á·áá¬áá«á
+onboarding.tour-tor-security.description-suffix=ááŸááºáá»áẠ- NoScript ááŸááºá· HTTPS Everywhere ááá¯áá±á¬ áááºááá¯ážáá±á¬á·áá²áá»á¬ážááẠáááááá¬á¡á¶áá²ááœáẠáá°áááŒááºáááºááŸá¯á¡á ááá«áá«á ááá¯á·áá±á¬áºáºáááºáž áááºá០áááááá¬á¡á¶ááᯠá
áááºááŒáá¯ááºá
áœá¬ ááŒá±á¬ááºážá áááºážááá¯á·ááᯠáá±á«ááºážáááºá·ááá¯ááºáá«áááºá
+onboarding.tour-tor-security-level.button=áááºá· áá¯á¶ááŒá¯á¶áá±ážá¡áááºá·ááᯠááŒááºá·áááº
+onboarding.tour-tor-security-level.next-button=á¡ááœá±á·á¡ááŒá¯á¶ á¡ááŒá¶áá±ážáá»ááºáá»á¬ážááá¯á· ááœá¬ážáááº
+
+onboarding.tour-tor-expect-differences=á¡ááœá±á·á¡ááŒá¯á¶ á¡ááŒá¶áá±ážáá»ááºáá»á¬áž
+onboarding.tour-tor-expect-differences.title=á¡áá»áá¯á·ááœá¬ááŒá¬ážááŸá¯áá»á¬áž áá»áŸá±á¬áºáááºá·áá¬ážáá«á
+onboarding.tour-tor-expect-differences.description=Tor á០áá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±áž á¡ááºá¹áá«áááºáá»á¬ážááŒá±á¬ááºá· áááºá¡ááºáá¬áááºáá¯á¶ážá
áœá²áá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááẠáá¬áááºááẠááœá¬ááŒá¬ážááá¯ááºáá«áááºá áááºá· áá¯á¶ááŒá¯á¶áá±ážá¡áááºá·áá±á«áºáá°áááºá áááºááá¯ááºá¡áá¬áá»á¬áž áááºááŒááŒááºážááẠááá¯ááŸá±ážááá¯ááºáá«áááºá á¡áá»áá¯á·á¡áá¬áá»á¬ážááẠá¡áá¯ááºááá¯ááºááŒááºáž ááá¯á·ááá¯áẠááááºááŒááá¯ááºááŒááºáž ááá¯á·ááŒá
áºáááºáá«áááºá áááºááẠáá°áá¯ááºááá¯ááºáááºááᯠá
á
áºáá±ážááŸá¯áá¶áááá¯ááºáá«á
ááºá
+onboarding.tour-tor-expect-differences.button=áá±ážáá±á·áá±ážáááŸááá±á¬ áá±ážááœááºážáá»á¬áž áááºáááº
+onboarding.tour-tor-expect-differences.next-button=Onion áááºáá±á¬ááºááŸá¯áá»á¬áž ááá¯á·ááœá¬ážáááº
+
+onboarding.tour-tor-onion-services=Onion áááºáá±á¬ááºááŸá¯áá»á¬áž
+onboarding.tour-tor-onion-services.title=á¡ááá¯áá¬ááœááºááŸá¯áá¶áá¬ážáá«á
+onboarding.tour-tor-onion-services.description= Onion áááºáá±á¬ááºááŸá¯áá»á¬ážááẠ.onion ááŸááºá· áá¯á¶ážáááºá· áááºááá¯ááºáá»á¬ážááŒá
áºáá«áááºá áááºážáááºáá±á¬ááºááŸá¯áá»á¬ážááẠáá¯ááºáá±áá°áá»á¬ážááŸááºá· áá¯á¶ážá
áœá²áá°áá»á¬ážááᯠá¡ááá¯áá¬ááœááºááŸá¯áá»á¬ážáá±ážáááºá·á¡ááŒáẠáááºáá¬áá¶áááŒááºážááá¯á·ááá¯áááºáž áááºá·áá»ááºááẠá¡áá¬ááœááºááŸá¯áá»á¬ážáááºážáá«áááºáá«áááºá Onion áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáááºáá°ááá¯áááᯠá¡áááºááá±á«áºáá² á¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž ááŸááºá· á¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá»á¬áž áá¯ááºáá±ááá¯ááºááẠá¡ááœááºá·áá
áºážáá±ážáá«áááºá á¡á±á¬ááºááœáẠááŸáááºá DuckDuckGo onion ááá¯ááºá¡á¬ážáááºáá±á·áá¬áá«á
+onboarding.tour-tor-onion-services.button=Onion ááá¯á·áááºáá±á¬ááºáá«
+onboarding.tour-tor-onion-services.next-button=ááŒá®ážááœá¬ážááŒá®
+
+onboarding.overlay-icon-tooltip-updated2=%S ááœááº\náá¬áá°ážááŒá¬ážáá»ááºááŸááá²ááŒááºá·áá«
+onboarding.tour-tor-update.prefix-new=á¡áá
áº
+onboarding.tour-tor-update.prefix-updated=á¡ááºááááºáá¯ááºááŒá®áž
+
+onboarding.tour-tor-toolbar=áááááá¬á¡á¶ toolbar
+onboarding.tour-tor-toolbar-update-9.0.title=ááœááºááá¯áẠOnion ááá¯ááºá
+onboarding.tour-tor-toolbar-update-9.0.description=áá»áœááºá¯ááºááá¯á·á០ááẠTor á¡áá¯á¶ážááŒá¯ááŒááºáž á¡ááœá±á·á¡ááŒá¯á¶ááᯠTor ááá±á¬ááºáá¬á¡áá²á á¡ááŒááºá·á¡á áá±á«ááºážá
ááºážáá¬ážá
á±áá»ááºáá«áááºá
+onboarding.tour-tor-toolbar-update-9.0.description-para2=á¡á²á·áá«ááŒá±á¬ááºá· onion ááá¯ááºáá¯á¶ážáááºá·á¡á
á¬áž áááºááẠáááºá· Tor áááºážááŒá±á¬ááºážááᯠ[i] URL á¡ááœááºááœáẠááœá±á·ááŸáááá¯ááºááŒá®áž áááááá¬á¡á¶ (toolbar) ááá¯áẠááá¯á·ááá¯áẠ[â¡] áá®áá°áž áá¯á¶ážá á¡áá±á¬ááºá¡áá¬ážá¡áá
áºááᯠáá±á¬ááºážááá¯ááá¯ááºáá«áááºá
+onboarding.tour-tor-toolbar-update-9.0.button=á¡áá±á¬ááºá¡áá¬ážá¡áá
Ạáááºááá¯á· áá±á¬ááºážááá¯ááááºáááºáž
+onboarding.tour-tor-toolbar-update-9.0.next-button=Tor ááœááºáááºáá±á«áº ááá¯á·ááœá¬ážáá«
+
+# Circuit Display onboarding.
+onboarding.tor-circuit-display.next=ááŸá±á·áááºáááº
+onboarding.tor-circuit-display.done=ááŒá®ážááœá¬ážááŒá®
+onboarding.tor-circuit-display.one-of-three=á áá¯á០á áá¯
+onboarding.tor-circuit-display.two-of-three=á áá¯á០á áá¯
+onboarding.tor-circuit-display.three-of-three=á áá¯á០á áá¯
+
+onboarding.tor-circuit-display.intro.title=áááºážááŒá±á¬ááºážá
á¥áºáá»á¬áž áááºáá²á·ááá¯á· á¡áá¯ááºáá¯ááºááááºáž?
+onboarding.tor-circuit-display.intro.msg=áá¬ážáá
áºáááºážááŒá±á¬ááºážáá»á¬ážááẠáá»áááºážáááºááŸááºáá¬ážáá±á¬ áááºáááºá·áááºážááŒááºážáá»á¬ážááŒááºá· áááºáá±á¬ááºáá¬ážáá«áááºá áááºážáááºáááºá·áááºážááŸá¯áá»á¬ážááẠááá¹áá¬á¡ááŸá¶á·ááŸá Tor á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠáááºáááºá·áááºážááá¯ááºááẠáá»áááºááŸááá¬ážáááºá· ááœááºáá»á°áá¬áá»á¬ážááŒá
áºáá«áááºá áá¬ážáá
áºáááºážááŒá±á¬ááºážáá»á¬ážáááºÂ áááºá·ááᯠá¡ááºáá¬áááºáá¯á¶ááŒá¯á¶á
áœá¬áá¯á¶ážá
áœá²ááá¯ááºá
á±áááºááŸááºá· onion áááºáá±á¬ááºááŸá¯áá»á¬ážááŸááºá· áá»áááºáááºá
á±ááá¯ááºáá«áááºá
+
+onboarding.tor-circuit-display.diagram.title=áááºážááŒá±á¬ááºážá
á¥áº
+onboarding.tor-circuit-display.diagram.msg=á€áá¯á¶ááẠáááºážáááºááá¯ááºá¡ááœáẠáááºážááŒá±á¬ááºážá
á¥áºáá±ážáá±á¬ áááºáááºá·áááºážááŸá¯ááá¯á·ááᯠááŒááá«áááºá áááºááá¯ááºáá»á¬áž á¡áá»ááºážáá»ááºáž áá»áááºáááºááŒááºážáá»á¬ážááᯠáá¬ážááŒá
áºááẠáááºááá¯ááºáá
áºáá¯ááᯠááá°áá®áá±á¬ áááºážááŒá±á¬ááºážáá
áºáá¯á
á®áᬠáááŸááá«áááºá
+
+onboarding.tor-circuit-display.new-circuit.title=ááẠáááºážááŒá±á¬ááºážá¡áá
Ạááá¯á¡ááºáá«ááá¬áž?
+onboarding.tor-circuit-display.new-circuit.msg=áááºáááºáá±á¬ááºááẠááŒáá¯ážá
á¬ážáá±áá±á¬ áááºááá¯ááºááŸááºá· áá»áááºáááºááááá»áŸáẠáááºááẠá€ááá¯ááºá¡á¬ážá¡áá¯á¶ážááŒá¯á áááºááá¯ááºá¡á¬áž áááºážááŒá±á¬ááºážá¡áá
áºááŒááºá· ááŒááºáááºááá¯ááºáá«áááºá
diff --git a/chrome/locale/my/torbutton.dtd b/chrome/locale/my/torbutton.dtd
index eed16215..8f54338e 100644
--- a/chrome/locale/my/torbutton.dtd
+++ b/chrome/locale/my/torbutton.dtd
@@ -1,11 +1,15 @@
<!ENTITY torbutton.context_menu.new_identity "á¡áá±á¬ááºá¡áá¬áž á¡áá
áº">
-<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.networksettings "Open Network SettingsâŠ">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle Update...">
-<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "ááœááºáá®áž áá¬ááœááºááŸá¯áá»á¬áž">
-<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "Torbutton ááᯠá¡á
ááŒá¯ááẠááŸáááºáá«á">
+<!ENTITY torbutton.context_menu.new_identity_key "á">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "á">
+<!ENTITY torbutton.context_menu.networksettings "Tor ááœááºááẠá¡ááŒááºá¡áááºáá»á¬áž...">
+<!ENTITY torbutton.context_menu.networksettings.key "á">
+<!ENTITY torbutton.context_menu.downloadUpdate "Tor ááá±á¬ááºáᬠá¡ááºááááºá¡ááœáẠá
á
áºáá±ážáá«...">
+<!ENTITY torbutton.context_menu.downloadUpdate.key "á¡">
+<!ENTITY torbutton.context_menu.cookieProtections "ááœááºáá®áž á¡áá¬á¡ááœááºáá»á¬áž...">
+<!ENTITY torbutton.context_menu.cookieProtections.key "á">
+<!ENTITY torbutton.button.tooltip "Torbutton ááᯠá¡á
ááŒá¯ááẠááŸáááºáá«">
+<!ENTITY torbutton.prefs.security_settings "Tor ááá±á¬ááºáᬠáá¯á¶ááŒá¯á¶áá±áž á¡ááŒááºá¡áááºáá»á¬áž">
<!ENTITY torbutton.cookiedialog.title "ááœááºáá®áž áá¬ááœááºááŸá¯áá»á¬ážááᯠá
á®áá¶áááºá·ááœá²áááº">
<!ENTITY torbutton.cookiedialog.lockCol "á¡áá¬á¡ááœáẠáá¯ááºáá¬ážáááº">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -13,8 +17,37 @@
<!ENTITY torbutton.cookiedialog.pathCol "áááºážááŒá±á¬ááºáž">
<!ENTITY torbutton.cookiedialog.protectCookie "ááœááºáá®ážááᯠáá¬ááœááºáááº">
<!ENTITY torbutton.cookiedialog.removeCookie "ááœááºáá®ážááᯠáááºáá¯ááºáááº">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "ááœááºáá®ážááᯠáá¬ááœááºááá¬ážáá«">
-<!ENTITY torbutton.cookiedialog.removeAllBut "á¡á¬ážáá¯á¶ážááᯠáááºáá¯ááºáá«á ááá¯á·áá±á¬áº á¡áá¬á¡ááœáẠáá¯ááºáá¬ážáááº">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "ááœááºáá®ážááᯠááá¬ááœááºáá¬ážáá«">
+<!ENTITY torbutton.cookiedialog.removeAllBut "á¡á¬ážáá¯á¶ážááᯠáááºáá¯ááºáá«á ááá¯á·áá±á¬áº á¡áá¬á¡ááœáẠáá¯ááºáá¬ážáááº">
<!ENTITY torbutton.cookiedialog.saveAllCookies "ááœááºáá®ážáá
áºáá»á¬ážááᯠáá¬ááœááºáááº">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "ááœááºáá®ážáá
áºáá»á¬ážááᯠáá¬ááœááºááŒááºáž áááŒá¯áááº">
+<!ENTITY torbutton.prefs.sec_caption "áá¯á¶ááŒá¯á¶âáá±ážá¡áááºá·">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "áááºá· ááá±á¬ááºáá¬ááᯠáááºáá¬áá»á¬áž (hackers) á
á®áááºážááẠááá¯ááá¯áá¯áá¶á¡á¬ážáááºážá
á±áá±á¬ áááºá·ááá±á¬ááºáá¬á á¡áá»áá¯á·áá±á¬á¡ááºá¹áá«áááºáá»á¬ážááᯠáá¯á¶ááŒá¯á¶áá±áž ááœááºáááºáááááá¬á០ááááºáááºááá¯ááºáá«áááºá">
+<!ENTITY torbutton.prefs.sec_standard_label "áá¯á¶ááŸááº">
+<!ENTITY torbutton.prefs.sec_standard_description "Tor ááá±á¬ááºáᬠááŸááºá· áááºááá¯áẠá¡ááºá¹áá«áááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááœááºá·áá¬ážáá«áááºá">
+<!ENTITY torbutton.prefs.sec_safer_label "ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬">
+<!ENTITY torbutton.prefs.sec_safer_description " áááŒá¬áá á¡áá¹ááá¬ááºáá±ážááá¯ááºáá±á¬ áááºááá¯ááºá¡ááºá¹áá«áááºáá»á¬ážááᯠááááºáááºáá¬ážáá«áááºá ááá¯á·ááŒá
áºá á¡áá»áá¯á·áá±á¬ ááá¯ááºááá¯ááºááá¯ááºá
áœááºážáá»á¬áž áá¯á¶ážááŸá°á¶ážá
á±áááºá">
+<!ENTITY torbutton.prefs.sec_safer_list_label "ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬ á¡ááŒááºá¡áááºááœáẠ-">
+<!ENTITY torbutton.prefs.sec_safest_label "á¡áá¯á¶ááŒá¯á¶áá¯á¶áž">
+<!ENTITY torbutton.prefs.sec_safest_description "áááºááŒáááºáá±á¬ ááá¯ááºáá»á¬ážááŸááºá· á¡ááŒá±áá¶áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠááá¯á¡ááºáá±á¬ áááºááºááá¯ááºáá¡ááºá¹áá«áááºáá»á¬ážááá¯áᬠááœáá·áºááŒá¯áááºá á€ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááẠáá¯ááºáá¯á¶áá»á¬ážá áá®áá®áá¬áá»á¬áž ááŸááºá· áááá¯ááááºáá¬áá¬á
áá¬ážáá»á¬áž (scripts) ááá¯á·ááᯠááááá¯ááºá
á±áááºá">
+<!ENTITY torbutton.prefs.sec_safest_list_label "á¡áá¯á¶ááŒá¯á¶áá¯á¶áž á¡ááŒááºáááºááœáẠ-">
+<!ENTITY torbutton.prefs.sec_learn_more_label "áááºáá¶áá±á·áá¬áááº">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "HTTPS ááá¯ááºáá»á¬ážáá±á«áº ááá¯ááºáá±á¬ JavaScript ááá¯ááááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_js_disabled "ááá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážáá±á«áºááœáẠJavaScript ááᯠáá°áá¡ááŒááºá¡áááºá¡á ááááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_limit_typography "á¡áá»áá¯á·áá±á¬ á
á¬áá¯á¶ážá
ááá¯ááºáá»á¬áž ááŸááºá· áááºá¹áá»á¬áááºá¹áá±ááá»á¬ážááᯠááááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "á¡áá»áá¯á·áá±á¬ á
á¬áá¯á¶ážá
ááá¯ááºáá»á¬ážá á¡áá¯ááºááœááºáá»á¬ážá áááºá¹áá»á¬áááºá¹áá±ááá»á¬áž ááŸááºá· áá¯ááºáá¯á¶áá»á¬ážááá¯á·ááᯠááááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "á¡áá¶ ááŸááºá· áá®áá®ááá¯ááá¯ááºáá»á¬áž (HTML5 áá®áá®áá¬) ááŸááºá· WebGL ááá¯á·ááᯠááŸáááºáá
ááá¯ááºááẠ(click-to-play)">
+<!ENTITY torbutton.prefs.sec_custom_warning "á
áááºááŒáá¯áẠ">
+<!ENTITY torbutton.prefs.sec_overview "áááºá· áá¯á¶ááŒá¯á¶áá±ážááŸááºá· á¡áááºááŸááºááŸá¯ááá¯á·ááᯠááá¯ááºááá¯ááºá
á±ááá¯ááºáá±á¬ á¡áá»áá¯á·áá±á¬ áááºá¡ááºá¹áá«áááºáá»á¬ážááᯠááááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_standard_tooltip "áá¯á¶ááŒá¯á¶áá±ážá¡áááºá· - áá¯á¶ááŸááº">
+<!ENTITY torbutton.prefs.sec_safer_tooltip "áá¯á¶ááŒá¯á¶áá±ážá¡áááºá· - ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬">
+<!ENTITY torbutton.prefs.sec_safest_tooltip "áá¯á¶ááŒá¯á¶áá±ážá¡áááºá· - á¡áá¯á¶ááŒá¯á¶áá¯á¶áž">
+<!ENTITY torbutton.prefs.sec_custom_summary "ááẠá
áááºááŒáá¯ááºááœá±ážáá¬ážáá±á¬ ááá±á¬ááºáá¬á áá»áááºááŸáááŸá¯áá»á¬ážááẠáá¯á¶ááŸááºááá¯ááºáá±á¬ áá¯á¶ááŒá¯á¶áá±áž á¡ááŒááºá¡áááºáá»á¬áž ááŒá
áºáá±á«áºá
á±áá²á·áá«áááºá áá¯á¶ááŒá¯á¶áá±ážááŸááºá· áá¯áá¹ááá¯ááºáá¯á¶ááŒá¯á¶áá±áž á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá¡ááœáẠáá°ááá¯á¶ááŒá¯á¶áá±ážá¡áááºá·ááá¯á· ááœá±ážáá¬ážááẠáá»áœááºá¯ááºááá¯á·á០á¡ááŒá¶ááŒá¯áá«áááºá">
<!ENTITY torbutton.prefs.sec_restore_defaults " áá°áá¡ááá¯ááºáž ááŒááºáá¬ážáááº">
+<!ENTITY torbutton.prefs.sec_advanced_security_settings "á¡áááºá·ááŒááºá· áá¯á¶ááŒá¯á¶áá±áž á¡ááŒááºá¡áááºáá»á¬áž...">
+<!ENTITY torbutton.circuit_display.title "Tor áááºážááŒá±á¬ááºáž">
+<!ENTITY torbutton.circuit_display.new_circuit "á€ááá¯ááºá¡ááœáẠáááºážááŒá±á¬ááºážá¡áá
áº">
+
+<!-- Onion services strings. Strings are kept here for ease of translation. -->
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Onion áááºáá±á¬ááºááŸá¯ áá¯á¶ážáá°á¡áááºááŒá¯ááẠáá±á¬ááºážááá¯á
ᬠááœááºá·áá«">
+<!ENTITY torbutton.onionServices.authPrompt.persistCheckboxLabel "á€áá®ážáá¯ááºá¡á¬áž ááŸááºáá¬ážáá«">
diff --git a/chrome/locale/my/torbutton.properties b/chrome/locale/my/torbutton.properties
index 3fa0d7cd..e8a57655 100644
--- a/chrome/locale/my/torbutton.properties
+++ b/chrome/locale/my/torbutton.properties
@@ -1,23 +1,140 @@
-extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.external.title = ááŒááºáá០á¡ááŒá±á¬ááºážá¡áá¬ááᯠááœááºá·áááº
-torbutton.popup.external.app = ááŒááºá á¡áá¹ááá®áá±ážááŸááºáž áá
áºáá¯ááᯠááŒá±ááŸááºážááẠááá¯á¡ááºááẠ- \n\n
-torbutton.popup.external.note = \n\nááŸááºáá»áẠ- ááŒááºá á¡áá¹ááá®áá±ážááŸááºážáá»á¬ážááẠáá¯á¶ááŸááºá¡á¬ážááŒááºá· áá¯á¶ááŒá¯á¶áá±á¬ Tor ááá¯ááºáá«á áááºážá áááºá·ááᯠáá±á«áºááá¯ááºáááºá\n
-torbutton.popup.external.suggest = \ná¡áááºá á€ááá¯ááºááᯠá
áááºááá»áá«áá ááẠá¡á±á¬á·ááºááá¯ááºáž ááŸááá±áá»áááºá (ááá¯á·) VM áá
áºáá¯áá²ááœááº\n ááŸááá±áá»áááºááœáẠáááºážááᯠááŒááºá·ááẠááẠááááºážáááºážáá¬ážááá¯ááºááẠ(ááá¯á·) Tails LiveCD ááá¯á·ááá¯ááº\n torsocks ááá¯á·áá²á·ááá¯á·áá±á¬ Tor ááá±á¬ááºáá®ááᯠáá¯á¶ážá
áœá²ááẠá
ááºážá
á¬ážáá«á\n
-torbutton.popup.launch = á¡áá¹ááá®áá±ážááŸááºážááᯠááœááºá·áááº
-torbutton.popup.cancel = áá»ááºááááºážáááº
-torbutton.popup.dontask = ááá¯á¡áá»áááºááŸá
ááŒá®áž á¡áá¹ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡ááŒá² ááœááºá·áááº
-torbutton.popup.prompted_language = áááºá· ááá¯ááºáá±ážááá¯ááºáᬠáá¯á¶ááŒá¯á¶áá±ážááᯠááá¯ááᯠáááŸááááºá Torbutton ááẠááœááºááẠá
á¬áá»ááºááŸá¬áá»á¬ážááᯠá¡ááºá¹ááááẠáá¬áᬠáá¬ážááŸááºážááŒááºá· áá±á¬ááºážáá¶áá±ážááá¯ááºáááºá áááºážááá¯á·ááŒá¯áá¯ááºááŒááºážááẠáááºá· áá¬áá¬ááŒááºá· áááºááŸá¯ááá¯áá±á¬ ááœááºááẠá
á¬áá»ááºááŸá¬áá»á¬ážááᯠá¡ááºá¹ááááẠáá¬áá¬áááŒááºá· áá±á«áºááŒáá±ááẠááŒá
áºáááºá\n\náá¯á¶ááŒá¯á¶ááŸá¯ ááá¯ááŸááááºá¡ááœáẠá¡ááºá¹ááááẠáá¬áá¬ááŒááºá· ááœááºáááºá
á¬áá»ááºááŸá¬áá»á¬ážááᯠááẠáá±á¬ááºážáá¶ááá¯á
áá¬áž?
-torbutton.popup.no_newnym = Torbutton ááẠáááºá·á¡á¬áž á¡áá±á¬ááºá¡áá¬áž á¡áá
áºááᯠáá¯á¶áá¯á¶ááŒá¯á¶ááŒá¯á¶ ááá±ážááá¯ááºáá«á áááºážááẠTor ááááºážáá»á¯ááºáá±áž Port áá² ááááºáá±á¬ááºááá¯ááºáá«á\n\nTor Browser Bundle ááᯠááẠáá¯á¶ážá
áœá²áá±ááá¬áž?
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
-
-torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
-torbutton.popup.never_ask_again = Never ask me again
+torbutton.circuit_display.internet = á¡ááºáá¬áááº
+torbutton.circuit_display.ip_unknown = áááááŸááá±á¬ IP
+torbutton.circuit_display.onion_site = Onion ááá¯ááº
+torbutton.circuit_display.this_browser = ဠááá±á¬ááºáá¬
+torbutton.circuit_display.relay = áááºáááºá·áááºáž
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = áááááŸááá±á¬ ááá¯ááºáá¶
+torbutton.circuit_display.guard = á
á±á¬ááºá·
+torbutton.circuit_display.guard_note = áááºá [Guard] node áááºááŒá±á¬ááºážáá²ááẠááá¯ááºáá«á
+torbutton.circuit_display.learn_more = áááºáá¶áá±á·áá¬áááº
+torbutton.circuit_display.click_to_copy = áá±á¬áºáá®áá°ážááẠááŸáááºáá«
+torbutton.circuit_display.copied = áá±á¬áºáá®áá°ážááŒá®áž!
+torbutton.content_sizer.margin_tooltip = Tor ááá±á¬ááºáá¬ááẠáááºá· áááºážááá¯ážá á¡áá»ááºááŸááºá· á¡ááŒááºá·ááᯠááááºááá°ážááŒá¬ážá¡á±á¬áẠá€á¡áá¬ážááẠáááºáá±á«ááºážáá±ážáá«áááºá ááá¯á·ááŒááºá· á¡ááŒá¬ážáá°áá»á¬ážááẠáááºá·á¡á¬áž á¡áœááºááá¯ááºážáá±á«áºááœáẠááá¯ááºááŸá¬ááœá±ááá¯ááºááŒááºáž áá»á±á¬á·áááºážá
á±áááºá
+extensions.torbutton(a)torproject.org.description = Torbutton ááẠTor á¡ááŒááºá¡áááºáá»á¬áž áá»áááºáááẠááŸááºá· á¡áœááºááá¯ááºážáá±á«áº ááá¯ááºááá¯ááºááŸá¯ááºááŸá¬ážááŸá¯áá¬ááááºá¡á¬áž ááœááºáá°áá»ááºááŒááºá
áœá¬ ááŸááºážáááºážááẠááá¯ááºáá
áºáᯠáá±ážáá«áááºá
+torbutton.popup.external.title = ááŒááºáááá¯ááºá¡áá»áá¯ážá¡á
á¬áž áá±á«ááºážáá¯ááºáá¯ááºáááºáá¬áž?
+torbutton.popup.external.app = Tor ááá±á¬ááºáá¬ááẠá€ááá¯ááºá¡á¬áž ááŒáááá¯á·áááá«á á¡ááŒá¬áž á¡áá¹ááá®áá±ážááŸááºážááŒááºá· áááºá០ááœááºá·áááºááá¯á¡ááºáá«áááºá\n\n
+torbutton.popup.external.note = á¡áá»áá¯á·ááá¯ááºá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááẠá¡áá¹ááá®áá±ážááŸááºážáá»á¬ážá¡á¬áž Tor á¡áá¯á¶ážáááŒá¯áá² á¡ááºáá¬áááºááŸááºá· áá»áááºááẠá
á±ááá¯ááºáá«áááºá\n\n
+torbutton.popup.external.suggest = áá¯á¶ááŒá¯á¶á
á±ááẠáááºááẠá¡áœááºááá¯ááºážáá±á«áºáááŸááá»ááẠááá¯á·ááá¯áẠTails ááá¯áá»áá¯áž Tor Live CD á¡áá¯á¶ážááŒá¯ááᬠáá±á«ááºážáá¯ááºááœá²áá¬ážáá±á¬ááá¯ááºáá»á¬ážááᯠááœááºá·áááºá·áá«áááºá\n
+torbutton.popup.launch = ááá¯ááºáá±á«ááºážáá¯ááºáááº
+torbutton.popup.cancel = áááºáá»ááºáááº
+torbutton.popup.dontask = ááá¯á¡áá»áááºááŸá
á ááá¯ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá±á«ááºážáá¯ááºááœá²áááº
+torbutton.popup.no_newnym = Torbutton ááẠáááºá·á¡á¬áž á¡áá±á¬ááºá¡áá¬áž á¡áá
áºááᯠáá¯á¶áá¯á¶ááŒá¯á¶ááŒá¯á¶ ááá±ážááá¯ááºáá«á áááºážááẠTor ááááºážáá»á¯ááºáá±áž Port áá² áááºáá±á¬ááºááœááºá·áááŸááá«á\n\nTor Browser Bundle ááᯠááẠáá¯á¶ážá
áœá²áá±áá«ááá¬áž?
+torbutton.security_settings.menu.title = áá¯á¶ááŒá¯á¶áá±áž á¡ááŒááºá¡áááºáá»á¬áž
+torbutton.title.prompt_torbrowser = á¡áá±ážááŒá®ážáá±á¬ Torbutton á¡áá»ááºá¡áááº
+torbutton.popup.prompt_torbrowser = Torbutton ááẠááá¯á¡áá« á¡áá¯ááºáá¯ááºáá¯á¶ ááá°áá±á¬á·áá«á áááºá áááºážááá¯ááºááᯠááááºááá¯á·áááá±á¬á·áá«á\n\nTor ááá«áá² ááá±á¬ááºáá¬ááᯠá¡áá¯á¶ážááŒá¯áá¯ááºáž Torbutton ááᯠááá±á¬ááºáá¬á¡ááœááºáž á¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯á¶ááŒá¯á¶á áá»áœááºá¯ááºááá¯á·á០á€ááŒá±á¬ááºážáá²áá»áẠááŒá¯áá¯ááºáá²á·áá«áááºá áá»ááºááœááºááŸá¯áá»á¬áž áá»á¬ážááœááºážá á¡ááŒá¬ážáááºážáááºážááŸááºá· ááŒá¯ááŒááºááá¯á·áááá±á¬á·ááá¯á·áá«á\n\náááºááŸâ Firefox á¡á¬áž áá¯á¶ááŸááºááá¯áá¯á¶ážá
áœá²ááá¯áá»áŸáẠáááºá០Torbutton á¡á¬áž áááºáá¯ááºá
áŒá®áž Tor Browser Bundle ááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºá·áá«áááºá Tor ááá±á¬ááºáᬠá áá¯áá¹ááá¯ááºáá±ážá¡ááºá¹áá«áááºáá»á¬ážááẠáá¬ááẠááá±á¬ááºáá¬ááẠááá¯áá±á¬ááºážáá«áááºá Firefox ááᯠTorbutton ááŸááºá·áá¯á¶ážáá¬áááºáááºáž ááá¯áá¬áá«áááºá\n\nTorbutton á¡á¬áž áááºáá¯ááºááẠTools > Addons > Extensions ááá¯á·ááœá¬ážá Torbutton áá±ážááŸááá±á¬ "áááºáá¯ááºáááº" ááá¯áááºá· ááá¯ááºá¡á¬ážááŸáááºáá±ážáá«á
+torbutton.popup.short_torbrowser = á¡áá±ážááŒá®ážáá±á¬ Torbutton á¡áá»ááºá¡áááº!\n\nTorbutton ááẠááá¯á¡ááŒá²ááœááºá·áá¬ážáá«áááºá\n\nTorbutton á¡á¬áž ááŸáááºá á¡áá»ááºá¡áááºáá»á¬áž áááºáá¶áá±á·áá¬áá«á
+
+torbutton.popup.confirm_plugins = Flash ááá¯áá»áá¯áž ááá¯ážááœá²áá±á¬ ááááºááẠáá±á¬á·áá² (plugins) áá»á¬ážááẠáááºá· áááá¹áá¯áá¯á¶ááŒá¯á¶áá±ážááŸááºá· á¡áááºááŸááºááŒááºážááá¯á·ááᯠááááá¯ááºááá¯ááºá
á±áá«áááºá\n\náááºážááá¯á·ááẠáááºá·ááᯠáááºáá±áá¬ááŸááºá· IP ááááºá
á¬ááá¯á·ááᯠáá±á«áºáá¯ááºááẠTor ááᯠááŒááºáá»á±á¬áºááá¯ááºáá«áááºá\n\nááá¯ážááœá²áá±á¬ ááááºááẠáá±á¬á·áá² (plugins) áá»á¬ážááᯠááœááºá·áááºááŸá¬ áá±áá»á¬áá«ááá¬áž?\n\n
+torbutton.popup.never_ask_again = áá»áœááºá¯ááºáá¶ áááºáááºá·á¡áá»áááºáá»áŸ áááºááá±ážáá«ááŸááºá·
+torbutton.popup.confirm_newnym = Tor ááá±á¬ááºáá¬ááẠáááºááá¯ážááŸááºá· áááºááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááááºáá«áááºá áááºááá¯áẠáááºááŒááºážáá»á¬áž á¡á¬ážáá¯á¶áž áá¯á¶ážááŸá°á¶ážááœá¬ážáá«áááºá\n\náááºá· ááá¯ááºáá±áž á¡áá±á¬ááºá¡áá¬ážáá»á¬áž ááŒááºáááºáááºáááºáá»ááẠTor ááá±á¬ááºáá¬ááᯠááááºááŒá®ážááŒááºááœááºá· ááá¬áž?\n\n
+
+torbutton.maximize_warning = Tor ááá±á¬ááºáá¬ááᯠá¡ááŒá®ážáá¯á¶ážááá¯ááºá¡áá áá»á²á·ááŒááºážá¡á¬ážááŒááºá· áááºááá¯ááºáá»á¬ážááẠáááºá· á
áááºááẠá¡ááœááºá¡á
á¬ážááᯠááááŸáááá¯ááºááŒá®áž áááºá·á¡á¬áž ááá¯ááºááŸá¬ááá¯á·áááá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·á០áááºá· Tor ááá±á¬ááºáᬠáááºážááá¯ážááᯠáá°áááºážá¡ááœááºá¡á
á¬ážááŒááºá· áá¬ážááẠá¡ááŒá¶ááŒá¯áá«áááºá
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
-canvas.allow=Allow in the Future
+canvas.siteprompt=á€áááºááá¯ááºááẠ(%S) HTML5 ááá¹áá°áá¯ááºáá¯á¶áá±áá¬ááᯠáá¯ááºáá°ááẠááŒáá¯ážá
á¬ážáá±áá«áááºáâ áááºážáá±áá¬ááŒááºá· áááºá· ááœááºáá»á°áá¬ááᯠáááá»á
áœá¬áá±á«áºáá¯ááºááá¯ááºáá«áááºá\n\nTor ááá±á¬ááºáá¬á០áááºážáááºááá¯áẠHTML5 ááá¹áá°áá¯ááºáá¯á¶áá±áᬠáá¯ááºáá°ááŒááºážááᯠááœááºá·ááŒá¯ááááºáá¬áž?
+canvas.notNow=ááá¯ááá¯ááº
+canvas.notNowAccessKey=á
+canvas.allow=áá±á¬ááºááœáẠááœááºá·ááŒá¯áááº
canvas.allowAccessKey=A
-canvas.never=Never for This Site
+canvas.never=ဠááá¯ááºá¡ááœáẠáááºááá·áºá¡áá»áááºááŸá (á¡ááŒá¶ááŒá¯áááº)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S áááá¯ááá¯áẠááŒá¿áá¬
+profileReadOnly=%S á¡á¬áž áááºáááºá¡ááœááºáᬠáááºááŸááºáá¬ážáá±á¬ ááá¯ááºá
áá
áºááŒááºá· (read-only file system) áááœááºá·ááá¯ááºáá«á áá»á±ážáá°ážááŒá¯á áááºážá¡á¬áž á
ááºáážáá¯á¶ážáá® á¡ááŒá¬ážáá±áá¬ááá¯á· %S á¡á¬áž áá±á¬áºáá®áá°ážáá±ážáá«á
+profileReadOnlyMac=%S á¡á¬áž áááºáááºá¡ááœááºáᬠáááºááŸááºáá¬ážáá±á¬ ááá¯ááºá
áá
áºááŒááºá· (read-only file system) áááœááºá·ááá¯ááºáá«á áá»á±ážáá°ážááŒá¯á áááºážá¡á¬áž á
ááºáážáá¯á¶ážáá® áááºá· Desktop ááá¯á·ááá¯áẠá¡áá¹ááá®áá±ážááŸááºážááá¯ááºááœá² áá²ááá¯á· %S á¡á¬áž áá±á¬áºáá®áá°ážáá±ážáá«á
+profileAccessDenied=%S ááẠáááá¯ááá¯áẠáá¯á¶ážááœááºá·áááŸááá«á áá»á±ážáá°ážááŒá¯á áááºá· ááá¯ááºá
áá
áºááœááºá·ááŒá¯áá»ááºáá»á¬áž ááŒá±á¬ááºážáá²á ááŒááºá
ááºážááŒááºá·áá±ážáá«á
+profileMigrationFailed=áááºá· %S áááá¯ááá¯áẠááŒá±á¬ááºážáá²ááŒááºážáá¡á±á¬ááºááŒááºáá«á\ná¡ááŒááºá¡áááºá¡áá
áºáá»á¬áž áá¯á¶ážá
áœá²áá«áááºá
+
+# "Downloading update" string for the hamburger menu (see #28885).
+# This string is kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+updateDownloadingPanelUILabel=%S á¡ááºáááºá¡á¬áž áá±á«ááºážáá¯ááºááœá²áá±áá«áááº
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=áá»áááºáááºááŸá¯á¡á¬áž áá¯ááºááŒááºá·ááŒá±á¬ááºážáá²ááŸááºááŒá®áž (Onion áááºáá±á¬ááºááŸá¯á %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=áá»áááºáááºááŸá¯á¡á¬áž áá¯ááºááŒááºá·ááŒá±á¬ááºážáá²ááŸááºááŒá®áž (Onion áááºáá±á¬ááºááŸá¯)
+pageInfo_OnionName=Onion á¡ááẠ-
+
+# Onion services strings. Strings are kept here for ease of translation.
+onionServices.learnMore=áááºáá¶áá±á·áá¬áááº
+onionServices.errorPage.browser=ááá±á¬ááºáá¬
+onionServices.errorPage.network=ááœááºáááº
+onionServices.errorPage.onionSite=Onionsite
+# LOCALIZATION NOTE: In the longDescription strings, %S will be replaced with
+# an error code, e.g., 0xF3.
+# Tor SOCKS error 0xF0:
+onionServices.descNotFound.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.descNotFound.header=Onionsite áááœá±á·ááŸááá«
+onionServices.descNotFound=á¡ááŒá
áºááá¯ááºáá¯á¶áž á¡ááŒá±á¬ááºážáááºážááẠOnionsite ááá¯ááºážáá»ááŒááºážááŒá±á¬ááºá·ááŒá
áºáá«áááºá Onionsite á
á®áá¶áá°á¡á¬áž áááºááœááºáá±ážáá«á
+onionServices.descNotFound.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá±á¬ááºážááá¯áá¬ážáá±á¬ onion áááºáá±á¬ááºááŸá¯ áá±á«áºááŒá
á¬ááẠhashring ááœááºáááœá±á·ááŸáá áá¯á¶ážáá°á០áááºáá±á¬ááºááŸá¯á¡á¬áž áááºááŸááºážááá®ááá¯ááºáá«á
+# Tor SOCKS error 0xF1:
+onionServices.descInvalid.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.descInvalid.header=Onionsite á¡á¬áž ááá®ááá¯ááºáá«
+onionServices.descInvalid=Onionsite á¡á¬áž ááá®ááá¯ááºááŒááºážááẠá¡ááœááºážááŒá
áºáá±á¬ áá»ááºááœááºááŸá¯ááŒá±á¬ááºá·ááŒá
áºáá«áááºá
+onionServices.descInvalid.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá±á¬ááºážááá¯áá¬ážáá±á¬ onion áááºáá±á¬ááºááŸá¯ áá±á«áºááŒá
á¬ááẠáááºážá
á
áºááááá« ááá¯á·ááá¯áẠáááºááŸááºá¡áááºááŒá¯ááŒááºáž áá¡á±á¬ááºááŒááºáá«á
+# Tor SOCKS error 0xF2:
+onionServices.introFailed.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.introFailed.header=Onionsite ááŸááºá· áá»áááºáááºááŸá¯ááŒááºááœá¬áž
+onionServices.introFailed=á¡ááŒá
áºááá¯ááºáá¯á¶áž á¡ááŒá±á¬ááºážáááºážááẠOnionsite ááá¯ááºážáá»ááŒááºážááŒá±á¬ááºá·ááŒá
áºáá«áááºá Onionsite á
á®áá¶áá°á¡á¬áž áááºááœááºáá±ážáá«á
+onionServices.introFailed.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â ááááºáááºááŸá¯áá¡á±á¬ááºááŒááºáá«á ááá¯áááºááŸá¬ áá±á«áºááŒá
á¬ááœá±á·ááŸááá±á¬áºáááºáž áááºáá±á¬ááºááŸá¯ááẠááááºáááºááŸá¯ááŒá
áºááŒááºážá¡áá áá»áááºáááºááŸá¯ áááŸááá«á ááŒá
áºááá¯ááºááŒá±ááŸá¬ áááºáá±á¬ááºááŸá¯á០áá±á«áºááŒá
á¬á¡á¬áž ááŒá±á¬ááºážáá²áá¬ážááẠááá¯á·ááá¯áẠáááºážááẠá¡áá¯ááºááá¯ááºáá±á¬á·áá«á
+# Tor SOCKS error 0xF3:
+onionServices.rendezvousFailed.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.rendezvousFailed.header=Onionsite ááŸááºá· áá»áááºáááºááá
+onionServices.rendezvousFailed=Onionsite ááẠáá¡á¬ážáá« ááá¯á·ááá¯áẠTor áá»áááºáááºááŸá¯ááẠáááºáááºááœááºážáá±áá«áááºá áá±á¬ááºááŸááŒááºá
ááºážááŒááºá·áá±ážáá«á
+onionServices.rendezvousFailed.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá¯á¶ážáá°áááºá០áááºáá±á¬ááºááŸá¯ááŸááºá· ááŒááºáááºááœá±á·áá¯á¶ááŒááºáž áá»ááºááœááºáá²á·á áá¯á¶ážáá°á០áá»áááºáááºááŸá¯á¡á¬áž áááŒá®ážá
á®ážááá¯ááºáá«á
+# Tor SOCKS error 0xF4:
+onionServices.clientAuthMissing.pageTitle=á¡áááºááŒá¯ááŒááºáž ááá¯á¡ááºáá«áááº
+onionServices.clientAuthMissing.header=Onionsite ááẠá¡áááºááŒá¯ááŒááºáž ááá¯á¡ááºáá«áááº
+onionServices.clientAuthMissing=Onionsite áá²áááºáá±á¬ááºááẠáá¯ááºáá±á¬á·áá
áºáᯠááá¯á¡ááºáá«áááºá ááá¯á·áá±á¬áºáááºáž áááºáááºá·áá¯ááºáá±á¬á·á០ááááºáá¶ááœá±á·ááŸááá«á
+onionServices.clientAuthMissing.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá¯á¶ážáá°á០áá±á¬ááºážááá¯áá¬ážáá±á¬ Onion áááºáá±á¬ááºááŸá¯á áá±á«áºááŒá
á¬á¡á¬áž áá±á«ááºážáá¯ááºááœá²áá²á·áá«áááºáâ ááá¯á·áá±á¬áºáááºáž áá¯á¶ážáá°á¡áááºááŒá¯ááẠá¡áá»ááºá¡áááºáá»á¬áž áááœá±á·ááŸáá áááºážá¡áá¬áá»á¬ážááᯠáá¯ááºááŒááºááŒááºááŒááºážáááá«á
+# Tor SOCKS error 0xF5:
+onionServices.clientAuthIncorrect.pageTitle=á¡áááºááŒá¯ááŒááºáž áá¡á±á¬ááºááŒááºáá«
+onionServices.clientAuthIncorrect.header=Onionsite á¡áááºááŒá¯ááŒááºáž áá¡á±á¬ááºááŒááºáá«
+onionServices.clientAuthIncorrect=áááºáá¶áááŸááá¬ážáá±á¬ áá®ážáá¯ááºááẠááŸá¬ážááœááºážáá±áá«ááẠááá¯á·ááá¯áẠááŒááºáááºáá¯ááºááááºážáá¶áá¬ážááá«áááºá Onionsite á
á®áá¶áá°á¡á¬áž áááºááœááºáá±ážáá«á
+onionServices.clientAuthIncorrect.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá¯á¶ážáá°á០áá±á¬ááºážááá¯áá¬ážáá±á¬ Onion áááºáá±á¬ááºááŸá¯á áá±á«áºááŒá
á¬á¡á¬áž áá±á«ááºážáá¯ááºááœá²ááá¯ááºáá²á·áá«áááºáâ ááá¯á·áá±á¬áºáááºáž áá¯á¶ážáá°á á¡áááºááŒá¯áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážáá¯á¶ážá áááºážá¡áá¬áá»á¬ážááᯠáá¯ááºááŒááºááŒááºááŒááºážáááá«á ááá¯áááºááŸá¬ áááºáá±á¬ááºáá¯á¶ážááœááºá· ááŒááºáááºáá¯ááºááááºážáá¶áááŒááºáž ááŒá
áºááá¯ááºáá«áááºá
+# Tor SOCKS error 0xF6:
+onionServices.badAddress.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.badAddress.header=Onionsite ááááºá
ᬠáááŸááºáááºáá«
+onionServices.badAddress=áááºáá¶áá±ážáá¬ážáá±á¬ Onionsite ááááºá
á¬ááẠáááŸááºáááºáá«áâ áá»á±ážáá°ážááŒá¯á ááŸááºáááºá
áœá¬ ááŒááºážáá¬ážáá±ážááẠá
á
áºáá±ážáá«á
+onionServices.badAddress.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áááºáá¶áá±ážáá¬ážáá±á¬ .onion ááááºá
á¬ááẠáááŸááºáááºáá«á á€ááŸá¬ážááœááºážááŸá¯ááẠá¡á±á¬ááºáá«á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááŒá±á¬ááºá·ááŒá
áºáá«ááẠ- ááááºá
á¬á
á¬áá¯á¶ážááœá² áááá¯ááºáá®áá«áâ ed25519 á¡áá»á¬ážáá¯á¶ážáá®ážáá¯ááºááẠáááŸááºáááºáá« ááá¯á·áºááá¯áẠáá¯ááºááŒááºá·ááŒá±á¬ááºážáá²ááŸááºááŒááºážááẠá¡áá»á¯á¶ážááááºáá«á
+# Tor SOCKS error 0xF7:
+onionServices.introTimedOut.pageTitle=Onionsite á¡á¬ážáááºááŒááºáž ááŒá¿áá¬ááŸááá«áááº
+onionServices.introTimedOut.header=Onionsite ááŒááºáááºážáááºáá®ážááŒááºáž á¡áá»áááºáá¯ááºáá¯á¶ážááœá¬ážáá«ááŒá®
+onionServices.introTimedOut=Onionsite ááŒááºá· áá»áááºáááºááŸá¯ áá¡á±á¬ááºááŒááºáá«á áá»áááºáááºááŸá¯ááá¯ááºáž ááá±á¬ááºážáá±á¬ááŒá±á¬ááºá· ááŒá
áºááá¯ááºáá«áááºá
+onionServices.introTimedOut.longDescription=á¡áá»ááºá¡áááºáá»á¬áž - %S â áá±á¬ááºážááá¯áá¬ážáá±á¬ Onion áááºáá±á¬ááºááŸá¯ááŒááºá· áá»áááºáááºááŸá¯ ááŒááºáááºážáááºááœááºáá±áá¯ááºáž á¡áá»áááºáá¯ááºáá¯á¶ážááœá¬ážáá«ááŒá®á
+#
+# LOCALIZATION NOTE: %S will be replaced with the .onion address.
+onionServices.authPrompt.description2=%S ááẠáááºá¡áááºááŒá¯ááẠáá±á¬ááºážááá¯áá±áá«áááºá
+onionServices.authPrompt.keyPlaceholder=ဠonion áááºáá±á¬ááºááŸá¯á¡ááœáẠáááºá· áá®ážáááºá·áá®ážáá¯ááºá¡á¬áž ááá¯ááºáááºá·áá±ážáá«á
+onionServices.authPrompt.done=ááŒá®ážááœá¬ážááŒá®
+onionServices.authPrompt.doneAccessKey=d
+onionServices.authPrompt.invalidKey=á¡áá»á¯á¶ážáááºáá±á¬ áá®ážáá¯áẠááá¯ááºáááºá·áá±ážáá«â ((52 base32 á
á¬áá¯á¶ážáá»á¬áž ááá¯á·ááá¯áẠ44 base64 á
á¬áá¯á¶ážáá»á¬áž)
+onionServices.authPrompt.failedToSetKey=áááºá· áá®ážáá¯ááºááŒááºá· Tor á¡á¬áž áá»áááºáááŒááºáááºá áááá«
+onionServices.authPreferences.header=Onion áááºáá±á¬ááºááŸá¯áá»á¬áž á¡áááºááŒá¯ááŒááºáž
+onionServices.authPreferences.overview=á¡áá»áá¯á· onion áááºáá±á¬ááºááŸá¯áá»á¬áž á¡áá¯á¶ážáááŒá¯ááẠáá®ážáá¯áẠ(á
áá¬ážááŸááºááá¯áá»áá¯áž) ááŒááºá· áááºá·á¡áá±á¬ááºá¡áá¬ážááŒááẠááá¯á¡ááºáá«áááºá
+onionServices.authPreferences.savedKeys=ááááºážáá¬ážáá±á¬ áá®ážáá¯ááºáá»á¬áž...
+onionServices.authPreferences.dialogTitle=Onion áááºáá±á¬ááºááŸá¯ áá®ážáá¯ááºáá»á¬áž
+onionServices.authPreferences.dialogIntro=á¡á±á¬ááºáá« onionsites áá»á¬ážá¡ááœáẠáá®ážáá¯ááºáá»á¬ážááẠáááºá· ááœááºáá»á°áá¬áá±á«áºááœáẠááááºážáááºážáá¬áá«áááº
+onionServices.authPreferences.onionSite=Onionsite
+onionServices.authPreferences.onionKey=áá®ážáá¯ááº
+onionServices.authPreferences.remove=áááºááŸá¬ážáááº
+onionServices.authPreferences.removeAll=á¡á¬ážáá¯á¶áž áááºááŸá¬ážáááº
+onionServices.authPreferences.failedToGetKeys=Tor á០áá®ážáá¯ááºáá»á¬áž áááá°ááá¯ááºáá«
+onionServices.authPreferences.failedToRemoveKey=áá®ážáá¯áẠáááºááŸá¬ážááááá«
+
+# Onion-Location strings.
+onionLocation.alwaysPrioritize=Onions áá»á¬ážááᯠá¡ááŒá² á¥á®ážá
á¬ážáá±ážáááº
+onionLocation.alwaysPrioritizeAccessKey=P
+onionLocation.notNow=ááá¯ááá¯ááº
+onionLocation.notNowAccessKey=P
+onionLocation.description=Tor ááœááºáááºáá±á«áºááœáẠonion áááºáá±á¬ááºááŸá¯áá»á¬ážááŒááºá· áá
áºáááºá· ááá¯ááá¯áá¯á¶ááŒá¯á¶á
áááºáá»ááá±á¬ áááºážááá¯ááºá áá¬ážááŸááºážááŸááá«áááºá Onion áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáááºááá¯ááºáá¯ááºáá±áá°áá»á¬áž ááŸááºá· áá¯á¶ážáá°áá»á¬ážá¡ááœáẠá
á±á¬ááºá·ááŒááºá·ááá¯ááºáá¶ááŒááºáž ááŸááºá· áááºáá¬ááŒááºáá¶áááŒááºážááá¯á·ááᯠááŸáááºáááºážáá±ážááá¯ááºáá«áááºá
+onionLocation.tryThis=Onion áááºáá±á¬ááºááŸá¯áá»á¬áž á
ááºážáá¯á¶ážááŒááºá·áá«
+onionLocation.onionAvailable=.onion áááŸáááá¯ááº
+onionLocation.learnMore=áááºáá¶áá±á·áá¬áááº...
+onionLocation.always=á¡ááŒá²áááºáž
+onionLocation.askEverytime=á¡áá»áááºááá¯ááºážáá±ážáá«
+onionLocation.prioritizeOnionsDescription=.onion ááá¯ááºáá»á¬áž ááááŸááá»áŸáẠáááºážááá¯á·ááᯠá¥á®ážá
á¬ážáá±ážáá«á
+onionLocation.onionServicesTitle=Onion Services
diff --git a/import-translations.sh b/import-translations.sh
index f2b0fd86..4c202fba 100755
--- a/import-translations.sh
+++ b/import-translations.sh
@@ -2,7 +2,7 @@
# This var comes from the TBB locale list.
# XXX: Find some way to keep this, tor-launcher, and Tor Browser in sync
-BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt nb-NO mk ms nl pl pt-BR ro ru sv-SE th tr vi zh-CN zh-TW"
+BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt nb-NO mk ms my nl pl pt-BR ro ru sv-SE th tr vi zh-CN zh-TW"
# XXX: Basque (eu) by request in #10687.
# This is not used for official builds, but should remain so Basque XPIs can be
diff --git a/jar.mn b/jar.mn
index 3838bc9b..c8fd813f 100644
--- a/jar.mn
+++ b/jar.mn
@@ -66,6 +66,8 @@ torbutton.jar:
locale/mk/ (chrome/locale/mk/*)
% locale torbutton ms %locale/ms/
locale/ms/ (chrome/locale/ms/*)
+% locale torbutton my %locale/my/
+ locale/my/ (chrome/locale/my/*)
% locale torbutton nb-NO %locale/nb-NO/
locale/nb-NO/ (chrome/locale/nb-NO/*)
% locale torbutton nl %locale/nl/
1
0

[tor-browser-build/maint-10.0-android] Bug 40241: Update components for mozilla87-based Fenix (application-services part)
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 3e88cbe26853cb79212ed7405dfe23ba761feed5
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Tue Mar 9 19:35:52 2021 +0100
Bug 40241: Update components for mozilla87-based Fenix (application-services part)
---
projects/application-services/config | 22 +-
.../gradle-dependencies-list.txt | 125 ++---
.../application-services/update-cargo-lock.patch | 146 +++--
.../application-services/viaduct-workaround.patch | 16 +-
.../application-services/viaduct-workaround2.patch | 588 +--------------------
projects/uniffi-rs/config | 8 +-
6 files changed, 164 insertions(+), 741 deletions(-)
diff --git a/projects/application-services/config b/projects/application-services/config
index 11fc5d7..951d5b0 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: 67.2.0
-git_hash: 4cc798c8cd8a1e38ce88e0bb22a05692be63b164
+version: 71.0.0
+git_hash: 1ee6b32f3ee569036fdf1015cf7ffc01ded2860f
git_url: https://github.com/mozilla/application-services
git_submodule: 1
@@ -9,13 +9,11 @@ var:
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 4
+ gradle_dependencies_version: 5
# This should be updated when the list of rust dependencies is changed.
- rust_vendor_version: 3
+ rust_vendor_version: 4
# Switch to make it easier to grab all dependencies during a dry-run.
fetch_gradle_dependencies: 0
- # application-services is still stuck on an older glean_parser version.
- glean_parser: 1.28.6
gradle_version: 6.5
input_files:
@@ -68,12 +66,14 @@ input_files:
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
enable: '[% !c("var/fetch_gradle_dependencies") %]'
- URL: https://people.torproject.org/~gk/mirrors/sources/glean-parser-[% c('var/glean_parser') %].tar.bz2
- sha256sum: bdbb421fdcc9b66aebe8f41b33e254cab722355c59c0f43f10a8322d7d6da6a4
+ sha256sum: 19dbdd4958022a1a638e0217489ab722fe7d4f588f1978a4ae162f93e75694c2
enable: '[% !c("var/fetch_gradle_dependencies") %]'
- # `cargo vendor vendor` in the `application-services` directory has vendored
- # the sources.
- - URL: https://people.torproject.org/~gk/mirrors/sources/application-services-vend… c('var/rust_vendor_version') %].tar.bz2
- sha256sum: f2d08275920c6e163617d5f102abc0665fd0f74550a400b1970b5b25bcabd3ef
+ # `cargo vendor vendor -s components/external/nimbus-sdk/nimbus/Cargo.toml`
+ # in the `application-services` directory has vendored the sources,
+ # after applying update-cargo-lock.patch, viaduct-workaround.patch and
+ # viaduct-workaround2.patch
+ - URL: https://people.torproject.org/~boklm/mirrors/sources/application-services-v… c('var/rust_vendor_version') %].tar.bz2
+ sha256sum: 500d0fa471c8ad2037c4bbe648e716e77da1ff1fc5678542b144cd257a34abbf
- filename: no-git.patch
- filename: mavenLocal.patch
enable: '[% !c("var/fetch_gradle_dependencies") %]'
diff --git a/projects/application-services/gradle-dependencies-list.txt b/projects/application-services/gradle-dependencies-list.txt
index dee28f3..bd001d9 100644
--- a/projects/application-services/gradle-dependencies-list.txt
+++ b/projects/application-services/gradle-dependencies-list.txt
@@ -5,21 +5,21 @@ d1bc9842455c2e534415d88c44df4d52413b478db9093a1ba36324f705f44c3d | https://dl.go
27a4be7462629c312da0b831a0978d2076fc34074145fb61dd4e86d7c8469b82 | https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/ac…
d38d63edb30f1467818d50aaf05f8a692dea8b31392a049bfa991b159ad5b692 | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.…
2e9372ba7780ef44952adbf86b66e1f08682c1e5277c926185f6564a13799efe | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.…
-19944d32b46551a17c347e21894b95837fbd7baaafc9e2082794344f222f7361 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resour…
-046011e16cb01b6f14842565661551110ef1b6427483f5d9068493f4c49690f2 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resour…
-8d7299bca44cb3bdf17f5595766acbf459fc81fee223e8686cc6acd3a42ab5c0 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/…
-340d617121f8ef8e02a6680c8f357aa3e542276d0c8a1cdcb6fd98984b2cb7b9 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/…
-fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.…
+c470297c03ff3de1c3d15dacf0be0cae63abc10b52f021dd07ae28daa3100fe5 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resour…
+149dd8cec3664bef8ffde86c396ba1e2ab156ea68793d29800d008bacbc9c0f8 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resour…
+3d2131a55a61a777322e2126e0018011efa6339e53b44153eb651b16020cca70 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.2.0/…
+8eb3cbe823b609853b481646e3d2c1aa39dbde53dd269712fd844ffdef2ebb42 | https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.2.0/…
83bbb3960eaabc600ac366c94cb59414e441532a1d6aa9388b0b8bfface5cf01 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.…
+fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.…
dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852 | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1…
c0c4ed0160cd2ca18390015de8b392b697c173327c6b2c0947d4e62f6958c05d | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1…
a7913a5275ad68e555d2612ebe8c14c367b153e14ca48a1872a64899020e54ef | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.…
-632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72 | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.…
67e9066ca4acfdc6e3cc508293c31ba0398057ff118e4f70b1e1813c9a3456d1 | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.…
-dcb74d510d552b35eff73b0dd27b829649535f3902e5b5a1f26040383c10a940 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.2.0/core-k…
-29eaddba4e6a35e68a128e594ebae3b72ef7e767f1b273ef93dc2ed019ff97f6 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.2.0/core-k…
-524b8b88ceb6a74a7e44e6b567a135660f211799904cb218bfee5be1166820b2 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.2.0/core-1.2.0…
-3d1f4e37b77dd92353879a040ab4ce2f706798bcbdf066147491c3642b3f79a6 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.2.0/core-1.2.0…
+632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72 | https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.…
+78309600ba6fe4473c045976906649b25b3c9a49b14642f8a8a7dcd9e1afe7c8 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.3.2/core-k…
+ba6a806bc1a6faf0cbae08397b3f781feca293ff2b5f3aa600b3d2db142e5ab4 | https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.3.2/core-k…
+94de196cd67950cff6ef3e1ac59015f8eaaf61840bdc238f2cf54ddef8dd0be9 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.2/core-1.3.2…
+afb5ea494dd083ed404cd51f580d218e37362f8ae326e893bee521290ed34920 | https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.2/core-1.3.2…
a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564 | https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapte…
62d95c89850af21030b19f14d5f7ecd6d8bcc9a3014c59002ec99624caac8100 | https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapte…
20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2 | https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.…
@@ -53,16 +53,16 @@ ba55fb7ac1b2828d5327cda8acf7085d990b2b4c43ef336caa67686249b8523d | https://dl.go
29aa72e339c3e227e74c973a4c85c7b79c926f0d37b61ed94f4d99a137c9a4b4 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025 | https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader…
c978d550808b47434aa49a63164110a50b55b0bcc6160a93a2e37d5110df8c5e | https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader…
-388d33ff503d8c3d010a5dd7ecfe0e44bb19afcc28fd1e6336755d00ef7ad3c6 | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.1.0/roo…
-831d4e3c7e5481e73f37c1cb2e08f24e27306976d3c83916f89b00b28857998b | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.1.0/roo…
-175efd0a722810272098282819ebd52d6d0fa0aa5f9bfb25ac54268e1daa041e | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/ro…
-ce8566bc008cc900268c07a4acb8840e4b54cdc404f73081a0986906f205fd7c | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/ro…
+fbb37fcf02b35ba7a909fffb52ce4ccb36874f03c1f927f6338b68ef9f1d6b7a | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
+2b130dd4a1d3d91b6701ed33096d389f01c4fc1197a7acd6b91724ddc5acfc06 | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
+24a5549b796e43e337513d2908adac67f45350d9a90bca7e2e6120692140bb14 | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.2.5/ro…
+5d7e35be6728b331c82eed418fee9133d2481ba2c5a12500c182b27545bc4bbb | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.2.5/ro…
2510a5619c37579c9ce1a04574faaf323cd0ffe2fc4e20fa8f8f01e5bb402e83 | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.…
844d7d22fcea798c78bf5559229daf88ec9cad8136f5eea0a29aa76b3f8fde7c | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.…
-870e3bce33ad21ef034332b083b2925105becfd73d262e3a1270901229e45076 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
-c4dedda03bd663e0ff34c8eaaf608ae86be05929a2f7cf2ce1e17160201bca3e | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
-cdfceb8f6ec64aac217dc5a499a5edb6d610f9d6a575fba7bea06b2bfaf3ea7f | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite…
-bc69fd52e7eb5563a766319b7a84efda32f15473c4cec0e12b99502d91489cb1 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite…
+8673737fdb2efbad91aeaeed1927ebb29212d36a867d93b9639c8069019f8a1e | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
+ecd1fa9421e442cec59b4e642a51f8398e8d16bb5fcc92ac6fbb085ecc73685c | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
+8341ff092d6060d62a07227f29237155fff36fb16f96c95fbd9a884e375db912 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.1.0/sqlite…
+a9fe19b196fb25df41719ea6f1bc53f380eaed4bd5e651ec6fd75bcbeeb2a9ee | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.1.0/sqlite…
76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
276a20116b705fb75b9003ee9496c56f6fd3b32375fb232472811eba60a040bd | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
@@ -71,10 +71,10 @@ bc69fd52e7eb5563a766319b7a84efda32f15473c4cec0e12b99502d91489cb1 | https://dl.go
c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versio…
147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
-e93836f35d35e47ba501add90fa6559964fa7a70975bf4ffc4a04836189611e9 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
-7cbb32f2fe880d407d4c53268bcd554c11dc9316a1d6cd556a08fe45a4631f22 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
-de617480ce64e4e9055e2d0295c87ee20929b06c4f2a5efdaded27dcca8520e4 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/wo…
-960a24728eaedfc4ff7a2f366b9360e02a1d88f9eb0a9c7142ed94ed462797b0 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/wo…
+290d2e9c1a22388b3f0c3dbc204a6176f8c49174126de884820befa83899f129 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
+3eb66e171b40c9cd2a9b9d9cd61a62d90e4a515491619a8d0a95e98866624b97 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
+7801441cb973fb007ef311d3db35c3b3c9d011cef890357e7ca33890833354e5 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
+0ed72c9c5a7be5b0004f226a42fa519093d49985c3eaa1a15b1563f94e9eddda | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
d2ff1905ff7e7cbed7ecce20408a76b69a52d52fdf655b696ba49007c61a0e11 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
ec6fe50839c05802cc262ec5611e160d17dff69c5a634bb322b27341f9176e9d | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
9a29bf34909bca58b85cacda7d1f09cebe8079e56722911395f1ad6a0b377b94 | https://dl.google.com/dl/android/maven2/com/android/signflinger/4.0.1/signf…
@@ -179,9 +179,9 @@ f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://jcent
317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://jcenter.bintray.com/com/google/guava/guava-parent/27.0.1-jre/guava-…
f31a5846bd9e14a4c374da1b9b146a5715ecdca925e071e1d2bf4da2daaded90 | https://jcenter.bintray.com/com/google/guava/guava-parent/28.1-jre/guava-pa…
6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://jcenter.bintray.com/com/google/guava/guava/27.0.1-jre/guava-27.0.1-…
-e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069 | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenabl…
30beb8b8527bd07c6e747e77f1a92122c2f29d57ce347461a4a55eb26e382da4 | https://jcenter.bintray.com/com/google/guava/guava/28.1-jre/guava-28.1-jre.…
74af0e8dd935894ce9bcb8e2842dd0001581b84cb6a7751c3ef9314011399ba4 | https://jcenter.bintray.com/com/google/guava/guava/28.1-jre/guava-28.1-jre.…
+e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069 | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenabl…
53873caf26bc1ed8a567ea6c939ab2aaa3f47a5e32d5cade95ddf5080d23238a | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenabl…
b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-…
18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-…
@@ -192,8 +192,8 @@ c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://jcent
efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
32ff2307dafc658d0b55b2ad841d625aea5606bb9b0316605165cd6980503243 | https://jcenter.bintray.com/com/google/protobuf/protobuf-bom/3.10.0/protobu…
74ee43b09e711b13d568811e12f33bd16e6087b15f1aeded22b0dfe89ae76856 | https://jcenter.bintray.com/com/google/protobuf/protobuf-bom/3.11.4/protobu…
-433ae1f99ae3c330f1b54971b39c2672d49948e6acf661d9bb4f1e9a7743de8e | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.…
-d9fdbf20ea7e2b965a8870d17ebbd2900a64cef3c9a7c2bf0bd4d4857462680a | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.…
+dadf381e55dd54a4e4d2b4070221dc596caff215c061f2c9f0c212966fea134e | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.…
+13811bcb4057c7785afd5451362f37d36c1d7bb7842135255b600e7b6d55315e | https://jcenter.bintray.com/com/google/protobuf/protobuf-gradle-plugin/0.8.…
619b0b0dc344cb141e493cbedc5687c8fb7c985e609a1b035e621bfab2f89021 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.10.0/p…
146660182d07798ced06fa8e8ae3b9faa90aa48cf3c6adfc67db9371188ba502 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.10.0/p…
161d7d61a8cb3970891c299578702fd079646e032329d6c2cabf998d191437c9 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.10.0/protob…
@@ -219,7 +219,7 @@ f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://jcent
6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/3.0.7/ist…
6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://jcenter.bintray.com/com/sun/istack/istack-commons/3.0.7/istack-comm…
c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://jcenter.bintray.com/com/sun/xml/bind/jaxb-bom-ext/2.3.1/jaxb-bom-ex…
-8b7d9154594e5b0e2bf1d9de6d2ac8dc7ae84179dfeb571299ce343292e9ed12 | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-parent/2.3.1/jaxb-par…
+f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-parent/2.3.1/jaxb-par…
b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.3.1/…
7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-txw-parent/2.3.1/jaxb…
785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.15/Fast…
@@ -254,8 +254,8 @@ cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://jcent
2b9f3497218b32c399d1ecbea0b00d4f4553edcf669919ed1e1a87daa77acf87 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.aar
5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar
5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom
-5b936f6757872c1b901cb821001652eda746e3b6cffef9c434443534a96bfc9a | https://jcenter.bintray.com/net/java/jvnet-parent/1/jvnet-parent-1.pom
-3bc67852756cc2d3e04d8636f3af7d142464ff5bb43c2eda9c32b085be56ac19 | https://jcenter.bintray.com/net/java/jvnet-parent/5/jvnet-parent-5.pom
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://jcenter.bintray.com/net/java/jvnet-parent/1/jvnet-parent-1.pom
+1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://jcenter.bintray.com/net/java/jvnet-parent/5/jvnet-parent-5.pom
26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
@@ -263,7 +263,7 @@ f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://jcent
75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
-dab8d3d71fecb6edb4cc62fcfdd969744975a773b18e09581c63e9a9929dbb3f | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://jcenter.bintray.com/net/sf/proguard/proguard-parent/6.0.3/proguard-…
401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://jcenter.bintray.com/org/antlr/antlr4-master/4.5.3/antlr4-master-4.5…
a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
@@ -285,7 +285,7 @@ c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://jcent
7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/http…
b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client…
61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4…
-3b9ff4e8f7788fbbb3e0011b8a9098e8acf6815709c913aa3d027dfa3a799b3f | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent…
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent…
78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmi…
@@ -315,8 +315,9 @@ affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601 | https://jcent
310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
303c422700f79d5d13d528b978c6abd9cd136d78d9f7f6f2556e85a81892f9f1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
648025c01c56b234a7458cb6048ae8fcfa941f9ea8ebf059090733237b9df9b6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
-4c801ff4f5151778762ce2d57080f0cb10a4a94cb76ad24593cca35bff36da48 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
f120750af0c9e0c6024c3c76469fd4638ef898fc5bc2d4c49f2fe17568f47b9e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
+baec7911227eec34845439c38876a2dd18eda7c15ac523655411e20e8f053138 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
+ec86adcccbb839d099b8649c5277a6fbe41d2c04b61b4b296584e7af52ae4ad1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
ffd156464b8129365423e27b9e53ecbfd32d56b91af977dab2222ca2d271a65f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
eb68121782d951a1db37e9a00c8fd9252eafa91388e90987239d75224490d6bb | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
2e508e8d23e9ab171f53ae3f71e8218e7242cd138af040d62651ecd9d3417bcd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processi…
@@ -357,18 +358,18 @@ e67e0eaf0d532e4d312947ac4cf02135ea44aee646b32273707dc0c4646a3662 | https://jcent
93f5cb50148dee7da746ed487e6278ee8d94da9a99b670f9f5248456c2f66341 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
5e7d1552863e480c1628b1cc39ce230ef829f5b7230106215a05acda5172203a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
24781edf5b0934804930dcafc8911b9e710d146239a82699889132e7b37be9dc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
-4681f2d436a68c7523595d84ed5758e1382f9da0f67c91e6a848690d711274fe | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.1…
-63480e72a7d4de742b49a6ff90e45f544ca37f3fe11af8b4839f9cd747515d00 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.1…
+812cf197d9c4c67e1f47f95e2d72a9b600f0d1124560617bfe9850773eccbcff | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.2…
+cd840ab880f838af0eb76e25930392c6bf0aa2a2adb5e2d4b0bb9f717a295ebd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.2…
b046a5ef54c7006db852e48e547aaff525a9e7a0a5909ffe5fe2c966c1a3a72e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.71/…
7163f88887d050f76f86ad2304f84a9d79c39a96178bf02e4524bdeacc5bb149 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.71/…
40566c0c08d414b9413ba556ff7f8a0b04b98b9f0f424d122dd2088510efccc4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/…
9d5a13d9abc33445e1366d258af0a77e42f01945acef7c0917b9d539854e2fce | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/…
-f9566380c08722c780ce33ceee23e98ddf765ca98fabd3e2fabae7975c8d232b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/…
-78f2fe1d48e99c64958930ccdc43fce5939460ecdfc65f302823a021d63c520d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/…
+50de5f7dad6235064ac6c0ff577f095a91b3306c2547d8bc372291587495024a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21/…
+3b54ad496e7a7f7ad8ad6e846e5c061911242ef474e030ff602beef7565943d6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21/…
133da70cfc07b56094282eac5c59bccd59f167ee2ead22e5282876d8bc10bf95 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/…
a6d50f0321bdb52838c99136930c8dcc78c3074a592d526862ec01be91fa622b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/…
-39b7a9442d7a3865e0f4a732c56c1d5da0e11ffb3bb82a461d32deb0c0ca7673 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/…
-c2f4d70082dbbfcea68fdfa74289cef32df9e4b5ddf359f006036dff1c5b06d6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/…
+8ec3db1516948b2d3524e3afbe75cb5ac59e02d98cb6ef586ef57ba63ca8d11f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21/…
+5bd2b4922398bd94d1d94e2dca0401089092b453e724a9e746daacacead735b7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21/…
ab355888358a25478591aafe2cab2dd0b2e44af323a0acc3fd03581b24712430 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.41/…
a5e970ffd412599c8159068e670356509193e3238dddf20273ed6a8fb7b09de2 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.41/…
1b8355ce90079352de296f3f0b175473e7cbbde34d7338b92e4a80c633baab96 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.41/…
@@ -377,19 +378,19 @@ f6837401cbd13a8a31f126a9e22430ab9861602d91a4c310a47805453690f76d | https://jcent
ff03e9989faa2d40fa4a9098aaad71e247f27ea4d24b0754da642eb0924bd8c5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotli…
3856a7349ebacd6d1be6802b2fed9c4dc2c5a564ea92b6b945ac988243d4b16b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotli…
4f0d574a969ea93c45628a163e1ed3ffabb4584278d72c647ec124f8c8109481 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotli…
-01ecb09782c042b931c1839acf21a188340b295d05400afd6e3415d4475b8daa | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotli…
-a4b9cfbb4bbda523af1e24d52c775fb9c0f7cb568e48b065d45aeb56e63c2762 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotli…
+f78c5d8c09db985912ab83a1de3c3b53ddf208d7b151f06a72358ea3e137d01b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotli…
+076c5a29b7a79ba2050b52e12307783d6b18d7701ce5245a3f48d005c51ae2be | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotli…
71cdc094af3463af5773122941819ce11951e8550c499938bb79a04b3d5ee842 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.71/kotl…
ab2b2bd3304dcd40562a2930c53002b1e2d80fb21d0d9cc7d6448a83b9ae6b0b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.71/kotl…
51f7f966cd071ff412df49849bdd0a6a651f800c8816defaa29fcd106eedcdac | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.3.71/ko…
fae43f08052e63bf49cbcda0ade70c05381c4093521e20f31dd564947c1b7105 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.3.71/ko…
-3b6529d1872a2c689b2231cf3e75476badd5c5a430206c2c1967e4deb171e50d | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
-504b6599eb3a3b4d8b4db267d1628e79f3e58f17fc4f6d44c24cda530b0edf39 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
-64c6d2b53e52eb65e26c6b828d848d8ceab30473c3511bbd1c116cf9799bc127 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
+5cfd02a5e7dd9be15835522035d32eca33be0e63085d27f7c918fa495e34f81f | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
+58b3ce8be4521230361fe6679b5930e75730164be1c7b900ddca4218072fee85 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
+3286bd65e41eae735600c0e9a441cb4a0988d0d76647923b9c978c90b0cb7311 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
7177ed4629704537e0252537629886f5409526ecd041d8d8e308e20624b14394 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
6f7523ea8a56d7f12d11a004cfe5a4577bfba3ed6c84cc5ac48b72d54975552c | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-6538f458473a42b6e2a92676f00d70d4fa0f6ae824d13c1e31c8051c196d2335 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-51be6791ac5aed9718a58b297c8c9081c9b704dfd72a849c4754a40da55ee236 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+99319ebdd562d9519dfd15f78fe79bc09c3a28875083eea4577d9584359a2f61 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
518080049ba83181914419d11a25d9bc9833a2d729b6a6e7469fa52851356da8 | https://jcenter.bintray.com/org/json/json/20180813/json-20180813.jar
@@ -411,24 +412,24 @@ b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://jcent
fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
13009fb5ede3cf2be5a8d0f1602155aeaa0ce5ef5f9366892bd258d8d3d4d2b1 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar
1e1beb22ca906209700122b5cacf6f2719324538c5b1e3c27bf91564c8d31dbd | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.pom
-e00994073f2c041891e511707ce991a7671b335f8863099719eb749897c231b9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/63.0.0…
-f16249682aa48169d0508bd5310778241f856df91b57201a99ad78d0b4741f34 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/63.0.0…
-be10c6c12568bfb4ce987756c6bfcf60ce01085a2dab185e0aef8092cd5c779c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/63.0.…
-ea6cb3d94121d03fefd5329072c7b01d891b8bb25c2c303b28dfd6728eeaa72f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/63.0.…
-377092988061736b0a6e8ddfd243fb9766598724abe0153767310ad2b0be86f5 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/63.0.…
-45ea21040eadcdce28620267916dc6fd7c252ec54bed1bbefb8f5b6b456e6a5c | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/63.0.…
-6215b79ff57a56a1ec3f1937ce9870614f96b5afc3e54837d48239b74a28c185 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/63.0.0…
-6a80782f831863c5c592cf2851cbec06f0661a868bca960512b0cc920711bddb | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/63.0.0…
-9eadd1526848b5669c6e00bfc4283eb63c2d2c1179db5c1329cca2a2e227003a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/63.0.0/…
-ca3c96c281e314f07170bbfa766693ef0d2e4d865433a9622254088ee7e68363 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/63.0.0/…
-93fd44998bfeeab9d7137cb34a50d510876ec8362e988b8a4ddf4e1629a69e71 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
-b3836516ae7c9f1ca38ce636e24e3d10b2b421d94e344f14033daa5f20df3168 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
-c844c630c520e7ca53db9282380242248fe5c11d9ab6b941ddded5bb51296721 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-a8cc4657e66af457b8f8ef675ff59b0a1dbfe71466fc93271b6867bc270a7712 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-5eb5d86577ecf64ba66df368c07dde772d1e82da63f25d73e63118d261ca7a7c | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-d1a407ad60d86df547ca4521ed5355e609bbe09f22ef658c89cade0780468994 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-a1925b30aed9675e339205797eebd0598885cc987fc61890e81f4a2c12dcf6b6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.0.4/glean-3…
-477ee8ea2f4bbcf2860553987f3e5fddaac7cfd6bcae7c1bef7a7b29cdc5d9d8 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.0.4/glean-3…
+e5801430997ccd358df0b4b48f101402b924a72de87cc5f12d80a32bb6d61865 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/71.0.0…
+5d08cc1bb3c2432ab3ecaaa6c06ca0603a9957ece9524643b9db4fb77a01f7b8 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/71.0.0…
+bfbb680afd838af36e4609d1b7236dbef93f47e92b386bb7ca08efca910e2e59 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/71.0.…
+c65c694e7579c0531eb09f569c97121793c11895e66fe8b206d1e9941b5ea9c8 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/71.0.…
+d5b2a0cf4022b8287b0e515909262c3969fde476d3df71fcc165b4b76de0fdf1 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/71.0.…
+b7e1a47fc0a4819023b0356c11b929e22caf101c62318981882a04ecea22d859 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/71.0.…
+fe504319fc0bc08ca00d8b951bf5d5f6fa4a5fc467e28b609cd34e8c59c20ad9 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/71.0.0…
+d1741144ed2ea215a84f5d94d779cafcfaf778cce8cc7224437a2884cb1101bc | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/71.0.0…
+755cd9e2c9d550b7d13e32b2d0fc3838021967405cf6b7bf30c58577fec5827a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
+7b0a3bd6d32c8002f785db8fdbf3b08e3541366e784cac1304cb3f49642b916a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
+f7bf27270904abd8639b543151b6eaf268b821b8e6235c8decf8031e02ec8648 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
+0b80acf7d1dd0d9484b0e82cd1a04ae57270d7f7e6b339ce39424554d48798e3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
+6f26ffb388a1d23809b99e9c84c0be54e27a90dcc14abcc779b0216bc6356946 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+a073c6239b797829a580265497d770eabfec2c40cc4d361f72a01c0a0987326a | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+a09eccf8b4fbb071e1acf3ea3ce1d30017250ee9c35424a0f98659526ff19597 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+a1db8db94979392030d8a5eb1c5d7eccc8383adbf031575d746c68a92e9b0d20 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
+d6394ad35c63daca22246363ff826749deb62d514a1843eea27d8f39dfb778e6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
470564ff0a452da1c96be4ca3a9cdeceaa2912537ee2a8def486f3b383d43f15 | https://plugins.gradle.org/m2/com/jetbrains/python/envs/com.jetbrains.pytho…
6438812f927b505a4c4ef2703b45433a1b99e45334526bfed25e71e1a79abb14 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
317aa4c467a37d5fcab6657c326a4069ea8e8c6dda951ec2091ffb95c596a2a3 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
diff --git a/projects/application-services/update-cargo-lock.patch b/projects/application-services/update-cargo-lock.patch
index 283a3a2..5e28cca 100644
--- a/projects/application-services/update-cargo-lock.patch
+++ b/projects/application-services/update-cargo-lock.patch
@@ -1,11 +1,14 @@
-From 214a01a43691302b52c2fd8c39c26ef66d4c00b8 Mon Sep 17 00:00:00 2001
+From cdcce5ffd9e49d4648dd6b23a6dfbc8011352883 Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Fri, 27 Nov 2020 09:55:49 +0000
Subject: [PATCH] update cargo.lock
+---
+ Cargo.lock | 390 +++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 273 insertions(+), 117 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
-index 21244f27..a28c22d7 100644
+index 813c475c..20b6e4d0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -86,9 +86,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
@@ -52,7 +55,7 @@ index 21244f27..a28c22d7 100644
"proc-macro2",
"quote",
"serde",
-@@ -186,9 +185,9 @@ dependencies = [
+@@ -191,9 +190,9 @@ dependencies = [
[[package]]
name = "backtrace"
@@ -64,7 +67,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"addr2line",
"cfg-if 1.0.0",
-@@ -210,6 +209,12 @@ version = "0.12.3"
+@@ -215,6 +214,12 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
@@ -77,7 +80,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "bincode"
version = "1.3.1"
-@@ -232,6 +237,18 @@ version = "1.2.1"
+@@ -237,6 +242,18 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
@@ -96,7 +99,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "blake2b_simd"
version = "0.5.11"
-@@ -320,9 +337,9 @@ dependencies = [
+@@ -325,9 +342,9 @@ dependencies = [
[[package]]
name = "cc"
@@ -108,7 +111,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "cfg-if"
-@@ -437,11 +454,21 @@ dependencies = [
+@@ -442,11 +459,21 @@ dependencies = [
"winapi-util",
]
@@ -132,7 +135,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"const-random-macro",
"proc-macro-hack",
-@@ -449,12 +476,14 @@ dependencies = [
+@@ -454,12 +481,14 @@ dependencies = [
[[package]]
name = "const-random-macro"
@@ -149,7 +152,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -471,9 +500,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
+@@ -476,9 +505,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]]
name = "core-foundation"
@@ -161,7 +164,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"core-foundation-sys",
"libc",
-@@ -481,9 +510,9 @@ dependencies = [
+@@ -486,9 +515,9 @@ dependencies = [
[[package]]
name = "core-foundation-sys"
@@ -173,7 +176,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "cpuid-bool"
-@@ -543,7 +572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+@@ -548,7 +577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
dependencies = [
"cfg-if 1.0.0",
@@ -182,7 +185,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -554,18 +583,18 @@ checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
+@@ -559,18 +588,18 @@ checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-epoch",
@@ -205,7 +208,7 @@ index 21244f27..a28c22d7 100644
"lazy_static",
"memoffset",
"scopeguard",
-@@ -573,26 +602,20 @@ dependencies = [
+@@ -578,26 +607,20 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
@@ -238,7 +241,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "csv"
-@@ -738,7 +761,7 @@ version = "1.2.1"
+@@ -743,7 +766,7 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d97f19730c1eb3332d0657d0f3ca72795d77c61d8eb26bdd7f15edc0c61eb2"
dependencies = [
@@ -247,7 +250,7 @@ index 21244f27..a28c22d7 100644
"byteorder",
"once_cell",
"serde",
-@@ -1034,6 +1057,16 @@ version = "0.1.1"
+@@ -1039,6 +1062,16 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
@@ -264,7 +267,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "fuchsia-cprng"
version = "0.1.1"
-@@ -1056,53 +1089,59 @@ version = "0.3.3"
+@@ -1061,53 +1094,59 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
@@ -337,7 +340,7 @@ index 21244f27..a28c22d7 100644
"pin-utils",
"slab",
]
-@@ -1112,7 +1151,7 @@ name = "fxa-client"
+@@ -1117,7 +1156,7 @@ name = "fxa-client"
version = "0.1.0"
dependencies = [
"anyhow",
@@ -346,7 +349,7 @@ index 21244f27..a28c22d7 100644
"error-support",
"ffi-support 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hex",
-@@ -1272,7 +1311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+@@ -1278,7 +1317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7539c8d8699bae53238aacd3f93cfb0bcaef77b85dc963902b9367c5d7a84c48"
dependencies = [
"anyhow",
@@ -355,7 +358,7 @@ index 21244f27..a28c22d7 100644
"log 0.4.11",
"once_cell",
"thiserror",
-@@ -1361,7 +1400,7 @@ dependencies = [
+@@ -1367,7 +1406,7 @@ dependencies = [
"httparse",
"httpdate",
"itoa",
@@ -364,7 +367,7 @@ index 21244f27..a28c22d7 100644
"socket2",
"tokio",
"tower-service",
-@@ -1488,7 +1527,7 @@ dependencies = [
+@@ -1494,7 +1533,7 @@ dependencies = [
name = "jwcrypto"
version = "0.1.0"
dependencies = [
@@ -373,7 +376,7 @@ index 21244f27..a28c22d7 100644
"rc_crypto",
"serde",
"serde_derive",
-@@ -1521,6 +1560,19 @@ version = "1.4.0"
+@@ -1527,6 +1566,19 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
@@ -392,8 +395,8 @@ index 21244f27..a28c22d7 100644
+
[[package]]
name = "libc"
- version = "0.2.80"
-@@ -1673,9 +1725,9 @@ checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
+ version = "0.2.84"
+@@ -1680,9 +1732,9 @@ checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
[[package]]
name = "memoffset"
@@ -405,7 +408,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"autocfg 1.0.1",
]
-@@ -1777,7 +1829,7 @@ dependencies = [
+@@ -1784,7 +1836,7 @@ dependencies = [
"rand 0.7.3",
"regex",
"serde_json",
@@ -414,7 +417,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -1800,9 +1852,9 @@ checksum = "ba896fb4d7fe86433ebaf18c532bd9202e54c450a1bf7723855220e0e76d71d1"
+@@ -1807,9 +1859,9 @@ checksum = "ba896fb4d7fe86433ebaf18c532bd9202e54c450a1bf7723855220e0e76d71d1"
[[package]]
name = "native-tls"
@@ -426,7 +429,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"lazy_static",
"libc",
-@@ -1877,11 +1929,23 @@ dependencies = [
+@@ -1884,11 +1936,23 @@ dependencies = [
"version_check",
]
@@ -451,15 +454,7 @@ index 21244f27..a28c22d7 100644
"error-support",
"nss_sys",
"serde",
-@@ -1973,15 +2037,15 @@ checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397"
-
- [[package]]
- name = "once_cell"
--version = "1.4.1"
-+version = "1.5.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
-+checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
+@@ -1986,9 +2050,9 @@ checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
[[package]]
name = "oorandom"
@@ -471,7 +466,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "opaque-debug"
-@@ -2073,9 +2137,9 @@ dependencies = [
+@@ -2080,9 +2144,9 @@ dependencies = [
[[package]]
name = "paste"
@@ -483,7 +478,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "paste-impl"
-@@ -2113,11 +2177,11 @@ dependencies = [
+@@ -2120,11 +2184,11 @@ dependencies = [
[[package]]
name = "pin-project"
@@ -498,7 +493,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -2133,9 +2197,9 @@ dependencies = [
+@@ -2140,9 +2204,9 @@ dependencies = [
[[package]]
name = "pin-project-internal"
@@ -510,7 +505,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"proc-macro2",
"quote",
-@@ -2148,6 +2212,12 @@ version = "0.1.11"
+@@ -2155,6 +2219,12 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b"
@@ -523,7 +518,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "pin-utils"
version = "0.1.0"
-@@ -2391,7 +2461,7 @@ dependencies = [
+@@ -2398,7 +2468,7 @@ dependencies = [
name = "push"
version = "0.1.0"
dependencies = [
@@ -532,7 +527,7 @@ index 21244f27..a28c22d7 100644
"bincode",
"error-support",
"ffi-support 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -2417,7 +2487,7 @@ dependencies = [
+@@ -2424,7 +2494,7 @@ dependencies = [
name = "push-ffi"
version = "0.1.0"
dependencies = [
@@ -541,7 +536,7 @@ index 21244f27..a28c22d7 100644
"ffi-support 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static",
"log 0.4.11",
-@@ -2443,6 +2513,12 @@ dependencies = [
+@@ -2450,6 +2520,12 @@ dependencies = [
"proc-macro2",
]
@@ -554,7 +549,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "rand"
version = "0.4.6"
-@@ -2636,7 +2712,7 @@ checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
+@@ -2643,7 +2719,7 @@ checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
@@ -563,7 +558,7 @@ index 21244f27..a28c22d7 100644
"lazy_static",
"num_cpus",
]
-@@ -2645,7 +2721,7 @@ dependencies = [
+@@ -2652,7 +2728,7 @@ dependencies = [
name = "rc_crypto"
version = "0.1.0"
dependencies = [
@@ -572,7 +567,7 @@ index 21244f27..a28c22d7 100644
"ece",
"error-support",
"hawk",
-@@ -2737,11 +2813,11 @@ dependencies = [
+@@ -2744,11 +2820,11 @@ dependencies = [
[[package]]
name = "reqwest"
@@ -587,7 +582,7 @@ index 21244f27..a28c22d7 100644
"bytes",
"encoding_rs",
"futures-core",
-@@ -2758,14 +2834,15 @@ dependencies = [
+@@ -2765,14 +2841,15 @@ dependencies = [
"mime_guess",
"native-tls",
"percent-encoding",
@@ -605,7 +600,7 @@ index 21244f27..a28c22d7 100644
"web-sys",
"winreg",
]
-@@ -2822,14 +2899,14 @@ dependencies = [
+@@ -2852,14 +2929,14 @@ dependencies = [
[[package]]
name = "rust-argon2"
@@ -624,7 +619,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -2872,6 +2949,12 @@ dependencies = [
+@@ -2902,6 +2979,12 @@ dependencies = [
"winapi 0.3.9",
]
@@ -637,7 +632,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "scopeguard"
version = "1.1.0"
-@@ -2880,9 +2963,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+@@ -2910,9 +2993,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "security-framework"
@@ -649,7 +644,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"bitflags 1.2.1",
"core-foundation",
-@@ -2893,9 +2976,9 @@ dependencies = [
+@@ -2923,9 +3006,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
@@ -661,7 +656,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"core-foundation-sys",
"libc",
-@@ -2988,6 +3071,18 @@ dependencies = [
+@@ -3018,6 +3101,18 @@ dependencies = [
"url",
]
@@ -680,15 +675,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "sha2"
version = "0.9.2"
-@@ -3015,17 +3110,17 @@ checksum = "797a4eaffb90d896f29698d45676f9f940a71936d7574996a7df54593ba209fa"
-
- [[package]]
- name = "smallvec"
--version = "1.4.2"
-+version = "1.5.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252"
-+checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85"
+@@ -3051,11 +3146,11 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
[[package]]
name = "socket2"
@@ -703,7 +690,7 @@ index 21244f27..a28c22d7 100644
"libc",
"redox_syscall",
"winapi 0.3.9",
-@@ -3042,6 +3137,12 @@ dependencies = [
+@@ -3072,6 +3167,12 @@ dependencies = [
"rusqlite",
]
@@ -716,7 +703,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "strsim"
version = "0.8.0"
-@@ -3074,9 +3175,9 @@ dependencies = [
+@@ -3104,9 +3205,9 @@ dependencies = [
[[package]]
name = "syn"
@@ -728,7 +715,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"proc-macro2",
"quote",
-@@ -3087,7 +3188,7 @@ dependencies = [
+@@ -3117,7 +3218,7 @@ dependencies = [
name = "sync-guid"
version = "0.1.0"
dependencies = [
@@ -737,7 +724,7 @@ index 21244f27..a28c22d7 100644
"rand 0.7.3",
"rusqlite",
"serde",
-@@ -3099,7 +3200,7 @@ name = "sync-test"
+@@ -3129,7 +3230,7 @@ name = "sync-test"
version = "0.1.0"
dependencies = [
"anyhow",
@@ -746,7 +733,7 @@ index 21244f27..a28c22d7 100644
"env_logger",
"fxa-client",
"interrupt-support",
-@@ -3127,7 +3228,7 @@ version = "0.1.0"
+@@ -3157,7 +3258,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"base16",
@@ -755,7 +742,7 @@ index 21244f27..a28c22d7 100644
"env_logger",
"error-support",
"ffi-support 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -3294,6 +3395,12 @@ dependencies = [
+@@ -3324,6 +3425,12 @@ dependencies = [
"viaduct",
]
@@ -768,7 +755,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "tempdir"
version = "0.3.7"
-@@ -3341,18 +3448,18 @@ dependencies = [
+@@ -3371,18 +3478,18 @@ dependencies = [
[[package]]
name = "termcolor"
@@ -791,7 +778,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"libc",
"winapi 0.3.9",
-@@ -3428,6 +3535,15 @@ dependencies = [
+@@ -3458,6 +3565,15 @@ dependencies = [
"winapi 0.3.9",
]
@@ -807,7 +794,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "tinytemplate"
version = "1.1.0"
-@@ -3440,15 +3556,24 @@ dependencies = [
+@@ -3470,15 +3586,24 @@ dependencies = [
[[package]]
name = "tinyvec"
@@ -836,7 +823,7 @@ index 21244f27..a28c22d7 100644
dependencies = [
"bytes",
"fnv",
-@@ -3458,7 +3583,7 @@ dependencies = [
+@@ -3488,7 +3613,7 @@ dependencies = [
"memchr",
"mio",
"num_cpus",
@@ -845,7 +832,7 @@ index 21244f27..a28c22d7 100644
"slab",
]
-@@ -3482,7 +3607,7 @@ dependencies = [
+@@ -3512,7 +3637,7 @@ dependencies = [
"futures-core",
"futures-sink",
"log 0.4.11",
@@ -854,7 +841,7 @@ index 21244f27..a28c22d7 100644
"tokio",
]
-@@ -3503,13 +3628,13 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
+@@ -3533,13 +3658,13 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
[[package]]
name = "tracing"
@@ -872,7 +859,7 @@ index 21244f27..a28c22d7 100644
"tracing-core",
]
-@@ -3574,18 +3699,18 @@ dependencies = [
+@@ -3604,18 +3729,18 @@ dependencies = [
[[package]]
name = "unicode-normalization"
@@ -895,7 +882,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "unicode-width"
-@@ -3617,7 +3742,7 @@ dependencies = [
+@@ -3647,7 +3772,7 @@ dependencies = [
"ffi-support 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static",
"log 0.4.11",
@@ -904,7 +891,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -3648,10 +3773,11 @@ dependencies = [
+@@ -3678,10 +3803,11 @@ dependencies = [
[[package]]
name = "url"
@@ -918,7 +905,7 @@ index 21244f27..a28c22d7 100644
"idna",
"matches",
"percent-encoding",
-@@ -3813,6 +3939,30 @@ version = "0.2.68"
+@@ -3843,6 +3969,30 @@ version = "0.2.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307"
@@ -949,7 +936,7 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "web-sys"
version = "0.3.45"
-@@ -3876,7 +4026,7 @@ version = "0.11.0"
+@@ -3906,7 +4056,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a7d4f9feb723a800d8f7b74edc9fa44ff35cb0b2ec64886714362f423427f37"
dependencies = [
@@ -958,7 +945,7 @@ index 21244f27..a28c22d7 100644
]
[[package]]
-@@ -3956,6 +4106,12 @@ dependencies = [
+@@ -3986,6 +4136,12 @@ dependencies = [
"winapi-build",
]
@@ -971,6 +958,3 @@ index 21244f27..a28c22d7 100644
[[package]]
name = "x11-clipboard"
version = "0.3.3"
---
-2.29.2
-
diff --git a/projects/application-services/viaduct-workaround.patch b/projects/application-services/viaduct-workaround.patch
index 0c74aa7..b5b0121 100644
--- a/projects/application-services/viaduct-workaround.patch
+++ b/projects/application-services/viaduct-workaround.patch
@@ -1,15 +1,18 @@
-From 2b79903b41133799bcbe72aed2e9e8d54b278d30 Mon Sep 17 00:00:00 2001
+From 5020520a2b240512284a7396e99ed22c54042257 Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Wed, 2 Dec 2020 09:26:24 +0000
Subject: [PATCH 1/2] Bug 40156: viaduct*-workaround
See: https://github.com/mozilla/application-services/issues/3732.
+---
+ nimbus/Cargo.toml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/nimbus/Cargo.toml b/nimbus/Cargo.toml
-index 3f118b7..0d0fa9b 100644
+index b19acc9..fd267b5 100644
--- a/nimbus/Cargo.toml
+++ b/nimbus/Cargo.toml
-@@ -25,7 +25,7 @@ serde_derive = "1"
+@@ -26,7 +26,7 @@ serde_derive = "1"
serde_json = "1"
log = "0.4"
# Viaduct locked to version same version of app-services as mozilla-central
@@ -18,8 +21,8 @@ index 3f118b7..0d0fa9b 100644
thiserror = "1"
url = "2.1"
rkv = "0.15"
-@@ -40,7 +40,7 @@ uniffi = "0.5"
- uniffi_build = { version = "0.5", features = [ "builtin-bindgen" ] }
+@@ -41,7 +41,7 @@ uniffi = { version = "0.7", optional = true }
+ uniffi_build = { version = "0.7", features = [ "builtin-bindgen" ], optional = true }
[dev-dependencies]
-viaduct-reqwest = { git = "https://github.com/mozilla/application-services", rev = "8a576fbe79199fa8664f64285524017f74ebcc5f"}
@@ -27,6 +30,3 @@ index 3f118b7..0d0fa9b 100644
mockito = "0.27"
env_logger = "0.7"
clap = "2.33.3"
---
-2.29.2
-
diff --git a/projects/application-services/viaduct-workaround2.patch b/projects/application-services/viaduct-workaround2.patch
index df84602..1bc27bb 100644
--- a/projects/application-services/viaduct-workaround2.patch
+++ b/projects/application-services/viaduct-workaround2.patch
@@ -1,109 +1,17 @@
-From 5d34bb6b8aa779cbb9d9bdb465aa38ff99ecc2d1 Mon Sep 17 00:00:00 2001
+From 9f3cf867a22a807cf997d2b0af283c7ce9d298fe Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Wed, 2 Dec 2020 09:26:43 +0000
Subject: [PATCH 2/2] Bug 40156: Cargo.lock update after viaduct*-workaround
+---
+ nimbus/Cargo.lock | 43 +++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/nimbus/Cargo.lock b/nimbus/Cargo.lock
-index 2339236..dfe0f6f 100644
+index 9caa76c..a73e464 100644
--- a/nimbus/Cargo.lock
+++ b/nimbus/Cargo.lock
-@@ -30,11 +30,17 @@ version = "0.3.6"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
-
-+[[package]]
-+name = "arrayvec"
-+version = "0.5.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-+
- [[package]]
- name = "askama"
--version = "0.10.3"
-+version = "0.10.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "70a6e7ebd44d0047fd48206c83c5cd3214acc7b9d87f001da170145c47ef7d12"
-+checksum = "d298738b6e47e1034e560e5afe63aa488fea34e25ec11b855a76f0d7b8e73134"
- dependencies = [
- "askama_derive",
- "askama_escape",
-@@ -43,13 +49,12 @@ dependencies = [
-
- [[package]]
- name = "askama_derive"
--version = "0.10.3"
-+version = "0.10.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e1d7169690c4f56343dcd821ab834972a22570a2662a19a84fd7775d5e1c3881"
-+checksum = "ca2925c4c290382f9d2fa3d1c1b6a63fa1427099721ecca4749b154cc9c25522"
- dependencies = [
- "askama_shared",
- "proc-macro2",
-- "quote",
- "syn",
- ]
-
-@@ -61,12 +66,12 @@ checksum = "90c108c1a94380c89d2215d0ac54ce09796823cca0fd91b299cfff3b33e346fb"
-
- [[package]]
- name = "askama_shared"
--version = "0.10.4"
-+version = "0.11.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "62fc272363345c8cdc030e4c259d9d028237f8b057dc9bb327772a257bde6bb5"
-+checksum = "2582b77e0f3c506ec4838a25fa8a5f97b9bed72bb6d3d272ea1c031d8bd373bc"
- dependencies = [
- "askama_escape",
-- "nom",
-+ "nom 6.0.1",
- "proc-macro2",
- "quote",
- "serde",
-@@ -104,9 +109,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-
- [[package]]
- name = "base64"
--version = "0.12.3"
-+version = "0.13.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
-+checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
-
- [[package]]
- name = "bincode"
-@@ -124,6 +129,18 @@ version = "1.2.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
-
-+[[package]]
-+name = "bitvec"
-+version = "0.19.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a7ba35e9565969edb811639dbebfe34edc0368e472c5018474c8eb2543397f81"
-+dependencies = [
-+ "funty",
-+ "radium",
-+ "tap",
-+ "wyz",
-+]
-+
- [[package]]
- name = "block-buffer"
- version = "0.9.0"
-@@ -164,9 +181,9 @@ dependencies = [
-
- [[package]]
- name = "cc"
--version = "1.0.61"
-+version = "1.0.65"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d"
-+checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15"
-
- [[package]]
- name = "cfg-if"
-@@ -206,6 +223,16 @@ dependencies = [
+@@ -223,6 +223,16 @@ dependencies = [
"winapi 0.3.9",
]
@@ -120,262 +28,7 @@ index 2339236..dfe0f6f 100644
[[package]]
name = "core-foundation"
version = "0.9.1"
-@@ -341,6 +368,16 @@ version = "0.1.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-+[[package]]
-+name = "form_urlencoded"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00"
-+dependencies = [
-+ "matches",
-+ "percent-encoding",
-+]
-+
- [[package]]
- name = "fuchsia-cprng"
- version = "0.1.1"
-@@ -363,53 +400,59 @@ version = "0.3.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
-
-+[[package]]
-+name = "funty"
-+version = "1.0.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0ba62103ce691c2fd80fbae2213dfdda9ce60804973ac6b6e97de818ea7f52c8"
-+
- [[package]]
- name = "futures-channel"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151"
-+checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64"
- dependencies = [
- "futures-core",
- ]
-
- [[package]]
- name = "futures-core"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46"
-+checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748"
-
- [[package]]
- name = "futures-io"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b"
-+checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb"
-
- [[package]]
- name = "futures-sink"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11"
-+checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d"
-
- [[package]]
- name = "futures-task"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c"
-+checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d"
- dependencies = [
- "once_cell",
- ]
-
- [[package]]
- name = "futures-util"
--version = "0.3.7"
-+version = "0.3.8"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34"
-+checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2"
- dependencies = [
- "futures-core",
- "futures-io",
- "futures-task",
- "memchr",
-- "pin-project 1.0.1",
-+ "pin-project 1.0.2",
- "pin-utils",
- "slab",
- ]
-@@ -543,7 +586,7 @@ dependencies = [
- "httparse",
- "httpdate",
- "itoa",
-- "pin-project 1.0.1",
-+ "pin-project 1.0.2",
- "socket2",
- "tokio",
- "tower-service",
-@@ -678,6 +721,19 @@ version = "1.4.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-+[[package]]
-+name = "lexical-core"
-+version = "0.7.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616"
-+dependencies = [
-+ "arrayvec",
-+ "bitflags",
-+ "cfg-if 0.1.10",
-+ "ryu",
-+ "static_assertions",
-+]
-+
- [[package]]
- name = "libc"
- version = "0.2.80"
-@@ -790,14 +846,14 @@ dependencies = [
- "rand 0.7.3",
- "regex",
- "serde_json",
-- "serde_urlencoded",
-+ "serde_urlencoded 0.6.1",
- ]
-
- [[package]]
- name = "native-tls"
--version = "0.2.5"
-+version = "0.2.6"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1a1cda389c26d6b88f3d2dc38aa1b750fe87d298cc5d795ec9e975f402f00372"
-+checksum = "6fcc7939b5edc4e4f86b1b4a04bb1498afaaf871b1a6691838ed06fcb48d3a3f"
- dependencies = [
- "lazy_static",
- "libc",
-@@ -859,6 +915,18 @@ dependencies = [
- "version_check",
- ]
-
-+[[package]]
-+name = "nom"
-+version = "6.0.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "88034cfd6b4a0d54dd14f4a507eceee36c0b70e5a02236c4e4df571102be17f0"
-+dependencies = [
-+ "bitvec",
-+ "lexical-core",
-+ "memchr",
-+ "version_check",
-+]
-+
- [[package]]
- name = "num-traits"
- version = "0.2.14"
-@@ -880,9 +948,9 @@ dependencies = [
-
- [[package]]
- name = "once_cell"
--version = "1.4.1"
-+version = "1.5.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
-+checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
-
- [[package]]
- name = "opaque-debug"
-@@ -954,9 +1022,9 @@ dependencies = [
-
- [[package]]
- name = "paste"
--version = "1.0.2"
-+version = "1.0.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ba7ae1a2180ed02ddfdb5ab70c70d596a26dd642e097bb6fe78b1bde8588ed97"
-+checksum = "7151b083b0664ed58ed669fcdd92f01c3d2fdbf10af4931a301474950b52bfa9"
-
- [[package]]
- name = "paste-impl"
-@@ -984,11 +1052,11 @@ dependencies = [
-
- [[package]]
- name = "pin-project"
--version = "1.0.1"
-+version = "1.0.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841"
-+checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7"
- dependencies = [
-- "pin-project-internal 1.0.1",
-+ "pin-project-internal 1.0.2",
- ]
-
- [[package]]
-@@ -1004,9 +1072,9 @@ dependencies = [
-
- [[package]]
- name = "pin-project-internal"
--version = "1.0.1"
-+version = "1.0.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86"
-+checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f"
- dependencies = [
- "proc-macro2",
- "quote",
-@@ -1019,6 +1087,12 @@ version = "0.1.11"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b"
-
-+[[package]]
-+name = "pin-project-lite"
-+version = "0.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c"
-+
- [[package]]
- name = "pin-utils"
- version = "0.1.0"
-@@ -1114,6 +1188,12 @@ dependencies = [
- "proc-macro2",
- ]
-
-+[[package]]
-+name = "radium"
-+version = "0.5.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
-+
- [[package]]
- name = "rand"
- version = "0.4.6"
-@@ -1227,9 +1307,9 @@ dependencies = [
-
- [[package]]
- name = "reqwest"
--version = "0.10.8"
-+version = "0.10.9"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e"
-+checksum = "fb15d6255c792356a0f578d8a645c677904dc02e862bebe2ecc18e0c01b9a0ce"
- dependencies = [
- "base64",
- "bytes",
-@@ -1248,14 +1328,15 @@ dependencies = [
- "mime_guess",
- "native-tls",
- "percent-encoding",
-- "pin-project-lite",
-+ "pin-project-lite 0.2.0",
- "serde",
-- "serde_urlencoded",
-+ "serde_urlencoded 0.7.0",
- "tokio",
- "tokio-tls",
+@@ -1326,6 +1336,7 @@ dependencies = [
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -383,7 +36,7 @@ index 2339236..dfe0f6f 100644
"web-sys",
"winreg",
]
-@@ -1299,6 +1380,12 @@ dependencies = [
+@@ -1369,6 +1380,12 @@ dependencies = [
"winapi 0.3.9",
]
@@ -396,200 +49,7 @@ index 2339236..dfe0f6f 100644
[[package]]
name = "security-framework"
version = "2.0.0"
-@@ -1381,6 +1468,18 @@ dependencies = [
- "url",
- ]
-
-+[[package]]
-+name = "serde_urlencoded"
-+version = "0.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9"
-+dependencies = [
-+ "form_urlencoded",
-+ "itoa",
-+ "ryu",
-+ "serde",
-+]
-+
- [[package]]
- name = "sha2"
- version = "0.9.2"
-@@ -1402,16 +1501,22 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
-
- [[package]]
- name = "socket2"
--version = "0.3.15"
-+version = "0.3.17"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44"
-+checksum = "2c29947abdee2a218277abeca306f25789c938e500ea5a9d4b12a5a504466902"
- dependencies = [
-- "cfg-if 0.1.10",
-+ "cfg-if 1.0.0",
- "libc",
- "redox_syscall",
- "winapi 0.3.9",
- ]
-
-+[[package]]
-+name = "static_assertions"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-+
- [[package]]
- name = "strsim"
- version = "0.8.0"
-@@ -1420,9 +1525,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
-
- [[package]]
- name = "syn"
--version = "1.0.48"
-+version = "1.0.51"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac"
-+checksum = "3b4f34193997d92804d359ed09953e25d5138df6bcc055a71bf68ee89fdf9223"
- dependencies = [
- "proc-macro2",
- "quote",
-@@ -1441,6 +1546,12 @@ dependencies = [
- "unicode-xid",
- ]
-
-+[[package]]
-+name = "tap"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "36474e732d1affd3a6ed582781b3683df3d0563714c59c39591e8ff707cf078e"
-+
- [[package]]
- name = "tempdir"
- version = "0.3.7"
-@@ -1467,9 +1578,9 @@ dependencies = [
-
- [[package]]
- name = "termcolor"
--version = "1.1.0"
-+version = "1.1.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
-+checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
- dependencies = [
- "winapi-util",
- ]
-@@ -1514,15 +1625,24 @@ dependencies = [
-
- [[package]]
- name = "tinyvec"
--version = "0.3.4"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f"
-+dependencies = [
-+ "tinyvec_macros",
-+]
-+
-+[[package]]
-+name = "tinyvec_macros"
-+version = "0.1.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117"
-+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
-
- [[package]]
- name = "tokio"
--version = "0.2.22"
-+version = "0.2.23"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd"
-+checksum = "a6d7ad61edd59bfcc7e80dababf0f4aed2e6d5e0ba1659356ae889752dfc12ff"
- dependencies = [
- "bytes",
- "fnv",
-@@ -1532,7 +1652,7 @@ dependencies = [
- "memchr",
- "mio",
- "num_cpus",
-- "pin-project-lite",
-+ "pin-project-lite 0.1.11",
- "slab",
- ]
-
-@@ -1556,7 +1676,7 @@ dependencies = [
- "futures-core",
- "futures-sink",
- "log",
-- "pin-project-lite",
-+ "pin-project-lite 0.1.11",
- "tokio",
- ]
-
-@@ -1577,13 +1697,13 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
-
- [[package]]
- name = "tracing"
--version = "0.1.21"
-+version = "0.1.22"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27"
-+checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3"
- dependencies = [
-- "cfg-if 0.1.10",
-+ "cfg-if 1.0.0",
- "log",
-- "pin-project-lite",
-+ "pin-project-lite 0.2.0",
- "tracing-core",
- ]
-
-@@ -1638,18 +1758,18 @@ dependencies = [
-
- [[package]]
- name = "unicode-normalization"
--version = "0.1.13"
-+version = "0.1.16"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
-+checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606"
- dependencies = [
- "tinyvec",
- ]
-
- [[package]]
- name = "unicode-segmentation"
--version = "1.6.0"
-+version = "1.7.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0"
-+checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
-
- [[package]]
- name = "unicode-width"
-@@ -1675,7 +1795,7 @@ dependencies = [
- "ffi-support",
- "lazy_static",
- "log",
-- "paste 1.0.2",
-+ "paste 1.0.3",
- ]
-
- [[package]]
-@@ -1706,10 +1826,11 @@ dependencies = [
-
- [[package]]
- name = "url"
--version = "2.1.1"
-+version = "2.2.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
-+checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e"
- dependencies = [
-+ "form_urlencoded",
- "idna",
- "matches",
- "percent-encoding",
-@@ -1746,7 +1867,6 @@ checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+@@ -1850,7 +1867,6 @@ checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
[[package]]
name = "viaduct"
version = "0.1.0"
@@ -597,7 +57,7 @@ index 2339236..dfe0f6f 100644
dependencies = [
"ffi-support",
"log",
-@@ -1762,7 +1882,6 @@ dependencies = [
+@@ -1866,7 +1882,6 @@ dependencies = [
[[package]]
name = "viaduct-reqwest"
version = "0.1.0"
@@ -605,9 +65,9 @@ index 2339236..dfe0f6f 100644
dependencies = [
"ffi-support",
"lazy_static",
-@@ -1855,6 +1974,30 @@ version = "0.2.68"
+@@ -1959,6 +1974,30 @@ version = "0.2.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307"
+ checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158"
+[[package]]
+name = "wasm-bindgen-test"
@@ -635,26 +95,4 @@ index 2339236..dfe0f6f 100644
+
[[package]]
name = "web-sys"
- version = "0.3.45"
-@@ -1871,7 +2014,7 @@ version = "0.11.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "8a7d4f9feb723a800d8f7b74edc9fa44ff35cb0b2ec64886714362f423427f37"
- dependencies = [
-- "nom",
-+ "nom 5.1.2",
- ]
-
- [[package]]
-@@ -1935,3 +2078,9 @@ dependencies = [
- "winapi 0.2.8",
- "winapi-build",
- ]
-+
-+[[package]]
-+name = "wyz"
-+version = "0.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
---
-2.29.2
-
+ version = "0.3.46"
diff --git a/projects/uniffi-rs/config b/projects/uniffi-rs/config
index 7d89cc2..acd9d2d 100644
--- a/projects/uniffi-rs/config
+++ b/projects/uniffi-rs/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
-version: 0.5.0
+version: 0.7.0
git_url: https://github.com/mozilla/uniffi-rs
-git_hash: bc4a8570ab8430a4f80c3722ef79ff9a4819969e
+git_hash: ea3ff0402438ef1ebceda4c5fbbbd2ed6a9be227
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -13,6 +13,6 @@ input_files:
- name: rust
project: rust
# `cargo vendor vendor` in the `uniffi-rs` directory has vendored the sources.
- - URL: https://people.torproject.org/~gk/mirrors/sources/uniffi-rs-vendor-[% c('version') %].tar.bz2
- sha256sum: 71d912237208c35a762b3c812afe0a758823792dd745c1253314bcccc1694b7f
+ - URL: https://people.torproject.org/~boklm/mirrors/sources/uniffi-rs-vendor-[% c('version') %].tar.bz2
+ sha256sum: 8f201df618b3e7bcaaf01a87e0d55171605b80abeb1b660fe4dd0b9bfc10a0d8
- filename: btreeset.patch
1
0

[tor-browser-build/maint-10.0-android] Bug 40241: Update components for mozilla87-based Fenix (fenix part)
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 2f3f68ab2d67d05a74f517be61230c5811b0a6ea
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Tue Mar 16 02:33:24 2021 +0000
Bug 40241: Update components for mozilla87-based Fenix (fenix part)
---
projects/fenix/config | 4 +-
projects/fenix/gradle-dependencies-list.txt | 1477 +++++++++++++--------------
2 files changed, 729 insertions(+), 752 deletions(-)
diff --git a/projects/fenix/config b/projects/fenix/config
index 19ba93c..83db6db 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -8,13 +8,13 @@ gpg_keyring: torbutton.gpg
variant: Release
var:
- fenix_version: 86.1.0
+ fenix_version: 87.0.0b2
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 21
+ gradle_dependencies_version: 22
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
diff --git a/projects/fenix/gradle-dependencies-list.txt b/projects/fenix/gradle-dependencies-list.txt
index f1fd847..7aad8bc 100644
--- a/projects/fenix/gradle-dependencies-list.txt
+++ b/projects/fenix/gradle-dependencies-list.txt
@@ -20,8 +20,8 @@ dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852 | https://dl.go
c0c4ed0160cd2ca18390015de8b392b697c173327c6b2c0947d4e62f6958c05d | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1…
f7eab60c57addd94bb06275832fe7600611beaaae1a1ec597c231956faf96c8b | https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asyncl…
48167eeedc8da79c4d29deaf0d0cd9b5d8fedcae01f1a6efb3f28f08e8982f71 | https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asyncl…
-e6e5ba8a7c218218e830b313f0156c4a9fb82fe30ee3a2929c8f8aebb1682f5c | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0-…
-61a0feb19654e5ab6bce641e1886cb5deccf704d9c48987db9fd9d062c97b16a | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0-…
+270c7b7d99942d5ec1dd88594e4648feb33d8e31d8c3c2ab2321d49d9abdfc1f | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0/…
+aeb69e76988f43b06c84fca25efab2e418bb98b5aabcd03fa7913bd3ed1bcaa9 | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0/…
8a28c71070271b6f802f5a285ab9ae5b424e60a4f4bb4e73c0c6f53c1375506d | https://dl.google.com/dl/android/maven2/androidx/browser/browser/1.2.0/brow…
0125474b4ff9dd64d9ebaa003ba0a19f782354e4490e270fc9fb2a39b33c1115 | https://dl.google.com/dl/android/maven2/androidx/browser/browser/1.2.0/brow…
1193c04c22a3d6b5946dae9f4e8c59d6adde6a71b6bd5d87fb99d82dda1afec7 | https://dl.google.com/dl/android/maven2/androidx/cardview/cardview/1.0.0/ca…
@@ -72,13 +72,12 @@ a7edcf01d5b52b3034073027bc4775b78a4764bb6202bb91d61c829add8dd1c7 | https://dl.go
ed88fb124cfb70f2bb928ede1357874374aa45881bcb6d9744c1dc6680fa7c58 | https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-v4/1…
9edc2d4f589656d470ef03b9c6ece62d335971294b033ec7d9ceb6e361e9aafa | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
3b0a665afb8ffe1081d1c4a079f185de0de137ea84bca02400e091c8e1544b87 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
-692c2a60437a95220c8fbb6e8943196f255f535d1a7c58714e6c46530782f276 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
63898dabf7cfe5ec5d7ed8b8c2564c1427be876e1496ead95c2703cf59d3734b | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
cc30a8a2a97d3767bd169b747c078727308096dd3ab7917d80b2f1f42d118bd6 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
8d4072201b6231d67e4192d608d46b1f5c920845106c9831632c2e3ffe706117 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
e18c4bd463eab9432e5a08484d63307aff5205896766802f0978acdb9a37e9c1 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
-bd53c64b038585215b4959c1a388437a3ad525608a31c58e4283c3e371727d4d | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
-510e33b8b6ca33d2fcb3b7615a4528e338b438de398f3ee8de119c26508a5fdd | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
+648c8de1d10b025d524a2e46ac994fc3f6bf186826c09ec1a62d250bf1b877ae | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
+f9b3998f71fc46719f7305d054752d01a9dac0becbee530fd06b70a9cf7ee222 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
5951f882e95b7e05ceb9adfca0fa2ebd511d63ea5a00da4eae6c6d0c1903da18 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
85695cce0045ebb9cbba3e2fbe7d7953489bdeb517a1b2e834313ce54556ba22 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
556c1f3af90aa9d7d0d330565adbf6da71b2429148bac91e07c485f4f9abf614 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
@@ -97,8 +96,9 @@ c29fc87694e6ce116b61207221e53ed285862a6628055790b0bcf9ce45d8cc68 | https://dl.go
7f154066fed1c9162870f728b208352831b3d1f8f23f5d388958a50ca4e9f441 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtim…
cb2b15bb0cf14134e953ed8ead96f94265018643f519367d51fd837f7311e9f8 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
db21f5e6f286231197131ef184ec7f6ad212e27c1c1bad231bc2625030708029 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
-23516745f34f16ff7850bb1eadd55cf193dd789cba428de4bca120433e3bfd69 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
6b9e4fe350ed993d0c00b5ac0ff22f28bfc3bfbd9ad7eb7afc9b82f8339e673e | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
+ca2801ffc069555afed8eddd2292130f436956452bc8bbad30fb56f8e4e382a0 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
+f238f90a3d9d1f42779367309127dad8ff1a595dfa0754bbae05d77bfd0b5f33 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
f791001f2211947e56ad3d96d12c9ae93fc5589b88f08603f69a2265c9a7d702 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
83c7f3fb788384312dbd992259f0d77d01bf01bcd99ea57380376061abe89704 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
3ce866fb822b20fe2f188f974992869a0a6233fe40acbefcff090d6def5e7f33 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
@@ -113,34 +113,30 @@ b23b527b2bac870c4a7451e6982d7132e413e88d7f27dbeb1fc7640a720cd9ee | https://dl.go
9cdfe5f7849069ad84dc4fb0407b3677fb8c22d3d66fd2b8fdb8dec8c5dc7411 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.0.0/media-1.…
fd906e30485b7d46ac888a7d601ada6d3a34451c940825d6a410f997796f7184 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.2.0/media-1.…
2eaad560d5aa8fc18316547d9c069607ab59f71fb234db14438bc80428d2aea2 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.2.0/media-1.…
-6f0e2165dbe0da5b20e2aac94f9e19780d8dea3d66858864fdfb0fb1217816ff | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
-bc98e597bc5cac70dcf18727b3835e9d4d9aeabe23927e01a18beedaf5e7dddb | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
-86a6752b3bbd88f5bcd1f1a67a7bf2921e54fd667a03b2bf1f0b7d5a915ff118 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
-d5f8caf14c15a739f585302b94d340b879b9cfc64261b5126060ddb477646f5f | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
-cbe267d4f0f1b7c0d48b4dcb78c2d3e661e6f15bdc83e0a40e5900e4e88b574e | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
-15bdf726113015b957937b17493195f173355ab297fa3d9c3e7e3f78ee16d1d7 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
-9b0df1445451b3a15640b5b328ab29a0e77cb56d62ae865e81711833bcf3d6df | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
-bb42537f0ace4e907ffc1c856727c3931734efe8a13be4074866bce37afad241 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
-65bdc23a7a39efa0a6eaa895dde50ed6aedede4b7bc50493bbe698f73549371d | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
-79b7cd78065bc43b2d664585462209eedfc1984351373cd17d78a4cff1ae863e | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
-d8c9430f8a5200b8364d6d2d356c48e58d278a3d0df4f923371287eabc75cf14 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
-c514e3ed9a950618b3543b75a35f20dfa8db14454360d7cecd68f7997a2461dd | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
-10c4dbfdd7cfc9efaafcf0a4598df7291b618ac3db7e2a00e2b81ba488d93687 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
-b4fbbc7d1fa1000935cd8380293f2662fa4dcb15d6d8985454e4bed5bee1429d | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
-58b98a68c7c0b27cbb87f5aa746771840de32fb0e12b3b9905471c0ab7b70391 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
-3f0cab4a9fd98ce62642445f43c57be425374710938c8b7bf71ea8bf9940e06e | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
-00db924d67f44a6b8b93144333d9c2a04c403563aeb117d4e8a22e6212a2f1ac | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-ui/2…
-8b6a272480d509ff62e3aa3c6696ecbd516e2b64c3c4b0c2dbd5aebbac8bc3ed | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-ui/2…
-b6c3acaf69d99aca153dee46dc136f3d0ec199de33ea594b8ebfe2c308011f7d | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common-ktx/2…
-f22a34f2371dc34d0f702f9e67488fac901e7e41860ba10bf32c6c6ac6b9593a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common-ktx/2…
-7d432934364f0ab52924f5f14394768a219a980a25d6f896a62d501bfa95dec8 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.0…
-9c046739a9531a610696fbbf40a5074c3be7c8f9336957f47bc8d87af626030f | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.0…
+b7606e1eff11d06b15ce87b650c7e4fa7ecb3cac1daa0a3cecd7f87c54444436 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
+daea0d26125935c01ac4aeb28e03aa93e01fdde4ada6757452e1c6e2aee30751 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
+40a1dc17aeb0164cd6ec66104f298955d41ea15e2325dadef5c738f4c3bdbdf4 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
+bb1d67fab1065ddb25802f6d23287da2324d0eeec384a251413307a2ecb63a12 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
+d3f220e90aeb52e6ac644a18f68b256fae5455c3aab0c2c473e45047ff2fa6fc | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
+9cfdc226155fbad3e81d29df2a32d0f93e0cb3dfc3e8b572ad75332a612147e6 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
+9800c65da0ea1bb834b45597e64a354abbaf30e684d433f39594c88da309ef27 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
+782b113d75e6b394827353faace81037099b08bd3b0c8062c279dc5b8d5c9697 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-frag…
+a3e6c6c8e72fb26a33dca1bce21f0a3418dbbab81afb369c9d3e40dab0ccae40 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
+aaed6364faba1cfe68f71366fac6e34106cd6782a8761617b219fee67cf3f7c0 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
+e888abd65ecc2211c8b99e8a597a1c358a37a7a7b2bbbf64d1104f3a21a9edd3 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
+432d578d914f956d09c77db732bb593d7a5d16878b128e664699fa82a1abf937 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-runt…
+3a3df8938538fd92f075023882491efac2ca86d05a2962bb6b2ca19095821fc8 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
+6c743f4e276dd6fcf9f4dbbafc7b2d33626745b3ef3ca23951dba86974f796b6 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
+249f5f2e829fa27a3af50c957d8a9e635d8b65fc220d1be9e80ad769d56e19b2 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
+b8cc1e5c9159511f6560e670e1c8c954bd0af4ebda88d913ffde4732cbcbc3a5 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-safe…
+e1d5b3174273f9000246f5382cace0a9510f8f09df99d47471cedb73fca16d1d | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-ui/2…
+d76be04b675549391b1396963fcdf78de3e6d8edd8d1dcbd297b8b624bb8e145 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-ui/2…
+b6c3acaf69d99aca153dee46dc136f3d0ec199de33ea594b8ebfe2c308011f7d | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common-ktx/2…
+6c6841037fab47981ddaf9a5ca968ffa40e6134fda51dc23c009bdbe5cf39b33 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common-ktx/2…
891dd24bad908d5d866d7d3545114ab2d26994847cd0200ac68477287c0710b5 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.2…
80a90cda2d5fc15ab151639e980a820071531a177551cc6482b58163494eb02a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.2…
-25a498b6472ac1d008e6475b3ffa241c7c7259e9b0aada8b2560fe9c0e48d11a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
-51045ae2d2fc5f11be38a4f2f7338f736c95c7ac8f8843844374c9cf350f8706 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
-84d2cb35bc6bca7f64ee7de458e9ce00868132d764bb0fdfa8480efd9bc89225 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
-e784a20cfdc57f3718eee92c7a2fb26d0fa357f698afe08743f775c9b5cd254e | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
+35721991436c706fd383c528f986194686ed3dd3521ccb5c86d5c46e5a44c780 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
+64e3f779a18236830372ed5bf1a089dac48b8145275f9515af3c596b57e82a48 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
4e81d8ab584a184e2781c6f0d50b6f00acd11741f759270e7c976ef3307d78a7 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
bce14e26f30639013ade5bed40604bf5161535af098ed7f61972cd62235658be | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
c3a321133e616b46cf5ad07191aeebf4affdb73abee455851d39f7b4db7acb36 | https://dl.google.com/dl/android/maven2/androidx/palette/palette-ktx/1.0.0/…
@@ -153,8 +149,8 @@ b447d1d44c6d982846e3a299bb8072cd6ebefbe8d47d067736cb14f9dbf44701 | https://dl.go
9789dcb6645da154854a140efb87deb853d18f4e837d5f30164acc470902a323 | https://dl.google.com/dl/android/maven2/androidx/preference/preference/1.1.…
1d5c7f3135a1bba661fc373fd72e11eb0a4adbb3396787826dd8e4190d5d9edd | https://dl.google.com/dl/android/maven2/androidx/print/print/1.0.0/print-1.…
62482c0594841bee24bb996abb6cb7b320a6a3b77dca9f0a0ba4fe3be5530aa7 | https://dl.google.com/dl/android/maven2/androidx/print/print/1.0.0/print-1.…
-1cadc61c970c46ac91b21968bd16bb8d2cc10fa18c80b9725d5e1425c436dd3f | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
-c046a7b5f4a561086d315a12bdd4d83e394c4160275bb9e3a2acff6653433957 | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
+5b45ea40d6a2e50f59f21bc0728130da439220c56c156d10ec0381422741c84d | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
+1ebd58a3223ccc98c4198aee81b5c9ee7dc7d8fe86b068a9f1f0e426d5cab06a | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
2b130dd4a1d3d91b6701ed33096d389f01c4fc1197a7acd6b91724ddc5acfc06 | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
fbb37fcf02b35ba7a909fffb52ce4ccb36874f03c1f927f6338b68ef9f1d6b7a | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
acf5246e0ff90e057d24421ca2dea2bb578a44c882d58af0125e28343ee8c5c9 | https://dl.google.com/dl/android/maven2/androidx/room/room-ktx/2.2.5/room-k…
@@ -208,8 +204,8 @@ b50e84e635decb0a8ffb4f5955d62acdcacaf6a0b5e26983e1b6731235c5eb3f | https://dl.go
65c142c4454fda6e481ec896232b66106f84dd56ef2336e29448681e689c9cb1 | https://dl.google.com/dl/android/maven2/androidx/test/services/test-service…
2838e9d961dbffefbbd229a2bd4f6f82ac4fb2462975862a9e75e9ed325a3197 | https://dl.google.com/dl/android/maven2/androidx/test/uiautomator/uiautomat…
e134946ac5916554d8e7873f4b59034ec039138cc118a84ed1e9f700628163da | https://dl.google.com/dl/android/maven2/androidx/test/uiautomator/uiautomat…
-cd96f2448409d03e190056c96e1fe5f521aa67602ab52a5e41dcec2c94218f2a | https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.3.…
-841ff952f002177c2573b3869f366d02b5e40cd7a22e73d6521febccdb0e9d6d | https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.3.…
+f8b4d0aa87945ebabf121813d844b4819bdbfea70bd42823c0d1468a8ec62dbf | https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.4.…
+0c2c823a5dec79e6127867706502cd30d6c001ae8ae5b359678db4a8bf24cb60 | https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.4.…
76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
276a20116b705fb75b9003ee9496c56f6fd3b32375fb232472811eba60a040bd | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26 | https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawa…
@@ -220,12 +216,12 @@ c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.go
1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
e95c0031d4cc247cd48196c6287e58d2cee54d9c79b85afea7c90920330275af | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
4063bca7fe94fe65c98f4168f97ae10e02da0248598ad3ac21c432c7f608a17a | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
-290d2e9c1a22388b3f0c3dbc204a6176f8c49174126de884820befa83899f129 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
-3eb66e171b40c9cd2a9b9d9cd61a62d90e4a515491619a8d0a95e98866624b97 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
-7801441cb973fb007ef311d3db35c3b3c9d011cef890357e7ca33890833354e5 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
-0ed72c9c5a7be5b0004f226a42fa519093d49985c3eaa1a15b1563f94e9eddda | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
-dc1d9f743c59ee08c605aa924fc20819b6a0b734338e0a95af1943c3cd806e23 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.4.0/wo…
-0aa7bb81b26d756a63d83890202851736728c247da6ffe790c82dbbd3b373bdd | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.4.0/wo…
+64d0a096e7bcedaf551200ddc8bf3e753cc2ee9a5b1a61db1be4904c0a4b35a9 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.5.…
+9a8e4dd71a3cc14c75307eb6661cbad2ae398db7d57486c713ac870208599fdf | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.5.…
+59cdbf1311e901650b17b8414f1e2a9443813a099d3c58fe9ba0ae6a00bed18f | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.5.0/wo…
+83a0dfa8d6330878809e2af1e097f794c8adcb86bf4ed9a85f59a699beb345a4 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.5.0/wo…
+2305bf7e4ad9abdf8e3be8c4c46ab4592d1c7a1ba65e9c9fbebb03058e902da3 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.5.0/wo…
+7f2ae1b6168a17f9c83f32334c8a7cf6503ce3682aa03f42e02fec2eb553db62 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.5.0/wo…
d2ff1905ff7e7cbed7ecce20408a76b69a52d52fdf655b696ba49007c61a0e11 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
ec6fe50839c05802cc262ec5611e160d17dff69c5a634bb322b27341f9176e9d | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
6f80ef912434a84425977a90b41ab26259f7d0c953edaf90039e7d01d44383ab | https://dl.google.com/dl/android/maven2/com/android/installreferrer/install…
@@ -350,765 +346,272 @@ efe2431a01a188d3037d02a08e60900ec7406de626e4bd5b4995f28d409c0ebd | https://dl.go
24bd1b4a8f81aea76ae30054df6343b5c0abc27024a5f6fb9c6ee7d4ffb86533 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
d7a2ff3a2fdbd0801f832df3de81dab06d9db7e4a57dfa6d768e7c6e5fa22280 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
79b705ecf5140d3a2601b44ef058b4588878432eb6fb2f9d65da0551cb0a8e20 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
-f5759b7fcdfc83a525a036deedcbd32e5b536b625ebc282426f16ca137eb5902 | https://jcenter.bintray.com/backport-util-concurrent/backport-util-concurre…
-770471090ca40a17b9e436ee2ec00819be42042da6f4085ece1d37916dc08ff9 | https://jcenter.bintray.com/backport-util-concurrent/backport-util-concurre…
-2bf4e59f3acd106fea6145a9a88fe8956509f8b9c0fdd11eb96fee757269e3f3 | https://jcenter.bintray.com/classworlds/classworlds/1.1-alpha-2/classworlds…
-0cc647963b74ad1d7a37c9868e9e5a8f474e49297e1863582253a08a4c719cb1 | https://jcenter.bintray.com/classworlds/classworlds/1.1-alpha-2/classworlds…
-f6b9fe1101896f068d64bcad7b5927cbab59c5ab6b7efe96e72139d68ecc27f5 | https://jcenter.bintray.com/com/adjust/sdk/adjust-android/4.18.3/adjust-and…
-439a641e67b8e504eeb29e3f4704eac42b660c3f83cff9be31105ddf7caac755 | https://jcenter.bintray.com/com/adjust/sdk/adjust-android/4.18.3/adjust-and…
-9e1d8dd83ca6003f841e3af878ce2dc7c22497493a7bb6d1b62ec1b0d0a83c05 | https://jcenter.bintray.com/com/almworks/sqlite4java/sqlite4java/0.282/sqli…
-2d4cdc52be79184386d74333d1c4466b7960f83505bfd5e596e76c5ab6ee3bbf | https://jcenter.bintray.com/com/almworks/sqlite4java/sqlite4java/0.282/sqli…
-256ff34118ab292d1b4f3ee4d2c3e5e5f0f609d8e07c57e8ad1f51c46d4fbb46 | https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.8.7/j…
-0d8f415d56320fbe3883ab7adee73bbb2c9a69c2a49af3608fd6b1efa15d8b5a | https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.8.7/j…
-3b51994c1a3a29c2c89728226c0be14b69888a1bb0ef311f8d65904cdfbd9358 | https://jcenter.bintray.com/com/fasterxml/jackson/jackson-parent/2.8/jackso…
-b9b8f388fd628057b1249756468b86726c8fd5816ce14d313cb40003a509beeb | https://jcenter.bintray.com/com/fasterxml/oss-parent/27/oss-parent-27.pom
-def9b4225fa37219e18f81d01f0e52d73dca1257a38f5475be9dd58f87736510 | https://jcenter.bintray.com/com/github/gundy/semver4j/0.16.4/semver4j-0.16.…
-32001db2443b339dd21f5b79ff29d1ade722d1ba080c214bde819f0f72d1604d | https://jcenter.bintray.com/com/github/gundy/semver4j/0.16.4/semver4j-0.16.…
-cdf16ef8f5b8023d003ce3cc1b0d51bda737762e2dab2fedf43d1c4292353f7f | https://jcenter.bintray.com/com/google/android/apps/common/testing/accessib…
-d1e7dbe189b9dbfbfc31709590b65c766d654324de1ac886427333c5ff9adb0e | https://jcenter.bintray.com/com/google/android/apps/common/testing/accessib…
-7b0aa6ed7553597ce0610684a9f7eca8021eee218f2e2f427c04a7fbf5f920bd | https://jcenter.bintray.com/com/google/android/apps/common/testing/accessib…
-d46777ad3ea8bca73491b2e02fc85b3664486abf5314cc4dc6740908bd855330 | https://jcenter.bintray.com/com/google/android/apps/common/testing/accessib…
-97db1709f57b91b32edacb596ef4641872f227b7d99ad90e467f0d77f5ba134a | https://jcenter.bintray.com/com/google/auto/auto-common/0.8/auto-common-0.8…
-0ee24e09ab5d77f45545bf487868f45cf742127c9a77a2c0a92b006986b5aa9d | https://jcenter.bintray.com/com/google/auto/auto-common/0.8/auto-common-0.8…
-c98f1b0978cfd24712c27388e040c50ce0692252b3aa9448603d9efa05ebe8a8 | https://jcenter.bintray.com/com/google/auto/auto-parent/3/auto-parent-3.pom
-31a44f00ba213f7a1245809d6ba7bffed40c8dd7d571f32016caf8732a926961 | https://jcenter.bintray.com/com/google/auto/auto-parent/5/auto-parent-5.pom
-05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://jcenter.bintray.com/com/google/auto/auto-parent/6/auto-parent-6.pom
-a46426fccb5d32705ad9cbbc996f786bd048cc8cbdd21db046500169f15a4356 | https://jcenter.bintray.com/com/google/auto/auto-parent/7/auto-parent-7.pom
-e422d49c312fd2031222e7306e8108c1b4118eb9c049f1b51eca280bed87e924 | https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0-rc4/au…
-51752efb14151ec2d39c8581dadce8ef8b7c58b90f5eaca3f596998acb1ea87c | https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0-rc4/au…
-b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
-1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
-3677f725f5b1b6cd6a4cc8aa8cf8f5fd2b76d170205cbdc3e9bfd9b58f934b3b | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
-6fc498858e0cd1387595af38957820cb341d1e687ccf753e1cbd982f46ef4fc3 | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
-27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://jcenter.bintray.com/com/google/auto/value/auto-value-parent/1.6.2/a…
-b9d2d3aa6919d5f07e18c7cea942be9aef3b650a8f1e68f33c854a25c09c2049 | https://jcenter.bintray.com/com/google/auto/value/auto-value-parent/1.6.5/a…
-feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.…
-1e7f53fa5b8b5c807e986ba335665da03f18d660802d8bf061823089d1bee468 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
-02c12c3c2ae12dd475219ff691c82a4d9ea21f44bc594a181295bf6d43dcfbb0 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
-766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.…
-19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.…
-8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://jcenter.bintray.com/com/google/code/gson/gson-parent/2.8.5/gson-par…
-233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
-b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
-3aa576b5671d0e26d83d7fdb7186810b5672f00bf8e72184260bcc7c2d7dc07a | https://jcenter.bintray.com/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.…
-5b9a11c11183d011de9a9a5490962d78a4d4bfe7579b0c5be4afb18a222e3f41 | https://jcenter.bintray.com/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.…
-550a6e46a6dfcdf1d764887b6090cea94f783327e50e5c73754f18facfc70b64 | https://jcenter.bintray.com/com/google/dagger/dagger/2.24/dagger-2.24.jar
-477bdf6579ecc9cc8f99a565203f6244914f289d87e7efbdf96243fa58f9df4c | https://jcenter.bintray.com/com/google/dagger/dagger/2.24/dagger-2.24.pom
-6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
-5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
-3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
-357cd6cfb067c969226c442451502aee13800a24e950fdfde77bcdb4565a668d | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
-8d175561619289a527573cfbdcf872eb5c1216cf9ab692a0ef3dba6d793f63b4 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
-c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.2.0/…
-767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.3.1/…
-8d3b5b9fa211979e9c425e989825c07743d2eb4dc8c20ec61de0f5b3dc1a6333 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.3.2/…
-a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureacc…
-e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureacc…
-f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://jcenter.bintray.com/com/google/guava/guava-parent/26.0-android/guav…
-317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://jcenter.bintray.com/com/google/guava/guava-parent/27.0.1-jre/guava-…
-f31a5846bd9e14a4c374da1b9b146a5715ecdca925e071e1d2bf4da2daaded90 | https://jcenter.bintray.com/com/google/guava/guava-parent/28.1-jre/guava-pa…
-e1c814fd04492a27c38e0317eabeaa1b3e950ec8010239e400fe90ad6c9107b4 | https://jcenter.bintray.com/com/google/guava/guava/27.0.1-jre/guava-27.0.1-…
-6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://jcenter.bintray.com/com/google/guava/guava/27.0.1-jre/guava-27.0.1-…
-30beb8b8527bd07c6e747e77f1a92122c2f29d57ce347461a4a55eb26e382da4 | https://jcenter.bintray.com/com/google/guava/guava/28.1-jre/guava-28.1-jre.…
-74af0e8dd935894ce9bcb8e2842dd0001581b84cb6a7751c3ef9314011399ba4 | https://jcenter.bintray.com/com/google/guava/guava/28.1-jre/guava-28.1-jre.…
-e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069 | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenabl…
-53873caf26bc1ed8a567ea6c939ab2aaa3f47a5e32d5cade95ddf5080d23238a | https://jcenter.bintray.com/com/google/guava/listenablefuture/1.0/listenabl…
-b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-…
-18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-…
-2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc…
-f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc…
-21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc…
-5faca824ba115bee458730337dfdb2fcea46ba2fd774d4304edbf30fa6a3f055 | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc…
-c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://jcenter.bintray.com/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-…
-c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
-efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
-32ff2307dafc658d0b55b2ad841d625aea5606bb9b0316605165cd6980503243 | https://jcenter.bintray.com/com/google/protobuf/protobuf-bom/3.10.0/protobu…
-74ee43b09e711b13d568811e12f33bd16e6087b15f1aeded22b0dfe89ae76856 | https://jcenter.bintray.com/com/google/protobuf/protobuf-bom/3.11.4/protobu…
-619b0b0dc344cb141e493cbedc5687c8fb7c985e609a1b035e621bfab2f89021 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.10.0/p…
-146660182d07798ced06fa8e8ae3b9faa90aa48cf3c6adfc67db9371188ba502 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.10.0/p…
-161d7d61a8cb3970891c299578702fd079646e032329d6c2cabf998d191437c9 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.10.0/protob…
-b404c1b093ec9dea888e02c8dfe8662759586b94efa4f97061cdfc1bbfa15af0 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.10.0/protob…
-8cacea2f7a042dabae295c509dcdbfe32a49aa3708eec6ddb8efd8593aa0b4a3 | https://jcenter.bintray.com/com/google/protobuf/protobuf-javalite/3.11.4/pr…
-1aa38c0b0891b910e84642c5116bb1b54d86a5959f37c9c38a34ede600bdd55d | https://jcenter.bintray.com/com/google/protobuf/protobuf-javalite/3.11.4/pr…
-6dd84a508125fffdefbd583fae12bf166aa902511b570ca54fa9efa45f6dfe80 | https://jcenter.bintray.com/com/google/protobuf/protobuf-parent/3.10.0/prot…
-c3e2aee04dd8698f8b21ce635c318f8964d52fc9ca490a01a64cdc7a6c44d362 | https://jcenter.bintray.com/com/google/protobuf/protobuf-parent/3.11.4/prot…
-bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d | https://jcenter.bintray.com/com/google/zxing/core/3.3.0/core-3.3.0.jar
-ca1c3e4c4848773d4e5afa301c12bc18aa4b26d2475ff6961ce026f2d940aabf | https://jcenter.bintray.com/com/google/zxing/core/3.3.0/core-3.3.0.pom
-7c6951b21684f68ac4f6983d26e0f0b01ab5e7066f8b74b4acaff6f638ed1ff6 | https://jcenter.bintray.com/com/google/zxing/zxing-parent/3.3.0/zxing-paren…
-2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json…
-47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json…
-757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchar…
-7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchar…
-e37a4467bac5cdeb02c5c4b8e5063d2f4e67b69e3c7df6d6b610f13185572bab | https://jcenter.bintray.com/com/ibm/icu/icu4j/53.1/icu4j-53.1.jar
-a0700d84efe7cc3103557bd0522f9443681b96ba9559c4bb7f9dc9bf35243485 | https://jcenter.bintray.com/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
-a6e546ac89a9701ed5158082e49ad9b41accade443f02ac41f46986472f4a5cc | https://jcenter.bintray.com/com/jakewharton/disklrucache/2.0.2/disklrucache…
-ef8ee116b3dbdc0115b4b27be60a02d1d3c7a6f2803b2d79cd09ca5dd72ebb9a | https://jcenter.bintray.com/com/jakewharton/disklrucache/2.0.2/disklrucache…
827f06556b7fa599f29a48a5277df39ca3dce5080d4ea6f9ea1f9c7b6b78bb7a | https://jcenter.bintray.com/com/jraska/falcon/2.1.1/falcon-2.1.1.aar
ee569cafb906e7d637fc3c80be1aaf2809e5ee8ccfc1c0169886c664a74d5dc5 | https://jcenter.bintray.com/com/jraska/falcon/2.1.1/falcon-2.1.1.pom
-850c01bbafd141a724717da4e3949414a7d9c7817af55609881295d327196102 | https://jcenter.bintray.com/com/leanplum/leanplum-core/5.4.0/leanplum-core-…
-a5c9bd6f2b3674883e57a8d3300772bb7ca98d8a1388eb8e49f197710dc5e0b8 | https://jcenter.bintray.com/com/leanplum/leanplum-core/5.4.0/leanplum-core-…
-2d07df02a6a005d1aef3ad79536876765f4ed5f4ad59ca8cc33fd98274ad8b39 | https://jcenter.bintray.com/com/leanplum/leanplum-fcm/5.4.0/leanplum-fcm-5.…
-95528938a88d19291e5f806201d15c70f7b6699ac554a7688c2677f8104eb9f6 | https://jcenter.bintray.com/com/leanplum/leanplum-fcm/5.4.0/leanplum-fcm-5.…
-816dfed0ce6cc5d2369188b0fc93a4a0d3190b0f98aa61558e54910de3d82daa | https://jcenter.bintray.com/com/leanplum/leanplum-push/5.4.0/leanplum-push-…
-c6035475a5bcbfe4d33dede02de3e91234e25ca7b8d75595fac8cb52fd6f3131 | https://jcenter.bintray.com/com/leanplum/leanplum-push/5.4.0/leanplum-push-…
-1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1 | https://jcenter.bintray.com/com/squareup/javapoet/1.10.0/javapoet-1.10.0.pom
-83f0fd4baebec3bf29ee3ad2c024b3065ddef825a5aa29f7dcf5c189f9fa2962 | https://jcenter.bintray.com/com/squareup/javapoet/1.12.1/javapoet-1.12.1.jar
-a71ac3d8f27cb9ad32c87b5d8959f22d671aeb460c7a355d09f577e4c57e4c5f | https://jcenter.bintray.com/com/squareup/javapoet/1.12.1/javapoet-1.12.1.pom
-f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e | https://jcenter.bintray.com/com/squareup/javawriter/2.1.1/javawriter-2.1.1.…
-d47fc646324c22c66f2b0e0e743c850dde9a51990c53925e7501d960f2e8df84 | https://jcenter.bintray.com/com/squareup/javawriter/2.1.1/javawriter-2.1.1.…
-fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.…
-e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.…
-8085eb4c8b1ece4f32259b22f26bf880bc47b74f548e29010b0146aa6b38f24b | https://jcenter.bintray.com/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.…
-7a196c990b8f32a03df2d22c88ca5ed992c039d45e5b3876263608243f433347 | https://jcenter.bintray.com/com/squareup/kotlinpoet/1.6.0/kotlinpoet-1.6.0.…
-d9239c3ce555c87165b8ed060f0dfcd9e58d25a947d7b1bd669dcf37f4ab7deb | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-android-core…
-a39975d3ba701157babb356b23ab160493c98939a2cf7656c71308669bc80e1a | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-android-core…
-c05f763a83bfcf56a763b0e99ba18ac5b3eef2dbcd7d87202fb0fdce75ab91c8 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-android/2.4/…
-6975ee444e993c1b413fe64fbb2b9e7c20f131c7135c78c94d11c0cf927255f1 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-android/2.4/…
-14ba5af729f71885e430461026b850b091cd85a0a61b65fa99c4e99625031ddc | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-a89dc25a9710f6b95378046eecc822e81cdbaee2a3e19e0140a138eccf3bfe27 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-d3f10fac2c66505f1fbf59ec5bb29d914e4dffb184672422fabc57bc6fc1f6b3 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-1fdcfd4ce950fb6f3f57f72362f365bc99124fecb5889662c3e81a1c4de44bb8 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-182a559942ff385a603369a975f13f9179c079cc10ca82162b90b6647d744a1d | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-66ef4959e7bff7f963f93e730ce4ade81eb4ff767043e6220797d588e3ef9bf6 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-526533e2ac8f9f4b070e515b5292cb1780e35f6b40a95d67ba83f26040283770 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-a7a68702f1974981f57151d2759036ca19461db2ee9378d2bc551aba92c1f417 | https://jcenter.bintray.com/com/squareup/leakcanary/leakcanary-object-watch…
-4ff14ae10ac34c568242b26cfcd9d6562309fea29f30fe0ec17104ee0656aa57 | https://jcenter.bintray.com/com/squareup/leakcanary/plumber-android/2.4/plu…
-7231549464e6364f6f5072fdcf579e79094b8e0c01fa091ae89cfb0d7172c7bd | https://jcenter.bintray.com/com/squareup/leakcanary/plumber-android/2.4/plu…
-5a073a5db384c48bd6795a3b752477e9911f68edde255acbeca5b46200c9288e | https://jcenter.bintray.com/com/squareup/leakcanary/shark-android/2.4/shark…
-adc8f2a0690cd2f6b7cb95f5721c83197fade090c5f963d395e5d24b788e517a | https://jcenter.bintray.com/com/squareup/leakcanary/shark-android/2.4/shark…
-c1f64a7e86c7f95d8de59d2a1d70dbde5966fb1522910f43bba45a7a06d0a0ae | https://jcenter.bintray.com/com/squareup/leakcanary/shark-graph/2.4/shark-g…
-ff947605e573286ad4906f1f1fcff385c4dd398e2eb12d124d0db18dc919c181 | https://jcenter.bintray.com/com/squareup/leakcanary/shark-graph/2.4/shark-g…
-78163bb080d2b0a15ccb0d053559ad0b7cb852391b1c79e0b85ba94c43a59bc7 | https://jcenter.bintray.com/com/squareup/leakcanary/shark-hprof/2.4/shark-h…
-d51522e8a7b40383b6cdc876580aa8083a13d739e5c235940e9fab82cbda5a1f | https://jcenter.bintray.com/com/squareup/leakcanary/shark-hprof/2.4/shark-h…
-d43ca38b1ddc1647121863e8051592ff31054f1e93931fa96e4b0bbd6446184b | https://jcenter.bintray.com/com/squareup/leakcanary/shark-log/2.4/shark-log…
-240169ea8133ac80974489ba3047bc223445e6b8e088a15d29393a54a0db3171 | https://jcenter.bintray.com/com/squareup/leakcanary/shark-log/2.4/shark-log…
-a257a1c2def6a13247b53d2333a36d4aebb354191950bb6976b392b18c2853ff | https://jcenter.bintray.com/com/squareup/leakcanary/shark/2.4/shark-2.4.jar
-f94c218942455b62621a38dba9f4d4bc80bec6883cf2ef230e405c5b180f28d9 | https://jcenter.bintray.com/com/squareup/leakcanary/shark/2.4/shark-2.4.pom
-ba48439634f5e285de35f6135880c485934b5d45bb26f42cd9d9636f3c4ff56d | https://jcenter.bintray.com/com/squareup/okhttp3/mockwebserver/4.9.0/mockwe…
-26c9d5c003dfe87dfd1453f285955a91fc51ca17e0b31243860bbe44263e5255 | https://jcenter.bintray.com/com/squareup/okhttp3/mockwebserver/4.9.0/mockwe…
-dbc2bb04ecb002b9f4046263ccad996f4a3d3c59a0cc98837e300a6700571f7c | https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/4.9.0/okhttp-4.9.0.…
-4f8992dde784509e80917cabbc8406a7137e5f2ba2c1ae5b7250fc182a45bd88 | https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/4.9.0/okhttp-4.9.0.…
-e58c97406a6bb1138893750299ac63c6aa04b38b6b49eae1bfcad1a63ef9ba1b | https://jcenter.bintray.com/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar
-fd621988f7f6957025735dc6dd090b00a20f3a3bb8d77ca79036077f629b140b | https://jcenter.bintray.com/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom
-4496b06e73982fcdd8a5393f46e5df2ce2fa4465df5895454cac68a32f09bbc8 | https://jcenter.bintray.com/com/squareup/okio/okio/2.8.0/okio-2.8.0.jar
-26214068fd4c7f437ac8fe8576802a9a9dc151c457582807ad9af2af2e8c9481 | https://jcenter.bintray.com/com/squareup/okio/okio/2.8.0/okio-2.8.0.pom
-1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://jcenter.bintray.com/com/sun/activation/all/1.2.0/all-1.2.0.pom
-993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
-f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
-6443e10ba2e259fb821d9b6becf10db5316285fc30c53cec9d7b19a3877e7fdf | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/3.0.7/ist…
-6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/3.0.7/ist…
-6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://jcenter.bintray.com/com/sun/istack/istack-commons/3.0.7/istack-comm…
-c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://jcenter.bintray.com/com/sun/xml/bind/jaxb-bom-ext/2.3.1/jaxb-bom-ex…
-f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-parent/2.3.1/jaxb-par…
-b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.3.1/…
-7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-txw-parent/2.3.1/jaxb…
-785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.15/Fast…
-bbc796ab84a6778a751c2eff1136078abd2b4d35b5047062804f3582ef3c42c8 | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.15/Fast…
-cfb8cdad4c0dd05ed8cacbe146bf1718764403947b9de8348e1bfd42f62ea73e | https://jcenter.bintray.com/com/sun/xml/fastinfoset/fastinfoset-project/1.2…
-4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-…
-bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-…
-cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.jar
-b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.pom
-daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-log…
-c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-log…
-952cbfcc5f21beeccb5925cc5ba648af09839258441dd44d087d64a57d34e87a | https://jcenter.bintray.com/de/undercouch/gradle-download-task/4.0.2/gradle…
-0161c5a76ef500bcfe727e95e34974c0482ad87793d821876bf3fa95704c1407 | https://jcenter.bintray.com/de/undercouch/gradle-download-task/4.0.2/gradle…
-37001f3a481c72e46b9f94454f7c3a684089f1933638e512c8c6f036800ad619 | https://jcenter.bintray.com/io/gitlab/arturbosch/detekt/detekt-gradle-plugi…
-d35101cfafa78658705ce74a06b8db75b2e624cc8634807672ca8bacb245354f | https://jcenter.bintray.com/io/gitlab/arturbosch/detekt/detekt-gradle-plugi…
-54e20f25454e627db4623ebbd9972983f917afb803e971e02103717a7caa78b8 | https://jcenter.bintray.com/io/mockk/mockk-agent-api/1.10.0/mockk-agent-api…
-f77d7558661ffaca21d715ec59bd50ee47b4120fb1c1304547ffd64996902d35 | https://jcenter.bintray.com/io/mockk/mockk-agent-api/1.10.0/mockk-agent-api…
-d2b9f0388378687808eb387d10dbd90ce70134f5e5fe71dd88384e7e14f672a8 | https://jcenter.bintray.com/io/mockk/mockk-agent-common/1.10.0/mockk-agent-…
-b5547a1a09948b33b9b41aa041084b0a34c92ec41bb91ca8d0ce8ad31486a8bc | https://jcenter.bintray.com/io/mockk/mockk-agent-common/1.10.0/mockk-agent-…
-037f043baed4f206a9e585723244174087f761d1fb2979f16f9956a580e49271 | https://jcenter.bintray.com/io/mockk/mockk-agent-jvm/1.10.0/mockk-agent-jvm…
-ed3d9585915f9fcc24d5e754e577b0a723b986376dce62dac539c7f75fbcbcaa | https://jcenter.bintray.com/io/mockk/mockk-agent-jvm/1.10.0/mockk-agent-jvm…
-7d04767dc397595b1de24b3331ef0256fe91e37941d7a8cd7a73745511bfaae1 | https://jcenter.bintray.com/io/mockk/mockk-common/1.10.0/mockk-common-1.10.…
-fcd746dc322389a5d355e13283a855bb739e738d8c4b61dc48d95262ad3d31f3 | https://jcenter.bintray.com/io/mockk/mockk-common/1.10.0/mockk-common-1.10.…
-c25ae05f9ec1ab007663c758c771eccc8e181773d22163e5ec814b042d8d81d0 | https://jcenter.bintray.com/io/mockk/mockk-dsl-jvm/1.10.0/mockk-dsl-jvm-1.1…
-a246a76e38c2f3a81745cffd9bc7354aa16d19b4b9857309d5796e38887ca6ac | https://jcenter.bintray.com/io/mockk/mockk-dsl-jvm/1.10.0/mockk-dsl-jvm-1.1…
-553bed792babf8263086a873aa2903302e01c718c47641793eb9853873c9b1d1 | https://jcenter.bintray.com/io/mockk/mockk-dsl/1.10.0/mockk-dsl-1.10.0.jar
-8f2efb576c736fedfd789680d733ca5bdc5aeaeff9510efcc4baaac3cc404290 | https://jcenter.bintray.com/io/mockk/mockk-dsl/1.10.0/mockk-dsl-1.10.0.pom
-6216f3b74600f054392a49563498b03cb11b47faf36d06f5a4801ef02cb7f0e5 | https://jcenter.bintray.com/io/mockk/mockk/1.10.0/mockk-1.10.0.jar
-7f34e3d5e788f85616c796223ce0a1d591889ecb926f497da2d1ada02459b346 | https://jcenter.bintray.com/io/mockk/mockk/1.10.0/mockk-1.10.0.pom
-a98c4be3c0e886163e5940c04217be1bd571bbf42e5dbe4e098830b186743fd5 | https://jcenter.bintray.com/io/sentry/sentry-all/1.7.10/sentry-all-1.7.10.p…
-f014af749024c57989ca2aa51b0a986f9d86d2669d074c1dee068a8f8da19562 | https://jcenter.bintray.com/io/sentry/sentry-android/1.7.10/sentry-android-…
-2c8b59d68ba5e67fe784e7295f1594cb1e6d2233d3d741500d5fedfb515762ab | https://jcenter.bintray.com/io/sentry/sentry-android/1.7.10/sentry-android-…
-3a0ae5d7db7b65ccb7e0be7b4ac5bb4bce8105f2c5aefc01bb78c2a1dd17abc8 | https://jcenter.bintray.com/io/sentry/sentry/1.7.10/sentry-1.7.10.jar
-17c98ced8aadd526b0a5219d46f9e8b9463f2600b9907e7418d1abe8676c0e65 | https://jcenter.bintray.com/io/sentry/sentry/1.7.10/sentry-1.7.10.pom
-74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar
-953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
-43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393 | https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/jav…
-da2926f3c8be898643cc10acdec6de0b0351a57fb2735770fa0177b06ade71b9 | https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/jav…
-e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b | https://jcenter.bintray.com/javax/annotation/javax.annotation-api/1.3.2/jav…
-46a4a251ca406e78e4853d7a2bae83282844a4992851439ee9a1f23716f06b97 | https://jcenter.bintray.com/javax/annotation/javax.annotation-api/1.3.2/jav…
-91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.jar
-943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.pom
-cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://jcenter.bintray.com/javax/xml/bind/jaxb-api-parent/2.3.1/jaxb-api-p…
-88b955a0df57880a26a74708bc34f74dcaf8ebf4e78843a28b50eae945732b06 | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar
-12b20cf922773445c3445c2883cbf671fa982111e9bf9f875020f9313b3814b1 | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.pom
-59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a | https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.jar
-90f163f78e3ffb6f1c7ad97de9e7eba4eea25807141b85d6d12be67ca25449c4 | https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.pom
-4b8532f63bdc0e0661507f947eb324a954d1dbac631ad19c8aa9a00feed1d863 | https://jcenter.bintray.com/junit/junit/4.13/junit-4.13.jar
-9a0dc4c3fa2b086e708226737ef4bb37847c3cb1ce4e203517c09f6305b2267e | https://jcenter.bintray.com/junit/junit/4.13/junit-4.13.pom
-fdff6cfa9ed9cc911c842a5d2395f209ec621ef1239d46810e9e495809d3ae09 | https://jcenter.bintray.com/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.jar
-f5655d331af6afcd4dbaedaa739b889380c771a7e83f7aea5c8544a05074cf0b | https://jcenter.bintray.com/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom
-95b8b357d19f63797dd7d67622fd3f18374d64acbc6584faba1c7759a31e8438 | https://jcenter.bintray.com/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.…
-c219d697fa9c8f243d8f6e347499b6d4e8af1d0cac4bbc7b3907d338a2024c13 | https://jcenter.bintray.com/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.…
-fbd052d2d4cd16f707547c468621c6b7fb842c7ec8866d012ecbc6178de1f394 | https://jcenter.bintray.com/net/bytebuddy/byte-buddy-agent/1.10.9/byte-budd…
-19907495fbc1c2316c8ebad76f07b96d101feb1a7e3c09bfe1526fd3fc6eec9d | https://jcenter.bintray.com/net/bytebuddy/byte-buddy-agent/1.10.9/byte-budd…
-6f59f847f37a7a052243e97a3b24d6e834833fca3a48d6980f96f7779fe5ff98 | https://jcenter.bintray.com/net/bytebuddy/byte-buddy-agent/1.9.7/byte-buddy…
-93d9d380779cd1768c52b4bcee82cbfaedef9a4a30de87ae06b441e1634fd38c | https://jcenter.bintray.com/net/bytebuddy/byte-buddy-parent/1.10.9/byte-bud…
-259079927014348a555c0969dbae9339c3cc33895a05ffec8e0a25dd50c82278 | https://jcenter.bintray.com/net/bytebuddy/byte-buddy-parent/1.9.7/byte-budd…
-07b9ca6e2f970cb03f4b25651df1f2fce271d491b44e0409827887786f692d4d | https://jcenter.bintray.com/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10…
-40881d4948a871159346270f36945bc29025577c6cb57f6a5dd0c7c222069dac | https://jcenter.bintray.com/net/bytebuddy/byte-buddy/1.10.9/byte-buddy-1.10…
-2768054be7d61c4ec6f5e660e03ee70608000fe0f46d6119eee66675fff150e9 | https://jcenter.bintray.com/net/bytebuddy/byte-buddy/1.9.7/byte-buddy-1.9.7…
ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://jcenter.bintray.com/net/freehaven/tor/control/jtorctl/0.2/jtorctl-0…
3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://jcenter.bintray.com/net/freehaven/tor/control/jtorctl/0.2/jtorctl-0…
-24d81621f82ac29fcdd9a74116031f5907a2343158e616f4573bbfa2434ae0d5 | https://jcenter.bintray.com/net/java/dev/jna/jna-platform/5.5.0/jna-platfor…
-10569e3622e974d3e66255ba85923c125d84fa257ef2543d8ac1c658d9ebcd10 | https://jcenter.bintray.com/net/java/dev/jna/jna-platform/5.5.0/jna-platfor…
-2b9f3497218b32c399d1ecbea0b00d4f4553edcf669919ed1e1a87daa77acf87 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.aar
-5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar
-5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom
-281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://jcenter.bintray.com/net/java/jvnet-parent/1/jvnet-parent-1.pom
-30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a | https://jcenter.bintray.com/net/java/jvnet-parent/3/jvnet-parent-3.pom
-1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://jcenter.bintray.com/net/java/jvnet-parent/5/jvnet-parent-5.pom
-26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
-7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
-f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
-31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
-75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
-2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
-cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
-5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
-d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://jcenter.bintray.com/net/sf/proguard/proguard-parent/6.0.3/proguard-…
-5358b478d82555ab57afd7fc7231d603b40f977be7ca39f40c5ec54e767eb674 | https://jcenter.bintray.com/org/antlr/antlr4-master/4.5.2-1/antlr4-master-4…
-401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://jcenter.bintray.com/org/antlr/antlr4-master/4.5.3/antlr4-master-4.5…
-e831413004bceed7d915c3a175927b1daabc4974b7b8a6f87bbce886d3550398 | https://jcenter.bintray.com/org/antlr/antlr4-runtime/4.5.2-1/antlr4-runtime…
-93bac9b6bc714d559904ed43242782a8cbe543cebf0104bb3ecc1786a9cb661e | https://jcenter.bintray.com/org/antlr/antlr4-runtime/4.5.2-1/antlr4-runtime…
-a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
-8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
-da9fd92eacdf63daf0be52eb71accc10ff7943a85d7aac9ea96cf7e03ee3d3cc | https://jcenter.bintray.com/org/apache/ant/ant-launcher/1.8.0/ant-launcher-…
-08426143d37d770f3e4dae45b0870c3ab1ba512cb64418f34496025b72d16760 | https://jcenter.bintray.com/org/apache/ant/ant-launcher/1.8.0/ant-launcher-…
-ecbd655fd71d298eaf0787045b84324ce68936ad0de98c7a9c55538e539f2747 | https://jcenter.bintray.com/org/apache/ant/ant-parent/1.8.0/ant-parent-1.8.…
-0251dbb938740ace07a53675113eee753ba389db65aebc814b175af50321620e | https://jcenter.bintray.com/org/apache/ant/ant/1.8.0/ant-1.8.0.jar
-e6d920d5a1a34aaaebab1e6a82c36bbfd61f1eeaabc4534ee05d4faad56f1b7a | https://jcenter.bintray.com/org/apache/ant/ant/1.8.0/ant-1.8.0.pom
-ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://jcenter.bintray.com/org/apache/apache/13/apache-13.pom
-36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://jcenter.bintray.com/org/apache/apache/15/apache-15.pom
-9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://jcenter.bintray.com/org/apache/apache/16/apache-16.pom
-7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://jcenter.bintray.com/org/apache/apache/18/apache-18.pom
-1933a6037439b389bda2feaccfc0113880fd8d88f7d240d2052b91108dd5ae89 | https://jcenter.bintray.com/org/apache/apache/5/apache-5.pom
-4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://jcenter.bintray.com/org/apache/apache/9/apache-9.pom
-2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/common…
-b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/common…
-467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://jcenter.bintray.com/org/apache/commons/commons-parent/25/commons-pa…
-3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://jcenter.bintray.com/org/apache/commons/commons-parent/34/commons-pa…
-7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://jcenter.bintray.com/org/apache/commons/commons-parent/35/commons-pa…
-87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://jcenter.bintray.com/org/apache/commons/commons-parent/39/commons-pa…
-c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/http…
-7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/http…
-b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client…
-61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4…
-caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent…
-78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
-c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
-0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmi…
-dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmi…
-f16b5ea711dfe0323454b880180aa832420ec039936e4aa75fb978748634808a | https://jcenter.bintray.com/org/apache/maven/maven-ant-tasks/2.1.3/maven-an…
-f52619bf2f5c5117f0af1c23adff3a9c8f468647be47fefc59b81dcec7e480e6 | https://jcenter.bintray.com/org/apache/maven/maven-ant-tasks/2.1.3/maven-an…
-d1e247c4ed3952385fd704ac9db2a222247cfe7d20508b4f3c76b90f857952ed | https://jcenter.bintray.com/org/apache/maven/maven-artifact-manager/2.2.1/m…
-ecf58351f8fe0c398b8b452216705bece5291b9b327d30202c16b28ac680450c | https://jcenter.bintray.com/org/apache/maven/maven-artifact-manager/2.2.1/m…
-d53062ffe8677a4f5e1ad3a1d1fa37ed600fab39166d39be7ed204635c5f839b | https://jcenter.bintray.com/org/apache/maven/maven-artifact/2.2.1/maven-art…
-f658a628efd6e0efe416b977638ba144af660fe6413f3637a4d03feb6a1ce806 | https://jcenter.bintray.com/org/apache/maven/maven-artifact/2.2.1/maven-art…
-b3005544708f8583e455c22b09a4940596a057108bccdadb9db4d8e048091fed | https://jcenter.bintray.com/org/apache/maven/maven-error-diagnostics/2.2.1/…
-228367b7569fb1462a3eb1423bc2778e2fc7fbaee3d3767890c02b8924fa1889 | https://jcenter.bintray.com/org/apache/maven/maven-error-diagnostics/2.2.1/…
-153b32f474fd676ec36ad807c508885005139140fc92168bb76bf6be31f8efb8 | https://jcenter.bintray.com/org/apache/maven/maven-model/2.2.1/maven-model-…
-62dd8e35a2c4432bb22f8250bbfe08639635599b4064d5d747bd24cf3c02fac5 | https://jcenter.bintray.com/org/apache/maven/maven-model/2.2.1/maven-model-…
-7450c3330cf06c254db9f0dc5ef49eac15502311cf19e0208ba473076ee043d6 | https://jcenter.bintray.com/org/apache/maven/maven-parent/11/maven-parent-1…
-0c5a9770ae0271dc97bcc6cb0f2e809a40ba587cdce2556f9db59912c8e158fc | https://jcenter.bintray.com/org/apache/maven/maven-parent/19/maven-parent-1…
-4ad0673155d7e0e5cf6d13689802d8d507f38e5ea00a6d2fb92aef206108213d | https://jcenter.bintray.com/org/apache/maven/maven-plugin-registry/2.2.1/ma…
-3db15325cd620c0e54c3d88b6b7ec1bac43db376e18c9bf56bd0c05402ee6be8 | https://jcenter.bintray.com/org/apache/maven/maven-plugin-registry/2.2.1/ma…
-ecaffef655fea6b138f0855a12f7dbb59fc0d6bffb5c1bfd31803cccb49ea08c | https://jcenter.bintray.com/org/apache/maven/maven-profile/2.2.1/maven-prof…
-d125b3ade9f694ae60ef835f5ae000b6ba35fba8c34bafd8b40a1961375e63fa | https://jcenter.bintray.com/org/apache/maven/maven-profile/2.2.1/maven-prof…
-24ddb65b7a6c3befb6267ce5f739f237c84eba99389265c30df67c3dd8396a40 | https://jcenter.bintray.com/org/apache/maven/maven-project/2.2.1/maven-proj…
-34af0baedaef19375b7c1a7da967e9089d5e0754647fdbe9a302590392874b77 | https://jcenter.bintray.com/org/apache/maven/maven-project/2.2.1/maven-proj…
-5fe283f47b0e7f7d95a4252af3fa7a0db4d8f080cd9df308608c0472b8f168a1 | https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/2.2.…
-9dad0f56523955b60a9903f4e8342891355d7a59c77f36a3b53cf6ff2e4df625 | https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/2.2.…
-9a9f556713a404e770c9dbdaed7eb086078014c989291960c76fdde6db4192f7 | https://jcenter.bintray.com/org/apache/maven/maven-settings/2.2.1/maven-set…
-0d25a88a1b1e44801f8912206a40ff249cb5702ee87cf3d243d5213f7bcf534f | https://jcenter.bintray.com/org/apache/maven/maven-settings/2.2.1/maven-set…
-d135cff96dcbbc8a5fab30180e557cae620373cf26941d4c738a88896a2d98ed | https://jcenter.bintray.com/org/apache/maven/maven/2.2.1/maven-2.2.1.pom
-7298feeb36ff14dd933c38e62585fb9973fea32fb3c4bc5379428cb1aac5dd3c | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-file/1.0-beta-6/wa…
-f7524cfffc9773ea75a9f7379139f00a57355e411009ea9529b7adf7ef93fde8 | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-file/1.0-beta-6/wa…
-be214032de23c6b520b79c1ccdb160948e0c67ed7c11984b7ec4ca5537867b4e | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-http-lightweight/1…
-f021eb07aebec822496f489a2d6ec5d3fa81a2717bfc8407cb0ebcaadcee2d7e | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-http-lightweight/1…
-f095c882716d49269a806685dcb256fa6a36389b2713ac56bb758bf8693565a2 | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-http-shared/1.0-be…
-f6775dc981540ffa10f33bd831f14608517ce38b90628e045707dd5bb5d1348e | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-http-shared/1.0-be…
-e116f32edcb77067289a3148143f2c0c97b27cf9a1342f8108ee37dec4868861 | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-provider-api/1.0-b…
-85c3c8840bb21554faf159998146f7ca9ef1b951defb29ec4e8252ec463728fd | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-provider-api/1.0-b…
-340422be8f3e3c847a0a0bf944296774f6db81f2fa8b34912bc931a112a26919 | https://jcenter.bintray.com/org/apache/maven/wagon/wagon-providers/1.0-beta…
-025caec7c56a0cb4d86c45bc18ac3e23dba291e22ebceb76302a9a9b9b7183cc | https://jcenter.bintray.com/org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1…
-7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk…
-321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk…
-0dc4d181e4d347893c2ddbd2e6cd5d7287fc651c03648fa64b2341c7366b1773 | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.52/bcprov-jdk…
-7e4a34c7b63d879c5cec454e2e47eb1e61e271a58672e7e548659f4f23742500 | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.52/bcprov-jdk…
-963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk…
-8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk…
-64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker…
-dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker…
-9103499008bcecd4e948da29b17864abb64304e15706444ae209d17ebe0575df | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.8.1/checker…
-f23376b58ed795f2ff47426ac76b996d49e3918442e5d8713e3925f889a77799 | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.8.1/checker…
-51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-al…
-fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-al…
-92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
-e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
-47f05852b48ee9baefef80fa3d8cea60efa4753c0013121dd7fe5eef2e5c729d | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
-adf522f4839c35f5329ea97c407aebebfa8807b644852dc4d5cd7c97b7a6d2e0 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
-18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-parent/1.17/an…
-4e9df546a47cf6304a1317c46870100a8726fbea11b0dd18322f957e4070973c | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-parent/1.18/an…
-fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://jcenter.bintray.com/org/codehaus/mojo/mojo-parent/40/mojo-parent-40…
-f819cad1b15b6a7791c8b601e96bde33765e4681395807db4537d2f0dedd493b | https://jcenter.bintray.com/org/codehaus/mojo/mojo-parent/50/mojo-parent-50…
-381d72c526be217b770f9f8c3f749a86d3b1548ac5c1fcb48d267530ec60d43f | https://jcenter.bintray.com/org/codehaus/plexus/plexus-components/1.1.14/pl…
-7c758612888782ccfe376823aee7cdcc7e0cdafb097f7ef50295a0b0c3a16edf | https://jcenter.bintray.com/org/codehaus/plexus/plexus-container-default/1.…
-ef71d45a49edfe76be0f520312a76bc2aae73ec0743a5ffffe10d30122c6e2b2 | https://jcenter.bintray.com/org/codehaus/plexus/plexus-container-default/1.…
-7c75075badcb014443ee94c8c4cad2f4a9905be3ce9430fe7b220afc7fa3a80f | https://jcenter.bintray.com/org/codehaus/plexus/plexus-containers/1.0.3/ple…
-fd9507feb858fa620d1b4aa4b7039fdea1a77e09d3fd28cfbddfff468d9d8c28 | https://jcenter.bintray.com/org/codehaus/plexus/plexus-interpolation/1.11/p…
-b84d281f59b9da528139e0752a0e1cab0bd98d52c58442b00e45c9748e1d9eee | https://jcenter.bintray.com/org/codehaus/plexus/plexus-interpolation/1.11/p…
-2ca121831e597b4d8f2cb22d17c5c041fc23a7777ceb6bfbdd4dfb34bbe7d997 | https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/1.5.15/plexus-…
-12a3c9a32b82fdc95223cab1f9d344e14ef3e396da14c4d0013451646f3280e7 | https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/1.5.15/plexus-…
-2242fd02d12b1ca73267fb3d89863025517200e7a4ee426cba4667d0172c74c3 | https://jcenter.bintray.com/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.p…
-e246e2a062b5d989fdefc521c9c56431ba5554ff8d2344edee9218a34a546a33 | https://jcenter.bintray.com/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.p…
-6cc1266cf306557b4f2d09cbd8cd6e75b5ef0c5773ca4ef763d4f730df947b64 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-bom/2.3.1/jaxb-bom-2.3.…
-45fecfa5c8217ce1f3652ab95179790ec8cc0dec0384bca51cbeb94a293d9f2f | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runt…
-f8101b86157fbfc01949ffdc7c59ea71ca23b7ece25f6a79061fe01cb750ff00 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runt…
-34975dde1c6920f1a39791142235689bc3cd357e24d05edd8ff93b885bd68d60 | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar
-4714d46cacf702ab2cd478d6048c5d9cc57abdb55f4c07b6b7aa72799e02d36c | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.pom
-66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9 | https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.…
-fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93 | https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.…
-70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2 | https://jcenter.bintray.com/org/hamcrest/hamcrest-integration/1.3/hamcrest-…
-42f0be9bf98c12dacdcb99dd141d83d4dc5bb7c37a6f26684cd3ff2287667fba | https://jcenter.bintray.com/org/hamcrest/hamcrest-integration/1.3/hamcrest-…
-711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c | https://jcenter.bintray.com/org/hamcrest/hamcrest-library/1.3/hamcrest-libr…
-1ceb4bfb0f098ae29b935044b2363e11323313fe3ed2055df8b79737d5056277 | https://jcenter.bintray.com/org/hamcrest/hamcrest-library/1.3/hamcrest-libr…
-6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b | https://jcenter.bintray.com/org/hamcrest/hamcrest-parent/1.3/hamcrest-paren…
-852e1bf147fceab6caf7a82887dba2864d88bca6020524b67dddda073398d2f8 | https://jcenter.bintray.com/org/jacoco/org.jacoco.agent/0.8.5/org.jacoco.ag…
-c3b2f50b692f2b081d85613527917bc6812f922e1da469a11682653b16f283fd | https://jcenter.bintray.com/org/jacoco/org.jacoco.agent/0.8.5/org.jacoco.ag…
-cd2289b9f955c8064054145f3871e18101840ae73ee6b9f835aea51573506cce | https://jcenter.bintray.com/org/jacoco/org.jacoco.ant/0.8.5/org.jacoco.ant-…
-4b74fc5373ad70d387f3738ce0e9d4b170944039739e2b12a87c24202c002282 | https://jcenter.bintray.com/org/jacoco/org.jacoco.ant/0.8.5/org.jacoco.ant-…
-ad6e40d227647ddbeb4f47a04d1002299986d127b7244f8b34d7b742ba1ac1ca | https://jcenter.bintray.com/org/jacoco/org.jacoco.build/0.8.5/org.jacoco.bu…
-945818d150f89c03359ee9089568b2b83b4df4752fced02e6323f271481f0ddd | https://jcenter.bintray.com/org/jacoco/org.jacoco.core/0.8.5/org.jacoco.cor…
-2df79bbe660731df5b4f7b8d343afff59aa8b7d9d552d9c2f6e94de71eb374ef | https://jcenter.bintray.com/org/jacoco/org.jacoco.core/0.8.5/org.jacoco.cor…
-c83e687be88e74477519eb67e20cc77a98deefaed920cd2a5531863c23d95906 | https://jcenter.bintray.com/org/jacoco/org.jacoco.report/0.8.5/org.jacoco.r…
-574cc0a2a4e77a2939b2fc24cab92bca414d05d8a6ab9e48ffb8fbd7fe0ae725 | https://jcenter.bintray.com/org/jacoco/org.jacoco.report/0.8.5/org.jacoco.r…
-1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
-47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601 | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
-141a720ea50f39dc52148a9efab55b7ae4c5909b9c246667cfd9c9ad3e0d7f41 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-allopen/1.4.10/kotl…
-fd55a3fd6d5d8a199462dfc414749883276be93a85a1632094a1d974013041f4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-allopen/1.4.10/kotl…
-4c801ff4f5151778762ce2d57080f0cb10a4a94cb76ad24593cca35bff36da48 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
-f120750af0c9e0c6024c3c76469fd4638ef898fc5bc2d4c49f2fe17568f47b9e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
-baec7911227eec34845439c38876a2dd18eda7c15ac523655411e20e8f053138 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
-ec86adcccbb839d099b8649c5277a6fbe41d2c04b61b4b296584e7af52ae4ad1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions-…
-55b9627bceee132f70f8124b279f618ececf8d5cb8ac97c9d30f43cc5b9b3871 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
-2ae0864b6a2db8f6fea11f56dc1f3d4fdc2d1e328a876b5679e8eace58b38577 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
-0ba48754df3bcc16fafb3e22c40a251d01115359809cf14cf5f98aef15d902e1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processi…
-ecf643b89d16fe2d6ad4a7f12755cdf10076545869229dbce43fa1f2445c21fc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processi…
-23c6aa7925e529f0a982539138c69183c038822be149605e5c704f259c1837aa | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.4.10…
-08c7d6fdbe362cf36e9ccc5980675265fbea29721c485f197efac630eec413b6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.4.10…
79500b867b1194cf781ac98d5c706331a3d3ce8448437f536f8d4cc2faff50c3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
2bad6c031302519db14517bcc33af09f137845de40e5b223b778e8a38c561fd7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
-c0d023cff6ee64d360a5b6d7da17aa068b63a4a721f6323a855249d6737978e6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
-10b4c56cf26d87089777abaaa798b96924ebd42b2f59f806bb7a677f06d92fce | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
-48380e9de166d82197c8f72e42df19d9981f031ffdbcf1cd246ef6d6deff794d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.4…
-6ac9055b2aeda94eb81993cddcf4fd57c5ab53bab3925ec4c4059426317ae5eb | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.4…
-cc42296727533ff7f5ed103f48142d07f396b1ea81f795defde54eeb1a923a37 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.4.1…
-753b98532fe9569a024e466c4537df66ee2ecb4128ba1aed6635a03793bbe750 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.4.1…
1a4b999a2d9051382430994126c4bebd143c853e26d6bca4fd4c31924072ef5e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1…
eabab80e05fe2a31e2f2395cedf589cd72fb8df0a82e08e93c2e36fe953b8d59 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1…
-b0ba729c8bd039e1973bab95a88577fbc407baefaef016acecf73c06a504a05e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1…
-4ce8827541cdb85bfce5bd493b307da13da3c6c5e470f9f2a07f3e578d54b7c5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1…
b0e6d0ab0c1f1dd2e2e5f540eeb6e5791820bdbe4f34597b4af183145dd2a493 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
eedb363ba1f4b999e62b34d264f1b37492f986169d808ec94ca72a67938291db | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
-83e2d1333ac57832e10eac230f36800fa7fda46a05b7ff76f694714674260cb9 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
-226514a326c8224f2ce948b106d8a133e17ab8e114db25a5f3e413c5b70f9ae5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
110fc7e4602f7aa47286a74756b673903ff3db5044312a16172eac38f7ba1224 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
fce78c0c595493d89f90fa4ddba466abf4497e61aac6f2f0449ca1541c167413 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
-0f5dff8b67b0ea18f41e4c0547de55b83fc12d777cd0806b80c7c415fc65a78f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
-f16817733e7ea24ec8559e5ac5d3c2d2d4fcd9a4073be3052147d7c5689b1778 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
-46e4691796cd1410872325bed8919a0cd12e619fd16243f8f439ea2114acec8f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.1…
-eef93e0497a587b82d335a299f8a0616be8c19ba82a36f795647409182eb25b5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.4.1…
-fe6046a1c68d56c21aa57ee9847ad92ce5a7975e6633082c19deaa4532acc959 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-klib-commonizer-emb…
-b6f72d264e25f02dcaee32c8ab2e47d0c6a1cd7934c640406c5e72ed0994b6d4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-klib-commonizer-emb…
bf3e4edef51b7af7f1a8927fb58dca402e87668d246bfd0ad6520b9f2e3adebb | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.72…
21d04a0720be4a46804e1b73b733c72269c16900896ae463a9e87a1d04ed50c6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.72…
a188d9367de1c4ee9479db630985c0597b20709c83161b1430d24edb27e38c40 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.72/kotl…
61653ccfae8caa4203e267b479821bd90faab3fef744a7ab0fdd9f61150f970c | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.72/kotl…
-3ab3413ec945f801448360ad97bc6e14fec6d606889ede3c707cc277b4467f45 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotl…
-eef345ac9f76f39a8f0364bfbb335619eb506c4e54e1997be1c58dc624b425d9 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.10/kotl…
-7e1ae4f15a7aef746c5b89433f1c5e76b301a635854ef3c6b134b0ca31a36624 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.21/kotl…
-58b1dc4a27c380f2a8008fd24d52e5597ec2668d8519d2685abcfae5ad234a70 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.4.21/kotl…
8e525c7a19a94aea294403d531fd61eed3f08b2992e313a594cb531b75ffc35d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1…
4961812a7df6b98c49618bb67d497d5aeabf4e73ec3d346558f162f0c6d39d68 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1…
d372f2dc8051f3d1d4fae3bd50e5fa109d3ec870c4a4830112f9afc8560aacfd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.…
65a3e614b27b2372f350cc015848d44cb14ca3225d8d41e1c54e60ce95e2131f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.…
-142c51b9bed14244abdd6ea4551e645be57c3a03a70b9933822e870c05fa8fac | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.4.…
-41357fe0c2608446c7a8f1ceb0259042aa0b94d7d92404d5904024dfb88c075a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.4.…
420198546b466bfa9c38d1d7fb2ffcdfb8f518026e8f4a7ca3851fbdd525a538 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
ad6cfeaefa234918fde058ab1f376168abe54cd1e7d12824fb15cc8a07aa0f03 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
-bda57f354344be674e0a241b4c87248857acb411b9dc8ab65068141016466085 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
-428551f2529aae79a6dfc3babae871f628d30f5daee8254a339af01dd71ac1cd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
e91befa8242e5894158c0275d26d883599fe6e6c57b6952129aebec17a2ef0aa | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
de70f4db2a9d7d7aa42f88f217d59b61ed4357d4de138fadd3e459320abe52ba | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
-9741d42f28e4f1d621e421ac2b0a4fb2e5f05b1fd4bfd326545b42de57fda4c1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
-3e231d28644bff51f7a2e8cb1b6ef01e943cf9efb29720faa14166f7b448de7a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
d9a1cb78976db75b6173b51ad04efaebc2b3772636ad0b45cac4cd2d53222dc9 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
0e1311cc6bcd06f373cf8ef7c4d7380087f36de70d9c72acc432e02dabc30a9b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
-7e369d1ba702082d9daa54674004aef7cb2adf5d2872e758a87674f4c3144836 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
-4728fe40c3b32661ca66cde848e7bf78be95fd18aa07e8e36421257152d157f7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
5a9cced336697fbf2fb4b6c8a321787747f5e375227b7e355ebf3259365c024e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.7…
6a1ba16592546ab118186a5634c9b24589ae2ed64f0cdd41a913ffb3c2b13db6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.7…
-6cc266acac8dc49f5956f3f553c8de5fce0d1757c65a86b83c4ef0625a82ab69 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.1…
-04b8a39c6860998bd6446bf69c425e42af8f155a639915353c257233fecc2ff8 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.4.1…
-93f5cb50148dee7da746ed487e6278ee8d94da9a99b670f9f5248456c2f66341 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
5e7d1552863e480c1628b1cc39ce230ef829f5b7230106215a05acda5172203a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
24781edf5b0934804930dcafc8911b9e710d146239a82699889132e7b37be9dc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.7…
-98e59a445a3248f58811ce6782485de53fa77fc6f5adb3eb766a78b1231abd0a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.0…
-4681f2d436a68c7523595d84ed5758e1382f9da0f67c91e6a848690d711274fe | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.1…
-63480e72a7d4de742b49a6ff90e45f544ca37f3fe11af8b4839f9cd747515d00 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.1…
-812cf197d9c4c67e1f47f95e2d72a9b600f0d1124560617bfe9850773eccbcff | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.2…
-cd840ab880f838af0eb76e25930392c6bf0aa2a2adb5e2d4b0bb9f717a295ebd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.2…
40566c0c08d414b9413ba556ff7f8a0b04b98b9f0f424d122dd2088510efccc4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/…
9d5a13d9abc33445e1366d258af0a77e42f01945acef7c0917b9d539854e2fce | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.72/…
-f9566380c08722c780ce33ceee23e98ddf765ca98fabd3e2fabae7975c8d232b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/…
-78f2fe1d48e99c64958930ccdc43fce5939460ecdfc65f302823a021d63c520d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/…
-50de5f7dad6235064ac6c0ff577f095a91b3306c2547d8bc372291587495024a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21/…
-3b54ad496e7a7f7ad8ad6e846e5c061911242ef474e030ff602beef7565943d6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.21/…
133da70cfc07b56094282eac5c59bccd59f167ee2ead22e5282876d8bc10bf95 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/…
a6d50f0321bdb52838c99136930c8dcc78c3074a592d526862ec01be91fa622b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.72/…
-39b7a9442d7a3865e0f4a732c56c1d5da0e11ffb3bb82a461d32deb0c0ca7673 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/…
-c2f4d70082dbbfcea68fdfa74289cef32df9e4b5ddf359f006036dff1c5b06d6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/…
-8ec3db1516948b2d3524e3afbe75cb5ac59e02d98cb6ef586ef57ba63ca8d11f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21/…
-5bd2b4922398bd94d1d94e2dca0401089092b453e724a9e746daacacead735b7 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.21/…
-d71a01a080b544befbaef3ad549817f46e9858c4255d32a5393f30435cdbf3dc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.40/kotli…
-704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotli…
-ff03e9989faa2d40fa4a9098aaad71e247f27ea4d24b0754da642eb0924bd8c5 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotli…
3856a7349ebacd6d1be6802b2fed9c4dc2c5a564ea92b6b945ac988243d4b16b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotli…
4f0d574a969ea93c45628a163e1ed3ffabb4584278d72c647ec124f8c8109481 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.72/kotli…
-3db67dafc422b9015e33cfdb3a4df9e8a6912de63c4b733197c8c189cdbc6d4a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.0/kotlin…
-01ecb09782c042b931c1839acf21a188340b295d05400afd6e3415d4475b8daa | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotli…
-a4b9cfbb4bbda523af1e24d52c775fb9c0f7cb568e48b065d45aeb56e63c2762 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotli…
-f78c5d8c09db985912ab83a1de3c3b53ddf208d7b151f06a72358ea3e137d01b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotli…
-076c5a29b7a79ba2050b52e12307783d6b18d7701ce5245a3f48d005c51ae2be | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotli…
9ef3d0277fe54384104a01089c8c718a9c2a7ab2b5292ff803ecfc9d38e7d6cb | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.72/kotl…
8131897af3fb30af2464efe56161a349087bca1544cbf57495158714875163e4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.72/kotl…
-254b3aee937206a583fe37e5b0a56b570b18c1ccefd7b47a4f436786d49cb452 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.4.10/kotl…
-910c98c585e3a308e93a1c0a021d38dc5e1e3bce1c4cbf04000e4711371ac81a | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.4.10/kotl…
-f2ce17a896296ff0ab726934716b2bd06695198e6ed78274afdb1f9e6f283833 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.4.10/ko…
-db9a950ba9a190d04611e69b1732221ba7035c2796b7d8b6afa69840711cd0ee | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-klib/1.4.10/ko…
-504b6599eb3a3b4d8b4db267d1628e79f3e58f17fc4f6d44c24cda530b0edf39 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
-58b3ce8be4521230361fe6679b5930e75730164be1c7b900ddca4218072fee85 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
-5cfd02a5e7dd9be15835522035d32eca33be0e63085d27f7c918fa495e34f81f | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
-6538f458473a42b6e2a92676f00d70d4fa0f6ae824d13c1e31c8051c196d2335 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
-64c6d2b53e52eb65e26c6b828d848d8ceab30473c3511bbd1c116cf9799bc127 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
-4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
-3286bd65e41eae735600c0e9a441cb4a0988d0d76647923b9c978c90b0cb7311 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-j…
-9bea3679d3fdb5ae8bdf200fc586d1e1cb02266ac659986125ad1a14d709a94d | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-m…
-20a08a807b5debd1ced0dfcd2f74e802c002b59666d4c2d7323f4ad4c9030d8a | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-m…
-9c615416dadd93f0e14895165af8eeee01a1aaaafe02c3eb1f2d2a770b595069 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-m…
-c972379b6eeaf36a39e51cdee6fb145b411263baa0c66167fd0073768ceaadf3 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core-m…
7177ed4629704537e0252537629886f5409526ecd041d8d8e308e20624b14394 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
6f7523ea8a56d7f12d11a004cfe5a4577bfba3ed6c84cc5ac48b72d54975552c | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-ad426ec76f52b1dcdf200f55495aea9a2d2796811884e8c4b514645061cf59f3 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-9e82078f4dafe1cc2e28f308a317912a45c6a88fc83c51db6ba8cb0ea0829ef1 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-51be6791ac5aed9718a58b297c8c9081c9b704dfd72a849c4754a40da55ee236 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
99319ebdd562d9519dfd15f78fe79bc09c3a28875083eea4577d9584359a2f61 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
-f02d46222e4591a9e16b6bacce5dc6606c33b38912d916daa41d428ef6703020 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-debug/…
-5ae9e4dd4e81c0bfc92b0d760651815792793be9ec4f8a2d308b4aea6adbb23a | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-debug/…
-29038be2ba5cf1acac17fc0d9746e553cf90315b8042366169ff6d800dadf239 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-debug/…
-52614d618c5cb6a8d5d437e95102d1c45565237e09083cd64031ab7b23303a32 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-debug/…
-e61e3d3db85385c8c2439a5b87b724205cb8605b24edc89d34d8f84ed401eecd | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-test/1…
-6d2be12eb2f02729639cbf07a590e1fd354ec5042e9233d29de794055c0845bf | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-test/1…
-2e3091a94b8b822c9b68c4dc92ad6a6b0e39e2245b0fc75862de20f5a7a71e9a | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-test/1…
-497a7639820ba0758d4e0c1d6f82fdc8a9b6f6c2a28d91fe03c6b0776db4be40 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-test/1…
1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
-518080049ba83181914419d11a25d9bc9833a2d729b6a6e7469fa52851356da8 | https://jcenter.bintray.com/org/json/json/20180813/json-20180813.jar
-c7e660c50bf4ecda0fc81ab62b489db9171e207fa784ddcb48c6c85bb40b49f5 | https://jcenter.bintray.com/org/json/json/20180813/json-20180813.pom
-95b05d9590af4154c6513b9c5dc1fb2e55b539972ba0a9ef28e9a0c01d83ad77 | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar
-0a84c20cf71f6a3d21fe226b0d588332fc7ae3e90cb583c60a483317eb9f3644 | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.pom
-f64f2cdd95e608f0c5079dd0df3f184d77eb6f2a6c161fbd2602c46e7aba40c8 | https://jcenter.bintray.com/org/mockito/mockito-core/2.24.5/mockito-core-2.…
-01ed8f91d51624f38142fed8f1004600cdc06e9b47a5058ee207f2c4ca30cd0f | https://jcenter.bintray.com/org/mockito/mockito-core/2.24.5/mockito-core-2.…
-3825feca2a3c176400b063dec7c6b0643e2b5256bbbfd4e0a7c11e0dd0983baa | https://jcenter.bintray.com/org/objenesis/objenesis-parent/2.6/objenesis-pa…
-1493584824e110e22d6047584978ca2fc9907987102369bdb1e3773d54963ada | https://jcenter.bintray.com/org/objenesis/objenesis-parent/3.1/objenesis-pa…
-4c1307909dc62df1bd91f075503f8bdef5ae445e13353f1752af9448bea1d3f1 | https://jcenter.bintray.com/org/objenesis/objenesis/2.6/objenesis-2.6.pom
-cdb3d038c188de6f46ffd5cd930be2d5e5dba59c53b26437995d534e3db2fb80 | https://jcenter.bintray.com/org/objenesis/objenesis/3.1/objenesis-3.1.jar
-d46072a46dff7707e06545777486b18d73e052231e3139cd3d9c3f347bc4e6e4 | https://jcenter.bintray.com/org/objenesis/objenesis/3.1/objenesis-3.1.pom
-e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474 | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.j…
-c6b54477e9d5bae1e7addff2e24cbf92aaff2ff08fd6bc0596c3933c3fadc2cb | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.p…
-be922aae60ff1ff1768e8e6544a38a7f92bd0a6d6b0b9791f94955d1bd453de2 | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.j…
-71faa63489b3de4d6251581d2b26e87e0c167c5a08198ca62853fd83644d841f | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.p…
-fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.jar
-f4c697886cdb4a5b2472054a0b5e34371e9b48e620be40c3ed48e1f4b6d51eb4 | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.pom
-0e86b8b179c5fb223d1a880a0ff4960b6978223984b94e62e71135f2d8ea3558 | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar
-190ed352a8c20594b196b20194d06773b91c86b8d36868f937e5dbd0e9c0d78d | https://jcenter.bintray.com/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.pom
-cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.jar
-d39e7dd12f4ff535a0839d1949c39c7644355a4470220c94b76a5c168c57a068 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.pom
-c063f5a67fa03cdc9bd79fd1c2ea6816cc4a19473ecdfbd9e9153b408c6f2656 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar
-56765f0a8bd0978214f7ec87a9dafb5825b8191cff554a5adc14c65d1f5b0442 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.pom
-75fbbca440ef463f41c2b0ab1a80abe67e910ac486da60a7863cbcb5bae7e145 | https://jcenter.bintray.com/org/ow2/asm/asm-util/7.0/asm-util-7.0.jar
-e07bce4bb55d5a06f4c10d912fc9dee8a9b9c04ec549bbb8db4f20db34706f75 | https://jcenter.bintray.com/org/ow2/asm/asm-util/7.0/asm-util-7.0.pom
-b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf | https://jcenter.bintray.com/org/ow2/asm/asm/7.0/asm-7.0.jar
-83f65b1083d5ce4f8ba7f9545cfe9ff17824589c9a7cc82c3a4695801e4f5f68 | https://jcenter.bintray.com/org/ow2/asm/asm/7.0/asm-7.0.pom
-7e6cc9e92eb94d04e39356c6d8144ca058cda961c344a7f62166a405f3206672 | https://jcenter.bintray.com/org/ow2/asm/asm/7.2/asm-7.2.jar
-e9e529afbd4bc699f6a3380855d27d13017c360fdb68547e06d1c3842d84e262 | https://jcenter.bintray.com/org/ow2/asm/asm/7.2/asm-7.2.pom
-0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://jcenter.bintray.com/org/ow2/ow2/1.5/ow2-1.5.pom
-6e58dad0b8565b95c6fb14b4bfbf570523d1c5290244cfb33822789fa53b1d25 | https://jcenter.bintray.com/org/python/jython-installer/2.7.1/jython-instal…
-2a42db37f9a565f1baa833b7cb7e9f901bd9fd750d10b9bd7ca76b2385b22387 | https://jcenter.bintray.com/org/python/jython-installer/2.7.1/jython-instal…
-ce679af70c22620b5752aa6c1555d0653198d6370e9a93fe71b8eaaebc5ffaf6 | https://jcenter.bintray.com/org/robolectric/annotations/4.3.1/annotations-4…
-c0a9d951f7112452291ce0075dd6d4daab6b623d3157c7d02fb503970637b869 | https://jcenter.bintray.com/org/robolectric/annotations/4.3.1/annotations-4…
-60c85ea7fd652bc4e57567cbd3c41c5d32f2c678e212b713cefa6c63570451ce | https://jcenter.bintray.com/org/robolectric/junit/4.3.1/junit-4.3.1.jar
-f09205055e2ebd1cfe5fd4834e8136fd4f5d82288a796385a175c338752e453c | https://jcenter.bintray.com/org/robolectric/junit/4.3.1/junit-4.3.1.pom
-229256a260a1d8e8d33613a3de7ccd639661a7061251c1974975ed427428b468 | https://jcenter.bintray.com/org/robolectric/pluginapi/4.3.1/pluginapi-4.3.1…
-6c2c3fcdea6d8f309ede3651a37c5a3ea6708693120a580eb5acadbe2a051a4f | https://jcenter.bintray.com/org/robolectric/pluginapi/4.3.1/pluginapi-4.3.1…
-0d6c577fdefe254659ffba5c0564d7e00c69f03e99a4ebb6c150419834cdb703 | https://jcenter.bintray.com/org/robolectric/plugins-maven-dependency-resolv…
-faabd7ab565af30c74ae082222d49ffefbb377861f3cf544c940cc19e2f7018e | https://jcenter.bintray.com/org/robolectric/plugins-maven-dependency-resolv…
-93033237006b51541f8e93d65940f9040367775937d0ce9ac3f4ef72771c51b8 | https://jcenter.bintray.com/org/robolectric/resources/4.3.1/resources-4.3.1…
-1c60572df06c367dded10cb20ce8c4ec84b8e044d1cfb54696a031150bb111eb | https://jcenter.bintray.com/org/robolectric/resources/4.3.1/resources-4.3.1…
-3ef4267112ba581ee2a7ad37859bf61571404f07df85b8ad1da054f90eb57a5a | https://jcenter.bintray.com/org/robolectric/robolectric/4.3.1/robolectric-4…
-9a379377599af5e4866749c97b10a18a26bbb58bb0960e266da21865384874d6 | https://jcenter.bintray.com/org/robolectric/robolectric/4.3.1/robolectric-4…
-405f73400d717e083b25af92fa7866a76765dd4e97cf7fd046023d4f05375a9f | https://jcenter.bintray.com/org/robolectric/sandbox/4.3.1/sandbox-4.3.1.jar
-3b3f4b64c5c1b2b25e25777f39b591571acbf88c0b2dc3a1845469528939b346 | https://jcenter.bintray.com/org/robolectric/sandbox/4.3.1/sandbox-4.3.1.pom
-a63d13e7f3816f28ac33eea71a15c7f3f0053ecd01b08cc1e1e119af35ca1197 | https://jcenter.bintray.com/org/robolectric/shadowapi/4.3.1/shadowapi-4.3.1…
-16ab0051a6be13f4aa27dbc636dfc4c6aaa214c2163641d96cb5b381494c2e90 | https://jcenter.bintray.com/org/robolectric/shadowapi/4.3.1/shadowapi-4.3.1…
-9c69db134cdd79be751856a148020fd9b32b086bb491846eedc0a1106fcadd5e | https://jcenter.bintray.com/org/robolectric/shadows-framework/4.3.1/shadows…
-d445923ab7dfbb93d086b070b64f07495b0a1804b9ce1f51815d6034c31f781a | https://jcenter.bintray.com/org/robolectric/shadows-framework/4.3.1/shadows…
-9d7bf2557947d44d6f3ed76ec5231e8b72e33eb61c65ac9e149ad307b0eb936c | https://jcenter.bintray.com/org/robolectric/utils-reflector/4.3.1/utils-ref…
-a04c2bdefec0b5b492de86365e49537df6d39b04f3823619c94ba2b8937d8670 | https://jcenter.bintray.com/org/robolectric/utils-reflector/4.3.1/utils-ref…
-6f9e406cd667019a5450e473c4e2d372bff9c9ab6ef55aafcbc9843109cb1519 | https://jcenter.bintray.com/org/robolectric/utils/4.3.1/utils-4.3.1.jar
-9ebcfff0b872eaeeae47b2a9f9653c4e40041193a7c16e6a774f73d79aca8b57 | https://jcenter.bintray.com/org/robolectric/utils/4.3.1/utils-4.3.1.pom
-fbd7b254e02d8aef60c418a5f0e14a783b38a16162caffb2d2a16ccd5d2c09b4 | https://jcenter.bintray.com/org/slf4j/slf4j-android/1.7.25/slf4j-android-1.…
-bd9b9cb1a3987b1427f7a18babe7f92078e32bbe2e1dca6dced00cc0e3a077a9 | https://jcenter.bintray.com/org/slf4j/slf4j-android/1.7.25/slf4j-android-1.…
-18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79 | https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar
-7cd9d7a0b5d93dfd461a148891b43509cf403a9c7f9fb49060d3554df1c81e1e | https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom
-18f5c52120db036e88d6136f8839c832d074bdda95c756c6f429249d2db54ac6 | https://jcenter.bintray.com/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.…
-c513995cf019d9213d4fda666589937b2bf1bea5c4cdd337e6170e80b18406ee | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/4/oss-parent-4.pom
-b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
-fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
-d3f7f09989d5b0ce5c4791818ef937ee7663f1e359c2ef2d312f938aad0763da | https://jcenter.bintray.com/org/yaml/snakeyaml/1.24/snakeyaml-1.24.jar
-174d423722256823edbe2af8d7e3385c4645cf72382a22da0485b3b674394f37 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.24/snakeyaml-1.24.pom
15ac15eb7c371db05e721be8d466567c2b7274b767d91478e781b6d89ee5d3d0 | https://jcenter.bintray.com/tools/fastlane/screengrab/2.0.0/screengrab-2.0.…
7dc7568a003d87fa9b1bff88a579e5436b5d313821e6c904ed532bc2ae8a8b43 | https://jcenter.bintray.com/tools/fastlane/screengrab/2.0.0/screengrab-2.0.…
-34e08ee62116071cbb69c0ed70d15a7a5b208d62798c59f2120bb8929324cb63 | https://jcenter.bintray.com/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar
-8f10ffd8df0d3e9819c8cc8402709c6b248bc53a954ef6e45470d9ae3a5735fb | https://jcenter.bintray.com/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.pom
-0341395a481bb887803957145a6a37879853dd625e9244c2ea2509d9bb7531b9 | https://jcenter.bintray.com/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar
-4e54622f5dc0f8b6c51e28650268f001e3b55d076c8e3a9d9731c050820c0a3d | https://jcenter.bintray.com/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.pom
-c851df79b81bff60b33f42b8f3ad3497f94963eecffdd360d588e06b2f5e1902 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
-24dea3626ba33a81790713097ecdbb0e40acec1f778f3247d687c2def6e7562a | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
-3de5412e997e57b938c5d820f2b612aa54f9d4e451ded2cd9daa46830b1140a7 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
-1cba0a74d265432f36ee2643b843f2a1aa1f160f7f95b1d0a674b5f84b61bdda | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
-c7506f720eb8f9170ccb0f8ab3bc60a19b4d14585a910e6cb8c70b28b5c45b51 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
-a11bbacf60c9adb449e9aff67af0f0e7725079f496735c762bc627bac1ba6bd5 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
-7ea4e2f86eb19f108a75ad7a6eab3f04aaabc17fe97721e7af6eaf6016e9ac5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
-abc9a481d9a8d0cff2aa2bd64ba3659e7e2a79a4fbdbeda0cdf5f2c3f4f3b20f | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
-fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-a9986d9325879d5daa274b0cf140917207134975ca30363c49c7f53008bb0e8d | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-f1280ce4007d3d6f114c35d747c50ef4b8e972ac20812dc1ad5646c58c874446 | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
-c1bb50d0b6c922aafcb8beb4a0115e4f148f18f15237694fcbc9215806b784ee | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
-84b1f7298bac034edafc3daef1a8b1fc89543a8ebe5b762c5c3c18abe8a01f7d | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
-20b128955bc1dc0a648cb179337d181c5b8f2c01d17a4eaf778a542007a5ddd3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
-e0876d0f2a8672b608d3d702bc42c8b833a1a146e359c18e0fed2b61d00d3975 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
-6b6fda096740b2b0293adef4254aec90b43c8061bfa57c95afa6c44998fb4d2e | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
-8a91c6b51965a76397500c8e3660ec85a4dafe591322c966ce382759baed23d8 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
-2df4bf435be1494030b7e095d3006a88f42ba278d834a46720d2746bac20fb05 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
-57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
-2884728eefb23a3e9c91c2d4fd4c91fd95d6b155be7b317ecf70203e68a14428 | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
-fd98ace3131929977df6caa61b419956cd704fe7fb46dc20e1d348e710755690 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
-0b41c8ffaa03c0f84bc4ffebcd765c6373162191fa14e480fd1de19e1d9ed2b2 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
-9ff49670a110fd56586229d42673902049a92650257fad81146a25daa5a4e58f | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
-8729ddf632ec417808e0e0b49868cb46bc968fb44c97f5e0b7397ccd4728c8e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
-cf0936b6f522163606128c1803921f21c42a2ac7cbeb2a74eeeae6a4aab8e17d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-dd509aa0260caaeeab7c8ea006c2cd433b8306086c6cb18752e96320ae7f72af | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-a33eab48fd4179e2c74e4efdc40ba7e0123eaa46f64edd110bcf497501ac6281 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/72.…
-f48a34c1749ac472b23035d9ad5709f189a605ef1a6ff4bf938b10f155213f50 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/72.…
-76c335ef74415219fe3a28b97b1f439c6171fd8d65988cf407b57fe6cae0a5cd | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-27ec2ad2f7bd574ab4c898fa8a7975dcdd9443fe7e1b920223478c14fb9a067a | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-c911452c30459d80ee4e38423682793e6c5ffc640a0910438ace0bc282a982f8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-a8bd50ee1c8ebda22d4d7c1eee0a492a5b7b1877ac544d682d1f7231e78f776f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-bd2eea48d70a5f67a00aa00860a6bc93a32257a01f53a1186d733a229cc9a1c3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-3ae199e35a440ba86ded36940eda562154d0ca4e12d9dd345f1e862dd5d02330 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-d9abc9e2ea7c22e478a7490df9b76f9b0cad3629d424a342acc8db524f7f8f89 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/72.0.…
-871609a0f02975abb038a79f7dc2bbc9d6bf1c0ff25c63d980acfedc4309782f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/72.0.…
-15e31cf9110bc56e2117dc32a4d6aa9c8d4697c41f456e1c1eb0ca9052b83a4f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/72.0.1…
-60bc2fb4039829890e821811c6c8da4addddad9316200e63e2b0a1b1a383f81e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/72.0.1…
-d9aba7a5413fbd1631d4bc9298d55e37b436b6e2f7caf849ec35ab4825062b0f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/72.0.…
-4b8b2f9e72a19992fa1024955a60865a4943ec77e35272681e0f74e96938eb71 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/72.0.…
-f0eb789cb5daef255d9ee4ff7ea3afeeb3d3f6046eb7b03871da41e52b8ba1c1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/72.0…
-6a12e87a15f8e3bd60a54204a33a09fafb86b01136db71206291a8e6b6d5fdf6 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/72.0…
-07cca82ca086d49a7d26ac44d08eaff857357b357e9600b312c598e2259c8627 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-6223aba556cbe326b96d4237c4635bd6c145713514f6f915109b2781a83d48e3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-9c293d868f3ad6b5b1bdeea71745be48c4da9ebe33ba70dc36b413c741446787 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/72.…
-b1692912d33e4e81470333882168284e968265fc29e914a372d4b9bc27db72f1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/72.…
-d55f14316f736b6860512d81f32a2148d9394b1d56f5be8f8098d43dc385bf07 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/72.0.…
-5081025a6a6afb13412b2770e8771cab62b0cb468a58044f5d7de607e4f571c0 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/72.0.…
-f3620e6dafd8244db545af087d50ed93533cdbdb956e2436c841f78b631e1d0f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-cb333c3a392cebc8daaab5e5091f95e101a931dbc02121dafb775eceb97cb154 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-d75a22b6e81f1f90471251a695ef64d4a75532040065d8923ddb0928ae61fbf2 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/72…
-e2ae438a1ff43b3a68819f87114688aabde82b17241fc3a92e3e5007e176fcb8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/72…
-fe8e7843478a9699ebe8d21ca9486d826aa4c85dc3178ff1114be22f9b0ff50c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-18fb307c68e522f5538febf3222fefdfdbc45a3e2963f1aaf410eb180a91ca58 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-d7f0401ef112aa667f4d7048b3bdda7000c2a40796fbfd1b83200fd08fbabf26 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/72.…
-556565214ce5541efe8ca55211bf7ef818fc68225e922aec20f12ebd932a7d65 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/72.…
-a333cc604fe5934656fed5f842fb359f0fdde47c33351c03ef0de3dc742754aa | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-233fea9f2308ba87d7d8188f483681df63fceda665a22c3cd60008050915021a | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-4496376e4de5abd45005dccad7050975ed96b6f1c2db692a88448f66a18c859f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/72.0.1…
-b1bf76e10f7f35f96030edea83aeddae3b33f7db414e0a26b53d22aae8c70374 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/72.0.1…
-48ccc3cf289c825eca902277a633597ea19568d991863d682a528bafc2b5af42 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/72.0…
-9d31d2c60e74984cb249679eb471c74d60fd5ba26e9db607e811440c2f580772 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/72.0…
-699b513ac63c2f8d5967cfa738e0a435ada73307903b86df07c0ebc61cd6d80e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/72.0.…
-134b10be127f1232336bc41e79995ad1c6f65973539b074dc76a530ed8f287b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/72.0.…
-df27163b42a29ec9e7678cf31c3d3ec76881cab74cff7b50bdce412c3fd63c1a | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/72.0.1…
-f1b9b3539ba6c1f153e0ebaab86ef6a70d863968098810ec6a3ba750c9a41aa0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/72.0.1…
-75be14a169c7ef2bac1830cc7efca7ec45f34edf54c87d7738804030926bd1fd | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/72.0.1…
-306d39a8dae454b8d1066aad873f4ae34e107c9a2dfb949b9364290225ca5376 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/72.0.1…
-63c1a7ccf904423703ef3007cd79c0abddbe8d9f43c675685149392de48a4eeb | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/72.…
-101744fc8967f31535c2cb3d720802e4c74212f2744a088755acec73b5335f61 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/72.…
-900d502cfbdb96b3c9e35472bd2fbcc5c78396eae66ddca040d3c789bbfac61c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/72.0.1…
-b38675f99d0b52808ee0b7eaa56a3c37aa71080a8a4c804bc790f75d41bf9ea4 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/72.0.1…
-00de4cfb49bcd14819487375f615055b8993bd73fbbcf6e76c0317b5e066e1a9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/72…
-e1194bb7dc746cd2cf13bfe9bbc6f2430fce3358cd7db25be664e034b5f81c23 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/72…
-874552fc4baee332beb37bd4b0757f6a47a7d68e8d49281d05b72dba9f33076e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/72.…
-d46db6e5a6e6d96c1d735898710b0f67b979a53bb2eafa729311f842b1c627a3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/72.…
-cf22dafd69d182e403c420f8b2e0ff15650531958d4d9bec9eb1773a898adbf5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-d81c0db738fb6db6a72b752597c689550383b7a88d155a48b3f198636c13696e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-bcff4fb6918c9721d60bc129b787823a92d5c76c57f966369aafd7fa221d16f9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/72…
-55de24940257bc8e258964e56f6724c2d0aa901036b0f5f5bba9954426119309 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/72…
-dbb63d7a9152c3700c23896068b7574a93ee3be721f2617c755606781794af8e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/72.0…
-32a6a6e5bd157506289c7583dc6c9c6de6d38fa192fe4b4302b3a6cd4f8e1775 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/72.0…
-114ff24ce89cafc32c57c225f8a4d6352485fcf404d23cd23ee0f841eff8c39e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-b543235e4d99f98f5b27586efd17af53b9aaa20bf5c062eb01cdb8960758101c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-f006195322ec35527b5db0a2d45678ddb1784a963cc2efe4767f3f7c02608a8b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-d3bdf41a1c8777fa6f0bfe18ad914016f8b1b6b1d958dd572f4b30dcc8f8a0c9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-64b0bfc791733e9dddb275a8741fe444388053bd01d35e34baebc9a04ba34f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-d7b6bdd40bdaf7f83642f81b4c305aec189a0b9b6bb413b394e1ccd3a5f86a0d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-a3296cb0bb7be57b107c3098a4e7803e8ef0f43ef6f2480d8375d8ed2106be6a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-f68a4fb8c2827f8ee08be1c5fbd320e6139e34d078d84bd53f1d58f311cae06f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-4d19e118bb41814b01ad0b319522c604ff69e10e8d6de3562e6bede42e647793 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-cf9891df96dc430038bcd98186132d46e8bbf16011422ffb769e5ee8570cdc50 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-c0cdb4bc31c36570f666eb2f07bdab1c7a7f3adf65352f0185f4a77dfc86aca1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-de2206fad3964c76cecbf869a1659ce1873efd16aca39d97f110f4e36d183bf5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-d00b5dc50a6d1057e68bf3a3160a884c63405f8a71cc6d0c130c5f4445e4d2f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/72.0…
-31c55f10652e83308e6a55e4d0849b54fa416a5980552f5028cf74fd34889539 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/72.0…
-48516fec9ac2cd8daf126fdae2cbf169e67cbf76e9b3f3d9ac676dbdb99fabf6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/72.0…
-4ee857a019a9832d382f310556d9cd7eed603e32e263dd95db239219bfddfa9b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/72.0…
-cc0ce564b8554db4e0fe10d997b5b0436ff93b7fab62bce2da221fee095b3dcc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/72.0.…
-12f7802e63a79803167523f902a79323bae9debcb14e65722b6277b89ce94c57 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/72.0.…
-17f1081a1f9b310a7e33ac7b5d25e2cfa8a25bf7b405db3ecdda3b2fd7dc11c7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-c09051c3e23d7269df3efd66c8037d0a4e49bf5570cd76d9608ad4b25081ab4b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-c710c731776a6d95d75496272737ffcf58f48f67e0b8d56aa6e674420623fc1e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/72.…
-e3280e751cf7106bf80690986ba4da92079fd660e291ee5fc48d93b8e0e88012 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/72.…
-cb0f953fdc4bc4c12db326b637611a35e45522435832fcb149034db20a494449 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/72.0.1…
-8ce51eef7e1efcedacaf4a845cc867a043c20ffb3279caeaeecdd3e1f3d182f9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/72.0.1…
-c1421382eab8d3c2d3567a90d24e4a236b193dbec416df6c51e0c82a00ecff26 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/72.0.15…
-53ef7adbf3cbfc2e86ff30c1f526a7103a58d7a59e7275c8407414ee1168f0e5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/72.0.15…
-818f729bcd559f27cefe76154538580120a7596f98db818381caa2a6e79c58b4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/72.0.15/…
-e366015f4270a6a6cd631a15eca02c0b291f5232fbf2af19cca97c4a490e77ef | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/72.0.15/…
-e7b8cbad62642469e497e68131ecf8db98522345177822760b0e837544ed5377 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-fa20683d309fd4706803bc5ddc0316596361b8b7466dd0689f53a9ddccbe1961 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-3b72bf4c8c50784d39e997ab0622ebcb4c9e25e8f371d95a120a3cfa437e495a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-40d266dd4382a34a92138707a8e57dbce8a33a1a893e2a576ff23f376cbcc288 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-90bdb1bda5fce4b8946affd99d0193578183143afd2d6f184eaef51485f0308c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/72.0…
-3cf2fc81667f4c11a3b52e0adb521e8bd9de06c1afdb0fb9c6c470f61925abce | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/72.0…
-e916752eebd104569639e87cff8159df345ed8ebf4ecae391ef9b0dadf7c0300 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/72.…
-9f7253179e7d25b568f8bf2c19733ebfa2e1787a2f5ed9a6bcf3de5cff72100b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/72.…
-e00d47d0c3730a5958e36cdd263ddc91dc744958cb2346bc19b5452d6f0799c1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/72.0.…
-155e34b04f11f48e9682cf64bd01890fae73a0e2eb904cac9c05add087a668d8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/72.0.…
-da22a7cd375d0d594d12a7b661490c96e9343669d61bbeeff3bf1087ee0c81fc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-5c51c99dccfdccc3a733630ba4e8475fe80434fd7a27ca2eee0290ff55320e74 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-ff7b95cced4e44633cf22d007f9ff40cbda272b7963f62dfeb08682d822198ec | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-25ee8021d1febcbb5d4cd38c97a71e8ec4a8cfcacad42429e3b6373448bd7aa8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-6e5665aa57da755492f51f4f95dac261f4f1c88d9d068a34850375a9d00b1853 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-337a0cfeafcaa51b735d0e09fc8abcef7d9e39fd966ec0b4e1c4f2993ad42f11 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-bd01387eb4292c601a9923a256daa5989bd80a72029ee17580f5614b008159bf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/72.0.1…
-8dd195bffee252c40c2dd0e61c50a141025c2246b7ef78560b5e55dd1b63d5bd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/72.0.1…
-e4fd8116ba7112468bc43ad895cee9c50d29a149a95e1fd0d8f87962076b6ef7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/72.…
-a101f701cea3245d4017dd03de818ce84cbe1a2b773308108794da9a3750502a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/72.…
-6f0b1315aa46725006f85f68bc664e505e603d99917b06e89012f7567993b8ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-01f74390c805788380418038add66edfb827877a869c1d05c7507adff9ea7558 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-11f1eabc582d8b2a824a45241816f9e82be13ea473363e7f1dff00b697bd6ef9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-69b2a6b26c985e51d21ae7d040fe51e441128c8f20c325a2f07ca7a4bf213dcd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-1dba077ef2c14496114bdc05c01f632a05a6d6f1bc5d851c18c8032737d90696 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-945a8483d2a7fabd6a5ddbe869759a5516cd12046dd92c74f2423a6667b9e18b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-18d70a2c554bae05972e9453a2872dd5421fa2798465d26df0fa6118cbcce8d3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-a425f7bd91a2b598402c5bd75da8c19bcf79eb9160727d5174849a4fae56b7a4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-527a003ca2d044bf84329b9b007a7dc43d5f707fcbebc63716de6e65b5f1d860 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/72.0.15/l…
-742c6fabafd1f5469dd90f0d03488944f570e2db7d1997c427a1d0c40a857e85 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/72.0.15/l…
-8ddd5a225161264c7d736a42f116f543ed9f672c8574f568ae2fecfb4c08f93b | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/72.…
-e8a08b8b6316fa5433618cb15e18894a225e6067f0a453fbd4128f7b3c004cfe | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/72.…
-eda0fcb43894fbdc9a24d4f5b979c902eaaae70aea62b1554f45aa9600b1a7b8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-6b1f7fd60496a2a44ee7c98943761df6a5852c4edcdfc1157b8a7171bb904239 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-63a56b896edab40120aa64fe37ad51a008d94de16479d168ceff29dffdd8d5ce | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-940d7b1b504fb1c2d2ba068e3b7cc35e5ebb4fd641aa3b33be48ca3bf3cb0fe1 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-4a6856c18b4c6d6b6de158bd2094f2ba4d84978ead7a98d5ba83c36057b6d4e7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/72.0.15/l…
-4aaba6b9c36ca63ffb2a74912761c2008b317c02f0a87946ec1e8a319d3bc1f5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/72.0.15/l…
-8db1f518ab4716885dd27e366400e124d153ea38831f8709632c4d8c43c9789d | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-d7a9e8cb83c93eae6a5104f1a0a6ced81678588d8ebbccad02a0818dfabdbffa | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-750e3daa0a68c257472e7e3cb6c3f4f9f400555e32bdd31727d238d8fe9505b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-d6c712acbdfe91fb6015770645e770e5a758e8b1f0385a37b57dbd0f073e1b86 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-16d0389b23a563a0f03230afb4438d69072e904557635bee1cb642beceae2607 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/72.0.…
-77f1d126f50fde3fe13c2524c504c45dd64e9e4b05933adf518a1d17e3347b40 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/72.0.…
-9ac0ad81f7b6b07c045ab89901ccfab3a1915b1845ea9e5fde9e4954da4b2599 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/72…
-71549dd4ea561c0f5f6b0563c3f5b24b9bebadbeff86aabe2bafd6653dcea4c0 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/72…
-6dfef14f659e10261b6ac082ba60b74f66864df9759055c8d35835fa12da6786 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/72.0…
-40b0f25dbecf91299d4ec3a99f97261337e82502df26329f7c8ebe5ff5782476 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/72.0…
-d338c9bb41e2007cbe2fe9970c9326db9f35f8ad6260696c1b79285c5d5b980b | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-fe9748819b5dd1e22a2b55f001c108df6f23e023055cbbbba37b536214df0d7c | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-dcadf5ca6864c4aa4075ec624e54b20d0cba325360a99393657c34f9891f54df | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/72.0.1…
-7192ec9629d872d5e4ab7975bc07e1c919855d0cfb63ba9c64bf7cd72d0ad5ca | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/72.0.1…
-4399954ec888c5316cc41e7011d19ae663f6ecebb5f38f31d0b94918d40314d5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/72.0…
-48687852e659327c6fe4d8952a6a2f6f60c9f3f2c2809c44023f3ec2b2353a44 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/72.0…
-90b371b291e74e539fdf4bd059ecf9be4f5d3ba3dd7b4048225fd8e3f09b125b | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/72.0.15…
-00dd78c94466abdb8ba2097b463ddd614b2cc513ea89fe01278c55bbbd6439f7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/72.0.15…
-0c071b715ecd3debb7a93289de8626e4815bd06167ddbdc58cf454c9c4e1c780 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/72.0…
-5f4d95e7b74ab49daaaac7e0b415b12133f705d06e9de8c712ad1dc6162c964d | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/72.0…
-efa9812ba4972df3841291d9a791b13f229b09dd5fd1f747d96c0d915cf00321 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-e0f85a90b5a2c842d089c7eae6021639b65238f6f02d587b6c7af694b0355ec9 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-7d36f11412ef9b7360e0752309b7541e3c85f17b49e32a94a8398e7dab53331c | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/72…
-9f0efc530dd1ef6f416c56058ab2b96df0090ace3ebd0b0dda789fab4e9c8a43 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/72…
-72a085b1abb58af1bc6e47e690634c8d2648f021dfa9c8ce5ae752cbe0670066 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/72.…
-125ae0300219ed6b3396045ce4a5513ba29f198daa91d42772024dac5e0d24a3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/72.…
-20498d158e06bf13012376fe08d3162f722c67ef6005599d97448abc2bcc66a0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-3965c50f916512190208283ca9dd8f23acd44b236925a076234784b742a9d724 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-935d569da3ce6839b7457c87a539f71a105d2c4b8eae8caa97f166601402931f | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-76a6f8cab1c2d5d34f2443bf3db068ae79d9a37d01aaaf5266431a49efe77f3a | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-eb8e8abdd2a1108b338b1a4136d80f4eb02379985946d3d0ffe954c4dad094f7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/72.0.1…
-045810a606e73a6e9662e659b5af03a803dd6bff597bbeb2df8692f97fea68e0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/72.0.1…
-f7bf27270904abd8639b543151b6eaf268b821b8e6235c8decf8031e02ec8648 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/72.0.…
-37c364210a8e95732d536510bc77d269dc1160cea9fe117e67bfa73757e0bd2a | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/72.0.…
-4b6e3912804fa12d26972c20f161dff350ad238574dea7c9cf9503996d7b13e6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-3a17d54a76d16cf1ffbdbfb8186b6566d718a045fd241f55e8ef1e3a7df620bb | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-8d46a25b9d882b85f1ce46e1462964fcf268887f63c779ff495324718bb03ff0 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-95f46b52468f4948182a7649a00646873723e77e17a39efa411c0aa9c1ba2825 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-09f80a0b9aafdd9d46f53d139c8056880d17e2578d3f9cf797d632a5aba40fba | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/72.…
-55df98ffc5113aacf8435ac8a711980f9afa4f46ea9c81403e08aba6103dc550 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/72.…
-7ec7264a35b13382f84d701fab89daace99c6c8157c6fdc6d15da2361fb4f16b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/72.0.15/u…
-0ac5e85d85e53a9d0b5298461e76fe6a4b92c4274b32defd6fd442aa60ba8e3a | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/72.0.15/u…
-71307c399eb59749c6c25d2a0eb93c61513bc79b6c2c5a3e4dfb70e5077185a2 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/72.0.15/ui…
-ed826ad7269613f77e59b09e570e9e7f204fffa826f45c86fca828ec1c7e33cb | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/72.0.15/ui…
-980d4b9faf12e5003c279303f3bac27a2230701f439c641beaa9149e79455d81 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/72.0.…
-9e489502526726facfb8836c5097b784059578f01c9c273ac81e67e1f4e69205 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/72.0.…
-b27707dbb4f038517c89ce84541251f527a954ead43f6f7c67dd516a1640dd76 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/72.0.15/…
-78918b656183146dbe7a3a4b0dda8b52e918972741600f3a30ce8a0c1bf742e4 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/72.0.15/…
-816dfaeadb34860eb09f7366163ede45422adfc9e152143a1cda568b815bdba9 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/86.0.…
-74dd3e50b176a493a58bc3328b929824126f415f1b5ceb88c1d82ee4d2548bfb | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/86.0.…
-230963637e297d1a3edb5b3748731d1243165d3d7dda8ff979d65f8c23a02de5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-0bd06553f02d1cf52e81e83097c37f5bf6790884d9306f08eec8035c14397aa2 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-97a9d151ad636acc68eeda046866f0ac24e6f7bf2a81a6b938a3386cc73be529 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-817736c79269dc217946522fdb8f6ed57547bdd8fbf187687b53ffbe5d813bc3 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-a09eccf8b4fbb071e1acf3ea3ce1d30017250ee9c35424a0f98659526ff19597 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-a1db8db94979392030d8a5eb1c5d7eccc8383adbf031575d746c68a92e9b0d20 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
-d6394ad35c63daca22246363ff826749deb62d514a1843eea27d8f39dfb778e6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
+8f618bf515269c02037d89a555295e39422c759f7b550a74ea3edbe355ebd1ee | https://maven.mozilla.org/maven2/org/mozilla/appservices/autofill/71.0.0/au…
+a1fe528647f8e20b45ea0e32bbec271c32e68b865622c42c9a37816a076be998 | https://maven.mozilla.org/maven2/org/mozilla/appservices/autofill/71.0.0/au…
+17dbf3d3f2cdcdbd666e6770161066214cc15f58298a9188ee8d58e27e4e5ee6 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/71.0…
+8f9fd5e44dacf9f7b5e6e6ca09fde27f8c9877f09f68cd7539f5a3d980a060ff | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/71.0…
+525d738af64c99669369b374154dd0d7e4ce32bc034f9736aaa05dc64f373743 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/71.0.0/f…
+4f1e345f4e1f41ea2463befa35413ee12b465b3e60f0ab03758b53a17136a091 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/71.0.0/f…
+373c9e30a547da6931309ba988242409292f752b0bd41b8a49972bb78546f0a0 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/71.0.0/…
+3cb0d177eb6e731633140b2e854c48edee90ef755026b128016e964e5dfbc3e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/71.0.0/…
+4cea81555a8c822e382f18495e2c852a6baa4d599ecde4a11ddd5dc27685e247 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/71.0.0/logi…
+86e8a90f5deeb76843286c3afd5e65216b4f05729b4b0d7e93aca51d74b98f48 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/71.0.0/logi…
+fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/71.…
+382af2131c727357578c4fdab03a03232a9bdfca3b1036d52fd71ef65a8cf701 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/71.…
+8d72e31784fac0c350e063453d537b1d2389f928c67235c897fc4cadfb3a2ca5 | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/71.0.0/nimb…
+d11541433d5795a8d801e03637fc68e6a8baf684a3b7f56ec19684428b5575bf | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/71.0.0/nimb…
+54934a2cd59b9562345e019e9b44dd1e23d1e2ede61ae7184e29e4e510e4d422 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/71.0.0/plac…
+88e9eed6c49b167ed69864d1d0825123d7c48edfe542cafa203897a75b8fc272 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/71.0.0/plac…
+16bc9f4070b9e8bfe0be8a8ce70e922dda4e4fb74d1e20db9dc1739a8d5c5c0d | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/71.0.0/push-7…
+a882723e6aca50bb0438a21f2ae1447d9cab19f433181459cf9b7086c2d54892 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/71.0.0/push-7…
+04e220d599dd5d5071bc5ee127c5d9db3e6fe378a831c8d002fb1363883711d4 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/71.0.0/rus…
+eed6764e8fd13edbaa2ceccf976174b4dd618f9807e2ca265c7b193007b2de69 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/71.0.0/rus…
+57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/71.0.0/sync…
+b9a7f2da1c0af1f88fd8bb47d04d11b4cc14f19a0f7dee13bc960ac75e87fd74 | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/71.0.0/sync…
+a50a7c02a36e5950ab0ca0c3a9486b87fd8de95582d0ddbcaa72af173230254b | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
+3b180681c076339b42e20967f95881fa11b5753ae7f597e3c3c8288c09aa9b5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
+6d23b30049cae26d35cbc1c892a785e6bdf9e0399cbbedf5584a48a8dc5cf5c9 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
+383823dd20adbea1eec86fd59097feb3f84f4dda77531a1d79ebe801b4d6d283 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
+447480a00dbbeefc1b9bf92cce055ef9e66012b472eb7aa816d0a5b0efadc7a3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+4de56a5a6146c05615258c1bb52ba3415de6fe5c2fb4b3a8c43ac12b5128f1cc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+c404ac90f6d24d17099ed1bbee57057f11ddf012356da0132901c2fd56c4a48d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+c4cc2de0066ee703559bf27ea7e5060859529505c4eb6b3e1e6f24563daab406 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+75750cc312767ab2f4ac7cb6f5c81f6fe7e1ad1788cf06803569befdbf489fbb | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+507397e871ec3ea92af84518430279679a1b3fbcb261c6c9e28b4022a211e872 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+1caeffb46ffec001e1aabafcedeaff72aecaff1906af9e4ba6dc0d5ba5738e6e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+71290a324a7907c33a2376e37f97c3eb392d7e2a28553d73bbfd5f42dd6fc179 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+84fec1eb560eb286da5028ac46b69b0b1aaba68d2808299fd80a4c44ef1032d0 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+c7f99594339394a67c737bd3a18488a968657e4f67c9ea4bb2995e2a430494a5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+9fd1c1be67d95f47046fe2095541f6b30bd8f86b09bafa900e690e48f5f3d716 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+4d330a04ad46b7fbb7e06a1631083efef9198898a5aebad8621f7723e38389fa | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+5ba6a50bdb511962dace1eb91d5f83473f6c7f4ccba9c031b24723756a6f0266 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
+f29b7a18c25b6c3f957e8fe721294c5d9672abaeaa8a19d54cc123963e028b6c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
+522741d9030420a112c834989682457c6c518047691e85bdcde91e90c971876f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+da806a41353dc50c0b288a83b9fd42ce4e55b1474d1b24f80b85cc39c8b5a237 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+04de35c10b20442b1a2c35ea70b7b64f5325c77027cf02b6896e68bb0310d2ca | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+2bb3cb79ab43d0aa807433057eb1b4a7919e905121488dbf38298b01a73640af | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+95e6908b4c44267e447a57f26c56d6e1377241ea7980cca9634c571fefcf8bac | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+0edf084239584d5210eece1381696cdb77c6b8bad85c576b8b8efc9d7cce85c8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+3ff40893e11b1aef16f956485a5d7cd08a4b3301c928de3f71cf085cc23ec3ff | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+0a59db19f16f3d533d2608e9ce46535b4741be65f68c062863c0edc34a0a93f4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+abfba8187225c2c1df99d023969009114811045e5d17b645041bb7b6b1d48ee7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+70865120ea301cc0e002e5cec6a26a5f9660072815112c5b6a1bda0a5833efd7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+4b44ceb549ba3696691c84d0db14e9a9134ebeb6778eed46af0e1223aba0c729 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+421519af50ac6f16b2d811879e255abb8c63e65a3ebd97bf13d8ad93cad17701 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+44dfa1456b52cc1eeb996df948bdd2bd72ab516abfa58f70201984ffb32f267e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+e36f8716438235dea28df4f1ecba68ea8175ba96dde022f1e1b8e7698db8fa3e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+2a9d738edc92bf5d718f1f1fc8b2f1908fc1e2aa0867a5cffe9d4521d7e0d33b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+c9bedc55eff9d9b295ce09109afc105da74b2542468a5fb08001238d7dbff6f1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+ea0324bd6d1fc27e66a75688b49697cc1335352229029acfd9bbf94ded437b0d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+9936ea6372e996df60e06b234b13803c155595619db9852fcbbb55a5751e1b05 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+7059ce18d0b9e2722ca0546113111f5e7378dfaaaa3428cd993bd1df0e6c7601 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+46b74cb532b9d1616dc3373f263f9746875c499d9db45121ed6a4727e0c93b7c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+b884604b63f08fab27fd98e09f2fd4a81ad127baaa4be9572de150b3f4b6410f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
+ba0c8ae02b13d08013d0bcec92305753e2bf9dd7986f8bfec406691c7a0324fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
+47c6812da4b0a97e11d15305a0a5cbc7e489a25318958e686a3793fd1aecf167 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+f5f03c5462e86ac56ab00fd4827d0fd37910e789594cf11453ff4a120547e2c9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+276fd39ef0f7cac1d5744351d5c8d37f751bd8a959983a6d6c01f041d9c9b627 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+c8517be57884c050f9f628a670b8a440e98d779222b2d58d814063594ae77538 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+62be7bfc6d30816aae4ec08bb85d2015af513c6397ba01e62af9044094b21cc5 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
+2901c838eb2294db7502567f8f037a4f52a10422fcbc3c2c1c0173277784c11e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
+e1c06d4b6c497fa70a3876e22335c9fb6a4e0237587f0e0036d928196c4bd155 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
+9932b955b07d8418288a532baba96bfb754cdaf22add3c396ba59367dbe9a94c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
+6cfa83042c3077319fb6afa00b1474f9aece9bcd752557b4ad0bd2ab507f7a11 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+0bb5c241487cb1a1b85417b8bc10a89171563ee37d432793d7cfe9a0a4795054 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+82e0c14306a0c8355a0547e407954d3a14adb85571b6214daf5446414fe3fd84 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
+5a75a655da6558c176fe2948bfe68f2e50262df899c0d4f56acc59321327a761 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
+450057953eea02275513eca3121479fd74c50c5dda9a5165c792b1c00dde473e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+df1d7b48c656cbb72e9bb8fc1a6de2041935a2c203be3efef89bb68a39d132ae | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+caf47211543f9203652e471638a308673a61949e5f934ae51d8d95d5d700ec55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+f91c2cc603721cb694e71b72989694e962be4fc2b1dbae513843b6c8ffb6d2f0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+e508390b4f2fda504a12b334c78edfd5c675a5a0403f8cd8f97ebed24ddd766c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+d46fab5f7cc8adcfefb8fddf5ed1bd8845ecf5071c29df136098ec333d451dcc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+6555df4e8b9f968ad24f07ae9a8b601630deab0ddc3b762b370aea576a5dff30 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+390150404bf5acc0b76e091e17a98d44dd76b8eff8d118ab7b498523f055b2a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+2e12f28cc00c6c5f80558e2a6e80502f6076d81e0ac22cd407e45498fad3d44a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+3a47c5b6c861991951ab703072a62c36e48193a8c65d2e8a6e08ea99a9fb9487 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+58badab3d6608081f51c3a2253a09026f46068948ffb9eb88c0fca330ae84dc4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+1e400153cfef94b3ed43c68101200ad05ce7b89a123032081a564d5393b5a3e4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+e6f8eeacb570233d3df05bf0699afce9d535fe95aae449b18733909ebc51d577 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+037dfcb20b2700941b08f60816de9256fb17fc4d67c9c0334af69abe27076b9d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+103796306040b311b786968452f7e3d913c7d1e1f768c04b03f50ffef8b0b9b5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+af29d316061a14a66d40129ce611c2f11a9ea485b78b797e618cd6769f9862d2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+2cd092e0ccba5ed7b9400bbf173580ead67a8aaa90819eedb91655cc0dd0a536 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+ec9e24d5ef470561967647cbe774e14b8535a44e46cad7078a393233e4101bd9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+bbb0648abd8356a3f36d53d34c4cb57faa8aeac74019b377ddc56ae965146a9a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+b7673b37e123bcf12c6c1ae66365e359af0a6052b300226eaf3e07a42b6d62a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+62bf0e9526340aa5d741749740ebfeab1e195cb3be5cb61f35f9c587e30e1f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+cf3d3087eb5ce0db1076826524024ba26239ec36ef40896f5aad43bee06d0679 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+21a483d6b1f857d22c27d24ff25a668896d77205c4b1ae73118daac78d8cce8c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+c75fce41519c9274d47139bf1bdddf21923894d566d06ef6bb8a3ca20e5db8ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+3831c828fde09958bfcfa87f208cd57c99f5e36ab6febeb186329ab47cb2f85f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+e734da778061d002fc090995a4e3aaf2732cdeedbc169a7e7a185e84b4020ab7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+c111277efc63edef0258ec7231bab0e6a3ce723bc55fa77efc073370b6973c81 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+3a300d928e83c1661fa3d6b9233b2a78db5c745f674e40967b5b88c56ee5927e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+ea47d7ba04df4ef30b5d3177a5b68b90dd942b11110331ec35284632d09a5251 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+37d4467604fa71c587be1a0098ff8b582378c0e484dc29e3178e8bb7a0846447 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+d42c4aef464ce4f2f54893e36ce18b5b5d0c00c0df7377af5c809e260d0b390f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+1cf870bf0213d615a2706e1ae64066492942617542ac16c961795d6acf23fc7f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+b427bedff7b319d4079ffa9c01b73f3f63ab973807762c2e4009ed1c97fc948a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
+94eb5c7e174dd6394b55314a4bb9d097b5a948cf316faef65f13a9eb562e32be | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
+d0eabcc5fd3bf3fc9f8812f4302a11d9b8d7512b028cdd90d81cb60a3194efc0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
+b23e7c43b477b396505086f97b3477ac0d37193792e1eb9a337bfdca21fa6a0d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
+0db7f3a1f38177407cc56d121db30fb9d488f41eefa36077bb9baff04657c6ca | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
+fc9345e1df7bd073fd9b724ebee9b850c06173ab918b2f273528da70389d0c1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
+49023e83c3983e2063d9405bffcecc2207fc82da8d2c85e5e96255a73d79673f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+ddd6494224d01a44f0935a5a9eaaebc1951b8e8e3f1175e6d3059d654e499069 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+b1b2d2464d3e37e21b47aeb8b2f1b5af13f27543cd49f719e3738ce893bbbf1b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+896dda6d3f3023c62714a47871d3ca9b15fc6de135518895dc396a7e79bb23c2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+68c5b1b662be69564a0d7f609c1c7c956a07a744010562277dc89f8c1ca741ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+51609201b75a99ea669925b7086ca2ed1dce41079633a70558468c37f34c3428 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+cbc3c8601fdaf98e805049d7e262ac44ce448b6e1a63b74ca0d19d571d590a2e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+cb36bcb60b2beeb10593bbfed5f8fa75fe28620f700a792701bd4a73ad02aee3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+73455502add091f9f5620a7216475c9e83c235840b057fc7a2bfc6283fb9042f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+87407c404cf59b0dfe2b67d1e557d082f248facc5a689a9ac405142af1a427b6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+3697e7ae4f9479c2cd1ecb6ee81a12627e9a02cf1030f80aa1d9631869350c4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+0b414d21eaf2a0cd9f43d121cd38897f6e233dbbb701dd8589103880a87c79d4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+273b5bcfe293d286ace960fb9200cbcd5ce9d05ccae34e9acc57b54f8b7043fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+b2c4ce646748e103c6c014c1bf7807595e53a4fc4111984295d64791ddea5a7d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+c0458897a9280de5aa0c8369d96b7f34e4444617e6df28558a8130bbc4d3d2b3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+4175a14a4074994e5c66e5cacfd64a326e9b95a7100723afa0879d92f5a43179 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+f8d5f4717445f4a3845e14c5e03abd556b39868bb64ec2be021c4f02303d5e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
+5df147e52b61756c8fe4a60ecc55343c8f3553db8d019938d4f79d3a2a2e40a2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
+02f2fc043ab9c5de724b287f8b4cc7f8f9e86aafeeac6b9453213e16daa2b944 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+1f423b443cef6326868cc1573c917c65eddea81d10da591c95beaba2c1406f5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+19d5346f601edef76e0cc48d21af9c98cb9f0113b5dceb22ea5022f990d2a7df | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+192911f74c79d47cbc2124b383c015e54afeac543befc9e0f8a16648e6fd9952 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+5052aa3ed2387555780c5f630333fcb3330c480b8e513a6a482e3ca2581dc391 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+9535c283cf146f27d5ca9a7017400b04d681b8f088247de5855733610b6e7c60 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+eee3fef8cc33f30832b4b56a63acbd735c2bbe97e9bb8d23c726b54a46780d41 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+74f3e0fbc334d9d7593716fcf0f87ef16bf7ebe31fe71e891153fa54b1a94197 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+72b001ca36b87111f1f261eea32eacf31f5abc0dcbd85e5d63f5beed8d938498 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+95b99f092c718222bcb86f992ee1c6192f5fdbd88c211f93ebc7ed49e4be8cfb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+42526b88198a2cbd910b1ec27aef8bd93520c65d0755b6c041b6c698392981a0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+a959a0b420e9293d48f5b86da4a511865bb47f2232475391403b7fc4b430c3bb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+c5984b5d09f1c652e686766a43f1c02704a516c11d613ede97929c5c2b539fb8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
+6aa264d8515a001633eea0e1b92d5ba251640e90de2b69a3aaede56a633930eb | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
+504b56cfbe99e06e70d4feb47c4e910f4e6b7f923bd2c3b58bb81554c1311ee5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+579d897481f031a235b94046a30806f9f349bbe9af86f901c83b7c3dff65db7e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+e6ff5bdb4f8372ec9acf9d89646cf4169a2af8566892c19eec98c93eaa9e96b5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+e923ed086adafe9269ba3794f4a31ef0c20c5a224399fe4a7566fcde5d9d91f7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+a469c7e07ce0b8fa976507f534b3f942b488d819f0a1a254a0b22b66386fe6d8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+1c8c2d4d1c9bf94438f72507c23bd4005ccd39e7e5c0e9dff017f2d10698db17 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+f5a4aed033dac1896c856437183ad1b86bc1e9b05f9097e5c2bfc669ecbb446d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
+2786152ab92659bc375aec537cf0e2c7221a0973ff94cf4c0c1848a2f5a0deb0 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
+6a3c45629bf4e13ed742c95f22bb00a6a9235670b5ef97d3fad5147047febc05 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+551d807903ee2bcb566f62512a36bf0624ac093b6d7d5932811efc8fed97ca3e | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+be6262c3e8e4086866b5ef1b6c3efc89bc280b707f66a651fcb9549a17e32d51 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+c91727b253230ef18f44d18d6a50d578b1e54349474583ee176efdd0422431c3 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+08ffd378637b8a10855d45740823d4a9c273699177049034ac63b8950c1eec28 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+569bd431ef7e46e805e57874a21a91da6a8cec863eadff2dd5b85b4c68f6b1b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+63f3504b9097dd3fe791baf9e0c1b804cca20c68d8dab956094477ba975903d8 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+0acbd61f2cc381babd0820c1e751b7735d598989ee40def83499376f858d4340 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+3efafa346a192967bd72946f063853cbb1e957b7d1a7053517b66fae4e279f9b | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+09a0327e49147819446eec9e86ff01d2e5558f0cd770f2268038b7d9a71a1175 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+2887a688ca6b257849cc9cc19c573a3568310ad01d53ac3261b91f72892573dc | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+dd322de39885cf7788f95c42353e76b0e4a3a49eec21f37d61144aeced125ddf | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+8f1af21d2bba5153224d3b25579f607b1864fb5d0129340090ff8fbef964492c | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
+036d65d39f4f33ecb43c8bcbed4c7f9378b4b17965c08757ff0c618d99aeb10f | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
+40994cad75fc76f92f9461e0d548e35f1a4d80e56336305d0b3c77bfe92618f5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+70f0e1f7ccc21e228ca597cbb3408b0760bb7049d5c37df83283da6ca43ae19a | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+50ecf4685716648576e7d1f7d515046548b209125274a715b2dd496b925309dd | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
+5df55edad3df9848a61eaad9f185853a177aba4e06bd4fba1ef07f8e9fdacc9e | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
+489d8af504015a2ed04e3afa77e0e14c0cff604204f2d86ed9f8b793c6faf3a6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+5cd73e9ec463a40ae3aa40f9c9071d42a51a55f7a358717205efd66fc2990d26 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+04259ad572ec6a115fb8bd47d670ddf9bba5956320aac7153edede90d8b4a79d | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+fc1bd1fcb5031cc8ee7c0d15b603bacfdec9d4827e1dd32c383405a6b2208b32 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+c9a04732c9a7e37f61284b5e5a917a33db63ad97fc8fc01a2d85abbf65a88a95 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+a84e0a5e6a2e7ccf01199a4d44f3e73e80216a05ade7de5a9a00fb035275aad7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+e226502a506a8f99bf2e7f3b33c276e2772c98f148ed2f54c700910bb7fd78eb | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+17345a94a232282328b4b0e63626fd57b81269403979b8478e3f8d8b4b9790e8 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+083bcfb471cbbd1dce87709953051dc36c0873f45b6d5ed60f3c58c5e6ab6730 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+c53258cd336816097caa71d15edfc9ebe9e9767851bd679b02fb8905c51fa8a4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+d6e6b960d31f7cdfb1cf95872ce81c3780c7fc5e369efef46f118d6806c2411c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+05c27ca9e513487bcb7a67b479dc6d8950cf25f02ba91ad833c160e540209f5d | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+86e41f0678aad62b0098d9ee638cdc0c12c063d1bab5c84f7d1e12ba8a6615aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
+7be55332e83d7621fbf262ac8d6d4d0f84d674bc8c7467a1a46cbc8fc31b9d6b | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
+f3cc185bfe40e671225aa6c2555cef4db7382c569da6580488cda053d73a9678 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+5461d510560a7e2814099fb271cdd37a3591682330f0e952ad7928aba339671a | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+d19e50c0207f782ecce7b109232cf09529fc46720ce961eadf33b70b52f3680f | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+a895a4d33f1d91d3e7c7e822c23f99727694e67e2d5b05ba6ff0f177d4875501 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+f102797958eee931fa6003367175bb6e1b836be921894d67f1a87d13a9df4ccb | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+1279b2e5719a10d6188c21533880f8575eae795921dbdd22389891590333ea6d | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+541835af29d1453905668ad01be21c20eef303de873069d9b8e903981d36a108 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+6d9bfc003be350569cef150120bfe5ff29eeab360a8e02a61a6cf2fe20b09f70 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+3e0e38eed080c2b10f56db91c6e0380b4c9730f440da239ee85c7a125d398f2b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
+8cdf856c99cff104aa3cae54cfcb8e525099e450b2956e4e33201fc387e69f85 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
+bf092c353816ea029b579a63e3d3db2dfd08706bbabe4ddd67727551a5d5adaf | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
+f0a0ced0ece059663601e9e8e1d7dcfc546ff2130d6a3025eefeb880f94868da | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
+3e829b30496a0dad0352477b4866eea7c468363c365a3a4efc0a0cd7d1252957 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+8bee0548ee1f8ab667c6739d1af228df67fc7f79fb4cce1b4618855dbaf73ec6 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+f590de90365c4d2a7575582f89f6390b90599988e75601881e26d85c0aab48a1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
+34433fc57454d5d980ab0b77546431a86294d9fcae6d146e9ec7512ef2c56f37 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
+f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+0b981a04d70ee3b438359a3da2548f56b188d594dd67bd297a09f0fa0845e348 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+5d942e4a68aef1fab1b219f51e2882eb61dfd27d4bdcd9265b6d375ce5e5fb3b | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/34.1.0/glean-3…
+681374f4e97bd97098c1266973d89167ff9c592ccb89617832e224135af72637 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/34.1.0/glean-3…
+8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-p…
+233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
+b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
470564ff0a452da1c96be4ca3a9cdeceaa2912537ee2a8def486f3b383d43f15 | https://plugins.gradle.org/m2/com/jetbrains/python/envs/com.jetbrains.pytho…
+952cbfcc5f21beeccb5925cc5ba648af09839258441dd44d087d64a57d34e87a | https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.0.2/grad…
+62f29168dc2ffb580c44aa6021f655051a9cb0a48dfd47bc7e4e8ca6f963adb0 | https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/4.0.2/grad…
6438812f927b505a4c4ef2703b45433a1b99e45334526bfed25e71e1a79abb14 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
317aa4c467a37d5fcab6657c326a4069ea8e8c6dda951ec2091ffb95c596a2a3 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
aa42cf65e9f7475bc7cb2fa7cb7dbf99938dd47de864bbed68135e5a12d3a482 | https://plugins.gradle.org/m2/io/gitlab/arturbosch/detekt/io.gitlab.arturbo…
@@ -1129,3 +632,477 @@ b914cbcd8e55e76f221cc863912c38b1fe6ce56800300c147f85410aaa8789ab | https://plugi
8ec81474695b94779488b99183955cf0e1f50fe4d048af920b756ca71b72ac90 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3…
3825cbc39ac9b557bf11ed52ed8552200831004a60e845eba61c77ba972a2d9f | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.3.72/…
0e10935a94077c217ec5107b451c0859e89a27f67fd09543bd044c798cb154cf | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.3.72/…
+b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+850c01bbafd141a724717da4e3949414a7d9c7817af55609881295d327196102 | https://repo.leanplum.com/com/leanplum/leanplum-core/5.4.0/leanplum-core-5.…
+a5c9bd6f2b3674883e57a8d3300772bb7ca98d8a1388eb8e49f197710dc5e0b8 | https://repo.leanplum.com/com/leanplum/leanplum-core/5.4.0/leanplum-core-5.…
+2d07df02a6a005d1aef3ad79536876765f4ed5f4ad59ca8cc33fd98274ad8b39 | https://repo.leanplum.com/com/leanplum/leanplum-fcm/5.4.0/leanplum-fcm-5.4.…
+95528938a88d19291e5f806201d15c70f7b6699ac554a7688c2677f8104eb9f6 | https://repo.leanplum.com/com/leanplum/leanplum-fcm/5.4.0/leanplum-fcm-5.4.…
+816dfed0ce6cc5d2369188b0fc93a4a0d3190b0f98aa61558e54910de3d82daa | https://repo.leanplum.com/com/leanplum/leanplum-push/5.4.0/leanplum-push-5.…
+c6035475a5bcbfe4d33dede02de3e91234e25ca7b8d75595fac8cb52fd6f3131 | https://repo.leanplum.com/com/leanplum/leanplum-push/5.4.0/leanplum-push-5.…
+f5759b7fcdfc83a525a036deedcbd32e5b536b625ebc282426f16ca137eb5902 | https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util…
+770471090ca40a17b9e436ee2ec00819be42042da6f4085ece1d37916dc08ff9 | https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util…
+2bf4e59f3acd106fea6145a9a88fe8956509f8b9c0fdd11eb96fee757269e3f3 | https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/cl…
+0cc647963b74ad1d7a37c9868e9e5a8f474e49297e1863582253a08a4c719cb1 | https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/cl…
+f6b9fe1101896f068d64bcad7b5927cbab59c5ab6b7efe96e72139d68ecc27f5 | https://repo.maven.apache.org/maven2/com/adjust/sdk/adjust-android/4.18.3/a…
+439a641e67b8e504eeb29e3f4704eac42b660c3f83cff9be31105ddf7caac755 | https://repo.maven.apache.org/maven2/com/adjust/sdk/adjust-android/4.18.3/a…
+9e1d8dd83ca6003f841e3af878ce2dc7c22497493a7bb6d1b62ec1b0d0a83c05 | https://repo.maven.apache.org/maven2/com/almworks/sqlite4java/sqlite4java/0…
+2d4cdc52be79184386d74333d1c4466b7960f83505bfd5e596e76c5ab6ee3bbf | https://repo.maven.apache.org/maven2/com/almworks/sqlite4java/sqlite4java/0…
+256ff34118ab292d1b4f3ee4d2c3e5e5f0f609d8e07c57e8ad1f51c46d4fbb46 | https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-cor…
+0d8f415d56320fbe3883ab7adee73bbb2c9a69c2a49af3608fd6b1efa15d8b5a | https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-cor…
+3b51994c1a3a29c2c89728226c0be14b69888a1bb0ef311f8d65904cdfbd9358 | https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2…
+b9b8f388fd628057b1249756468b86726c8fd5816ce14d313cb40003a509beeb | https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/27/oss-parent…
+def9b4225fa37219e18f81d01f0e52d73dca1257a38f5475be9dd58f87736510 | https://repo.maven.apache.org/maven2/com/github/gundy/semver4j/0.16.4/semve…
+32001db2443b339dd21f5b79ff29d1ade722d1ba080c214bde819f0f72d1604d | https://repo.maven.apache.org/maven2/com/github/gundy/semver4j/0.16.4/semve…
+cdf16ef8f5b8023d003ce3cc1b0d51bda737762e2dab2fedf43d1c4292353f7f | https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing…
+d1e7dbe189b9dbfbfc31709590b65c766d654324de1ac886427333c5ff9adb0e | https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing…
+7b0aa6ed7553597ce0610684a9f7eca8021eee218f2e2f427c04a7fbf5f920bd | https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing…
+d46777ad3ea8bca73491b2e02fc85b3664486abf5314cc4dc6740908bd855330 | https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing…
+97db1709f57b91b32edacb596ef4641872f227b7d99ad90e467f0d77f5ba134a | https://repo.maven.apache.org/maven2/com/google/auto/auto-common/0.8/auto-c…
+0ee24e09ab5d77f45545bf487868f45cf742127c9a77a2c0a92b006986b5aa9d | https://repo.maven.apache.org/maven2/com/google/auto/auto-common/0.8/auto-c…
+c98f1b0978cfd24712c27388e040c50ce0692252b3aa9448603d9efa05ebe8a8 | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/3/auto-par…
+31a44f00ba213f7a1245809d6ba7bffed40c8dd7d571f32016caf8732a926961 | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/5/auto-par…
+05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-par…
+a46426fccb5d32705ad9cbbc996f786bd048cc8cbdd21db046500169f15a4356 | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/7/auto-par…
+e422d49c312fd2031222e7306e8108c1b4118eb9c049f1b51eca280bed87e924 | https://repo.maven.apache.org/maven2/com/google/auto/service/auto-service/1…
+51752efb14151ec2d39c8581dadce8ef8b7c58b90f5eaca3f596998acb1ea87c | https://repo.maven.apache.org/maven2/com/google/auto/service/auto-service/1…
+b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+3677f725f5b1b6cd6a4cc8aa8cf8f5fd2b76d170205cbdc3e9bfd9b58f934b3b | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+6fc498858e0cd1387595af38957820cb341d1e687ccf753e1cbd982f46ef4fc3 | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-paren…
+b9d2d3aa6919d5f07e18c7cea942be9aef3b650a8f1e68f33c854a25c09c2049 | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-paren…
+feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/…
+1e7f53fa5b8b5c807e986ba335665da03f18d660802d8bf061823089d1bee468 | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/…
+02c12c3c2ae12dd475219ff691c82a4d9ea21f44bc594a181295bf6d43dcfbb0 | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/…
+766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+3736463859ec19267295e894940ae82a8f684413031122fe35ce7cff7e30a774 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.6…
+c8fb4839054d280b3033f800d1f5a97de2f028eb8ba2eb458ad287e536f3f25f | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2…
+2174415a647332d30fda04bd1cfc708a3ecc84eaf7517f596188d8244e103911 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2…
+3aa576b5671d0e26d83d7fdb7186810b5672f00bf8e72184260bcc7c2d7dc07a | https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.3.0-rc2/…
+5b9a11c11183d011de9a9a5490962d78a4d4bfe7579b0c5be4afb18a222e3f41 | https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.3.0-rc2/…
+550a6e46a6dfcdf1d764887b6090cea94f783327e50e5c73754f18facfc70b64 | https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.24/dagger-2…
+477bdf6579ecc9cc8f99a565203f6244914f289d87e7efbdf96243fa58f9df4c | https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.24/dagger-2…
+6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+357cd6cfb067c969226c442451502aee13800a24e950fdfde77bcdb4565a668d | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+8d175561619289a527573cfbdcf872eb5c1216cf9ab692a0ef3dba6d793f63b4 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+8d3b5b9fa211979e9c425e989825c07743d2eb4dc8c20ec61de0f5b3dc1a6333 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-and…
+317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/27.0.1-j…
+f31a5846bd9e14a4c374da1b9b146a5715ecdca925e071e1d2bf4da2daaded90 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/28.1-jre…
+e1c814fd04492a27c38e0317eabeaa1b3e950ec8010239e400fe90ad6c9107b4 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.0.1-jre/guav…
+6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.0.1-jre/guav…
+30beb8b8527bd07c6e747e77f1a92122c2f29d57ce347461a4a55eb26e382da4 | https://repo.maven.apache.org/maven2/com/google/guava/guava/28.1-jre/guava-…
+74af0e8dd935894ce9bcb8e2842dd0001581b84cb6a7751c3ef9314011399ba4 | https://repo.maven.apache.org/maven2/com/google/guava/guava/28.1-jre/guava-…
+e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069 | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/1.0/…
+53873caf26bc1ed8a567ea6c939ab2aaa3f47a5e32d5cade95ddf5080d23238a | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/1.0/…
+b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+5faca824ba115bee458730337dfdb2fcea46ba2fd774d4304edbf30fa6a3f055 | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimf…
+c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.j…
+efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.p…
+32ff2307dafc658d0b55b2ad841d625aea5606bb9b0316605165cd6980503243 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.10.…
+74ee43b09e711b13d568811e12f33bd16e6087b15f1aeded22b0dfe89ae76856 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.11.…
+619b0b0dc344cb141e493cbedc5687c8fb7c985e609a1b035e621bfab2f89021 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+146660182d07798ced06fa8e8ae3b9faa90aa48cf3c6adfc67db9371188ba502 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+161d7d61a8cb3970891c299578702fd079646e032329d6c2cabf998d191437c9 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.10…
+b404c1b093ec9dea888e02c8dfe8662759586b94efa4f97061cdfc1bbfa15af0 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.10…
+8cacea2f7a042dabae295c509dcdbfe32a49aa3708eec6ddb8efd8593aa0b4a3 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/…
+1aa38c0b0891b910e84642c5116bb1b54d86a5959f37c9c38a34ede600bdd55d | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/…
+6dd84a508125fffdefbd583fae12bf166aa902511b570ca54fa9efa45f6dfe80 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.…
+c3e2aee04dd8698f8b21ce635c318f8964d52fc9ca490a01a64cdc7a6c44d362 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.…
+bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d | https://repo.maven.apache.org/maven2/com/google/zxing/core/3.3.0/core-3.3.0…
+ca1c3e4c4848773d4e5afa301c12bc18aa4b26d2475ff6961ce026f2d940aabf | https://repo.maven.apache.org/maven2/com/google/zxing/core/3.3.0/core-3.3.0…
+7c6951b21684f68ac4f6983d26e0f0b01ab5e7066f8b74b4acaff6f638ed1ff6 | https://repo.maven.apache.org/maven2/com/google/zxing/zxing-parent/3.3.0/zx…
+2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+e37a4467bac5cdeb02c5c4b8e5063d2f4e67b69e3c7df6d6b610f13185572bab | https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.jar
+a0700d84efe7cc3103557bd0522f9443681b96ba9559c4bb7f9dc9bf35243485 | https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
+a6e546ac89a9701ed5158082e49ad9b41accade443f02ac41f46986472f4a5cc | https://repo.maven.apache.org/maven2/com/jakewharton/disklrucache/2.0.2/dis…
+ef8ee116b3dbdc0115b4b27be60a02d1d3c7a6f2803b2d79cd09ca5dd72ebb9a | https://repo.maven.apache.org/maven2/com/jakewharton/disklrucache/2.0.2/dis…
+1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1 | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.10.0/javapoet-…
+83f0fd4baebec3bf29ee3ad2c024b3065ddef825a5aa29f7dcf5c189f9fa2962 | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.12.1/javapoet-…
+a71ac3d8f27cb9ad32c87b5d8959f22d671aeb460c7a355d09f577e4c57e4c5f | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.12.1/javapoet-…
+f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.1.1/javawrit…
+d47fc646324c22c66f2b0e0e743c850dde9a51990c53925e7501d960f2e8df84 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.1.1/javawrit…
+fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+4d22b70c4b77fc0aa499158e7bb085af9882ffbdc69331325e7869aebe4fb69d | https://repo.maven.apache.org/maven2/com/squareup/kotlinpoet/1.7.2/kotlinpo…
+899faddd38198fddfe992bfcf3ab8c0746f34479d7e141e6021c66744e9919be | https://repo.maven.apache.org/maven2/com/squareup/kotlinpoet/1.7.2/kotlinpo…
+d9239c3ce555c87165b8ed060f0dfcd9e58d25a947d7b1bd669dcf37f4ab7deb | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-and…
+a39975d3ba701157babb356b23ab160493c98939a2cf7656c71308669bc80e1a | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-and…
+c05f763a83bfcf56a763b0e99ba18ac5b3eef2dbcd7d87202fb0fdce75ab91c8 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-and…
+6975ee444e993c1b413fe64fbb2b9e7c20f131c7135c78c94d11c0cf927255f1 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-and…
+14ba5af729f71885e430461026b850b091cd85a0a61b65fa99c4e99625031ddc | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+a89dc25a9710f6b95378046eecc822e81cdbaee2a3e19e0140a138eccf3bfe27 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+d3f10fac2c66505f1fbf59ec5bb29d914e4dffb184672422fabc57bc6fc1f6b3 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+1fdcfd4ce950fb6f3f57f72362f365bc99124fecb5889662c3e81a1c4de44bb8 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+182a559942ff385a603369a975f13f9179c079cc10ca82162b90b6647d744a1d | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+66ef4959e7bff7f963f93e730ce4ade81eb4ff767043e6220797d588e3ef9bf6 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+526533e2ac8f9f4b070e515b5292cb1780e35f6b40a95d67ba83f26040283770 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+a7a68702f1974981f57151d2759036ca19461db2ee9378d2bc551aba92c1f417 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/leakcanary-obj…
+4ff14ae10ac34c568242b26cfcd9d6562309fea29f30fe0ec17104ee0656aa57 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/plumber-androi…
+7231549464e6364f6f5072fdcf579e79094b8e0c01fa091ae89cfb0d7172c7bd | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/plumber-androi…
+5a073a5db384c48bd6795a3b752477e9911f68edde255acbeca5b46200c9288e | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-android/…
+adc8f2a0690cd2f6b7cb95f5721c83197fade090c5f963d395e5d24b788e517a | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-android/…
+c1f64a7e86c7f95d8de59d2a1d70dbde5966fb1522910f43bba45a7a06d0a0ae | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-graph/2.…
+ff947605e573286ad4906f1f1fcff385c4dd398e2eb12d124d0db18dc919c181 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-graph/2.…
+78163bb080d2b0a15ccb0d053559ad0b7cb852391b1c79e0b85ba94c43a59bc7 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-hprof/2.…
+d51522e8a7b40383b6cdc876580aa8083a13d739e5c235940e9fab82cbda5a1f | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-hprof/2.…
+d43ca38b1ddc1647121863e8051592ff31054f1e93931fa96e4b0bbd6446184b | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-log/2.4/…
+240169ea8133ac80974489ba3047bc223445e6b8e088a15d29393a54a0db3171 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark-log/2.4/…
+a257a1c2def6a13247b53d2333a36d4aebb354191950bb6976b392b18c2853ff | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark/2.4/shar…
+f94c218942455b62621a38dba9f4d4bc80bec6883cf2ef230e405c5b180f28d9 | https://repo.maven.apache.org/maven2/com/squareup/leakcanary/shark/2.4/shar…
+ba48439634f5e285de35f6135880c485934b5d45bb26f42cd9d9636f3c4ff56d | https://repo.maven.apache.org/maven2/com/squareup/okhttp3/mockwebserver/4.9…
+26c9d5c003dfe87dfd1453f285955a91fc51ca17e0b31243860bbe44263e5255 | https://repo.maven.apache.org/maven2/com/squareup/okhttp3/mockwebserver/4.9…
+dbc2bb04ecb002b9f4046263ccad996f4a3d3c59a0cc98837e300a6700571f7c | https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/4.9.0/okht…
+4f8992dde784509e80917cabbc8406a7137e5f2ba2c1ae5b7250fc182a45bd88 | https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/4.9.0/okht…
+e58c97406a6bb1138893750299ac63c6aa04b38b6b49eae1bfcad1a63ef9ba1b | https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.…
+fd621988f7f6957025735dc6dd090b00a20f3a3bb8d77ca79036077f629b140b | https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.…
+4496b06e73982fcdd8a5393f46e5df2ce2fa4465df5895454cac68a32f09bbc8 | https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.8.0/okio-2.8.…
+26214068fd4c7f437ac8fe8576802a9a9dc151c457582807ad9af2af2e8c9481 | https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.8.0/okio-2.8.…
+1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0…
+993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+6443e10ba2e259fb821d9b6becf10db5316285fc30c53cec9d7b19a3877e7fdf | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/3.0.7/is…
+c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/2.3.1/ja…
+f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/2.3.1…
+b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-runtime-pare…
+7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/2…
+785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+bbc796ab84a6778a751c2eff1136078abd2b4d35b5047062804f3582ef3c42c8 | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+cfb8cdad4c0dd05ed8cacbe146bf1718764403947b9de8348e1bfd42f62ea73e | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/fastinfoset-pr…
+4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+37001f3a481c72e46b9f94454f7c3a684089f1933638e512c8c6f036800ad619 | https://repo.maven.apache.org/maven2/io/gitlab/arturbosch/detekt/detekt-gra…
+d35101cfafa78658705ce74a06b8db75b2e624cc8634807672ca8bacb245354f | https://repo.maven.apache.org/maven2/io/gitlab/arturbosch/detekt/detekt-gra…
+54e20f25454e627db4623ebbd9972983f917afb803e971e02103717a7caa78b8 | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-api/1.10.0/mockk-…
+f77d7558661ffaca21d715ec59bd50ee47b4120fb1c1304547ffd64996902d35 | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-api/1.10.0/mockk-…
+d2b9f0388378687808eb387d10dbd90ce70134f5e5fe71dd88384e7e14f672a8 | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-common/1.10.0/moc…
+b5547a1a09948b33b9b41aa041084b0a34c92ec41bb91ca8d0ce8ad31486a8bc | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-common/1.10.0/moc…
+037f043baed4f206a9e585723244174087f761d1fb2979f16f9956a580e49271 | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-jvm/1.10.0/mockk-…
+ed3d9585915f9fcc24d5e754e577b0a723b986376dce62dac539c7f75fbcbcaa | https://repo.maven.apache.org/maven2/io/mockk/mockk-agent-jvm/1.10.0/mockk-…
+7d04767dc397595b1de24b3331ef0256fe91e37941d7a8cd7a73745511bfaae1 | https://repo.maven.apache.org/maven2/io/mockk/mockk-common/1.10.0/mockk-com…
+fcd746dc322389a5d355e13283a855bb739e738d8c4b61dc48d95262ad3d31f3 | https://repo.maven.apache.org/maven2/io/mockk/mockk-common/1.10.0/mockk-com…
+c25ae05f9ec1ab007663c758c771eccc8e181773d22163e5ec814b042d8d81d0 | https://repo.maven.apache.org/maven2/io/mockk/mockk-dsl-jvm/1.10.0/mockk-ds…
+a246a76e38c2f3a81745cffd9bc7354aa16d19b4b9857309d5796e38887ca6ac | https://repo.maven.apache.org/maven2/io/mockk/mockk-dsl-jvm/1.10.0/mockk-ds…
+553bed792babf8263086a873aa2903302e01c718c47641793eb9853873c9b1d1 | https://repo.maven.apache.org/maven2/io/mockk/mockk-dsl/1.10.0/mockk-dsl-1.…
+8f2efb576c736fedfd789680d733ca5bdc5aeaeff9510efcc4baaac3cc404290 | https://repo.maven.apache.org/maven2/io/mockk/mockk-dsl/1.10.0/mockk-dsl-1.…
+6216f3b74600f054392a49563498b03cb11b47faf36d06f5a4801ef02cb7f0e5 | https://repo.maven.apache.org/maven2/io/mockk/mockk/1.10.0/mockk-1.10.0.jar
+7f34e3d5e788f85616c796223ce0a1d591889ecb926f497da2d1ada02459b346 | https://repo.maven.apache.org/maven2/io/mockk/mockk/1.10.0/mockk-1.10.0.pom
+a98c4be3c0e886163e5940c04217be1bd571bbf42e5dbe4e098830b186743fd5 | https://repo.maven.apache.org/maven2/io/sentry/sentry-all/1.7.10/sentry-all…
+f014af749024c57989ca2aa51b0a986f9d86d2669d074c1dee068a8f8da19562 | https://repo.maven.apache.org/maven2/io/sentry/sentry-android/1.7.10/sentry…
+2c8b59d68ba5e67fe784e7295f1594cb1e6d2233d3d741500d5fedfb515762ab | https://repo.maven.apache.org/maven2/io/sentry/sentry-android/1.7.10/sentry…
+3a0ae5d7db7b65ccb7e0be7b4ac5bb4bce8105f2c5aefc01bb78c2a1dd17abc8 | https://repo.maven.apache.org/maven2/io/sentry/sentry/1.7.10/sentry-1.7.10.…
+17c98ced8aadd526b0a5219d46f9e8b9463f2600b9907e7418d1abe8676c0e65 | https://repo.maven.apache.org/maven2/io/sentry/sentry/1.7.10/sentry-1.7.10.…
+74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+da2926f3c8be898643cc10acdec6de0b0351a57fb2735770fa0177b06ade71b9 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b | https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/…
+46a4a251ca406e78e4853d7a2bae83282844a4992851439ee9a1f23716f06b97 | https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/…
+91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.3.1/j…
+88b955a0df57880a26a74708bc34f74dcaf8ebf4e78843a28b50eae945732b06 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+12b20cf922773445c3445c2883cbf671fa982111e9bf9f875020f9313b3814b1 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a | https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar
+90f163f78e3ffb6f1c7ad97de9e7eba4eea25807141b85d6d12be67ca25449c4 | https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom
+4b8532f63bdc0e0661507f947eb324a954d1dbac631ad19c8aa9a00feed1d863 | https://repo.maven.apache.org/maven2/junit/junit/4.13/junit-4.13.jar
+9a0dc4c3fa2b086e708226737ef4bb37847c3cb1ce4e203517c09f6305b2267e | https://repo.maven.apache.org/maven2/junit/junit/4.13/junit-4.13.pom
+fdff6cfa9ed9cc911c842a5d2395f209ec621ef1239d46810e9e495809d3ae09 | https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9…
+f5655d331af6afcd4dbaedaa739b889380c771a7e83f7aea5c8544a05074cf0b | https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9…
+95b8b357d19f63797dd7d67622fd3f18374d64acbc6584faba1c7759a31e8438 | https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesM…
+c219d697fa9c8f243d8f6e347499b6d4e8af1d0cac4bbc7b3907d338a2024c13 | https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesM…
+fbd052d2d4cd16f707547c468621c6b7fb842c7ec8866d012ecbc6178de1f394 | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/…
+19907495fbc1c2316c8ebad76f07b96d101feb1a7e3c09bfe1526fd3fc6eec9d | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.9/…
+6f59f847f37a7a052243e97a3b24d6e834833fca3a48d6980f96f7779fe5ff98 | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.7/b…
+93d9d380779cd1768c52b4bcee82cbfaedef9a4a30de87ae06b441e1634fd38c | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.9…
+259079927014348a555c0969dbae9339c3cc33895a05ffec8e0a25dd50c82278 | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.9.7/…
+07b9ca6e2f970cb03f4b25651df1f2fce271d491b44e0409827887786f692d4d | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-b…
+40881d4948a871159346270f36945bc29025577c6cb57f6a5dd0c7c222069dac | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.9/byte-b…
+2768054be7d61c4ec6f5e660e03ee70608000fe0f46d6119eee66675fff150e9 | https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.9.7/byte-bu…
+24d81621f82ac29fcdd9a74116031f5907a2343158e616f4573bbfa2434ae0d5 | https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.5.0/jn…
+10569e3622e974d3e66255ba85923c125d84fa257ef2543d8ac1c658d9ebcd10 | https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.5.0/jn…
+2b9f3497218b32c399d1ecbea0b00d4f4553edcf669919ed1e1a87daa77acf87 | https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.a…
+5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf | https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.j…
+5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608 | https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.p…
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1…
+30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/3/jvnet-parent-3…
+1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/5/jvnet-parent-5…
+26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
+31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
+75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-parent/6.0.3/…
+5358b478d82555ab57afd7fc7231d603b40f977be7ca39f40c5ec54e767eb674 | https://repo.maven.apache.org/maven2/org/antlr/antlr4-master/4.5.2-1/antlr4…
+401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4-master/4.5.3/antlr4-m…
+e831413004bceed7d915c3a175927b1daabc4974b7b8a6f87bbce886d3550398 | https://repo.maven.apache.org/maven2/org/antlr/antlr4-runtime/4.5.2-1/antlr…
+93bac9b6bc714d559904ed43242782a8cbe543cebf0104bb3ecc1786a9cb661e | https://repo.maven.apache.org/maven2/org/antlr/antlr4-runtime/4.5.2-1/antlr…
+a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
+8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
+da9fd92eacdf63daf0be52eb71accc10ff7943a85d7aac9ea96cf7e03ee3d3cc | https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.8.0/ant-…
+08426143d37d770f3e4dae45b0870c3ab1ba512cb64418f34496025b72d16760 | https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.8.0/ant-…
+ecbd655fd71d298eaf0787045b84324ce68936ad0de98c7a9c55538e539f2747 | https://repo.maven.apache.org/maven2/org/apache/ant/ant-parent/1.8.0/ant-pa…
+0251dbb938740ace07a53675113eee753ba389db65aebc814b175af50321620e | https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.8.0/ant-1.8.0.jar
+e6d920d5a1a34aaaebab1e6a82c36bbfd61f1eeaabc4534ee05d4faad56f1b7a | https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.8.0/ant-1.8.0.pom
+ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom
+36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom
+9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
+7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
+1933a6037439b389bda2feaccfc0113880fd8d88f7d240d2052b91108dd5ae89 | https://repo.maven.apache.org/maven2/org/apache/apache/5/apache-5.pom
+4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom
+2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/25/c…
+3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/c…
+7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/c…
+87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/c…
+c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+f16b5ea711dfe0323454b880180aa832420ec039936e4aa75fb978748634808a | https://repo.maven.apache.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3…
+f52619bf2f5c5117f0af1c23adff3a9c8f468647be47fefc59b81dcec7e480e6 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3…
+d1e247c4ed3952385fd704ac9db2a222247cfe7d20508b4f3c76b90f857952ed | https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manage…
+ecf58351f8fe0c398b8b452216705bece5291b9b327d30202c16b28ac680450c | https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manage…
+d53062ffe8677a4f5e1ad3a1d1fa37ed600fab39166d39be7ed204635c5f839b | https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/…
+f658a628efd6e0efe416b977638ba144af660fe6413f3637a4d03feb6a1ce806 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/…
+b3005544708f8583e455c22b09a4940596a057108bccdadb9db4d8e048091fed | https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnosti…
+228367b7569fb1462a3eb1423bc2778e2fc7fbaee3d3767890c02b8924fa1889 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnosti…
+153b32f474fd676ec36ad807c508885005139140fc92168bb76bf6be31f8efb8 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/mav…
+62dd8e35a2c4432bb22f8250bbfe08639635599b4064d5d747bd24cf3c02fac5 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/mav…
+7450c3330cf06c254db9f0dc5ef49eac15502311cf19e0208ba473076ee043d6 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven…
+0c5a9770ae0271dc97bcc6cb0f2e809a40ba587cdce2556f9db59912c8e158fc | https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/19/maven…
+4ad0673155d7e0e5cf6d13689802d8d507f38e5ea00a6d2fb92aef206108213d | https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry…
+3db15325cd620c0e54c3d88b6b7ec1bac43db376e18c9bf56bd0c05402ee6be8 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry…
+ecaffef655fea6b138f0855a12f7dbb59fc0d6bffb5c1bfd31803cccb49ea08c | https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/m…
+d125b3ade9f694ae60ef835f5ae000b6ba35fba8c34bafd8b40a1961375e63fa | https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/m…
+24ddb65b7a6c3befb6267ce5f739f237c84eba99389265c30df67c3dd8396a40 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/m…
+34af0baedaef19375b7c1a7da967e9089d5e0754647fdbe9a302590392874b77 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/m…
+5fe283f47b0e7f7d95a4252af3fa7a0db4d8f080cd9df308608c0472b8f168a1 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-meta…
+9dad0f56523955b60a9903f4e8342891355d7a59c77f36a3b53cf6ff2e4df625 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-meta…
+9a9f556713a404e770c9dbdaed7eb086078014c989291960c76fdde6db4192f7 | https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/…
+0d25a88a1b1e44801f8912206a40ff249cb5702ee87cf3d243d5213f7bcf534f | https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/…
+d135cff96dcbbc8a5fab30180e557cae620373cf26941d4c738a88896a2d98ed | https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2…
+7298feeb36ff14dd933c38e62585fb9973fea32fb3c4bc5379428cb1aac5dd3c | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/1.0-…
+f7524cfffc9773ea75a9f7379139f00a57355e411009ea9529b7adf7ef93fde8 | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/1.0-…
+be214032de23c6b520b79c1ccdb160948e0c67ed7c11984b7ec4ca5537867b4e | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-ligh…
+f021eb07aebec822496f489a2d6ec5d3fa81a2717bfc8407cb0ebcaadcee2d7e | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-ligh…
+f095c882716d49269a806685dcb256fa6a36389b2713ac56bb758bf8693565a2 | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shar…
+f6775dc981540ffa10f33bd831f14608517ce38b90628e045707dd5bb5d1348e | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shar…
+e116f32edcb77067289a3148143f2c0c97b27cf9a1342f8108ee37dec4868861 | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-…
+85c3c8840bb21554faf159998146f7ca9ef1b951defb29ec4e8252ec463728fd | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-…
+340422be8f3e3c847a0a0bf944296774f6db81f2fa8b34912bc931a112a26919 | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-providers…
+025caec7c56a0cb4d86c45bc18ac3e23dba291e22ebceb76302a9a9b9b7183cc | https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-…
+7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+0dc4d181e4d347893c2ddbd2e6cd5d7287fc651c03648fa64b2341c7366b1773 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.52/b…
+7e4a34c7b63d879c5cec454e2e47eb1e61e271a58672e7e548659f4f23742500 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.52/b…
+963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+9103499008bcecd4e948da29b17864abb64304e15706444ae209d17ebe0575df | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.…
+f23376b58ed795f2ff47426ac76b996d49e3918442e5d8713e3925f889a77799 | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.…
+51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+47f05852b48ee9baefef80fa3d8cea60efa4753c0013121dd7fe5eef2e5c729d | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+adf522f4839c35f5329ea97c407aebebfa8807b644852dc4d5cd7c97b7a6d2e0 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-paren…
+4e9df546a47cf6304a1317c46870100a8726fbea11b0dd18322f957e4070973c | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-paren…
+fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-…
+f819cad1b15b6a7791c8b601e96bde33765e4681395807db4537d2f0dedd493b | https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/50/mojo-…
+381d72c526be217b770f9f8c3f749a86d3b1548ac5c1fcb48d267530ec60d43f | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/…
+7c758612888782ccfe376823aee7cdcc7e0cdafb097f7ef50295a0b0c3a16edf | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-d…
+ef71d45a49edfe76be0f520312a76bc2aae73ec0743a5ffffe10d30122c6e2b2 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-d…
+7c75075badcb014443ee94c8c4cad2f4a9905be3ce9430fe7b220afc7fa3a80f | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/…
+fd9507feb858fa620d1b4aa4b7039fdea1a77e09d3fd28cfbddfff468d9d8c28 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolati…
+b84d281f59b9da528139e0752a0e1cab0bd98d52c58442b00e45c9748e1d9eee | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolati…
+2ca121831e597b4d8f2cb22d17c5c041fc23a7777ceb6bfbdd4dfb34bbe7d997 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.1…
+12a3c9a32b82fdc95223cab1f9d344e14ef3e396da14c4d0013451646f3280e7 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.1…
+2242fd02d12b1ca73267fb3d89863025517200e7a4ee426cba4667d0172c74c3 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexu…
+e246e2a062b5d989fdefc521c9c56431ba5554ff8d2344edee9218a34a546a33 | https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexu…
+6cc1266cf306557b4f2d09cbd8cd6e75b5ef0c5773ca4ef763d4f730df947b64 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.3.1/jaxb…
+45fecfa5c8217ce1f3652ab95179790ec8cc0dec0384bca51cbeb94a293d9f2f | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+f8101b86157fbfc01949ffdc7c59ea71ca23b7ece25f6a79061fe01cb750ff00 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+34975dde1c6920f1a39791142235689bc3cd357e24d05edd8ff93b885bd68d60 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+4714d46cacf702ab2cd478d6048c5d9cc57abdb55f4c07b6b7aa72799e02d36c | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9 | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcres…
+fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93 | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcres…
+70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2 | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-integration/1.3/…
+42f0be9bf98c12dacdcb99dd141d83d4dc5bb7c37a6f26684cd3ff2287667fba | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-integration/1.3/…
+711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-library/1.3/hamc…
+1ceb4bfb0f098ae29b935044b2363e11323313fe3ed2055df8b79737d5056277 | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-library/1.3/hamc…
+6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b | https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcr…
+852e1bf147fceab6caf7a82887dba2864d88bca6020524b67dddda073398d2f8 | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.agent/0.8.5/org.…
+c3b2f50b692f2b081d85613527917bc6812f922e1da469a11682653b16f283fd | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.agent/0.8.5/org.…
+cd2289b9f955c8064054145f3871e18101840ae73ee6b9f835aea51573506cce | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.ant/0.8.5/org.ja…
+4b74fc5373ad70d387f3738ce0e9d4b170944039739e2b12a87c24202c002282 | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.ant/0.8.5/org.ja…
+ad6e40d227647ddbeb4f47a04d1002299986d127b7244f8b34d7b742ba1ac1ca | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.5/org.…
+945818d150f89c03359ee9089568b2b83b4df4752fced02e6323f271481f0ddd | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.5/org.j…
+2df79bbe660731df5b4f7b8d343afff59aa8b7d9d552d9c2f6e94de71eb374ef | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.5/org.j…
+c83e687be88e74477519eb67e20cc77a98deefaed920cd2a5531863c23d95906 | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.report/0.8.5/org…
+574cc0a2a4e77a2939b2fc24cab92bca414d05d8a6ab9e48ffb8fbd7fe0ae725 | https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.report/0.8.5/org…
+1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
+47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
+0a333de5068ae7453bb35586217058928c8f9409543c4e2a622094d3b48433bb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-allopen/1.…
+45d7e4ab59d7eee1e0740b79c17a12001d9a0a4e911bfd2b13976302bf4ed209 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-allopen/1.…
+f210c702efaea345adf6a14211b8d39231a2679a1f960da2e0692949b9df3ec6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+c9843ec810658da356c5ac2ae9bb2efa912e88b54262a0dc32d52ab40000c2e9 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+41eb96531c250a13b9d6023dfcf9bf9d84db0419c4c94d5823104104598399cd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+dd556ad254f4ead2fb38fb88254dfedc8530c76041b20a93ff5744a82de50d9a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+745860fb134d8555a646c863b2e19cff3763f04d193f47d5414f49110bec6bc6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
+8e4c7d39c4a4412a45c752213003bfc138659a529e8f50ac622aae898bce1faa | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
+a061a543aa052e328b22e0a8682b78d336c781110eceadac66d8ad0d265b04f8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
+121d16ce077dc9140c8b4296488c516fd5af464f54beceebc6ed9348dbc25ecd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
+8b997ae2b74b65e0e003e9fb7ffdbbad8f8dcceaae7f1d19d7067200c5a7e315 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
+a88a373df8a2c2ed0c0c72f9575ad7db4433641bfcbb745e13b0e00255fd7261 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
+8738e290afd74dcf64fd29ce4ebe6e82e833ea7802f3083480875aa5cab62f02 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
+3a39769fbf062cb5edc34120c4007ce739f9132f2a1837b377cb3f98ead36586 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
+9ceee49e2fda694fc429ad919b82774df2d414c9116ab3dc3650b92c8150deef | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
+6488337732f4a96c966ae036f3f75e375e48c3a1ae929ca1f90712d3137f52a7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
+81cdfde0c8eb536eecf0e38f4c1a89b4df0ea294369d092877de541cbe3740bb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
+6bf2a9dcc54eb1a74729160840f43e02d9f0cd0438477375b824a06499a08b5f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
+0ea3333a97e3e4d4ba3aa3d7fe09e02d4fef6c2587bb54470ba602a5b0486d47 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e48488a1e029d6b585dd797cfd27ec9c889534f01b1702aa05d3e3ea46ed62f3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e4f96cd6c1ff57be26890ca82a243670f2e82f0afb401774f8fe59fcb44200d0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+4e7bc009cb848b4a4bfdce7fe2f35dea842ec68176b730c802a4379798360375 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e0050c158cfee4dbc2532e82eab7aebea1d7cd7e34752c9aa27b809c252def2b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+f27cd652e9e1fd4abbf24c074f1ca7a1d8a09518f48e067eb0e941b8cc9ccae2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e6046e6d0b36cc116fedf4e63cd0f595360a7f05d6ba67672f5e36665b570f55 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commo…
+ccaf4317b1776af25c9a32f69688063f651ee6206c3a7e2edc157e9633aa5bc0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commo…
+b2b9bc9029d446e2c8cecf709f92196106d11ff7974092880fefdd67ba1b9a49 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+1efcac305ddab304c2206bb1e511095c11d7e23c0df5374373b1526610188ff3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+76c0cac89d5e25bfa789cd988810da3ec6fa832bd839d772618766fdedacbf57 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
+d833b01e8539e580dadb806397bdd20062c3046eea1436d9ae153ae60f00575c | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
+3c6308bd5926e57890d299afc748f22fd77c555b67ac5c692d205ff3c2092112 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+1c716dda4f3e72d42bfe820318b1b71fec6a8b577fee46556a72fe30f5d76d43 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+8d72840984b1b67b4fd766c0f65007a5afff05fc9d236e1458c8e0daeb47266d | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+9905fa198f34978ca200651ea954020075e888d7b8ae33ead6fafb829b37f1cb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+c2b66d368147e75efb42f52326ef1729c26a83637fdf858a6283cdff6f6936f4 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+6b8382834df62e29bf612b2c7b799c64782bf4e65b62346b2e9e6343f3540804 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+8ac3e9907fdaba99a59429fdcd7571e8d31691409671baa2a50dd46e219eeb4c | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+88fb3f422066fb4bdf9b4e88a8369e22816ce8c93dd7409775160414700ee1c2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+32010683330a6f31b8d309f10433acaa109b61f2df3d252dae7dade9730074c2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+2594a44d33068bab2949750cae0c0ea052fc56faf29f06f35bd57cfa68c6736b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+751cf4a51089dc4c60caec5f30125983cd1d3998a4138ae8e66db0d496f73646 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+7e2a57538390cd609e3a9c6f7e085af5a948c663fda4eddc78907125a960ba20 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+c1ca432b7b4e0533deef6fe372387464f47f49260f706728854a508e413b4e66 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+4a633aa686acf4557f64156ae07889708ac59fb6210f970ace10b2a1425a62eb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+ff03e9989faa2d40fa4a9098aaad71e247f27ea4d24b0754da642eb0924bd8c5 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+a7810cf68dd2c8fa79e61a463478880d1df8a5ab9597d151595a9c743b48b90f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
+cc44bf2403bc5d9cbc7515979f5ce15bcff6c01f655f7e4d1db222d26cb575cf | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
+4a6939ca9a54604298b67054668bb7a4fc62178a77b87130de667bb1bdfea2d8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
+16976b913d32635398a3f52233c7cae03249a2015e1d12179fd3348a72b0faae | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
+d8195162f4479312832be7289cc83bd44b3a79c8ff8702a1c6ca7e5bad782747 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
+287998fb67f2b36b49556c7ba9c65203f904f06a2d2553ddc529d17d2bf5b3ff | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
+58b3ce8be4521230361fe6679b5930e75730164be1c7b900ddca4218072fee85 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+5cfd02a5e7dd9be15835522035d32eca33be0e63085d27f7c918fa495e34f81f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+3286bd65e41eae735600c0e9a441cb4a0988d0d76647923b9c978c90b0cb7311 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+9c615416dadd93f0e14895165af8eeee01a1aaaafe02c3eb1f2d2a770b595069 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+c972379b6eeaf36a39e51cdee6fb145b411263baa0c66167fd0073768ceaadf3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+f8c8b7485d4a575e38e5e94945539d1d4eccd3228a199e1a9aa094e8c26174ee | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+24ffa65bdfb7d893349cb2e78fb3714a490dd0a9c07375744bb136e9804807fd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+99319ebdd562d9519dfd15f78fe79bc09c3a28875083eea4577d9584359a2f61 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+29038be2ba5cf1acac17fc0d9746e553cf90315b8042366169ff6d800dadf239 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+52614d618c5cb6a8d5d437e95102d1c45565237e09083cd64031ab7b23303a32 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+2e3091a94b8b822c9b68c4dc92ad6a6b0e39e2245b0fc75862de20f5a7a71e9a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+497a7639820ba0758d4e0c1d6f82fdc8a9b6f6c2a28d91fe03c6b0776db4be40 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+518080049ba83181914419d11a25d9bc9833a2d729b6a6e7469fa52851356da8 | https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.j…
+c7e660c50bf4ecda0fc81ab62b489db9171e207fa784ddcb48c6c85bb40b49f5 | https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.p…
+95b05d9590af4154c6513b9c5dc1fb2e55b539972ba0a9ef28e9a0c01d83ad77 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+0a84c20cf71f6a3d21fe226b0d588332fc7ae3e90cb583c60a483317eb9f3644 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+f64f2cdd95e608f0c5079dd0df3f184d77eb6f2a6c161fbd2602c46e7aba40c8 | https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.24.5/mockit…
+01ed8f91d51624f38142fed8f1004600cdc06e9b47a5058ee207f2c4ca30cd0f | https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.24.5/mockit…
+3825feca2a3c176400b063dec7c6b0643e2b5256bbbfd4e0a7c11e0dd0983baa | https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/2.6/obj…
+1493584824e110e22d6047584978ca2fc9907987102369bdb1e3773d54963ada | https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.1/obj…
+4c1307909dc62df1bd91f075503f8bdef5ae445e13353f1752af9448bea1d3f1 | https://repo.maven.apache.org/maven2/org/objenesis/objenesis/2.6/objenesis-…
+cdb3d038c188de6f46ffd5cd930be2d5e5dba59c53b26437995d534e3db2fb80 | https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.1/objenesis-…
+d46072a46dff7707e06545777486b18d73e052231e3139cd3d9c3f347bc4e6e4 | https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.1/objenesis-…
+e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+c6b54477e9d5bae1e7addff2e24cbf92aaff2ff08fd6bc0596c3933c3fadc2cb | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+be922aae60ff1ff1768e8e6544a38a7f92bd0a6d6b0b9791f94955d1bd453de2 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analy…
+71faa63489b3de4d6251581d2b26e87e0c167c5a08198ca62853fd83644d841f | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analy…
+fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+f4c697886cdb4a5b2472054a0b5e34371e9b48e620be40c3ed48e1f4b6d51eb4 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+0e86b8b179c5fb223d1a880a0ff4960b6978223984b94e62e71135f2d8ea3558 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-common…
+190ed352a8c20594b196b20194d06773b91c86b8d36868f937e5dbd0e9c0d78d | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-common…
+cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+d39e7dd12f4ff535a0839d1949c39c7644355a4470220c94b76a5c168c57a068 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+c063f5a67fa03cdc9bd79fd1c2ea6816cc4a19473ecdfbd9e9153b408c6f2656 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.…
+56765f0a8bd0978214f7ec87a9dafb5825b8191cff554a5adc14c65d1f5b0442 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.…
+75fbbca440ef463f41c2b0ab1a80abe67e910ac486da60a7863cbcb5bae7e145 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+e07bce4bb55d5a06f4c10d912fc9dee8a9b9c04ec549bbb8db4f20db34706f75 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.jar
+83f65b1083d5ce4f8ba7f9545cfe9ff17824589c9a7cc82c3a4695801e4f5f68 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.pom
+7e6cc9e92eb94d04e39356c6d8144ca058cda961c344a7f62166a405f3206672 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.2/asm-7.2.jar
+e9e529afbd4bc699f6a3380855d27d13017c360fdb68547e06d1c3842d84e262 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.2/asm-7.2.pom
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
+6e58dad0b8565b95c6fb14b4bfbf570523d1c5290244cfb33822789fa53b1d25 | https://repo.maven.apache.org/maven2/org/python/jython-installer/2.7.1/jyth…
+2a42db37f9a565f1baa833b7cb7e9f901bd9fd750d10b9bd7ca76b2385b22387 | https://repo.maven.apache.org/maven2/org/python/jython-installer/2.7.1/jyth…
+ce679af70c22620b5752aa6c1555d0653198d6370e9a93fe71b8eaaebc5ffaf6 | https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.3.1/anno…
+c0a9d951f7112452291ce0075dd6d4daab6b623d3157c7d02fb503970637b869 | https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.3.1/anno…
+60c85ea7fd652bc4e57567cbd3c41c5d32f2c678e212b713cefa6c63570451ce | https://repo.maven.apache.org/maven2/org/robolectric/junit/4.3.1/junit-4.3.…
+f09205055e2ebd1cfe5fd4834e8136fd4f5d82288a796385a175c338752e453c | https://repo.maven.apache.org/maven2/org/robolectric/junit/4.3.1/junit-4.3.…
+229256a260a1d8e8d33613a3de7ccd639661a7061251c1974975ed427428b468 | https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.3.1/plugin…
+6c2c3fcdea6d8f309ede3651a37c5a3ea6708693120a580eb5acadbe2a051a4f | https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.3.1/plugin…
+0d6c577fdefe254659ffba5c0564d7e00c69f03e99a4ebb6c150419834cdb703 | https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependen…
+faabd7ab565af30c74ae082222d49ffefbb377861f3cf544c940cc19e2f7018e | https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependen…
+93033237006b51541f8e93d65940f9040367775937d0ce9ac3f4ef72771c51b8 | https://repo.maven.apache.org/maven2/org/robolectric/resources/4.3.1/resour…
+1c60572df06c367dded10cb20ce8c4ec84b8e044d1cfb54696a031150bb111eb | https://repo.maven.apache.org/maven2/org/robolectric/resources/4.3.1/resour…
+3ef4267112ba581ee2a7ad37859bf61571404f07df85b8ad1da054f90eb57a5a | https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.3.1/robo…
+9a379377599af5e4866749c97b10a18a26bbb58bb0960e266da21865384874d6 | https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.3.1/robo…
+405f73400d717e083b25af92fa7866a76765dd4e97cf7fd046023d4f05375a9f | https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.3.1/sandbox-…
+3b3f4b64c5c1b2b25e25777f39b591571acbf88c0b2dc3a1845469528939b346 | https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.3.1/sandbox-…
+a63d13e7f3816f28ac33eea71a15c7f3f0053ecd01b08cc1e1e119af35ca1197 | https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.3.1/shadow…
+16ab0051a6be13f4aa27dbc636dfc4c6aaa214c2163641d96cb5b381494c2e90 | https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.3.1/shadow…
+9c69db134cdd79be751856a148020fd9b32b086bb491846eedc0a1106fcadd5e | https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.3.…
+d445923ab7dfbb93d086b070b64f07495b0a1804b9ce1f51815d6034c31f781a | https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.3.…
+9d7bf2557947d44d6f3ed76ec5231e8b72e33eb61c65ac9e149ad307b0eb936c | https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.3.1/…
+a04c2bdefec0b5b492de86365e49537df6d39b04f3823619c94ba2b8937d8670 | https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.3.1/…
+6f9e406cd667019a5450e473c4e2d372bff9c9ab6ef55aafcbc9843109cb1519 | https://repo.maven.apache.org/maven2/org/robolectric/utils/4.3.1/utils-4.3.…
+9ebcfff0b872eaeeae47b2a9f9653c4e40041193a7c16e6a774f73d79aca8b57 | https://repo.maven.apache.org/maven2/org/robolectric/utils/4.3.1/utils-4.3.…
+fbd7b254e02d8aef60c418a5f0e14a783b38a16162caffb2d2a16ccd5d2c09b4 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+bd9b9cb1a3987b1427f7a18babe7f92078e32bbe2e1dca6dced00cc0e3a077a9 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+7cd9d7a0b5d93dfd461a148891b43509cf403a9c7f9fb49060d3554df1c81e1e | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+18f5c52120db036e88d6136f8839c832d074bdda95c756c6f429249d2db54ac6 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.25/slf4j-pa…
+c513995cf019d9213d4fda666589937b2bf1bea5c4cdd337e6170e80b18406ee | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/4/oss-pare…
+fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-pare…
+d3f7f09989d5b0ce5c4791818ef937ee7663f1e359c2ef2d312f938aad0763da | https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.24/snakeyaml-1.24…
+174d423722256823edbe2af8d7e3385c4645cf72382a22da0485b3b674394f37 | https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.24/snakeyaml-1.24…
+34e08ee62116071cbb69c0ed70d15a7a5b208d62798c59f2120bb8929324cb63 | https://repo.maven.apache.org/maven2/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.…
+8f10ffd8df0d3e9819c8cc8402709c6b248bc53a954ef6e45470d9ae3a5735fb | https://repo.maven.apache.org/maven2/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.…
+0341395a481bb887803957145a6a37879853dd625e9244c2ea2509d9bb7531b9 | https://repo.maven.apache.org/maven2/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar
+4e54622f5dc0f8b6c51e28650268f001e3b55d076c8e3a9d9731c050820c0a3d | https://repo.maven.apache.org/maven2/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.pom
1
0

[tor-browser-build/maint-10.0-android] Bug 40172: Remove gradle 5.1.1 from android-toolchain
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit e5340d7ef092fe3ad9a98b14bfea526512365606
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Mar 4 20:02:15 2021 +0100
Bug 40172: Remove gradle 5.1.1 from android-toolchain
---
projects/android-toolchain/build | 2 --
projects/android-toolchain/config | 4 ----
projects/geckoview/build | 2 ++
projects/geckoview/config | 8 ++++++++
projects/geckoview/mozconfig-android-aarch64 | 2 +-
projects/geckoview/mozconfig-android-all | 2 +-
projects/geckoview/mozconfig-android-armv7 | 2 +-
projects/geckoview/mozconfig-android-x86 | 2 +-
projects/geckoview/mozconfig-android-x86_64 | 2 +-
projects/gradle/config | 1 +
10 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index aafc584..c906776 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -16,8 +16,6 @@ unzip -qq [% c("input_files_by_name/android_ndk_compiler")%] -d $NDK_HOME
# GeckoView is still using an older Android NDK, bundle it, too.
unzip -qq [% c("input_files_by_name/android_ndk_compiler_old")%] -d $NDK_HOME
unzip -qq [% c("input_files_by_name/gradle564") %] -d $GRADLE_HOME
-# GeckoView is still using an older Gradle, bundle it, too.
-unzip -qq [% c("input_files_by_name/gradle511") %] -d $GRADLE_HOME
# NDK Archive
for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index 24a41c2..5d6190b 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -33,7 +33,6 @@ var:
android_ndk_version_old: 20
android_ndk_revision: d
gradle564: 5.6.4
- gradle511: 5.1.1
input_files:
- project: container-image
- URL: '[% c("var/google_repo") %]/build-tools_r[% c("version") %]-linux.zip'
@@ -63,6 +62,3 @@ input_files:
- URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle564") %]-bin.zip
name: gradle564
sha256sum: 1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d
- - URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle511") %]-bin.zip
- name: gradle511
- sha256sum: 4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798
diff --git a/projects/geckoview/build b/projects/geckoview/build
index 1c6582c..ab80b81 100644
--- a/projects/geckoview/build
+++ b/projects/geckoview/build
@@ -5,6 +5,8 @@ distdir=/var/tmp/dist
mkdir -p /var/tmp/build
mkdir -p $distdir/[% project %]
+tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
+
# We need to have the get-moz-build-date script available in the container
# but we can't include it via input_files as it is a script shared between
# projects.
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 2735bc2..f424ff6 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -26,6 +26,7 @@ var:
use_container: 1
# this should be updated when the list of gradle dependencies is changed
gradle_dependencies_version: 6
+ gradle_version: 5.1.1
steps:
merge_aars:
@@ -40,6 +41,8 @@ steps:
mkdir -p /var/tmp/build
mkdir -p $distdir/[% project %]
+ tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
+
cat > get-moz-build-date << "EOF"
[% INCLUDE "get-moz-build-date" %]
EOF
@@ -99,6 +102,9 @@ steps:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
pkg_type: build
+ - project: gradle
+ name: gradle
+ pkg_type: build
- project: node
name: node
pkg_type: build
@@ -141,6 +147,8 @@ input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ - project: gradle
+ name: gradle
- filename: 'mozconfig-[% c("var/osname") %]'
name: mozconfig
- project: binutils
diff --git a/projects/geckoview/mozconfig-android-aarch64 b/projects/geckoview/mozconfig-android-aarch64
index 5839477..29be6d2 100644
--- a/projects/geckoview/mozconfig-android-aarch64
+++ b/projects/geckoview/mozconfig-android-aarch64
@@ -13,7 +13,7 @@ ac_add_options --enable-application=mobile/android
ac_add_options --target=aarch64-linux-android
ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
-ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle-5.1.1/bin/gradle
+ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
# We do not use Tor Launcher on Android:
ac_add_options --disable-tor-launcher
diff --git a/projects/geckoview/mozconfig-android-all b/projects/geckoview/mozconfig-android-all
index 691b1ab..1b41181 100644
--- a/projects/geckoview/mozconfig-android-all
+++ b/projects/geckoview/mozconfig-android-all
@@ -7,4 +7,4 @@ ac_add_options --disable-compile-environment
ac_add_options --enable-update-channel=beta
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
-ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle-5.1.1/bin/gradle
+ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
diff --git a/projects/geckoview/mozconfig-android-armv7 b/projects/geckoview/mozconfig-android-armv7
index 2530049..538c515 100644
--- a/projects/geckoview/mozconfig-android-armv7
+++ b/projects/geckoview/mozconfig-android-armv7
@@ -13,7 +13,7 @@ ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
-ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle-5.1.1/bin/gradle
+ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
# We do not use Tor Launcher on Android:
ac_add_options --disable-tor-launcher
diff --git a/projects/geckoview/mozconfig-android-x86 b/projects/geckoview/mozconfig-android-x86
index 160f95f..d3f8d05 100644
--- a/projects/geckoview/mozconfig-android-x86
+++ b/projects/geckoview/mozconfig-android-x86
@@ -13,7 +13,7 @@ ac_add_options --enable-application=mobile/android
ac_add_options --target=i686-linux-android
ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
-ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle-5.1.1/bin/gradle
+ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
# We do not use Tor Launcher on Android:
ac_add_options --disable-tor-launcher
diff --git a/projects/geckoview/mozconfig-android-x86_64 b/projects/geckoview/mozconfig-android-x86_64
index 5ca74e3..f2fda06 100644
--- a/projects/geckoview/mozconfig-android-x86_64
+++ b/projects/geckoview/mozconfig-android-x86_64
@@ -13,7 +13,7 @@ ac_add_options --enable-application=mobile/android
ac_add_options --target=x86_64-linux-android
ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
-ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle-5.1.1/bin/gradle
+ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
# We do not use Tor Launcher on Android:
ac_add_options --disable-tor-launcher
diff --git a/projects/gradle/config b/projects/gradle/config
index 3f0f412..6e2dea1 100644
--- a/projects/gradle/config
+++ b/projects/gradle/config
@@ -8,6 +8,7 @@ var:
deps:
- unzip
gradle_sha256sum:
+ 5.1.1: 4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798
6.5: 23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f
6.5.1: 50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a
6.6.1: 7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac
1
0

[tor-browser-build/maint-10.0-android] Bug 40162: Build Fenix instrumented tests apk
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit f695effd4dc3384f3e8d401929a807039ee77a63
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Dec 11 23:13:12 2020 +0100
Bug 40162: Build Fenix instrumented tests apk
---
projects/fenix/build | 9 +++++----
projects/tor-browser/build.android | 4 ++++
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/projects/fenix/build b/projects/fenix/build
index f1536f1..c91dce3 100644
--- a/projects/fenix/build
+++ b/projects/fenix/build
@@ -37,8 +37,10 @@ cd $builddir-[% c("version") %]
cp $rootdir/[% c('input_files_by_name/topl') %]/* app/
cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* app/
+# XXX We need the build variant in lower case. Do something smarter here.
+v=[% c("variant") %]
[% IF c("var/fetch_gradle_dependencies") %]
- $GRADLE_HOME/gradle-6.5.1/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] -x lint
+ $GRADLE_HOME/gradle-6.5.1/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
[% ELSE %]
# Add our localized strings
[% FOREACH lang = c('var/locales_mobile');
@@ -63,10 +65,9 @@ cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* app/
fi
version_name='[% c("var/torbrowser_version") %] ([% c("var/fenix_version") %]-[% c("variant") %])'
- $GRADLE_HOME/gradle-6.5.1/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assemble[% c('variant') %] -x lint
- # XXX We need the build variant in lower case. Do something smarter here.
- v=[% c("variant") %]
+ $GRADLE_HOME/gradle-6.5.1/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
cp app/build/outputs/apk/${v,}/*.apk $distdir/[% project %]
+ cp app/build/outputs/apk/androidTest/${v,}/app-${v,}-androidTest.apk $distdir/[% project %]
cd $distdir
[% c('tar', {
diff --git a/projects/tor-browser/build.android b/projects/tor-browser/build.android
index 71b9d36..e9354bd 100644
--- a/projects/tor-browser/build.android
+++ b/projects/tor-browser/build.android
@@ -4,6 +4,8 @@ assets_dir=assets
ext_dir=$assets_dir/extensions
qa_apk=[% dest_dir %]/[% c('filename') %]/tor-browser-[% c("version") %]-[% c("var/osname") %]-multi-qa.apk
apk=$rootdir/fenix/app-[% c("var/abi") %]-*.apk
+test_out_apk=[% dest_dir %]/[% c('filename') %]/tor-browser-[% c("version") %]-[% c("var/osname") %]-androidTest.apk
+test_in_apk=$rootdir/fenix/app-*-androidTest.apk
tar xavf $rootdir/[% c('input_files_by_name/fenix') %]
@@ -32,3 +34,5 @@ mv $rootdir/allowed_addons.json $assets_dir/allowed_addons.json
# Sign a QA build. This .apk is not a debug version and doesn't contain a debug
# flag in the manifest.
java -jar /usr/lib/android-sdk/build-tools/debian/apksigner.jar sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $qa_apk --in $apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
+
+java -jar /usr/lib/android-sdk/build-tools/debian/apksigner.jar sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $test_out_apk --in $test_in_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
1
0

[tor-browser-build/maint-10.0-android] Bug 40172: Remove gradle 6.5.1 from android-toolchain
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit d8619c57cb446b43c6384ceb5700f39af2d75816
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Mar 4 19:41:58 2021 +0100
Bug 40172: Remove gradle 6.5.1 from android-toolchain
---
projects/android-toolchain/build | 2 --
projects/android-toolchain/config | 4 ----
projects/fenix/build | 6 ++++--
projects/fenix/config | 3 +++
projects/gradle/config | 1 +
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index a0d5ee8..ff132be 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -20,8 +20,6 @@ unzip -qq [% c("input_files_by_name/gradle564") %] -d $GRADLE_HOME
unzip -qq [% c("input_files_by_name/gradle511") %] -d $GRADLE_HOME
# application-services is using a comparatively new Gradle, bundle it, too.
unzip -qq [% c("input_files_by_name/gradle63") %] -d $GRADLE_HOME
-# Fenix switched to a fairly recent Gradle, add it as well.
-unzip -qq [% c("input_files_by_name/gradle651") %] -d $GRADLE_HOME
# NDK Archive
for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index f3214ab..648b1d9 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -32,7 +32,6 @@ var:
android_ndk_version: 21
android_ndk_version_old: 20
android_ndk_revision: d
- gradle651: 6.5.1
gradle63: 6.3
gradle564: 5.6.4
gradle511: 5.1.1
@@ -62,9 +61,6 @@ input_files:
- URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version_old") %]-linux-x86_64.zip'
name: android_ndk_compiler_old
sha256sum: 57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0
- - URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle651") %]-bin.zip
- name: gradle651
- sha256sum: 50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a
- URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle63") %]-bin.zip
name: gradle63
sha256sum: 038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768
diff --git a/projects/fenix/build b/projects/fenix/build
index c91dce3..c2f6f32 100644
--- a/projects/fenix/build
+++ b/projects/fenix/build
@@ -6,6 +6,8 @@ builddir=/var/tmp/build/[% project %]
mkdir -p $distdir/[% project %]
mkdir -p /var/tmp/build
+tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
+
cat > get-moz-build-date << "EOF"
[% INCLUDE "get-moz-build-date" %]
EOF
@@ -40,7 +42,7 @@ cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* app/
# XXX We need the build variant in lower case. Do something smarter here.
v=[% c("variant") %]
[% IF c("var/fetch_gradle_dependencies") %]
- $GRADLE_HOME/gradle-6.5.1/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
+ $GRADLE_HOME/gradle/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
[% ELSE %]
# Add our localized strings
[% FOREACH lang = c('var/locales_mobile');
@@ -65,7 +67,7 @@ v=[% c("variant") %]
fi
version_name='[% c("var/torbrowser_version") %] ([% c("var/fenix_version") %]-[% c("variant") %])'
- $GRADLE_HOME/gradle-6.5.1/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
+ $GRADLE_HOME/gradle/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,}
cp app/build/outputs/apk/${v,}/*.apk $distdir/[% project %]
cp app/build/outputs/apk/androidTest/${v,}/app-${v,}-androidTest.apk $distdir/[% project %]
diff --git a/projects/fenix/config b/projects/fenix/config
index a8a8e39..19ba93c 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -18,6 +18,7 @@ var:
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
+ gradle_version: 6.5.1
targets:
nightly:
@@ -29,6 +30,8 @@ input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ - project: gradle
+ name: gradle
- name: android-components
project: android-components
enable: '[% !c("var/fetch_gradle_dependencies") %]'
diff --git a/projects/gradle/config b/projects/gradle/config
index 4ad4a16..3f0f412 100644
--- a/projects/gradle/config
+++ b/projects/gradle/config
@@ -9,6 +9,7 @@ var:
- unzip
gradle_sha256sum:
6.5: 23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f
+ 6.5.1: 50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a
6.6.1: 7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac
input_files:
1
0

[tor-browser-build/maint-10.0-android] Bug 40172: Simplify gradle's project support for mutliple versions
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 99a817392afc90116d68c316c582b54cb437b3c7
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Mar 4 19:12:05 2021 +0100
Bug 40172: Simplify gradle's project support for mutliple versions
---
projects/android-components/build | 3 ---
projects/android-components/config | 1 +
projects/android-toolchain/config | 8 +++++++-
projects/application-services/build | 3 ---
projects/application-services/config | 6 +-----
projects/gradle/build | 2 +-
projects/gradle/config | 14 +++++++-------
7 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/projects/android-components/build b/projects/android-components/build
index 6c62a6c..279525c 100644
--- a/projects/android-components/build
+++ b/projects/android-components/build
@@ -7,9 +7,6 @@ mkdir $distdir/[% project %]
mkdir /var/tmp/build
tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
-# XXX: Not needed once we are done with moving Gradle out of our toolchain
-# project.
-export PATH=$GRADLE_HOME/gradle/bin:$PATH
cat > get-moz-build-date << "EOF"
[% INCLUDE "get-moz-build-date" %]
diff --git a/projects/android-components/config b/projects/android-components/config
index 948fcbd..f00e26a 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -17,6 +17,7 @@ var:
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit before support for new GeckoView interfaces gets added.
fetch_gradle_dependencies: 0
+ gradle_version: 6.6.1
targets:
nightly:
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index 5268319..f3214ab 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -19,7 +19,13 @@ var:
export GRADLE_HOME=/var/tmp/dist/[% project %]/gradle
export ANDROID_HOME=$ANDROID_SDK_HOME
export GRADLE_USER_HOME=$GRADLE_HOME
- export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle-[% c("var/gradle564") %]/bin
+ # In the PATH we set $GRADLE_HOME/gradle/bin (not included in
+ # android-toolchain) before $GRADLE_HOME/gradle-[% c("var/gradle564") %]/bin
+ # (which is included in android-toolchain)).
+ #
+ # Project which need a specific gradle version can use the gradle
+ # project and extract it in $GRADLE_HOME/gradle/bin
+ export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle/bin:$GRADLE_HOME/gradle-[% c("var/gradle564") %]/bin
google_repo: https://dl.google.com/android/repository
android_api_level: 29
android_platform_revision: 04
diff --git a/projects/application-services/build b/projects/application-services/build
index 8cf98a8..24a66f8 100644
--- a/projects/application-services/build
+++ b/projects/application-services/build
@@ -7,9 +7,6 @@ mkdir $distdir
mkdir /var/tmp/build
tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
-# XXX: Not needed once we are done with moving Gradle out of our toolchain
-# project.
-export PATH=$GRADLE_HOME/gradle/bin:$PATH
cd /var/tmp/dist
[% FOREACH arch = ['armv7', 'aarch64', 'x86', 'x86_64'] -%]
tar -xf $rootdir/[% c('input_files_by_name/nss-' _ arch) %]
diff --git a/projects/application-services/config b/projects/application-services/config
index 4c0d184..11fc5d7 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -12,15 +12,11 @@ var:
gradle_dependencies_version: 4
# This should be updated when the list of rust dependencies is changed.
rust_vendor_version: 3
- # For armv7 we need a different target than the default one we use for
- # GeckoView. We set this variable so the Rust project in the `input_files`
- # below can set the correct target when built for use in this project,
- # querying `origin_project`.
- application_services: 1
# Switch to make it easier to grab all dependencies during a dry-run.
fetch_gradle_dependencies: 0
# application-services is still stuck on an older glean_parser version.
glean_parser: 1.28.6
+ gradle_version: 6.5
input_files:
- project: container-image
diff --git a/projects/gradle/build b/projects/gradle/build
index 06ea3c6..adb5233 100644
--- a/projects/gradle/build
+++ b/projects/gradle/build
@@ -1,7 +1,7 @@
#!/bin/bash
[% c("var/set_default_env") -%]
unzip -qq [% c("input_files_by_name/gradle") %]
-mv [% project %]-[% c("var/gradle_version") %] [% project %]
+mv [% project %]-[% c("version") %] [% project %]
[% c('tar', {
tar_src => [ project ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
diff --git a/projects/gradle/config b/projects/gradle/config
index 4414436..4ad4a16 100644
--- a/projects/gradle/config
+++ b/projects/gradle/config
@@ -1,18 +1,18 @@
# vim: filetype=yaml sw=2
-filename: '[% project %]-[% c("var/gradle_version") %].tar.gz'
+filename: '[% project %]-[% c("version") %].tar.gz'
+version: '[% pc(c("origin_project"), "var/gradle_version", { error_if_undef => 1 }) %]'
var:
container:
use_container: 1
deps:
- unzip
- # XXX: Think about ways to make this more legible, in particular once more
- # Gradle versions get added.
- gradle_version: '[% IF pc(c("origin_project"), "var/application_services") %]6.5[% ELSE %]6.6.1[% END %]'
- gradle_sha256sum: '[% IF pc(c("origin_project"), "var/application_services") %]23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f[% ELSE %]7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac[% END %]'
+ gradle_sha256sum:
+ 6.5: 23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f
+ 6.6.1: 7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac
input_files:
- project: container-image
- - URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle_version") %]-bin.zip
+ - URL: https://services.gradle.org/distributions/gradle-[% c("version") %]-bin.zip
name: gradle
- sha256sum: '[% c("var/gradle_sha256sum") %]'
+ sha256sum: '[% c("var/gradle_sha256sum/" _ c("version"), { error_if_undef => 1 }) %]'
1
0

[tor-browser-build/maint-10.0-android] Bug 40172: Remove gradle 6.3 from android-toolchain
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit d0096d496ff3381b95b85497afab52642b720235
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Mar 4 19:46:53 2021 +0100
Bug 40172: Remove gradle 6.3 from android-toolchain
---
projects/android-toolchain/build | 2 --
projects/android-toolchain/config | 4 ----
2 files changed, 6 deletions(-)
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index ff132be..aafc584 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -18,8 +18,6 @@ unzip -qq [% c("input_files_by_name/android_ndk_compiler_old")%] -d $NDK_HOME
unzip -qq [% c("input_files_by_name/gradle564") %] -d $GRADLE_HOME
# GeckoView is still using an older Gradle, bundle it, too.
unzip -qq [% c("input_files_by_name/gradle511") %] -d $GRADLE_HOME
-# application-services is using a comparatively new Gradle, bundle it, too.
-unzip -qq [% c("input_files_by_name/gradle63") %] -d $GRADLE_HOME
# NDK Archive
for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index 648b1d9..24a41c2 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -32,7 +32,6 @@ var:
android_ndk_version: 21
android_ndk_version_old: 20
android_ndk_revision: d
- gradle63: 6.3
gradle564: 5.6.4
gradle511: 5.1.1
input_files:
@@ -61,9 +60,6 @@ input_files:
- URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version_old") %]-linux-x86_64.zip'
name: android_ndk_compiler_old
sha256sum: 57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0
- - URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle63") %]-bin.zip
- name: gradle63
- sha256sum: 038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768
- URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle564") %]-bin.zip
name: gradle564
sha256sum: 1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d
1
0

[tor-browser-build/maint-10.0-android] Bug 40241: Update components for mozilla87-based Fenix (android-components part)
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 15e911e50750ad01a1b8b0fad234396b70062ef8
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Tue Mar 9 19:21:43 2021 +0100
Bug 40241: Update components for mozilla87-based Fenix (android-components part)
---
projects/android-components/config | 4 +-
projects/android-components/git.patch | 29 +--
.../gradle-dependencies-list.txt | 223 +++++++++++----------
projects/android-toolchain/build | 11 +-
projects/android-toolchain/config | 8 +
5 files changed, 151 insertions(+), 124 deletions(-)
diff --git a/projects/android-components/config b/projects/android-components/config
index f00e26a..2e91926 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,12 +8,12 @@ gpg_keyring: torbutton.gpg
variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
var:
- android_components_version: 72.0.15
+ android_components_version: 73.0.3
torbrowser_branch: 10.0
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 19
+ gradle_dependencies_version: 20
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit before support for new GeckoView interfaces gets added.
fetch_gradle_dependencies: 0
diff --git a/projects/android-components/git.patch b/projects/android-components/git.patch
index 0f510f7..23cf1c5 100644
--- a/projects/android-components/git.patch
+++ b/projects/android-components/git.patch
@@ -1,11 +1,15 @@
-From 96fc057633a96188e00a55a0abc28a19d9b1dcf9 Mon Sep 17 00:00:00 2001
+From ad3f56a9e977b8c83643cfcf6f90b03176392c1f Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Sun, 19 Apr 2020 17:59:16 +0000
-Subject: [PATCH] git patch
+Subject: [PATCH 1/2] git patch
+---
+ components/support/base/build.gradle | 2 +-
+ publish.gradle | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/components/support/base/build.gradle b/components/support/base/build.gradle
-index 094c85e44..1b46c1b84 100644
+index 3a0ae5002..cffb310d5 100644
--- a/components/support/base/build.gradle
+++ b/components/support/base/build.gradle
@@ -38,7 +38,7 @@ android {
@@ -18,18 +22,15 @@ index 094c85e44..1b46c1b84 100644
}
diff --git a/publish.gradle b/publish.gradle
-index 09280f51f..14da5a6c0 100644
+index 6bbd206d8..e27c00f67 100644
--- a/publish.gradle
+++ b/publish.gradle
-@@ -61,7 +61,7 @@ ext.configurePublish = { groupIdArg, artifactIdArg, descriptionArg ->
- connection = libVcsUrl
- developerConnection = libVcsUrl
- url = libUrl
-- tag = getGitHash()
-+ tag = "release build"
+@@ -66,7 +66,7 @@ ext.configurePublish = { groupIdArg, artifactIdArg, descriptionArg ->
+ connection = libVcsUrl
+ developerConnection = libVcsUrl
+ url = libUrl
+- tag = getGitHash()
++ tag = "release build"
+ }
}
}
- }
---
-2.28.0
-
diff --git a/projects/android-components/gradle-dependencies-list.txt b/projects/android-components/gradle-dependencies-list.txt
index b62555a..34cc330 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -27,6 +27,8 @@ dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852 | https://dl.go
c0c4ed0160cd2ca18390015de8b392b697c173327c6b2c0947d4e62f6958c05d | https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1…
f7eab60c57addd94bb06275832fe7600611beaaae1a1ec597c231956faf96c8b | https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asyncl…
48167eeedc8da79c4d29deaf0d0cd9b5d8fedcae01f1a6efb3f28f08e8982f71 | https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asyncl…
+270c7b7d99942d5ec1dd88594e4648feb33d8e31d8c3c2ab2321d49d9abdfc1f | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0/…
+aeb69e76988f43b06c84fca25efab2e418bb98b5aabcd03fa7913bd3ed1bcaa9 | https://dl.google.com/dl/android/maven2/androidx/biometric/biometric/1.1.0/…
8a28c71070271b6f802f5a285ab9ae5b424e60a4f4bb4e73c0c6f53c1375506d | https://dl.google.com/dl/android/maven2/androidx/browser/browser/1.2.0/brow…
0125474b4ff9dd64d9ebaa003ba0a19f782354e4490e270fc9fb2a39b33c1115 | https://dl.google.com/dl/android/maven2/androidx/browser/browser/1.2.0/brow…
1193c04c22a3d6b5946dae9f4e8c59d6adde6a71b6bd5d87fb99d82dda1afec7 | https://dl.google.com/dl/android/maven2/androidx/cardview/cardview/1.0.0/ca…
@@ -69,6 +71,8 @@ da6733425a83f5ce850878fa7201082345fed7c668dd58550fdd19c0396c6fa4 | https://dl.go
e329d673361e94d2e8f4d4d14e1f0586368bd43fb19efd5766ce7498bcccd162 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.0.0/fr…
a14c8b8f2153f128e800fbd266a6beab1c283982a29ec570d2cc05d307d81496 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fr…
ef78eb27ac02ddf3545d5f8a3857c73a2837a01853f8d5fcf77251011db52544 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fr…
+fdd0eac80c6b26c79093a63fc699303f928cc1fa73ca7196d5590a77eb6d6873 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.2.0/fr…
+295417fbc0edbd706c9415655c111426fba5b20718b4fde601b95ac4f00df9b8 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.2.0/fr…
d19e82d142def6c4e136da70bf92f194c0ecc61d14ab4e84567b2ced0920fa93 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.2.5/fr…
df0aca46b62bb47cc662cbcee63372db6d2a2859478ee38b594fba3433fe30a5 | https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.2.5/fr…
33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a | https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/…
@@ -89,8 +93,8 @@ ed88fb124cfb70f2bb928ede1357874374aa45881bcb6d9744c1dc6680fa7c58 | https://dl.go
cc30a8a2a97d3767bd169b747c078727308096dd3ab7917d80b2f1f42d118bd6 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common…
8d4072201b6231d67e4192d608d46b1f5c920845106c9831632c2e3ffe706117 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
e18c4bd463eab9432e5a08484d63307aff5205896766802f0978acdb9a37e9c1 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
-bd53c64b038585215b4959c1a388437a3ad525608a31c58e4283c3e371727d4d | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
-510e33b8b6ca33d2fcb3b7615a4528e338b438de398f3ee8de119c26508a5fdd | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
+648c8de1d10b025d524a2e46ac994fc3f6bf186826c09ec1a62d250bf1b877ae | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
+f9b3998f71fc46719f7305d054752d01a9dac0becbee530fd06b70a9cf7ee222 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-extens…
5951f882e95b7e05ceb9adfca0fa2ebd511d63ea5a00da4eae6c6d0c1903da18 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
85695cce0045ebb9cbba3e2fbe7d7953489bdeb517a1b2e834313ce54556ba22 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
fde334ec7e22744c0f5bfe7caf1a84c9d717327044400577bdf9bd921ec4f7bc | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
@@ -109,8 +113,6 @@ d83af94860aa9f64cbdc51f40796a7cf55b116f0e6efd752e845c0104c8b16f6 | https://dl.go
0d1ce392cc13707fc6b7c1aca584c8c2dbc46790abc0542ba228a731e5d63f8d | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-liveda…
d8ff6fd844559743050c9ae010a6df230f2a3dbdf3e14498316f30bd8df836b5 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
efd48ae233a32d6f93d155bd1b6dc7ea5c6bc34b145d7730636f32f4e9ddf552 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
-8cddd0c7f4927bbf71fb71fca000786df82cc597c99463d6916ccbe4a205a9ac | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
-8bd43b3a4c017cc9f255f0a33cb216a7b5040d6ee1a8838a95b787987601a4e4 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
3a977e7778fc8418742d388409daaba7ea8fea8823d21ffb96e4c4236f715070 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
e71869a858f4d933da2f59c273ae1a5c426cfe0b017609bb1f6ab57c02aa4bcd | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-proces…
c29fc87694e6ce116b61207221e53ed285862a6628055790b0bcf9ce45d8cc68 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtim…
@@ -124,6 +126,10 @@ cb2b15bb0cf14134e953ed8ead96f94265018643f519367d51fd837f7311e9f8 | https://dl.go
db21f5e6f286231197131ef184ec7f6ad212e27c1c1bad231bc2625030708029 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
23516745f34f16ff7850bb1eadd55cf193dd789cba428de4bca120433e3bfd69 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
6b9e4fe350ed993d0c00b5ac0ff22f28bfc3bfbd9ad7eb7afc9b82f8339e673e | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
+ca2801ffc069555afed8eddd2292130f436956452bc8bbad30fb56f8e4e382a0 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
+f238f90a3d9d1f42779367309127dad8ff1a595dfa0754bbae05d77bfd0b5f33 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-servic…
+f4cceafbf86acfc7f3ba6a61d6dc6842a6738c1274610767d3ab8f8a114cba97 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
+37a46395fb334f5d54843d5823f37513c80485dcae6cf16188babc49ebe65e17 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
3ce866fb822b20fe2f188f974992869a0a6233fe40acbefcff090d6def5e7f33 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
9f31254e547b214257067611f18fc8a3c08f8df9eba634f6e21badc848596db1 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
60b758fd1c664089f82d1c018ed4ff7955c14a2b1620af7aa106591f733e0827 | https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmo…
@@ -339,7 +345,7 @@ efe2431a01a188d3037d02a08e60900ec7406de626e4bd5b4995f28d409c0ebd | https://dl.go
24bd1b4a8f81aea76ae30054df6343b5c0abc27024a5f6fb9c6ee7d4ffb86533 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
d7a2ff3a2fdbd0801f832df3de81dab06d9db7e4a57dfa6d768e7c6e5fa22280 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
79b705ecf5140d3a2601b44ef058b4588878432eb6fb2f9d65da0551cb0a8e20 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
-ae54afed3e3f65a2e3170b203679e86c78979c0c53dd0d7d7a38cf4fa8d46ca7 | https://download.jetbrains.com/kotlin/native/builds/releases/1.4.21/linux/k…
+e953cbf59b797ceb11ce312e8da19bb8afc013ef548d8946711c116bc2500482 | https://download.jetbrains.com/kotlin/native/builds/releases/1.4.30/linux/k…
07c3d82ca7eaf4722f00b2da807dc7860f6169ae60cfedcf5d40218f90880a46 | https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.…
940676b124a8eea8ad7576f9be072c82d7dc7fe350ad895a36081f0c93ae99a6 | https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.…
f57c6f089beeedb5b73cdaca7167998ce74505ae9a3d9aeacd72e0ebb0fbf4bc | https://jcenter.bintray.com/com/squareup/okhttp3/parent/3.12.1/parent-3.12.…
@@ -348,10 +354,6 @@ f80ce42d2ffac47ad4c47e1d6f980d604d247ceb1a886705cf4581ab0c9fe2b8 | https://jcent
cd57f75443ab6a714b203da51994ee64ed0e919fea81f04e4f4b5324e4bb03f0 | https://jcenter.bintray.com/com/squareup/okio/okio/1.17.2/okio-1.17.2.pom
ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
-77d7638a32bcae42c929eea307c9a3b48ae1a5abd00cd29f7abf6d51079d83a9 | https://jcenter.bintray.com/org/jetbrains/dokka/dokka-android-gradle-plugin…
-b76b0106b4624c5677b758f35a3c0c5d7ffb4ebf1cbf88239d269e8ec16fb961 | https://jcenter.bintray.com/org/jetbrains/dokka/dokka-android-gradle-plugin…
-e9215460b1bb674b616cb9c8f1a1b172cdd7b3f4749662d864ebd3f319f0d73d | https://jcenter.bintray.com/org/jetbrains/dokka/dokka-gradle-plugin/0.9.17/…
-cef786fa30b52f7c22e2e3255510a4ca52849c7a7b27a2568370a7bc6b9e4cfb | https://jcenter.bintray.com/org/jetbrains/dokka/dokka-gradle-plugin/0.9.17/…
affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601 | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
79500b867b1194cf781ac98d5c706331a3d3ce8448437f536f8d4cc2faff50c3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
@@ -395,57 +397,59 @@ a6d50f0321bdb52838c99136930c8dcc78c3074a592d526862ec01be91fa622b | https://jcent
b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
13009fb5ede3cf2be5a8d0f1602155aeaa0ce5ef5f9366892bd258d8d3d4d2b1 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar
1e1beb22ca906209700122b5cacf6f2719324538c5b1e3c27bf91564c8d31dbd | https://jcenter.bintray.com/org/yaml/snakeyaml/1.23/snakeyaml-1.23.pom
-9ac94a78d28f097fe4717b008f339b5582b42f09bfee4874db84f9f44d04178b | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord-forU…
-ec93cd90a8719f70ac91e837bb387f58209125e089d62e23b9fbadf8c9797a40 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord-forU…
-c851df79b81bff60b33f42b8f3ad3497f94963eecffdd360d588e06b2f5e1902 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
-24dea3626ba33a81790713097ecdbb0e40acec1f778f3247d687c2def6e7562a | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
-3de5412e997e57b938c5d820f2b612aa54f9d4e451ded2cd9daa46830b1140a7 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
-1cba0a74d265432f36ee2643b843f2a1aa1f160f7f95b1d0a674b5f84b61bdda | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
-c7506f720eb8f9170ccb0f8ab3bc60a19b4d14585a910e6cb8c70b28b5c45b51 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
-a11bbacf60c9adb449e9aff67af0f0e7725079f496735c762bc627bac1ba6bd5 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
-7ea4e2f86eb19f108a75ad7a6eab3f04aaabc17fe97721e7af6eaf6016e9ac5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
-abc9a481d9a8d0cff2aa2bd64ba3659e7e2a79a4fbdbeda0cdf5f2c3f4f3b20f | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
-fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-a9986d9325879d5daa274b0cf140917207134975ca30363c49c7f53008bb0e8d | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-f1280ce4007d3d6f114c35d747c50ef4b8e972ac20812dc1ad5646c58c874446 | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
-c1bb50d0b6c922aafcb8beb4a0115e4f148f18f15237694fcbc9215806b784ee | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
-84b1f7298bac034edafc3daef1a8b1fc89543a8ebe5b762c5c3c18abe8a01f7d | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
-20b128955bc1dc0a648cb179337d181c5b8f2c01d17a4eaf778a542007a5ddd3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
-e0876d0f2a8672b608d3d702bc42c8b833a1a146e359c18e0fed2b61d00d3975 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
-6b6fda096740b2b0293adef4254aec90b43c8061bfa57c95afa6c44998fb4d2e | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
-8a91c6b51965a76397500c8e3660ec85a4dafe591322c966ce382759baed23d8 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
-2df4bf435be1494030b7e095d3006a88f42ba278d834a46720d2746bac20fb05 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
-57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
-2884728eefb23a3e9c91c2d4fd4c91fd95d6b155be7b317ecf70203e68a14428 | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
-fd98ace3131929977df6caa61b419956cd704fe7fb46dc20e1d348e710755690 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
-0b41c8ffaa03c0f84bc4ffebcd765c6373162191fa14e480fd1de19e1d9ed2b2 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
-9ff49670a110fd56586229d42673902049a92650257fad81146a25daa5a4e58f | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
-8729ddf632ec417808e0e0b49868cb46bc968fb44c97f5e0b7397ccd4728c8e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
-e00994073f2c041891e511707ce991a7671b335f8863099719eb749897c231b9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/63.0.0…
-f16249682aa48169d0508bd5310778241f856df91b57201a99ad78d0b4741f34 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/63.0.0…
-be10c6c12568bfb4ce987756c6bfcf60ce01085a2dab185e0aef8092cd5c779c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/63.0.…
-ea6cb3d94121d03fefd5329072c7b01d891b8bb25c2c303b28dfd6728eeaa72f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/63.0.…
-377092988061736b0a6e8ddfd243fb9766598724abe0153767310ad2b0be86f5 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/63.0.…
-45ea21040eadcdce28620267916dc6fd7c252ec54bed1bbefb8f5b6b456e6a5c | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/63.0.…
-6215b79ff57a56a1ec3f1937ce9870614f96b5afc3e54837d48239b74a28c185 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/63.0.0…
-6a80782f831863c5c592cf2851cbec06f0661a868bca960512b0cc920711bddb | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/63.0.0…
-9eadd1526848b5669c6e00bfc4283eb63c2d2c1179db5c1329cca2a2e227003a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/63.0.0/…
-ca3c96c281e314f07170bbfa766693ef0d2e4d865433a9622254088ee7e68363 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/63.0.0/…
-93fd44998bfeeab9d7137cb34a50d510876ec8362e988b8a4ddf4e1629a69e71 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
-b3836516ae7c9f1ca38ce636e24e3d10b2b421d94e344f14033daa5f20df3168 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
-816dfaeadb34860eb09f7366163ede45422adfc9e152143a1cda568b815bdba9 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/86.0.…
-74dd3e50b176a493a58bc3328b929824126f415f1b5ceb88c1d82ee4d2548bfb | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/86.0.…
-5fe022d90f552aae72e0f7f908ade55798ea5a44bdb6c9458dd7706ba60d4eb6 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/87…
-a530ccd2c9adfc3b98e3246c33997831ccbe0d66752e968fb90cfa933006cc99 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/87…
-230963637e297d1a3edb5b3748731d1243165d3d7dda8ff979d65f8c23a02de5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-0bd06553f02d1cf52e81e83097c37f5bf6790884d9306f08eec8035c14397aa2 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-97a9d151ad636acc68eeda046866f0ac24e6f7bf2a81a6b938a3386cc73be529 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-817736c79269dc217946522fdb8f6ed57547bdd8fbf187687b53ffbe5d813bc3 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-a09eccf8b4fbb071e1acf3ea3ce1d30017250ee9c35424a0f98659526ff19597 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-477ee8ea2f4bbcf2860553987f3e5fddaac7cfd6bcae7c1bef7a7b29cdc5d9d8 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.0.4/glean-3…
-a1db8db94979392030d8a5eb1c5d7eccc8383adbf031575d746c68a92e9b0d20 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
+8f618bf515269c02037d89a555295e39422c759f7b550a74ea3edbe355ebd1ee | https://maven.mozilla.org/maven2/org/mozilla/appservices/autofill/71.0.0/au…
+a1fe528647f8e20b45ea0e32bbec271c32e68b865622c42c9a37816a076be998 | https://maven.mozilla.org/maven2/org/mozilla/appservices/autofill/71.0.0/au…
+d85f563fe91e796d3bc213ee32e98137f0cd92f00cd495d703135d29834d63c7 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord-forU…
+adb969fb3bfef2fc3bb3db62365dd2f68d86203d26746f3c44952c63442f0282 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord-forU…
+17dbf3d3f2cdcdbd666e6770161066214cc15f58298a9188ee8d58e27e4e5ee6 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/71.0…
+8f9fd5e44dacf9f7b5e6e6ca09fde27f8c9877f09f68cd7539f5a3d980a060ff | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/71.0…
+525d738af64c99669369b374154dd0d7e4ce32bc034f9736aaa05dc64f373743 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/71.0.0/f…
+4f1e345f4e1f41ea2463befa35413ee12b465b3e60f0ab03758b53a17136a091 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/71.0.0/f…
+373c9e30a547da6931309ba988242409292f752b0bd41b8a49972bb78546f0a0 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/71.0.0/…
+3cb0d177eb6e731633140b2e854c48edee90ef755026b128016e964e5dfbc3e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/71.0.0/…
+4cea81555a8c822e382f18495e2c852a6baa4d599ecde4a11ddd5dc27685e247 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/71.0.0/logi…
+86e8a90f5deeb76843286c3afd5e65216b4f05729b4b0d7e93aca51d74b98f48 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/71.0.0/logi…
+fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/71.…
+382af2131c727357578c4fdab03a03232a9bdfca3b1036d52fd71ef65a8cf701 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/71.…
+8d72e31784fac0c350e063453d537b1d2389f928c67235c897fc4cadfb3a2ca5 | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/71.0.0/nimb…
+d11541433d5795a8d801e03637fc68e6a8baf684a3b7f56ec19684428b5575bf | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/71.0.0/nimb…
+54934a2cd59b9562345e019e9b44dd1e23d1e2ede61ae7184e29e4e510e4d422 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/71.0.0/plac…
+88e9eed6c49b167ed69864d1d0825123d7c48edfe542cafa203897a75b8fc272 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/71.0.0/plac…
+16bc9f4070b9e8bfe0be8a8ce70e922dda4e4fb74d1e20db9dc1739a8d5c5c0d | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/71.0.0/push-7…
+a882723e6aca50bb0438a21f2ae1447d9cab19f433181459cf9b7086c2d54892 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/71.0.0/push-7…
+04e220d599dd5d5071bc5ee127c5d9db3e6fe378a831c8d002fb1363883711d4 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/71.0.0/rus…
+eed6764e8fd13edbaa2ceccf976174b4dd618f9807e2ca265c7b193007b2de69 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/71.0.0/rus…
+57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/71.0.0/sync…
+b9a7f2da1c0af1f88fd8bb47d04d11b4cc14f19a0f7dee13bc960ac75e87fd74 | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/71.0.0/sync…
+a50a7c02a36e5950ab0ca0c3a9486b87fd8de95582d0ddbcaa72af173230254b | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
+3b180681c076339b42e20967f95881fa11b5753ae7f597e3c3c8288c09aa9b5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
+6d23b30049cae26d35cbc1c892a785e6bdf9e0399cbbedf5584a48a8dc5cf5c9 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
+383823dd20adbea1eec86fd59097feb3f84f4dda77531a1d79ebe801b4d6d283 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
+e5801430997ccd358df0b4b48f101402b924a72de87cc5f12d80a32bb6d61865 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/71.0.0…
+5d08cc1bb3c2432ab3ecaaa6c06ca0603a9957ece9524643b9db4fb77a01f7b8 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/71.0.0…
+bfbb680afd838af36e4609d1b7236dbef93f47e92b386bb7ca08efca910e2e59 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/71.0.…
+c65c694e7579c0531eb09f569c97121793c11895e66fe8b206d1e9941b5ea9c8 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/71.0.…
+d5b2a0cf4022b8287b0e515909262c3969fde476d3df71fcc165b4b76de0fdf1 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/71.0.…
+b7e1a47fc0a4819023b0356c11b929e22caf101c62318981882a04ecea22d859 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/71.0.…
+fe504319fc0bc08ca00d8b951bf5d5f6fa4a5fc467e28b609cd34e8c59c20ad9 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/71.0.0…
+d1741144ed2ea215a84f5d94d779cafcfaf778cce8cc7224437a2884cb1101bc | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/71.0.0…
+755cd9e2c9d550b7d13e32b2d0fc3838021967405cf6b7bf30c58577fec5827a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
+7b0a3bd6d32c8002f785db8fdbf3b08e3541366e784cac1304cb3f49642b916a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
+f7bf27270904abd8639b543151b6eaf268b821b8e6235c8decf8031e02ec8648 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
+0b80acf7d1dd0d9484b0e82cd1a04ae57270d7f7e6b339ce39424554d48798e3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
+f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+005dc96a0f19c75ac3e83661a4c4e4b6b39fd71ab4d26d4903735fa860da8293 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
+cce46579b4a5fd731d5c12f62170287bec4f1ed8a2f24e8cb9a31998c1ea59ab | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
+079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+0b981a04d70ee3b438359a3da2548f56b188d594dd67bd297a09f0fa0845e348 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
d6394ad35c63daca22246363ff826749deb62d514a1843eea27d8f39dfb778e6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
+5d942e4a68aef1fab1b219f51e2882eb61dfd27d4bdcd9265b6d375ce5e5fb3b | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/34.1.0/glean-3…
+681374f4e97bd97098c1266973d89167ff9c592ccb89617832e224135af72637 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/34.1.0/glean-3…
8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-p…
233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
@@ -458,6 +462,10 @@ aa42cf65e9f7475bc7cb2fa7cb7dbf99938dd47de864bbed68135e5a12d3a482 | https://plugi
74a54eb154e18b54fc69ac03ab8d186f3ba293b976eca8b336566248ea2633b4 | https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotli…
bdce53a751fdb27af6608039df81214ba22d902ed4169540a3daeb5828c99cad | https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.3.6/plugins-1.3.6…
785f12a193912d77fe3b8714567ad5f01d727512a47c5a43aef57852cc1bc9e2 | https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.3.6/plugins-1.3.6…
+77d7638a32bcae42c929eea307c9a3b48ae1a5abd00cd29f7abf6d51079d83a9 | https://plugins.gradle.org/m2/org/jetbrains/dokka/dokka-android-gradle-plug…
+92f058aef966deca25ddcf1b1ad028d822f94891bf61491ebc914a08a3481e86 | https://plugins.gradle.org/m2/org/jetbrains/dokka/dokka-android-gradle-plug…
+e9215460b1bb674b616cb9c8f1a1b172cdd7b3f4749662d864ebd3f319f0d73d | https://plugins.gradle.org/m2/org/jetbrains/dokka/dokka-gradle-plugin/0.9.1…
+f41e2f85d75abe256ae3f522066ad40ff9b3dc90b0f6e455508a90ba78046871 | https://plugins.gradle.org/m2/org/jetbrains/dokka/dokka-gradle-plugin/0.9.1…
30278f88cfefb7bb328bedd73374242f8e3e55211e53884e4820dba271132fab | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extension…
5d87527b1f65a82d0a6a4f56cceab960522001a0fd010159a723ab897d58da0c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extension…
35d8e287a1d74dc55024a42bd788567e1f73e2059eb804319876d652f249ef59 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-proces…
@@ -817,64 +825,65 @@ fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93 | https://repo.
303c422700f79d5d13d528b978c6abd9cd136d78d9f7f6f2556e85a81892f9f1 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
648025c01c56b234a7458cb6048ae8fcfa941f9ea8ebf059090733237b9df9b6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
f120750af0c9e0c6024c3c76469fd4638ef898fc5bc2d4c49f2fe17568f47b9e | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
-baec7911227eec34845439c38876a2dd18eda7c15ac523655411e20e8f053138 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
-ec86adcccbb839d099b8649c5277a6fbe41d2c04b61b4b296584e7af52ae4ad1 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
-185520116f93f72b033b9c17280f5282c0df424240ad1aee3a5206505f5d6c28 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
-c152d433cb80e15b9666f030fc851250024d6dd82916f1d1686b7e503562f4c7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
-a7d247044201f11671c8d3132b5435c0317e9966cc499062b70e969db427a545 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
-99983931bacd18d392d2d7396d972539ed79954becdc3fe0fa4924b3fad14d26 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
-7b42e023a61436990cfa36f53cc2fd6685db5e76bb46e241428fb8da48b9d23b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
-f5f0e2a2f424149de99c2dbd3d3feb81eb26663c8fc9b566dd63383e3507ac2f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
-62b1dc3b2860c65d0231bc73f79299306a8a043bf3810ce98811271aa6780d02 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
-d4a5e8b55dc46a02e525b8c62072877c12f1b4bc743234f0e8d796236b8bf504 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
-86ec85db286befd86dcb7694de77bd36b42e4adc6d842ae74e4396a28afc576a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
-33c2aef1ffd80d944fd9efedeedb3d8b16bfbf78cc6db5c033f631b2ff56cfca | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
-3522e62a91296368df4a00a0db658e81538f892961ce4056adf4c382068610f7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
-895a4b9f993b5d5c5273196289270c8ceb842476bd3619cf31db4d6afdc4ab29 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
-5084253d5a2f6b6b04ea0fdbba27f6b19598b30b60a96362e6f8db89a8e70e68 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
-337d899037380f0403c6d3118d03db6f94ac5b81b2dfc092d9296eb04da2765f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
-d0db9f51efa7ccb5eda0599f53eb04cbdd4084554ba5bf80f7ef34c6bd16f7e1 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-79e4e0f22ed1330cb9af97ba697139093fd99f74fc4b4e182f7d0a50db7ce487 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-0e9263f227494e68572d312e10753a9986e1d841de19c4846e0d20603cefced8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-83fda4a1de6e0e164b87fc6eac7ab24b5427bcf43d311f1dabb8a6f557c5ea12 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-c0592d785b285ea1677066913bd7014044379a4694cd4f86faa537bf211d45d0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-d72cb95f92dcc36cf15261ef5d5647f08fdf974839f6b75c0502f5424150a4c5 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
-7e1ae4f15a7aef746c5b89433f1c5e76b301a635854ef3c6b134b0ca31a36624 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
-58b1dc4a27c380f2a8008fd24d52e5597ec2668d8519d2685abcfae5ad234a70 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
-77e2c30368145180c79e44934bb5901940ee40b6f5f793199b7780ff09fe0ce8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
-f98caea7f4e70b0040a1618aee9a18e4eb92b578419169ead64a8dab11392538 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
-5f400aaea65781039330a5e9755edd55017f36d201c6e5d28aefd6318548afab | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-5f5a780f7369e6a8301062e809e6719a3a694dd61c8ae3e54256e311007fe51f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-96fbbb2d5931d69af3e0d2f2185b0c66b9519acc2e53204cf63fc865977ec698 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-aad1e02bb96a96a5212c43603a06fe941fb66c883b9481b5ac6a5876ef462627 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-fe2df1608a545654a24c04d994bbfde9b6f5433d4a7b56046d336789630ba388 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-9a71c4afcea9b64cf532ca157c9b52618433e035036cc8941e526456908e1e4c | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-68ff14ea2619ba50e425cc34845154f30f5774b18d88bf610de36367aee07da6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
-38eab8e158766968d32851e5000623b54d975610c24bbb625eb64f7086772b77 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+f210c702efaea345adf6a14211b8d39231a2679a1f960da2e0692949b9df3ec6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+c9843ec810658da356c5ac2ae9bb2efa912e88b54262a0dc32d52ab40000c2e9 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+41eb96531c250a13b9d6023dfcf9bf9d84db0419c4c94d5823104104598399cd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+dd556ad254f4ead2fb38fb88254dfedc8530c76041b20a93ff5744a82de50d9a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-android-ex…
+745860fb134d8555a646c863b2e19cff3763f04d193f47d5414f49110bec6bc6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
+8e4c7d39c4a4412a45c752213003bfc138659a529e8f50ac622aae898bce1faa | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-annotation…
+a061a543aa052e328b22e0a8682b78d336c781110eceadac66d8ad0d265b04f8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
+121d16ce077dc9140c8b4296488c516fd5af464f54beceebc6ed9348dbc25ecd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-comm…
+8b997ae2b74b65e0e003e9fb7ffdbbad8f8dcceaae7f1d19d7067200c5a7e315 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
+a88a373df8a2c2ed0c0c72f9575ad7db4433641bfcbb745e13b0e00255fd7261 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-e…
+8738e290afd74dcf64fd29ce4ebe6e82e833ea7802f3083480875aa5cab62f02 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
+3a39769fbf062cb5edc34120c4007ce739f9132f2a1837b377cb3f98ead36586 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-r…
+9ceee49e2fda694fc429ad919b82774df2d414c9116ab3dc3650b92c8150deef | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
+6488337732f4a96c966ae036f3f75e375e48c3a1ae929ca1f90712d3137f52a7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-cli…
+81cdfde0c8eb536eecf0e38f4c1a89b4df0ea294369d092877de541cbe3740bb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
+6bf2a9dcc54eb1a74729160840f43e02d9f0cd0438477375b824a06499a08b5f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-emb…
+0ea3333a97e3e4d4ba3aa3d7fe09e02d4fef6c2587bb54470ba602a5b0486d47 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e48488a1e029d6b585dd797cfd27ec9c889534f01b1702aa05d3e3ea46ed62f3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e4f96cd6c1ff57be26890ca82a243670f2e82f0afb401774f8fe59fcb44200d0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+4e7bc009cb848b4a4bfdce7fe2f35dea842ec68176b730c802a4379798360375 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+e0050c158cfee4dbc2532e82eab7aebea1d7cd7e34752c9aa27b809c252def2b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+f27cd652e9e1fd4abbf24c074f1ca7a1d8a09518f48e067eb0e941b8cc9ccae2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plu…
+b2b9bc9029d446e2c8cecf709f92196106d11ff7974092880fefdd67ba1b9a49 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+1efcac305ddab304c2206bb1e511095c11d7e23c0df5374373b1526610188ff3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+76c0cac89d5e25bfa789cd988810da3ec6fa832bd839d772618766fdedacbf57 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
+d833b01e8539e580dadb806397bdd20062c3046eea1436d9ae153ae60f00575c | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-run…
+3c6308bd5926e57890d299afc748f22fd77c555b67ac5c692d205ff3c2092112 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+1c716dda4f3e72d42bfe820318b1b71fec6a8b577fee46556a72fe30f5d76d43 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+8d72840984b1b67b4fd766c0f65007a5afff05fc9d236e1458c8e0daeb47266d | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+9905fa198f34978ca200651ea954020075e888d7b8ae33ead6fafb829b37f1cb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+c2b66d368147e75efb42f52326ef1729c26a83637fdf858a6283cdff6f6936f4 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+6b8382834df62e29bf612b2c7b799c64782bf4e65b62346b2e9e6343f3540804 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+8ac3e9907fdaba99a59429fdcd7571e8d31691409671baa2a50dd46e219eeb4c | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
+88fb3f422066fb4bdf9b4e88a8369e22816ce8c93dd7409775160414700ee1c2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-…
6c91dea17d7dce5f0b550c3de3305767e5fb46247b6d1eb7eca0ca1fe18458de | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
d2e537cd1f7705276242d8cc903a0286b6dc86b41b6e728e967ef719022f2e15 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
-812cf197d9c4c67e1f47f95e2d72a9b600f0d1124560617bfe9850773eccbcff | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
-cd840ab880f838af0eb76e25930392c6bf0aa2a2adb5e2d4b0bb9f717a295ebd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
-50de5f7dad6235064ac6c0ff577f095a91b3306c2547d8bc372291587495024a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
-3b54ad496e7a7f7ad8ad6e846e5c061911242ef474e030ff602beef7565943d6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
-8ec3db1516948b2d3524e3afbe75cb5ac59e02d98cb6ef586ef57ba63ca8d11f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
-5bd2b4922398bd94d1d94e2dca0401089092b453e724a9e746daacacead735b7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+32010683330a6f31b8d309f10433acaa109b61f2df3d252dae7dade9730074c2 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+2594a44d33068bab2949750cae0c0ea052fc56faf29f06f35bd57cfa68c6736b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+751cf4a51089dc4c60caec5f30125983cd1d3998a4138ae8e66db0d496f73646 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+7e2a57538390cd609e3a9c6f7e085af5a948c663fda4eddc78907125a960ba20 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+c1ca432b7b4e0533deef6fe372387464f47f49260f706728854a508e413b4e66 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+4a633aa686acf4557f64156ae07889708ac59fb6210f970ace10b2a1425a62eb | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
6ea3d0921b26919b286f05cbdb906266666a36f9a7c096197114f7495708ffbc | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
785b5b66f1146317d5ed5b18c8e0c10f83cd5c909434c799a4da9823f028cd63 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
ff03e9989faa2d40fa4a9098aaad71e247f27ea4d24b0754da642eb0924bd8c5 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
3db67dafc422b9015e33cfdb3a4df9e8a6912de63c4b733197c8c189cdbc6d4a | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
-f78c5d8c09db985912ab83a1de3c3b53ddf208d7b151f06a72358ea3e137d01b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
-076c5a29b7a79ba2050b52e12307783d6b18d7701ce5245a3f48d005c51ae2be | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
-baa182386e8dc9716665812dd87d23bc9e094be9b171616b67c74a78c9b02432 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
-1f22fd66716e91f06ed1c8ef9c8a884d12a578645a3a0e3b11ed0745d301541d | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
-06ad4eb7eda10efa9b0dd38ed1d0464c50b21678c9cb37fb6619793a1c5b10ec | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
-0eafc36acad248e5d62475c38d65b1193d680ea2206a4c6a68de6fea81e972a0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
+a7810cf68dd2c8fa79e61a463478880d1df8a5ab9597d151595a9c743b48b90f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
+cc44bf2403bc5d9cbc7515979f5ce15bcff6c01f655f7e4d1db222d26cb575cf | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4…
+4a6939ca9a54604298b67054668bb7a4fc62178a77b87130de667bb1bdfea2d8 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
+16976b913d32635398a3f52233c7cae03249a2015e1d12179fd3348a72b0faae | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.…
+d8195162f4479312832be7289cc83bd44b3a79c8ff8702a1c6ca7e5bad782747 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
+287998fb67f2b36b49556c7ba9c65203f904f06a2d2553ddc529d17d2bf5b3ff | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/…
58b3ce8be4521230361fe6679b5930e75730164be1c7b900ddca4218072fee85 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
5cfd02a5e7dd9be15835522035d32eca33be0e63085d27f7c918fa495e34f81f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
3286bd65e41eae735600c0e9a441cb4a0988d0d76647923b9c978c90b0cb7311 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
-ad426ec76f52b1dcdf200f55495aea9a2d2796811884e8c4b514645061cf59f3 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
-9e82078f4dafe1cc2e28f308a317912a45c6a88fc83c51db6ba8cb0ea0829ef1 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+f8c8b7485d4a575e38e5e94945539d1d4eccd3228a199e1a9aa094e8c26174ee | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
+24ffa65bdfb7d893349cb2e78fb3714a490dd0a9c07375744bb136e9804807fd | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
4cd24a06b2a253110d8afd250e9eec6c6faafea6463d740824743d637e761f12 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
99319ebdd562d9519dfd15f78fe79bc09c3a28875083eea4577d9584359a2f61 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
29038be2ba5cf1acac17fc0d9746e553cf90315b8042366169ff6d800dadf239 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutin…
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index bf93bdb..cd6caec 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -5,6 +5,7 @@ export SDK_HOME=$PROJECT_PATH/android-sdk-linux
export NDK_HOME=$PROJECT_PATH/android-ndk
android_release_dir=android-10
android_release_dir_old=android-9
+android_release_dir_new=android-11
# Make directories
mkdir -p $NDK_HOME $SDK_HOME
@@ -39,6 +40,14 @@ unzip -qq $HOME/[% c("input_files_by_name/platform") %] -d $SDK_HOME
mkdir -p platforms/android-[% c("var/android_api_level") %]
mv $android_release_dir/* platforms/android-[% c("var/android_api_level") %]
+unzip -qq $HOME/[% c("input_files_by_name/build_tools_new") %] -d $SDK_HOME
+mkdir -p build-tools/[% c("var/android_api_level_new") %]
+mv $android_release_dir_new/* build-tools/[% c("var/android_api_level_new") %]
+
+unzip -qq $HOME/[% c("input_files_by_name/platform_new") %] -d $SDK_HOME
+mkdir -p platforms/android-[% c("var/android_api_level_new") %]
+mv $android_release_dir_new/* platforms/android-[% c("var/android_api_level_new") %]
+
unzip -qq $HOME/[% c("input_files_by_name/platform_tools") %] -d $SDK_HOME
# That's a quirk required by GeckoView but let's have it here instead of in the
@@ -47,7 +56,7 @@ mkdir emulator
cp tools/emulator emulator/
# Cleanup
-rm -fR $android_release_dir $android_release_dir_old
+rm -fR $android_release_dir $android_release_dir_old $android_release_dir_new
# Archive dist directory
cd /var/tmp/dist
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index dc6c3ac..dc30b4d 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -27,6 +27,8 @@ var:
google_repo: https://dl.google.com/android/repository
android_api_level: 29
android_platform_revision: 04
+ android_api_level_new: 30
+ android_platform_revision_new: 03
android_ndk_version: 21
android_ndk_revision: d
input_files:
@@ -40,6 +42,12 @@ input_files:
- URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level") %]_r[% c("var/android_platform_revision") %].zip'
name: platform
sha256sum: c9eaf2ce4e8fa6f5a8036bd3c95363d003733bf0a1bd349718cadf802db44c69
+ - URL: '[% c("var/google_repo") %]/build-tools_r[% c("var/android_api_level_new") %]-linux.zip'
+ name: build_tools_new
+ sha256sum: ed3b7f9b2d15e90a12c2e739adb749d7d834e2f953e677380206bd14db135c6c
+ - URL: '[% c("var/google_repo") %]/platform-[% c("var/android_api_level_new") %]_r[% c("var/android_platform_revision_new") %].zip'
+ name: platform_new
+ sha256sum: f3f5b75744dbf6ee6ed3e8174a71e513bfee502d0bc3463ea97e517bff68d84e
# ./mach bootstrap is fetching the latest version, so it does not seem to
# matter which particular version we are using. Pin to the one fitting best to
# SDK version/build-tools version.
1
0

[tor-browser-build/maint-10.0-android] Bug 40241: Update components for mozilla87-based Fenix (GeckoView part)
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 55f032b08303f453551104ab079c8cd110c81013
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Mar 3 17:00:27 2021 +0100
Bug 40241: Update components for mozilla87-based Fenix (GeckoView part)
---
projects/android-toolchain/build | 14 +++++---------
projects/android-toolchain/config | 9 ++++-----
projects/application-services/build | 6 ------
projects/geckoview/config | 2 +-
projects/geckoview/mozconfig-android-aarch64 | 2 +-
projects/geckoview/mozconfig-android-armv7 | 2 +-
projects/geckoview/mozconfig-android-x86 | 2 +-
projects/geckoview/mozconfig-android-x86_64 | 2 +-
projects/nss/build | 8 --------
projects/rust/config | 4 ++--
projects/sqlcipher/build | 8 --------
11 files changed, 16 insertions(+), 43 deletions(-)
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index fa90f64..bf93bdb 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -12,18 +12,14 @@ mkdir -p $NDK_HOME $SDK_HOME
# Compiler Archives
unzip -qq [% c("input_files_by_name/android_sdk_tools") %] -d $SDK_HOME
unzip -qq [% c("input_files_by_name/android_ndk_compiler")%] -d $NDK_HOME
-# GeckoView is still using an older Android NDK, bundle it, too.
-unzip -qq [% c("input_files_by_name/android_ndk_compiler_old")%] -d $NDK_HOME
# NDK Archive
-for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do
- # Adjust cross compilation prefix for armv7a. Unfortunately, the compiler cross
- # compilation prefix and the one for all the other tools differ. Let's fix that
- # so we only have to take care of one. See: #33557 (comment 2674649).
- cd $NDK_HOME/android-ndk-r$version/toolchains/llvm/prebuilt/linux-x86_64/bin
- for f in `ls arm-linux-androideabi-*`; do
+# Adjust cross compilation prefix for armv7a. Unfortunately, the compiler cross
+# compilation prefix and the one for all the other tools differ. Let's fix that
+# so we only have to take care of one. See: #33557 (comment 2674649).
+cd $NDK_HOME/android-ndk-r[% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %]/toolchains/llvm/prebuilt/linux-x86_64/bin
+for f in `ls arm-linux-androideabi-*`; do
ln -s $f ${f//arm-linux-androideabi/armv7a-linux-androideabi}
- done
done
# Tool Archives
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index 8ee72a1..dc6c3ac 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -15,7 +15,10 @@ var:
# By default we use the old NDK which is the one GeckoView is using.
# However, we can overwrite that per project if needed (e.g.
# application-services is currently on a newer NDK).
- export ANDROID_NDK_HOME=/var/tmp/dist/[% project %]/android-ndk/android-ndk-r[% c("var/android_ndk_version_old") %]
+ export ANDROID_NDK_HOME=/var/tmp/dist/[% project %]/android-ndk/android-ndk-r[% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %]
+ export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
+ export ANDROID_NDK_API_VERSION=[% c("var/android_ndk_version") %][% c('var/android_ndk_revision') %]
+ export NDK_HOST_TAG=linux-x86_64
export GRADLE_HOME=/var/tmp/dist/[% project %]/gradle
export ANDROID_HOME=$ANDROID_SDK_HOME
export GRADLE_USER_HOME=$GRADLE_HOME
@@ -25,7 +28,6 @@ var:
android_api_level: 29
android_platform_revision: 04
android_ndk_version: 21
- android_ndk_version_old: 20
android_ndk_revision: d
input_files:
- project: container-image
@@ -50,6 +52,3 @@ input_files:
- URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %]-linux-x86_64.zip'
name: android_ndk_compiler
sha256sum: dd6dc090b6e2580206c64bcee499bc16509a5d017c6952dcd2bed9072af67cbd
- - URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version_old") %]-linux-x86_64.zip'
- name: android_ndk_compiler_old
- sha256sum: 57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0
diff --git a/projects/application-services/build b/projects/application-services/build
index 24a66f8..4d1ab07 100644
--- a/projects/application-services/build
+++ b/projects/application-services/build
@@ -19,12 +19,6 @@ tar -xf $rootdir/[% c('input_files_by_name/uniffi-rs') %]
export PATH=/var/tmp/dist/rust/bin:/var/tmp/dist/uniffi-rs:$PATH
cd $rootdir
-# application-services uses a newer NDK, 21, than everything else...
-export ANDROID_NDK_HOME=/var/tmp/dist/[% c('var/compiler') %]/android-ndk/android-ndk-r[% pc('android-toolchain', 'var/android_ndk_version') %][% pc('android-toolchain', 'var/android_ndk_revision') %]
-# We need to add the new path to our build tools to PATH.
-export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
-export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
-export ANDROID_NDK_API_VERSION=[% pc("android-toolchain", "var/android_ndk_version") %][% pc('android-toolchain', 'var/android_ndk_revision') %]
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
[% IF !c('var/fetch_gradle_dependencies') %]
diff --git a/projects/geckoview/config b/projects/geckoview/config
index f424ff6..06782e7 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- geckoview_version: 86.0
+ geckoview_version: 87.0b4
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
deps:
diff --git a/projects/geckoview/mozconfig-android-aarch64 b/projects/geckoview/mozconfig-android-aarch64
index 29be6d2..c1a191c 100644
--- a/projects/geckoview/mozconfig-android-aarch64
+++ b/projects/geckoview/mozconfig-android-aarch64
@@ -11,7 +11,7 @@ ac_add_options --enable-official-branding
ac_add_options --enable-application=mobile/android
ac_add_options --target=aarch64-linux-android
-ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r21d
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
diff --git a/projects/geckoview/mozconfig-android-armv7 b/projects/geckoview/mozconfig-android-armv7
index 538c515..3afeb07 100644
--- a/projects/geckoview/mozconfig-android-armv7
+++ b/projects/geckoview/mozconfig-android-armv7
@@ -11,7 +11,7 @@ ac_add_options --enable-official-branding
ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi
-ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r21d
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
diff --git a/projects/geckoview/mozconfig-android-x86 b/projects/geckoview/mozconfig-android-x86
index d3f8d05..e93486c 100644
--- a/projects/geckoview/mozconfig-android-x86
+++ b/projects/geckoview/mozconfig-android-x86
@@ -11,7 +11,7 @@ ac_add_options --enable-official-branding
ac_add_options --enable-application=mobile/android
ac_add_options --target=i686-linux-android
-ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r21d
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
diff --git a/projects/geckoview/mozconfig-android-x86_64 b/projects/geckoview/mozconfig-android-x86_64
index f2fda06..ecf99ca 100644
--- a/projects/geckoview/mozconfig-android-x86_64
+++ b/projects/geckoview/mozconfig-android-x86_64
@@ -11,7 +11,7 @@ ac_add_options --enable-official-branding
ac_add_options --enable-application=mobile/android
ac_add_options --target=x86_64-linux-android
-ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-ndk=/var/tmp/dist/android-toolchain/android-ndk/android-ndk-r21d
ac_add_options --with-android-sdk=/var/tmp/dist/android-toolchain/android-sdk-linux
ac_add_options --with-gradle=/var/tmp/dist/android-toolchain/gradle/gradle/bin/gradle
diff --git a/projects/nss/build b/projects/nss/build
index c5cfd95..786eec4 100644
--- a/projects/nss/build
+++ b/projects/nss/build
@@ -7,14 +7,6 @@ mkdir /var/tmp/build
tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
export PATH=/var/tmp/dist/ninja:$PATH
-# application-services uses a newer NDK, 21d, than all the other projects...
-export ANDROID_NDK_API_VERSION=[% pc("android-toolchain", "var/android_ndk_version") %][% pc('android-toolchain', 'var/android_ndk_revision') %]
-export ANDROID_NDK_HOME=/var/tmp/dist/[% c('var/compiler') %]/android-ndk/android-ndk-r$ANDROID_NDK_API_VERSION
-# We need to add the new path to our build tools to PATH
-export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
-export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
-export NDK_HOST_TAG=linux-x86_64
-
nspr_64=""
[% IF c("var/cross_prefix") == "armv7a-linux-androideabi" -%]
gyp_arch="arm"
diff --git a/projects/rust/config b/projects/rust/config
index ba820b9..0095a8a 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -11,8 +11,8 @@ var:
targets:
android:
var:
- current_version: 1.49.0
- previous_version: 1.48.0
+ current_version: 1.50.0
+ previous_version: 1.49.0
arch_deps:
- libssl-dev
- pkg-config
diff --git a/projects/sqlcipher/build b/projects/sqlcipher/build
index 8942e57..a9609d6 100644
--- a/projects/sqlcipher/build
+++ b/projects/sqlcipher/build
@@ -6,14 +6,6 @@ builddir=/var/tmp/build/[% project %]
mkdir /var/tmp/build
tar -C /var/tmp/dist -xf [% c('input_files_by_name/nss') %]
-# application-services uses a newer NDK, 21d, than all the other projects...
-export ANDROID_NDK_API_VERSION=[% pc("android-toolchain", "var/android_ndk_version") %][% pc('android-toolchain', 'var/android_ndk_revision') %]
-export ANDROID_NDK_HOME=/var/tmp/dist/[% c('var/compiler') %]/android-ndk/android-ndk-r$ANDROID_NDK_API_VERSION
-# We need to add the new path to our build tools to PATH
-export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
-export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
-export NDK_HOST_TAG=linux-x86_64
-
export AR="[% c('var/cross_prefix') %]-ar"
# XXX: Mozilla really uses the NDK_API_VERSION here, which is weird.
export CC="[% c('var/cross_prefix') %][% pc('android-toolchain', 'var/android_ndk_version') %]-clang"
1
0

[tor-browser-build/maint-10.0-android] Bug 40172: Remove gradle 5.6.4 from android-toolchain
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 498b618a3c3245bdef84979817d6abdb3b8266bc
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Mar 5 15:35:25 2021 +0100
Bug 40172: Remove gradle 5.6.4 from android-toolchain
---
projects/android-toolchain/build | 4 +---
projects/android-toolchain/config | 13 ++-----------
projects/gradle/config | 1 +
projects/tor-android-service/build | 1 +
projects/tor-android-service/config | 3 +++
projects/tor-onion-proxy-library/build | 1 +
projects/tor-onion-proxy-library/config | 3 +++
7 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/projects/android-toolchain/build b/projects/android-toolchain/build
index c906776..fa90f64 100644
--- a/projects/android-toolchain/build
+++ b/projects/android-toolchain/build
@@ -3,19 +3,17 @@
export PROJECT_PATH=/var/tmp/dist/[% project %]
export SDK_HOME=$PROJECT_PATH/android-sdk-linux
export NDK_HOME=$PROJECT_PATH/android-ndk
-export GRADLE_HOME=$PROJECT_PATH/gradle
android_release_dir=android-10
android_release_dir_old=android-9
# Make directories
-mkdir -p $NDK_HOME $SDK_HOME $GRADLE_HOME
+mkdir -p $NDK_HOME $SDK_HOME
# Compiler Archives
unzip -qq [% c("input_files_by_name/android_sdk_tools") %] -d $SDK_HOME
unzip -qq [% c("input_files_by_name/android_ndk_compiler")%] -d $NDK_HOME
# GeckoView is still using an older Android NDK, bundle it, too.
unzip -qq [% c("input_files_by_name/android_ndk_compiler_old")%] -d $NDK_HOME
-unzip -qq [% c("input_files_by_name/gradle564") %] -d $GRADLE_HOME
# NDK Archive
for version in [% c("var/android_ndk_version") %][% c("var/android_ndk_revision") %] [% c("var/android_ndk_version_old") %]; do
diff --git a/projects/android-toolchain/config b/projects/android-toolchain/config
index 5d6190b..8ee72a1 100644
--- a/projects/android-toolchain/config
+++ b/projects/android-toolchain/config
@@ -19,20 +19,14 @@ var:
export GRADLE_HOME=/var/tmp/dist/[% project %]/gradle
export ANDROID_HOME=$ANDROID_SDK_HOME
export GRADLE_USER_HOME=$GRADLE_HOME
- # In the PATH we set $GRADLE_HOME/gradle/bin (not included in
- # android-toolchain) before $GRADLE_HOME/gradle-[% c("var/gradle564") %]/bin
- # (which is included in android-toolchain)).
- #
- # Project which need a specific gradle version can use the gradle
- # project and extract it in $GRADLE_HOME/gradle/bin
- export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle/bin:$GRADLE_HOME/gradle-[% c("var/gradle564") %]/bin
+ export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$GRADLE_HOME/gradle/bin
+ mkdir -p "$GRADLE_HOME"
google_repo: https://dl.google.com/android/repository
android_api_level: 29
android_platform_revision: 04
android_ndk_version: 21
android_ndk_version_old: 20
android_ndk_revision: d
- gradle564: 5.6.4
input_files:
- project: container-image
- URL: '[% c("var/google_repo") %]/build-tools_r[% c("version") %]-linux.zip'
@@ -59,6 +53,3 @@ input_files:
- URL: '[% c("var/google_repo") %]/android-ndk-r[% c("var/android_ndk_version_old") %]-linux-x86_64.zip'
name: android_ndk_compiler_old
sha256sum: 57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0
- - URL: https://services.gradle.org/distributions/gradle-[% c("var/gradle564") %]-bin.zip
- name: gradle564
- sha256sum: 1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d
diff --git a/projects/gradle/config b/projects/gradle/config
index 6e2dea1..8e732f5 100644
--- a/projects/gradle/config
+++ b/projects/gradle/config
@@ -9,6 +9,7 @@ var:
- unzip
gradle_sha256sum:
5.1.1: 4953323605c5d7b89e97d0dc7779e275bccedefcdac090aec123375eae0cc798
+ 5.6.4: 1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d
6.5: 23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f
6.5.1: 50a7d30529fa939721fe9268a0205142f3f2302bcac5fb45b27a3902e58db54a
6.6.1: 7873ed5287f47ca03549ab8dcb6dc877ac7f0e3d7b1eb12685161d10080910ac
diff --git a/projects/tor-android-service/build b/projects/tor-android-service/build
index 7efd708..68d63cd 100644
--- a/projects/tor-android-service/build
+++ b/projects/tor-android-service/build
@@ -10,6 +10,7 @@ cp -r $gradle_repo/maven2/* $gradle_repo
mkdir -p /var/tmp/build $output_dir
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
diff --git a/projects/tor-android-service/config b/projects/tor-android-service/config
index d6d2fed..7d375f8 100644
--- a/projects/tor-android-service/config
+++ b/projects/tor-android-service/config
@@ -12,11 +12,14 @@ var:
use_container: 1
# this should be updated when the list of gradle dependencies is changed
gradle_dependencies_version: 5
+ gradle_version: 5.6.4
input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ - project: gradle
+ name: gradle
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
diff --git a/projects/tor-onion-proxy-library/build b/projects/tor-onion-proxy-library/build
index c9b1e7a..d4950f6 100644
--- a/projects/tor-onion-proxy-library/build
+++ b/projects/tor-onion-proxy-library/build
@@ -12,6 +12,7 @@ cp -r $gradle_repo/maven2/* $gradle_repo
mkdir -p /var/tmp/build $output_dir
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+tar -C $GRADLE_HOME -xf $rootdir/[% c('input_files_by_name/gradle') %]
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
# Patch projects
diff --git a/projects/tor-onion-proxy-library/config b/projects/tor-onion-proxy-library/config
index d07c37b..f4a5c24 100644
--- a/projects/tor-onion-proxy-library/config
+++ b/projects/tor-onion-proxy-library/config
@@ -14,11 +14,14 @@ var:
use_container: 1
# this should be updated when the list of gradle dependencies is changed
gradle_dependencies_version: 5
+ gradle_version: 5.6.4
input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ - project: gradle
+ name: gradle
- project: obfs4
name: obfs4-armv7
target_prepend:
1
0

[tor-browser-build/maint-10.0-android] Add Android pieces for 10.5a13
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 5795b14d784bd9a815b29d0995a809d77d0ac0c1
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Mar 24 23:56:49 2021 +0000
Add Android pieces for 10.5a13
---
projects/android-components/config | 4 +-
.../gradle-dependencies-list.txt | 9 +-
projects/fenix/config | 4 +-
projects/fenix/gradle-dependencies-list.txt | 356 ++++++++++-----------
projects/geckoview/config | 2 +-
5 files changed, 187 insertions(+), 188 deletions(-)
diff --git a/projects/android-components/config b/projects/android-components/config
index 2e91926..eb1b7de 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,12 +8,12 @@ gpg_keyring: torbutton.gpg
variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
var:
- android_components_version: 73.0.3
+ android_components_version: 73.0.11
torbrowser_branch: 10.0
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 20
+ gradle_dependencies_version: 21
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit before support for new GeckoView interfaces gets added.
fetch_gradle_dependencies: 0
diff --git a/projects/android-components/gradle-dependencies-list.txt b/projects/android-components/gradle-dependencies-list.txt
index 34cc330..1debd7f 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -220,7 +220,6 @@ c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.go
1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
e95c0031d4cc247cd48196c6287e58d2cee54d9c79b85afea7c90920330275af | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
4063bca7fe94fe65c98f4168f97ae10e02da0248598ad3ac21c432c7f608a17a | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
-7cbb32f2fe880d407d4c53268bcd554c11dc9316a1d6cd556a08fe45a4631f22 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
290d2e9c1a22388b3f0c3dbc204a6176f8c49174126de884820befa83899f129 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
3eb66e171b40c9cd2a9b9d9cd61a62d90e4a515491619a8d0a95e98866624b97 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
7801441cb973fb007ef311d3db35c3b3c9d011cef890357e7ca33890833354e5 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
@@ -437,12 +436,12 @@ d1741144ed2ea215a84f5d94d779cafcfaf778cce8cc7224437a2884cb1101bc | https://maven
7b0a3bd6d32c8002f785db8fdbf3b08e3541366e784cac1304cb3f49642b916a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
f7bf27270904abd8639b543151b6eaf268b821b8e6235c8decf8031e02ec8648 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
0b80acf7d1dd0d9484b0e82cd1a04ae57270d7f7e6b339ce39424554d48798e3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
-f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+587abedeb0d539781c3a64e1d97f94e4e58598d59a110ec35a5291f5c471f441 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+04a3e6fb38caf74c58fe80b36ba585aba5ba4a22d06e40ffc2d9f7a47015fa99 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
005dc96a0f19c75ac3e83661a4c4e4b6b39fd71ab4d26d4903735fa860da8293 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
cce46579b4a5fd731d5c12f62170287bec4f1ed8a2f24e8cb9a31998c1ea59ab | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
-079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+e019974021cfdc86752984eba6309e7f865e3efe6d4ad40a012be212f4925251 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
+66ad663a2b60d756dadefa2024f664b7befe6fb22535da80aa88b024fe9b64f5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/fenix/config b/projects/fenix/config
index 83db6db..cabdb55 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -8,13 +8,13 @@ gpg_keyring: torbutton.gpg
variant: Release
var:
- fenix_version: 87.0.0b2
+ fenix_version: 87.0.0
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 22
+ gradle_dependencies_version: 23
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
diff --git a/projects/fenix/gradle-dependencies-list.txt b/projects/fenix/gradle-dependencies-list.txt
index 7aad8bc..53aa56b 100644
--- a/projects/fenix/gradle-dependencies-list.txt
+++ b/projects/fenix/gradle-dependencies-list.txt
@@ -422,184 +422,184 @@ a50a7c02a36e5950ab0ca0c3a9486b87fd8de95582d0ddbcaa72af173230254b | https://maven
3b180681c076339b42e20967f95881fa11b5753ae7f597e3c3c8288c09aa9b5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
6d23b30049cae26d35cbc1c892a785e6bdf9e0399cbbedf5584a48a8dc5cf5c9 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
383823dd20adbea1eec86fd59097feb3f84f4dda77531a1d79ebe801b4d6d283 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
-447480a00dbbeefc1b9bf92cce055ef9e66012b472eb7aa816d0a5b0efadc7a3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-4de56a5a6146c05615258c1bb52ba3415de6fe5c2fb4b3a8c43ac12b5128f1cc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-c404ac90f6d24d17099ed1bbee57057f11ddf012356da0132901c2fd56c4a48d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
-c4cc2de0066ee703559bf27ea7e5060859529505c4eb6b3e1e6f24563daab406 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
-75750cc312767ab2f4ac7cb6f5c81f6fe7e1ad1788cf06803569befdbf489fbb | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-507397e871ec3ea92af84518430279679a1b3fbcb261c6c9e28b4022a211e872 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-1caeffb46ffec001e1aabafcedeaff72aecaff1906af9e4ba6dc0d5ba5738e6e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-71290a324a7907c33a2376e37f97c3eb392d7e2a28553d73bbfd5f42dd6fc179 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-84fec1eb560eb286da5028ac46b69b0b1aaba68d2808299fd80a4c44ef1032d0 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-c7f99594339394a67c737bd3a18488a968657e4f67c9ea4bb2995e2a430494a5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-9fd1c1be67d95f47046fe2095541f6b30bd8f86b09bafa900e690e48f5f3d716 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
-4d330a04ad46b7fbb7e06a1631083efef9198898a5aebad8621f7723e38389fa | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
-5ba6a50bdb511962dace1eb91d5f83473f6c7f4ccba9c031b24723756a6f0266 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
-f29b7a18c25b6c3f957e8fe721294c5d9672abaeaa8a19d54cc123963e028b6c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
-522741d9030420a112c834989682457c6c518047691e85bdcde91e90c971876f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
-da806a41353dc50c0b288a83b9fd42ce4e55b1474d1b24f80b85cc39c8b5a237 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
-04de35c10b20442b1a2c35ea70b7b64f5325c77027cf02b6896e68bb0310d2ca | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
-2bb3cb79ab43d0aa807433057eb1b4a7919e905121488dbf38298b01a73640af | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
-95e6908b4c44267e447a57f26c56d6e1377241ea7980cca9634c571fefcf8bac | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-0edf084239584d5210eece1381696cdb77c6b8bad85c576b8b8efc9d7cce85c8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-3ff40893e11b1aef16f956485a5d7cd08a4b3301c928de3f71cf085cc23ec3ff | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
-0a59db19f16f3d533d2608e9ce46535b4741be65f68c062863c0edc34a0a93f4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
-abfba8187225c2c1df99d023969009114811045e5d17b645041bb7b6b1d48ee7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
-70865120ea301cc0e002e5cec6a26a5f9660072815112c5b6a1bda0a5833efd7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
-4b44ceb549ba3696691c84d0db14e9a9134ebeb6778eed46af0e1223aba0c729 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-421519af50ac6f16b2d811879e255abb8c63e65a3ebd97bf13d8ad93cad17701 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-44dfa1456b52cc1eeb996df948bdd2bd72ab516abfa58f70201984ffb32f267e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
-e36f8716438235dea28df4f1ecba68ea8175ba96dde022f1e1b8e7698db8fa3e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
-2a9d738edc92bf5d718f1f1fc8b2f1908fc1e2aa0867a5cffe9d4521d7e0d33b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-c9bedc55eff9d9b295ce09109afc105da74b2542468a5fb08001238d7dbff6f1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-ea0324bd6d1fc27e66a75688b49697cc1335352229029acfd9bbf94ded437b0d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
-9936ea6372e996df60e06b234b13803c155595619db9852fcbbb55a5751e1b05 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
-7059ce18d0b9e2722ca0546113111f5e7378dfaaaa3428cd993bd1df0e6c7601 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-46b74cb532b9d1616dc3373f263f9746875c499d9db45121ed6a4727e0c93b7c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-b884604b63f08fab27fd98e09f2fd4a81ad127baaa4be9572de150b3f4b6410f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
-ba0c8ae02b13d08013d0bcec92305753e2bf9dd7986f8bfec406691c7a0324fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
-47c6812da4b0a97e11d15305a0a5cbc7e489a25318958e686a3793fd1aecf167 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
-f5f03c5462e86ac56ab00fd4827d0fd37910e789594cf11453ff4a120547e2c9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
-276fd39ef0f7cac1d5744351d5c8d37f751bd8a959983a6d6c01f041d9c9b627 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
-c8517be57884c050f9f628a670b8a440e98d779222b2d58d814063594ae77538 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
-62be7bfc6d30816aae4ec08bb85d2015af513c6397ba01e62af9044094b21cc5 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
-2901c838eb2294db7502567f8f037a4f52a10422fcbc3c2c1c0173277784c11e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
-e1c06d4b6c497fa70a3876e22335c9fb6a4e0237587f0e0036d928196c4bd155 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
-9932b955b07d8418288a532baba96bfb754cdaf22add3c396ba59367dbe9a94c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
-6cfa83042c3077319fb6afa00b1474f9aece9bcd752557b4ad0bd2ab507f7a11 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
-0bb5c241487cb1a1b85417b8bc10a89171563ee37d432793d7cfe9a0a4795054 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
-82e0c14306a0c8355a0547e407954d3a14adb85571b6214daf5446414fe3fd84 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
-5a75a655da6558c176fe2948bfe68f2e50262df899c0d4f56acc59321327a761 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
-450057953eea02275513eca3121479fd74c50c5dda9a5165c792b1c00dde473e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
-df1d7b48c656cbb72e9bb8fc1a6de2041935a2c203be3efef89bb68a39d132ae | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
-caf47211543f9203652e471638a308673a61949e5f934ae51d8d95d5d700ec55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
-f91c2cc603721cb694e71b72989694e962be4fc2b1dbae513843b6c8ffb6d2f0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
-e508390b4f2fda504a12b334c78edfd5c675a5a0403f8cd8f97ebed24ddd766c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-d46fab5f7cc8adcfefb8fddf5ed1bd8845ecf5071c29df136098ec333d451dcc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-6555df4e8b9f968ad24f07ae9a8b601630deab0ddc3b762b370aea576a5dff30 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
-390150404bf5acc0b76e091e17a98d44dd76b8eff8d118ab7b498523f055b2a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
-2e12f28cc00c6c5f80558e2a6e80502f6076d81e0ac22cd407e45498fad3d44a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
-3a47c5b6c861991951ab703072a62c36e48193a8c65d2e8a6e08ea99a9fb9487 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
-58badab3d6608081f51c3a2253a09026f46068948ffb9eb88c0fca330ae84dc4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-1e400153cfef94b3ed43c68101200ad05ce7b89a123032081a564d5393b5a3e4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-e6f8eeacb570233d3df05bf0699afce9d535fe95aae449b18733909ebc51d577 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-037dfcb20b2700941b08f60816de9256fb17fc4d67c9c0334af69abe27076b9d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-103796306040b311b786968452f7e3d913c7d1e1f768c04b03f50ffef8b0b9b5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-af29d316061a14a66d40129ce611c2f11a9ea485b78b797e618cd6769f9862d2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-2cd092e0ccba5ed7b9400bbf173580ead67a8aaa90819eedb91655cc0dd0a536 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-ec9e24d5ef470561967647cbe774e14b8535a44e46cad7078a393233e4101bd9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-bbb0648abd8356a3f36d53d34c4cb57faa8aeac74019b377ddc56ae965146a9a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-b7673b37e123bcf12c6c1ae66365e359af0a6052b300226eaf3e07a42b6d62a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-62bf0e9526340aa5d741749740ebfeab1e195cb3be5cb61f35f9c587e30e1f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-cf3d3087eb5ce0db1076826524024ba26239ec36ef40896f5aad43bee06d0679 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-21a483d6b1f857d22c27d24ff25a668896d77205c4b1ae73118daac78d8cce8c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
-c75fce41519c9274d47139bf1bdddf21923894d566d06ef6bb8a3ca20e5db8ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
-3831c828fde09958bfcfa87f208cd57c99f5e36ab6febeb186329ab47cb2f85f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
-e734da778061d002fc090995a4e3aaf2732cdeedbc169a7e7a185e84b4020ab7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
-c111277efc63edef0258ec7231bab0e6a3ce723bc55fa77efc073370b6973c81 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
-3a300d928e83c1661fa3d6b9233b2a78db5c745f674e40967b5b88c56ee5927e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
-ea47d7ba04df4ef30b5d3177a5b68b90dd942b11110331ec35284632d09a5251 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-37d4467604fa71c587be1a0098ff8b582378c0e484dc29e3178e8bb7a0846447 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-d42c4aef464ce4f2f54893e36ce18b5b5d0c00c0df7377af5c809e260d0b390f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
-1cf870bf0213d615a2706e1ae64066492942617542ac16c961795d6acf23fc7f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
-b427bedff7b319d4079ffa9c01b73f3f63ab973807762c2e4009ed1c97fc948a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
-94eb5c7e174dd6394b55314a4bb9d097b5a948cf316faef65f13a9eb562e32be | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
-d0eabcc5fd3bf3fc9f8812f4302a11d9b8d7512b028cdd90d81cb60a3194efc0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
-b23e7c43b477b396505086f97b3477ac0d37193792e1eb9a337bfdca21fa6a0d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
-0db7f3a1f38177407cc56d121db30fb9d488f41eefa36077bb9baff04657c6ca | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
-fc9345e1df7bd073fd9b724ebee9b850c06173ab918b2f273528da70389d0c1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
-49023e83c3983e2063d9405bffcecc2207fc82da8d2c85e5e96255a73d79673f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-ddd6494224d01a44f0935a5a9eaaebc1951b8e8e3f1175e6d3059d654e499069 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-b1b2d2464d3e37e21b47aeb8b2f1b5af13f27543cd49f719e3738ce893bbbf1b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-896dda6d3f3023c62714a47871d3ca9b15fc6de135518895dc396a7e79bb23c2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-68c5b1b662be69564a0d7f609c1c7c956a07a744010562277dc89f8c1ca741ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
-51609201b75a99ea669925b7086ca2ed1dce41079633a70558468c37f34c3428 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
-cbc3c8601fdaf98e805049d7e262ac44ce448b6e1a63b74ca0d19d571d590a2e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
-cb36bcb60b2beeb10593bbfed5f8fa75fe28620f700a792701bd4a73ad02aee3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
-73455502add091f9f5620a7216475c9e83c235840b057fc7a2bfc6283fb9042f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
-87407c404cf59b0dfe2b67d1e557d082f248facc5a689a9ac405142af1a427b6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
-3697e7ae4f9479c2cd1ecb6ee81a12627e9a02cf1030f80aa1d9631869350c4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-0b414d21eaf2a0cd9f43d121cd38897f6e233dbbb701dd8589103880a87c79d4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-273b5bcfe293d286ace960fb9200cbcd5ce9d05ccae34e9acc57b54f8b7043fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-b2c4ce646748e103c6c014c1bf7807595e53a4fc4111984295d64791ddea5a7d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-c0458897a9280de5aa0c8369d96b7f34e4444617e6df28558a8130bbc4d3d2b3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-4175a14a4074994e5c66e5cacfd64a326e9b95a7100723afa0879d92f5a43179 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-f8d5f4717445f4a3845e14c5e03abd556b39868bb64ec2be021c4f02303d5e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
-5df147e52b61756c8fe4a60ecc55343c8f3553db8d019938d4f79d3a2a2e40a2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
-02f2fc043ab9c5de724b287f8b4cc7f8f9e86aafeeac6b9453213e16daa2b944 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
-1f423b443cef6326868cc1573c917c65eddea81d10da591c95beaba2c1406f5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
-19d5346f601edef76e0cc48d21af9c98cb9f0113b5dceb22ea5022f990d2a7df | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-192911f74c79d47cbc2124b383c015e54afeac543befc9e0f8a16648e6fd9952 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-5052aa3ed2387555780c5f630333fcb3330c480b8e513a6a482e3ca2581dc391 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
-9535c283cf146f27d5ca9a7017400b04d681b8f088247de5855733610b6e7c60 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
-eee3fef8cc33f30832b4b56a63acbd735c2bbe97e9bb8d23c726b54a46780d41 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-74f3e0fbc334d9d7593716fcf0f87ef16bf7ebe31fe71e891153fa54b1a94197 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-72b001ca36b87111f1f261eea32eacf31f5abc0dcbd85e5d63f5beed8d938498 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-95b99f092c718222bcb86f992ee1c6192f5fdbd88c211f93ebc7ed49e4be8cfb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-42526b88198a2cbd910b1ec27aef8bd93520c65d0755b6c041b6c698392981a0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-a959a0b420e9293d48f5b86da4a511865bb47f2232475391403b7fc4b430c3bb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-c5984b5d09f1c652e686766a43f1c02704a516c11d613ede97929c5c2b539fb8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
-6aa264d8515a001633eea0e1b92d5ba251640e90de2b69a3aaede56a633930eb | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
-504b56cfbe99e06e70d4feb47c4e910f4e6b7f923bd2c3b58bb81554c1311ee5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
-579d897481f031a235b94046a30806f9f349bbe9af86f901c83b7c3dff65db7e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
-e6ff5bdb4f8372ec9acf9d89646cf4169a2af8566892c19eec98c93eaa9e96b5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-e923ed086adafe9269ba3794f4a31ef0c20c5a224399fe4a7566fcde5d9d91f7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-a469c7e07ce0b8fa976507f534b3f942b488d819f0a1a254a0b22b66386fe6d8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-1c8c2d4d1c9bf94438f72507c23bd4005ccd39e7e5c0e9dff017f2d10698db17 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-f5a4aed033dac1896c856437183ad1b86bc1e9b05f9097e5c2bfc669ecbb446d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
-2786152ab92659bc375aec537cf0e2c7221a0973ff94cf4c0c1848a2f5a0deb0 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
-6a3c45629bf4e13ed742c95f22bb00a6a9235670b5ef97d3fad5147047febc05 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-551d807903ee2bcb566f62512a36bf0624ac093b6d7d5932811efc8fed97ca3e | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-be6262c3e8e4086866b5ef1b6c3efc89bc280b707f66a651fcb9549a17e32d51 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-c91727b253230ef18f44d18d6a50d578b1e54349474583ee176efdd0422431c3 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-08ffd378637b8a10855d45740823d4a9c273699177049034ac63b8950c1eec28 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
-569bd431ef7e46e805e57874a21a91da6a8cec863eadff2dd5b85b4c68f6b1b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
-63f3504b9097dd3fe791baf9e0c1b804cca20c68d8dab956094477ba975903d8 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
-0acbd61f2cc381babd0820c1e751b7735d598989ee40def83499376f858d4340 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
-3efafa346a192967bd72946f063853cbb1e957b7d1a7053517b66fae4e279f9b | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
-09a0327e49147819446eec9e86ff01d2e5558f0cd770f2268038b7d9a71a1175 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
-2887a688ca6b257849cc9cc19c573a3568310ad01d53ac3261b91f72892573dc | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-dd322de39885cf7788f95c42353e76b0e4a3a49eec21f37d61144aeced125ddf | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-8f1af21d2bba5153224d3b25579f607b1864fb5d0129340090ff8fbef964492c | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
-036d65d39f4f33ecb43c8bcbed4c7f9378b4b17965c08757ff0c618d99aeb10f | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
-40994cad75fc76f92f9461e0d548e35f1a4d80e56336305d0b3c77bfe92618f5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
-70f0e1f7ccc21e228ca597cbb3408b0760bb7049d5c37df83283da6ca43ae19a | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
-50ecf4685716648576e7d1f7d515046548b209125274a715b2dd496b925309dd | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
-5df55edad3df9848a61eaad9f185853a177aba4e06bd4fba1ef07f8e9fdacc9e | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
-489d8af504015a2ed04e3afa77e0e14c0cff604204f2d86ed9f8b793c6faf3a6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
-5cd73e9ec463a40ae3aa40f9c9071d42a51a55f7a358717205efd66fc2990d26 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
-04259ad572ec6a115fb8bd47d670ddf9bba5956320aac7153edede90d8b4a79d | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-fc1bd1fcb5031cc8ee7c0d15b603bacfdec9d4827e1dd32c383405a6b2208b32 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-c9a04732c9a7e37f61284b5e5a917a33db63ad97fc8fc01a2d85abbf65a88a95 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
-a84e0a5e6a2e7ccf01199a4d44f3e73e80216a05ade7de5a9a00fb035275aad7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
-e226502a506a8f99bf2e7f3b33c276e2772c98f148ed2f54c700910bb7fd78eb | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
-17345a94a232282328b4b0e63626fd57b81269403979b8478e3f8d8b4b9790e8 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
-083bcfb471cbbd1dce87709953051dc36c0873f45b6d5ed60f3c58c5e6ab6730 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-c53258cd336816097caa71d15edfc9ebe9e9767851bd679b02fb8905c51fa8a4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-d6e6b960d31f7cdfb1cf95872ce81c3780c7fc5e369efef46f118d6806c2411c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-05c27ca9e513487bcb7a67b479dc6d8950cf25f02ba91ad833c160e540209f5d | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-86e41f0678aad62b0098d9ee638cdc0c12c063d1bab5c84f7d1e12ba8a6615aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
-7be55332e83d7621fbf262ac8d6d4d0f84d674bc8c7467a1a46cbc8fc31b9d6b | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
-f3cc185bfe40e671225aa6c2555cef4db7382c569da6580488cda053d73a9678 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
-5461d510560a7e2814099fb271cdd37a3591682330f0e952ad7928aba339671a | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
-d19e50c0207f782ecce7b109232cf09529fc46720ce961eadf33b70b52f3680f | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-a895a4d33f1d91d3e7c7e822c23f99727694e67e2d5b05ba6ff0f177d4875501 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-f102797958eee931fa6003367175bb6e1b836be921894d67f1a87d13a9df4ccb | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-1279b2e5719a10d6188c21533880f8575eae795921dbdd22389891590333ea6d | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-541835af29d1453905668ad01be21c20eef303de873069d9b8e903981d36a108 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
-6d9bfc003be350569cef150120bfe5ff29eeab360a8e02a61a6cf2fe20b09f70 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
-3e0e38eed080c2b10f56db91c6e0380b4c9730f440da239ee85c7a125d398f2b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
-8cdf856c99cff104aa3cae54cfcb8e525099e450b2956e4e33201fc387e69f85 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
-bf092c353816ea029b579a63e3d3db2dfd08706bbabe4ddd67727551a5d5adaf | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
-f0a0ced0ece059663601e9e8e1d7dcfc546ff2130d6a3025eefeb880f94868da | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
-3e829b30496a0dad0352477b4866eea7c468363c365a3a4efc0a0cd7d1252957 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
-8bee0548ee1f8ab667c6739d1af228df67fc7f79fb4cce1b4618855dbaf73ec6 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
-f590de90365c4d2a7575582f89f6390b90599988e75601881e26d85c0aab48a1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
-34433fc57454d5d980ab0b77546431a86294d9fcae6d146e9ec7512ef2c56f37 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
-f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+e12da0897b5f8eac8445e378c74945177c7de84196eb91ff526da5f522f5911d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+2e15f3366f0a23f4552ddb4b52874f48a30840921317504f3007893bd06e8d0d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+c404ac90f6d24d17099ed1bbee57057f11ddf012356da0132901c2fd56c4a48d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+dce9a1e982a0e109e3e9d88a7b5590d4f24b293fba3f6a26a13abb4385d94c64 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+30d4fbb8200eb89367806b4432a00db4ed383afe5ad4d3083e2a7a64b1d4084f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+c60e78fda21e8e68d8824d189ea9b133f3e7193a3c9ffca8835b3b550ba6d3a9 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+0bce9b87b0cb01c25e479ebc059a9fc4ea27bf7505c1cbb5bcc4f7805b717dd5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+a026d154a5b3518086a2d8e960480e6e7f86f0816a19e1b1c3138cda9ca81658 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+87f8aa36f9c9d54facbeb97165d9bc80f275ea2951b87ed459ce1f813adb21fc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+fc64f72cff9a4255e6b055eda7d67f10ce722782567d5cce9ec07db03b2552ba | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+392df803d5881ed978bd68e0e665b7db3f2f010821f4600f65ed3292a19b0202 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+a695d796d3b27ad516aef9a400ce58dd6e963aa21050601d37dd8b88ccbca63a | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+ff6ab31fdc71e89feba35145281bd5d24d475e989996cb150f6912b846b44bf8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.1…
+4e8adf05fc6fbb990f047148bf8f60b5e233b03fb9c08cb884b79c3fc90ace02 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.1…
+4a60512b2b94d2c60c6aad3df4497de3e9bfd337e249dc57301243ae32d00969 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+b5e3beaa4b88851685838570a5cd17e31d5fb4ee4716034a7371a49dab6a709e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+04de35c10b20442b1a2c35ea70b7b64f5325c77027cf02b6896e68bb0310d2ca | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+93b74eec2fa5047b142c8fca03f384a1fb1d66c5ee593e02cacb5230adfebda7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+95e6908b4c44267e447a57f26c56d6e1377241ea7980cca9634c571fefcf8bac | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+4e17c13d3b76f70492e8d3a85300c2f7ee2df3b01732bf22c4992a5de13fcd85 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+3ff40893e11b1aef16f956485a5d7cd08a4b3301c928de3f71cf085cc23ec3ff | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+eefdac1bbd8814742179cd8a95151c9a5e184f92473fbe19dad1e492d9670563 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+abfba8187225c2c1df99d023969009114811045e5d17b645041bb7b6b1d48ee7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+1252884e94dede016fffd8f865f8a05506d7207d8faa03a3ea8d260a43ed71cc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+4b44ceb549ba3696691c84d0db14e9a9134ebeb6778eed46af0e1223aba0c729 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+99ec0fc11ca8245c2780e50af6ce5db03356fcb8e1c85562e38f4e3a7f3346ce | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+44dfa1456b52cc1eeb996df948bdd2bd72ab516abfa58f70201984ffb32f267e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+b4d18d86a02e2fe40c5ebcafcf0c40fa49642c51131f47f55bd1d9ba80d2da09 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+2a9d738edc92bf5d718f1f1fc8b2f1908fc1e2aa0867a5cffe9d4521d7e0d33b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+82ac87e4def03a94a02606b2eaa80d53ba169ea7fe0dc6f480a644edd68fa25e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+11ca8c641874957593a5dd8d839eb964f3fda209acf5fb2309c29b111745144f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+8b4ba5d83817d2f6ddf126a017d0f64bdd38897c897955e3097fea13f7194a42 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+7059ce18d0b9e2722ca0546113111f5e7378dfaaaa3428cd993bd1df0e6c7601 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+ea3fb8adf6d2f0888e183681556618314b60795feb52c042ef4e574d19673cf7 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+3ad778800db826059e74047e5edb9a3a06628aecb246503bd6a6ef090ef4f77d | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.1…
+1b1dd2ea3ef2a79f1bd31806f038eff01812d86c7f2fd829d8be7a88b4996df0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.1…
+31b383ebcbeef430b3e85fbbd65eee6dec77072b85cd8aa440a32cccb1279936 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+b2f50ad2e78303f7b1344e555e2876fffacbcab6aef6609d4c43121950032e40 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+8eba85573d95c0fce8d8616f2194b1f6a45fa842bbdfb709f22adc363c6642bd | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+62c4aad685e40068a4e3d0c29f2621a2ab1767d88974ef509fed16c3cc43fbe7 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+62be7bfc6d30816aae4ec08bb85d2015af513c6397ba01e62af9044094b21cc5 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.1…
+95b9955b06bcc1bca7d9615bb2ca5f40f04370c21547d870b7443d1d05f301d9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.1…
+e1c06d4b6c497fa70a3876e22335c9fb6a4e0237587f0e0036d928196c4bd155 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.1…
+3319375cad344ae1a56d115e451fd7858c8124c690b10ba4528474554e842a34 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.1…
+6cfa83042c3077319fb6afa00b1474f9aece9bcd752557b4ad0bd2ab507f7a11 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+1227e1f20788b515c58fa4a4d8d521940aa8e9e654c66e69dfda5b92e24e834e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+82e0c14306a0c8355a0547e407954d3a14adb85571b6214daf5446414fe3fd84 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.1…
+2663bd4140bad4bb44de9e8c090d6e74df0fa5c9a52aa87c96d315b4cd0490cb | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.1…
+450057953eea02275513eca3121479fd74c50c5dda9a5165c792b1c00dde473e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+8f002487bc935496f52d20441754645869f1b894535065ab76ab09e739161b5e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+caf47211543f9203652e471638a308673a61949e5f934ae51d8d95d5d700ec55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+d4ca474eb035e9336836e2396668d648aef23ad78a634af6018747552c6e3dc0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+e508390b4f2fda504a12b334c78edfd5c675a5a0403f8cd8f97ebed24ddd766c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+b4cea0bb5f463dfc1442c5df4020c73b14e890af1040e18e9457bcadfb2dc688 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+1ed11524f1f60936fe6b4980197a0982562f59b4cfb92847b28135d4189546bf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+f3519029e03ed6adf952111c1d4e14ac660909edbeb98b923f499b2a4bd54cca | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+247bd3c52f12264f7b7526949272a6df49f614887acd472aa7d845286cc1b743 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+b57033974732da759772cc8534e6db3eabf2d0c0c6b88e6f2cf07f9d4933768c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+ebed826cfddca0109d95664ab5fb75d12c98db0506e42b0de9bb6bc4d6089985 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+ff278382c6a809ab3c684820f7577192162748c5c4e82d946c70ac54a14e83f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+532bad7ac8afdb95f3c6f1dbe9855354d3272100d0c134adbdc344f12346c812 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+fca861879e797df89a6d865f617d03687819747ae9a059f8a97134bb8b6c7f2d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+744903c81b4b7d78c12d70bf804d6ecc41a0c513903760af45822e8701b237dc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+38b1ed0000f6da65778b11de469f6f97ee12db0c2026e0fe63dda7b5d4d62c27 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+2cd092e0ccba5ed7b9400bbf173580ead67a8aaa90819eedb91655cc0dd0a536 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+d0aac9c992b5affac27e50947ca7da0c1fd1fd0d196eb6793238aa58795ff8da | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+5591508412fc4f250cea08f9b3073822391e0d1e4310e87a163c151d9633eb99 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+92e47fe0cbd2234cabcd08e927c478853027c9091c2d6d1390be2e88f9387f9e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+62bf0e9526340aa5d741749740ebfeab1e195cb3be5cb61f35f9c587e30e1f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+0686a6a5a7ffcaa23e542a2b08e779b883192115affc7a3796592bc93ca71e8f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+21a483d6b1f857d22c27d24ff25a668896d77205c4b1ae73118daac78d8cce8c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+f2fa6b1a53ebf0c582ebd1645d88eaad29c6cfdbbf625c22a74c4d086ccaf843 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+3831c828fde09958bfcfa87f208cd57c99f5e36ab6febeb186329ab47cb2f85f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+bb0f6a7c601c28af42574865cbd3e5797b1ea9b6b7d40e490fc4e9803579473d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+69d4c78f155a950f30ebf784a450a0cf8bff6a1a54ac928efac9c54a4f54d5aa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+570e3a16d8fa95c71c42cbaa39ffc7b7ade27e6b15aeee48f45ff579d0a46bac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+31dacd6464046bf209ac06e4979b3a09faf2a2dd426778a428b0ca09685ed997 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+38874f4aeb50df950f6c3cae0960f2745caa999553336e79d29b71517e59c70a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+7e0fcca927a1a05c1b568f54f546ad94ad3fbc2fcb425c4be7833dbd8451dcd6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+2b147feee0fc076472150062679471a42393e55dc396df43b34bc10340fa22ea | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+b427bedff7b319d4079ffa9c01b73f3f63ab973807762c2e4009ed1c97fc948a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.1…
+8075880bf45d0447e0271c20952cdf986ab24ec13977693024c3193a57790c31 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.1…
+b95ee6b550325ad37f0d6acaf006a9300e20abcfacab157beead16f3142c3cdb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.11…
+629323e072efb6c5daa4287c0919d84b463e5aafd9de5f2f1f7919af9c342457 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.11…
+6b9b610b41d578cbd93c29508194a3b68b9f94e0b069a620841515e279a4659f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.11/…
+86c6b013dde67c532c5225af4875a534997b55ad0b7b88baa8f1b1c7451d28e6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.11/…
+90c58403c11f6e8d1eae5e7ef14fa8af3cc4c70df14a1f0a06ec16ba989cb454 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+6338ed5bb5f2e1ee7f35c326e32ac802fef15c5ef1bf7c4d1a0bc79b50e20e76 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+b1b2d2464d3e37e21b47aeb8b2f1b5af13f27543cd49f719e3738ce893bbbf1b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+0095957b66f1908972d9272577f2dae1a50900c18bc85070593700fceb6d69c4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+68c5b1b662be69564a0d7f609c1c7c956a07a744010562277dc89f8c1ca741ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+da8b90bf2a6b41e65b39231e84de014aff75f2152ead835a10905ffe74e724bd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+ae2671c17d704f13120dda238b2efac3902c15b59cfc6b5b5650a49936c11c20 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+70020b3ddc937daec2804055bc3c19b33cee914ab67e7e91172bd52e61f88078 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+73455502add091f9f5620a7216475c9e83c235840b057fc7a2bfc6283fb9042f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+aed9bb9cf4ed38ccf373eb2139675a8ce4262ecd7b4442e7d3b3713595667821 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+3697e7ae4f9479c2cd1ecb6ee81a12627e9a02cf1030f80aa1d9631869350c4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+220fc3aa77debc8428982e5109301abd56d74d21964bc9490b2fb6bab64dfba3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+273b5bcfe293d286ace960fb9200cbcd5ce9d05ccae34e9acc57b54f8b7043fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+94424ec80b9ad5ae3fe3e1d4a3a82bb84ecb6c1c94265f54c66b930ef9b2654b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+c0458897a9280de5aa0c8369d96b7f34e4444617e6df28558a8130bbc4d3d2b3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+6f7ae16629aa9baf035525a20b6fa9399bb54f77faeb9f710192c8ba90a2e700 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+f8d5f4717445f4a3845e14c5e03abd556b39868bb64ec2be021c4f02303d5e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.1…
+ea76015a4ede5b9fbb774821a9edd7634a480a79f38eb12a9db4efb0bec7e125 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.1…
+02f2fc043ab9c5de724b287f8b4cc7f8f9e86aafeeac6b9453213e16daa2b944 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+344100bc9c23ca1131c7059d61b538e2ec3bff6942812479b41afb0f1684d5db | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+19d5346f601edef76e0cc48d21af9c98cb9f0113b5dceb22ea5022f990d2a7df | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+4552b9e2b9497b633328f50ead3c6088558c325375f3d9f48388d8861e33bac1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+5052aa3ed2387555780c5f630333fcb3330c480b8e513a6a482e3ca2581dc391 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+6caa9700393740d16998c74526054bae6d4c10d9e523b5995ebbe00808991abd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+eee3fef8cc33f30832b4b56a63acbd735c2bbe97e9bb8d23c726b54a46780d41 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+cd975f44f979b312e033c405597c15d892e98dad35231dc86f4e9c4c5b46339e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+72b001ca36b87111f1f261eea32eacf31f5abc0dcbd85e5d63f5beed8d938498 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+6f8b6cc756958c662079b08239f9be57686e47e85fc77c759ef1ea6c84cf6e8d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+0d15afad4213c1ea74f1bf17cb86f7930cf67c7e5e645e961683925c6677657b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+3f8f942926d587b687a0823a972049c08ea6ac95c473d297d8034d5a012877cb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+e1e215beeec864765cf6356f2666d9645b06f7199c93ee60ebadc43c630dad2c | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.11/l…
+044fb381f944ed21a28dcbca1e3b77a23df958f3fe71003ddb1b5cf29d2f156e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.11/l…
+61046fb590a4e7da135a34c3acd7e860e51c937c313ec00d156d40503df49d51 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+35dbced9180a3a954c1cf2f279d2654e2fd82553b65499123970f8fbb8a6025a | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+e6ff5bdb4f8372ec9acf9d89646cf4169a2af8566892c19eec98c93eaa9e96b5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+7eccdac67894ca32bf0e3e7633d7d6e3d2d9865c6bc96cfdfe5d39422534bf0a | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+a469c7e07ce0b8fa976507f534b3f942b488d819f0a1a254a0b22b66386fe6d8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+61b345e9ddb0a6a019d26350efd82eaa7702e6915b25447e320c544cb8b2b73f | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+f5a4aed033dac1896c856437183ad1b86bc1e9b05f9097e5c2bfc669ecbb446d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.11/l…
+b51f6e8565f0db9475e4b83a80b6aec67fb2177d35e811c63a99f9b275234fb7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.11/l…
+6a3c45629bf4e13ed742c95f22bb00a6a9235670b5ef97d3fad5147047febc05 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+784f0dbfbca1eaa5cc29860d27e7a73cf6ed60e8a3b3a3d1ef7742db54340ac7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+be6262c3e8e4086866b5ef1b6c3efc89bc280b707f66a651fcb9549a17e32d51 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+a558c4bc83db26b3a7aae78af87a00d61462ee40ff16f38ed6964727f64b1e02 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+08ffd378637b8a10855d45740823d4a9c273699177049034ac63b8950c1eec28 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+01d10233b6c4e63f749c6274188a838be3052f2c6c7bdd058c4d4afb8bea6ed7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+bda08923be62dcdd2b2d1ae26dc1503da305b5965bac3e82e4982269042f5e82 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+4b8d60bcf20be643a652e6f8df433c2af505db58688f63cbfba9867d6e0aa310 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+3efafa346a192967bd72946f063853cbb1e957b7d1a7053517b66fae4e279f9b | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+5ae57a16aa7a006e5812ed190b754851dfe7c1653d729c7ffa49e40a4cbd0506 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+2887a688ca6b257849cc9cc19c573a3568310ad01d53ac3261b91f72892573dc | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+fba69d36c8e982f351f2dc291eabcd36a170595b21f47ec69bd0266bac766d84 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+fcff600993baa0b6c2a70639253a14880c350260083d6efee14b0da8c6bcba43 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.1…
+afbe50d98d855e12c299a57b4b3373830b154ecb5d55bb52080491e2ba3570d4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.1…
+40994cad75fc76f92f9461e0d548e35f1a4d80e56336305d0b3c77bfe92618f5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+9c98c2cf30542a40fdf8380422b8031b275a99b77ccaa664dcc74bd9d686718b | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+3c8d670279ea935eb69293dd99ae0434d4fb4092397f9cd2d754b76f05bc1d70 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.11…
+5977d3c8ffc2c109c1bf55706d8be07d2b95592b3c6ade94099aa5d6ce823065 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.11…
+489d8af504015a2ed04e3afa77e0e14c0cff604204f2d86ed9f8b793c6faf3a6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+32fc52eacd48b198d6f3f5b5eedaa99898049e831daf8133fee04e8f510e3720 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+04259ad572ec6a115fb8bd47d670ddf9bba5956320aac7153edede90d8b4a79d | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+19d54ecd0a7310e54f7ce66b5a38895111e4bc8b743b6e75ffd84255d303e3bf | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+c9a04732c9a7e37f61284b5e5a917a33db63ad97fc8fc01a2d85abbf65a88a95 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+b4eca2aa3bb909186688ec0bf31db985036d53e689dd6333045c08d96f6680d5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+e226502a506a8f99bf2e7f3b33c276e2772c98f148ed2f54c700910bb7fd78eb | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+98cbce37db6190ff6f5ba05a193f46ea71ac2adc80351e3449ec337635f44dad | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+083bcfb471cbbd1dce87709953051dc36c0873f45b6d5ed60f3c58c5e6ab6730 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+1bc9e7567778d214336b46d380bc837b19cba098ab3bb7fd007afaa5538a6bb8 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+d6e6b960d31f7cdfb1cf95872ce81c3780c7fc5e369efef46f118d6806c2411c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+8e7448323194006e10d2b9df3eb085d7e050275b2c0e3b9595aebdcb19ee91ef | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+86e41f0678aad62b0098d9ee638cdc0c12c063d1bab5c84f7d1e12ba8a6615aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.1…
+2e3e59d1cb2193a83ade99bfed8fdbb5faac015b8ed49f5d6bca5149bc89b42a | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.1…
+f3cc185bfe40e671225aa6c2555cef4db7382c569da6580488cda053d73a9678 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+3c8c963f9f7f2aa8cc33662a4c16ef574d7ee1b7f6873e84c765d3ffc1a977f2 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+d19e50c0207f782ecce7b109232cf09529fc46720ce961eadf33b70b52f3680f | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+4e7d3f51ff22ac212b589f96b6f0cff4098c9fd6330d8372a77a35f9151eb83b | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+c8afdb509acb2fc5b94fce3f6f0b996d2df60d6354978eb8b630b86c6d5953bf | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+d5951211b46bc0993e244e0d77569f02d1ffa5b6eabf0be55a3210e915b3b388 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+541835af29d1453905668ad01be21c20eef303de873069d9b8e903981d36a108 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+b69b5a3de291efa39358cbb549dcfc88ad1ab8d81a8dc5b690c922b81127d636 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+3e0e38eed080c2b10f56db91c6e0380b4c9730f440da239ee85c7a125d398f2b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.11/u…
+30202e4da39e00ececa949b312dd114510d5cade00f9b39fa7f3941ca045b90b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.11/u…
+bf092c353816ea029b579a63e3d3db2dfd08706bbabe4ddd67727551a5d5adaf | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.11/ui…
+715d573a7c6cd1fa0eb549173706f07bf176c55d1ad7c44d6c3e2d54bb03e494 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.11/ui…
+ddcb133192ee30a0c432817beaf9858ad8311e43122f2704badae5667a6cc751 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+252d7b0aeaa61945f4ecae9bfe4e636426af537bfbf0f521cdad9c2a3bf866f4 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+f590de90365c4d2a7575582f89f6390b90599988e75601881e26d85c0aab48a1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.11/…
+26ca9683f2b56d600329f4fe0cd55543401c26095a14c57d2a355632f365e3f1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.11/…
+587abedeb0d539781c3a64e1d97f94e4e58598d59a110ec35a5291f5c471f441 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+04a3e6fb38caf74c58fe80b36ba585aba5ba4a22d06e40ffc2d9f7a47015fa99 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+e019974021cfdc86752984eba6309e7f865e3efe6d4ad40a012be212f4925251 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
+66ad663a2b60d756dadefa2024f664b7befe6fb22535da80aa88b024fe9b64f5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 06782e7..a893d31 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- geckoview_version: 87.0b4
+ geckoview_version: 87.0
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
deps:
1
0

06 Apr '21
commit 2f2acbef264fd04afcfffc7fda1f6f2a3e427c2c
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Mar 25 18:09:06 2021 +0000
Pick up Openssl 1.1.1k
---
projects/openssl/config | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/openssl/config b/projects/openssl/config
index 86f1357..09a8407 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.1.1j
+version: 1.1.1k
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -31,4 +31,4 @@ input_files:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
- URL: 'https://www.openssl.org/source/openssl-[% c("version") %].tar.gz'
- sha256sum: aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf
+ sha256sum: 892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5
1
0

[tor-browser-build/maint-10.0-android] Release preparation for 10.0.15
by sysrqb@torproject.org 06 Apr '21
by sysrqb@torproject.org 06 Apr '21
06 Apr '21
commit 60d70884fbf8d531aaafdbf6d9ee0294a2b03456
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 18:53:32 2021 +0000
Release preparation for 10.0.15
Versions bump and Changelog update
---
.../tor-browser/Bundle-Data/Docs/ChangeLog.txt | 20 +
projects/tor-browser/allowed_addons.json | 483 +++++++++++----------
projects/tor-browser/config | 4 +-
projects/tor/config | 2 +-
rbm.conf | 2 +-
5 files changed, 271 insertions(+), 240 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index d277f7b..687723d 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,23 @@
+Tor Browser 10.0.15 -- April 7 2021
+ * Android
+ * Update Fenix to 87.0.0
+ * Update NoScript to 11.2.4
+ * Update Openssl to 1.1.1k
+ * Update Tor to 0.4.5.7
+ * Translations update
+ * Bug 40030: Add 'noscript' capability to NoScript [torbutton]
+ * Bug 40045: Add External App Prompt for Sharing Images [android-components]
+ * Bug 40047: Rebase android-components patches for Fenix 87.0.0 [android-components]
+ * Bug 40151: Remove survey banner on TBA-stable [fenix]
+ * Bug 40153: Rebase Fenix patches to Fenix 87.0.0 [fenix]
+ * Bug 40365: Rebase 10.5 patches on 87.0 [tor-browser]
+ * Bug 40383: Disable dom.enable_event_timing [tor-browser]
+ * Build System
+ * Android
+ * Bug 40162: Build Fenix instrumented tests apk [tor-browser-build]
+ * Bug 40172: Move Gradle compilers out of android-toolchain to own gradle project [tor-browser-build]
+ * Bug 40241: Update components for mozilla87-based Fenix [tor-browser-build]
+
Tor Browser 10.0.12 -- February 23 2021
* Android
* Update Firefox to 86.1.0
diff --git a/projects/tor-browser/allowed_addons.json b/projects/tor-browser/allowed_addons.json
index 5f6b16f..7258805 100644
--- a/projects/tor-browser/allowed_addons.json
+++ b/projects/tor-browser/allowed_addons.json
@@ -12,12 +12,12 @@
{
"id": 13299734,
"name": "Alexander Shutau",
- "url": "https://addons.mozilla.org/en-US/android/user/13299734/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/13299734/",
"username": "alexanderby",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/13/13299/13299734.png?mo…"
}
],
- "average_daily_users": 597458,
+ "average_daily_users": 620722,
"categories": {
"android": [
"experimental",
@@ -31,7 +31,7 @@
"contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…",
"created": "2017-09-19T07:03:00Z",
"current_version": {
- "id": 5168569,
+ "id": 5210981,
"compatibility": {
"firefox": {
"min": "54.0",
@@ -42,19 +42,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/51685…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/52109…",
"files": [
{
- "id": 3712931,
- "created": "2021-01-21T17:44:16Z",
- "hash": "sha256:3388ad0c1e91e9fcb5103df1286bb5df0caf192aaf2a85a34acb046ca96b78a1",
+ "id": 3755341,
+ "created": "2021-04-05T09:05:03Z",
+ "hash": "sha256:43da8e70e4d3d2ebde549f5a8dea54b59c8793d32049cdaf8868f3da02e94faa",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 518564,
+ "size": 533559,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3712931/dark_reader-4.9.2…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3755341/dark_reader-4.9.3…",
"permissions": [
"storage",
"tabs",
@@ -97,10 +97,10 @@
"url": "http://www.opensource.org/licenses/mit-license.php"
},
"release_notes": {
- "en-US": "- Dynamic mode improvements.\n- Thunderbird support.\n- Users' fixes for websites.\n- Users' translation improvements."
+ "en-US": "- Fixed performance bottleneck for websites with CSS variables.\n- Users' fixes for websites."
},
"reviewed": null,
- "version": "4.9.27"
+ "version": "4.9.31"
},
"default_locale": "en-US",
"description": {
@@ -164,7 +164,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-01-22T09:16:27Z",
+ "last_updated": "2021-04-05T10:12:36Z",
"name": {
"ar": "Dark Reader",
"bn": "Dark Reader",
@@ -205,12 +205,12 @@
2400,
1500
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201069.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201069.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201069.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201069.jpg?mo…"
},
{
"id": 201070,
@@ -221,12 +221,12 @@
2400,
1500
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201070.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201070.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201070.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201070.jpg?mo…"
}
],
"promoted": {
@@ -237,12 +237,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5619,
- "bayesian_average": 4.560258202906761,
- "count": 3353,
- "text_count": 1102
+ "average": 4.5609,
+ "bayesian_average": 4.559483678512808,
+ "count": 3503,
+ "text_count": 1155
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/darkreader/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/855413",
"slug": "darkreader",
@@ -335,8 +335,9 @@
"theme"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/darkreader/",
- "weekly_downloads": 24807
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/",
+ "weekly_downloads": 23774
},
"notes": null
},
@@ -347,12 +348,12 @@
{
"id": 5474073,
"name": "EFF Technologists",
- "url": "https://addons.mozilla.org/en-US/android/user/5474073/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/5474073/",
"username": "eff-technologists",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 752696,
+ "average_daily_users": 748146,
"categories": {
"firefox": [
"privacy-security"
@@ -384,7 +385,7 @@
"platform": "all",
"size": 1748610,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3716461/https_everywhere-…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3716461/https_everywhere-…",
"permissions": [
"webNavigation",
"webRequest",
@@ -405,7 +406,7 @@
"name": {
"en-US": "Multiple"
},
- "url": "https://addons.mozilla.org/en-US/android/addon/https-everywhere/license/202…"
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/license/202…"
},
"release_notes": {
"en-US": "2021.1.27\n* EASE Mode UI Changes\n* NPM Dependency updates\n* Geckodriver pull update\n* Chromedriver pull update\n* Integrate CSS Grid for Options Page and EASE UI\n* Put Options in new tab"
@@ -466,12 +467,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/214/214771.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/214/214771.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/214/214771.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/214/214771.jpg?mo…"
}
],
"promoted": {
@@ -482,12 +483,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.61,
- "bayesian_average": 4.6074823945198755,
- "count": 2213,
- "text_count": 560
+ "average": 4.6686,
+ "bayesian_average": 4.66611233297302,
+ "count": 2049,
+ "text_count": 412
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/https-everywhere/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/229918",
"slug": "https-everywhere",
@@ -518,7 +519,8 @@
],
"type": "extension",
"url": "https://www.eff.org/https-everywhere",
- "weekly_downloads": 16892
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/versions/",
+ "weekly_downloads": 20809
},
"notes": null
},
@@ -529,12 +531,12 @@
{
"id": 6937656,
"name": "Thomas Rientjes",
- "url": "https://addons.mozilla.org/en-US/android/user/6937656/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/6937656/",
"username": "Synzvato",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/6/6937/6937656.png?modif…"
}
],
- "average_daily_users": 210128,
+ "average_daily_users": 211211,
"categories": {
"android": [
"security-privacy"
@@ -569,7 +571,7 @@
"platform": "all",
"size": 6857292,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3672658/decentraleyes-2.0…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3672658/decentraleyes-2.0…",
"permissions": [
"*://*/*",
"privacy",
@@ -715,12 +717,12 @@
700,
521
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/137/137406.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/137/137406.png?modi…",
"thumbnail_size": [
- 640,
- 476
+ 533,
+ 397
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/137/137406.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/137/137406.jpg?mo…"
},
{
"id": 205808,
@@ -731,12 +733,12 @@
700,
521
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/205/205808.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/205/205808.png?modi…",
"thumbnail_size": [
- 640,
- 476
+ 533,
+ 397
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/205/205808.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/205/205808.jpg?mo…"
}
],
"promoted": {
@@ -747,12 +749,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.8016,
- "bayesian_average": 4.796834743546153,
- "count": 1225,
- "text_count": 310
+ "average": 4.8051,
+ "bayesian_average": 4.800280079721486,
+ "count": 1093,
+ "text_count": 213
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/decentraleyes/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/521554",
"slug": "decentraleyes",
@@ -844,8 +846,9 @@
"tracking"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/decentraleyes/",
- "weekly_downloads": 5661
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/",
+ "weekly_downloads": 5083
},
"notes": null
},
@@ -856,12 +859,12 @@
{
"id": 5474073,
"name": "EFF Technologists",
- "url": "https://addons.mozilla.org/en-US/android/user/5474073/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/5474073/",
"username": "eff-technologists",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 1014979,
+ "average_daily_users": 999485,
"categories": {
"android": [
"security-privacy"
@@ -896,7 +899,7 @@
"platform": "all",
"size": 1237132,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3719726/privacy_badger-20…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3719726/privacy_badger-20…",
"permissions": [
"tabs",
"http://*/*",
@@ -1373,12 +1376,12 @@
1920,
1080
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/225/225184.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/225/225184.png?modi…",
"thumbnail_size": [
- 640,
- 360
+ 533,
+ 300
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/225/225184.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/225/225184.jpg?mo…"
},
{
"id": 171793,
@@ -1389,12 +1392,12 @@
700,
394
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/171/171793.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/171/171793.png?modi…",
"thumbnail_size": [
- 640,
- 360
+ 533,
+ 300
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/171/171793.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/171/171793.jpg?mo…"
}
],
"promoted": {
@@ -1405,12 +1408,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7854,
- "bayesian_average": 4.782131767096186,
+ "average": 4.7882,
+ "bayesian_average": 4.785251109857352,
"count": 1780,
- "text_count": 418
+ "text_count": 362
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/privacy-badger17/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/506646",
"slug": "privacy-badger17",
@@ -1426,8 +1429,9 @@
},
"tags": [],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/privacy-badger17/",
- "weekly_downloads": 37713
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/",
+ "weekly_downloads": 18656
},
"notes": null
},
@@ -1438,12 +1442,12 @@
{
"id": 11423598,
"name": "Raymond Hill",
- "url": "https://addons.mozilla.org/en-US/android/user/11423598/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/11423598/",
"username": "gorhill",
"picture_url": null
}
],
- "average_daily_users": 5065937,
+ "average_daily_users": 5028879,
"categories": {
"android": [
"security-privacy"
@@ -1455,7 +1459,7 @@
"contributions_url": "",
"created": "2015-04-25T07:26:22Z",
"current_version": {
- "id": 5174693,
+ "id": 5196606,
"compatibility": {
"firefox": {
"min": "57.0",
@@ -1466,19 +1470,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/51…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/51…",
"files": [
{
- "id": 3719054,
- "created": "2021-02-01T14:04:16Z",
- "hash": "sha256:5c3a5ef6f5b5475895053238026360020d6793b05541d20032ea9dd1c9cae451",
+ "id": 3740966,
+ "created": "2021-03-10T13:37:51Z",
+ "hash": "sha256:96783b4e9abed66af81a30f7dbb6560911a9d828b12aadf0ec88b181200c3bfe",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 2742973,
+ "size": 2758798,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3719054/ublock_origin-1.3…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3740966/ublock_origin-1.3…",
"permissions": [
"dns",
"menus",
@@ -1534,10 +1538,10 @@
"url": "http://www.gnu.org/licenses/gpl-3.0.html"
},
"release_notes": {
- "en-US": "<a href=\"https://outgoing.prod.mozaws.net/v1/a24fd1d9a1598d49cdc2cdc6d3ecd4359712543…" rel=\"nofollow\">Complete release notes</a>.\n\n<b>Closed as fixed:</b>\n\n<ul><li><a href=\"https://outgoing.prod.mozaws.net/v1/0e94bcfacc284b39a3164377711e52b9ded21cd…" rel=\"nofollow\">After downgrading to 1.32.4, uBO is broken</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/88ab9531e629dc0a259dbe61b357b13316fa1a9…" rel=\"nofollow\">Whitelisting a site on Chromium Edge still blocks resources fetched by service worker</a></li></ul>\n<a href=\"https://outgoing.prod.mozaws.net/v1/35c6fcff904629a7392564335b09eb1fe5f661f…" rel=\"nofollow
\">Commits history since 1.33.0</a>."
+ "en-US": "<a href=\"https://outgoing.prod.mozaws.net/v1/993c4844a604f9df4adc7d0327dfedbaacd28a1…" rel=\"nofollow\">Complete release notes</a>.\n\n<b>Closed as fixed:</b>\n\n<ul><li><a href=\"https://outgoing.prod.mozaws.net/v1/cb47cb2c01a2d7d899dd8ef6772c49d6af16956…" rel=\"nofollow\">Picker glitch with elements with special characters in their tag name</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/6e6b773c126fb1313b0eb5553db2155115cc012…" rel=\"nofollow\">Expose CNAME-uncloaking as a Privacy option in the Settings pane</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/5a91bdb688dcfe2a791c54906113d2130664c9d…" rel=\"nofol
low\">Impossible to add explicit exception for implicit strict blocking</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/d79b53998d6800c05d5d65263fe4b708b2a9b51…" rel=\"nofollow\">Invalid network filters suggested in element picker</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/7f4bccb793a0720711a3e3fe72d3c6104474769…" rel=\"nofollow\">Use +/- in the popup to indicate whether 3-p frames were blocked</a></li></ul>\n<b>Notable commits without en entry in the issue tracker</b>\n\n<ul><li><a href=\"https://outgoing.prod.mozaws.net/v1/719412530be187ade75ed847aac498911d78886…" rel=\"nofollow\">Fix no-scripting switch not working for SVG-based documents</a></li><li><a href=\"https://outgoing.prod.
mozaws.net/v1/9369af26872b10a885b78d6a99a5ef102c5bea64d4bd78cc219abcf93c51c…" rel=\"nofollow\">Upgrade CodeMirror to 5.59.2</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/fd96d2d87c29688b7d2a7743d0724ea20654338…" rel=\"nofollow\">Fix 'adsbygoogle' neutered script</a></li><li><a href=\"https://outgoing.prod.mozaws.net/v1/a03a3a9cae294846e9071e87f309b72e323e1e0…" rel=\"nofollow\">Inject procedural cosmetic filterer's code only when needed</a></li></ul>\n<a href=\"https://outgoing.prod.mozaws.net/v1/6b8477f5206b215b8e4c77dad49cd5a04bb787c…" rel=\"nofollow\">Commits history since 1.33.2</a>."
},
"reviewed": null,
- "version": "1.33.2"
+ "version": "1.34.0"
},
"default_locale": "en-US",
"description": {
@@ -1627,7 +1631,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-02-17T14:45:13Z",
+ "last_updated": "2021-03-14T13:25:14Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1676,12 +1680,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238546.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238546.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238546.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238546.jpg?mo…"
},
{
"id": 238548,
@@ -1692,12 +1696,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238548.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238548.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238548.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238548.jpg?mo…"
},
{
"id": 238547,
@@ -1708,12 +1712,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238547.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238547.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238547.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238547.jpg?mo…"
},
{
"id": 238549,
@@ -1724,12 +1728,12 @@
1011,
758
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238549.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238549.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238549.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238549.jpg?mo…"
},
{
"id": 238552,
@@ -1740,12 +1744,12 @@
970,
1800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238552.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/238/238552.png?modi…",
"thumbnail_size": [
- 259,
- 480
+ 216,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238552.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/238/238552.jpg?mo…"
},
{
"id": 230370,
@@ -1756,12 +1760,12 @@
800,
600
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230370.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230370.png?modi…",
"thumbnail_size": [
- 640,
- 480
+ 533,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230370.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230370.jpg?mo…"
}
],
"promoted": {
@@ -1772,12 +1776,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7339,
- "bayesian_average": 4.733470238857273,
- "count": 13377,
- "text_count": 4446
+ "average": 4.7668,
+ "bayesian_average": 4.766347193086615,
+ "count": 11539,
+ "text_count": 3179
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/ublock-origin/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/607454",
"slug": "ublock-origin",
@@ -1828,8 +1832,9 @@
},
"tags": [],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/ublock-origin/",
- "weekly_downloads": 120361
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/",
+ "weekly_downloads": 116901
},
"notes": null
},
@@ -1840,12 +1845,12 @@
{
"id": 11797710,
"name": "JanH",
- "url": "https://addons.mozilla.org/en-US/android/user/11797710/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/11797710/",
"username": "JanH",
"picture_url": null
}
],
- "average_daily_users": 67612,
+ "average_daily_users": 72477,
"categories": {
"android": [
"photos-media"
@@ -1876,7 +1881,7 @@
"platform": "all",
"size": 11927,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3630185/videowiedergabe_i…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3630185/videowiedergabe_i…",
"permissions": [
"*://*.youtube.com/*",
"*://*.youtube-nocookie.com/*",
@@ -1958,12 +1963,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5137,
- "bayesian_average": 4.508208540483266,
- "count": 989,
- "text_count": 375
+ "average": 4.5177,
+ "bayesian_average": 4.512756205641316,
+ "count": 991,
+ "text_count": 374
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/video-background-play-fix/re…",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/811592",
"slug": "video-background-play-fix",
@@ -1985,8 +1990,9 @@
"youtube"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/video-background-play-fix/",
- "weekly_downloads": 42
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…",
+ "weekly_downloads": 38
},
"notes": null
},
@@ -1997,12 +2003,12 @@
{
"id": 12808157,
"name": "cowlicks",
- "url": "https://addons.mozilla.org/en-US/android/user/12808157/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/12808157/",
"username": "cowlicks",
"picture_url": null
}
],
- "average_daily_users": 97387,
+ "average_daily_users": 95564,
"categories": {
"android": [
"experimental",
@@ -2038,7 +2044,7 @@
"platform": "all",
"size": 284724,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3360398/privacy_possum-20…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3360398/privacy_possum-20…",
"permissions": [
"tabs",
"http://*/*",
@@ -2125,12 +2131,12 @@
640,
400
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201244.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/201/201244.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201244.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/201/201244.jpg?mo…"
}
],
"promoted": {
@@ -2141,12 +2147,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4967,
- "bayesian_average": 4.478734818461856,
- "count": 300,
- "text_count": 83
+ "average": 4.4873,
+ "bayesian_average": 4.471953145299084,
+ "count": 316,
+ "text_count": 88
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/privacy-possum/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/953945",
"slug": "privacy-possum",
@@ -2168,8 +2174,9 @@
"tracking"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/privacy-possum/",
- "weekly_downloads": 1341
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/",
+ "weekly_downloads": 1304
},
"notes": null
},
@@ -2180,12 +2187,12 @@
{
"id": 12929064,
"name": "Armin Sebastian",
- "url": "https://addons.mozilla.org/en-US/android/user/12929064/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/12929064/",
"username": "dessant",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/12/12929/12929064.png?mo…"
}
],
- "average_daily_users": 176675,
+ "average_daily_users": 178150,
"categories": {
"android": [
"photos-media",
@@ -2196,7 +2203,7 @@
"search-tools"
]
},
- "contributions_url": "https://www.paypal.me/ArminSebastian/5?utm_content=product-page-contribute&…",
+ "contributions_url": "https://www.paypal.com/donate?hosted_button_id=GLL4UNSNU6SQN&utm_content=pr…",
"created": "2017-06-17T15:23:33Z",
"current_version": {
"id": 5177612,
@@ -2222,7 +2229,7 @@
"platform": "all",
"size": 653210,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3721973/search_by_image-3…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3721973/search_by_image-3…",
"permissions": [
"contextMenus",
"storage",
@@ -2307,12 +2314,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230000.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230000.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230000.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230000.jpg?mo…"
},
{
"id": 230001,
@@ -2321,12 +2328,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230001.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230001.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230001.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230001.jpg?mo…"
},
{
"id": 230002,
@@ -2335,12 +2342,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230002.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230002.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230002.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230002.jpg?mo…"
},
{
"id": 230003,
@@ -2349,12 +2356,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230003.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230003.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230003.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230003.jpg?mo…"
},
{
"id": 230004,
@@ -2363,12 +2370,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230004.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230004.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230004.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230004.jpg?mo…"
},
{
"id": 230005,
@@ -2377,12 +2384,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230005.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230005.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230005.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230005.jpg?mo…"
},
{
"id": 230006,
@@ -2391,12 +2398,12 @@
1280,
800
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230006.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/230/230006.png?modi…",
"thumbnail_size": [
- 640,
- 400
+ 533,
+ 333
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230006.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/230/230006.jpg?mo…"
}
],
"promoted": {
@@ -2407,12 +2414,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.661,
- "bayesian_average": 4.654175268957434,
- "count": 826,
- "text_count": 169
+ "average": 4.6475,
+ "bayesian_average": 4.64166350289875,
+ "count": 868,
+ "text_count": 173
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/search_by_image/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/824288",
"slug": "search_by_image",
@@ -2444,8 +2451,9 @@
"yandex"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/search_by_image/",
- "weekly_downloads": 8365
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/",
+ "weekly_downloads": 3793
},
"notes": null
},
@@ -2456,19 +2464,19 @@
{
"id": 13394925,
"name": "Thomas Wisniewski",
- "url": "https://addons.mozilla.org/en-US/android/user/13394925/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/13394925/",
"username": "wisniewskit",
"picture_url": null
},
{
"id": 6084813,
"name": "Rob W",
- "url": "https://addons.mozilla.org/en-US/android/user/6084813/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/6084813/",
"username": "RobW",
"picture_url": null
}
],
- "average_daily_users": 40775,
+ "average_daily_users": 44681,
"categories": {
"android": [
"other"
@@ -2499,7 +2507,7 @@
"platform": "all",
"size": 13786,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3655036/google_search_fix…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3655036/google_search_fix…",
"permissions": [
"webRequest",
"webRequestBlocking",
@@ -2750,12 +2758,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4416,
- "bayesian_average": 4.436088053776032,
- "count": 967,
- "text_count": 261
+ "average": 4.4551,
+ "bayesian_average": 4.450236090325366,
+ "count": 991,
+ "text_count": 267
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/google-search-fixer/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/869140",
"slug": "google-search-fixer",
@@ -2771,8 +2779,9 @@
},
"tags": [],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/google-search-fixer/",
- "weekly_downloads": 42
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/",
+ "weekly_downloads": 62
},
"notes": null
},
@@ -2783,12 +2792,12 @@
{
"id": 143,
"name": "Giorgio Maone",
- "url": "https://addons.mozilla.org/en-US/android/user/143/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/143/",
"username": "giorgio-maone",
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/0/0/143.png?modified=150…"
}
],
- "average_daily_users": 406718,
+ "average_daily_users": 390704,
"categories": {
"android": [
"performance",
@@ -2802,7 +2811,7 @@
"contributions_url": "https://www.paypal.me/NoScript?utm_content=product-page-contribute&utm_medi…",
"created": "2005-05-13T10:51:32Z",
"current_version": {
- "id": 5183180,
+ "id": 5206025,
"compatibility": {
"firefox": {
"min": "59.0",
@@ -2813,19 +2822,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5183180",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5206025",
"files": [
{
- "id": 3727540,
- "created": "2021-02-16T15:49:15Z",
- "hash": "sha256:1d8126b5b76229d98b7f531879a1f59d16eecca32f8d6cede4d7ff9113f4e41a",
+ "id": 3750385,
+ "created": "2021-03-26T19:23:21Z",
+ "hash": "sha256:278ee526d7c3ce5236c1a04aa5b6605c81b82399b846e43cdf6f93f11fef1ec9",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 609320,
+ "size": 612139,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3727540/noscript_security…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3750385/noscript_security…",
"permissions": [
"contextMenus",
"storage",
@@ -2872,10 +2881,10 @@
"url": "http://www.gnu.org/licenses/gpl-2.0.html"
},
"release_notes": {
- "en-US": "v 11.2.2\n============================================================\nx Fixed typo in version checked on noscript capability update.\nx [L10n] Updated bn, br, ca, da, de, el, es, fr, he, is, it, ja, lt, mk, ms, nb, nl, \n pt_BR, ru, sq, sv_SE, tr, zh_CN, zh_TW."
+ "en-US": "v 11.2.4\n============================================================\nx CSS resources prefetching as a mitigation against CSS PP0\n (<a href=\"https://outgoing.prod.mozaws.net/v1/4c9c509b2dcb75bd1907cb1eacded56e1b55224…" rel=\"nofollow\">https://github.com/Yossioren/pp0</a>)\nx [L10n] Updated br, de, el, es, fr, he, is, nl, pl, pt_BR,\n ru, sq, tr, zh_CN\nx [nscl] Inteception of webgl context creation in\n OffscreenCanvas too\n x Fixed configuration upgrades not applied on manual updates\n (thanks Nan for reporting)\nx Mitigation for misbehaving pages repeating failed requests\n in a tight loop\nx [UI] More understandable label for the cascading\n restrictions option\nx [nscl] More refactoring out in NoScript Commons Library\nx [nscl] patchWindow improvements"
},
"reviewed": null,
- "version": "11.2.2"
+ "version": "11.2.4"
},
"default_locale": "en-US",
"description": {
@@ -2925,7 +2934,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-02-16T23:20:10Z",
+ "last_updated": "2021-04-01T22:30:12Z",
"name": {
"de": "NoScript",
"el": "NoScript",
@@ -2949,12 +2958,12 @@
291,
244
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/0/846.png?modified=…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/0/846.png?modified=…",
"thumbnail_size": [
291,
244
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/0/846.png?modifie…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/0/846.jpg?modifie…"
},
{
"id": 1060,
@@ -2965,12 +2974,12 @@
423,
447
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1060.png?modified…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1060.png?modified…",
"thumbnail_size": [
- 423,
- 447
+ 379,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1060.png?modifi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1060.jpg?modifi…"
},
{
"id": 1062,
@@ -2981,12 +2990,12 @@
457,
428
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1062.png?modified…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/1/1062.png?modified…",
"thumbnail_size": [
- 457,
- 428
+ 427,
+ 400
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1062.png?modifi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/1/1062.jpg?modifi…"
},
{
"id": 52395,
@@ -2997,12 +3006,12 @@
504,
385
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/52/52395.png?modifi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/52/52395.png?modifi…",
"thumbnail_size": [
504,
385
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/52/52395.png?modi…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/52/52395.jpg?modi…"
}
],
"promoted": {
@@ -3013,12 +3022,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5384,
- "bayesian_average": 4.5368145665758375,
- "count": 3451,
- "text_count": 2375
+ "average": 4.3626,
+ "bayesian_average": 4.359934440648107,
+ "count": 1765,
+ "text_count": 720
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/noscript/reviews/",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/722",
"slug": "noscript",
@@ -3071,8 +3080,9 @@
"xss"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/noscript/",
- "weekly_downloads": 10153
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/",
+ "weekly_downloads": 9239
},
"notes": null
},
@@ -3083,12 +3093,12 @@
{
"id": 4010195,
"name": "Baris Derin",
- "url": "https://addons.mozilla.org/en-US/android/user/4010195/",
+ "url": "https://addons.mozilla.org/en-US/firefox/user/4010195/",
"username": "baris-derin",
"picture_url": null
}
],
- "average_daily_users": 132136,
+ "average_daily_users": 130107,
"categories": {
"android": [
"performance",
@@ -3125,7 +3135,7 @@
"platform": "all",
"size": 234119,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3719055/youtube_high_defi…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/3719055/youtube_high_defi…",
"permissions": [
"tabs",
"storage",
@@ -3205,12 +3215,12 @@
256,
256
],
- "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/104/104784.png?modi…",
+ "image_url": "https://addons.cdn.mozilla.net/user-media/previews/full/104/104784.png?modi…",
"thumbnail_size": [
256,
256
],
- "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/104/104784.png?mo…"
+ "thumbnail_url": "https://addons.cdn.mozilla.net/user-media/previews/thumbs/104/104784.jpg?mo…"
}
],
"promoted": {
@@ -3221,12 +3231,12 @@
"category": "recommended"
},
"ratings": {
- "average": 4.1111,
- "bayesian_average": 4.106908765393005,
- "count": 1161,
- "text_count": 554
+ "average": 3.9206,
+ "bayesian_average": 3.9162193335341775,
+ "count": 945,
+ "text_count": 340
},
- "ratings_url": "https://addons.mozilla.org/en-US/android/addon/youtube-high-definition/revi…",
+ "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…",
"requires_payment": false,
"review_url": "https://addons.mozilla.org/en-US/reviewers/review/328839",
"slug": "youtube-high-definition",
@@ -3261,8 +3271,9 @@
"youtube hd"
],
"type": "extension",
- "url": "https://addons.mozilla.org/en-US/android/addon/youtube-high-definition/",
- "weekly_downloads": 1954
+ "url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/",
+ "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…",
+ "weekly_downloads": 1591
},
"notes": null
}
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index c316377..58cf4bc 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -78,9 +78,9 @@ input_files:
enable: '[% c("var/snowflake") && ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
- - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
+ - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
name: noscript
- sha256sum: 1d8126b5b76229d98b7f531879a1f59d16eecca32f8d6cede4d7ff9113f4e41a
+ sha256sum: 278ee526d7c3ce5236c1a04aa5b6605c81b82399b846e43cdf6f93f11fef1ec9
- filename: 'RelativeLink/start-tor-browser.desktop'
enable: '[% c("var/linux") %]'
- filename: 'RelativeLink/execdesktop'
diff --git a/projects/tor/config b/projects/tor/config
index ab5458a..edd6391 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-version: 0.4.5.6
+version: 0.4.5.7
git_hash: 'tor-[% c("version") %]'
git_url: https://git.torproject.org/tor.git
git_submodule: 1
diff --git a/rbm.conf b/rbm.conf
index c474201..7546f1f 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -24,7 +24,7 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '10.0.12'
+ torbrowser_version: '10.0.15'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- 10.5a1
1
0

[Git][tpo/applications/fenix] Pushed new branch tor-browser-88.0.0b4-10.5-1
by Matthew Finkel 06 Apr '21
by Matthew Finkel 06 Apr '21
06 Apr '21
Matthew Finkel pushed new branch tor-browser-88.0.0b4-10.5-1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-88.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/android-components] Pushed new branch android-components-74.0.6-10.5-1
by Matthew Finkel 06 Apr '21
by Matthew Finkel 06 Apr '21
06 Apr '21
Matthew Finkel pushed new branch android-components-74.0.6-10.5-1 at The Tor Project / Applications / android-components
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/android-components/-/tree/an…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[tor-browser-build/master] Bug 40262: Remove -march=native from lucetc build flags
by gk@torproject.org 06 Apr '21
by gk@torproject.org 06 Apr '21
06 Apr '21
commit d628abb8f6a8301c93f5315a8ff3b19269401783
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Mar 29 13:49:12 2021 +0200
Bug 40262: Remove -march=native from lucetc build flags
---
.../Remove-march-native-from-COMMON_CFLAGS.patch | 24 ++++++++++++++++++++++
projects/lucetc/build | 2 ++
projects/lucetc/config | 1 +
3 files changed, 27 insertions(+)
diff --git a/projects/lucetc/Remove-march-native-from-COMMON_CFLAGS.patch b/projects/lucetc/Remove-march-native-from-COMMON_CFLAGS.patch
new file mode 100644
index 0000000..13b16db
--- /dev/null
+++ b/projects/lucetc/Remove-march-native-from-COMMON_CFLAGS.patch
@@ -0,0 +1,24 @@
+From ce82762aef3f8cdbdd340f39f95d2491f69a7da0 Mon Sep 17 00:00:00 2001
+From: Nicolas Vigier <boklm(a)torproject.org>
+Date: Mon, 29 Mar 2021 13:42:48 +0200
+Subject: [PATCH] Remove -march=native from COMMON_CFLAGS
+
+The -march=native flag is causing an error on some hardware. It can also
+make the build non-reproducible when not building on the same hardware.
+---
+ lucet-builtins/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lucet-builtins/Makefile b/lucet-builtins/Makefile
+index 6ddbcfd..de7e540 100644
+--- a/lucet-builtins/Makefile
++++ b/lucet-builtins/Makefile
+@@ -7,7 +7,7 @@ LIBBUILTINS_OBJS:=$(addprefix build/, \
+ strcmp.o \
+ strlen.o )
+
+-COMMON_CFLAGS:= --std=gnu99 -Ofast -Wall -Werror -march=native -fPIC \
++COMMON_CFLAGS:= --std=gnu99 -Ofast -Wall -Werror -fPIC \
+ -I../lucet-runtime/include
+
+ default: build/libbuiltins.so
diff --git a/projects/lucetc/build b/projects/lucetc/build
index 208f4e1..e06c272 100644
--- a/projects/lucetc/build
+++ b/projects/lucetc/build
@@ -47,6 +47,8 @@ replace-with = "vendored-sources"
directory = "/var/tmp/build/lucetc/vendor"
EOF
+patch -p1 < $rootdir/Remove-march-native-from-COMMON_CFLAGS.patch
+
make -j[% c("buildconf/num_procs") %] build
# XXX: Should not be needed, just the lucetc binary, see: taskcluster/scripts/misc/build-lucetc.sh
make install
diff --git a/projects/lucetc/config b/projects/lucetc/config
index 72b79fe..0007201 100644
--- a/projects/lucetc/config
+++ b/projects/lucetc/config
@@ -31,3 +31,4 @@ input_files:
# the sources.
- URL: https://people.torproject.org/~gk/mirrors/sources/lucetc-vendor.tar.bz2
sha256sum: 12ba97fca12177e7ed5b5409fcfdbd31dc7db2e82282768d99dee5bcb1b1246a
+ - filename: Remove-march-native-from-COMMON_CFLAGS.patch
1
0

[tor-browser-build/master] Merge remote-tracking branch 'gitlab/merge-requests/250'
by gk@torproject.org 06 Apr '21
by gk@torproject.org 06 Apr '21
06 Apr '21
commit b06cd24c172f4e54a2586e2e55aedbb5fe3caac8
Merge: 663a42c d628abb
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Apr 6 07:41:40 2021 +0000
Merge remote-tracking branch 'gitlab/merge-requests/250'
.../Remove-march-native-from-COMMON_CFLAGS.patch | 24 ++++++++++++++++++++++
projects/lucetc/build | 2 ++
projects/lucetc/config | 1 +
3 files changed, 27 insertions(+)
1
0
commit 9e063f9d09855fb38770d06ea6b8afb00100e259
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 22:09:37 2021 +0000
Update FF78/87 audits
---
audits/FF78_NETWORK_AUDIT | 2 +-
audits/FF87_NETWORK_AUDIT | 8 ++++----
audits/code_audit.sh | 2 ++
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/audits/FF78_NETWORK_AUDIT b/audits/FF78_NETWORK_AUDIT
index d73f450..6626dda 100644
--- a/audits/FF78_NETWORK_AUDIT
+++ b/audits/FF78_NETWORK_AUDIT
@@ -1,6 +1,6 @@
Summary of findings: https://gitlab.torproject.org/tpo/applications/fenix/-/issues/34177
-`git diff 8da33f6c34c0ca5b1d7bca58ca86cb5e436333e8 bace0d2a46cabd36f5bdc738c000f15ae4a4225c`
+`git diff 8da33f6c34c0ca5b1d7bca58ca86cb5e436333e8 4735a392536150f49518c48aa9510cf313603b92`
and then go over all the changes containing the
above mentioned potentially dangerous calls and features. Grep the diff for
the following strings and examine surrounding usage.
diff --git a/audits/FF87_NETWORK_AUDIT b/audits/FF87_NETWORK_AUDIT
index 8874897..fba3a86 100644
--- a/audits/FF87_NETWORK_AUDIT
+++ b/audits/FF87_NETWORK_AUDIT
@@ -1,7 +1,7 @@
Start: fe9560804bef331ff346f3fd3b05e74122fdd30b # FIREFOX_86_0_BUILD2
-End: 1be3d58406ce4dd8af63a169482ae4ca1709d8e5 # FIREFOX_87_0b9_BUILD1
+End: 4068febfd76d9ec557591240d7496be42c27c17f # FIREFOX_87_0_BUILD3
-`git diff fe9560804bef331ff346f3fd3b05e74122fdd30b 1be3d58406ce4dd8af63a169482ae4ca1709d8e5`
+`git diff fe9560804bef331ff346f3fd3b05e74122fdd30b 4068febfd76d9ec557591240d7496be42c27c17f`
and then go over all the changes containing the
below mentioned potentially dangerous calls and features. Grep the diff for
the following strings and examine surrounding usage.
@@ -120,7 +120,7 @@ End: 1ee6b32f3ee569036fdf1015cf7ffc01ded2860f # v71.0.0
============ Android Components Portion =============
Start: 095c0ef007ada4dab8561bef69e43bf6db1d3298 # v72.0.15
-End: ecccbf2da2b0572a1d600cce447d47f2eae0de9a # v73.0.3
+End: bea80bbaccc431994a534a087b223563826ac256 # v73.0.11
# FF87 (using `java_audit.sh`)
# Commit 6edfec5fe464e4b1d0eb82ed8825526036d861c8
@@ -138,7 +138,7 @@ End: ecccbf2da2b0572a1d600cce447d47f2eae0de9a # v73.0.3
============ Fenix Portion =============
Start: db196d0e49eb0f69ab620856491deb8c4c7ccf57 # v86.1.0
-End: 82c8a64ca0b8bd5e6ea88395cba41c0db68d0a36 # v87.0.0-beta.4
+End: 9d91b8eeb9d287ee95937b5edfffde383982267a # v87.0.0-rc.1
# FF87: (using `java_audit.sh`)
# - c9b8f57f96e9188746391885a065428df62f3ff9
diff --git a/audits/code_audit.sh b/audits/code_audit.sh
index 3586470..c7c0848 100755
--- a/audits/code_audit.sh
+++ b/audits/code_audit.sh
@@ -53,6 +53,8 @@ initialize_java_symbols() {
KEYWORDS+=(AppLinksInterceptor)
KEYWORDS+=(AppLinksUseCases)
KEYWORDS+=(ActivityDelegate)
+ # Added in FF87 audit
+ KEYWORDS+=(AutofillService)
}
initialize_rust_symbols() {
1
0

[tor-browser-build/master] Bug 40263: Update domain front for Snowflake
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit b7bd888fd45241bd204a12813fdfff71f7df94b5
Author: Cecylia Bocovich <cohosh(a)torproject.org>
Date: Thu Apr 1 12:28:27 2021 -0400
Bug 40263: Update domain front for Snowflake
We're switching from Azure to Fastly for our snowflake broker front
domain.
---
.../tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix | 2 +-
projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix | 2 +-
.../tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix | 2 +-
.../tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix b/projects/tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
index 411c6e1..206dbd2 100644
--- a/projects/tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
+++ b/projects/tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
@@ -2,4 +2,4 @@
ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec ./TorBrowser/Tor/PluggableTransports/obfs4proxy
## snowflake configuration
-ClientTransportPlugin snowflake exec ./TorBrowser/Tor/PluggableTransports/snowflake-client -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
+ClientTransportPlugin snowflake exec ./TorBrowser/Tor/PluggableTransports/snowflake-client -url https://snowflake-broker.torproject.net.global.prod.fastly.net/ -front cdn.sstatic.net -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
diff --git a/projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix b/projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
index baa0a6e..c405496 100644
--- a/projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
+++ b/projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
@@ -2,4 +2,4 @@
ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec PluggableTransports/obfs4proxy
## snowflake configuration
-ClientTransportPlugin snowflake exec PluggableTransports/snowflake-client -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
+ClientTransportPlugin snowflake exec PluggableTransports/snowflake-client -url https://snowflake-broker.torproject.net.global.prod.fastly.net/ -front cdn.sstatic.net -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
diff --git a/projects/tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix b/projects/tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
index 42502f4..4f14696 100644
--- a/projects/tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
+++ b/projects/tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
@@ -2,4 +2,4 @@
ClientTransportPlugin meek_lite,obfs2,obfs3,obfs4,scramblesuit exec TorBrowser\Tor\PluggableTransports\obfs4proxy.exe
## snowflake configuration
-ClientTransportPlugin snowflake exec TorBrowser\Tor\PluggableTransports\snowflake-client.exe -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
+ClientTransportPlugin snowflake exec TorBrowser\Tor\PluggableTransports\snowflake-client.exe -url https://snowflake-broker.torproject.net.global.prod.fastly.net/ -front cdn.sstatic.net -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478
diff --git a/projects/tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch b/projects/tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch
index f168eed..f1a636f 100644
--- a/projects/tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch
+++ b/projects/tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch
@@ -71,7 +71,7 @@ index 2405097..bcb6a37 100644
- buffer.append("ClientTransportPlugin meek_lite,obfs3,obfs4 exec ").append(clientPath).append('\n');
+ public TorConfigBuilder transportPlugin(String obfsPath, String snowPath) {
+ buffer.append("ClientTransportPlugin meek_lite,obfs3,obfs4 exec ").append(obfsPath).append('\n');
-+ buffer.append("ClientTransportPlugin snowflake exec ").append(snowPath).append(" -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478\n");
++ buffer.append("ClientTransportPlugin snowflake exec ").append(snowPath).append(" -url https://snowflake-broker.torproject.net.global.prod.fastly.net/ -front cdn.sstatic.net -ice stun:stun.l.google.com:19302,stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478\n");
return this;
}
1
0

[tor-browser-build/master] Merge remote-tracking branch 'cohoshgl/snowflake-fastly'
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit 663a42c51fde05d7f0ee26e01c408a86f863622c
Merge: 3ebc8ce b7bd888
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 19:34:44 2021 +0000
Merge remote-tracking branch 'cohoshgl/snowflake-fastly'
.../tor-browser/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix | 2 +-
projects/tor-browser/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix | 2 +-
.../tor-browser/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix | 2 +-
.../tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
1
0

[Git][tpo/applications/android-components] Pushed new branch android-components-73.0.11-10.0-1
by Matthew Finkel 05 Apr '21
by Matthew Finkel 05 Apr '21
05 Apr '21
Matthew Finkel pushed new branch android-components-73.0.11-10.0-1 at The Tor Project / Applications / android-components
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/android-components/-/tree/an…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/fenix] Pushed new tag tor-browser-87.0.0-10.0-1-build1
by Matthew Finkel 05 Apr '21
by Matthew Finkel 05 Apr '21
05 Apr '21
Matthew Finkel pushed new tag tor-browser-87.0.0-10.0-1-build1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-87.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/fenix] Pushed new branch tor-browser-87.0.0-10.0-1
by Matthew Finkel 05 Apr '21
by Matthew Finkel 05 Apr '21
05 Apr '21
Matthew Finkel pushed new branch tor-browser-87.0.0-10.0-1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-87.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[tor-browser-build/master] Bug 40261: Bump versions of snowflake and webrtc
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit fbd16d2a41cb82851850a5eae79825320d1670f1
Author: Cecylia Bocovich <cohosh(a)torproject.org>
Date: Fri Mar 26 10:03:58 2021 -0400
Bug 40261: Bump versions of snowflake and webrtc
---
projects/pion-dtls/config | 2 +-
projects/pion-interceptor/config | 2 +-
projects/pion-srtp/config | 2 +-
projects/pion-webrtc/config | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/projects/pion-dtls/config b/projects/pion-dtls/config
index b1d125a..16deb46 100644
--- a/projects/pion-dtls/config
+++ b/projects/pion-dtls/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://github.com/pion/dtls
-git_hash: 88c36d669c7c3935ac5dda6820bae22316341a98 #v2.0.4
+git_hash: 4879d3479bc9bb4afdb17011d2f19708e0fa2362 #v2.0.8
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
diff --git a/projects/pion-interceptor/config b/projects/pion-interceptor/config
index b2d1cdd..97175fc 100644
--- a/projects/pion-interceptor/config
+++ b/projects/pion-interceptor/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://github.com/pion/interceptor
-git_hash: edb026a5dc1a8002a2159eca4ed1a2838c2f70b0 #v0.0.9
+git_hash: bc30165ae456af3e8a9ae25e1c3d25dc3a7ccc41 #v0.0.10
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
diff --git a/projects/pion-srtp/config b/projects/pion-srtp/config
index e980b95..d476c08 100644
--- a/projects/pion-srtp/config
+++ b/projects/pion-srtp/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://github.com/pion/srtp
-git_hash: 1c72ec6b73db20dcdf3e0828e20bb01d72d988c4 #v2.0.1
+git_hash: 73e8a03e17f465c872c47c2e8c8a400a7aa78fa2 #v2.0.2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
diff --git a/projects/pion-webrtc/config b/projects/pion-webrtc/config
index e63b6fe..8678a42 100644
--- a/projects/pion-webrtc/config
+++ b/projects/pion-webrtc/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://github.com/pion/webrtc
-git_hash: a54b74cdb736d07a6014da939fd0bac6d5fc4137 #v3.0.0
+git_hash: 545613dcdeb5dedb01cce94175f40bcbe045df2e #v3.0.15
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
1
0

[tor-browser-build/master] Merge remote-tracking branch 'cohoshgl/snowflake_update'
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit 3ebc8ce447ec71318fd6b0b0cfa1d50aed283795
Merge: 7d46598 fbd16d2
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 18:11:15 2021 +0000
Merge remote-tracking branch 'cohoshgl/snowflake_update'
projects/pion-dtls/config | 2 +-
projects/pion-interceptor/config | 2 +-
projects/pion-srtp/config | 2 +-
projects/pion-webrtc/config | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
1
0

[tor-browser-build/master] Bug 40264: Update domain front for Moat
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit 7d4659844d906235abf635a52b24a25af65939c5
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 17:56:57 2021 +0000
Bug 40264: Update domain front for Moat
---
projects/tor-launcher/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index 0c9698a..5413e9a 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 0.2.26
+version: 0.2.27
git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
1
0

05 Apr '21
commit 689b3b9bb90c561d1854e14c11205aa3a56484c0
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 17:17:37 2021 +0000
Release preparations for 0.2.27
Translations update and version bump
---
src/chrome/locale/bn-BD/torlauncher.properties | 24 ++---
src/chrome/locale/el/network-settings.dtd | 4 +-
src/chrome/locale/es-ES/network-settings.dtd | 10 +--
src/chrome/locale/et/network-settings.dtd | 28 +++---
src/chrome/locale/et/torlauncher.properties | 2 +-
src/chrome/locale/fi/network-settings.dtd | 14 +--
src/chrome/locale/fi/torlauncher.properties | 2 +-
src/chrome/locale/fr/network-settings.dtd | 4 +-
src/chrome/locale/fr/torlauncher.properties | 2 +-
src/chrome/locale/gl/network-settings.dtd | 86 +++++++++---------
src/chrome/locale/gl/torlauncher.properties | 92 +++++++++----------
src/chrome/locale/hi-IN/network-settings.dtd | 6 +-
src/chrome/locale/hy-AM/network-settings.dtd | 104 ++++++++++-----------
src/chrome/locale/hy-AM/torlauncher.properties | 30 +++----
src/chrome/locale/id/network-settings.dtd | 16 ++--
src/chrome/locale/id/torlauncher.properties | 2 +-
src/chrome/locale/ja/network-settings.dtd | 32 +++----
src/chrome/locale/ja/torlauncher.properties | 22 ++---
src/chrome/locale/ka/network-settings.dtd | 8 +-
src/chrome/locale/ko/network-settings.dtd | 16 ++--
src/chrome/locale/ko/torlauncher.properties | 24 ++---
src/chrome/locale/mr/network-settings.dtd | 4 +-
src/chrome/locale/my/network-settings.dtd | 110 +++++++++++------------
src/chrome/locale/my/torlauncher.properties | 120 ++++++++++++-------------
src/chrome/locale/pt-BR/network-settings.dtd | 4 +-
src/chrome/locale/pt-BR/torlauncher.properties | 2 +-
src/chrome/locale/sq/network-settings.dtd | 2 +-
src/chrome/locale/sq/torlauncher.properties | 8 +-
src/chrome/locale/sv-SE/torlauncher.properties | 2 +-
src/chrome/locale/sw/network-settings.dtd | 86 +++++++++---------
src/chrome/locale/sw/torlauncher.properties | 8 +-
src/chrome/locale/tr/network-settings.dtd | 16 ++--
src/chrome/locale/tr/torlauncher.properties | 14 +--
src/chrome/locale/uk/network-settings.dtd | 30 +++----
src/chrome/locale/uk/torlauncher.properties | 2 +-
src/chrome/locale/zh-TW/torlauncher.properties | 2 +-
src/install.rdf | 2 +-
37 files changed, 470 insertions(+), 470 deletions(-)
diff --git a/src/chrome/locale/bn-BD/torlauncher.properties b/src/chrome/locale/bn-BD/torlauncher.properties
index 9b92f6d..ad9a6ca 100644
--- a/src/chrome/locale/bn-BD/torlauncher.properties
+++ b/src/chrome/locale/bn-BD/torlauncher.properties
@@ -1,23 +1,23 @@
### Copyright (c) 2020, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=àŠàа àŠ²àŠà§àŠàŠŸàŠ°
+torlauncher.error_title=Tor àŠ²àŠà§àŠàŠŸàŠ°
-torlauncher.tor_exited_during_startup=àŠàаà§àŠ àŠªà§àŠ°àŠŸàŠ°àŠ®à§àŠàŠàŠŸàŠ²à§ exitedी àŠàŠàŠ¿ àŠàŠªàŠšàŠŸàŠ° torrc àŠ«àŠŸàŠàвà§àа àŠ€à§àаà§àŠàŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§, àŠàа àŠ¬àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠžàŠ¿àŠžà§àŠà§àŠ®à§ àŠ
àŠšà§àН àŠªà§àаà§àŠà§àŠ°àŠŸàŠ®à§àа àŠàŠàŠàŠ¿ àŠ¬àŠŸàŠ àŠ¬àŠŸ àŠ€à§àаà§àŠàŠ¿àŠ° àŠ¹àŠŸàŠ°à§àŠ¡àŠàŠ¯àŠŒà§àŠ¯àŠŸàŠ°àŠà§àŠ²àŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§ àŠ¹àŠ€à§ àŠªàŠŸàŠ°à§à¥€ àŠ¯àŠ€àŠà§àŠ·àŠš àŠšàŠŸ àŠàŠªàŠšàŠ¿ àŠ
àŠšà§àŠ€àŠ°à§àŠšàŠ¿àŠ¹àŠ¿àŠ€ àŠžàŠ®àŠžà§àŠ¯àŠŸàŠàŠ¿ àŠžàŠ®àŠŸàŠ§àŠŸàŠš àŠàаà§àŠš àŠàŠ¬àŠ àŠàа àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš, àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿ àŠ¶à§àŠ°à§ àŠ¹àŠ¬à§ àŠšàŠŸà¥€
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=àŠàа àŠ°àŠ¿àŠžà§àŠàŠŸàŠ°à§àŠ àŠàŠ°àŠ²à§ àŠàŠªàŠšàŠŸàŠ° àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠà§àŠ¯àŠŸàŠ¬ àŠ¬àŠšà§àЧ àŠ¹àŠ¬à§ àŠšàŠŸà¥€
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=àŠàаà§àŠ àŠšàŠ¿àŠ¯àŠŒàŠšà§àŠ€à§àŠ°àŠ£ àŠšàŠ¿àŠ€à§ àŠ¬à§àŠ¯àŠ°à§àŠ¥ àŠ¹àŠ¯àŠŒà§àŠà§
+torlauncher.tor_exited_during_startup=Tor àŠàŠŸàŠ²à§ àŠ¹àŠàŠ¯àŠŒàŠŸàŠ° àŠžàŠ®àŠ¯àŠŒàŠ àŠ¬à§àŠ°àŠ¿àŠ¯àŠŒà§ àŠàŠ¿àŠ¯àŠŒà§àŠà§à¥€ àŠàŠàŠ¿ àŠàŠªàŠšàŠŸàŠ° torrc àŠ«àŠŸàŠàвà§àа àŠ€à§àаà§àŠàŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§, Tor àŠ
àŠ¥àŠ¬àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠžàŠ¿àŠžà§àŠà§àŠ®à§ àŠ
àŠšà§àН àŠªà§àаà§àŠà§àŠ°àŠŸàŠ®à§àа àŠàŠàŠàŠ¿ àŠ¬àŠŸàŠ àŠ¬àŠŸ àŠ€à§àаà§àŠàŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§ àŠ
àŠ¥àŠ¬àŠŸ àŠ€à§àаà§àŠàŠ¿àŠªà§àаà§àŠ£ àŠ¹àŠŸàŠ°à§àŠ¡àŠàŠ¯àŠŒà§àŠ¯àŠŸàŠ°à§àа àŠàŠŸàŠ°àŠ£à§ àŠ¹àŠ€à§ àŠªàŠŸàŠ°à§à¥€ àŠ¯àŠ€àŠà§àŠ·àŠš àŠšàŠŸ àŠàŠªàŠšàŠ¿ àŠ
àŠšà§àŠ€àŠ°à§àŠšàŠ¿àŠ¹àŠ¿àŠ€ àŠžàŠ®àŠžà§àŠ¯àŠŸàŠàŠ¿ àŠžàŠ®àŠŸàŠ§àŠŸàŠš àŠàаà§àŠš àŠàŠ¬àŠ Tor àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš, Tor àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿ àŠàŠŸàŠ²à§ àŠ¹àŠ¬à§ àŠšàŠŸà¥€
+torlauncher.tor_exited=Tor àŠ
àŠªà§àŠ°àŠ€à§àŠ¯àŠŸàŠ¶àŠ¿àŠ€àŠàŠŸàŠ¬à§ àŠ¬à§àŠ°àŠ¿àŠ¯àŠŒà§ àŠàŠ¿àŠ¯àŠŒà§àŠà§à¥€ àŠàŠàŠ¿ àŠ¹àŠ¯àŠŒàŠ€à§ Tor àŠàа àŠšàŠ¿àŠàŠžà§àЬ àŠ
àŠ¥àŠ¬àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠžàŠ¿àŠžà§àŠà§àŠ®à§àа àŠ
àŠšà§àН àŠà§àŠšà§ àŠªà§àаà§àŠà§àŠ°àŠŸàŠ®à§àа àŠà§àŠšà§ àŠ€à§àаà§àŠàŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§ àŠ
àŠ¥àŠ¬àŠŸ àŠ€à§àаà§àŠàŠ¿àŠªà§àаà§àŠ£ àŠ¹àŠŸàŠ°à§àŠ¡àŠàŠ¯àŠŒà§àŠ¯àŠŸàŠ°à§àа àŠàŠŸàŠ°àŠ£à§ àŠ¹àŠ¯àŠŒà§àŠà§à¥€ àŠ¯àŠ€àŠà§àŠ·àŠ£ àŠšàŠŸ àŠàŠªàŠšàŠ¿ Tor àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš, Tor àŠà§àŠšà§ àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠà§ àŠ¯à§àŠ€à§ àŠªàŠŸàŠ°àŠ¬à§ àŠšàŠŸà¥€ àŠ¯àŠŠàŠ¿ àŠžàŠ®àŠžà§àŠ¯àŠŸàŠàŠ¿ àŠ¥à§àŠà§ àŠ¯àŠŸàŠ¯àŠŒ àŠ€àŠ¬à§ àŠŠàŠ¯àŠŒàŠŸ àŠàŠ°à§ àŠàŠªàŠšàŠŸàŠ° Tor àŠ²àŠà§àа àŠàŠàŠàŠ¿ àŠ
àŠšà§àŠ²àŠ¿àŠªàŠ¿ àŠžàŠ¹àŠ¯àŠŒàŠ€àŠŸ àŠŠàŠ²à§àа àŠàŠŸàŠà§ àŠªàŠŸàŠ àŠ¿àŠ¯àŠŒà§ àŠŠàŠ¿àŠšà¥€
+torlauncher.tor_exited2=Tor àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàŠ°àŠ²à§ àŠàŠªàŠšàŠŸàŠ° àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠà§àŠ¯àŠŸàŠ¬àŠà§àŠ²à§ àŠ¬àŠšà§àЧ àŠ¹àŠ¬à§ àŠšàŠŸà¥€
+torlauncher.tor_controlconn_failed=Tor àŠšàŠ¿àŠ¯àŠŒàŠšà§àŠ€à§àŠ°àŠ£ àŠªà§àаà§àŠà§àа àŠžàŠŸàŠ¥à§ àŠ¯à§àŠàŠŸàŠ¯à§àŠ àŠàŠ°àŠŸ àŠ¯àŠŸàŠ¯àŠŒ àŠšàŠ¿à¥€
+torlauncher.tor_failed_to_start=Tor àŠàŠŸàŠ²à§ àŠ¹àŠ€à§ àŠ¬à§àŠ¯àŠ°à§àŠ¥ àŠ¹àŠ¯àŠŒà§àŠà§à¥€
+torlauncher.tor_control_failed=Tor àŠàа àŠšàŠ¿àŠ¯àŠŒàŠšà§àŠ€à§àŠ°àŠ£ àŠšà§àŠàŠ¯àŠŒàŠŸ àŠžàŠ®à§àŠàЬ àŠ¹àŠ¯àŠŒ àŠšàŠ¿à¥€
torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
torlauncher.tor_bootstrap_failed_details=%1$S àŠ¬à§àŠ¯àŠ°à§àŠ¥ (%2$S)ी
torlauncher.unable_to_start_tor=àŠàа àŠ¶à§àŠ°à§ àŠàŠ°àŠ€à§ àŠ
àŠà§àŠ·àŠ® %S
-torlauncher.tor_missing=àŠàаà§àŠ àŠàŠà§àŠžàŠ¿àŠàŠ¿àŠàŠà§àŠ¬àŠ² àŠ®àŠ¿àŠž àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà¥€
+torlauncher.tor_missing=Tor àŠàŠà§àŠžàŠ¿àŠàŠ¿àŠàŠà§àŠ¬àŠ²àŠàŠ¿ àŠªàŠŸàŠàŠ¯àŠŒàŠŸ àŠ¯àŠŸàŠà§àŠà§ àŠšàŠŸà¥€
torlauncher.torrc_missing=Torrc àŠ«àŠŸàŠàвàŠàŠ¿ àŠ
àŠšà§àŠªàŠžà§àŠ¥àŠ¿àŠ€ àŠàŠ¬àŠ àŠ€à§àŠ°àŠ¿ àŠàŠ°àŠŸ àŠ¯àŠŸàŠ¯àŠŒàŠšàŠ¿à¥€
torlauncher.datadir_missing=àŠàа àŠ¡à§àŠàŠŸ àŠ¡àŠ¿àŠ°à§àŠà§àŠàŠ°àŠ¿àŠàŠ¿ àŠ¬àŠ¿àŠŠà§àŠ¯àŠ®àŠŸàŠš àŠšàŠ¯àŠŒ àŠàŠ¬àŠ àŠ€à§àŠ°àŠ¿ àŠàŠ°àŠŸ àŠ¯àŠŸàŠ¬à§ àŠšàŠŸà¥€
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
-torlauncher.password_hash_missing=àŠ¹à§àŠ¯àŠŸàŠ¶àŠ¡ àŠªàŠŸàŠžàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ¡ àŠªà§àŠ€à§ àŠ¬à§àŠ¯àŠ°à§àŠ¥à¥€
+torlauncher.onionauthdir_missing=Tor àŠ¯àŠŸàŠàŠŸàŠàŠàŠ°àŠ£ àŠ¡àŠ¿àŠ°à§àŠà§àŠàŠ°àŠ¿àŠàŠ¿ àŠšà§àŠ àŠàŠ¬àŠ àŠžà§àŠàŠ¿ àŠ€à§àŠ°àŠ¿ àŠàŠ°àŠŸàŠ àŠ¯àŠŸàŠ¯àŠŒ àŠšàŠ¿à¥€
+torlauncher.password_hash_missing=àŠ¹à§àŠ¯àŠŸàŠ¶ àŠàŠ°àŠŸ àŠªàŠŸàŠžàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ¡ àŠªàŠŸàŠàŠ¯àŠŒàŠŸ àŠ¯àŠŸàŠ¯àŠŒ àŠšàŠ¿à¥€
torlauncher.failed_to_get_settings=àŠàа àŠžà§àŠàŠ¿àŠàŠž àŠªà§àŠšàŠ°à§àŠŠà§àŠ§àŠŸàŠ° àŠàŠ°àŠ€à§ àŠ
àŠà§àŠ·àŠ®à¥€ %S
torlauncher.failed_to_save_settings=àŠàа àŠžà§àŠàŠ¿àŠàŠž àŠžàŠàаàŠà§àŠ·àŠ£ àŠàŠ°àŠ€à§ àŠ
àŠà§àŠ·àŠ® %S
@@ -42,8 +42,8 @@ torlauncher.unable_to_get_bridge=BridgeDB àŠ¥à§àŠà§ àŠàŠàŠàŠ¿ àŠ¬à§àŠ°àŠ¿
torlauncher.no_meek=àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿ meek àŠàа àŠàŠšà§àН àŠàŠšàŠ«àŠ¿àŠàŠŸàŠ° àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒ àŠšàŠ¿, àŠ¯àŠŸ àŠ¬à§àŠ°àŠ¿àŠ àŠªà§àŠ°àŠŸàŠªà§àŠ€ àŠàŠ°àŠŸàŠ° àŠªà§àŠ°àŠ¯àŠŒà§àŠàŠš àŠ¹àŠ¯àŠŒà¥€
torlauncher.no_bridges_available=àŠàŠ àŠžàŠ®àŠ¯àŠŒà§ àŠà§àŠš àŠ¬à§àŠ°àŠ¿àŠ àŠšà§àŠà¥€ àŠŠà§àŠàŠàŠ¿àŠ€à¥€
-torlauncher.connect=àŠžàŠàНà§àŠ àŠàŠ°àŠŸ
-torlauncher.restart_tor=àŠàаà§àŠ àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš
+torlauncher.connect=àŠžàŠàНà§àŠ àŠàаà§àŠš
+torlauncher.restart_tor=Tor àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš
torlauncher.quit=àŠ
àŠ¬à§àŠ¯àŠŸàŠ¹àŠ€àŠ¿àŠªà§àŠ°àŠŸàŠªà§àŠ€
torlauncher.quit_win=àŠ¬à§àŠ°àŠ¿à§à§ àŠ¯àŠŸàŠš
torlauncher.done=àŠžàŠ®àŠŸàŠªà§àŠ€
diff --git a/src/chrome/locale/el/network-settings.dtd b/src/chrome/locale/el/network-settings.dtd
index e094209..9d9f0c2 100644
--- a/src/chrome/locale/el/network-settings.dtd
+++ b/src/chrome/locale/el/network-settings.dtd
@@ -37,8 +37,8 @@
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "΀ο ÏείÏÎ¿Ï ÏÏοÏÏαÏÎ¯Î±Ï ÎŒÎ¿Ï
Όε αÏήΜει Μα ÏÏ
ΜΎÎοΌαι ÎŒÏΜο Ïε ÏÏ
γκεκÏιΌÎÎœÎµÏ ÎžÏÏÎµÏ ÏÏ
ÏÏήΌαÏοÏ">
-<!ENTITY torsettings.firewall.allowedPorts "ÎÏιÏÏεÏÏÎŒÎµÎœÎµÏ ÎÏÏεÏ">
-<!ENTITY torsettings.useBridges.checkbox "Î Tor είΜαι αÏοκλειÏÎŒÎÎœÎ¿Ï ÏÏη ÏÏÏα ΌοÏ
">
+<!ENTITY torsettings.firewall.allowedPorts "ÎÏιÏÏεÏÏÎŒÎµÎœÎµÏ ÎžÏÏεÏ">
+<!ENTITY torsettings.useBridges.checkbox "΀ο Tor είΜαι αÏοκλειÏÎŒÎΜο ÏÏη ÏÏÏα ΌοÏ
.">
<!ENTITY torsettings.useBridges.default "ÎÏιλÎΟÏε ÎΜα εΜÏαγΌÎΜο bridge">
<!ENTITY torsettings.useBridges.default.placeholder "ÎÏιλÎΟÏε ÎΜα bridge">
<!ENTITY torsettings.useBridges.bridgeDB "ÎιÏηΞείÏε εΜÏÏ bridge αÏÏ Ïο torproject.org">
diff --git a/src/chrome/locale/es-ES/network-settings.dtd b/src/chrome/locale/es-ES/network-settings.dtd
index cbdaba8..5950dca 100644
--- a/src/chrome/locale/es-ES/network-settings.dtd
+++ b/src/chrome/locale/es-ES/network-settings.dtd
@@ -5,7 +5,7 @@
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Idioma del Tor Browser">
-<!ENTITY torlauncher.localePicker.prompt "Por favor, seleccione un idioma.">
+<!ENTITY torlauncher.localePicker.prompt "Elige un idioma.">
<!-- For "first run" wizard: -->
@@ -20,7 +20,7 @@
<!ENTITY torsettings.restartTor "Reiniciar Tor">
<!ENTITY torsettings.reconfigTor "Configurar de nuevo">
-<!ENTITY torsettings.discardSettings.prompt "Has configurado los puentes de red (bridges) de Tor o has introducido los ajustes para proxy (interpuesto) local.  Para realizar una conexión directa a la red Tor, estos ajustes se deben borrar.">
+<!ENTITY torsettings.discardSettings.prompt "Has configurado los puentes de red (bridges) de Tor o has introducido ajustes para proxy local.  Para realizar una conexión directa a la red Tor, estos ajustes se deben borrar.">
<!ENTITY torsettings.discardSettings.proceed "Elimina ajustes y conecta">
<!ENTITY torsettings.optional "Opcional">
@@ -39,7 +39,7 @@
<!ENTITY torsettings.firewall.checkbox "Esta computadora va a través de un cortafuegos(firewall) que sólo permite conexiones a ciertos puertos">
<!ENTITY torsettings.firewall.allowedPorts "Puertos permitidos">
<!ENTITY torsettings.useBridges.checkbox "En mi paÃs se censura a Tor">
-<!ENTITY torsettings.useBridges.default "Seleccionar un puente construido">
+<!ENTITY torsettings.useBridges.default "Seleccionar un puente integrado">
<!ENTITY torsettings.useBridges.default.placeholder "seleccionar un puente">
<!ENTITY torsettings.useBridges.bridgeDB "Solicitar un puente de torproject.org">
<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Introducir los caracteres de la imagen">
@@ -51,8 +51,8 @@
<!ENTITY torsettings.copyLog "Copiar el registro de mensajes(log) de Tor al portapapeles">
-<!ENTITY torsettings.proxyHelpTitle "Ayuda ">
-<!ENTITY torsettings.proxyHelp1 "Es posible que se necesite un proxy local al conectarse a través de una red de una empresa, escuela o universidad. Si no estás seguro de si se necesita o no un proxy, consulta la configuración de Internet en otro navegador o comprueba la configuración de red de tu sistema.">
+<!ENTITY torsettings.proxyHelpTitle "Ayuda con el Proxy">
+<!ENTITY torsettings.proxyHelp1 "PodrÃas necesitar un proxy local si te conectas a través de una red de empresa, escuela o universidad. Si no estás seguro de si se necesita o no un proxy, consulta la configuración de Internet en otro navegador o comprueba la configuración de red de tu sistema.">
<!ENTITY torsettings.bridgeHelpTitle "Ayuda de repetidores puente ('bridge relays')">
<!ENTITY torsettings.bridgeHelp1 "Los puentes son transmisores no listados que dificultan el bloqueo de las conexiones a la red Tor.  Cada tipo de puente utiliza un método diferente para evitar la censura.  Los obfs hacen que tu tráfico parezca ruido aleatorio, y los modestos hacen que tu tráfico parezca que se está conectando a ese servicio en lugar de a Tor.">
diff --git a/src/chrome/locale/et/network-settings.dtd b/src/chrome/locale/et/network-settings.dtd
index 06167d2..e388f32 100644
--- a/src/chrome/locale/et/network-settings.dtd
+++ b/src/chrome/locale/et/network-settings.dtd
@@ -16,7 +16,7 @@
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Ootan et Tor kÀivituks...">
+<!ENTITY torsettings.startingTor "Ootan, et Tor kÀivituks...">
<!ENTITY torsettings.restartTor "TaaskÀivita Tor">
<!ENTITY torsettings.reconfigTor "Seadista uuesti">
@@ -26,9 +26,9 @@
<!ENTITY torsettings.optional "Valikuline">
<!ENTITY torsettings.useProxy.checkbox "Ma kasutan proksit et ÃŒhenduda internetti">
-<!ENTITY torsettings.useProxy.type "Proxy Type">
+<!ENTITY torsettings.useProxy.type "Proksi tÌÌp">
<!ENTITY torsettings.useProxy.type.placeholder "valige proksi tÌÌp">
-<!ENTITY torsettings.useProxy.address "Address">
+<!ENTITY torsettings.useProxy.address "Aadress">
<!ENTITY torsettings.useProxy.address.placeholder "IP aadress või haldaja nimi">
<!ENTITY torsettings.useProxy.port "Port">
<!ENTITY torsettings.useProxy.username "Kasutajanimi">
@@ -37,7 +37,7 @@
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "See arvuti lÀheb lÀbi tulemÌÌri mis lubab ainult Ìhendusi kindlatesse portidesse.">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
+<!ENTITY torsettings.firewall.allowedPorts "Lubatud pordid">
<!ENTITY torsettings.useBridges.checkbox "Tor on minu riigis tsensoreeritud">
<!ENTITY torsettings.useBridges.default "Valige sisseehitatud sild">
<!ENTITY torsettings.useBridges.default.placeholder "valige sild">
@@ -63,21 +63,21 @@
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.torSettings "Tor\'i seaded">
+<!ENTITY torPreferences.torSettingsDescription "Tor\'i brauser suunab Teie andmeliikluse Ìle Tor\'i võrgu, mis koosneb tuhandetest vabatahtlikest Ìle maailma." >
<!ENTITY torPreferences.learnMore "Loe lÀhemalt">
<!ENTITY torPreferences.bridges "Sillad">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.bridgesDescription "Sillad aitavad Teil pÀÀseda Tor\'i võrku kohtades, kus Tor on blokeeritud. Olenevalt Teie asukohast, Ìks sild võib töötada paremini, kui teine.">
<!ENTITY torPreferences.useBridge "Kasuta silda">
<!ENTITY torPreferences.requestNewBridge "Taotle uut sildaâŠ">
<!ENTITY torPreferences.provideBridge "Paku silda">
<!ENTITY torPreferences.advanced "PeenhÀÀlestus">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.advancedDescription "Seadistage, kuidas Tor\'i brauser ÃŒhendub internetiga.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Komaga eraldatud vÀÀrtused">
<!ENTITY torPreferences.requestBridgeDialogTitle "Taotle silda">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "BridgeDBga kontakteerumine. Palun oodake.">
<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Lahenda CAPTCHA, et taotleda silda.">
-<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Lahendus ei ole õige. Palun proovige uuesti.">
+<!ENTITY torPreferences.viewTorLogs "Vaata Tor\'i logisid.">
+<!ENTITY torPreferences.viewLogs "Vaata logisid...">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor\'i logid">
diff --git a/src/chrome/locale/et/torlauncher.properties b/src/chrome/locale/et/torlauncher.properties
index 52b2ef3..28f6ea2 100644
--- a/src/chrome/locale/et/torlauncher.properties
+++ b/src/chrome/locale/et/torlauncher.properties
@@ -37,7 +37,7 @@ torlauncher.request_a_bridge=Taotle SildaâŠ
torlauncher.request_a_new_bridge=Taotle uut SildaâŠ
torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
torlauncher.captcha_prompt=Lahenda CAPTCHA, et taotleda silda.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
+torlauncher.bad_captcha_solution=Lahendus ei ole õige. Palun proovige uuesti.
torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
diff --git a/src/chrome/locale/fi/network-settings.dtd b/src/chrome/locale/fi/network-settings.dtd
index e1e2f04..55f3e81 100644
--- a/src/chrome/locale/fi/network-settings.dtd
+++ b/src/chrome/locale/fi/network-settings.dtd
@@ -1,5 +1,5 @@
<!ENTITY torsettings.dialog.title "Tor-verkkoasetukset">
-<!ENTITY torsettings.wizard.title.default "YhdistÀ Tor'iin">
+<!ENTITY torsettings.wizard.title.default "YhdistÀ Toriin">
<!ENTITY torsettings.wizard.title.configure "Tor-verkkoasetukset">
<!ENTITY torsettings.wizard.title.connecting "Luodaan yhteyttÀ">
@@ -9,7 +9,7 @@
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Paina "YhdistÀ" yhdistÀÀksesi Tor'iin.">
+<!ENTITY torSettings.connectPrompt "Paina "YhdistÀ" yhdistÀÀksesi Toriin.">
<!ENTITY torSettings.configurePrompt "Paina "MÀÀrittele" muokataksesi verkkoasetuksia, jos olet Tor'ia sensuroivassa maassa (kuten Egypti, Kiina, tai Turkki), tai jos yhdistÀt vÀlityspalvelinta vaativasta yksityisestÀ verkosta.">
<!ENTITY torSettings.configure "MÀÀritÀ">
<!ENTITY torSettings.connect "YhdistÀ">
@@ -38,7 +38,7 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "TÀmÀn tietokoneen palomuuri sallii yhteydet vain tiettyjen porttien kautta">
<!ENTITY torsettings.firewall.allowedPorts "Sallitut portit">
-<!ENTITY torsettings.useBridges.checkbox "Maani sensuroi Tor'ia">
+<!ENTITY torsettings.useBridges.checkbox "Maani sensuroi Toria">
<!ENTITY torsettings.useBridges.default "Valitse sisÀÀnrakennettu silta">
<!ENTITY torsettings.useBridges.default.placeholder "valitse silta">
<!ENTITY torsettings.useBridges.bridgeDB "PyydÀ silta osoitteesta torproject.org">
@@ -47,7 +47,7 @@
<!ENTITY torsettings.useBridges.captchaSubmit "LÀhetÀ">
<!ENTITY torsettings.useBridges.custom "Anna tuntemani silta">
<!ENTITY torsettings.useBridges.label "SyötÀ luotettavasta lÀhteestÀ saatu siltatieto">
-<!ENTITY torsettings.useBridges.placeholder "kirjoita osoite:portti">
+<!ENTITY torsettings.useBridges.placeholder "kirjoita osoite:portti (yksi per rivi)">
<!ENTITY torsettings.copyLog "Kopioi Tor-loki leikepöydÀlle">
@@ -55,8 +55,8 @@
<!ENTITY torsettings.proxyHelp1 "Saatat tarvita paikallista vÀlityspalvelinta, kun yhdistÀt yritys-, koulu-, tai yliopistoverkon kautta.  Jos et ole varma vÀlityspalvelimen tarpeesta, katso internetasetuksia muussa selaimessa tai tarkista jÀrjestelmÀsi verkkoasetukset.">
<!ENTITY torsettings.bridgeHelpTitle "SiltavÀlityspalvelinopaste">
-<!ENTITY torsettings.bridgeHelp1 "Sillat ovat listaamattomia releitÀ, jotka tekevÀt Tor-verkkoon yhdistÀmisen estÀmisestÀ vaikeampaa. Jokainen siltatyyppi kÀyttÀÀ eri menetelmÀÀ sensuurin vÀlttÀmiseen.  Obfs-sillat saavat liikenteesi nÀyttÀmÀÀn satunnaiselta datalta, kun taas meek-sillat saavat sen nÀyttÀmÀÀn yhteydeltÀ omiin palveluihinsa Tor'in sijaan.">
-<!ENTITY torsettings.bridgeHelp2 "Riippuen siitÀ, miten jotkin maat estÀvÀt Tor'ia, jotkut sillat toimivat joissain maissa, mutteivÀt toisissa.  Jos et ole varma siltojen toimivuudesta omassa maassasi, kÀy osoitteessa torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelp1 "Sillat ovat listaamattomia reittejÀ, jotka tekevÀt Tor-verkkoon yhdistÀmisen estÀmisestÀ vaikeampaa. Jokainen siltatyyppi kÀyttÀÀ eri menetelmÀÀ sensuurin vÀlttÀmiseen.  Obfs-sillat saavat liikenteesi nÀyttÀmÀÀn satunnaiselta datalta, kun taas meek-sillat saavat sen nÀyttÀmÀÀn yhteydeltÀ omiin palveluihinsa Torin sijaan.">
+<!ENTITY torsettings.bridgeHelp2 "Riippuen siitÀ, miten jotkin maat estÀvÀt Toria, jotkut sillat toimivat joissain maissa, mutteivÀt toisissa.  Jos et ole varma siltojen toimivuudesta omassa maassasi, kÀy osoitteessa torproject.org/about/contact.html#support">
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Odota pieni hetki, kun yhteys TOR-verkostoon luodaan. 
@@ -68,7 +68,7 @@ TÀssÀ saattaa kestÀÀ muutama minuutti.">
<!ENTITY torPreferences.torSettingsDescription "Tor-selain reitittÀÀ liikenteesi Tor-verkon kautta, joka toimii tuhansien ympÀri maailmaa olevien vapaaehtoisten ansiosta." >
<!ENTITY torPreferences.learnMore "Opi lisÀÀ">
<!ENTITY torPreferences.bridges "Sillat">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.bridgesDescription "Sillat auttavat pÀÀsemÀÀn Tor-verkkoon siellÀ, missÀ Tor on estetty. Siltojen toimivuudessa voi olla eroja riippuen siitÀ, missÀ olet.">
<!ENTITY torPreferences.useBridge "KÀytÀ siltaa">
<!ENTITY torPreferences.requestNewBridge "PyydÀ uusi silta...">
<!ENTITY torPreferences.provideBridge "Tarjoa silta">
diff --git a/src/chrome/locale/fi/torlauncher.properties b/src/chrome/locale/fi/torlauncher.properties
index 151554a..b2aae83 100644
--- a/src/chrome/locale/fi/torlauncher.properties
+++ b/src/chrome/locale/fi/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=Tor-sovelluksen kÀynnistys epÀonnistui.\n\n%S
torlauncher.tor_missing=Suoritettava Tor-tiedosto puuttuu.
torlauncher.torrc_missing=Torrc tiedostoa ei löydetty ja sitÀ ei voitu luoda uudelleen.
torlauncher.datadir_missing=Tor tietohakemistoa ei ole olemassa, ja sitÀ ei voida luoda uudellen.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
+torlauncher.onionauthdir_missing=Tor onion -todennushakemistoa ei ole olemassa, eikÀ sitÀ voitu luoda uudelleen.
torlauncher.password_hash_missing=TiivistettyÀ salasanaa ei löytynyt.
torlauncher.failed_to_get_settings=Tor-asetusten noutaminen epÀonnistui.\n\n%S
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index 642634f..ac83978 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -80,6 +80,6 @@ Selon votre position géographique, un pont pourrait fonctionner mieux quâun a
<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Connexion à BridgeDB. Veuillez patienter.">
<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Résolvez le captcha pour demander un pont.">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "La solution est erronée. Veuillez réessayer.">
-<!ENTITY torPreferences.viewTorLogs "Visualiser les journaux Tor.">
+<!ENTITY torPreferences.viewTorLogs "Visualiser les journaux de Tor.">
<!ENTITY torPreferences.viewLogs "Visualiser les journauxâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Journaux Tor">
+<!ENTITY torPreferences.torLogsDialogTitle "Journaux de Tor">
diff --git a/src/chrome/locale/fr/torlauncher.properties b/src/chrome/locale/fr/torlauncher.properties
index f5c96c7..9a4ac9c 100644
--- a/src/chrome/locale/fr/torlauncher.properties
+++ b/src/chrome/locale/fr/torlauncher.properties
@@ -78,7 +78,7 @@ torlauncher.bootstrapStatus.ap_conn_done=Construction des circuits : nous somme
torlauncher.bootstrapStatus.ap_handshake=Construction des circuits : négociation avec un relais Tor
torlauncher.bootstrapStatus.ap_handshake_done=Construction des circuits : la négociation avec un relais Tor est terminée
torlauncher.bootstrapStatus.circuit_create=Construction des circuits : mise en place dâun circuit Tor
-torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Torâ!
+torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Tor
torlauncher.bootstrapWarning.done=terminé
torlauncher.bootstrapWarning.connectrefused=connexion refusée
diff --git a/src/chrome/locale/gl/network-settings.dtd b/src/chrome/locale/gl/network-settings.dtd
index adac189..6c08beb 100644
--- a/src/chrome/locale/gl/network-settings.dtd
+++ b/src/chrome/locale/gl/network-settings.dtd
@@ -1,33 +1,33 @@
<!ENTITY torsettings.dialog.title "Axustes da rede Tor">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
+<!ENTITY torsettings.wizard.title.default "Conectar con Tor">
<!ENTITY torsettings.wizard.title.configure "Axustes da rede Tor">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
+<!ENTITY torsettings.wizard.title.connecting "Estabelecendo unha conexión">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "Idioma do navegador Tor">
+<!ENTITY torlauncher.localePicker.prompt "Seleccione un idioma.">
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Click âConnectâ to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click âConfigureâ to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
+<!ENTITY torSettings.connectPrompt "Prema sobre «Conectar» para conectar con Tor.">
+<!ENTITY torSettings.configurePrompt "Prema sobre «Configurar» para axustar a configuración da rede se está nun paÃs que censure Tor (como Exipto, China, TurquÃa) ou se está a conectar desde unha rede privada que requira un servidor intermedio. ">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connect "Conectar">
<!-- Other: -->
<!ENTITY torsettings.startingTor "Ã espera de que Tor comece ...">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!ENTITY torsettings.restartTor "Reiniciar Tor">
+<!ENTITY torsettings.reconfigTor "Reconfigurar">
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
+<!ENTITY torsettings.discardSettings.prompt "Ten configuradas pontes Tor ou introduciu os axustes dun servidor intermedio local.   Para facer unha conexión directa coa rede Tor, esta configuración debe ser retirada.">
+<!ENTITY torsettings.discardSettings.proceed "Retirar a configuración e conectar">
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Emprego un proxy para conectarme a Internet.">
<!ENTITY torsettings.useProxy.type "Tipo de Proxy">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!ENTITY torsettings.useProxy.type.placeholder "seleccione un tipo de servidor intermedio">
<!ENTITY torsettings.useProxy.address "Enderezo">
<!ENTITY torsettings.useProxy.address.placeholder "Enderezo IP ou nome da máquina">
<!ENTITY torsettings.useProxy.port "Porto">
@@ -37,47 +37,47 @@
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Este computador pasa por un firewall que só permite conexións a certos portos">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
+<!ENTITY torsettings.firewall.allowedPorts "Portos permitidos">
+<!ENTITY torsettings.useBridges.checkbox "Tor está censurado no meu paÃs">
+<!ENTITY torsettings.useBridges.default "Seleccione unha ponte incorporada">
+<!ENTITY torsettings.useBridges.default.placeholder "Seleccione unha ponte">
+<!ENTITY torsettings.useBridges.bridgeDB "Solicite unha ponte de torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Escriba os caracteres da imaxe">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Obter un novo reto">
<!ENTITY torsettings.useBridges.captchaSubmit "Enviar">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
+<!ENTITY torsettings.useBridges.custom "Fornecer unha ponte coñecida">
+<!ENTITY torsettings.useBridges.label "Engadir información dunha ponte dende unha fonte fiábel">
+<!ENTITY torsettings.useBridges.placeholder "escribir enderezo:porto (un por liña)">
<!ENTITY torsettings.copyLog "Copia o rexistro do Tor ao portapapeis">
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
+<!ENTITY torsettings.proxyHelpTitle "Axuda do proxy">
+<!ENTITY torsettings.proxyHelp1 "Un proxy local pode ser necesario cando se conecte a través da rede dunha empresa, escola ou universidade. Se non está seguro cando un servidor intermedio é necesario, mire a configuración da Internet noutro navegador ou comprobe a configuración de rede do seu sistema.">
<!ENTITY torsettings.bridgeHelpTitle "Axuda do Repetidor Ponte">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelp1 "As pontes son reenviadores que fan máis difÃcil bloquear as conexións á rede Tor. Cada tipo de ponte utiliza un método diferente para evitar a censura. As obfs por exemplo fan que o seu tráfico pareza un ruÃdo aleatorio, e os meek fan o que o seu tráfico pareza que se estea conectando a ese servizo en lugar de a Tor.">
+<!ENTITY torsettings.bridgeHelp2 "Debido a que certos paÃses tentar bloquear Tor, algunhas pontes funcionan nalgúns paÃses mais non noutros. Se non está seguro de que pontes funcionan no seu paÃs, visite torproject.org/about/contact.html#support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+<!ENTITY torprogress.pleaseWait "Agarde mentres se estabelece unha conexión coa rede Tor.  Pode levar algúns minutos.">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
-<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.torSettings "Configuración do Tor">
+<!ENTITY torPreferences.torSettingsDescription "O navegador Tor enruta o seu tráfico sobre a rede Tor, xestionada por milleiros de voluntarios de todo o mundo." >
+<!ENTITY torPreferences.learnMore "Saber máis">
<!ENTITY torPreferences.bridges "Pontes">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
-<!ENTITY torPreferences.requestNewBridge "Request a New BridgeâŠ">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.bridgesDescription "As pontes axudan a acceder á rede Tor en lugares onde Tor está bloqueado. Dependendo de onde estea vostede, unha ponte pode funcionar mellor ca outra.">
+<!ENTITY torPreferences.useBridge "Utilizar unha ponte">
+<!ENTITY torPreferences.requestNewBridge "Solicitar unha nova ponte...">
+<!ENTITY torPreferences.provideBridge "Fornecer unha ponte">
<!ENTITY torPreferences.advanced "Avanzados">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
-<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
-<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.advancedDescription "Configurar como o navegador Tor se conecta á Internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Valores separados por comas">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Pedir unha ponte">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contactando con BridgeDB. Agarde.">
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Resolva o CAPTCHA para pedir unha ponte.">
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "A solución non é correcta. Ténteo de novo outra vez.">
+<!ENTITY torPreferences.viewTorLogs "Ver os rexistros do Tor">
+<!ENTITY torPreferences.viewLogs "Ver rexistros...">
+<!ENTITY torPreferences.torLogsDialogTitle "Rexistros do Tor">
diff --git a/src/chrome/locale/gl/torlauncher.properties b/src/chrome/locale/gl/torlauncher.properties
index 2328035..63032f8 100644
--- a/src/chrome/locale/gl/torlauncher.properties
+++ b/src/chrome/locale/gl/torlauncher.properties
@@ -3,20 +3,20 @@
torlauncher.error_title=Lanzador do Tor
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
+torlauncher.tor_exited_during_startup=Tor saÃu durante o arranque. Pode deberse a un erro no seu ficheiro torrc, un fallo en Tor ou outro programa do seu sistema, ou a un hadware deficiente. Ata que arranxe o problema de base e reinicie Tor, o navegador Tor non arrancará.
+torlauncher.tor_exited=Tor saÃu inesperadamente. Pode deberse a un erro en Tor en si mesmo, noutro programa do sistema ou nun hardware deficiente. Ata que reinie Tor, o navegador non poderá chegar a ningún sitio web. Se o problema persiste, envÃe unha copia do seu rexistro do Tor ao equipo de asistencia técnica.
+torlauncher.tor_exited2=Ao reiniciar Tor non se pecharán as lapelas do navegador.
torlauncher.tor_controlconn_failed=Non se puido conectar ao porto de control do Tor.
torlauncher.tor_failed_to_start=Non se puido iniciar o Tor.
-torlauncher.tor_control_failed=Failed to take control of Tor.
+torlauncher.tor_control_failed=Fallou a toma de control do Tor.
torlauncher.tor_bootstrap_failed=Tor fallou ao establecer a conexion coa rede Tor.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
+torlauncher.tor_bootstrap_failed_details=%1$S fallou (%2$S).
torlauncher.unable_to_start_tor=Non se puido iniciar o Tor.â\nâ\n%S
torlauncher.tor_missing=Falta o executábel do Tor.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
+torlauncher.torrc_missing=Falta o ficheiro torrc e non pode ser creado
+torlauncher.datadir_missing=O cartafol de datos do Tor non existe e non puido crearse.
+torlauncher.onionauthdir_missing=O cartafol de autenticación do Tor onion non existe e non se puido crear.
torlauncher.password_hash_missing=Non se puido obter o contrasinal cifrado.
torlauncher.failed_to_get_settings=Non se pode recuperar a configuración do Tor.â\nâ\n%S
@@ -26,58 +26,58 @@ torlauncher.ensure_tor_is_running=Asegúrese de que o Tor está en execución.
torlauncher.error_proxy_addr_missing=Debe especificar un enderezo IP ou un nome de máquina e un número de porto para configurar o Tor para que use un proxy para acceder a Internet.
torlauncher.error_proxy_type_missing=Debe seleccionar o tipo de proxy.
torlauncher.error_bridges_missing=Debe especificar unha ou máis pontes.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
+torlauncher.error_default_bridges_type_missing=Debe seleccionar un tipo de transporte para as pontes fornecidas
+torlauncher.error_bridgedb_bridges_missing=Pida unha ponte, se fai o favor.
+torlauncher.error_bridge_bad_default_type=Non temos dispoñÃbeis pontes que teñan o tipo de transporte %S. Axuste a súa configuración.
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
+torlauncher.bridge_suffix.meek-amazon=(funciona na China)
+torlauncher.bridge_suffix.meek-azure=(funciona na China)
-torlauncher.request_a_bridge=Request a BridgeâŠ
-torlauncher.request_a_new_bridge=Request a New BridgeâŠ
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
+torlauncher.request_a_bridge=Solicitar unha ponte...
+torlauncher.request_a_new_bridge=Solicitar unha nova ponte...
+torlauncher.contacting_bridgedb=Contactando con BridgeDB. Agarde.
+torlauncher.captcha_prompt=Resolva o CAPTCHA para pedir unha ponte.
+torlauncher.bad_captcha_solution=A solución non é correcta. Ténteo de novo outra vez.
+torlauncher.unable_to_get_bridge=Non foi posÃbel obter unha ponte de BridgeDB\n\n%S
+torlauncher.no_meek=Este navegador non está configurado para meek, que serÃa necesaro para obter pontes.
+torlauncher.no_bridges_available=SentÃndoo moito, non hai pontes dispoñÃbeis neste momento.
torlauncher.connect=Conectar
-torlauncher.restart_tor=Restart Tor
+torlauncher.restart_tor=Reiniciar Tor
torlauncher.quit=Abandoar
torlauncher.quit_win=SaÃr
torlauncher.done=Feito
torlauncher.forAssistance=Para obter asistencia, póñase en contacto con %S
-torlauncher.forAssistance2=For assistance, visit %S
+torlauncher.forAssistance2=Para asistencia, visite %S
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
+torlauncher.copiedNLogMessages=Copia completa. %S As mensaxes de rexistro do Tor están lista para seren pegadas nun editor de texto ou nunha mensaxe de correo.
torlauncher.bootstrapStatus.starting=Iniciando
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
+torlauncher.bootstrapStatus.conn_pt=Conectando cunha ponte
+torlauncher.bootstrapStatus.conn_done_pt=Conectado coa ponte
+torlauncher.bootstrapStatus.conn_proxy=Conectando cun servidor intermedio
+torlauncher.bootstrapStatus.conn_done_proxy=Conectado co proxy
+torlauncher.bootstrapStatus.conn=Conectando cun reenviador do Tor
+torlauncher.bootstrapStatus.conn_done=Conectado cun relay do Tor
+torlauncher.bootstrapStatus.handshake=Negociando cun reenviador do Tor
+torlauncher.bootstrapStatus.handshake_done=Finalizou a negociación cun reenviador do Tor
torlauncher.bootstrapStatus.onehop_create=Estabelecendo unha conexión cifrada co directorio
torlauncher.bootstrapStatus.requesting_status=Recuperando o estado da rede
torlauncher.bootstrapStatus.loading_status=Cargando o estado da rede
torlauncher.bootstrapStatus.loading_keys=Cargando os certificados de autoridade
torlauncher.bootstrapStatus.requesting_descriptors=Solicitando a información do repetidor
torlauncher.bootstrapStatus.loading_descriptors=Cargando información do repetidor
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
+torlauncher.bootstrapStatus.enough_dirinfo=Finalizou a carga de información do relay
+torlauncher.bootstrapStatus.ap_conn_pt=Armando circuÃtos: Conexión coa ponte
+torlauncher.bootstrapStatus.ap_conn_done_pt=Armando circuÃtos: Conectado coa ponte
+torlauncher.bootstrapStatus.ap_conn_proxy=Armando circuÃtos: Conexión co servidor intermedio
+torlauncher.bootstrapStatus.ap_conn_done_proxy=Armando circuÃtos: Conectado co servidor intermedio
+torlauncher.bootstrapStatus.ap_conn=Armando circuÃtos: Conexión cun reenviador do Tor
+torlauncher.bootstrapStatus.ap_conn_done=Armando circuÃtos: Conectado cun reenviador do Tor
+torlauncher.bootstrapStatus.ap_handshake=Armando circuÃtos: Negociando cun reenviador do Tor
+torlauncher.bootstrapStatus.ap_handshake_done=Armando circuÃtos: Finalizou a negociación cun reenviador do Tor
+torlauncher.bootstrapStatus.circuit_create=Armando circuÃtos: Estabelecendo un circuÃto do Tor
torlauncher.bootstrapStatus.done=Conectado á rede Tor!
torlauncher.bootstrapWarning.done=feito
@@ -88,8 +88,8 @@ torlauncher.bootstrapWarning.identity=a identidade non coincide
torlauncher.bootstrapWarning.timeout=a conexión esgotou o tempo de agarda
torlauncher.bootstrapWarning.noroute=non hai unha ruta ao servidor
torlauncher.bootstrapWarning.ioerror=produciuse un erro de lectura/escritura
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=falta un transporte enchufábel
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=Perdeuse a conexión co servidor.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Non se puido conectar co servidor.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Non se puido conectar co servidor intermedio.
diff --git a/src/chrome/locale/hi-IN/network-settings.dtd b/src/chrome/locale/hi-IN/network-settings.dtd
index 27e53bf..4266275 100644
--- a/src/chrome/locale/hi-IN/network-settings.dtd
+++ b/src/chrome/locale/hi-IN/network-settings.dtd
@@ -30,8 +30,8 @@
<!ENTITY torsettings.useProxy.type.placeholder "à€ªà¥à€°à¥à€à¥à€žà¥ à€ªà¥à€°à€à€Ÿà€° à€à€Ÿ à€à€¯à€š à€à€°à¥à€">
<!ENTITY torsettings.useProxy.address "à€ªà€€à€Ÿ">
<!ENTITY torsettings.useProxy.address.placeholder "IP à€ªà€€à€Ÿ à€¯à€Ÿ à€®à¥à€à€¬à€Ÿà€šà€šà€Ÿà€®">
-<!ENTITY torsettings.useProxy.port "Port">
-<!ENTITY torsettings.useProxy.username "Username">
+<!ENTITY torsettings.useProxy.port "à€ªà¥à€°à¥à€">
+<!ENTITY torsettings.useProxy.username "à€¯à¥à€à€Œà€°à€šà€Ÿà€®">
<!ENTITY torsettings.useProxy.password "à€ªà€Ÿà€žà€µà€°à¥à€¡">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
@@ -64,7 +64,7 @@
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "à€à¥">
<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.torSettingsDescription "à€à¥à€° à€¬à¥à€°à€Ÿà€à€à€° à€à€ªà€à¥ à€à€à€à€°à€šà¥à€ à€¯à€Ÿà€€à€Ÿà€¯à€Ÿà€€ à€à¥ à€à¥à€° à€šà¥à€à€µà€°à¥à€ à€à¥ à€Šà¥à€µà€Ÿà€°à€Ÿ à€à¥à€à€€à€Ÿ à€¹à¥ à€à¥ à€à€¿ à€¹à€à€Ÿà€°à¥à€ à€žà¥à€µà€¯à€à€žà¥à€µà€à¥à€ à€à¥ à€Šà¥à€µà€Ÿà€°à€Ÿ à€à€²à€Ÿà€¯à€Ÿ à€à€Ÿà€€à€Ÿ à€¹à¥à¥€" >
<!ENTITY torPreferences.learnMore "à€à€° à€
à€§à€¿à€ à€à€Ÿà€šà¥à€">
<!ENTITY torPreferences.bridges "à€ªà¥à€²">
<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
diff --git a/src/chrome/locale/hy-AM/network-settings.dtd b/src/chrome/locale/hy-AM/network-settings.dtd
index 0a20cc6..1eea1fd 100644
--- a/src/chrome/locale/hy-AM/network-settings.dtd
+++ b/src/chrome/locale/hy-AM/network-settings.dtd
@@ -1,57 +1,57 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
+<!ENTITY torsettings.dialog.title "Tor ÖÕ¡Õ¶ÖÕ« Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥Ö">
+<!ENTITY torsettings.wizard.title.default "ÕÕ«Õ¡Õ¶Õ¡Õ¬ Tor-Õ«Õ¶">
+<!ENTITY torsettings.wizard.title.configure "Tor ÖÕ¡Õ¶ÖÕ« Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥Ö">
+<!ENTITY torsettings.wizard.title.connecting "ÕÕ«ÕŽÕ¶ÕŸÕžÖÕŽ Õ§ ÕŽÕ«Õ¡ÖÕžÖÕŽ">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "Tor Õ€Õ«Õ¿Õ¡ÖÕ¯Õ«Õ¹Õ« Õ¬Õ¥ÕŠÕžÖÕ¶">
+<!ENTITY torlauncher.localePicker.prompt "ԜնՀÖÕžÖÕŽ Õ¥Õ¶Ö ÕšÕ¶Õ¿ÖÕ¥Õ¬ Õ¬Õ¥ÕŠÕžÖÕ¶Ö">
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Click âConnectâ to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click âConfigureâ to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
+<!ENTITY torSettings.connectPrompt "ÕÕ¥Õ²ÕŽÕ¥Ö Â«ÕÕ«Õ¡Öնել» Tor-Õ«Õ¶ ÕŽÕ«Õ¡Õ¶Õ¡Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡ÖÖ">
+<!ENTITY torSettings.configurePrompt "ÕÕ¥Õ²ÕŽÕ¥Ö Â«Ô¿Õ¡ÖÕ£Õ¡ÕŸÕžÖել» ÖÕ¡Õ¶ÖÕ« Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥ÖÕš Õ°Õ¡ÖÕŽÕ¡ÖÕ¥ÖÕ¶Õ¥Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡ÖÕ Õ¥Õ©Õ¥ Õ€ÕžÖÖ Õ£Õ¿Õ¶ÕŸÕžÖÕŽ Õ¥Ö Tor-Õš Õ£ÖÕ¡ÖÕ¶Õ¶ÕžÕ² Õ¥ÖÕ¯ÖÕžÖÕŽ (Õ«Õ¶Õ¹ÕºÕ«ÕœÕ«Ö Õ¥Õ¶Õ ÔµÕ£Õ«ÕºÕ¿ÕžÕœÕš, Õինա՜տան՚, Ô¹ÕžÖÖÖÕ«Õ¡Õ¶) Õ¯Õ¡ÕŽ ÕŽÕ«Õ¡Õ¶ÕžÖÕŽ Õ¥Ö ÕŽÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶Ö ÕºÕ¡Õ°Õ¡Õ¶Õ»ÕžÕ² ÕŽÕ¡ÕœÕ¶Õ¡ÕŸÕžÖ ÖÕ¡Õ¶ÖÕ«Ö:">
+<!ENTITY torSettings.configure "Ô¿Õ¡ÖÕ£Õ¡ÕŸÕžÖÕ¥Õ¬">
<!ENTITY torSettings.connect "ÕÕ«Õ¡ÖÕ¶Õ¥Õ¬">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to startâŠ">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!ENTITY torsettings.startingTor "Õպա՜՟՞ÖÕŽ Õ§ Tor-Õ« ՜կիՊբ՚âŠ">
+<!ENTITY torsettings.restartTor "ÕÕ¥Ö՜կ՜ել Tor-Õš">
+<!ENTITY torsettings.reconfigTor "ÕÕ¥ÖÕ¡Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕ¥Õ¬">
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
+<!ENTITY torsettings.discardSettings.prompt "ÔŽÕžÖÖ Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕ¥Õ¬ Õ¥Ö Tor Õ¯Õ¡ÕŽÕžÖÖÕ»Õ¶Õ¥ÖÕš Õ¯Õ¡ÕŽ Õ¿Õ¥Õ²Õ¡Õ¯Õ¡Õ¶ ÕŽÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶Õš:  Tor ÖÕ¡Õ¶ÖÕ«Õ¶ Õ¡Õ¶ÕŽÕ«Õ»Õ¡Õ¯Õ¡Õ¶ ÕŽÕ«Õ¡Õ¶Õ¡Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡Ö, Õ¡ÕµÕ€ Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥ÖÕš ÕºÕ¥Õ¿Ö Õ§ հեՌաÖÕŸÕ¥Õ¶:">
+<!ENTITY torsettings.discardSettings.proceed "ÕեՌաÖÕ¶Õ¥Õ¬ Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥ÖÕš Ö ÕŽÕ«Õ¡Õ¶Õ¡Õ¬">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "Ô¿Õ¡ÕŽÕšÕ¶Õ¿ÖÕ¡Õ¯Õ¡Õ¶">
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port">
-<!ENTITY torsettings.useProxy.username "ÕÕ£Õ¿Õ¡Õ£ÕžÖÕ®ÕžÕ²Õ«Õ¡Õ¶ÕžÖÕ¶">
-<!ENTITY torsettings.useProxy.password "Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ£Õ«Ö">
+<!ENTITY torsettings.useProxy.checkbox "ÕÕ¡ÕŽÕ¡ÖÕ¡Õ¶ÖÕ«Õ¶ ÕŽÕ«Õ¡Õ¶Õ¡Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡Ö Õ¥Õœ Ö
Õ£Õ¿ÕŸÕžÖÕŽ Õ¥ÕŽ ÕŽÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶ÖÕ«Ö">
+<!ENTITY torsettings.useProxy.type "ÕÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶ÖÕ« տե՜ակ">
+<!ENTITY torsettings.useProxy.type.placeholder "ÕšÕ¶Õ¿ÖÕ¥Ö ÕŽÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶ÖÕ« տե՜ակ՚">
+<!ENTITY torsettings.useProxy.address "ÕÕ¡ÕœÖÕ¥">
+<!ENTITY torsettings.useProxy.address.placeholder "IP Õ°Õ¡ÕœÖÕ¥ Õ¯Õ¡ÕŽ Õ°ÕµÕžÖÖÕšÕ¶Õ¯Õ¡Õ¬Õ« Õ¡Õ¶ÕžÖÕ¶">
+<!ENTITY torsettings.useProxy.port "ÕÕ¡Õ¿ÕžÖÕµÖ">
+<!ENTITY torsettings.useProxy.username "ÕÕ£Õ¿Õ¡Õ£ÕžÖÕ®ÕžÕ²Õ« Õ¡Õ¶ÕžÖÕ¶">
+<!ENTITY torsettings.useProxy.password "ԳաղտնաբաՌ">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
+<!ENTITY torsettings.firewall.checkbox "Ô±ÕµÕœ Õ°Õ¡ÕŽÕ¡Õ¯Õ¡ÖÕ£Õ«Õ¹Õš Õ¡Õ¶ÖÕ¶ÕžÖÕŽ Õ§ ÕŽÕ«Õ¡ÕµÕ¶ ÕžÖÕžÕ· ÕŽÕ¡Õ¿ÕžÖÕµÖÕ¶Õ¥Ö Õ©ÕžÖÕµÕ¬Õ¡Õ¿ÖÕžÕ² Õ°ÖÕ¡ÕºÕ¡Õ¿Õ« ÕŽÕ«Õ»ÕžÕŸ">
+<!ENTITY torsettings.firewall.allowedPorts "Ô¹ÕžÖÕµÕ¬Õ¿Õ¡Õ¿ÖÕŸÕ¡Õ® ÕŽÕ¡Õ¿ÕžÖÕµÖÕ¶Õ¥Ö">
+<!ENTITY torsettings.useBridges.checkbox "Tor-Õš Õ£ÖÕ¡ÖÕ¶Õ¶ÕŸÕžÖÕŽ Õ§ Õ«ÕŽ Õ¥ÖÕ¯ÖÕžÖÕŽ">
+<!ENTITY torsettings.useBridges.default "ÔžÕ¶Õ¿ÖÕ¥Ö Õ¶Õ¥ÖկաՌ՞ÖÖÕŸÕ¡Õ® Õ¯Õ¡ÕŽÕžÖÖÕ»">
+<!ENTITY torsettings.useBridges.default.placeholder "ÕšÕ¶Õ¿ÖÕ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»Õš">
+<!ENTITY torsettings.useBridges.bridgeDB "ÕÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ» torproject.org-Õ«Ö">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "ÕÕžÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ¶Õ¯Õ¡ÖÕžÖÕŽ ÕºÕ¡Õ¿Õ¯Õ¥ÖÕŸÕ¡Õ® ÕÕžÖÕ°ÖÕ€Õ¡Õ¶Õ«Õ·Õ¶Õ¥ÖÕš">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
+<!ENTITY torsettings.useBridges.captchaSubmit "ÕÖÕ²Õ¡ÖÕ¯Õ¥Õ¬">
+<!ENTITY torsettings.useBridges.custom "ÕÖÕ¡ÕŽÕ¡Õ€ÖÕ¥Õ¬ Õ«ÕŽ Õ«ÕŽÕ¡ÖÕ¡Õ® Õ¯Õ¡ÕŽÕžÖÖÕ»Õ¶Õ¥ÖÕš">
+<!ENTITY torsettings.useBridges.label "ÕÕžÖÕ¿ÖÕ¡Õ£ÖÕ¥Õ¬ Õ©ÕžÖÕµÕ¬Õ¡Õ¿ÕŸÕ¡Õ® Õ¡Õ²Õ¢ÕµÕžÖÖÕ«Ö Õ¯Õ¡ÕŽÕžÖÕ»Õ« Õ¿Õ¥Õ²Õ¥Õ¯ÕžÖÕ©ÕµÕžÖÕ¶Õš">
<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
+<!ENTITY torsettings.copyLog "ÕÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Tor-Õ« ÕŽÕ¡Õ¿ÕµÕ¡Õ¶Õš ՜եղանակատաÕÕ¿Õ¡Õ¯Õ« ÕŸÖÕ¡">
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
+<!ENTITY torsettings.proxyHelpTitle "ÕÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶ÖÕ« Ö
Õ£Õ¶ÕžÖÕ©ÕµÕžÖÕ¶">
<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
@@ -59,25 +59,25 @@
<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+<!ENTITY torprogress.pleaseWait "ԜնՀÖÕžÖÕŽ Õ¥Õ¶Ö ÕœÕºÕ¡ÕœÕ¥Õ¬ ÕŽÕ«Õ¶Õ¹Ö Tor ÖÕ¡Õ¶ÖÕ« Õ°Õ¥Õ¿ ÕŽÕ«Õ¡ÖÕŽÕ¡Õ¶ Õ°Õ«ÕŽÕ¶ÕžÖÕŽÕš:  Ô±ÕµÕ¶ Õ¯Õ¡ÖÕžÕ² Õ§ Õ¿ÖÕ¥Õ¬ ÕŽÕ« ÖÕ¡Õ¶Õ« ÖÕžÕºÕ¥:">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
-<!ENTITY torPreferences.learnMore "Learn More">
-<!ENTITY torPreferences.bridges "Bridges">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
-<!ENTITY torPreferences.requestNewBridge "Request a New BridgeâŠ">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.torSettings "Tor Õ¯Õ¡ÖÕ£Õ¡ÕŸÕžÖÕžÖÕŽÕ¶Õ¥Ö">
+<!ENTITY torPreferences.torSettingsDescription "Tor Õ€Õ«Õ¿Õ¡ÖÕ¯Õ«Õ¹Õš ÕžÖÕ²Õ²ÕžÖÕ€ÕžÖÕŽ Õ§ ÕÕ¥Ö Õ¥ÖÕ©ÖÕ¥Õ¯Õš Tor ÖÕ¡Õ¶ÖÕ« ÕŽÕ«Õ»ÕžÖÕžÕŸ, ÕžÖÕš Õ£ÕžÖÕ®Õ¡ÖÕ¯ÕžÖÕŽ Õ¥Õ¶ Õ°Õ¡ÕŠÕ¡ÖÕ¡ÕŸÕžÖ Õ¯Õ¡ÕŽÕ¡ÕŸÕžÖÕ¶Õ¥Ö Õ¡ÕŽÕ¢ÕžÕ²Õ» Õ¡Õ·ÕÕ¡ÖÕ°ÕžÖÕŽ: " >
+<!ENTITY torPreferences.learnMore "Ô»ÕŽÕ¡Õ¶Õ¡Õ¬ Õ¡ÕŸÕ¥Õ¬Õ«Õ¶">
+<!ENTITY torPreferences.bridges "Ô¿Õ¡ÕŽÕžÖÖÕ»Õ¶Õ¥Ö">
+<!ENTITY torPreferences.bridgesDescription "Ô¿Õ¡ÕŽÕžÖÖÕ»Õ¶Õ¥ÖÕ¶ Ö
Õ£Õ¶ÕžÖÕŽ Õ¥Õ¶ ÕÕ¥ÕŠ Tor-Õš Õ¡ÖÕ£Õ¥Õ¬Õ¡ÖÕ¡Õ¯ÕŸÕ¡Õ® Õ¿Õ¥Õ²Õ¥ÖÕžÖÕŽ Tor ÖÕ¡Õ¶ÖÕ« ÕŽÕ¡Õ¿Õ¹Õ¥Õ¬Õ«ÕžÖÕ©ÕµÕžÖÕ¶ ÕžÖնեն՜լ: Ô¿Õ¡ÕÕŸÕ¡Õ® Õ¶ÖÕ¡Õ¶Õ«Ö Õ©Õ¥ ÕžÖÕ¿Õ¥Õ² Õ¥Ö, ÕŽÕ« Õ¯Õ¡ÕŽÕžÖÖÕ» Õ¯Õ¡ÖÕžÕ² Õ§ Õ¡ÕŸÕ¥Õ¬Õ« Õ¬Õ¡ÕŸ Õ¡Õ·ÕÕ¡Õ¿Õ¥Õ¬ ÖÕ¡Õ¶ ÕŽÕµÕžÖ՜՚:">
+<!ENTITY torPreferences.useBridge "ÕÕ£Õ¿Õ¡Õ£ÕžÖÕ®Õ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»Õš">
+<!ENTITY torPreferences.requestNewBridge "ÕÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¶ÕžÖ Õ¯Õ¡ÕŽÕžÖÖÕ»âŠ">
+<!ENTITY torPreferences.provideBridge "ÕÖÕ¡ÕŽÕ¡Õ€ÖÕ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»">
<!ENTITY torPreferences.advanced "Advanced">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.advancedDescription "Ô¿Õ¡ÖÕ£Õ¡ÕŸÕžÖÕ¥Õ¬ Õ©Õ¥ Õ«Õ¶Õ¹ÕºÕ¥Õœ Tor Õ€Õ«Õ¿Õ¡ÖÕ¯Õ«Õ¹Õš ÕŽÕ«Õ¡Õ¶Õ¡ Õ°Õ¡ÕŽÕ¡ÖÕ¡Õ¶ÖÕ«Õ¶:">
<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
-<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
-<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.requestBridgeDialogTitle "ÕÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "ÕÕ«Õ¡ÖÕžÖÕŽ BridgeDB-Õ«Õ¶Ö ÔœÕ¶Õ€ÖÕžÖÕŽ Õ¥Õ¶Ö ÕœÕºÕ¡ÕœÕ¥Õ¬Ö">
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Ԍ՞ÖÕ®Õ¥Ö Â«CAPTCHA»-Õ¶ Õ¯Õ¡ÕŽÕžÖÖÕ» ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡Ö:">
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Ԍ՞ÖÕ®ÕžÖÕŽÕš Õ³Õ«Õ·Õ¿ Õ¹Õ§: ԜնՀÖÕžÖÕŽ Õ¥Õ¶Ö ÖÕžÖÕ±Õ¥Õ¬ Õ¯ÖÕ¯Õ«Õ¶:">
+<!ENTITY torPreferences.viewTorLogs "Õե՜նել Tor-Õ« ÕŽÕ¡Õ¿ÕµÕ¡Õ¶Õ¶Õ¥ÖÕš:">
+<!ENTITY torPreferences.viewLogs "Õե՜նել ÕŽÕ¡Õ¿ÕµÕ¡Õ¶Õ¶Õ¥ÖÕš...">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor-Õ« ÕŽÕ¡Õ¿ÕµÕ¡Õ¶Õ¶Õ¥Ö">
diff --git a/src/chrome/locale/hy-AM/torlauncher.properties b/src/chrome/locale/hy-AM/torlauncher.properties
index d990486..8286b70 100644
--- a/src/chrome/locale/hy-AM/torlauncher.properties
+++ b/src/chrome/locale/hy-AM/torlauncher.properties
@@ -7,12 +7,12 @@ torlauncher.tor_exited_during_startup=Tor exited during startup. This might be d
torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
+torlauncher.tor_failed_to_start=Tor-Õ« ÕŸÕ¥Ö՜կ՜՞ÖÕŽÕš Õ±Õ¡ÕÕžÕ²ÕŸÕ¥ÖÖ
torlauncher.tor_control_failed=Failed to take control of Tor.
torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
+torlauncher.unable_to_start_tor=Õ՜տաÖÕŸÕ¥Ö ÕœÕ¯ÕœÕ¥Õ¬ Tor-Õš:\n\n%S
torlauncher.tor_missing=The Tor executable is missing.
torlauncher.torrc_missing=The torrc file is missing and could not be created.
torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
@@ -27,36 +27,36 @@ torlauncher.error_proxy_addr_missing=You must specify both an IP address or host
torlauncher.error_proxy_type_missing=You must select the proxy type.
torlauncher.error_bridges_missing=You must specify one or more bridges.
torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
+torlauncher.error_bridgedb_bridges_missing=ԜնՀÖÕžÖÕŽ Õ¥Õ¶Ö ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»:
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
torlauncher.bridge_suffix.meek-amazon=(works in China)
torlauncher.bridge_suffix.meek-azure=(works in China)
-torlauncher.request_a_bridge=Request a BridgeâŠ
-torlauncher.request_a_new_bridge=Request a New BridgeâŠ
+torlauncher.request_a_bridge=ÕÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¯Õ¡ÕŽÕžÖÖÕ»...
+torlauncher.request_a_new_bridge=ÕÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ Õ¶ÕžÖ Õ¯Õ¡ÕŽÕžÖÖÕ»âŠ
torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
+torlauncher.captcha_prompt=Ԍ՞ÖÕ®Õ¥Ö Â«CAPTCHA»-Õ¶ Õ¯Õ¡ÕŽÕžÖÖÕ» ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬ÕžÖ Õ°Õ¡ÕŽÕ¡Ö:
+torlauncher.bad_captcha_solution=Ԍ՞ÖÕ®ÕžÖÕŽÕš Õ³Õ«Õ·Õ¿ Õ¹Õ§: ԜնՀÖÕžÖÕŽ Õ¥Õ¶Ö ÖÕžÖÕ±Õ¥Õ¬ Õ¯ÖÕ¯Õ«Õ¶:
torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
torlauncher.connect=ÕÕ«Õ¡ÖÕ¶Õ¥Õ¬
-torlauncher.restart_tor=Restart Tor
+torlauncher.restart_tor=ÕÕ¥Ö՜կ՜ել Tor-Õš
torlauncher.quit=Quit
torlauncher.quit_win=ÔŽÕžÖÖÕœ Õ£Õ¡Õ¬
-torlauncher.done=Done
+torlauncher.done=ÕÕ¡Õ¿Öա՜տ Õ§
torlauncher.forAssistance=For assistance, contact %S
torlauncher.forAssistance2=For assistance, visit %S
torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
+torlauncher.bootstrapStatus.starting=Õկ՜՞ÖÕŽ
+torlauncher.bootstrapStatus.conn_pt=ÕÕ«Õ¡ÖÕŸÕžÖÕŽ Õ§ Õ¯Õ¡ÕŽÕžÖÖÕ»Õ«Õ¶
+torlauncher.bootstrapStatus.conn_done_pt=ÕÕ«Õ¡ÖÕŸÕ¥Ö Õ¯Õ¡ÕŽÕžÖÖÕ»Õ«Õ¶
+torlauncher.bootstrapStatus.conn_proxy=ÕÕ«Õ¡ÖÕŸÕžÖÕŽ Õ§ ÕŽÕ«Õ»Õ¶Õ¡ÖÕ¡Õ¶ÖÕ«Õ¶
torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
@@ -78,9 +78,9 @@ torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor r
torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
+torlauncher.bootstrapStatus.done=ÕÕ«Õ¡ÖÕŸÕ¡ÕÕ® Õ§ Tor ÖÕ¡Õ¶ÖÕ«Õ¶Ö
-torlauncher.bootstrapWarning.done=done
+torlauncher.bootstrapWarning.done=ÕºÕ¡Õ¿Öա՜տ Õ§
torlauncher.bootstrapWarning.connectrefused=connection refused
torlauncher.bootstrapWarning.misc=miscellaneous
torlauncher.bootstrapWarning.resourcelimit=insufficient resources
diff --git a/src/chrome/locale/id/network-settings.dtd b/src/chrome/locale/id/network-settings.dtd
index 79c1226..c26f2d4 100644
--- a/src/chrome/locale/id/network-settings.dtd
+++ b/src/chrome/locale/id/network-settings.dtd
@@ -52,14 +52,14 @@
<!ENTITY torsettings.copyLog "Salin Log Tor Ke Clipboard">
<!ENTITY torsettings.proxyHelpTitle "Bantuan untuk Proxy">
-<!ENTITY torsettings.proxyHelp1 "Proxy lokal diperlukan ketika mencoba terhubung dari jaringan perusahaan, sekolah, atau universitas.  Jika anda tidak yakin bagaimana untuk menjawab pertanyaan ini, lihat pengaturan Internet di peramban lainnya atau periksa pengaturan sistem jaringan Anda untuk melihat apakah proksi lokal dibutuhkan.">
+<!ENTITY torsettings.proxyHelp1 "Proksi lokal mungkin diperlukan saat menyambung melalui jaringan perusahaan, sekolah, atau universitas. Jika Anda tidak yakin apakah proxy diperlukan, lihat setelan Internet di browser lain atau periksa setelan jaringan sistem Anda.">
<!ENTITY torsettings.bridgeHelpTitle "Bantuan Bridge Relay">
<!ENTITY torsettings.bridgeHelp1 "Bridges adalah relays yang tidak terdaftar, yang membuat pemblokiran sambungan di Jaringan Tor lebih sulit dilakukan.  Setiap jenis bridge menggunakan metode yang berbeda untuk menghindari sensor.  Jenis obfs membuat sambungan Anda terlihat seperti kegiatan acak dan jenis meek membuat sambungan Anda terlihat tersambung ke layanan tersebut, bukan ke Tor.">
<!ENTITY torsettings.bridgeHelp2 "Karena beberapa negara mencoba untuk memblokir Tor, beberapa jenis bridge berfungsi di beberapa negara tapi tidak di negara lain.  Jika Anda tidak yakin tentang jenis bridge yang berfungsi negara Anda, kunjungi torproject.org/about/contact.html#support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Mohon menunggu sambil kami membuat sambungan ke jaringan TorJaringan Tor.  Ini akan memakan waktu beberapa menit">
+<!ENTITY torprogress.pleaseWait "Mohon menunggu sambil kami membuat sambungan ke jaringan Tor.  Ini akan memakan waktu beberapa menit">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
@@ -67,15 +67,15 @@
<!ENTITY torPreferences.torSettingsDescription "Tor Browser mengalihkan lalulintas kamu melalui Jaringan Tor, di jalankan oleh ribuan sukarelawan di seluruh dunia." >
<!ENTITY torPreferences.learnMore "Pelajari lebih lanjut">
<!ENTITY torPreferences.bridges "Jembatan-jembatan">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
+<!ENTITY torPreferences.bridgesDescription "Jembatan membantu Anda mengakses Jaringan Tor dimana Tor diblokir. Tergantung pada dimana Anda tinggal, satu jembatan mungkin dapat bekerja lebih baik daripada yang lainnya.">
+<!ENTITY torPreferences.useBridge "Gunakan bridge">
<!ENTITY torPreferences.requestNewBridge "Meminta bridge baru...">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.provideBridge "Sediakan Bridge">
<!ENTITY torPreferences.advanced "Advanced ">
<!ENTITY torPreferences.advancedDescription "Konfigurasikan bagaimana Tor Browser terhubung ke internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Nilai yang dipisahkan dengan tanda koma.">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Minta Jembatan">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Menghubungi BridgeDB. Mohon tunggu.">
<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Selesaikan CAPTCHA untuk meminta sebuah bridge.">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "Solusinya tidak tepat. Silakan coba lagi.">
<!ENTITY torPreferences.viewTorLogs "Lihat Catatan Tor">
diff --git a/src/chrome/locale/id/torlauncher.properties b/src/chrome/locale/id/torlauncher.properties
index 87e6225..7a04da1 100644
--- a/src/chrome/locale/id/torlauncher.properties
+++ b/src/chrome/locale/id/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=Tidak dapat memulai Tor\n\n%S
torlauncher.tor_missing=Tor executable hilang
torlauncher.torrc_missing=Berkas torrc hilang dan tidak dapat dibuat.
torlauncher.datadir_missing=Direktori data tor tidak ada dan tidak dapat dibuat.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
+torlauncher.onionauthdir_missing=Direktori otentikasi Tor onion tidak ada dan tidak dapat dibuat.
torlauncher.password_hash_missing=Gagal mendapatkan kata sandi hashed.
torlauncher.failed_to_get_settings=Gagal mendapatkan pengaturan Tor.\n\n%S
diff --git a/src/chrome/locale/ja/network-settings.dtd b/src/chrome/locale/ja/network-settings.dtd
index f52bf18..ff83b49 100644
--- a/src/chrome/locale/ja/network-settings.dtd
+++ b/src/chrome/locale/ja/network-settings.dtd
@@ -20,7 +20,7 @@
<!ENTITY torsettings.restartTor "Torãåèµ·åãã">
<!ENTITY torsettings.reconfigTor "åèšå®">
-<!ENTITY torsettings.discardSettings.prompt "Tor ããªããžãèšå®ãããããããŒã«ã«ãããã·èšå®ãå
¥åããããããŸããã  Tor ãããã¯ãŒã¯ã«çŽæ¥æ¥ç¶ããããã«ã¯ããããã®èšå®ã¯åé€ããå¿
èŠããããŸãã">
+<!ENTITY torsettings.discardSettings.prompt "Tor Bridge ãèšå®ãããããããŒã«ã«ãããã·èšå®ãå
¥åããããããŸããã  Tor ãããã¯ãŒã¯ã«çŽæ¥æ¥ç¶ããããã«ã¯ããããã®èšå®ã¯åé€ããå¿
èŠããããŸãã">
<!ENTITY torsettings.discardSettings.proceed "èšå®ãšæ¥ç¶ãåé€">
<!ENTITY torsettings.optional "ãªãã·ã§ã³">
@@ -39,24 +39,24 @@
<!ENTITY torsettings.firewall.checkbox "ãã®ã³ã³ãã¥ãŒã¿ãŒã¯ç¹å®ã®ããŒããžã®æ¥ç¶ã®ã¿èš±å¯ãããã¡ã€ã¢ãŒãŠã©ãŒã«ãéããŸãã">
<!ENTITY torsettings.firewall.allowedPorts "èš±å¯ãããããŒã">
<!ENTITY torsettings.useBridges.checkbox "Tor ã¯ç§ã®åœã§ã¯æ€é²ãããŠããŸã">
-<!ENTITY torsettings.useBridges.default "å
èµããªããžãéžæãã">
-<!ENTITY torsettings.useBridges.default.placeholder "ããªããžãéžæ">
-<!ENTITY torsettings.useBridges.bridgeDB "torproject.org ããããªããžã®èŠæ±ããã">
+<!ENTITY torsettings.useBridges.default "å
èµ Bridge ãéžæãã">
+<!ENTITY torsettings.useBridges.default.placeholder "Bridge ãéžæ">
+<!ENTITY torsettings.useBridges.bridgeDB "torproject.org ã« Bridge ããªã¯ãšã¹ããã">
<!ENTITY torsettings.useBridges.captchaSolution.placeholder "ç»åã®æåãå
¥åããŠãã ãã">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "ãã£ã¬ã³ãžãæŽæ°ãã">
<!ENTITY torsettings.useBridges.captchaSubmit "éä¿¡">
-<!ENTITY torsettings.useBridges.custom "ç¥ã£ãŠããããªããžã䜿ã">
-<!ENTITY torsettings.useBridges.label "ä¿¡é Œã§ããæ
å ±æºããã®ããªããžæ
å ±ãå
¥åããŠãã ããã">
+<!ENTITY torsettings.useBridges.custom "ç¥ã£ãŠãã Bridge ã䜿ã">
+<!ENTITY torsettings.useBridges.label "ä¿¡é Œã§ããæ
å ±æºããå
¥æãã Bridge æ
å ±ãå
¥åããŠãã ããã">
<!ENTITY torsettings.useBridges.placeholder "ã¢ãã¬ã¹:ããŒã ã®åœ¢åŒã§å
¥å (1 è¡ãã€)">
-<!ENTITY torsettings.copyLog "Torã®ãã°ãã¯ãªããããŒãã«ã³ããŒ">
+<!ENTITY torsettings.copyLog "Tor ã®ãã°ãã¯ãªããããŒãã«ã³ããŒ">
<!ENTITY torsettings.proxyHelpTitle "ãããã·ãã«ã">
<!ENTITY torsettings.proxyHelp1 "äŒç€ŸãåŠæ ¡ã倧åŠçã®ãããã¯ãŒã¯ãéããŠæ¥ç¶ããå ŽåãããŒã«ã«ãããã·ãå¿
èŠã«ãªãå ŽåããããŸãã ãããã·ãå¿
èŠã§ãããã©ããããããªãå Žåã¯ãä»ã®ãã©ãŠã¶ã®ã€ã³ã¿ãŒãããèšå®ãèŠãããã·ã¹ãã ã®ãããã¯ãŒã¯èšå®ã確èªããŠãã ããã">
-<!ENTITY torsettings.bridgeHelpTitle "ããªããžãªã¬ãŒã®ãã«ã">
-<!ENTITY torsettings.bridgeHelp1 "ããªããžãšã¯Torãããã¯ãŒã¯ãžã®æ¥ç¶ããããã¯ããããšãé£ããããããã®ãªã¹ããããŠããªããªã¬ãŒã§ãã  ããããã®çš®é¡ã®ããªããžã¯æ€é²ãé¿ããããã®ç°ãªãææ³ãå©çšããŠããŸãã  obfsã®ãã®ã¯ããªãã®ãã©ãã£ãã¯ãã©ã³ãã ãªãã€ãºã®ããã«èŠãããïŒmeekã®ãã®ã¯ããªãã®ãã©ãã£ãã¯ãTorã§ã¯ãªããã®ãµãŒãã¹ãžã®æ¥ç¶ã§ããããã«èŠããããŸãã">
-<!ENTITY torsettings.bridgeHelp2 "ãã®åœãã©ã®ããã«ããŠTorããããã¯ããããšè©Šã¿ãŠãããã«ãã£ãŠãããããªããžãããåœã§ã¯æ©èœããŠãä»ã®åœã§ã¯åããªãå ŽåããããŸãã  ããã©ã®ããªããžãããªãã®åœã§æ©èœãããããããªãå Žå㯠torproject.org/about/contact.html#support ã«ã¢ã¯ã»ã¹ããŠãã ããã">
+<!ENTITY torsettings.bridgeHelpTitle "Bridge ãªã¬ãŒã®ãã«ã">
+<!ENTITY torsettings.bridgeHelp1 "Bridge ãšã¯ Tor ãããã¯ãŒã¯ãžã®æ¥ç¶ãæ€é²ããããšãå°é£ããããã®éå
¬éã®ãªã¬ãŒã§ãã  åçš®é¡ã® Bridge ã¯æ€é²ãé¿ããããã®ç°ãªãææ³ãå©çšããŠããŸãã  obfs ã¯ããªãã®ãã©ãã£ãã¯ãã©ã³ãã ãªãã€ãºã®ããã«èŠãããïŒmeek ã¯ããªãã®ãã©ãã£ãã¯ã Tor ã§ã¯ãªãç¹å®ã®ãµãŒãã¹ãžã®æ¥ç¶ã§ããããã«èŠããããŸãã">
+<!ENTITY torsettings.bridgeHelp2 "ç¹å®ã®åœã Tor ãæ€é²ããããããšè©Šã¿ãŠããå Žåããããã©ã®ãããªææ³ã§è¡ãããŠãããã«ãã£ãŠããã Bridge ãããåœã§ã¯æ©èœããŠãä»ã®åœã§ã¯åããªããšããå ŽåããããŸãã  ããã©ã® Bridge ãããªãã®åœã§æ©èœãããããããªãå Žå㯠torproject.org/about/contact.html#support ã«ã¢ã¯ã»ã¹ããŠãã ããã">
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Tor ãããã¯ãŒã¯ãžã®æ¥ç¶ã確ç«ããããŸã§ãåŸ
ã¡ãã ããã  ããã«ã¯æ°åéãããããšããããŸãã">
@@ -67,16 +67,16 @@
<!ENTITY torPreferences.torSettingsDescription "Tor Browser ã¯éä¿¡ãã©ãã£ãã¯ã Tor ãããã¯ãŒã¯ãçµç±ãããŠéä¿¡ããŸããTor ãããã¯ãŒã¯ã¯äžçäžã®äœåãã®ãã©ã³ãã£ã¢ã«ãã£ãŠéçšãããŠããŸãã" >
<!ENTITY torPreferences.learnMore "詳现æ
å ±">
<!ENTITY torPreferences.bridges "Bridge">
-<!ENTITY torPreferences.bridgesDescription "ããªããžã¯ Tor ããããã¯ãããå°åãã Tor ãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ããããšãæå©ãããŸããå°åã«ãã£ãŠãããããªããžãä»ã®ãã®ããããŸãåäœããå¯èœæ§ããããŸãã">
-<!ENTITY torPreferences.useBridge "ããªããžã䜿çšãã">
-<!ENTITY torPreferences.requestNewBridge "æ°ããããªããžãèŠæ±âŠ">
-<!ENTITY torPreferences.provideBridge "ããªããžãæå®ãã">
+<!ENTITY torPreferences.bridgesDescription "Bridge 㯠Tor ããããã¯ãããå°åãã Tor ãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ããããšãæå©ãããŸããå°åã«ãã£ãŠããã Bridge ãä»ã®ãã®ããããŸãåäœããå¯èœæ§ããããŸãã">
+<!ENTITY torPreferences.useBridge "Bridge ã䜿çšãã">
+<!ENTITY torPreferences.requestNewBridge "æ°ãã Bridge ããªã¯ãšã¹ãâŠ">
+<!ENTITY torPreferences.provideBridge "Bridge ãæå®ãã">
<!ENTITY torPreferences.advanced "詳现">
<!ENTITY torPreferences.advancedDescription "Tor Browser ãã€ã³ã¿ãŒãããã«æ¥ç¶ããæ¹æ³ãèšå®ããŸãã">
<!ENTITY torPreferences.firewallPortsPlaceholder "ã³ã³ãåºåãã®å€">
-<!ENTITY torPreferences.requestBridgeDialogTitle "ããªããžã®èŠæ±">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Bridge ããªã¯ãšã¹ã">
<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "BridgeDB ã«æ¥ç¶ããŠããŸãããã°ãããåŸ
ã¡ãã ããã">
-<!ENTITY torPreferences.requestBridgeDialogSolvePrompt " ããªããžããªã¯ãšã¹ãããã«ã¯CAPTCHAãè§£ããŠäžããã">
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Bridge ããªã¯ãšã¹ãããã«ã¯ CAPTCHA ãè§£ããŠäžããã">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "ãã®è§£çã¯æ£ãããããŸãããå床å®è¡ããŠãã ããã">
<!ENTITY torPreferences.viewTorLogs "Tor ã®ãã°ã衚瀺ããã">
<!ENTITY torPreferences.viewLogs "ãã°ã衚瀺âŠ">
diff --git a/src/chrome/locale/ja/torlauncher.properties b/src/chrome/locale/ja/torlauncher.properties
index 3be4b94..0d1eedd 100644
--- a/src/chrome/locale/ja/torlauncher.properties
+++ b/src/chrome/locale/ja/torlauncher.properties
@@ -4,8 +4,8 @@
torlauncher.error_title=Tor Launcher
torlauncher.tor_exited_during_startup=Tor ãèµ·åäžã«çµäºããŸãããããã¯ãtorrc ãã¡ã€ã«ã®èª€ãããTor ãŸãã¯ä»ã®ããã°ã©ã ã®ãã°ããããã¯ããŒããŠã§ã¢ã®æ
éã«èµ·å ããŠãããããããŸãããåé¡ã解決ã㊠Tor ãåèµ·åãããŸã§ãTor Browser ã¯èµ·åãããŸããã
-torlauncher.tor_exited=Tor ãçªç¶çµäºããŸãããåå ã¯ãããã Tor èªäœã®ãã°ããä»ã®åžžé§ããã°ã©ã ãããããã¯ããŒããŠã§ã¢ãŒãåé¡ã§ããTor ãåèµ·åãããŸã§ã Tor Browser ã¯ãŠã§ããµã€ãã«äžåæ¥ç¶ã§ããŸãããåèµ·åããŠã解決ãããªãå ŽåãTor ãã°ãã¡ã€ã«ããµããŒãããŒã ã«éä¿¡ããŠãã ããã
-torlauncher.tor_exited2=Tor ãåèµ·åããŠããããªãã®ãã©ãŠã¶ãŒã¿ãã¯ãã®ãŸãŸæ®ããŸãã
+torlauncher.tor_exited=Tor ãçªç¶çµäºããŸãããåå ã¯ãããã Tor èªäœã®ãã°ããä»ã®åžžé§ããã°ã©ã ãããããã¯ããŒããŠã§ã¢ãåé¡ã§ããTor ãåèµ·åãããŸã§ã Tor Browser ã¯ãŠã§ããµã€ãã«äžåæ¥ç¶ã§ããŸãããåèµ·åããŠã解決ãããªãå ŽåãTor ãã°ãã¡ã€ã«ããµããŒãããŒã ã«éä¿¡ããŠãã ããã
+torlauncher.tor_exited2=Tor ãåèµ·åããŠããããªãã®ãã©ãŠã¶ã¿ãã¯ãã®ãŸãŸæ®ããŸãã
torlauncher.tor_controlconn_failed=Torã®ã³ã³ãããŒã«ããŒãã«æ¥ç¶åºæ¥ãŸããã§ããã
torlauncher.tor_failed_to_start=Torã¯éå§åºæ¥ãŸããã§ããã
torlauncher.tor_control_failed=Tor ã®å¶åŸ¡ã«å€±æããŸããã
@@ -69,15 +69,15 @@ torlauncher.bootstrapStatus.loading_keys=èªèšŒå±ã®çœ²åãèªèŸŒäž
torlauncher.bootstrapStatus.requesting_descriptors=ãªã¬ãŒæ
å ±ãèŠæ±äž
torlauncher.bootstrapStatus.loading_descriptors=ãªã¬ãŒæ
å ±ãèªèŸŒäž
torlauncher.bootstrapStatus.enough_dirinfo=ãªã¬ãŒæ
å ±ãèªèŸŒå®äº
-torlauncher.bootstrapStatus.ap_conn_pt=ãµãŒãããã確ç«äžïŒããªããžãšæ¥ç¶äž
-torlauncher.bootstrapStatus.ap_conn_done_pt=ãµãŒãããã確ç«äžïŒããªããžãšæ¥ç¶ããŸãã
-torlauncher.bootstrapStatus.ap_conn_proxy=ãµãŒãããã確ç«äžïŒãããã·ãšæ¥ç¶äž
-torlauncher.bootstrapStatus.ap_conn_done_proxy=ãµãŒãããã確ç«äžïŒãããã·ãšæ¥ç¶ããŸãã
-torlauncher.bootstrapStatus.ap_conn=ãµãŒãããã確ç«äžïŒTor ãªã¬ãŒãšæ¥ç¶äž
-torlauncher.bootstrapStatus.ap_conn_done=ãµãŒãããã確ç«äžïŒTor ãªã¬ãŒãšæ¥ç¶ããŸãã
-torlauncher.bootstrapStatus.ap_handshake=ãµãŒãããã確ç«äžïŒTor ãªã¬ãŒãšããŽã·ãšãŒãäž
-torlauncher.bootstrapStatus.ap_handshake_done=ãµãŒãããã確ç«äžïŒTor ãªã¬ãŒãšããŽã·ãšãŒãå®äºããŸãã
-torlauncher.bootstrapStatus.circuit_create=ãµãŒãããã確ç«äžïŒTor ãµãŒããããèšçœ®ããŠããŸã
+torlauncher.bootstrapStatus.ap_conn_pt=åç·ã確ç«äžïŒããªããžãšæ¥ç¶äž
+torlauncher.bootstrapStatus.ap_conn_done_pt=åç·ã確ç«äžïŒããªããžãšæ¥ç¶ããŸãã
+torlauncher.bootstrapStatus.ap_conn_proxy=åç·ã確ç«äžïŒãããã·ãšæ¥ç¶äž
+torlauncher.bootstrapStatus.ap_conn_done_proxy=åç·ã確ç«äžïŒãããã·ãšæ¥ç¶ããŸãã
+torlauncher.bootstrapStatus.ap_conn=åç·ã確ç«äžïŒTor ãªã¬ãŒãšæ¥ç¶äž
+torlauncher.bootstrapStatus.ap_conn_done=åç·ã確ç«äžïŒTor ãªã¬ãŒãšæ¥ç¶ããŸãã
+torlauncher.bootstrapStatus.ap_handshake=åç·ã確ç«äžïŒTor ãªã¬ãŒãšããŽã·ãšãŒãäž
+torlauncher.bootstrapStatus.ap_handshake_done=åç·ã確ç«äžïŒTor ãªã¬ãŒãšã®ããŽã·ãšãŒããå®äºããŸãã
+torlauncher.bootstrapStatus.circuit_create=åç·ã確ç«äžïŒTor åç·ãèšçœ®äž
torlauncher.bootstrapStatus.done=Tor ãããã¯ãŒã¯ã«æ¥ç¶ããŸãã!
torlauncher.bootstrapWarning.done=å®äº
diff --git a/src/chrome/locale/ka/network-settings.dtd b/src/chrome/locale/ka/network-settings.dtd
index 737e74f..7d0e5dc 100644
--- a/src/chrome/locale/ka/network-settings.dtd
+++ b/src/chrome/locale/ka/network-settings.dtd
@@ -20,12 +20,12 @@
<!ENTITY torsettings.restartTor "Tor-áá¡ á®áááá®áá ááášáááá">
<!ENTITY torsettings.reconfigTor "á®áááá®áá ááááá ááá">
-<!ENTITY torsettings.discardSettings.prompt "áá¥ááá ááááá áá£áá ááá¥áá Tor-áá¡ ááááááªááá á®ááááá áá áááááááá£áá ááá¥áá áááááááá ááá áá áá¥á¡áá¡ ááá áááá¢á ááá.  Tor-á¥á¡ááááá ááá ááááá ááá¡ááááášáá ááááá, á¡áááá áá áá ááá áááá¢á áááá¡ áááªááááá.">
+<!ENTITY torsettings.discardSettings.prompt "áá¥ááá á£ááá ááááá áá£áá ááá¥áá Tor-áá¡ ááááááªááá á®ááááá áá áááááááá£áá ááá¥áá áááááááá ááá áá áá¥á¡áá¡ ááá áááá¢á ááá.  Tor-á¥á¡ááááá ááá ááááá ááá¡ááááášáá ááááá, á¡áááá áá áá ááá áááá¢á áááá¡ áááªááááá.">
<!ENTITY torsettings.discardSettings.proceed "ááá áááá¢á áááá¡ áááªááááá áá áááááášáá ááá">
<!ENTITY torsettings.optional "áá áá¡áááááááá£áá">
-<!ENTITY torsettings.useProxy.checkbox "ááá¢áá ááá¢ááá ááá¡ááááášáá ááááá áá áá¥á¡áá¡ ááá§áááá">
+<!ENTITY torsettings.useProxy.checkbox "ááá¢áá ááá¢ááá ááá¡ááááášáá ááááá áá áá¥á¡á áááááá§ááááá">
<!ENTITY torsettings.useProxy.type "áá áá¥á¡áá¡ á¡áá®áááá">
<!ENTITY torsettings.useProxy.type.placeholder "ááá£ááááá áá áá¥á¡áá¡ á¡áá®áááá">
<!ENTITY torsettings.useProxy.address "ááá¡áááá áá">
@@ -36,7 +36,7 @@
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "áááááá£á¢áá á ááá¢áá ááá¢á¡ á£áááášáá áááá á¥á¡áááá¡ á€áá áá¡ áááááá, á ááááášá᪠áá®áááá áªááááá£áá ááá á¢áááá ááášáááá£áá">
+<!ENTITY torsettings.firewall.checkbox "áááááá£á¢áá á ááá¢áá ááá¢ášá ááááá¡ á¥á¡áááá¡ á€áá áá¡ áááááá, áá®áááá ááá áááá£áá ááá á¢áááá">
<!ENTITY torsettings.firewall.allowedPorts "ááášáááá£áá ááá á¢ááá">
<!ENTITY torsettings.useBridges.checkbox "Tor ášáááŠá£áá£ááá á©ááá¡ á¥ááá§áááášá">
<!ENTITY torsettings.useBridges.default "á©áášááááá£áá ááááááªááá á®áááá¡ áááááááá">
@@ -51,7 +51,7 @@
<!ENTITY torsettings.copyLog "Tor-áá¡ ááŠá ááªá®ááá¡ á©áááá¬áá áááá¡ áá¡áá">
-<!ENTITY torsettings.proxyHelpTitle "áá áá¥á¡á â ááá®ááá ááá">
+<!ENTITY torsettings.proxyHelpTitle "áá áá¥á¡áá¡ ášáá¡áá®áá">
<!ENTITY torsettings.proxyHelp1 "áááááááá ááá áá áá¥á¡á ááášáááá á¡áááá á, á ááªá ááá¢áá ááá¢á¡ á£áááášáá ááááá ááá¬áá¡ááá£ááááá¡, á¡ááááá¡ áá á£áááŠááá¡á á¡áá¡á¬áááááááá¡ á¥á¡áááá¡ áááááá. áᣠááá á¬áá£áááá£áá áá á®áá á áá áá¥á¡áá¡ á¡áááá ááááášá, ááááá®áááá ááá¢áá ááá¢áá¡ ááá áááá¢á ááá¡ á¡á®áá áá áá£ááá ášá áá áá®áááá á¡áá¡á¢áááá¡ á¥á¡áááá¡ ááá áááá¢á ááá.">
<!ENTITY torsettings.bridgeHelpTitle "ááá®ááá ááá ááááááªááá á®áááá¡ ááááááá">
diff --git a/src/chrome/locale/ko/network-settings.dtd b/src/chrome/locale/ko/network-settings.dtd
index 3b88cf1..f64e05a 100644
--- a/src/chrome/locale/ko/network-settings.dtd
+++ b/src/chrome/locale/ko/network-settings.dtd
@@ -39,13 +39,13 @@
<!ENTITY torsettings.firewall.checkbox "ìŽ ì»Žíší°ë í¹ì í¬ížë§ íì©íë ë°©í벜ì íµíŽì ì°ê²°ë©ëë€.">
<!ENTITY torsettings.firewall.allowedPorts "íì©ë í¬íž">
<!ENTITY torsettings.useBridges.checkbox "ì°ëЬëëŒììë Tor륌 ê²ìŽí©ëë€.">
-<!ENTITY torsettings.useBridges.default "ì ê³µë ëžëŠ¿ì§ë¥Œ ì ííìžì.">
+<!ENTITY torsettings.useBridges.default "ì ê³µë ëžëŠ¿ì§ë¥Œ ì ííêž°">
<!ENTITY torsettings.useBridges.default.placeholder "ëžëŠ¿ì§ë¥Œ ì ííìžì.">
-<!ENTITY torsettings.useBridges.bridgeDB "torproject.org ì ëžëŠ¿ì§ë¥Œ ìì²íìžì.">
+<!ENTITY torsettings.useBridges.bridgeDB "torproject.orgìì ëžëŠ¿ì§ ìì²íêž°">
<!ENTITY torsettings.useBridges.captchaSolution.placeholder "ìŽë¯žì§ì ëìš êžì륌 ì
ë ¥íìžì.">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "ìë¡ìŽ ìº¡ì°š ìëê°ì 구í©ëë€.">
<!ENTITY torsettings.useBridges.captchaSubmit "ì ì¶íìž">
-<!ENTITY torsettings.useBridges.custom "ëŽê° ìë ëžëЬì§ë¥Œ ìë €ì£Œìžì.">
+<!ENTITY torsettings.useBridges.custom "ëŽê° ìë ëžëŠ¿ì§ë¥Œ ì ê³µ">
<!ENTITY torsettings.useBridges.label "ì 뢰í ììë ì 볎ë¡ë¶í° ì ë¬ë°ì ëžëŠ¿ì§ ì 볎륌 ì
ë ¥íìžì.">
<!ENTITY torsettings.useBridges.placeholder "죌ì:í¬ížë²íž ì
ë ¥íìžì.(íì€ì íëì©)">
@@ -54,8 +54,8 @@
<!ENTITY torsettings.proxyHelpTitle "íë¡ì ëìë§">
<!ENTITY torsettings.proxyHelp1 "íì¬ë íêµ, í¹ìž ëí ë€ížìí¬ë¥Œ íµíŽ ì°ê²°íë 겜ì°ì ë¡ì»¬ íë¡ìê° íìí ì ììµëë€. íë¡ìê° íìíì§ ëªšë¥Žë 겜ì°ìë ë€ë¥ž ëžëŒì°ì ìì ìží°ë· ì€ì ì íìžíê±°ë ìì€í
ì ë€ížìí¬ ì€ì ì íìžíìžì.">
-<!ENTITY torsettings.bridgeHelpTitle "ëžëŠ¿ì§ ì€ê³ ìë² ëìë§">
-<!ENTITY torsettings.bridgeHelp1 "ëžëЬì§ë Tor ë€ížìí¬ì ëí ì°ê²°ì ì°šëšíë ê²ì ë ìŽë µê² íŽì£Œë ë¹ê³µê° 늎ë ìŽì
ëë€.  ê° ì íì ëžëЬì§ë ê²ìŽì íŒíêž° ìíŽ ê°êž° ë€ë¥ž ë°©ë²ì ì¬ì©í©ëë€.   obfs ìžê²ì ë¹ì ì ížëíœìŽ ììì ì¡ìííìž ê²ì²ëŒ 볎ìŽê² íŽì€ëë€. ê·žëŠ¬ê³ meek ìžê²ì Tor ëì ì ë¹ì ìŽ ìë¹ì€ì ì°ê²°ëìŽìë ê²ì²ëŒ 볎ìŽê² íŽì€ëë€.">
+<!ENTITY torsettings.bridgeHelpTitle "ëžëŠ¿ì§ ì€ê³ìë² ëìë§">
+<!ENTITY torsettings.bridgeHelp1 "ëžëŠ¿ì§ë Tor ë€ížìí¬ì ëí ì°ê²°ì ì°šëšíë ê²ì ë ìŽë µê² íŽì£Œë ë¹ê³µê° ì€ê³ìë²ì
ëë€.  ê° ì íì ëžëŠ¿ë ê²ìŽì íŒíêž° ìíŽ ê°êž° ë€ë¥ž ë°©ë²ì ì¬ì©í©ëë€.   obfs ìžê²ì ë¹ì ì ížëíœìŽ ììì ì¡ìííìž ê²ì²ëŒ 볎ìŽê² íŽì€ëë€. ê·žëŠ¬ê³ meek ìžê²ì Tor ëì ì ë¹ì ìŽ ìë¹ì€ì ì°ê²°ëìŽìë ê²ì²ëŒ 볎ìŽê² íŽì€ëë€.">
<!ENTITY torsettings.bridgeHelp2 "ìŒë¶ êµê°ìì ìŽë»ê²ë Tor 륌 ì°šëšíë €ê³ íêž° ë묞ì, ìŽë€ ëžëŠ¿ì§ë í¹ì êµê°ììë ëìíì§ë§ ë€ë¥ž ê³³ììë ê·žë ì§ ììµëë€.  ë¹ì ì ëëŒìì ìŽë€ ëžëŠ¿ì§ê° ëìíê³ ìëì§ ëªšë¥Žë ê²œì° torproject.org/about/contact.html#support 륌 방묞íìžì.">
<!-- Progress -->
@@ -66,9 +66,9 @@
<!ENTITY torPreferences.torSettings "Tor ì€ì ">
<!ENTITY torPreferences.torSettingsDescription "Tor ëžëŒì°ì ë ì ìžê³ ìì²ëª
ì ìì ëŽì¬ìì ìíŽ ìŽìëë Tor ë€ížìí¬ì ë¹ì ì ì°ê²°í©ëë€." >
<!ENTITY torPreferences.learnMore "ë ìì볎Ʞ">
-<!ENTITY torPreferences.bridges "ì€ê³ìë²">
-<!ENTITY torPreferences.bridgesDescription "ëžëЬì§ë Torê° ì°šëš ë ì¥ììì Tor ë€ížìí¬ì ì¡ìžì€íë ë° ëììŽë©ëë€. íì¬ ìì¹ì ë°ëŒ í ë€ëŠ¬ê° ë€ë¥ž ë€ëŠ¬ë³Žë€ ë ì ìë í ì ììµëë€.">
-<!ENTITY torPreferences.useBridge "ë€ëЬ ì¬ì©">
+<!ENTITY torPreferences.bridges "ëžëŠ¿ì§ (ì€ê³ìë²)">
+<!ENTITY torPreferences.bridgesDescription "ëžëŠ¿ì§ë Torê° ì°šëšë ìì¹ìì Tor ë€ížìí¬ì ì¡ìžì€íë ë° ëììŽ ë©ëë€. ìì¹ì ë°ëŒ ëžëŠ¿ì§ íëê° ë€ë¥ž ì€ê³ìë²ë³Žë€ ë ì ìëí ì ììµëë€.">
+<!ENTITY torPreferences.useBridge "ëžëŠ¿ì§ ì¬ì©">
<!ENTITY torPreferences.requestNewBridge "ìë¡ìŽ ëžëŠ¿ì§ ìì²íêž°">
<!ENTITY torPreferences.provideBridge "ëžëŠ¿ì§ë¥Œ ì ê³µíìžì">
<!ENTITY torPreferences.advanced "ê³ êž">
diff --git a/src/chrome/locale/ko/torlauncher.properties b/src/chrome/locale/ko/torlauncher.properties
index 5e63d5d..9fa00b1 100644
--- a/src/chrome/locale/ko/torlauncher.properties
+++ b/src/chrome/locale/ko/torlauncher.properties
@@ -25,10 +25,10 @@ torlauncher.ensure_tor_is_running=Torê° ì€íì€ìžì§ íìžíì¬ ì£Œìì
torlauncher.error_proxy_addr_missing=ìží°ë·ì ì ìíêž° ìíŽ íë¡ì륌 ì¬ì©íë€ë©Ž, IP죌ìë ížì€íž ìŽëŠ, ê·žëŠ¬ê³ í¬íž ë²ížë¥Œ ì
ë ¥íŽìŒ í©ëë€.
torlauncher.error_proxy_type_missing=íë¡ì ì íì ì ííŽ ì£Œììì€.
-torlauncher.error_bridges_missing=íë ìŽìì bridge륌 ì§ì íŽìŒ í©ëë€.
-torlauncher.error_default_bridges_type_missing=ì ê³µë ëžëЬì§ì ì ì¡ ì íì ì ííŽìŒí©ëë€.
+torlauncher.error_bridges_missing=íë ìŽìì ëžëŠ¿ì§ë¥Œ ì§ì íŽìŒ í©ëë€.
+torlauncher.error_default_bridges_type_missing=ì ê³µë ëžëŠ¿ì§ì ì ì¡ ì íì ì ííŽìŒ í©ëë€.
torlauncher.error_bridgedb_bridges_missing=ëžëŠ¿ì§ë¥Œ ìì²íŽì£Œìžì.
-torlauncher.error_bridge_bad_default_type=ì ì¡ ì í %Sê° ì ê³µí ëžëЬì§ë ì íšíì§ ììµëë€. ì€ì ì ì¡°ì íììì€.
+torlauncher.error_bridge_bad_default_type=ì ì¡ ì í %Sê° ì ê³µí ëžëŠ¿ì§ë ì íšíì§ ììµëë€. ì€ì ì ì¡°ì íììì€.
torlauncher.bridge_suffix.meek-amazon=(ì€êµìì ìŒíêž°)
torlauncher.bridge_suffix.meek-azure=(ì€êµìì ìŒíêž°)
@@ -58,25 +58,25 @@ torlauncher.bootstrapStatus.conn_pt=ëžëŠ¿ì§ì ì°ê²°íê³ ììµëë€.
torlauncher.bootstrapStatus.conn_done_pt=ëžëŠ¿ì§ì ì°ê²°ëììµëë€.
torlauncher.bootstrapStatus.conn_proxy=íë¡ìì ì°ê²°íê³ ììµëë€.
torlauncher.bootstrapStatus.conn_done_proxy=íë¡ìì ì°ê²°ëììµëë€.
-torlauncher.bootstrapStatus.conn=Tor 늎ë ìŽì ì°ê²°íê³ ììµëë€.
-torlauncher.bootstrapStatus.conn_done=Tor 늎ë ìŽì ì°ê²°ëììµëë€.
-torlauncher.bootstrapStatus.handshake=Tor 늎ë ìŽì ë€ê³ íê³ ììµëë€.
-torlauncher.bootstrapStatus.handshake_done=Tor 늎ë ìŽìì ë€ê³ 륌 ìë£íììµëë€.
+torlauncher.bootstrapStatus.conn=Tor ì€ê³ìë²ì ì°ê²°íê³ ììµëë€.
+torlauncher.bootstrapStatus.conn_done=Tor ì€ê³ìë²ì ì°ê²°ëììµëë€.
+torlauncher.bootstrapStatus.handshake=Tor ì€ê³ìë²ì ë€ê³ íê³ ììµëë€.
+torlauncher.bootstrapStatus.handshake_done=Tor ì€ê³ìë²ìì ë€ê³ 륌 ìë£íììµëë€.
torlauncher.bootstrapStatus.onehop_create=겜ë¡ìì ì°ê²°ì ìížííŽì ë§ë€ê³ ììŽì
torlauncher.bootstrapStatus.requesting_status=ë€ížìí¬ì ìí륌 ê°ì žì€ê³ ììµëë€.
torlauncher.bootstrapStatus.loading_status=ë€ížìí¬ì ìí륌 ë¶ë¬ì€ê³ ììµëë€.
torlauncher.bootstrapStatus.loading_keys=ìžìŠì륌 ë¡ë©íê³ ììµëë€.
torlauncher.bootstrapStatus.requesting_descriptors=ì€ê³ìë² ì 볎륌 ìì²íê³ ììµëë€.
torlauncher.bootstrapStatus.loading_descriptors=ì€ê³ìë² ì 볎륌 ë¶ë¬ì€ê³ ììµëë€.
-torlauncher.bootstrapStatus.enough_dirinfo=늎ë ìŽ ì 볎 ë¶ë¬ì€êž°ì ìë£íììµëë€.
+torlauncher.bootstrapStatus.enough_dirinfo=ì€ê³ìë² ì 볎 ë¶ë¬ì€êž°ì ìë£íììµëë€.
torlauncher.bootstrapStatus.ap_conn_pt=ì°íë¡ ì°ê²°: ëžëŠ¿ì§ì ì°ê²°íê³ ììµëë€.
torlauncher.bootstrapStatus.ap_conn_done_pt=ì°íë¡ ì°ê²°: ëžëŠ¿ì§ì ì°ê²°ëììµëë€.
torlauncher.bootstrapStatus.ap_conn_proxy=ì°íë¡ ì°ê²°: íë¡ìì ì°ê²°íê³ ììµëë€.
torlauncher.bootstrapStatus.ap_conn_done_proxy=ì°íë¡ ì°ê²°: íë¡ìì ì°ê²°ëììµëë€.
-torlauncher.bootstrapStatus.ap_conn=ì°íë¡ ì°ê²°: Tor 늎ë ìŽì ì°ê²°íê³ ììµëë€.
-torlauncher.bootstrapStatus.ap_conn_done=ì°íë¡ ì°ê²°: Tor 늎ë ìŽì ì°ê²°ëììµëë€.
-torlauncher.bootstrapStatus.ap_handshake=ì°íë¡ ì°ê²°: Tor 늎ë ìŽì ë€ê³ íê³ ììµëë€.
-torlauncher.bootstrapStatus.ap_handshake_done=ì°íë¡ ì°ê²°: Tor 늎ë ìŽìì ë€ê³ ê° ëë¬ìµëë€.
+torlauncher.bootstrapStatus.ap_conn=ì°íë¡ ì°ê²°: Tor ì€ê³ìë²ì ì°ê²°íê³ ììµëë€.
+torlauncher.bootstrapStatus.ap_conn_done=ì°íë¡ ì°ê²°: Tor ì€ê³ìë²ì ì°ê²°ëììµëë€.
+torlauncher.bootstrapStatus.ap_handshake=ì°íë¡ ì°ê²°: Tor ì€ê³ìë²ì ë€ê³ íê³ ììµëë€.
+torlauncher.bootstrapStatus.ap_handshake_done=ì°íë¡ ì°ê²°: Tor ì€ê³ìë²ìì ë€ê³ ê° ëë¬ìµëë€.
torlauncher.bootstrapStatus.circuit_create=ì°íë¡ ì°ê²°: Tor ì°íë¡ê° ì°ê²°ëììµëë€.
torlauncher.bootstrapStatus.done=Tor ë€ížìí¬ì ì°ê²°ëììµëë€.
diff --git a/src/chrome/locale/mr/network-settings.dtd b/src/chrome/locale/mr/network-settings.dtd
index 03f09a6..5ede175 100644
--- a/src/chrome/locale/mr/network-settings.dtd
+++ b/src/chrome/locale/mr/network-settings.dtd
@@ -31,7 +31,7 @@
<!ENTITY torsettings.useProxy.address "Address">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
<!ENTITY torsettings.useProxy.port "à€ªà¥à€°à¥à€">
-<!ENTITY torsettings.useProxy.username "Username">
+<!ENTITY torsettings.useProxy.username "à€µà€Ÿà€ªà€°à€à€°à¥à€€à€Ÿ à€šà€Ÿà€µ ">
<!ENTITY torsettings.useProxy.password "à€ªà€Ÿà€žà€µà€°à¥à€¡ ">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
@@ -71,7 +71,7 @@
<!ENTITY torPreferences.useBridge "Use a bridge">
<!ENTITY torPreferences.requestNewBridge "à€šà€µà¥à€š à€¬à¥à€°à€¿à€à€à¥ à€µà€¿à€šà€à€€à¥ à€à€°à€Ÿ ...">
<!ENTITY torPreferences.provideBridge "Provide a bridge">
-<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advanced "à€ªà¥à€°à€à€€">
<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
diff --git a/src/chrome/locale/my/network-settings.dtd b/src/chrome/locale/my/network-settings.dtd
index ea6ad83..a11cb06 100644
--- a/src/chrome/locale/my/network-settings.dtd
+++ b/src/chrome/locale/my/network-settings.dtd
@@ -1,83 +1,83 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
+<!ENTITY torsettings.dialog.title "Tor ááœááºááẠá¡ááŒááºá¡áááºáá»á¬áž">
+<!ENTITY torsettings.wizard.title.default "Tor ááŸááºá· áá»áááºáááºáááº">
+<!ENTITY torsettings.wizard.title.configure "Tor ááœááºááẠá¡ááŒááºá¡áááºáá»á¬áž">
+<!ENTITY torsettings.wizard.title.connecting "áá»áááºáááºááŸá¯ááá¯ááºáž áááºáá±á¬ááºáá±áááº">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "Tor ááá±á¬ááºáᬠáá¬áá¬á
áá¬áž">
+<!ENTITY torlauncher.localePicker.prompt "áá»á±ážáá°ážááŒá¯á áá¬áá¬á
áá¬ážááœá±ážáá«">
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Click âConnectâ to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click âConfigureâ to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "áá»áááºáááºáááº">
+<!ENTITY torSettings.connectPrompt "Tor ááŸááºá· áá»áááºáááºááẠ"áá»áááºáááºáááº" ááá¯áááºá· ááá¯ááºá¡á¬áž ááŸáááºáá«">
+<!ENTITY torSettings.configurePrompt "ááœááºááẠá¡ááŒááºá¡áááºáá»á¬áž áá»áááºááŸáááẠ"á
á®á
á¥áºáááº" ááá¯áááºá·ááá¯ááºá¡á¬áž ááŸáááºáá«">
+<!ENTITY torSettings.configure "á
á®á
á¥áºáááº">
+<!ENTITY torSettings.connect "áá»áááºáááºáááº">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to startâŠ">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!ENTITY torsettings.startingTor "Tor á
ááá¯á· á
á±á¬ááºá·áá±áá«áááº...">
+<!ENTITY torsettings.restartTor "Tor ááᯠááŒááºáááºá
áááºáááº">
+<!ENTITY torsettings.reconfigTor "ááŒááºáá»áááºááŸááááº">
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
+<!ENTITY torsettings.discardSettings.prompt "Tor áá»áááºáááºáá¶áá¬ážáá»á¬ážá¡á¬áž áááºá
á®áá¶áá¬ážááŸáááŒá®áá«ááŒá® ááá¯á·ááá¯áẠááá¯áááºááŒá¬ážáá¶ proxy áá»á¬ážá á¡ááŒááºá¡áááºáá»á¬ážááᯠááá¯ááºáááºá·ááŒá®ážáá«ááŒá®á â  Tor ááœááºáááºááŸááºá· ááá¯ááºááá¯ááºáá»áááºáááºááẠáááºážá¡ááŒááºá¡áááºáá»á¬ážááᯠáááºááŸá¬ážááá«áááºá">
+<!ENTITY torsettings.discardSettings.proceed "á¡ááŒááºááááºáá»á¬áž áááºááŸá¬ážááŒá®áž áá»áááºáááºáááº">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "áááŒá
áºááá±ááá¯ááº">
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!ENTITY torsettings.useProxy.checkbox "áá»áœááºá¯ááºááẠááŒá¬ážáá¶ proxy áá¯á¶ážá á¡ááºáá¬áááºááŸááºá· áá»áááºáááºáá«áááº">
+<!ENTITY torsettings.useProxy.type "ááŒá¬ážáá¶ proxy á¡áá»áá¯ážá¡á
á¬áž">
+<!ENTITY torsettings.useProxy.type.placeholder "ááŒá¬ážáá¶ proxy á¡áá»áá¯ážá¡á
á¬ážáá
áºáᯠááœá±ážáá«">
+<!ENTITY torsettings.useProxy.address "ááááºá
á¬">
+<!ENTITY torsettings.useProxy.address.placeholder "IP ááááºá
ᬠááá¯á·ááá¯áẠá§ááºá·áá¶áá°á¡ááẠ(hostname)">
<!ENTITY torsettings.useProxy.port "Port">
<!ENTITY torsettings.useProxy.username "á¡áá¯á¶ážááŒá¯áá°á¡áááº">
<!ENTITY torsettings.useProxy.password "á
áá¬ážááŸááº">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
+<!ENTITY torsettings.firewall.checkbox "á¡áá»áá¯á·áá±á¬ port áá»á¬ážááŸááºá·áᬠáá»áááºáááºááŸá¯áá»á¬ážááœááºá·ááŒá¯áááºá· á¡ááœá¬ážá¡áá¬ááááºážáá»á¯ááºáááºá·á¡ááœáŸá¬ (firewall) á¡á¬áž á€ááœááºáá»á°áá¬áááºÂ ááŒááºáááºážáá«áááºá">
+<!ENTITY torsettings.firewall.allowedPorts "ááœááºá·ááŒá¯áá¬ážáá±á¬ ports">
+<!ENTITY torsettings.useBridges.checkbox "áá»áœááºá¯ááºá ááá¯ááºáá¶ááœáẠTor ááᯠáááºáá¬áá¶áá¬ážáá«áááº">
+<!ENTITY torsettings.useBridges.default "áááºááá¯ááœááºážáá¬ážáá±á¬ áá»áááºáááºáá¶áá¬áž ááœá±ážáá«">
+<!ENTITY torsettings.useBridges.default.placeholder "áá»áááºáááºáá¶áá¬áž ááœá±ážáá«">
+<!ENTITY torsettings.useBridges.bridgeDB "torproject.org á០áá»áááºáááºáá¶áá¬áž áá±á¬ááºážááá¯áá«">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "áá¯ááºáá¯á¶áá²á០á
á¬áá¯á¶ážáá»á¬ážááᯠááá¯ááºáááºá·áá«">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "á
áááºáá±á«áºááŸá¯á¡áá
Ạáá°áááº">
<!ENTITY torsettings.useBridges.captchaSubmit "áááºááœááºážáá«á">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
+<!ENTITY torsettings.useBridges.custom "áá»áœááºá¯ááºáááá±á¬ áá»áááºáááºáá¶áá¬áž áá¶á·ááá¯ážáá«">
+<!ENTITY torsettings.useBridges.label "áá¯á¶ááŒááºááá±á¬ á¡áááºážá¡ááŒá
áºá០áá»áááºáááºáá¶áá¬áž á¡áá»ááºá¡ááẠááá¯ááºáááºá·áá«">
+<!ENTITY torsettings.useBridges.placeholder "ááááºá
á¬á¡áá»áá¯ážá¡á
á¬áž : port (áá
áºááŒá±á¬ááºážáá
áºáá¯á
á®)">
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
+<!ENTITY torsettings.copyLog "Tor ááŸááºáááºážááᯠá
á¬áá¯ááºáá±á«áºááá¯á· áá±á¬áºáá®áá°ážáá°áááº">
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
+<!ENTITY torsettings.proxyHelpTitle "Proxy ááŒá¬ážáá¶ á¡áá°á¡áá®">
+<!ENTITY torsettings.proxyHelp1 "áá¯áá¹ááá®á áá»á±á¬ááºážá ááá¯á·ááá¯áẠááá¹áááá¯áẠááœááºáááºáá»á¬ážááŸááºá· áá»áááºáááºáá»áŸáẠááá¯ááẠááŒá¬ážáá¶ proxy ááá¯á¡ááºááá¯ááºáá«áááºá   áááºá០ááŒá¬ážáá¶ proxy ááá¯áááá¯ááŒááºáž ááá±áá»á¬áá«á á¡ááŒá¬áž ááá±á¬ááºáá¬á០á¡ááºáá¬ááẠá¡ááŒááºá¡áááºáá»á¬áž ááá¯á·ááá¯áẠáááºá·á
áá
áºá ááœááºáááºáá»áááºáááºááŸá¯ á¡ááŒááºá¡áááºáá»á¬ážááᯠáá±á·áá¬ááŒááºá·ááŸá¯ááá¯ááºáá«áááºá">
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelpTitle "áá»áááºáááºáá¶áá¬áž áááºáááºá·áááºážááŒááºáž á¡áá°á¡áá®">
+<!ENTITY torsettings.bridgeHelp1 "áá»áááºáááºáá¶áá¬ážáá»á¬áž ááẠTor ááœááºáááºáá»áááºáááºááŸá¯áá»á¬áž ááᯠááááºáááºááẠáááºáá²á¡á±á¬ááºáá¯ááºáááºá· á
á¬áááºážáááœááºážáá¬ážáá±á¬ áááºáááºá·áááºážááŸá¯áá»á¬áž ááŒá
áºáá«áááºá .  áááºáá¬áá¶áááŒááºážááᯠááŸá±á¬ááºáá»ááºááẠáá»áááºáááºáá¶áá¬áž á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážáá
áºáá¯á
á®ááẠááœá²ááŒá¬ážáá±á¬ áááºážáááºážáá»á¬áž á¡áá¯á¶ážááŒá¯áá«áááºá .  Obfs á¡áá»áá¯ážá¡á
á¬ážááẠáááºá· á¡ááºáá¬ááẠá¡ááœá¬ážá¡áá¬áá»á¬ážááᯠáá»áááºážáá°áá¶áá¶áá²á·ááá¯á· á¡áá±á¬ááºáá±á¬ááºááŒá¯áá«áááºá Meeks á¡áá»á
á¯ážá¡á
á¬ážááẠáááºá· á¡ááºáá¬ááẠá¡ááœá¬ážá¡áá¬áá»á¬áž ááá¯á·ááá¯áẠTor ááŸááºá· áá»áááºáááºáá¬ážááŒááºážááᯠá¡ááŒá¬ážáááºáá±á¬ááºááŸá¯ááŸááºá· áá»áááºáááºáá¬ážááŒááºážáá²á·ááá¯á· á¡áá±á¬ááºáá±á¬ááºááŒá¯áá«áááºá">
+<!ENTITY torsettings.bridgeHelp2 "á¡áá»áá¯á·áá±á¬ááá¯ááºáá¶áá»á¬ážááœáẠTor ááᯠááááºáááºááẠááŒáá¯ážá
á¬ážááŒááºážááŒá±á¬ááºá· á¡áá»áá¯á·áá±á¬ áá»áááºáááºáá¶áá¬ážáá»á¬ážááẠá¡áá»áá¯á·ááá¯ááºáá¶ááœááºáᬠá¡áá¯ááºáá¯ááºááŒá®áž á¡ááŒá¬ážááá¯ááºáá¶áá»á¬ážááœáẠá¡áá¯ááºááá¯ááºáá«á â  áááºá·ááá¯ááºáá¶ááœáẠáááºáááºá· áá»áááºáááºáá¶áá¬ážáá»á¬ážá á¡áá¯ááºáá¯ááºáááºááᯠááá±áá»á¬áá»áŸáẠtorproject.org/about/contact.html ááá¯á· áááºáá±á¬ááºááŒááºá·ááŸá¯áá±ážáá«á #support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+<!ENTITY torprogress.pleaseWait "áá»áœááºá¯ááºááá¯á·ááŸâ Tor ááœááºáááºááŸááºá· áá»áááºáááºááŸá¯ áá°áá±á¬ááºáá±áá¯ááºáž áá±áá¹áá
á±á¬ááºá·áá±ážáá«á   á€áá¯ááºáá±á¬ááºááŸá¯ááẠáááá
áºá¡áááºážá¡áááºááŒá¬ááá¯ááºááááºážáááºá">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
-<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.torSettings "Tor á¡ááŒááºá¡áááºáá»á¬áž">
+<!ENTITY torPreferences.torSettingsDescription "ááá¹áá¬á¡ááŸá¶á·ááŸá áá¯ááºá¡á¬ážáá±ážáá»á¬áž áá¯ááºáá±á¬ááºáá±á¬ Tor ááœááºáááºáá±á«áºááœáẠáááºá·á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠTor ááá±á¬ááºáá¬á០áááºážááŒá±á¬ááºážáá±ážáá«áááºá" >
+<!ENTITY torPreferences.learnMore "áááºáá¶áá±á·áá¬áááº">
<!ENTITY torPreferences.bridges "Bridges">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
-<!ENTITY torPreferences.requestNewBridge "Request a New BridgeâŠ">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.bridgesDescription "áá»áááºáááºáá¶áá¬ážáá»á¬ážááẠTor ááᯠááááºáááºáá¬ážáá±á¬ áá±áá¬áá»á¬ážááœáẠTor ááœááºáááºááŸááºá· áá»áááºáááºááẠáá°áá®áá±ážáá«áááºá áááºá· áááºáá±áá¬áá±á«áºáá°áááºá áá»áááºáááºáá¶áá¬ážáá
áºáá¯ááẠáá±á¬ááºáá
áºáá¯ááẠááá¯áá±á¬ááºážááá¯ááºáá«ááááºá·áááºá">
+<!ENTITY torPreferences.useBridge "áá»áááºáááºáá¶áá¬áž á¡áá¯á¶ážááŒá¯áááº">
+<!ENTITY torPreferences.requestNewBridge "áá»áááºáááºáá¶áá¬ážá¡áá
Ạáá±á¬ááºážááá¯áá«...">
+<!ENTITY torPreferences.provideBridge "áá»áááºáááºáá¶áá¬ážáá
áºáᯠáá¶á·ááá¯ážáááº">
<!ENTITY torPreferences.advanced "á¡áááºá·ááŒááºá·">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
-<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
-<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.advancedDescription "Tor ááá±á¬ááºáá¬á០á¡ááºáá¬áááºááŸááºá· áááºááá¯á·áá»áááºáááºááᯠáá»áááºááŸááá«áááº">
+<!ENTITY torPreferences.firewallPortsPlaceholder "áá±á¬áºáá¬ááŒá¬ážáá¬ážáá±á¬ áááºááá¯ážáá»á¬áž">
+<!ENTITY torPreferences.requestBridgeDialogTitle "áá»áááºáááºáá¶áá¬áž áá±á¬ááºážááá¯áááº">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "BridgeDB ááŸááºá· áááºááœááºáá±áááºá áá±áá¹áá
á±á¬ááºá·áá±ážáá«á">
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "áá°áá¯ááºááá¯ááºá
á
áºáá±ážááŸá¯ááᯠááŒá±á bridge á¡á¬áž áá±á¬ááºážááá¯áá«">
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "ááŒá±ááŸááºážááŸá¯ááẠáááŸááºáááºáá«á ááŒááºá
ááºážááŒááºá·áá±ážáá«á">
+<!ENTITY torPreferences.viewTorLogs "Tor ááŸááºáááºážáá»á¬áž ááá¯ááŒááºá·ááŸá¯áááº">
+<!ENTITY torPreferences.viewLogs "ááŸááºáááºážáá»á¬áž ááŒááºá·ááŸá¯áááº...">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor ááŸááºáááºážáá»á¬áž">
diff --git a/src/chrome/locale/my/torlauncher.properties b/src/chrome/locale/my/torlauncher.properties
index 443dc34..fb9e74e 100644
--- a/src/chrome/locale/my/torlauncher.properties
+++ b/src/chrome/locale/my/torlauncher.properties
@@ -3,81 +3,81 @@
torlauncher.error_title=Tor Launcher
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
+torlauncher.tor_exited_during_startup=Tor ááẠá
áááºáá±áá¯ááºáž ááœááºááœá¬ááœá¬ážáááºá áááºážááŒá
áºáááºááŸá¯ááẠáááºá· torrc ááá¯ááºáá»ááºááœááºááŸá¯á Tor ááá¯á·ááá¯áẠáááºá· á
á
áºá
áááºá
áá
áºáá±á«áºááœááºááŸááá±á¬ á¡ááŒá¬áž á¡áá¹ááá®áá±ážááŸááºážá áá»ááºááœááºááŸá¯á ááá¯á·ááá¯áẠáá»áá¯ážááœááºážáá±áá±á¬ áá¬á·ááºáá² ááŒá±á¬ááºá·ááŒá
áºááá¯ááºáá«áááºáâ áááºá០ááŒá¿áá¬á á¡áááºážá¡ááŒá
áºááᯠááŒá±ááŸááºážááŒá®áž Tor ááᯠááááºááŒá®ážááŒááºááœááºá· (restart) áá¯ááºáááºá¡áá Tor ááẠá¡áá¯ááºááá¯ááºáá«á
+torlauncher.tor_exited=ááá»áŸá±á¬áºáááºá·áá² Tor áááºááááºááœá¬ážáá«áááºá áááºážááŒá
áºáááºááẠTor ááœááºáž ááá¯á·ááá¯áẠáááºá·á
á
áºá
áááºá
áá
áºáá±á«áºááœááºááŸááá±á¬ á¡ááŒá¬áž á¡áá¹ááá®áá±ážááŸááºážá áá»ááºááœááºááŸá¯á ááá¯á·ááá¯áẠáá»áá¯á·ááœááºážáá±áá±á¬ áá¬á·ááºáá² ááŒá±á¬ááºá·ááŒá
áºááá¯ááºáá«áááºáâ áááºá០Tor ááᯠááááºááŒá®ážááŒááºááœááºá·ááŒááºáž (restart) áá¯ááºáááºá¡áá Tor ááá±á¬ááºáá¬ááẠáááºáááºá· áááºááá¯ááºááá¯á០ááœááºá·áááá«á ááŒá¿áá¬ááẠáááºááŒá
áºáá±áá±ážáá»áŸáẠáá»áœááºá¯ááºááá¯á· á¡áá°á¡áá®áá±ážáá±á¬ á¡áááºá
žá
á®ááá¯á· Tor ááŸááºáááºážáá°ážááá¯á·áá±ážáá«á
+torlauncher.tor_exited2=Tor ááᯠááááºááŒá®ážááŒááºááœááºá·ááŒááºáž (restart) ááŒááºá· ááœááºá·áá¬ážáá±á¬ ááá±á¬ááºáá¬áááºááºáá»á¬áž (browser tabs) áááááºááœá¬ážáá«á
+torlauncher.tor_controlconn_failed=Tor ááááºážáá»á¯ááºáá±á¬ port ááŸááºá· áá»áááºáááºááá¯á·áááá«á
+torlauncher.tor_failed_to_start=Tor á
áááºááŒááºáž áá¡á±á¬ááºááŒááºáá«á
+torlauncher.tor_control_failed=Tor ááᯠáááááºážáá»á¯ááºááá¯ááºáá²á·áá«á
+torlauncher.tor_bootstrap_failed=Tor á០Tor ááœááºáááºááŸááºá· áá»áááºáááºááŸá¯ ááŒá¯áá¯ááºááŒááºáž áá¡á±á¬ááºááŒááºáá«á
+torlauncher.tor_bootstrap_failed_details=%1$S áá¡á±á¬ááºááŒááºáá« (%2$S)
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
+torlauncher.unable_to_start_tor=Tor á¡á¬áž á
áááºááá¯á·áááá«á\n\n%S
+torlauncher.tor_missing=Tor áááºáááºáááºááá¯áẠáá»á±á¬ááºáá±áá«áááºá
+torlauncher.torrc_missing=Torcc ááá¯ááºááẠáá»á±á¬ááºáá±ááŒá®áž áááºáá®ážá áááá«á
+torlauncher.datadir_missing=Tor áá±áᬠáááºážááœáŸááºááŒá±á¬ááºážááẠáááºááŸáááŸá¯áááŸáá áááºáá®ážááá¯á·áááá«á
+torlauncher.onionauthdir_missing=Tor onion á¡áááºááŒá¯ááẠáááºážááœáŸááºááŒá±á¬ááºáž áááºááŸáááŸá¯áááŸáá áááºáá®ážááá¯á·áááá«á
+torlauncher.password_hash_missing=áá
áºáááºáᬠáá¯ááºááŒááºá·ááŒá±á¬ááºážáá²áá¬ážáá±á¬ á
áá¬ážááŸáẠááá°ááŒááºáž áá¡á±á¬ááºááŒááºáá«á
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
+torlauncher.failed_to_get_settings=Tor á¡ááŒááºá¡áááºáá»á¬áž ááá°ááááá«á\n\n%S
+torlauncher.failed_to_save_settings=Tor á¡ááŒááºá¡áááºáá»á¬áž ááááºážáááºážááááá«á\n\n%S
+torlauncher.ensure_tor_is_running=áá»á±ážáá°ážááŒá¯á Tor á¡áá¯ááºáá¯ááºáá±ááŒá±á¬ááºáž áá±áá»á¬á
á
áºáá«á
torlauncher.error_proxy_addr_missing=á¡ááºáá¬áááºááᯠáá¯á¶ážá
áœá²ááá¯ááºááẠááá±á¬ááºáá®ááᯠáá¶ááŒá®áž Tor ááᯠááŒááºáááºááẠIP ááááºá
ᬠ(ááá¯á·)â host á¡ááẠááŸááºá· port áá¶áá«áẠáá
áºáá¯ááᯠááœá²ááŒá®áž áááºááŸááºááá¯á· ááá¯áááºá
torlauncher.error_proxy_type_missing=ááá±á¬ááºáá® á¡áá»áá¯ážá¡á
á¬ážááᯠááœá±ážáá»ááºááááºá
torlauncher.error_bridges_missing=âBridge áá
áºáᯠ(ááá¯á·) áá
áºáá¯áá ááœá±ážáá»ááºááááºá
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
+torlauncher.error_default_bridges_type_missing=áá±á¬ááºáá¶á·áá¬ážáá±á¬ áá»áááºáááºáá¶áá¬ážáá»á¬ážá¡ááœáẠáááºáá°áá±áž á¡áá»áá¯ážá¡á
á¬áž áá
áºáᯠááœá±ážááá«áááºá
+torlauncher.error_bridgedb_bridges_missing=áá»á±ážáá°ážááŒá¯á áá»áááºáááºáá¶áá¬áž áá±á¬ááºážááá¯áá±ážáá«á
+torlauncher.error_bridge_bad_default_type=áá±á¬ááºáá¶á·áá±áá±á¬ áááºáááºá· áá»áááºáááºáá¶áá¬ážááẠ%S ááá¯áááºá· áááºáá°á¡áá»áá¯ážá¡á
á¬áž áááŸááá«áâ áááºá· á¡ááŒááºá¡áááºáá»á¬ážááᯠáá»áááºááŸááá±ážáá«á
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
+torlauncher.bridge_suffix.meek-amazon=(ááá¯ááºááŒááºááœáẠá¡áá¯ááºáá¯ááºáááº)
+torlauncher.bridge_suffix.meek-azure=(ááá¯ááºááŒááºááœáẠá¡áá¯ááºáá¯ááºáááº)
-torlauncher.request_a_bridge=Request a BridgeâŠ
-torlauncher.request_a_new_bridge=Request a New BridgeâŠ
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
+torlauncher.request_a_bridge=áá»áááºáááºáá¶áá¬áž áá±á¬ááºážááá¯áá«...
+torlauncher.request_a_new_bridge=áá»áááºáááºáá¶áá¬ážá¡áá
Ạáá±á¬ááºážááá¯áá«...
+torlauncher.contacting_bridgedb=BridgeDB áá»áááºáááºáá¶áá¬ážááŸááºá· áááºááœááºáá±áááºá áá±áá¹áá
á±á¬ááºá·áá±ážáá«á
+torlauncher.captcha_prompt=áá°áá¯ááºááá¯ááºá
á
áºáá±ážááŸá¯ááᯠááŒá±á bridge á¡á¬áž áá±á¬ááºážááá¯áá«
+torlauncher.bad_captcha_solution=ááŒá±ááŸááºážááŸá¯ááẠáááŸááºáááºáá«á ááŒááºá
ááºážááŒááºá·áá±ážáá«á
+torlauncher.unable_to_get_bridge=BridgeDB á០áá»áááºáááºáá¶áá¬áž áááá°ááá¯ááºáá«á\n\n%S
+torlauncher.no_meek=ááá±á¬ááºáá¬ááẠá¡ááºáá¬ááẠá¡ááœá¬ážá¡áá¬á¡áá±á¬ááºá¡áá±á¬ááºááŒá¯ááẠ(meek) áá
á®áá¶áá¬ážáá«á áá»áááºáááºáá¶áá¬ážáá»á¬áž ááá°ááẠááá¯á¡ááºáá«áááºá
+torlauncher.no_bridges_available=áááºá¡áá»áááºááœáẠáááºáááºá· áá»áááºáááºáá¶áá¬ážá០ááááá¯ááºáá«áâ áááºážáááºážáá«áááºá
torlauncher.connect=áá»áááºáááºáááº
-torlauncher.restart_tor=Restart Tor
+torlauncher.restart_tor=Tor ááᯠááŒááºáááºá
áááºáááº
torlauncher.quit=ááœááºáááº
torlauncher.quit_win=ááœááºáááº
torlauncher.done=ááŒá®ážáá«ááŒá®
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
+torlauncher.forAssistance=á¡áá°á¡áá®áá±á¬ááºážááẠ%S ááá¯á·áááºááœááºáá«
+torlauncher.forAssistance2=á¡áá°á¡áá®ááá°ááẠ%S ááá¯á· áááºáá±á¬ááºáá±á·áá¬áá«
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
+torlauncher.copiedNLogMessages=áá±á¬áºáá®áá°áž áá°ááŒá®ážáá«ááŒá®á %S Tor ááŸááºáááºážáááºáá±á·áá»áºáá»á¬ážááẠá
á¬áá¬ážá¡ááºáá®áᬠ(text editor) ááá¯á·ááá¯áẠá¡á®ážáá±ážááºáááºáá±á·áá»áº áá±á«áºááá¯á· áá°ážáá°ááẠá¡áááºáááºá·ááŒá
áºáá«ááŒá®ážá
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=á
á¬ááŸááºáá¬ážáááºá· ááá¯ááºáááºážááŒá±á¬ááºáž áá»áááºáááºááŸá¯ áá
áºáᯠáááºáá±á¬ááºáá±áááº
+torlauncher.bootstrapStatus.starting=á
áá±ááŒá®
+torlauncher.bootstrapStatus.conn_pt=áá»áááºáááºáá¶áá¬áž ááŸááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.conn_done_pt=áá»áááºáááºáá¶áá¬áž ááŸááºá· áá»áááºááŒá®ážáá«ááŒá®
+torlauncher.bootstrapStatus.conn_proxy=ááŒá¬ážáá¶ proxy ááŸááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.conn_done_proxy=ááŒá¬ážáá¶ proxy ááŸááºá· áá»áááºáááºááŒá®áž
+torlauncher.bootstrapStatus.conn=Tor áááºáááºá·áááºážááŸá¯ ááŒááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.conn_done=Tor áááºáááºá·áááºážááŸá¯ ááŒááºá· áá»áááºáááºááŒá®áž
+torlauncher.bootstrapStatus.handshake=Tor áááºáááºá·áááºážááŸá¯ ááŒááºá· ááŸáááŸáá¯ááºážáá±áááº
+torlauncher.bootstrapStatus.handshake_done=Tor áááºáááºá·áááºážááŸá¯ ááŒááºá· ááŸáááŸáá¯ááºážááŒá®áž
+torlauncher.bootstrapStatus.onehop_create=áá¯ááºááŒááºá·á
á¬ááŸááºáá¬ážáááºá· ááá¯ááºáááºážááŒá±á¬ááºáž áá»áááºáááºááŸá¯ áá
áºáᯠáááºáá±á¬ááºáá±áááº
torlauncher.bootstrapStatus.requesting_status=ááœááºááẠá¡áá±á¡áá¬ážááᯠááŒááºááá°áá±áááº
torlauncher.bootstrapStatus.loading_status=ááœááºááẠá¡áá±á¡áá¬ážááᯠááœááºá·áá±áááº
torlauncher.bootstrapStatus.loading_keys=áá¯ááºááá¯ááºááœááºá· áááºááŸááºáá»á¬ážááᯠááá°áá±áááº
-torlauncher.bootstrapStatus.requesting_descriptors=Relay á¡áá»ááºá¡áááºááᯠáá±á¬ááºážáá¶áá±áááº
-torlauncher.bootstrapStatus.loading_descriptors=Relay á¡áá»ááºá¡áááºáá»á¬ážááᯠááá°áá±áááº
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
+torlauncher.bootstrapStatus.requesting_descriptors=áááºáááºá·áááºáž á¡áá»ááºá¡áááºááᯠáá±á¬ááºážáá¶áá±áááº
+torlauncher.bootstrapStatus.loading_descriptors=áááºáááºá·áááºáž á¡áá»ááºá¡áááºáá»á¬ážááᯠááá°áá±áááº
+torlauncher.bootstrapStatus.enough_dirinfo=áááºáááºá·áááºáž á¡áá»ááºá¡áááºáá»á¬áž áááºááŒááºáž ááŒá®ážá
á®áž
+torlauncher.bootstrapStatus.ap_conn_pt=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- áá»áááºáááºáá¶áá¬áž ááŸááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.ap_conn_done_pt=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- áá»áááºáááºáá¶áá¬áž ááŸááºá· áá»áááºááŒá®ážáá«ááŒá®
+torlauncher.bootstrapStatus.ap_conn_proxy=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- ááŒá¬ážáá¶ proxy ááŸááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.ap_conn_done_proxy=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- ááŒá¬ážáá¶ proxy ááŸááºá· áá»áááºááŒá®ážáá«ááŒá®
+torlauncher.bootstrapStatus.ap_conn=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- Tor áááºáááºá·áááºážááŸá¯ ááŸááºá· áá»áááºáá±áááº
+torlauncher.bootstrapStatus.ap_conn_done=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- Tor áááºáááºá·áááºážááŸá¯ ááŸááºá· áá»áááºááŒá®ážáá«ááŒá®
+torlauncher.bootstrapStatus.ap_handshake=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- Tor áááºáááºá·áááºážááŸá¯ ááŸááºá· ááŸáááŸáá¯ááºážáá±áá«áááº
+torlauncher.bootstrapStatus.ap_handshake_done=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- Tor áááºáááºá·áááºážááŸá¯ ááŸááºá· ááŸáááŸáá¯ááºážááŒá®ážáá«ááŒá®
+torlauncher.bootstrapStatus.circuit_create=áááºážááŒá±á¬ááºážáá»á¬áž áááºáá±á¬ááºáá±áá«ááẠ- Tor áááºážááŒá±á¬ááºáž áá°áá±á¬ááºáá±áá«áááº
torlauncher.bootstrapStatus.done=Tor ááœááºáááºááᯠáá»áááºáááºáááááº!
torlauncher.bootstrapWarning.done=ááŒá®ážááœá¬ážááŒá®
@@ -88,8 +88,8 @@ torlauncher.bootstrapWarning.identity=á¡áá±á¬ááºá¡áá¬áž ááá
torlauncher.bootstrapWarning.timeout=áá»áááºáááºááŸá¯ááá¯ááºáž ááŒááºááœá¬ážáááº
torlauncher.bootstrapWarning.noroute=Host ááᯠááœá¬ážáááºá· áááºážáááŸááá«
torlauncher.bootstrapWarning.ioerror=á¡áá±áž/á¡ááẠáá»áá¯á·ááœááºážáá»ááº
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=á¡ááœá¬ážá¡áá¬á¡áá±á¬ááºáá±á¬ááºááŸá¯ áááááᬠáá»á±á¬ááºáá±áá«áááº
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=áá¬áá¬ááŸááºá· áá»áááºáááºááŸá¯ áá»á±á¬ááºáá¯á¶ážáá²á·áá«áááºá
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=áá¬áá¬ááŸááºá· ááá»áááºáááºááá¯ááºáá²á·áá«á
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=ááŒá¬ážáá¶ proxy ááŸááºá· ááá»áááºáááºááá¯ááºáá²á·áá«á
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index e42d21e..0788eda 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -9,8 +9,8 @@
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Clique em âConectar-seâ para conectarse ao Tor.">
-<!ENTITY torSettings.configurePrompt "Clique em âConfigurarâ para definir as configurações de rede caso esteja um paÃs em que o uso de Tor é impossibilitado (Egito, China e Turquia, por exemplo) ou esteja conectando-se por meio de uma rede privada que requeira um proxy.">
+<!ENTITY torSettings.connectPrompt "Clique em âConectarâ para conectar-se ao Tor.">
+<!ENTITY torSettings.configurePrompt "Clique em âConfigurarâ para definir as configurações de rede caso esteja em um paÃs em que o uso de Tor é impossibilitado (Egito, China e Turquia, por exemplo) ou esteja conectando-se por meio de uma rede privada que requeira um proxy.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connect "Conectar">
diff --git a/src/chrome/locale/pt-BR/torlauncher.properties b/src/chrome/locale/pt-BR/torlauncher.properties
index 5da7e8f..7320536 100644
--- a/src/chrome/locale/pt-BR/torlauncher.properties
+++ b/src/chrome/locale/pt-BR/torlauncher.properties
@@ -49,7 +49,7 @@ torlauncher.quit_win=Sair
torlauncher.done=Terminado
torlauncher.forAssistance=Para assistência, contactar %S
-torlauncher.forAssistance2=Se você precisar de assistência, por favor visite %S
+torlauncher.forAssistance2=Se você precisar de assistência, visite %S
torlauncher.copiedNLogMessages=Cópia concluÃda. As mensagens %S do Tor log estão prontas para ser copiadas em um editor de texto ou em uma mensagem de e-mail.
diff --git a/src/chrome/locale/sq/network-settings.dtd b/src/chrome/locale/sq/network-settings.dtd
index c280461..a9233f7 100644
--- a/src/chrome/locale/sq/network-settings.dtd
+++ b/src/chrome/locale/sq/network-settings.dtd
@@ -67,7 +67,7 @@
<!ENTITY torPreferences.torSettingsDescription "Shfletuesi Tor e kalon trafikun tuaj përmes Rrjetit Tor, i mbajtur në këmbë nga mijëra vullnetarë anembanë botës." >
<!ENTITY torPreferences.learnMore "Mësoni Më Tepër">
<!ENTITY torPreferences.bridges "Ura">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.bridgesDescription "Urat ju ndihmojnë të përdorni Rrjetin Tor në vende ku Tor-i është i bllokuar. Në varësi të vendit ku ndodheni, një urë mund të punojë më mirë se një tjetër.">
<!ENTITY torPreferences.useBridge "Përdorni një urë">
<!ENTITY torPreferences.requestNewBridge "Kërkoni një Urë të ReâŠ">
<!ENTITY torPreferences.provideBridge "Furnizoni një urë">
diff --git a/src/chrome/locale/sq/torlauncher.properties b/src/chrome/locale/sq/torlauncher.properties
index 1020442..26b3444 100644
--- a/src/chrome/locale/sq/torlauncher.properties
+++ b/src/chrome/locale/sq/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=Sâarrihet të niset Tor-i.\n\n%S
torlauncher.tor_missing=Mungon kartela e ekzekutueshme Tor
torlauncher.torrc_missing=Mungon kartela torrc dhe sâmund të krijohet.
torlauncher.datadir_missing=Drejtoria e të dhënave Tor sâekziston dhe sâmund të krijohet.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
+torlauncher.onionauthdir_missing=Drejtoria e mirëfilltësimeve Onion e Tor-it nuk ekziston ose sâu krijua dot.
torlauncher.password_hash_missing=Sâu arrit të merrej fjalëkalim me hash.
torlauncher.failed_to_get_settings=Sâarrihet të merren rregullime për Tor-in.\n\n%S
@@ -43,7 +43,7 @@ torlauncher.no_meek=Ky shfletues sâështë formësuar për meek, i cili ësht
torlauncher.no_bridges_available=Sâka ura të passhme tani. Na ndjeni.
torlauncher.connect=Lidhu
-torlauncher.restart_tor=Riniseni Tor
+torlauncher.restart_tor=Riniseni Tor-in
torlauncher.quit=Mbylle
torlauncher.quit_win=Dil
torlauncher.done=U bë
@@ -82,13 +82,13 @@ torlauncher.bootstrapStatus.done=I lidhur me rrjetin Tor!
torlauncher.bootstrapWarning.done=kryer
torlauncher.bootstrapWarning.connectrefused=lidhja u refuzua
-torlauncher.bootstrapWarning.misc=i përzier
+torlauncher.bootstrapWarning.misc=të ndryshme
torlauncher.bootstrapWarning.resourcelimit=burime të pamjaftueshme
torlauncher.bootstrapWarning.identity=mospërputhje identitetesh
torlauncher.bootstrapWarning.timeout=mbarim kohe për lidhjen
torlauncher.bootstrapWarning.noroute=sâka rrugë për te streha
torlauncher.bootstrapWarning.ioerror=gabim leximi/shkrimi
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=mungon transport shtojcë
torlauncher.nsresult.NS_ERROR_NET_RESET=Humbi lidhja me shërbyesin.
torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Sâu bë dot lidhja me shërbyesin.
diff --git a/src/chrome/locale/sv-SE/torlauncher.properties b/src/chrome/locale/sv-SE/torlauncher.properties
index b267016..2e024bd 100644
--- a/src/chrome/locale/sv-SE/torlauncher.properties
+++ b/src/chrome/locale/sv-SE/torlauncher.properties
@@ -58,7 +58,7 @@ torlauncher.bootstrapStatus.conn_pt=Ansluter till bron
torlauncher.bootstrapStatus.conn_done_pt=Ansluten till bron
torlauncher.bootstrapStatus.conn_proxy=Ansluter till proxyservern
torlauncher.bootstrapStatus.conn_done_proxy=Ansluten till proxyservern
-torlauncher.bootstrapStatus.conn=Ansluter till en Tor-relÀ
+torlauncher.bootstrapStatus.conn=Anslutning till en Tor-relÀ
torlauncher.bootstrapStatus.conn_done=Ansluten till en Tor-relÀ
torlauncher.bootstrapStatus.handshake=Förhandlar med en Tor-relÀ
torlauncher.bootstrapStatus.handshake_done=Avslutade förhandlingarna med en Tor-relÀ
diff --git a/src/chrome/locale/sw/network-settings.dtd b/src/chrome/locale/sw/network-settings.dtd
index 89988de..e2a96ab 100644
--- a/src/chrome/locale/sw/network-settings.dtd
+++ b/src/chrome/locale/sw/network-settings.dtd
@@ -5,31 +5,31 @@
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Lugha za Kivinjari cha Tor">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.prompt "Tafadhali chagua lugha.">
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Click âConnectâ to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click âConfigureâ to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
+<!ENTITY torSettings.connectPrompt "Bonyeza "Unganisha" kwa kuunganisha kwa Tor.">
+<!ENTITY torSettings.configurePrompt "Bonyeza "Usanidi" kurekebisha mpangilio wa mtandao kama upo kwenye nchi ambayo ina vithibiti vya Tor (kama vile fiche, china, Turkey) au kama inaunganishwa kupitia mtandao binafsi ambao inahitaji wakala.">
+<!ENTITY torSettings.configure "Sanidi">
<!ENTITY torSettings.connect "Unganisha">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to startâŠ">
+<!ENTITY torsettings.startingTor "Subiri kwa kuana kwa Tor...">
<!ENTITY torsettings.restartTor "Anzisha Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!ENTITY torsettings.reconfigTor "Kusanidi upya">
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
+<!ENTITY torsettings.discardSettings.prompt "Umeshasanidi madaraja ya Tor au umeingiza mpangilio wa wakala wa mtaa.  kuweka moja kwa moja kuunganisha kwenye mtandao wa Tor, mpangilio huu lazima utolewe.">
+<!ENTITY torsettings.discardSettings.proceed "Ondoa mpangilio na kuunganisha">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "Hiari">
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!ENTITY torsettings.useProxy.checkbox "Natumia wakala kuunganisha kwenye mtandao">
+<!ENTITY torsettings.useProxy.type "Aina ya Wakala">
+<!ENTITY torsettings.useProxy.type.placeholder "Chagua aina ya wakala">
+<!ENTITY torsettings.useProxy.address "Anwani">
+<!ENTITY torsettings.useProxy.address.placeholder "Anwani ya IP au jina la mwenyeji">
<!ENTITY torsettings.useProxy.port "Bandari">
<!ENTITY torsettings.useProxy.username "Jina la mtumiaji">
<!ENTITY torsettings.useProxy.password "Nywila
@@ -38,47 +38,47 @@ nenosiri">
<!ENTITY torsettings.useProxy.type.socks5 "SOKSI 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Kompyuta hii inaenda kupitia firewall ambayo inaruhusu tu kunganisha kwenye poti flani ">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
+<!ENTITY torsettings.firewall.allowedPorts "Kuruhusiwa kwa porti">
+<!ENTITY torsettings.useBridges.checkbox "Tor imekaguliwa kwenye nchi yangu">
+<!ENTITY torsettings.useBridges.default "Chagua ndani ya daraja">
+<!ENTITY torsettings.useBridges.default.placeholder "Chagua daraja">
+<!ENTITY torsettings.useBridges.bridgeDB "Maombi ya daraja kutoka kwenye mradi wa Tor.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Weka wahusika kutoka kwenye picha">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Pata changamoto mpya">
<!ENTITY torsettings.useBridges.captchaSubmit "Wasilisha">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
+<!ENTITY torsettings.useBridges.custom "Toa daraja Najua">
+<!ENTITY torsettings.useBridges.label "Weka taarifa za daraja kutoka chanzo cha kuaminika.">
+<!ENTITY torsettings.useBridges.placeholder " ina ya anwani:porti (moja kwa mstari)">
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
+<!ENTITY torsettings.copyLog "Nakili Log ya Tor kwa clipboard">
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
+<!ENTITY torsettings.proxyHelpTitle "Msaada wa Wakala">
+<!ENTITY torsettings.proxyHelp1 "Mitaa ya wakala inaweza kutaka wakati unaunganisha kupitia kompyuta, shule, au mtandao wa vyuo. Kama hauna uhakika ikiwa wakala atahitaji, angalia mpangilio wa kimtandao kwenye kivinjari chingine au angalia mpangilio wako mfumo wa kimtandao.">
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelpTitle "Msaada wa daraja Relay">
+<!ENTITY torsettings.bridgeHelp1 "Madaraja hayajaorodheshwa kudanganya kua inapelekea ugumu zaidi kufungia uunganishwaji kwenye Mtandao wa Tor.  Kila aina ya daraja inatumia njia tofauti kuzuia udhibiti.  obfs moja inapelekeatrafiki yako ionekane kama kelele za nasibu, na meek moja inapelekea trafiki yako ionekane kama ieunganishwa kwenye hiyo huduma badala yake kwa Tor. ">
+<!ENTITY torsettings.bridgeHelp2 "Kwa sababu ni vipi baadhi nchi wamejaribu kufungia Tor, madaraja fulani yanafanya kazi kwenye baadhi ya nchi lakini sio wengio.  kama unauhakika kuhusu madaraja yapi kwenye nchi yako, tembelea torproject.org/about/contact.html#support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+<!ENTITY torprogress.pleaseWait "Tafadhali subiri ikiwa tutaanzisha kuunganisha kwenye mtandao wa Tor.  Hii inaweza inachukua dakika kadhaa.">
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "Tor">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.torSettings "Mpangilio wa Tor">
+<!ENTITY torPreferences.torSettingsDescription "Njia ya kivinjari cha Tor trafiki yako zaidi kwenye mtandao wa Tor, endesha kwa elfumoja kwa kujitolea ulimwenguni kote." >
<!ENTITY torPreferences.learnMore "jifunze zaid">
<!ENTITY torPreferences.bridges "Madaraja">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
+<!ENTITY torPreferences.bridgesDescription "Madaraja yanakusaidia kufikia mtandao wa Tor sehemu ambayo Tor imefungiwa. Inategemea kua wapi ulipo, daraja moja linaweza kufanya kazi vizuri kuliko lingine.">
+<!ENTITY torPreferences.useBridge "Tumia daraja">
<!ENTITY torPreferences.requestNewBridge "Ombi la Daraja jipya...">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.provideBridge "Kutoa daraja">
<!ENTITY torPreferences.advanced "Iliyoboreshwa">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!ENTITY torPreferences.advancedDescription "Kusanidi vipi kivinjari cha Tor kitaunganisha kwenye mtandao.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Kupotea kwa dhamani ya komma">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Ombi la Daraja">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Kuwasiliana na DarajaDB. Tafadhali subiri.">
<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Tafuta CAPTCHA kwa maombi ya daraja.">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "Suluhisho sio sahihi. Tafadhali jaribu tena.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.viewTorLogs "Angalia log ya Tor.">
+<!ENTITY torPreferences.viewLogs "Angalia Log...">
+<!ENTITY torPreferences.torLogsDialogTitle "Log ya Tor">
diff --git a/src/chrome/locale/sw/torlauncher.properties b/src/chrome/locale/sw/torlauncher.properties
index baef6bd..33085b5 100644
--- a/src/chrome/locale/sw/torlauncher.properties
+++ b/src/chrome/locale/sw/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Uzinduzi wa Tor
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
+torlauncher.tor_exited_during_startup=Tor imetoa wakati wa kuanza. Hii inaweza kupitia kwenye kosa kwenye faili lako la torrc, hitilafu kwenye Tor au kwenye programu nyingine kwenye mfumo wako, auvifaa vibovu. mpaka urekebishe kosa lilopigiwa mstari na anzisha Tor, Kivinjari cha Tor hakitaweza kuanza.
+torlauncher.tor_exited=Tor iliondoka bila kutarajia. Hii inaweza kua kwenye hitilafu kwenye Tor yenyewe, programu nyingine kwenye mfumo wako, au vifaa vibovu. Mpaka uianzishe Tor, Kivinjari cha Tor hakitaweza kuunda kufikia tovuti yeyote. Kama tatizo linaendelea, Tafadhali tuma nakala ya Tor log yako kwa kusaidia timu.
torlauncher.tor_exited2=Kuanza upya kwa Tor haiwezi kufunga kivinjari chako cha tabo.
torlauncher.tor_controlconn_failed=Haiwezi kuunganisha kwa Tor kwa kuthibitisha porti.
torlauncher.tor_failed_to_start=Tor imeshindwa kuanza.
@@ -21,9 +21,9 @@ torlauncher.password_hash_missing=Kushindwa kupata nywila ya haraka.
torlauncher.failed_to_get_settings=Haiwezi kupata tena mpangilio wa Tor. \n\n%S
torlauncher.failed_to_save_settings=Kuezesha mpangilio wa kuokoa Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
+torlauncher.ensure_tor_is_running=Tafadhali hakiki kwamba Tor inafanyakazi.
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
+torlauncher.error_proxy_addr_missing=Lazima uweke zote za kipekee anwani ya IP au jina la mgeni na namba ya porti kwa kusanidi Tor kwa kutumia wakala ili kufikia mtandao.
torlauncher.error_proxy_type_missing=Lazima uchague aina ya wakala.
torlauncher.error_bridges_missing=Lazima utaje moja au madaraja zaidi.
torlauncher.error_default_bridges_type_missing=Lazima utaje aina ya usafiri kwa madaraja yanayotolewa.
diff --git a/src/chrome/locale/tr/network-settings.dtd b/src/chrome/locale/tr/network-settings.dtd
index 3b17d2d..d0f9917 100644
--- a/src/chrome/locale/tr/network-settings.dtd
+++ b/src/chrome/locale/tr/network-settings.dtd
@@ -9,8 +9,8 @@
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Tor aÄına baÄlanmak için "BaÄlan" ÃŒzerine tıklayın.">
-<!ENTITY torSettings.configurePrompt "Tor aÄını engelleyen bir ÃŒlkedeyseniz (Ãin, İran, Suriye gibi) ya da vekil sunucu kullanılması gereken özel bir aÄdan baÄlanıyorsanız, aÄ ayarlarını yapmak için "Yapılandır" ÃŒzerine tıklayın.">
+<!ENTITY torSettings.connectPrompt "Tor aÄı ile baÄlantı kurmak için "BaÄlan" ÃŒzerine tıklayın.">
+<!ENTITY torSettings.configurePrompt "Tor aÄı ile baÄlantı kurulmasını engelleyen bir ÃŒlkede bulunuyorsanız (Ãin, İran, Suriye gibi) ya da vekil sunucu kullanılması gereken özel bir aÄdan baÄlantı kuruyorsanız, aÄ ayarlarını yapmak için "Yapılandır" ÃŒzerine tıklayın.">
<!ENTITY torSettings.configure "Yapılandır">
<!ENTITY torSettings.connect "BaÄlan">
@@ -20,12 +20,12 @@
<!ENTITY torsettings.restartTor "Tor Uygulamasını Yeniden BaÅlat">
<!ENTITY torsettings.reconfigTor "Yeniden Yapılandır">
-<!ENTITY torsettings.discardSettings.prompt "Tor KöprÃŒlerini yapılandırdınız ya da yerel vekil sunucu ayarlarını yazdınız.  Tor aÄına doÄrudan baÄlanmak için bu ayarlar kaldırılmalıdır.">
+<!ENTITY torsettings.discardSettings.prompt "Tor KöprÃŒlerini yapılandırdınız ya da yerel vekil sunucu ayarları girdiniz.  Tor aÄı ile doÄrudan baÄlantı kurmak için bu ayarlar kaldırılmalıdır.">
<!ENTITY torsettings.discardSettings.proceed "Ayarları Kaldır ve BaÄlan">
<!ENTITY torsettings.optional "İsteÄe baÄlı">
-<!ENTITY torsettings.useProxy.checkbox "Internete eriÅmek için vekil sunucu kullanıyorum">
+<!ENTITY torsettings.useProxy.checkbox "İnternet baÄlantısı kurmak için bir vekil sunucu kullanıyorum">
<!ENTITY torsettings.useProxy.type "Vekil Sunucu TÌrÌ">
<!ENTITY torsettings.useProxy.type.placeholder "vekil sunucu tÌrÌnÌ seçin">
<!ENTITY torsettings.useProxy.address "Adres">
@@ -52,10 +52,10 @@
<!ENTITY torsettings.copyLog "Tor GÃŒnlÃŒÄÃŒnÃŒ Panoya Kopyala">
<!ENTITY torsettings.proxyHelpTitle "Vekil Sunucu Yardımı">
-<!ENTITY torsettings.proxyHelp1 "Bir kurum, okul ya da ÃŒniversite aÄı aracılıÄıyla baÄlanırken yerel bir vekil sunucu gereklidir. Bir vekil sunucu kullanıp kullanmamanız gerektiÄinden emin deÄilseniz, bilgisayarınızın aÄa baÄlantı Åeklini anlamak için aynı aÄdaki baÅka bir web tarayıcısının İnternet ayarlarına bakın ya da sisteminizin aÄ ayarlarını gözden geçirin.">
+<!ENTITY torsettings.proxyHelp1 "Bir kurum, okul ya da ÃŒniversite aÄı aracılıÄıyla baÄlantı kurarken yerel bir vekil sunucu gereklidir. Bir vekil sunucu kullanıp kullanmamanız gerektiÄinden emin deÄilseniz, bilgisayarınızın aÄa baÄlantı Åeklini anlamak için aynı aÄdaki baÅka bir web tarayıcısının İnternet ayarlarına bakın ya da sisteminizin aÄ ayarlarını gözden geçirin.">
<!ENTITY torsettings.bridgeHelpTitle "KöprÌ Aktarıcı Yardımı">
-<!ENTITY torsettings.bridgeHelp1 "KöprÃŒler, Tor aÄına baÄlantıların engellenmesini zorlaÅtıran ve herkese açık olarak listelenmeyen aktarıcılardır.  Her köprÃŒ tÃŒrÃŒ engellemeden kaçınmak için farklı bir yöntem kullanır.  Obfs köprÃŒleri, aÄ trafiÄinizi rastgele gÃŒrÃŒltÃŒ gibi gösterir. Meek köprÃŒleri ise, trafiÄinizi Tor aÄı yerine o hizmete baÄlanmıŠgibi gösterir.">
+<!ENTITY torsettings.bridgeHelp1 "KöprÃŒler, Tor aÄı ile baÄlantı kurulmasının engellenmesini zorlaÅtıran ve herkese açık olarak listelenmeyen aktarıcılardır.  Her köprÃŒ tÃŒrÃŒ engellemeden kaçınmak için farklı bir yöntem kullanır.  Obfs köprÃŒleri, aÄ trafiÄinizi rastgele gÃŒrÃŒltÃŒ gibi gösterir. Meek köprÃŒleri ise, trafiÄinizi Tor aÄı ile deÄil o hizmet ile baÄlantı kurulmuÅ gibi gösterir.">
<!ENTITY torsettings.bridgeHelp2 "Bazı ÃŒlkelerin Tor aÄını engellemeye çalıÅması nedeniyle bazı köprÃŒler bazı ÃŒlkelerde çalıÅırken baÅka ÃŒlkelerde çalıÅmayabilir.  Ãlkenizde hangi köprÃŒlerin çalıÅacaÄından emin deÄilseniz, torproject.org/about/contact.html#support adresine bakabilirsiniz.">
<!-- Progress -->
@@ -75,8 +75,8 @@
<!ENTITY torPreferences.advancedDescription "Tor Browser uygulamasının İnternet baÄlantısını yapılandırın.">
<!ENTITY torPreferences.firewallPortsPlaceholder "VirgÃŒl ile ayrılmıŠdeÄerler">
<!ENTITY torPreferences.requestBridgeDialogTitle "KöprÃŒ İsteÄinde Bulunun">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "KöprÃŒ veritabanına baÄlanılıyor. LÃŒtfen bekleyin.">
-<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "KöprÃŒ isteÄinde bulunmak için gÃŒvenlik kodunu çözÃŒn.">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "KöprÃŒ veritabanı ile baÄlantı kuruluyor. LÃŒtfen bekleyin.">
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "KöprÃŒ isteÄinde bulunmak için gÃŒvenlik denetimini geçin.">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "ÃözÃŒm doÄru deÄil. LÃŒtfen yeniden deneyin.">
<!ENTITY torPreferences.viewTorLogs "Tor gÃŒnlÃŒÄÃŒ kayıtlarına bakın.">
<!ENTITY torPreferences.viewLogs "GÃŒnlÃŒÄÃŒ GörÃŒntÃŒleâŠ">
diff --git a/src/chrome/locale/tr/torlauncher.properties b/src/chrome/locale/tr/torlauncher.properties
index 6055fe4..94a9665 100644
--- a/src/chrome/locale/tr/torlauncher.properties
+++ b/src/chrome/locale/tr/torlauncher.properties
@@ -6,10 +6,10 @@ torlauncher.error_title=Tor BaÅlatıcı
torlauncher.tor_exited_during_startup=Tor baÅlatılırken sonlandı. Bu durum torrc dosyasındaki ya da sisteminizdeki baÅka bir uygulamada bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmıŠolabilir. Sorun çözÃŒlene ve Tor uygulaması yeniden baÅlatılana kadar Tor Browser çalıÅmayacak.
torlauncher.tor_exited=Tor, beklenmedik Åekilde sonlandı. Bu durum Tor içinde ya da sisteminizdeki baÅka bir uygulamada bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmıŠolabilir. Yeniden baÅlatılana kadar Tor Browser hiçbir web sitesine eriÅemeyecek. Sorun devam ederse lÃŒtfen Tor GÃŒnlÃŒÄÃŒnÃŒn bir kopyasını destek ekibine gönderin.
torlauncher.tor_exited2=Tor uygulaması yeniden baÅlatıldıÄında tarayıcı sekmeleriniz kapatılmayacak.
-torlauncher.tor_controlconn_failed=Tor denetim baÄlantı noktasına baÄlanılamadı.
+torlauncher.tor_controlconn_failed=Tor denetim kapısı ile baÄlantı kurulamadı.
torlauncher.tor_failed_to_start=Tor baÅlatılamadı.
torlauncher.tor_control_failed=Tor denetimi alınamadı.
-torlauncher.tor_bootstrap_failed=Tor aÄıyla baÄlantı kurulamadı.
+torlauncher.tor_bootstrap_failed=Tor aÄı ile baÄlantı kurulamadı.
torlauncher.tor_bootstrap_failed_details=%1$S baÅarısız oldu (%2$S).
torlauncher.unable_to_start_tor=Tor baÅlatılamadı.\n\n%S
@@ -23,7 +23,7 @@ torlauncher.failed_to_get_settings=Tor ayarları alınamadı.\n\n%S
torlauncher.failed_to_save_settings=Tor ayarları kaydedilemedi.\n\n%S
torlauncher.ensure_tor_is_running=LÃŒtfen Tor uygulamasının çalıÅtıÄından emin olun.
-torlauncher.error_proxy_addr_missing=İnternet'e bir vekil sunucu ÃŒzerinden baÄlanmak için bir IP adresi ya da sunucu adı ile baÄlantı noktası numarasının yazılması gereklidir.
+torlauncher.error_proxy_addr_missing=İnternet ile bir vekil sunucu ÃŒzerinden baÄlantı kurmak için bir IP adresi ya da sunucu adı ile baÄlantı noktası numarasının yazılması gereklidir.
torlauncher.error_proxy_type_missing=Vekil sunucu tÌrÌnÌ seçmelisiniz.
torlauncher.error_bridges_missing=Bir ya da birkaç köprÌ belirtmelisiniz.
torlauncher.error_default_bridges_type_missing=Hazır köprÌler için bir aktarım tÌrÌ seçmelisiniz.
@@ -35,8 +35,8 @@ torlauncher.bridge_suffix.meek-azure=(Ãin'de çalıÅır)
torlauncher.request_a_bridge=KöprÃŒ İsteÄinde BulunâŠ
torlauncher.request_a_new_bridge=Yeni KöprÃŒ İsteÄinde Bulun...
-torlauncher.contacting_bridgedb=KöprÃŒ veritabanına baÄlanılıyor. LÃŒtfen bekleyin.
-torlauncher.captcha_prompt=KöprÃŒ isteÄinde bulunmak için gÃŒvenlik kodunu çözÃŒn.
+torlauncher.contacting_bridgedb=KöprÃŒ veritabanı ile baÄlantı kuruluyor. LÃŒtfen bekleyin.
+torlauncher.captcha_prompt=KöprÃŒ isteÄinde bulunmak için gÃŒvenlik denetimini geçin.
torlauncher.bad_captcha_solution=ÃözÃŒm doÄru deÄil. LÃŒtfen yeniden deneyin.
torlauncher.unable_to_get_bridge=KöprÌ veritabanından bir köprÌ alınamadı.
torlauncher.no_meek=Bu tarayıcı, köprÃŒleri katmak için gerekli meek uygulamasını kullanmak ÃŒzere yapılandırılmamıÅ.
@@ -78,10 +78,10 @@ torlauncher.bootstrapStatus.ap_conn_done=Devreler hazırlanıyor: Bir Tor aktar
torlauncher.bootstrapStatus.ap_handshake=Devreler hazırlanıyor: Bir Tor aktarıcısı ile iletiÅim kuruluyor
torlauncher.bootstrapStatus.ap_handshake_done=Devreler hazırlanıyor: Bir Tor aktarıcısı ile iletiÅim kuruldu
torlauncher.bootstrapStatus.circuit_create=Devreler hazırlanıyor: Bir Tor devresi kuruluyor
-torlauncher.bootstrapStatus.done=Tor aÄına baÄlanıldı!
+torlauncher.bootstrapStatus.done=Tor aÄı ile baÄlantı kuruldu!
torlauncher.bootstrapWarning.done=bitti
-torlauncher.bootstrapWarning.connectrefused=baÄlantı geri çevrildi
+torlauncher.bootstrapWarning.connectrefused=baÄlantı reddedildi
torlauncher.bootstrapWarning.misc=çeÅitli
torlauncher.bootstrapWarning.resourcelimit=kaynaklar yetersiz
torlauncher.bootstrapWarning.identity=kimlik uyuÅmazlıÄı
diff --git a/src/chrome/locale/uk/network-settings.dtd b/src/chrome/locale/uk/network-settings.dtd
index f85787b..5368608 100644
--- a/src/chrome/locale/uk/network-settings.dtd
+++ b/src/chrome/locale/uk/network-settings.dtd
@@ -1,10 +1,10 @@
<!ENTITY torsettings.dialog.title "ÐалаÑÑÑÐ²Ð°ÐœÐœÑ ÐŒÐµÑÐµÐ¶Ñ Tor">
<!ENTITY torsettings.wizard.title.default "Ð'ÑЎМаÑОÑÑ Ð· Tor ">
<!ENTITY torsettings.wizard.title.configure "ÐаÑаЌеÑÑО ЌеÑÐµÐ¶Ñ Tor">
-<!ENTITY torsettings.wizard.title.connecting "ÐÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐœÑ Ð'ÑЎМаММÑ">
+<!ENTITY torsettings.wizard.title.connecting "ÐÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐœÑ Ð·'ÑЎМаММÑ">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "ÐПва Tor Browser">
+<!ENTITY torlauncher.localePicker.title "ÐПва вебПглÑЎаÑа Tor">
<!ENTITY torlauncher.localePicker.prompt "ÐÑÐŽÑ Ð»Ð°Ñка, ПбеÑÑÑÑ ÐŒÐŸÐ²Ñ.">
<!-- For "first run" wizard: -->
@@ -37,7 +37,7 @@
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "ÐÑй бÑаМЎЌаÑÐµÑ ÐŽÐŸÐ·Ð²ÐŸÐ»ÑÑ Ð¿ÑЎклÑÑÐµÐœÐœÑ ÑÑлÑкО ЎП певМОÑ
пПÑÑÑв">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports">
+<!ENTITY torsettings.firewall.allowedPorts "ÐÐŸÐ·Ð²ÐŸÐ»ÐµÐœÑ Ð¿ÐŸÑÑО">
<!ENTITY torsettings.useBridges.checkbox "Ð¢ÐŸÑ ÑеМзÑÑÑÑÑÑ Ð² ЌПÑй кÑаÑМÑ">
<!ENTITY torsettings.useBridges.default "ÐОбеÑÑÑÑ Ð²Ð±ÑЎПваМОй ÐŒÑÑÑ">
<!ENTITY torsettings.useBridges.default.placeholder "ÐОбеÑÑÑÑ ÐŒÑÑÑ">
@@ -63,21 +63,21 @@
<!-- #31286 about:preferences strings -->
<!ENTITY torPreferences.categoryTitle "ТПÑ">
-<!ENTITY torPreferences.torSettings "Tor Settings">
-<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.torSettings "ÐалаÑÑÑÐ²Ð°ÐœÐœÑ Tor">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser ÑпÑÑЌПвÑÑ Ð²Ð°Ñ ÑÑаÑÑк ÑеÑез ЌеÑÐµÐ¶Ñ Tor, Ñка пÑÐŽÑÑОЌÑÑÑÑÑÑ ÑОÑÑÑаЌО ЎПбÑПвПлÑÑÑв пП вÑÑÐŸÐŒÑ ÑвÑÑÑ." >
<!ENTITY torPreferences.learnMore "ÐÑзМаÑОÑÑ Ð±ÑлÑÑе">
<!ENTITY torPreferences.bridges "ÐПÑÑО">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
-<!ENTITY torPreferences.useBridge "Use a bridge">
+<!ENTITY torPreferences.bridgesDescription "ÐПÑÑО ЎПпПЌагаÑÑÑ ÐŸÑÑОЌаÑО ЎПÑÑÑп ЎП ЌеÑÐµÐ¶Ñ Tor Ñ ÐŒÑÑÑÑÑ
, Ўе Tor заблПкПваМП. ÐалежМП вÑÐŽ ÑПгП, Ўе вО зМаÑ
ПЎОÑеÑÑ, ПЎОМ ÐŒÑÑÑ ÐŒÐŸÐ¶Ðµ пÑаÑÑваÑО кÑаÑе, МÑж ÑМÑОй.">
+<!ENTITY torPreferences.useBridge "ÐОкПÑОÑÑаÑО ÐŒÑÑÑ">
<!ENTITY torPreferences.requestNewBridge "ÐаЎÑÑлаÑО Ð·Ð°Ð¿ÐžÑ ÐœÐ° ПÑÑÐžÐŒÐ°ÐœÐœÑ ÐœÐŸÐ²ÐŸÐ³ÐŸ ЌПÑÑÑ...">
-<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.provideBridge "ÐаЎаÑО ÐŒÑÑÑ">
<!ENTITY torPreferences.advanced "РПзÑОÑеМОй">
-<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
-<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
-<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
-<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!ENTITY torPreferences.advancedDescription "ÐалаÑÑÑйÑе ÑпПÑÑб пÑЎклÑÑÐµÐœÐœÑ Ð±ÑаÑзеÑа Tor ЎП ÐМÑеÑМеÑÑ.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "ÐМаÑеММÑ, ÑПзЎÑÐ»ÐµÐœÑ ÐºÐŸÐŒÐ°ÐŒÐž">
+<!ENTITY torPreferences.requestBridgeDialogTitle "ÐапÑПÑОÑО ÐŒÑÑÑ">
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "ÐвеÑÐœÐµÐœÐœÑ ÐŽÐŸ BridgeDB. ÐаÑекайÑе, бÑÐŽÑ Ð»Ð°Ñка.">
<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "РПзв'ÑжÑÑÑ CAPTCHA, ÑПб МаЎÑÑлаÑО Ð·Ð°Ð¿ÐžÑ ÐœÐ° ПÑÑÐžÐŒÐ°ÐœÐœÑ ÐŒÐŸÑÑÑ.">
<!ENTITY torPreferences.requestBridgeErrorBadSolution "РПзв'ÑÐ·Ð°ÐœÐœÑ ÐœÐµÐ²ÑÑМе. СпÑПбÑйÑе зМПвÑ.">
-<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
-<!ENTITY torPreferences.viewLogs "View LogsâŠ">
-<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
+<!ENTITY torPreferences.viewTorLogs "ÐеÑеглÑМÑÑО жÑÑМалО Tor.">
+<!ENTITY torPreferences.viewLogs "ÐеÑеглÑМÑÑО жÑÑМалО...">
+<!ENTITY torPreferences.torLogsDialogTitle "ÐÑÑМалО Tor">
diff --git a/src/chrome/locale/uk/torlauncher.properties b/src/chrome/locale/uk/torlauncher.properties
index c9077c8..951ff04 100644
--- a/src/chrome/locale/uk/torlauncher.properties
+++ b/src/chrome/locale/uk/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=ÐеЌПжлОвП запÑÑÑОÑО Tor.\n\n%S
torlauncher.tor_missing=ÐОкПМÑваМОй Ñайл Tor вÑÐŽÑÑÑМÑй.
torlauncher.torrc_missing=Ѐайл torrc вÑÐŽÑÑÑМÑй Ñа Ме ЌПже бÑÑО ÑÑвПÑеМа.
torlauncher.datadir_missing=ÐОÑекÑПÑÑÑ ÐŽÐ»Ñ ÐŽÐ°ÐœÐžÑ
Tor Ме ÑÑМÑÑ Ñ ÐœÐµ ЌПже бÑÑО ÑÑвПÑеМа.
-torlauncher.onionauthdir_missing=The Tor onion authentication directory does not exist and could not be created.
+torlauncher.onionauthdir_missing=ÐаÑалПг ÑОбÑÐ»ÐžÐœÐœÐŸÑ Ð°Ð²ÑеМÑОÑÑкаÑÑÑ Tor Ме ÑÑМÑÑ Ñ ÐœÐµ ЌПже бÑÑО ÑÑвПÑеМОй.
torlauncher.password_hash_missing=Ðе вЎалПÑÑ ÐŸÑÑОЌаÑО Ñ
еÑОÑПваМОй паÑПлÑ.
torlauncher.failed_to_get_settings=Ðе вЎалПÑÑ ÐŸÑÑОЌаÑО МалаÑÑÑÐ²Ð°ÐœÐœÑ Tor.\n\n%S
diff --git a/src/chrome/locale/zh-TW/torlauncher.properties b/src/chrome/locale/zh-TW/torlauncher.properties
index 47a0ca0..398eecb 100644
--- a/src/chrome/locale/zh-TW/torlauncher.properties
+++ b/src/chrome/locale/zh-TW/torlauncher.properties
@@ -1,7 +1,7 @@
### Copyright (c) 2020, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=æŽè¥è·¯ç±ååå·¥å
·
+torlauncher.error_title=Torååå·¥å
·
torlauncher.tor_exited_during_startup=æŽè¥ç芜åšåšååææå€çµæ¢ãéå¯èœæ¯å çº torrc èšå®æªçé¯èª€ãæŽè¥çèŠœåšæ¬èº«ãæšç³»çµ±äžå
¶ä»çšåŒçæŒæŽææ¯ç¡¬é«æ
éæé æãå¿
é å
解決æœåšçåé¡äžŠéæ°ååæŽè¥ç芜åšïŒæ¬çšåŒæèœæ£åžžéäœã
torlauncher.tor_exited=æŽè¥çèŠœåšæå€çµæ¢äºãéå¯èœæ¯å çºæŽè¥çèŠœåšæ¬èº«ççšåŒé¯èª€ãæšç³»çµ±äžçå
¶å®çšåŒææ¯ç¡¬é«æ
éæé æãé€éæšéæ°ååæŽè¥ç芜åšïŒåŠåæŽè¥ç芜åšå°ç¡æ³é£ç·å°ä»»äœç¶²ç«ãåŠææ€å顿çºçŒçïŒè«å¯éæšçæŽè¥ç芜åšé¯èª€å ±åçµŠæ¯æŽåéã
diff --git a/src/install.rdf b/src/install.rdf
index 3405b47..510052a 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.26</em:version>
+ <em:version>0.2.27</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0

[tor-launcher/master] Bug 40007: Update domain fronting config for Moat
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit 1b4aa6cac98bcc0ba2c35737496fa0a91a00ad8b
Author: Cecylia Bocovich <cohosh(a)torproject.org>
Date: Fri Apr 2 19:50:14 2021 -0400
Bug 40007: Update domain fronting config for Moat
---
src/defaults/preferences/torlauncher-prefs.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/defaults/preferences/torlauncher-prefs.js b/src/defaults/preferences/torlauncher-prefs.js
index 472b763..1f7a22f 100644
--- a/src/defaults/preferences/torlauncher-prefs.js
+++ b/src/defaults/preferences/torlauncher-prefs.js
@@ -53,8 +53,8 @@ pref("extensions.torlauncher.torrc_path", "");
pref("extensions.torlauncher.tordatadir_path", "");
// BridgeDB-related preferences (used for Moat).
-pref("extensions.torlauncher.bridgedb_front", "ajax.aspnetcdn.com");
-pref("extensions.torlauncher.bridgedb_reflector", "https://onion.azureedge.net/");
+pref("extensions.torlauncher.bridgedb_front", "cdn.sstatic.net");
+pref("extensions.torlauncher.bridgedb_reflector", "https://moat.torproject.org.global.prod.fastly.net/");
pref("extensions.torlauncher.moat_service", "https://bridges.torproject.org/moat");
pref("extensions.torlauncher.bridgedb_bridge_type", "obfs4");
1
0

[tor-launcher/master] Merge remote-tracking branch 'cohoshgl/fastly'
by sysrqb@torproject.org 05 Apr '21
by sysrqb@torproject.org 05 Apr '21
05 Apr '21
commit 887f203dcd522644dc48bdceaaf7c7f0f931981c
Merge: 3008e82 1b4aa6c
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Mon Apr 5 17:02:02 2021 +0000
Merge remote-tracking branch 'cohoshgl/fastly'
src/defaults/preferences/torlauncher-prefs.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
1
0

[Git][tpo/applications/fenix] Pushed new branch tor-browser-88.0.0b2-10.5-1
by Matthew Finkel 29 Mar '21
by Matthew Finkel 29 Mar '21
29 Mar '21
Matthew Finkel pushed new branch tor-browser-88.0.0b2-10.5-1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-88.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/fenix] Pushed new tag tor-browser-87.0.0-10.5-1-build1
by Matthew Finkel 26 Mar '21
by Matthew Finkel 26 Mar '21
26 Mar '21
Matthew Finkel pushed new tag tor-browser-87.0.0-10.5-1-build1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-87.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[tor-browser-build/maint-10.0-desktop] Release preparation for 10.0.15
by sysrqb@torproject.org 26 Mar '21
by sysrqb@torproject.org 26 Mar '21
26 Mar '21
commit 1d9ffb7cb51f9cc11cb4aef1a783fd23921bc320
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Mar 25 15:02:48 2021 +0000
Release preparation for 10.0.15
Versions bump and Changelog update
---
projects/firefox/config | 2 +-
projects/openssl/config | 4 ++--
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 5 +++++
rbm.conf | 6 +++---
4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index 58ed9f4..22b491c 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'firefox-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build2'
+git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build3'
tag_gpg_id: 1
git_url: https://git.torproject.org/tor-browser.git
git_submodule: 1
diff --git a/projects/openssl/config b/projects/openssl/config
index 86f1357..09a8407 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.1.1j
+version: 1.1.1k
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -31,4 +31,4 @@ input_files:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
- URL: 'https://www.openssl.org/source/openssl-[% c("version") %].tar.gz'
- sha256sum: aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf
+ sha256sum: 892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 617a77a..924c893 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,8 @@
+Tor Browser 10.0.15 -- March 26 2021
+ * Windows + OS X + Linux
+ * Update Openssl to 1.1.1k
+ * Bug 40030: Add 'noscript' capability to NoScript [torbutton]
+
Tor Browser 10.0.14 -- March 23 2021
* Windows + OS X + Linux
* Update Firefox to 78.9.0esr
diff --git a/rbm.conf b/rbm.conf
index 18d0e9e..6cdedde 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -24,11 +24,11 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '10.0.14'
- torbrowser_build: 'build2'
+ torbrowser_version: '10.0.15'
+ torbrowser_build: 'build1'
torbrowser_incremental_from:
- 10.0.12
- - 10.0.13
+ - 10.0.14
project_name: tor-browser
multi_lingual: 0
build_mar: 1
1
0
commit 9e277e72c94febc707bbba8b2fd7babb0d7d99f8
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Mar 25 19:41:21 2021 +0000
Fix typo
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 240cc01..55b98a3 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -19,7 +19,7 @@ Tor Browser 10.5a13 -- March 24 2021
* Bug 23631: Use rootless containers [tor-browser-build]
* Bug 40016: getfpaths is not setting origin_project [rbm]
* Windows
- * Bug 40252: Bump mingw-w64 and clang for Firefox 78.9 [tor-browser-build]
+ * Bug 40252: Bump mingw-w64 and clang for Firefox 78.9 [tor-browser-build]
Tor Browser 10.5a12 -- March 20 2021
* Android
1
0
commit b2e900b43e1e4c621985e1a97dc2386b6e6fc666
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Mar 25 18:09:06 2021 +0000
Pick up Openssl 1.1.1k
---
projects/openssl/config | 4 ++--
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/projects/openssl/config b/projects/openssl/config
index 86f1357..09a8407 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.1.1j
+version: 1.1.1k
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -31,4 +31,4 @@ input_files:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
- URL: 'https://www.openssl.org/source/openssl-[% c("version") %].tar.gz'
- sha256sum: aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf
+ sha256sum: 892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index ac51fa8..240cc01 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -2,6 +2,7 @@ Tor Browser 10.5a13 -- March 24 2021
* Windows + OS X + Linux
* Update Firefox to 78.9.0esr
* Update NoScript to 11.2.3
+ * Update Openssl to 1.1.1k
* Update Tor to 0.4.6.1-alpha
* Translations update
* Bug 40030: DuckDuckGo redirect to html doesn't work [torbutton]
1
0

[tor-browser/tor-browser-78.9.0esr-10.0-1] fixup! Bug 10760: Integrate TorButton to TorBrowser core
by sysrqb@torproject.org 25 Mar '21
by sysrqb@torproject.org 25 Mar '21
25 Mar '21
commit 252c041126af05842c6aaad6fadd3c33c21a2ad3
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Mar 25 17:33:07 2021 +0000
fixup! Bug 10760: Integrate TorButton to TorBrowser core
---
toolkit/torproject/torbutton | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
index f03b9cb7c2f3..a9372507c5c0 160000
--- a/toolkit/torproject/torbutton
+++ b/toolkit/torproject/torbutton
@@ -1 +1 @@
-Subproject commit f03b9cb7c2f36c9cbd1869e24a1662e7d2755b4e
+Subproject commit a9372507c5c035aa94109223302f1c3e77932baa
1
0

[torbutton/maint-10.0] Bug 40030: Add 'noscript' capability to NoScript
by sysrqb@torproject.org 25 Mar '21
by sysrqb@torproject.org 25 Mar '21
25 Mar '21
commit a9372507c5c035aa94109223302f1c3e77932baa
Author: HackerNCoder <hackerncoder(a)protonmail.ch>
Date: Wed Feb 24 22:45:31 2021 +0000
Bug 40030: Add 'noscript' capability to NoScript
---
modules/noscript-control.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/modules/noscript-control.js b/modules/noscript-control.js
index 3cd5f602..ea735377 100644
--- a/modules/noscript-control.js
+++ b/modules/noscript-control.js
@@ -68,20 +68,20 @@ let log = (level, msg) => logger.log(level, msg);
// ## NoScript settings
// Minimum and maximum capability states as controlled by NoScript.
-const max_caps = ["fetch", "font", "frame", "media", "object", "other", "script", "webgl"];
-const min_caps = ["frame", "other"];
+const max_caps = ["fetch", "font", "frame", "media", "object", "other", "script", "webgl", "noscript"];
+const min_caps = ["frame", "other", "noscript"];
// Untrusted capabilities for [Standard, Safer, Safest] safety levels.
const untrusted_caps = [
max_caps, // standard safety: neither http nor https
- ["frame", "font", "object", "other"], // safer: http
+ ["frame", "font", "object", "other", "noscript"], // safer: http
min_caps, // safest: neither http nor https
];
// Default capabilities for [Standard, Safer, Safest] safety levels.
const default_caps = [
max_caps, // standard: both http and https
- ["fetch", "font", "frame", "object", "other", "script"], // safer: https only
+ ["fetch", "font", "frame", "object", "other", "script", "noscript"], // safer: https only
min_caps, // safest: both http and https
];
1
0

24 Mar '21
commit 77c67a897933f17bb9a17f5b6e94cb387440e16f
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Wed Mar 24 23:56:49 2021 +0000
Add Android pieces for 10.5a13
---
projects/android-components/config | 4 +-
.../gradle-dependencies-list.txt | 9 +-
projects/fenix/config | 4 +-
projects/fenix/gradle-dependencies-list.txt | 356 ++++++++++-----------
projects/geckoview/config | 2 +-
.../tor-browser/Bundle-Data/Docs/ChangeLog.txt | 6 +
rbm.conf | 5 +-
7 files changed, 195 insertions(+), 191 deletions(-)
diff --git a/projects/android-components/config b/projects/android-components/config
index e05af21..b3dee3a 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,12 +8,12 @@ gpg_keyring: torbutton.gpg
variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
var:
- android_components_version: 73.0.3
+ android_components_version: 73.0.11
torbrowser_branch: 10.5
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 20
+ gradle_dependencies_version: 21
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit before support for new GeckoView interfaces gets added.
fetch_gradle_dependencies: 0
diff --git a/projects/android-components/gradle-dependencies-list.txt b/projects/android-components/gradle-dependencies-list.txt
index 34cc330..1debd7f 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -220,7 +220,6 @@ c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.go
1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
e95c0031d4cc247cd48196c6287e58d2cee54d9c79b85afea7c90920330275af | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
4063bca7fe94fe65c98f4168f97ae10e02da0248598ad3ac21c432c7f608a17a | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
-7cbb32f2fe880d407d4c53268bcd554c11dc9316a1d6cd556a08fe45a4631f22 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
290d2e9c1a22388b3f0c3dbc204a6176f8c49174126de884820befa83899f129 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
3eb66e171b40c9cd2a9b9d9cd61a62d90e4a515491619a8d0a95e98866624b97 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
7801441cb973fb007ef311d3db35c3b3c9d011cef890357e7ca33890833354e5 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
@@ -437,12 +436,12 @@ d1741144ed2ea215a84f5d94d779cafcfaf778cce8cc7224437a2884cb1101bc | https://maven
7b0a3bd6d32c8002f785db8fdbf3b08e3541366e784cac1304cb3f49642b916a | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/71.0.0/…
f7bf27270904abd8639b543151b6eaf268b821b8e6235c8decf8031e02ec8648 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
0b80acf7d1dd0d9484b0e82cd1a04ae57270d7f7e6b339ce39424554d48798e3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/71.0.…
-f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+587abedeb0d539781c3a64e1d97f94e4e58598d59a110ec35a5291f5c471f441 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+04a3e6fb38caf74c58fe80b36ba585aba5ba4a22d06e40ffc2d9f7a47015fa99 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
005dc96a0f19c75ac3e83661a4c4e4b6b39fd71ab4d26d4903735fa860da8293 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
cce46579b4a5fd731d5c12f62170287bec4f1ed8a2f24e8cb9a31998c1ea59ab | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/88…
-079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+e019974021cfdc86752984eba6309e7f865e3efe6d4ad40a012be212f4925251 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
+66ad663a2b60d756dadefa2024f664b7befe6fb22535da80aa88b024fe9b64f5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/fenix/config b/projects/fenix/config
index e42daca..49ef350 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -8,13 +8,13 @@ gpg_keyring: torbutton.gpg
variant: Beta
var:
- fenix_version: 87.0.0b2
+ fenix_version: 87.0.0
torbrowser_branch: 10.5
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 22
+ gradle_dependencies_version: 23
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
diff --git a/projects/fenix/gradle-dependencies-list.txt b/projects/fenix/gradle-dependencies-list.txt
index 7aad8bc..53aa56b 100644
--- a/projects/fenix/gradle-dependencies-list.txt
+++ b/projects/fenix/gradle-dependencies-list.txt
@@ -422,184 +422,184 @@ a50a7c02a36e5950ab0ca0c3a9486b87fd8de95582d0ddbcaa72af173230254b | https://maven
3b180681c076339b42e20967f95881fa11b5753ae7f597e3c3c8288c09aa9b5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/71.0.0…
6d23b30049cae26d35cbc1c892a785e6bdf9e0399cbbedf5584a48a8dc5cf5c9 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
383823dd20adbea1eec86fd59097feb3f84f4dda77531a1d79ebe801b4d6d283 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/71.0.0/tabs-7…
-447480a00dbbeefc1b9bf92cce055ef9e66012b472eb7aa816d0a5b0efadc7a3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-4de56a5a6146c05615258c1bb52ba3415de6fe5c2fb4b3a8c43ac12b5128f1cc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-c404ac90f6d24d17099ed1bbee57057f11ddf012356da0132901c2fd56c4a48d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
-c4cc2de0066ee703559bf27ea7e5060859529505c4eb6b3e1e6f24563daab406 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
-75750cc312767ab2f4ac7cb6f5c81f6fe7e1ad1788cf06803569befdbf489fbb | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-507397e871ec3ea92af84518430279679a1b3fbcb261c6c9e28b4022a211e872 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-1caeffb46ffec001e1aabafcedeaff72aecaff1906af9e4ba6dc0d5ba5738e6e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-71290a324a7907c33a2376e37f97c3eb392d7e2a28553d73bbfd5f42dd6fc179 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-84fec1eb560eb286da5028ac46b69b0b1aaba68d2808299fd80a4c44ef1032d0 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-c7f99594339394a67c737bd3a18488a968657e4f67c9ea4bb2995e2a430494a5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-9fd1c1be67d95f47046fe2095541f6b30bd8f86b09bafa900e690e48f5f3d716 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
-4d330a04ad46b7fbb7e06a1631083efef9198898a5aebad8621f7723e38389fa | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
-5ba6a50bdb511962dace1eb91d5f83473f6c7f4ccba9c031b24723756a6f0266 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
-f29b7a18c25b6c3f957e8fe721294c5d9672abaeaa8a19d54cc123963e028b6c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.3…
-522741d9030420a112c834989682457c6c518047691e85bdcde91e90c971876f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
-da806a41353dc50c0b288a83b9fd42ce4e55b1474d1b24f80b85cc39c8b5a237 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
-04de35c10b20442b1a2c35ea70b7b64f5325c77027cf02b6896e68bb0310d2ca | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
-2bb3cb79ab43d0aa807433057eb1b4a7919e905121488dbf38298b01a73640af | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
-95e6908b4c44267e447a57f26c56d6e1377241ea7980cca9634c571fefcf8bac | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-0edf084239584d5210eece1381696cdb77c6b8bad85c576b8b8efc9d7cce85c8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
-3ff40893e11b1aef16f956485a5d7cd08a4b3301c928de3f71cf085cc23ec3ff | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
-0a59db19f16f3d533d2608e9ce46535b4741be65f68c062863c0edc34a0a93f4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
-abfba8187225c2c1df99d023969009114811045e5d17b645041bb7b6b1d48ee7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
-70865120ea301cc0e002e5cec6a26a5f9660072815112c5b6a1bda0a5833efd7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
-4b44ceb549ba3696691c84d0db14e9a9134ebeb6778eed46af0e1223aba0c729 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-421519af50ac6f16b2d811879e255abb8c63e65a3ebd97bf13d8ad93cad17701 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-44dfa1456b52cc1eeb996df948bdd2bd72ab516abfa58f70201984ffb32f267e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
-e36f8716438235dea28df4f1ecba68ea8175ba96dde022f1e1b8e7698db8fa3e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
-2a9d738edc92bf5d718f1f1fc8b2f1908fc1e2aa0867a5cffe9d4521d7e0d33b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-c9bedc55eff9d9b295ce09109afc105da74b2542468a5fb08001238d7dbff6f1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-ea0324bd6d1fc27e66a75688b49697cc1335352229029acfd9bbf94ded437b0d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
-9936ea6372e996df60e06b234b13803c155595619db9852fcbbb55a5751e1b05 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
-7059ce18d0b9e2722ca0546113111f5e7378dfaaaa3428cd993bd1df0e6c7601 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-46b74cb532b9d1616dc3373f263f9746875c499d9db45121ed6a4727e0c93b7c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-b884604b63f08fab27fd98e09f2fd4a81ad127baaa4be9572de150b3f4b6410f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
-ba0c8ae02b13d08013d0bcec92305753e2bf9dd7986f8bfec406691c7a0324fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.3…
-47c6812da4b0a97e11d15305a0a5cbc7e489a25318958e686a3793fd1aecf167 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
-f5f03c5462e86ac56ab00fd4827d0fd37910e789594cf11453ff4a120547e2c9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
-276fd39ef0f7cac1d5744351d5c8d37f751bd8a959983a6d6c01f041d9c9b627 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
-c8517be57884c050f9f628a670b8a440e98d779222b2d58d814063594ae77538 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
-62be7bfc6d30816aae4ec08bb85d2015af513c6397ba01e62af9044094b21cc5 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
-2901c838eb2294db7502567f8f037a4f52a10422fcbc3c2c1c0173277784c11e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.3…
-e1c06d4b6c497fa70a3876e22335c9fb6a4e0237587f0e0036d928196c4bd155 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
-9932b955b07d8418288a532baba96bfb754cdaf22add3c396ba59367dbe9a94c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.3…
-6cfa83042c3077319fb6afa00b1474f9aece9bcd752557b4ad0bd2ab507f7a11 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
-0bb5c241487cb1a1b85417b8bc10a89171563ee37d432793d7cfe9a0a4795054 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
-82e0c14306a0c8355a0547e407954d3a14adb85571b6214daf5446414fe3fd84 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
-5a75a655da6558c176fe2948bfe68f2e50262df899c0d4f56acc59321327a761 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.3…
-450057953eea02275513eca3121479fd74c50c5dda9a5165c792b1c00dde473e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
-df1d7b48c656cbb72e9bb8fc1a6de2041935a2c203be3efef89bb68a39d132ae | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
-caf47211543f9203652e471638a308673a61949e5f934ae51d8d95d5d700ec55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
-f91c2cc603721cb694e71b72989694e962be4fc2b1dbae513843b6c8ffb6d2f0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
-e508390b4f2fda504a12b334c78edfd5c675a5a0403f8cd8f97ebed24ddd766c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-d46fab5f7cc8adcfefb8fddf5ed1bd8845ecf5071c29df136098ec333d451dcc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-6555df4e8b9f968ad24f07ae9a8b601630deab0ddc3b762b370aea576a5dff30 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
-390150404bf5acc0b76e091e17a98d44dd76b8eff8d118ab7b498523f055b2a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
-2e12f28cc00c6c5f80558e2a6e80502f6076d81e0ac22cd407e45498fad3d44a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
-3a47c5b6c861991951ab703072a62c36e48193a8c65d2e8a6e08ea99a9fb9487 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
-58badab3d6608081f51c3a2253a09026f46068948ffb9eb88c0fca330ae84dc4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-1e400153cfef94b3ed43c68101200ad05ce7b89a123032081a564d5393b5a3e4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-e6f8eeacb570233d3df05bf0699afce9d535fe95aae449b18733909ebc51d577 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-037dfcb20b2700941b08f60816de9256fb17fc4d67c9c0334af69abe27076b9d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-103796306040b311b786968452f7e3d913c7d1e1f768c04b03f50ffef8b0b9b5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-af29d316061a14a66d40129ce611c2f11a9ea485b78b797e618cd6769f9862d2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-2cd092e0ccba5ed7b9400bbf173580ead67a8aaa90819eedb91655cc0dd0a536 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-ec9e24d5ef470561967647cbe774e14b8535a44e46cad7078a393233e4101bd9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-bbb0648abd8356a3f36d53d34c4cb57faa8aeac74019b377ddc56ae965146a9a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-b7673b37e123bcf12c6c1ae66365e359af0a6052b300226eaf3e07a42b6d62a6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-62bf0e9526340aa5d741749740ebfeab1e195cb3be5cb61f35f9c587e30e1f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-cf3d3087eb5ce0db1076826524024ba26239ec36ef40896f5aad43bee06d0679 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-21a483d6b1f857d22c27d24ff25a668896d77205c4b1ae73118daac78d8cce8c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
-c75fce41519c9274d47139bf1bdddf21923894d566d06ef6bb8a3ca20e5db8ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
-3831c828fde09958bfcfa87f208cd57c99f5e36ab6febeb186329ab47cb2f85f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
-e734da778061d002fc090995a4e3aaf2732cdeedbc169a7e7a185e84b4020ab7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
-c111277efc63edef0258ec7231bab0e6a3ce723bc55fa77efc073370b6973c81 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
-3a300d928e83c1661fa3d6b9233b2a78db5c745f674e40967b5b88c56ee5927e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
-ea47d7ba04df4ef30b5d3177a5b68b90dd942b11110331ec35284632d09a5251 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-37d4467604fa71c587be1a0098ff8b582378c0e484dc29e3178e8bb7a0846447 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-d42c4aef464ce4f2f54893e36ce18b5b5d0c00c0df7377af5c809e260d0b390f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
-1cf870bf0213d615a2706e1ae64066492942617542ac16c961795d6acf23fc7f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
-b427bedff7b319d4079ffa9c01b73f3f63ab973807762c2e4009ed1c97fc948a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
-94eb5c7e174dd6394b55314a4bb9d097b5a948cf316faef65f13a9eb562e32be | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.3…
-d0eabcc5fd3bf3fc9f8812f4302a11d9b8d7512b028cdd90d81cb60a3194efc0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
-b23e7c43b477b396505086f97b3477ac0d37193792e1eb9a337bfdca21fa6a0d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.3/…
-0db7f3a1f38177407cc56d121db30fb9d488f41eefa36077bb9baff04657c6ca | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
-fc9345e1df7bd073fd9b724ebee9b850c06173ab918b2f273528da70389d0c1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.3/f…
-49023e83c3983e2063d9405bffcecc2207fc82da8d2c85e5e96255a73d79673f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-ddd6494224d01a44f0935a5a9eaaebc1951b8e8e3f1175e6d3059d654e499069 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-b1b2d2464d3e37e21b47aeb8b2f1b5af13f27543cd49f719e3738ce893bbbf1b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-896dda6d3f3023c62714a47871d3ca9b15fc6de135518895dc396a7e79bb23c2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-68c5b1b662be69564a0d7f609c1c7c956a07a744010562277dc89f8c1ca741ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
-51609201b75a99ea669925b7086ca2ed1dce41079633a70558468c37f34c3428 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
-cbc3c8601fdaf98e805049d7e262ac44ce448b6e1a63b74ca0d19d571d590a2e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
-cb36bcb60b2beeb10593bbfed5f8fa75fe28620f700a792701bd4a73ad02aee3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
-73455502add091f9f5620a7216475c9e83c235840b057fc7a2bfc6283fb9042f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
-87407c404cf59b0dfe2b67d1e557d082f248facc5a689a9ac405142af1a427b6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
-3697e7ae4f9479c2cd1ecb6ee81a12627e9a02cf1030f80aa1d9631869350c4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-0b414d21eaf2a0cd9f43d121cd38897f6e233dbbb701dd8589103880a87c79d4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-273b5bcfe293d286ace960fb9200cbcd5ce9d05ccae34e9acc57b54f8b7043fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-b2c4ce646748e103c6c014c1bf7807595e53a4fc4111984295d64791ddea5a7d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-c0458897a9280de5aa0c8369d96b7f34e4444617e6df28558a8130bbc4d3d2b3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-4175a14a4074994e5c66e5cacfd64a326e9b95a7100723afa0879d92f5a43179 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-f8d5f4717445f4a3845e14c5e03abd556b39868bb64ec2be021c4f02303d5e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
-5df147e52b61756c8fe4a60ecc55343c8f3553db8d019938d4f79d3a2a2e40a2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.3…
-02f2fc043ab9c5de724b287f8b4cc7f8f9e86aafeeac6b9453213e16daa2b944 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
-1f423b443cef6326868cc1573c917c65eddea81d10da591c95beaba2c1406f5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
-19d5346f601edef76e0cc48d21af9c98cb9f0113b5dceb22ea5022f990d2a7df | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-192911f74c79d47cbc2124b383c015e54afeac543befc9e0f8a16648e6fd9952 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-5052aa3ed2387555780c5f630333fcb3330c480b8e513a6a482e3ca2581dc391 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
-9535c283cf146f27d5ca9a7017400b04d681b8f088247de5855733610b6e7c60 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
-eee3fef8cc33f30832b4b56a63acbd735c2bbe97e9bb8d23c726b54a46780d41 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-74f3e0fbc334d9d7593716fcf0f87ef16bf7ebe31fe71e891153fa54b1a94197 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-72b001ca36b87111f1f261eea32eacf31f5abc0dcbd85e5d63f5beed8d938498 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-95b99f092c718222bcb86f992ee1c6192f5fdbd88c211f93ebc7ed49e4be8cfb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-42526b88198a2cbd910b1ec27aef8bd93520c65d0755b6c041b6c698392981a0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-a959a0b420e9293d48f5b86da4a511865bb47f2232475391403b7fc4b430c3bb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-c5984b5d09f1c652e686766a43f1c02704a516c11d613ede97929c5c2b539fb8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
-6aa264d8515a001633eea0e1b92d5ba251640e90de2b69a3aaede56a633930eb | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.3/li…
-504b56cfbe99e06e70d4feb47c4e910f4e6b7f923bd2c3b58bb81554c1311ee5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
-579d897481f031a235b94046a30806f9f349bbe9af86f901c83b7c3dff65db7e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
-e6ff5bdb4f8372ec9acf9d89646cf4169a2af8566892c19eec98c93eaa9e96b5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-e923ed086adafe9269ba3794f4a31ef0c20c5a224399fe4a7566fcde5d9d91f7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-a469c7e07ce0b8fa976507f534b3f942b488d819f0a1a254a0b22b66386fe6d8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-1c8c2d4d1c9bf94438f72507c23bd4005ccd39e7e5c0e9dff017f2d10698db17 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-f5a4aed033dac1896c856437183ad1b86bc1e9b05f9097e5c2bfc669ecbb446d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
-2786152ab92659bc375aec537cf0e2c7221a0973ff94cf4c0c1848a2f5a0deb0 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.3/li…
-6a3c45629bf4e13ed742c95f22bb00a6a9235670b5ef97d3fad5147047febc05 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-551d807903ee2bcb566f62512a36bf0624ac093b6d7d5932811efc8fed97ca3e | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-be6262c3e8e4086866b5ef1b6c3efc89bc280b707f66a651fcb9549a17e32d51 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-c91727b253230ef18f44d18d6a50d578b1e54349474583ee176efdd0422431c3 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-08ffd378637b8a10855d45740823d4a9c273699177049034ac63b8950c1eec28 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
-569bd431ef7e46e805e57874a21a91da6a8cec863eadff2dd5b85b4c68f6b1b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
-63f3504b9097dd3fe791baf9e0c1b804cca20c68d8dab956094477ba975903d8 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
-0acbd61f2cc381babd0820c1e751b7735d598989ee40def83499376f858d4340 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
-3efafa346a192967bd72946f063853cbb1e957b7d1a7053517b66fae4e279f9b | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
-09a0327e49147819446eec9e86ff01d2e5558f0cd770f2268038b7d9a71a1175 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
-2887a688ca6b257849cc9cc19c573a3568310ad01d53ac3261b91f72892573dc | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-dd322de39885cf7788f95c42353e76b0e4a3a49eec21f37d61144aeced125ddf | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-8f1af21d2bba5153224d3b25579f607b1864fb5d0129340090ff8fbef964492c | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
-036d65d39f4f33ecb43c8bcbed4c7f9378b4b17965c08757ff0c618d99aeb10f | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.3…
-40994cad75fc76f92f9461e0d548e35f1a4d80e56336305d0b3c77bfe92618f5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
-70f0e1f7ccc21e228ca597cbb3408b0760bb7049d5c37df83283da6ca43ae19a | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
-50ecf4685716648576e7d1f7d515046548b209125274a715b2dd496b925309dd | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
-5df55edad3df9848a61eaad9f185853a177aba4e06bd4fba1ef07f8e9fdacc9e | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.3/…
-489d8af504015a2ed04e3afa77e0e14c0cff604204f2d86ed9f8b793c6faf3a6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
-5cd73e9ec463a40ae3aa40f9c9071d42a51a55f7a358717205efd66fc2990d26 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
-04259ad572ec6a115fb8bd47d670ddf9bba5956320aac7153edede90d8b4a79d | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-fc1bd1fcb5031cc8ee7c0d15b603bacfdec9d4827e1dd32c383405a6b2208b32 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-c9a04732c9a7e37f61284b5e5a917a33db63ad97fc8fc01a2d85abbf65a88a95 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
-a84e0a5e6a2e7ccf01199a4d44f3e73e80216a05ade7de5a9a00fb035275aad7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
-e226502a506a8f99bf2e7f3b33c276e2772c98f148ed2f54c700910bb7fd78eb | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
-17345a94a232282328b4b0e63626fd57b81269403979b8478e3f8d8b4b9790e8 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
-083bcfb471cbbd1dce87709953051dc36c0873f45b6d5ed60f3c58c5e6ab6730 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-c53258cd336816097caa71d15edfc9ebe9e9767851bd679b02fb8905c51fa8a4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-d6e6b960d31f7cdfb1cf95872ce81c3780c7fc5e369efef46f118d6806c2411c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-05c27ca9e513487bcb7a67b479dc6d8950cf25f02ba91ad833c160e540209f5d | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-86e41f0678aad62b0098d9ee638cdc0c12c063d1bab5c84f7d1e12ba8a6615aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
-7be55332e83d7621fbf262ac8d6d4d0f84d674bc8c7467a1a46cbc8fc31b9d6b | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.3…
-f3cc185bfe40e671225aa6c2555cef4db7382c569da6580488cda053d73a9678 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
-5461d510560a7e2814099fb271cdd37a3591682330f0e952ad7928aba339671a | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
-d19e50c0207f782ecce7b109232cf09529fc46720ce961eadf33b70b52f3680f | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-a895a4d33f1d91d3e7c7e822c23f99727694e67e2d5b05ba6ff0f177d4875501 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-f102797958eee931fa6003367175bb6e1b836be921894d67f1a87d13a9df4ccb | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-1279b2e5719a10d6188c21533880f8575eae795921dbdd22389891590333ea6d | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-541835af29d1453905668ad01be21c20eef303de873069d9b8e903981d36a108 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
-6d9bfc003be350569cef150120bfe5ff29eeab360a8e02a61a6cf2fe20b09f70 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
-3e0e38eed080c2b10f56db91c6e0380b4c9730f440da239ee85c7a125d398f2b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
-8cdf856c99cff104aa3cae54cfcb8e525099e450b2956e4e33201fc387e69f85 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.3/ui…
-bf092c353816ea029b579a63e3d3db2dfd08706bbabe4ddd67727551a5d5adaf | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
-f0a0ced0ece059663601e9e8e1d7dcfc546ff2130d6a3025eefeb880f94868da | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.3/ui-…
-3e829b30496a0dad0352477b4866eea7c468363c365a3a4efc0a0cd7d1252957 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
-8bee0548ee1f8ab667c6739d1af228df67fc7f79fb4cce1b4618855dbaf73ec6 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
-f590de90365c4d2a7575582f89f6390b90599988e75601881e26d85c0aab48a1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
-34433fc57454d5d980ab0b77546431a86294d9fcae6d146e9ec7512ef2c56f37 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.3/u…
-f53d800a8e1a38932fb6d2ce07dea3c0c413e5480a4bda6aadfce9947e7258c5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-f7d2e354e61287384cd20065f9198153fdaa4da385bb3fb83ae425924b76c278 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
-079b282dab3efbdd44aa8f93b73fa3afafefe95b35c8b6a173a07a095a1c2979 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
-708b41da358580a47e8eeb0512ea4039ec4bd662fd8d72ae1e448f17698bf237 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/86.0.20210…
+e12da0897b5f8eac8445e378c74945177c7de84196eb91ff526da5f522f5911d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+2e15f3366f0a23f4552ddb4b52874f48a30840921317504f3007893bd06e8d0d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+c404ac90f6d24d17099ed1bbee57057f11ddf012356da0132901c2fd56c4a48d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+dce9a1e982a0e109e3e9d88a7b5590d4f24b293fba3f6a26a13abb4385d94c64 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/73.…
+30d4fbb8200eb89367806b4432a00db4ed383afe5ad4d3083e2a7a64b1d4084f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+c60e78fda21e8e68d8824d189ea9b133f3e7193a3c9ffca8835b3b550ba6d3a9 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+0bce9b87b0cb01c25e479ebc059a9fc4ea27bf7505c1cbb5bcc4f7805b717dd5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+a026d154a5b3518086a2d8e960480e6e7f86f0816a19e1b1c3138cda9ca81658 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+87f8aa36f9c9d54facbeb97165d9bc80f275ea2951b87ed459ce1f813adb21fc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+fc64f72cff9a4255e6b055eda7d67f10ce722782567d5cce9ec07db03b2552ba | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+392df803d5881ed978bd68e0e665b7db3f2f010821f4600f65ed3292a19b0202 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+a695d796d3b27ad516aef9a400ce58dd6e963aa21050601d37dd8b88ccbca63a | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/73.0.…
+ff6ab31fdc71e89feba35145281bd5d24d475e989996cb150f6912b846b44bf8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.1…
+4e8adf05fc6fbb990f047148bf8f60b5e233b03fb9c08cb884b79c3fc90ace02 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/73.0.1…
+4a60512b2b94d2c60c6aad3df4497de3e9bfd337e249dc57301243ae32d00969 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+b5e3beaa4b88851685838570a5cd17e31d5fb4ee4716034a7371a49dab6a709e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/73.0.…
+04de35c10b20442b1a2c35ea70b7b64f5325c77027cf02b6896e68bb0310d2ca | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+93b74eec2fa5047b142c8fca03f384a1fb1d66c5ee593e02cacb5230adfebda7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/73.0…
+95e6908b4c44267e447a57f26c56d6e1377241ea7980cca9634c571fefcf8bac | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+4e17c13d3b76f70492e8d3a85300c2f7ee2df3b01732bf22c4992a5de13fcd85 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session-sto…
+3ff40893e11b1aef16f956485a5d7cd08a4b3301c928de3f71cf085cc23ec3ff | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+eefdac1bbd8814742179cd8a95151c9a5e184f92473fbe19dad1e492d9670563 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/73.…
+abfba8187225c2c1df99d023969009114811045e5d17b645041bb7b6b1d48ee7 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+1252884e94dede016fffd8f865f8a05506d7207d8faa03a3ea8d260a43ed71cc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/73.0.…
+4b44ceb549ba3696691c84d0db14e9a9134ebeb6778eed46af0e1223aba0c729 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+99ec0fc11ca8245c2780e50af6ce5db03356fcb8e1c85562e38f4e3a7f3346ce | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+44dfa1456b52cc1eeb996df948bdd2bd72ab516abfa58f70201984ffb32f267e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+b4d18d86a02e2fe40c5ebcafcf0c40fa49642c51131f47f55bd1d9ba80d2da09 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/73…
+2a9d738edc92bf5d718f1f1fc8b2f1908fc1e2aa0867a5cffe9d4521d7e0d33b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+82ac87e4def03a94a02606b2eaa80d53ba169ea7fe0dc6f480a644edd68fa25e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+11ca8c641874957593a5dd8d839eb964f3fda209acf5fb2309c29b111745144f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+8b4ba5d83817d2f6ddf126a017d0f64bdd38897c897955e3097fea13f7194a42 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/73.…
+7059ce18d0b9e2722ca0546113111f5e7378dfaaaa3428cd993bd1df0e6c7601 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+ea3fb8adf6d2f0888e183681556618314b60795feb52c042ef4e574d19673cf7 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+3ad778800db826059e74047e5edb9a3a06628aecb246503bd6a6ef090ef4f77d | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.1…
+1b1dd2ea3ef2a79f1bd31806f038eff01812d86c7f2fd829d8be7a88b4996df0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/73.0.1…
+31b383ebcbeef430b3e85fbbd65eee6dec77072b85cd8aa440a32cccb1279936 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+b2f50ad2e78303f7b1344e555e2876fffacbcab6aef6609d4c43121950032e40 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/73.0…
+8eba85573d95c0fce8d8616f2194b1f6a45fa842bbdfb709f22adc363c6642bd | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+62c4aad685e40068a4e3d0c29f2621a2ab1767d88974ef509fed16c3cc43fbe7 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/73.0.…
+62be7bfc6d30816aae4ec08bb85d2015af513c6397ba01e62af9044094b21cc5 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.1…
+95b9955b06bcc1bca7d9615bb2ca5f40f04370c21547d870b7443d1d05f301d9 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/73.0.1…
+e1c06d4b6c497fa70a3876e22335c9fb6a4e0237587f0e0036d928196c4bd155 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.1…
+3319375cad344ae1a56d115e451fd7858c8124c690b10ba4528474554e842a34 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/73.0.1…
+6cfa83042c3077319fb6afa00b1474f9aece9bcd752557b4ad0bd2ab507f7a11 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+1227e1f20788b515c58fa4a4d8d521940aa8e9e654c66e69dfda5b92e24e834e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/73.…
+82e0c14306a0c8355a0547e407954d3a14adb85571b6214daf5446414fe3fd84 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.1…
+2663bd4140bad4bb44de9e8c090d6e74df0fa5c9a52aa87c96d315b4cd0490cb | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/73.0.1…
+450057953eea02275513eca3121479fd74c50c5dda9a5165c792b1c00dde473e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+8f002487bc935496f52d20441754645869f1b894535065ab76ab09e739161b5e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/73…
+caf47211543f9203652e471638a308673a61949e5f934ae51d8d95d5d700ec55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+d4ca474eb035e9336836e2396668d648aef23ad78a634af6018747552c6e3dc0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/73.…
+e508390b4f2fda504a12b334c78edfd5c675a5a0403f8cd8f97ebed24ddd766c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+b4cea0bb5f463dfc1442c5df4020c73b14e890af1040e18e9457bcadfb2dc688 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+1ed11524f1f60936fe6b4980197a0982562f59b4cfb92847b28135d4189546bf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+f3519029e03ed6adf952111c1d4e14ac660909edbeb98b923f499b2a4bd54cca | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/73…
+247bd3c52f12264f7b7526949272a6df49f614887acd472aa7d845286cc1b743 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+b57033974732da759772cc8534e6db3eabf2d0c0c6b88e6f2cf07f9d4933768c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/73.0…
+ebed826cfddca0109d95664ab5fb75d12c98db0506e42b0de9bb6bc4d6089985 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+ff278382c6a809ab3c684820f7577192162748c5c4e82d946c70ac54a14e83f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+532bad7ac8afdb95f3c6f1dbe9855354d3272100d0c134adbdc344f12346c812 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+fca861879e797df89a6d865f617d03687819747ae9a059f8a97134bb8b6c7f2d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+744903c81b4b7d78c12d70bf804d6ecc41a0c513903760af45822e8701b237dc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+38b1ed0000f6da65778b11de469f6f97ee12db0c2026e0fe63dda7b5d4d62c27 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+2cd092e0ccba5ed7b9400bbf173580ead67a8aaa90819eedb91655cc0dd0a536 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+d0aac9c992b5affac27e50947ca7da0c1fd1fd0d196eb6793238aa58795ff8da | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+5591508412fc4f250cea08f9b3073822391e0d1e4310e87a163c151d9633eb99 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+92e47fe0cbd2234cabcd08e927c478853027c9091c2d6d1390be2e88f9387f9e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+62bf0e9526340aa5d741749740ebfeab1e195cb3be5cb61f35f9c587e30e1f92 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+0686a6a5a7ffcaa23e542a2b08e779b883192115affc7a3796592bc93ca71e8f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+21a483d6b1f857d22c27d24ff25a668896d77205c4b1ae73118daac78d8cce8c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+f2fa6b1a53ebf0c582ebd1645d88eaad29c6cfdbbf625c22a74c4d086ccaf843 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/73.0…
+3831c828fde09958bfcfa87f208cd57c99f5e36ab6febeb186329ab47cb2f85f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+bb0f6a7c601c28af42574865cbd3e5797b1ea9b6b7d40e490fc4e9803579473d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/73.0…
+69d4c78f155a950f30ebf784a450a0cf8bff6a1a54ac928efac9c54a4f54d5aa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+570e3a16d8fa95c71c42cbaa39ffc7b7ade27e6b15aeee48f45ff579d0a46bac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/73.0.…
+31dacd6464046bf209ac06e4979b3a09faf2a2dd426778a428b0ca09685ed997 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+38874f4aeb50df950f6c3cae0960f2745caa999553336e79d29b71517e59c70a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+7e0fcca927a1a05c1b568f54f546ad94ad3fbc2fcb425c4be7833dbd8451dcd6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+2b147feee0fc076472150062679471a42393e55dc396df43b34bc10340fa22ea | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/73.…
+b427bedff7b319d4079ffa9c01b73f3f63ab973807762c2e4009ed1c97fc948a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.1…
+8075880bf45d0447e0271c20952cdf986ab24ec13977693024c3193a57790c31 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/73.0.1…
+b95ee6b550325ad37f0d6acaf006a9300e20abcfacab157beead16f3142c3cdb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.11…
+629323e072efb6c5daa4287c0919d84b463e5aafd9de5f2f1f7919af9c342457 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/73.0.11…
+6b9b610b41d578cbd93c29508194a3b68b9f94e0b069a620841515e279a4659f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.11/…
+86c6b013dde67c532c5225af4875a534997b55ad0b7b88baa8f1b1c7451d28e6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/73.0.11/…
+90c58403c11f6e8d1eae5e7ef14fa8af3cc4c70df14a1f0a06ec16ba989cb454 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+6338ed5bb5f2e1ee7f35c326e32ac802fef15c5ef1bf7c4d1a0bc79b50e20e76 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+b1b2d2464d3e37e21b47aeb8b2f1b5af13f27543cd49f719e3738ce893bbbf1b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+0095957b66f1908972d9272577f2dae1a50900c18bc85070593700fceb6d69c4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+68c5b1b662be69564a0d7f609c1c7c956a07a744010562277dc89f8c1ca741ac | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+da8b90bf2a6b41e65b39231e84de014aff75f2152ead835a10905ffe74e724bd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/73.0…
+ae2671c17d704f13120dda238b2efac3902c15b59cfc6b5b5650a49936c11c20 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+70020b3ddc937daec2804055bc3c19b33cee914ab67e7e91172bd52e61f88078 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/73.…
+73455502add091f9f5620a7216475c9e83c235840b057fc7a2bfc6283fb9042f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+aed9bb9cf4ed38ccf373eb2139675a8ce4262ecd7b4442e7d3b3713595667821 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/73.0.…
+3697e7ae4f9479c2cd1ecb6ee81a12627e9a02cf1030f80aa1d9631869350c4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+220fc3aa77debc8428982e5109301abd56d74d21964bc9490b2fb6bab64dfba3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+273b5bcfe293d286ace960fb9200cbcd5ce9d05ccae34e9acc57b54f8b7043fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+94424ec80b9ad5ae3fe3e1d4a3a82bb84ecb6c1c94265f54c66b930ef9b2654b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+c0458897a9280de5aa0c8369d96b7f34e4444617e6df28558a8130bbc4d3d2b3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+6f7ae16629aa9baf035525a20b6fa9399bb54f77faeb9f710192c8ba90a2e700 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+f8d5f4717445f4a3845e14c5e03abd556b39868bb64ec2be021c4f02303d5e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.1…
+ea76015a4ede5b9fbb774821a9edd7634a480a79f38eb12a9db4efb0bec7e125 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/73.0.1…
+02f2fc043ab9c5de724b287f8b4cc7f8f9e86aafeeac6b9453213e16daa2b944 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+344100bc9c23ca1131c7059d61b538e2ec3bff6942812479b41afb0f1684d5db | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/73.…
+19d5346f601edef76e0cc48d21af9c98cb9f0113b5dceb22ea5022f990d2a7df | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+4552b9e2b9497b633328f50ead3c6088558c325375f3d9f48388d8861e33bac1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+5052aa3ed2387555780c5f630333fcb3330c480b8e513a6a482e3ca2581dc391 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+6caa9700393740d16998c74526054bae6d4c10d9e523b5995ebbe00808991abd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webauthn/73…
+eee3fef8cc33f30832b4b56a63acbd735c2bbe97e9bb8d23c726b54a46780d41 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+cd975f44f979b312e033c405597c15d892e98dad35231dc86f4e9c4c5b46339e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+72b001ca36b87111f1f261eea32eacf31f5abc0dcbd85e5d63f5beed8d938498 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+6f8b6cc756958c662079b08239f9be57686e47e85fc77c759ef1ea6c84cf6e8d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+0d15afad4213c1ea74f1bf17cb86f7930cf67c7e5e645e961683925c6677657b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+3f8f942926d587b687a0823a972049c08ea6ac95c473d297d8034d5a012877cb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+e1e215beeec864765cf6356f2666d9645b06f7199c93ee60ebadc43c630dad2c | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.11/l…
+044fb381f944ed21a28dcbca1e3b77a23df958f3fe71003ddb1b5cf29d2f156e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/73.0.11/l…
+61046fb590a4e7da135a34c3acd7e860e51c937c313ec00d156d40503df49d51 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+35dbced9180a3a954c1cf2f279d2654e2fd82553b65499123970f8fbb8a6025a | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/73.…
+e6ff5bdb4f8372ec9acf9d89646cf4169a2af8566892c19eec98c93eaa9e96b5 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+7eccdac67894ca32bf0e3e7633d7d6e3d2d9865c6bc96cfdfe5d39422534bf0a | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+a469c7e07ce0b8fa976507f534b3f942b488d819f0a1a254a0b22b66386fe6d8 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+61b345e9ddb0a6a019d26350efd82eaa7702e6915b25447e320c544cb8b2b73f | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+f5a4aed033dac1896c856437183ad1b86bc1e9b05f9097e5c2bfc669ecbb446d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.11/l…
+b51f6e8565f0db9475e4b83a80b6aec67fb2177d35e811c63a99f9b275234fb7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/73.0.11/l…
+6a3c45629bf4e13ed742c95f22bb00a6a9235670b5ef97d3fad5147047febc05 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+784f0dbfbca1eaa5cc29860d27e7a73cf6ed60e8a3b3a3d1ef7742db54340ac7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+be6262c3e8e4086866b5ef1b6c3efc89bc280b707f66a651fcb9549a17e32d51 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+a558c4bc83db26b3a7aae78af87a00d61462ee40ff16f38ed6964727f64b1e02 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+08ffd378637b8a10855d45740823d4a9c273699177049034ac63b8950c1eec28 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+01d10233b6c4e63f749c6274188a838be3052f2c6c7bdd058c4d4afb8bea6ed7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/73.0.…
+bda08923be62dcdd2b2d1ae26dc1503da305b5965bac3e82e4982269042f5e82 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+4b8d60bcf20be643a652e6f8df433c2af505db58688f63cbfba9867d6e0aa310 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/73…
+3efafa346a192967bd72946f063853cbb1e957b7d1a7053517b66fae4e279f9b | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+5ae57a16aa7a006e5812ed190b754851dfe7c1653d729c7ffa49e40a4cbd0506 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/73.0…
+2887a688ca6b257849cc9cc19c573a3568310ad01d53ac3261b91f72892573dc | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+fba69d36c8e982f351f2dc291eabcd36a170595b21f47ec69bd0266bac766d84 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+fcff600993baa0b6c2a70639253a14880c350260083d6efee14b0da8c6bcba43 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.1…
+afbe50d98d855e12c299a57b4b3373830b154ecb5d55bb52080491e2ba3570d4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/73.0.1…
+40994cad75fc76f92f9461e0d548e35f1a4d80e56336305d0b3c77bfe92618f5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+9c98c2cf30542a40fdf8380422b8031b275a99b77ccaa664dcc74bd9d686718b | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/73.0…
+3c8d670279ea935eb69293dd99ae0434d4fb4092397f9cd2d754b76f05bc1d70 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.11…
+5977d3c8ffc2c109c1bf55706d8be07d2b95592b3c6ade94099aa5d6ce823065 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/73.0.11…
+489d8af504015a2ed04e3afa77e0e14c0cff604204f2d86ed9f8b793c6faf3a6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+32fc52eacd48b198d6f3f5b5eedaa99898049e831daf8133fee04e8f510e3720 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/73.0…
+04259ad572ec6a115fb8bd47d670ddf9bba5956320aac7153edede90d8b4a79d | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+19d54ecd0a7310e54f7ce66b5a38895111e4bc8b743b6e75ffd84255d303e3bf | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+c9a04732c9a7e37f61284b5e5a917a33db63ad97fc8fc01a2d85abbf65a88a95 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+b4eca2aa3bb909186688ec0bf31db985036d53e689dd6333045c08d96f6680d5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/73…
+e226502a506a8f99bf2e7f3b33c276e2772c98f148ed2f54c700910bb7fd78eb | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+98cbce37db6190ff6f5ba05a193f46ea71ac2adc80351e3449ec337635f44dad | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/73.…
+083bcfb471cbbd1dce87709953051dc36c0873f45b6d5ed60f3c58c5e6ab6730 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+1bc9e7567778d214336b46d380bc837b19cba098ab3bb7fd007afaa5538a6bb8 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+d6e6b960d31f7cdfb1cf95872ce81c3780c7fc5e369efef46f118d6806c2411c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+8e7448323194006e10d2b9df3eb085d7e050275b2c0e3b9595aebdcb19ee91ef | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+86e41f0678aad62b0098d9ee638cdc0c12c063d1bab5c84f7d1e12ba8a6615aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.1…
+2e3e59d1cb2193a83ade99bfed8fdbb5faac015b8ed49f5d6bca5149bc89b42a | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/73.0.1…
+f3cc185bfe40e671225aa6c2555cef4db7382c569da6580488cda053d73a9678 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+3c8c963f9f7f2aa8cc33662a4c16ef574d7ee1b7f6873e84c765d3ffc1a977f2 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/73.0.…
+d19e50c0207f782ecce7b109232cf09529fc46720ce961eadf33b70b52f3680f | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+4e7d3f51ff22ac212b589f96b6f0cff4098c9fd6330d8372a77a35f9151eb83b | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+c8afdb509acb2fc5b94fce3f6f0b996d2df60d6354978eb8b630b86c6d5953bf | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+d5951211b46bc0993e244e0d77569f02d1ffa5b6eabf0be55a3210e915b3b388 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+541835af29d1453905668ad01be21c20eef303de873069d9b8e903981d36a108 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+b69b5a3de291efa39358cbb549dcfc88ad1ab8d81a8dc5b690c922b81127d636 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/73.…
+3e0e38eed080c2b10f56db91c6e0380b4c9730f440da239ee85c7a125d398f2b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.11/u…
+30202e4da39e00ececa949b312dd114510d5cade00f9b39fa7f3941ca045b90b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/73.0.11/u…
+bf092c353816ea029b579a63e3d3db2dfd08706bbabe4ddd67727551a5d5adaf | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.11/ui…
+715d573a7c6cd1fa0eb549173706f07bf176c55d1ad7c44d6c3e2d54bb03e494 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/73.0.11/ui…
+ddcb133192ee30a0c432817beaf9858ad8311e43122f2704badae5667a6cc751 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+252d7b0aeaa61945f4ecae9bfe4e636426af537bfbf0f521cdad9c2a3bf866f4 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/73.0.…
+f590de90365c4d2a7575582f89f6390b90599988e75601881e26d85c0aab48a1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.11/…
+26ca9683f2b56d600329f4fe0cd55543401c26095a14c57d2a355632f365e3f1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/73.0.11/…
+587abedeb0d539781c3a64e1d97f94e4e58598d59a110ec35a5291f5c471f441 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+04a3e6fb38caf74c58fe80b36ba585aba5ba4a22d06e40ffc2d9f7a47015fa99 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/87.0.…
+e019974021cfdc86752984eba6309e7f865e3efe6d4ad40a012be212f4925251 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
+66ad663a2b60d756dadefa2024f664b7befe6fb22535da80aa88b024fe9b64f5 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/87.0.20210…
c9a1855277e7863529fd20a6bdfd09659b472026a98b547b5fa6a19c5ef0d67e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
22cc8c400823e3fc8eda2e644083b137a9fe867333845ea29c57051349afbb3a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
60e34ac4879aa0f8e32fb117669b09ee8946aa34e9372cfe0008995807e876a7 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/geckoview/config b/projects/geckoview/config
index f954ed6..f8c97e5 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- geckoview_version: 87.0b4
+ geckoview_version: 87.0
torbrowser_branch: 10.5
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
deps:
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 02a2905..ac51fa8 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -6,6 +6,12 @@ Tor Browser 10.5a13 -- March 24 2021
* Translations update
* Bug 40030: DuckDuckGo redirect to html doesn't work [torbutton]
* Bug 40032: Remove Snowflake survey banner from TB-alpha [torbutton]
+ * Android
+ * Update Fenix to 87.0.0
+ * Bug 40047: Rebase android-components patches for Fenix 87.0.0 [android-components]
+ * Bug 40153: Rebase Fenix patches to Fenix 87.0.0 [fenix]
+ * Bug 40365: Rebase 10.5 patches on 87.0 [tor-browser]
+ * Bug 40383: Disable dom.enable_event_timing [tor-browser]
* Build System
* Windows + OS X + Linux
* Update Go to 1.15.10
diff --git a/rbm.conf b/rbm.conf
index fc7c95b..d9da670 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -24,11 +24,10 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '10.5a12'
+ torbrowser_version: '10.5a13'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- - 10.5a8
- - 10.5a10
+ - 10.5a11
project_name: tor-browser
multi_lingual: 0
build_mar: 1
1
0

[Git][tpo/applications/fenix][tor-browser-87.0.0-10.5-1] 8 commits: Bug 40002: Add GitLab CI
by Matthew Finkel 24 Mar '21
by Matthew Finkel 24 Mar '21
24 Mar '21
Matthew Finkel pushed to branch tor-browser-87.0.0-10.5-1 at The Tor Project / Applications / fenix
Commits:
5402e941 by Matthew Finkel at 2021-03-24T16:47:54+00:00
Bug 40002: Add GitLab CI
Pin CI builds to runners with 32GB of RAM to avoid OOM conditions.
- - - - -
ed0fb7a7 by Matthew Finkel at 2021-03-24T16:47:54+00:00
Rename as Tor Browser
Bug 40020: Change applicationId
Bug 40020: Change app name
Bug 40020: Change deeplink scheme
Bug 40020: Change App icons
Bug 40073: Use correct branding on About page
Bug 40088: Use Tor Browser logo in migration screen
- - - - -
964a570f by Matthew Finkel at 2021-03-24T16:47:54+00:00
Disable features and functionality
Bug 33594: Disable data collection by default (Glean)
Bug 40019: Adjust is disabled on Release when data collection is disabled
Bug 34338: Disable the crash reporter
Bug 40014: Neuter Google Advertising ID
Bug 40018: Disable Push service
Bug 40034: Disable PWA onboading
Bug 40072: Disable Tracking Protection
Bug 40061: Do not show "Send to device" in sharing menu
Bug 40109: Reduce requested permissions
Exclude LOCATION and NETWORK_STATE
- - - - -
f490af72 by Georg Koppen at 2021-03-24T16:47:54+00:00
Modify build system
Bug 40083: Make locale ordering in BuildConfig deterministic
Bug 40042: Add option do overwrite timestamp in extension version
Bug 40059: Use MOZ_BUILD_DATE for versionCode
At the same time we adapt MOZ_BUILD_DATE to our needs where it is
actually used and not in tor-browser-build. This gives us more
flexibility. See: tor-browser-build#40084.
Bug 40067: Fix reproducibility issue in classes2.dex
We make sure our MOZ_BUILD_DATE gets used as a source for showing date
related information on the Fenix about page.
Bug 40071: Show only supported locales
Bug 40064: Use Gecko Beta for Nightly and Debug variants
Bug 40123: Allow building the instrumented tests apks for variants other than debug
This allows to specify the variant of the instrumented tests via
a `testBuildType` gradle argument. It also applies a workaround for
a R8 issue from https://issuetracker.google.com/issues/140851070.
Bug 40143: Use deterministic date in Test apk
The build config was using Date() when generating the Test apk's
versionName.
- - - - -
6c610724 by Matthew Finkel at 2021-03-24T16:47:54+00:00
Add Tor integration and UI
Bug 40001: Start Tor as part of the Fenix initialization
Bug 40028: Implement Tor Service controller
Bug 40028: Integrate Tor Controller into HomeFragment
Bug 40028: Implement Tor connect and logger screens
Bug 40028: Implement Tor Onboarding
Bug 40028: Implement new home screen
Bug 40028: Define bootstrapping events and Quick Start
Bug 40041: Implement Tor Network Settings
Bug 40041: Integrate Tor Network Settings
- - - - -
c4c3bbbd by Alex Catarineu at 2021-03-24T16:47:54+00:00
Modify UI/UX
Bug 40015: Modify Home menu
Bug 40016: Hide unwanted Settings
Bug 40016: Modify Default toolbar menu
Bug 40016: Add Donate settings button
Bug 40016: Move Allow Screenshots under Advanced
Bug 40016: Don't install WebCompat webext
Bug 40016: Don't onboard Search Suggestions
Bug 40094: Do not use MasterPasswordTipProvider in HomeFragment
Bug 40095: Hide "Sign in to sync" in bookmarks
Bug 40031: Hide Mozilla-specific items on About page
Bug 40032: Set usesCleartextTraffic as false
Bug 40063: Do not sort search engines alphabetically
Bug 34378: Port external helper app prompting
With the corresponding android-components patch, this allows all `startActivity`
that may open external apps to be replaced by `TorUtils.startActivityPrompt`.
Bug 34403: Disable Normal mode by default
Bug 40087: Implement a switch for english locale spoofing
Bug 40144: Hide Download Manager
Bug 40141: Hide EME site permission
- - - - -
a02712fb by Alex Catarineu at 2021-03-24T16:47:54+00:00
Modify Add-on support
Bug 40030: Install HTTPS Everywhere and NoScript addons on startup
HTTPS Everywhere is installed as a builtin extension and NoScript as
a regular AMO addon. To avoid unnecessary I/O we only install NoScript
the first time, and rely on the browser addon updating mechanism for
keeping up with new versions. This is the same behaviour that was
implemented in the Fennec-based Tor Browser, where it was installed
as a "distribution addon", which also only occurred once.
Bug 40062: HTTPS Everywhere is not shown as installed
Also 40070: Consider storing the list of recommended addons
This implements our own AddonsProvider, which loads the list of
available addons from assets instead of fetching it from an
endpoint. In this list, we replace https-everywhere by
our https-everywhere-eff, so that the EFF one is shown as installed
in the addons list and the AMO one is not displayed.
Also, we hide the uninstall button for builtin addons.
Bug 40058: Hide option for disallowing addon in private mode
- - - - -
c8cffa00 by Matthew Finkel at 2021-03-24T16:48:44+00:00
Add Security Level UI
Bug 40026: Implement Security Level settings
Bug 40026: Integrate Security Level settings
- - - - -
30 changed files:
- + .gitlab-ci.yml
- app/build.gradle
- app/proguard-rules.pro
- app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuAboutRobot.kt
- − app/src/beta/res/drawable/ic_launcher_foreground.xml
- app/src/beta/res/mipmap-hdpi/ic_launcher.png
- app/src/beta/res/mipmap-mdpi/ic_launcher.png
- app/src/beta/res/mipmap-xhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
- app/src/beta/res/values/static_strings.xml
- app/src/beta/res/xml/shortcuts.xml
- − app/src/debug/res/drawable/ic_launcher_foreground.xml
- app/src/debug/res/xml/shortcuts.xml
- app/src/main/AndroidManifest.xml
- + app/src/main/assets/allowed_addons.json
- app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- app/src/main/java/org/mozilla/fenix/addons/InstalledAddonDetailsFragment.kt
- app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt
- app/src/main/java/org/mozilla/fenix/components/Analytics.kt
- app/src/main/java/org/mozilla/fenix/components/Components.kt
- app/src/main/java/org/mozilla/fenix/components/Core.kt
- + app/src/main/java/org/mozilla/fenix/components/TorAddonCollectionProvider.kt
- + app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/MetricsUtils.kt
- app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
- app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/9d91b8eeb9d2…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/9d91b8eeb9d2…
You're receiving this email because of your account on gitlab.torproject.org.
1
0